Question:
Issue Type: <bBug</bJSON syntax highlighting fails on the following array (item 1, "response"): { "request": [24], "response": [152, 26, 0, 0, 227, 147, 4, 0, 0, 0, 0, 0, 64, 233, 245, 229, 2, 43, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 233, 245, 229, 2, 43, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 3, 0, 1, 0, 100, 0, 12, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 82, 67, 73, 70, 32, 32, 32, 32, 82, 67, 73, 32, 70, 85, 84, 85, 82, 69, 83, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 0, 221, 41, 12, 1, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 82, 67, 73, 48, 49, 32, 32, 32, 82, 67, 73, 32, 84, 48, 49, 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, 2, 1, 2, 1, 0, 0, 52, 41, 12, 1, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 82, 67, 73, 48, 50, 32, 32, 32, 82, 67, 73, 32, 84, 48, 50, 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, 2, 1, 2, 1, 0, 0, 32, 40, 12, 1, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 82, 67, 73, 48, 51, 32, 32, 32, 82, 67, 73, 32, 84, 48, 51, 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, 2, 1, 2, 1, 0, 0, 69, 32, 12, 1, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 82, 67, 73, 48, 52, 32, 32, 32, 82, 67, 73, 32, 84, 48, 52, 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, 2, 1, 2, 1, 0, 0, 231, 70, 12, 1, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 82, 67, 73, 48, 53, 32, 32, 32, 82, 67, 73, 32, 84, 48, 53, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 1, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 82, 67, 73, 48, 54, 32, 32, 32, 82, 67, 73, 32, 84, 48, 54, 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, 2, 1, 2, 1, 0, 0, 221, 41, 12, 1, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 82, 67, 73, 48, 55, 32, 32, 32, 82, 67, 73, 32, 84, 48, 55, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 83, 70, 85, 50, 32, 32, 32, 32, 83, 84, 79, 67, 75, 32, 70, 85, 84, 85, 82, 69, 83, 44, 32, 68, 69, 67, 61, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 0, 65, 0, 12, 2, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 83, 48, 49, 32, 32, 32, 83, 70, 32, 84, 83, 32, 76, 69, 86, 69, 76, 32, 49, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 69, 70, 51, 70, 32, 32, 32, 32, 51, 45, 89, 32, 69, 88, 67, 72, 65, 78, 71, 69, 32, 70, 85, 78, 68, 32, 78, 79, 84, 69, 83, 32, 70, 85, 84, 85, 82, 69, 83, 32, 1, 1, 1, 2, 1, 0, 0, 28, 12, 3, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 69, 70, 51, 48, 49, 32, 32, 32, 69, 70, 51, 32, 84, 48, 49, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 3, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 69, 70, 51, 48, 50, 32, 32, 32, 69, 70, 51, 32, 84, 48, 50, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 3, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 69, 70, 51, 48, 51, 32, 32, 32, 69, 70, 51, 32, 84, 48, 51, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 67, 79, 77, 70, 32, 32, 32, 32, 67, 79, 77, 32, 70, 85, 84, 85, 82, 69, 83, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 4, 1, 0, 0, 0, 12, 8, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 67, 79, 77, 48, 49, 32, 32, 32, 67, 79, 77, 32, 84, 48, 49, 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, 2, 1, 2, 1, 0, 0, 32, 32, 12, 8, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 67, 79, 77, 48, 50, 32, 32, 32, 67, 79, 77, 32, 84, 48, 50, 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, 2, 1, 2, 1, 0, 0, 174, 70, 12, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 77, 72, 73, 70, 32, 32, 32, 32, 77, 72, 73, 32, 70, 85, 84, 85, 82, 69, 83, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 4, 1, 0, 0, 0, 12, 16, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 77, 72, 73, 67, 32, 32, 32, 32, 77, 72, 73, 32, 67, 65, 76, 76, 32, 79, 80, 84, 73, 79, 78, 83, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 0, 157, 32, 12, 16, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 77, 72, 73, 80, 32, 32, 32, 32, 77, 72, 73, 32, 80, 85, 84, 32, 79, 80, 84, 73, 79, 78, 83, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 0, 0, 0, 12, 16, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 77, 72, 73, 48, 49, 32, 32, 32, 77, 72, 73, 32, 84, 48, 49, 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, 2, 1, 2, 1, 0, 0, 171, 0, 12, 16, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 77, 72, 73, 48, 50, 32, 32, 32, 77, 72, 73, 32, 84, 48, 50, 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, 2, 1, 2, 1, 0, 0, 32, 32, 12, 16, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 77, 72, 73, 48, 51, 32, 32, 32, 77, 72, 73, 32, 84, 48, 51, 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, 2, 1, 2, 1, 0, 0, 32, 32, 12, 16, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 77, 72, 73, 48, 52, 32, 32, 32, 77, 72, 73, 32, 84, 48, 52, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 16, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 77, 72, 73, 48, 53, 32, 32, 32, 77, 72, 73, 32, 84, 48, 53, 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, 2, 1, 2, 1, 0, 0, 32, 32, 12, 16, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 77, 72, 73, 48, 54, 32, 32, 32, 77, 72, 73, 32, 84, 48, 54, 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, 2, 1, 2, 1, 0, 0, 32, 32, 12, 16, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 77, 72, 73, 48, 55, 32, 32, 32, 77, 72, 73, 32, 84, 48, 55, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 16, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 77, 67, 95, 77, 72, 73, 32, 77, 72, 73, 32, 84, 77, 67, 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, 2, 1, 2, 1, 0, 0, 32, 32, 12, 20, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 83, 79, 77, 67, 32, 32, 32, 32, 83, 84, 79, 67, 75, 32, 67, 65, 76, 76, 32, 79, 80, 84, 73, 79, 78, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 2, 32, 32, 12, 20, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 83, 79, 77, 80, 32, 32, 32, 32, 83, 84, 79, 67, 75, 32, 80, 85, 84, 32, 79, 80, 84, 73, 79, 78, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 2, 32, 32, 12, 20, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 83, 79, 77, 49, 32, 32, 32, 32, 83, 79, 77, 32, 83, 89, 78, 84, 72, 69, 84, 73, 67, 32, 70, 85, 84, 85, 82, 69, 83, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 20, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 77, 67, 95, 83, 79, 77, 32, 83, 79, 77, 32, 84, 77, 67, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 73, 66, 70, 32, 32, 32, 32, 72, 73, 66, 79, 82, 32, 70, 85, 84, 85, 82, 69, 83, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 0, 0, 0, 12, 24, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 48, 49, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 48, 49, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 48, 50, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 48, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 48, 51, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 48, 51, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 48, 52, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 48, 52, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 48, 53, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 48, 53, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 48, 54, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 48, 54, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 48, 55, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 48, 55, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 48, 56, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 48, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 32, 32, 12, 24, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 48, 57, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 48, 57, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 49, 48, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 49, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 49, 49, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 49, 49, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 49, 50, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 49, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 49, 51, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 49, 51, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 49, 52, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 49, 52, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 49, 53, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 49, 53, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 49, 54, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 179, 71, 12, 24, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 49, 55, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 49, 55, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 49, 56, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 49, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 49, 57, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 49, 57, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 50, 48, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 50, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 71, 7, 12, 24, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 50, 49, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 50, 49, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 24, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 50, 50, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 50, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 23, 71, 12, 24, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 83, 72, 50, 51, 32, 32, 32, 72, 73, 66, 79, 82, 32, 84, 50, 51, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 0, 0, 12, 27, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 68, 74, 73, 70, 32, 32, 32, 32, 68, 74, 73, 32, 70, 85, 84, 85, 82, 69, 83, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 0, 81, 6, 12, 27, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 68, 74, 73, 48, 49, 32, 32, 32, 68, 74, 73, 32, 84, 48, 49, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 27, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 68, 74, 73, 48, 50, 32, 32, 32, 68, 74, 73, 32, 84, 48, 50, 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, 2, 1, 2, 1, 0, 0, 221, 41, 12, 27, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 68, 74, 73, 48, 51, 32, 32, 32, 68, 74, 73, 32, 84, 48, 51, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 27, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 68, 74, 73, 48, 52, 32, 32, 32, 68, 74, 73, 32, 84, 48, 52, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 34, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 83, 73, 70, 32, 32, 32, 32, 72, 83, 73, 32, 70, 85, 84, 85, 82, 69, 83, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 4, 1, 0, 0, 0, 12, 34, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 83, 73, 67, 32, 32, 32, 32, 72, 83, 73, 32, 67, 65, 76, 76, 32, 79, 80, 84, 73, 79, 78, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 2, 0, 0, 12, 34, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 83, 73, 80, 32, 32, 32, 32, 72, 83, 73, 32, 80, 85, 84, 32, 79, 80, 84, 73, 79, 78, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 2, 32, 32, 12, 34, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 73, 83, 84, 68, 32, 32, 32, 32, 73, 78, 68, 69, 88, 32, 83, 84, 82, 65, 68, 68, 76, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 222, 142, 12, 34, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 73, 83, 84, 71, 32, 32, 32, 32, 73, 78, 68, 69, 88, 32, 83, 84, 82, 65, 78, 71, 76, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 2, 1, 2, 1, 0, 0, 32, 32, 12, 34, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 83, 73, 48, 49, 32, 32, 32, 72, 83, 73, 32, 84, 48, 49, 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, 2, 1, 2, 1, 0, 0, 83, 80, 12, 34, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 83, 73, 48, 50, 32, 32, 32, 72, 83, 73, 32, 84, 48, 50, 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, 2, 1, 2, 1, 0, 0, 32, 32, 12, 34, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 83, 73, 48, 51, 32, 32, 32, 72, 83, 73, 32, 84, 48, 51, 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, 2, 1, 2, 1, 0, 0, 0, 84, 12, 34, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 83, 73, 48, 52, 32, 32, 32, 72, 83, 73, 32, 84, 48, 52, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 34, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 83, 73, 48, 53, 32, 32, 32, 72, 83, 73, 32, 84, 48, 53, 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, 2, 1, 2, 1, 0, 0, 179, 71, 12, 34, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 83, 73, 48, 54, 32, 32, 32, 72, 83, 73, 32, 84, 48, 54, 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, 2, 1, 2, 1, 0, 0, 32, 32, 12, 34, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 83, 73, 48, 55, 32, 32, 32, 72, 83, 73, 32, 84, 48, 55, 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, 2, 1, 2, 1, 0, 0, 49, 32, 12, 34, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 77, 67, 95, 72, 83, 73, 32, 72, 83, 73, 32, 84, 77, 67, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 35, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 88, 72, 83, 67, 32, 32, 32, 32, 88, 72, 83, 32, 67, 65, 76, 76, 32, 79, 80, 84, 73, 79, 78, 83, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 0, 0, 0, 12, 35, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 88, 72, 83, 80, 32, 32, 32, 32, 88, 72, 83, 32, 80, 85, 84, 32, 79, 80, 84, 73, 79, 78, 83, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 0, 0, 0, 12, 37, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 72, 72, 83, 32, 32, 32, 32, 88, 72, 72, 32, 83, 80, 79, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 2, 2, 2, 0, 0, 0, 0, 12, 37, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 88, 72, 72, 67, 32, 32, 32, 32, 88, 72, 72, 32, 67, 65, 76, 76, 32, 79, 80, 84, 73, 79, 78, 83, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 0, 0, 0, 12, 37, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 88, 72, 72, 80, 32, 32, 32, 32, 88, 72, 72, 32, 80, 85, 84, 32, 79, 80, 84, 73, 79, 78, 83, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 0, 0, 0, 12, 38, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 72, 73, 70, 32, 32, 32, 32, 72, 72, 73, 32, 70, 85, 84, 85, 82, 69, 83, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 4, 1, 0, 0, 0, 12, 38, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 72, 73, 67, 32, 32, 32, 32, 72, 72, 73, 32, 67, 65, 76, 76, 32, 79, 80, 84, 73, 79, 78, 83, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 2, 0, 0, 12, 38, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 72, 73, 80, 32, 32, 32, 32, 72, 72, 73, 32, 80, 85, 84, 32, 79, 80, 84, 73, 79, 78, 83, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 2, 82, 82, 12, 38, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 72, 73, 48, 49, 32, 32, 32, 72, 72, 73, 32, 84, 48, 49, 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, 2, 1, 2, 1, 0, 0, 69, 69, 12, 38, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 72, 73, 48, 50, 32, 32, 32, 72, 72, 73, 32, 84, 48, 50, 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, 2, 1, 2, 1, 0, 0, 32, 32, 12, 38, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 72, 73, 48, 51, 32, 32, 32, 72, 72, 73, 32, 84, 48, 51, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 38, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 72, 73, 48, 52, 32, 32, 32, 72, 72, 73, 32, 84, 48, 52, 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, 2, 1, 2, 1, 0, 0, 32, 32, 12, 38, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 72, 73, 48, 53, 32, 32, 32, 72, 72, 73, 32, 84, 48, 53, 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, 2, 1, 2, 1, 0, 0, 78, 73, 12, 38, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 72, 73, 48, 54, 32, 32, 32, 72, 72, 73, 32, 84, 48, 54, 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, 2, 1, 2, 1, 0, 0, 32, 32, 12, 38, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 72, 72, 73, 48, 55, 32, 32, 32, 72, 72, 73, 32, 84, 48, 55, 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, 2, 1, 2, 1, 0, 0, 32, 78, 12, 38, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 84, 77, 67, 95, 72, 72, 73, 32, 72, 72, 73, 32, 84, 77, 67, 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, 2, 1, 2, 1, 0, 0, 32, 32, 12, 51, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 86, 79, 76, 70, 32, 32, 32, 32, 86, 79, 76, 32, 70, 85, 84, 85, 82, 69, 83, 46, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 0, 32, 32, 12, 51, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 86, 79, 76, 48, 49, 32, 32, 32, 86, 79, 76, 32, 84, 48, 49, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 51, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 86, 79, 76, 48, 50, 32, 32, 32, 86, 79, 76, 32, 84, 48, 50, 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, 2, 1, 2, 1, 0, 0, 175, 70, 12, 60, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 70, 88, 67, 70, 32, 32, 32, 32, 70, 88, 67, 32, 70, 85, 84, 85, 82, 69, 83, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 1, 1, 1, 2, 1, 0, 0, 0, 12, 60, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 70, 88, 67, 48, 49, 32, 32, 32, 70, 88, 67, 32, 84, 48, 49, 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, 2, 1, 2, 1, 0, 0, 71, 6, 12, 60, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 70, 88, 67, 48, 50, 32, 32, 32, 70, 88, 67, 32, 84, 48, 50, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 60, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 70, 88, 67, 48, 51, 32, 32, 32, 70, 88, 67, 32, 84, 48, 51, 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, 2, 1, 2, 1, 0, 0, 221, 41, 12, 60, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 70, 88, 67, 48, 52, 32, 32, 32, 70, 88, 67, 32, 84, 48, 52, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 60, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 70, 88, 67, 48, 53, 32, 32, 32, 70, 88, 67, 32, 84, 48, 53, 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, 2, 1, 2, 1, 0, 0, 0, 0, 12, 60, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 70, 88, 67, 48, 54, 32, 32, 32, 70, 88, 67, 32, 84, 48, 54, 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, 2, 1, 2, 1, 0, 0, 0, 0] } VS Code version: Code 1.23.1 (, 2018-05-10T16:04:33.747Z) OS version: Linux x64 3.13.0-40-generic <details<summarySystem Info</summary </details<details<summaryExtensions (16)</summaryExtensionVersion ------ vscode-markdownlint0.18.0 xml2.2.0 vscode-docker0.0.27 gitignore0.5.0 githistory0.4.1 python2018.4.0 cpptools0.17.4 title0.1.0 vscode-icons7.23.0 bash-debug0.2.0 annotator0.11.0 code-spell-checker1.6.10 mako0.2.0 cmake0.0.17 gitblame2.4.2 vscode-todo-highlight0.5.12 (1 theme extensions excluded) </details<!-- generated by issue reporter --
For performance reasons, we skip tokenization for lines that are longer than 20k. It would be good if the user can see a message when that happens.
I would like to take this one if you guys think this is a but I would need some guidance. I already this: but I'm getting this error , so, I'm not sure how to import correctly into this file in order to use the method. cc:
This code runs on the renderer side, while is only for the extension host process. We have to wait for to add his thoughts. There's something similar when we open very large file. Check out the for that.
is API available only to vscode extensions and should not be used in the UI code. The UI code should use and inject itself with it. A possible fix would be to prompt (as suggested above), but prompt only once. It would be very annoying to prompt 20 times if there are 20 lines over 20.000 chars.
PR tackles this.
To verify, open a file with a very large line. A message should be shown, explaining why the large line is not tokenized.
I tried on the production app (May 2018 (version 1.24)) and I didn't get the notification, I guess it hasn't been deployed there yet, right? Where should I verify?
We would want that someone else than the author of the change would verify that the issue is fixed. So, there's nothing for you to do here, since you are the author. Someone from the vscode team will pick up this issue and verify it. (The change will make it to the stable channel in the following couple of weeks. For now it is available in the insiders channel at )
Verified !
How about using field for this kind of information? Lines that long only occure on minified files or base64 data images which doesn't actually need any syntax highlighting so this notification is completely useless in my opinion. How to get rid of it?

// Do not attempt to tokenize if a line has over 20k if (line.length >= 20000) { <ins> if (!this._tokenizationWarningAlreadyShown) { this._tokenizationWarningAlreadyShown = true; this.notificationService.warn(nls.localize('too many characters', "Tokenization is skipped for lines longer than 20k characters for performance reasons.")); } </ins> console.log(`Line (${line.substr(0, 15)}...): longer than 20k characters, tokenization skipped.`); return nullTokenize2(this._languageId, line, state, offsetDelta); }


Question:
Learnings from NVAccess testing: I'm not sure how to get to the "details". Steps: Visual studio code editor. "Ctrl+Shift+X" key navigate to the extension side view bar option. Tab key navigate to the "More" option and select different options( "Show installed Extension, Show outdated extension, Show popular Extension,Etc") an extension and using "Tab" and "Arrow" keys navigate through the extension details window on the RHS
What do you think of a "Read more" button for each item? It will get a little noisy. Any other ideas?
Or just update the aria label on the extension item with "Click to read more" ? Because hitting Enter when the list item has focus, does open the details
definitely prefer making changes on the code side. The label should probably read like “View extension details” so it’s a little more explicit.

'use strict'; <ins> import { localize } from 'vs/nls'; </ins> import { append, $, addClass, removeClass, toggleClass } from 'vs/base/browser/dom'; import { IDisposable, dispose } from 'vs/base/common/lifecycle'; import { Action } from 'vs/base/common/actions';


Question:
Learnings from NVAccess testing: I'm not sure how to get to the "details". Steps: Visual studio code editor. "Ctrl+Shift+X" key navigate to the extension side view bar option. Tab key navigate to the "More" option and select different options( "Show installed Extension, Show outdated extension, Show popular Extension,Etc") an extension and using "Tab" and "Arrow" keys navigate through the extension details window on the RHS
What do you think of a "Read more" button for each item? It will get a little noisy. Any other ideas?
Or just update the aria label on the extension item with "Click to read more" ? Because hitting Enter when the list item has focus, does open the details
definitely prefer making changes on the code side. The label should probably read like “View extension details” so it’s a little more explicit.

private updateRecommendationStatus(extension: IExtension, data: ITemplateData) { const extRecommendations = this.extensionTipsService.getAllRecommendationsWithReason(); <ins> let ariaLabel = extension.displayName + '. '; </ins> if (!extRecommendations[extension.id.toLowerCase()]) { <del> data.root.setAttribute('aria-label', extension.displayName); data.root.title = ''; </del> removeClass(data.root, 'recommended'); <ins> data.root.title = ''; </ins> } else { <del> data.root.setAttribute('aria-label', extension.displayName + '. ' + extRecommendations[extension.id]); data.root.title = extRecommendations[extension.id.toLowerCase()].reasonText; </del> addClass(data.root, 'recommended'); <ins> ariaLabel += extRecommendations[extension.id.toLowerCase()].reasonText + ' '; data.root.title = extRecommendations[extension.id.toLowerCase()].reasonText; </ins> } <ins> ariaLabel += localize('viewExtensionDetailsAria', "Press enter for extension details."); data.root.setAttribute('aria-label', ariaLabel); </ins> } disposeTemplate(data: ITemplateData): void {


Question:
This feature request is about accessibility. This is only for removing 1 or 2 Breakpoints from a list of, say 30 breakpoints across multiple files in the Breakpoints List. Right now, there is no Close Button in the Breakpoints List when debugging a program in Visual Studio Code. The only way to remove 1 or 2 breakpoints right now is to: on the Breakpoint from the Breakpoints List. the red dot on the line highlighted by VS Code. the Breakpoint is now removed from the Breakpoints List. I would like to request that we can simplify this process by using the middle scroll wheel click on the mouse, so when you click on one of the Breakpoints with the scroll wheel button, it does all of the 3 steps mentioned above. And, it can act as a Remove Single Breakpoint mouse click action. Just like the middle scroll wheel click on tabs to close 1 tab out of many other tabs.
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.647 --- <!-- score: 0.595 --- <!-- score: 0.583 --- <!-- score: 0.563 --- <!-- score: 0.555 --<!-- potentialduplicatescomment --
you can already use "delete" or "cmd + backspace" on the mac to remove the breakpoint. That way you can easily remove multiple. I do not understand what this has to do with accessibility since all these actions are already accessible. A middle click to remove a breakpoint would be consistent with our middle click to remove a tab. Thus I accept prs that fix this Code pointer Simply add a listener in the list for the mouse click, check if it is the middle one and if yes remove the breakpoint. If nobody volunteres I can look into this in the future
I am not aware of using "delete" keypress to remove the breakpoint. How is this triggered? If I press "delete", it would remove a character in my source code.
focus on the breakpoints view in the debug viewlet F1 Debug: focus breakpoints
Wouldn't it be more user-friendly just to add a close button for breakpoint list item? For example: !
It's more about middle scroll wheel click to remove breakpoints, and I think what you pointed out may be a separate issue.
release notes?

this.disposables.push(this.list.onOpen(e => { let isSingleClick = false; let isDoubleClick = false; <ins> let isMiddleClick = false; </ins> let openToSide = false; const browserEvent = e.browserEvent; if (browserEvent instanceof MouseEvent) { isSingleClick = browserEvent.detail === 1; isDoubleClick = browserEvent.detail === 2; <ins> isMiddleClick = browserEvent.button === 1; </ins> openToSide = (browserEvent.ctrlKey || browserEvent.metaKey || browserEvent.altKey); } const focused = this.list.getFocusedElements(); const element = focused.length ? focused[0] : undefined; <ins> if (isMiddleClick) { if (element instanceof Breakpoint) { this.debugService.removeBreakpoints(element.getId()); } else if (element instanceof FunctionBreakpoint) { this.debugService.removeFunctionBreakpoints(element.getId()); } return; } </ins> if (element instanceof Breakpoint) { openBreakpointSource(element, openToSide, isSingleClick, this.debugService, this.editorService).done(undefined, onUnexpectedError); }


Question: Issue Type: <bBug</bThe cursor after pasting, I'd expect it to be at the end of the pasted text: ! VS Code version: Code - Insiders 1.26.0-insider (, 2018-08-02T05:12:16.245Z) OS version: Darwin x64 17.7.0 <details<summarySystem Info</summary </details<details<summaryExtensions (4)</summaryExtensionVersion ------ 999-pack10.12.6 ssh0.0.4 github-issues-prs0.9.0 vscode-open-in-github1.7.0 </details<!-- generated by issue reporter --

this.searchBox.setModel(this.modelService.createModel('', null, uri.parse('extensions:searchinput'), true)); this.disposables.push(this.searchBox.onDidPaste(() => { <del> this.searchBox.setValue(this.searchBox.getValue().replace(/s+/g, ' ')); </del> <ins> let trimmed = this.searchBox.getValue().replace(/s+/g, ' '); this.searchBox.setValue(trimmed); </ins> this.searchBox.setScrollTop(0); <ins> this.searchBox.setPosition(new Position(1, trimmed.length + 1)); </ins> })); this.disposables.push(this.searchBox.onDidFocusEditorText(() => addClass(this.monacoStyleContainer, 'synthetic-focus'))); this.disposables.push(this.searchBox.onDidBlurEditorText(() => removeClass(this.monacoStyleContainer, 'synthetic-focus')));


Question:
I would like to make a pull request that changes the markdown snippet for links to use HTTPS instead of HTTP. Microsoft seems to encourage HTTPS by default in the latest .NET Core & browsers are also encouraging it. To me HTTPS sites seem to be the default for most websites these days.
Sure, please open a pr. I didn't even know we had a snippet for links :)
Fixed by

}, "Insert link": { "prefix": "link", <del> "body": "[${1:text}](http://${2:link})$0", </del> <ins> "body": "[${1:text}](https://${2:link})$0", </ins> "description": "Insert link" }, "Insert image": { "prefix": "image", <del> "body": "![${1:alt}](http://${2:link})$0", </del> <ins> "body": "![${1:alt}](https://${2:link})$0", </ins> "description": "Insert image" } }


Question:
Issue Type: <bBug</bI use oh-my-zsh and set integrated terminal /bin/zsh cmd+, to show settings tab terminal(ctrl+shift+`) settings terminal integrated: Font size option. say we have default value 12. . now value is 1 and terminal gets so small 1 so now value is 11. and terminal is gone. expected to see current terminal cursor. i type lots of enters or ctrl+c, then I can see my terminal again. i saw my terminal again, it looks like change font size 11 -1 -12 doesn't make terminal to disappear. VS Code version: Code 1.27.1 (, 2018-09-06T09:14:32.385Z) OS version: Darwin x64 17.7.0 <details<summarySystem Info</summary </details<details<summaryExtensions (7)</summaryExtensionVersion ------ gitlens8.5.6 code-runner0.9.4 beautify1.4.2 Go0.6.89 vetur0.12.6 vscode-docker0.2.0 java0.30.0 </details<!-- generated by issue reporter --
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.481 --- <!-- score: 0.459 --<!-- potentialduplicatescomment --
also vertical scroll of terminal get somewhat screwed even after I see my terminal again by typing enter or ctrl+c
this seems to be related to the usage of from xterm: a similar problem with an explanation of a solution can be found here: In short, after the fontSize changes, the terminal renders before the xterm field is updated, so the render uses previous values (corresponding to the previous font size values) Related: ,
can some settings only commit the change on blur?
If is an invalid font size for that setting, can the terminal ignore it or set a minimum in the setting schema?
after thinking about this some more I think this is totally on my end as something weird happens when changing the setting frequently. There is already a minimum value which is why VS Code doesn't crash

this.addDisposable(this._configurationService.onDidChangeConfiguration(e => { if (e.affectsConfiguration('terminal.integrated')) { this.updateConfig(); <ins> // HACK: Trigger another async layout to ensure xterm's CharMeasure is ready to use, // this hack can be removed when https://github.com/xtermjs/xterm.js/issues/702 is // supported. this.setVisible(this._isVisible); </ins> } if (e.affectsConfiguration('editor.accessibilitySupport')) { this.updateAccessibilitySupport();


Question: Repro: Add keybinding: Find a quick fix, and hit alt+enter quickly. The first action is triggered. I was seeing this here (notice Promise not TPromise): !

VERTICAL_REVERSE, } <ins> export interface ActionTrigger { keys: KeyCode[]; keyDown: boolean; } </ins> export interface IActionItemProvider { (action: IAction): IActionItem; }


Question: Repro: Add keybinding: Find a quick fix, and hit alt+enter quickly. The first action is triggered. I was seeing this here (notice Promise not TPromise): !

actionRunner?: IActionRunner; ariaLabel?: string; animated?: boolean; <ins> triggerKeys?: ActionTrigger; </ins> } let defaultOptions: IActionBarOptions = { orientation: ActionsOrientation.HORIZONTAL, <del> context: null </del> <ins> context: null, triggerKeys: { keys: [KeyCode.Enter, KeyCode.Space], keyDown: false } </ins> }; export interface IActionOptions extends IActionItemOptions {


Question: Repro: Add keybinding: Find a quick fix, and hit alt+enter quickly. The first action is triggered. I was seeing this here (notice Promise not TPromise): !

this.focusNext(); } else if (event.equals(KeyCode.Escape)) { this.cancel(); <del> } else if (event.equals(KeyCode.Enter) || event.equals(KeyCode.Space)) { // Nothing, just staying out of the else branch </del> <ins> } else if (this.isTriggerKeyEvent(event)) { // Staying out of the else branch even if not triggered if (this.options.triggerKeys && this.options.triggerKeys.keyDown) { this.doTrigger(event); } </ins> } else { eventHandled = false; }


Question: Repro: Add keybinding: Find a quick fix, and hit alt+enter quickly. The first action is triggered. I was seeing this here (notice Promise not TPromise): !

let event = new StandardKeyboardEvent(e as KeyboardEvent); // Run action on Enter/Space <del> if (event.equals(KeyCode.Enter) || event.equals(KeyCode.Space)) { this.doTrigger(event); </del> <ins> if (this.isTriggerKeyEvent(event)) { if (!this.options.triggerKeys.keyDown) { this.doTrigger(event); } </ins> event.preventDefault(); event.stopPropagation(); }


Question: Repro: Add keybinding: Find a quick fix, and hit alt+enter quickly. The first action is triggered. I was seeing this here (notice Promise not TPromise): !

} } <ins> private isTriggerKeyEvent(event: StandardKeyboardEvent): boolean { let ret = false; if (this.options.triggerKeys) { this.options.triggerKeys.keys.forEach(keyCode => { ret = ret || event.equals(keyCode); }); } return ret; } </ins> private updateFocusedItem(): void { for (let i = 0; i < this.actionsList.children.length; i++) { let elem = this.actionsList.children[i];


Question: Repro: Add keybinding: Find a quick fix, and hit alt+enter quickly. The first action is triggered. I was seeing this here (notice Promise not TPromise): !

actionItemProvider: action => this.doGetActionItem(action, options, parentData), context: options.context, actionRunner: options.actionRunner, <del> ariaLabel: options.ariaLabel </del> <ins> ariaLabel: options.ariaLabel, triggerKeys: { keys: [KeyCode.Enter], keyDown: true } </ins> }); this.actionsList.setAttribute('role', 'menu');


Question:
Env: In Insider version, the API doesn't respect the option. The same code works in the normal vscode 1.28.2.
The code here converts the filters from the extension API into the electron API, but the function is supplied with the electron API format so this is not necessary and is causing the break.
I think this is something that we should ship with 1.29
We believe this is a regression, adding candidate label

if (defaultUri && defaultUri.scheme !== Schemas.file) { return Promise.reject(new Error('Not supported - Open-dialogs can only be opened on `file`-uris.')); } <del> const filters = []; if (options.filters) { for (let name in options.filters) { filters.push({ name, extensions: options.filters[name] }); } } </del> const newOptions: OpenDialogOptions = { title: options.title, defaultPath: defaultUri && defaultUri.fsPath, buttonLabel: options.openLabel, <del> filters, </del> <ins> filters: options.filters, </ins> properties: [] }; newOptions.properties.push('createDirectory');


Question:
<!-- Please search existing issues to avoid creating duplicates. --<!-- Also please test using the latest insiders build to make sure your issue has not already been fixed: --<!-- Use Help Report Issue to prefill these. --- VSCode Version: 1.28.2 OS Version: Microsoft Windows 10 Pro, 10.0. Build Steps to Reproduce (2 problems): a source code file over an IPv6 URL and notice the faulty incomplete underline: ! Click the link: the default browser opens without accessing the URL <!-- Launch with to check. --Does this issue occur when all extensions are disabled? Yes
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.463 --<!-- potentialduplicatescomment --

resetStateMachine = true; } } else if (state === State.End) { <del> const chClass = classifier.get(chCode); </del> <ins> let chClass: CharacterClass; if (chCode === CharCode.OpenSquareBracket) { // Allow for the authority part to contain ipv6 addresses which contain [ and ] hasOpenSquareBracket = true; chClass = CharacterClass.None; } else { chClass = classifier.get(chCode); } </ins> // Check if character terminates link if (chClass === CharacterClass.ForceTermination) {


Question:
<!-- Please search existing issues to avoid creating duplicates. --<!-- Also please test using the latest insiders build to make sure your issue has not already been fixed: --<!-- Use Help Report Issue to prefill these. --- VSCode Version: 1.28.2 OS Version: Microsoft Windows 10 Pro, 10.0. Build Steps to Reproduce (2 problems): a source code file over an IPv6 URL and notice the faulty incomplete underline: ! Click the link: the default browser opens without accessing the URL <!-- Launch with to check. --Does this issue occur when all extensions are disabled? Yes
(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like: <!-- score: 0.463 --<!-- potentialduplicatescomment --

'                                                                                https://msdn.microsoft.com/en-us/library/windows/desktop/ms687414(v=vs.85).aspx                                  ' ); }); <ins> test('issue #62278: "Ctrl + click to follow link" for IPv6 URLs', () => { assertLink( 'let x = "http://[::1]:5000/connect/token"', '         http://[::1]:5000/connect/token  ' ); }); </ins> });


Question:
macOS run in fullscreen mode open the process explorer the prices explorer window also opens in fullscreen mode...
Hi Gonna take a look at this. It seems to be happening for 'Report issue' also.
Hi Can I help you somehow to get this merged?
Yep! Sorry for the delay, your change looks good. I'll merge it now. Thanks!

const position = this.getWindowPosition(this._issueParentWindow, 700, 800); this._issueWindow = new BrowserWindow({ <ins> fullscreen: false, </ins> width: position.width, height: position.height, minWidth: 300,


Question:
macOS run in fullscreen mode open the process explorer the prices explorer window also opens in fullscreen mode...
Hi Gonna take a look at this. It seems to be happening for 'Report issue' also.
Hi Can I help you somehow to get this merged?
Yep! Sorry for the delay, your change looks good. I'll merge it now. Thanks!

this._processExplorerWindow = new BrowserWindow({ skipTaskbar: true, resizable: true, <ins> fullscreen: false, </ins> width: position.width, height: position.height, minWidth: 300,


Question:
Set color customizations for the peek widget: 29: ! 30: ! Candidate or 1.30.1 maybe?
Grrr, another regression... I am for putting this into 1.30.1
I have pushed a fix to master and I have created we think having for for is good enough, otherwise the PR can be merged for

} const resultsSelectedBackground = theme.getColor(peekViewResultsSelectionBackground); if (resultsSelectedBackground) { <del> collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .monaco-tree.focused .monaco-tree-rows > .monaco-tree-row.selected:not(.highlighted) { background-color: ${resultsSelectedBackground}; }`); </del> <ins> collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows > .monaco-list-row.selected:not(.highlighted) { background-color: ${resultsSelectedBackground}; }`); </ins> } const resultsSelectedForeground = theme.getColor(peekViewResultsSelectionForeground); if (resultsSelectedForeground) { <del> collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .monaco-tree.focused .monaco-tree-rows > .monaco-tree-row.selected:not(.highlighted) { color: ${resultsSelectedForeground} !important; }`); </del> <ins> collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows > .monaco-list-row.selected:not(.highlighted) { color: ${resultsSelectedForeground} !important; }`); </ins> } const editorBackground = theme.getColor(peekViewEditorBackground); if (editorBackground) {


Question:
While creating a user snippet, the rule must be like this: If I want to show a lot of description, I must write a huge string which includes many escape characters like this: It maybe a good idea that option receive a list value, like the :
The Version infomations: Code Version: 1.30.1 (user setup) Commit: Date: 2018-12-18T18:12:07.165Z Electron: 2.0.12 Chrome: 61.0.3163.100 8.9.3 V8: 6.1.534.41 OS: Windows_NT x64 10.0.
Can you guide me on resolving this issue?
sure, checkout , and

}, description: { description: nls.localize('snippetSchema.json.description', 'The snippet description.'), <del> type: 'string' </del> <ins> type: ['string', 'array'] </ins> } }, additionalProperties: false


Question:
While creating a user snippet, the rule must be like this: If I want to show a lot of description, I must write a huge string which includes many escape characters like this: It maybe a good idea that option receive a list value, like the :
The Version infomations: Code Version: 1.30.1 (user setup) Commit: Date: 2018-12-18T18:12:07.165Z Electron: 2.0.12 Chrome: 61.0.3163.100 8.9.3 V8: 6.1.534.41 OS: Windows_NT x64 10.0.
Can you guide me on resolving this issue?
sure, checkout , and

body = body.join('n'); } <ins> if (Array.isArray(description)) { description = description.join('n'); } </ins> if ((typeof prefix !== 'string' && !Array.isArray(prefix)) || typeof body !== 'string') { return; }


Question:
Ability to update built in extensions
This is a pre-request to enable built-in extension to on-board to
Disabled updating builtin extensions in stable

return; } <del> if (this.extension.type !== ExtensionType.User) { this.enabled = false; this.class = UpdateAction.DisabledClass; this.label = this.getLabel(); return; } </del> const canInstall = await this.extensionsWorkbenchService.canInstall(this.extension); const isInstalled = this.extension.state === ExtensionState.Installed;


Question:
Ability to update built in extensions
This is a pre-request to enable built-in extension to on-board to
Disabled updating builtin extensions in stable

import { IExtensionManifestPropertiesService } from 'vs/workbench/services/extensions/common/extensionManifestPropertiesService'; import { IExtensionService, IExtensionsStatus } from 'vs/workbench/services/extensions/common/extensions'; import { ExtensionEditor } from 'vs/workbench/contrib/extensions/browser/extensionEditor'; <ins> import { isWeb } from 'vs/base/common/platform'; </ins> interface IExtensionStateProvider<T> { (extension: Extension): T;


Question:
Ability to update built in extensions
This is a pre-request to enable built-in extension to on-board to
Disabled updating builtin extensions in stable

if (!this.gallery || !this.local) { return false; } <del> if (this.type !== ExtensionType.User) { return false; } </del> if (!this.local.preRelease && this.gallery.properties.isPreReleaseVersion) { return false; }


Question:
Ability to update built in extensions
This is a pre-request to enable built-in extension to on-board to
Disabled updating builtin extensions in stable

this.queryLocal().then(() => { this.resetIgnoreAutoUpdateExtensions(); this.eventuallyCheckForUpdates(true); <del> // Always auto update builtin extensions if (!this.isAutoUpdateEnabled()) { </del> <ins> // Always auto update builtin extensions in web if (isWeb && !this.isAutoUpdateEnabled()) { </ins> this.autoUpdateBuiltinExtensions(); } });


Question:
Ability to update built in extensions
This is a pre-request to enable built-in extension to on-board to
Disabled updating builtin extensions in stable

} const infos: IExtensionInfo[] = []; for (const installed of this.local) { <del> if (installed.type === ExtensionType.User && (!onlyBuiltin || installed.isBuiltin)) { </del> <ins> if (!onlyBuiltin || installed.isBuiltin) { </ins> infos.push({ ...installed.identifier, preRelease: !!installed.local?.preRelease }); } }


Question:
Ability to update built in extensions
This is a pre-request to enable built-in extension to on-board to
Disabled updating builtin extensions in stable

assert.strictEqual(extension.outdated, true); }); <del> test('extension is not outdated when local is built in and older than gallery', () => { </del> <ins> test('extension is outdated when local is built in and older than gallery', () => { </ins> const extension = instantiationService.createInstance(Extension, () => ExtensionState.Installed, undefined, aLocalExtension('somext', { version: '1.0.0' }, { type: ExtensionType.System }), aGalleryExtension('somext', { version: '1.0.1' })); <del> assert.strictEqual(extension.outdated, false); </del> <ins> assert.strictEqual(extension.outdated, true); </ins> }); test('extension is outdated when local and gallery are on same version but on different target platforms', () => {


Question:
1) use yo code to create an extension 2) Replace the with the code below 4) Press F5 to run the workspace 5) Open a project for a node module that has a nodemodules folder with many modules. 6) Execute the ´Hello World' command --the call workspace.findFiles returns file matches from the folder, but the nodemodules folder is excluded. Running the same extension in stable properly excludes matches in the folder. Tagging as a candiate for February since the change of behavour impacts NPM script running and now proposes scripts from the node_modules. The code for
Would be fixed by .

}); test('findFiles', () => { <del> return vscode.workspace.findFiles('*.png').then((res) => { </del> <ins> return vscode.workspace.findFiles('**/*.png').then((res) => { assert.equal(res.length, 2); assert.equal(basename(vscode.workspace.asRelativePath(res[0])), 'image.png'); }); }); test('findFiles, exclude', () => { return vscode.workspace.findFiles('**/*.png', '**/sub/**').then((res) => { </ins> assert.equal(res.length, 1); assert.equal(basename(vscode.workspace.asRelativePath(res[0])), 'image.png'); });


Question:
1) use yo code to create an extension 2) Replace the with the code below 4) Press F5 to run the workspace 5) Open a project for a node module that has a nodemodules folder with many modules. 6) Execute the ´Hello World' command --the call workspace.findFiles returns file matches from the folder, but the nodemodules folder is excluded. Running the same extension in stable properly excludes matches in the folder. Tagging as a candiate for February since the change of behavour impacts NPM script running and now proposes scripts from the node_modules. The code for
Would be fixed by .

disregardSearchExcludeSettings: true, disregardIgnoreFiles: true, includePattern, <ins> excludePattern: typeof excludePatternOrDisregardExcludes === 'string' ? excludePatternOrDisregardExcludes : undefined, </ins> _reason: 'startFileSearch' });


Question:
1) use yo code to create an extension 2) Replace the with the code below 4) Press F5 to run the workspace 5) Open a project for a node module that has a nodemodules folder with many modules. 6) Execute the ´Hello World' command --the call workspace.findFiles returns file matches from the folder, but the nodemodules folder is excluded. Running the same extension in stable properly excludes matches in the folder. Tagging as a candiate for February since the change of behavour impacts NPM script running and now proposes scripts from the node_modules. The code for
Would be fixed by .

const query = queryBuilder.file(folders, { _reason: 'checkExists', includePattern: includes.join(', '), <ins> expandPatterns: true, </ins> exists: true });


Question:
1) use yo code to create an extension 2) Replace the with the code below 4) Press F5 to run the workspace 5) Open a project for a node module that has a nodemodules folder with many modules. 6) Execute the ´Hello World' command --the call workspace.findFiles returns file matches from the folder, but the nodemodules folder is excluded. Running the same extension in stable properly excludes matches in the folder. Tagging as a candiate for February since the change of behavour impacts NPM script running and now proposes scripts from the node_modules. The code for
Would be fixed by .

if (options.includePattern) { includeSearchPathsInfo = options.expandPatterns ? this.parseSearchPaths(options.includePattern) : <del> { pattern: patternListToIExpression(...splitGlobPattern(options.includePattern)) }; </del> <ins> { pattern: patternListToIExpression(options.includePattern) }; </ins> } let excludeSearchPathsInfo: ISearchPathsInfo = {}; if (options.excludePattern) { excludeSearchPathsInfo = options.expandPatterns ? this.parseSearchPaths(options.excludePattern) : <del> { pattern: patternListToIExpression(...splitGlobPattern(options.excludePattern)) }; </del> <ins> { pattern: patternListToIExpression(options.excludePattern) }; </ins> } // Build folderQueries from searchPaths, if given, otherwise folderResources


Question:
1) use yo code to create an extension 2) Replace the with the code below 4) Press F5 to run the workspace 5) Open a project for a node module that has a nodemodules folder with many modules. 6) Execute the ´Hello World' command --the call workspace.findFiles returns file matches from the folder, but the nodemodules folder is excluded. Running the same extension in stable properly excludes matches in the folder. Tagging as a candiate for February since the change of behavour impacts NPM script running and now proposes scripts from the node_modules. The code for
Would be fixed by .

}); }); <del> test('splits glob pattern even with expandPatterns disabled', () => { </del> <ins> test('does not split glob pattern when expandPatterns disabled', () => { </ins> assertEqualQueries( queryBuilder.file([ROOT_1_URI], { includePattern: '**/foo, **/bar' }), {


Question:
1) use yo code to create an extension 2) Replace the with the code below 4) Press F5 to run the workspace 5) Open a project for a node module that has a nodemodules folder with many modules. 6) Execute the ´Hello World' command --the call workspace.findFiles returns file matches from the folder, but the nodemodules folder is excluded. Running the same extension in stable properly excludes matches in the folder. Tagging as a candiate for February since the change of behavour impacts NPM script running and now proposes scripts from the node_modules. The code for
Would be fixed by .

}], type: QueryType.File, includePattern: { <del> '**/foo': true, '**/bar': true </del> <ins> '**/foo, **/bar': true </ins> } }); });


Question:
Open a folder Create untitled file with some content Quit vscode Open vscode Two windows are opened, one has the folder +untitled file, other is an empty window + untitled file. So the same untitled file is opened in two windows.
I could only repro this with an empty window: Code via finder all files/folders an untitled file, add changes +q Code via finder <img width="490" alt="screen shot 2019-03-07 at 5 42 14 pm" src="https://user-"
Moving this to as the last who touched this code.
for some reason the  array has multiple entries for the same window?
Temporally until update is not yet, for prevent backup window add to settings "window.restoreWindows": "none"
When set , then every close & start VSCode will multiple windows (1 -2, 2 -4, 4 -6, and so on). Fix is needed ASAP.
this change is not in the recovery build yet pending right?
Pushed.
I saw this by downgrading from 1.32.2 to 1.31.1, then upgrading back. But I don't think we care about that.
I can confirm that this issue is fixed in the latest 1.32.2 release! Thanks! But another one what I noticed: VS Code one existing document Optional: Open a new tab or new window with a new tab and type anything and do NOT save this new file VS Code -Open VS Code Now all tabs are correctly restored! VS Code a File from Windows Explorer with right-click and open in VS Code All tabs should re-opened (Tabs/files from Step 2., 3. and 7.) Only the unsaved file from step 3. and the one from the Windows Explorer, step 7. are opened. And the last session (int this example, file from step 1. is lost! Is this wanted or can this be configured?
Confirm fix and also above bug with 1.32.2 and 1.32.3. Could You report this as new issue? Now session is partially broken :-(
thanks. Please see

} // Handle empty to restore <del> if (emptyToRestore.length > 0) { emptyToRestore.forEach(emptyWindowBackupInfo => { </del> <ins> const allEmptyToRestore = arrays.distinct(emptyToRestore, info => info.backupFolder); // prevent duplicates if (allEmptyToRestore.length > 0) { allEmptyToRestore.forEach(emptyWindowBackupInfo => { </ins> const remoteAuthority = emptyWindowBackupInfo.remoteAuthority; const fileInputsForWindow = (fileInputs && fileInputs.remoteAuthority === remoteAuthority) ? fileInputs : undefined;


Question:
Issue Type: <bFeature Request</bHere's what I have tried using as a reference: In the settings page, "command" doesn't show up as a link, just plain text. It would be nice if command links were supported like regular URL links. VS Code version: Code 1.32.3 (, 2019-03-14T22:46:48.547Z) OS version: Darwin x64 18.2.0
I assume you want this in the settings UI.
That's correct. A clickable command link above the field.
Sure, out of curiosity, what sort of command would you use this for?
The property/setting I'm trying to use this for is a directory path containing some directories. And the command is a refresh command that will pick up the latest setting value and do some parsing of the contained directories. I know I could use to detect changes and trigger the command automatically but I want to allow the user to refresh manually.
Are you avoiding because it might trigger while the user is not done typing, or is there a different reason?
Yes, that's the main reason.
I would like to second this. My use case is: My extension involves authenticating with a server, and I have built a web-view for this. This authentication process is too complicated to handle through native VSCode settings (I want to validate the server, there might be 2FA, etc, etc) However, since users have an expectation of seeing their settings in the settings UI, I would like to display the server that the user has authenticated to in the settings UI as a read only property. This requires me to have a description which says "You can modify this value by doing X" And overall, it seems like a better user experience to have that description be "you can modify this by clicking " and having open my webview, rather than: "you can modify this setting by selecting the X command in the command palette"

// Rewrite `#editor.fontSize#` to link format text = fixSettingLinks(text); <del> const renderedMarkdown = renderMarkdown({ value: text }, { </del> <ins> const renderedMarkdown = renderMarkdown({ value: text, isTrusted: true }, { </ins> actionHandler: { callback: (content: string) => { if (startsWith(content, '#')) {


Question:
Maybe you've already thought about this but it would be useful to be able to create a new folder in the simplified file dialog. This could be a button in the title bar or a confirmation step when a folder that doesn't exist was typed. Creating a folder and opening it, and creating a folder and saving a file in it, are common workflows so it would be useful to be able to do those in one step.
For the meantime:
Hey thanks for the mention! This was a feature I personally needed for quite some time - we all basically do those steps mentioned by on a daily basis so I decided to code an extension for it. Even though the extension already works great, I am actually working on it right now and adding a new feature which will allow it to create new folders using the Simple file dialogs - regardless of user setting, see . If anyone's interested, I think I'll manage to finish it by tomorrow.
I've been busy with work and other projects but after a long wait, I worked really hard and managed to finish my npm module for Visual Studio Code that implements the aforementioned behavior and shows a custom QuickPick that allows browsing and creating folders from the Command Palette, even nested/recursive folders. The extension that implements this package is available at repo. Not perfect (yet) but it works.
Also create new file in Open File dialog would be useful.
Saving is good. Opening hasn't been implemented -- should there be a new issue for that?

// Filename not allowed this.filePickBox.validationMessage = nls.localize('remoteFileDialog.validateBadFilename', 'Please enter a valid file name.'); return Promise.resolve(false); <del> } else if (!statDirname || !statDirname.isDirectory) { </del> <ins> } else if (!statDirname) { </ins> // Folder to save in doesn't exist <ins> const message = nls.localize('remoteFileDialog.validateCreateDirectory', 'The folder {0} does not exist. Would you like to create it?', resources.basename(resources.dirname(uri))); return this.yesNoPrompt(uri, message); } else if (!statDirname.isDirectory) { </ins> this.filePickBox.validationMessage = nls.localize('remoteFileDialog.validateNonexistentDir', 'Please enter a path that exists.'); return Promise.resolve(false); }


Question:
When picking a Formatter to run for a file type, it'd be nice to see what extension is providing each formatter. This can make it easier to choose which formatter I want to use, or to open an issue to request that the extension use a more obvious name for their formatter :) (in this case, the Ruby extension accidentally provides the legacy formatter as well as the "current" formatter at the same time). When in a situation like this, I'm not sure which to choose: <img width="621" alt="Screen Shot 2019-04-07 at 6 20 49 PM" src="https://user-"Maybe have the extension name de-emphasized like the "Configured Tab Size" text in the indentation dropdown?: <img width="615" alt="Screen Shot 2019-04-07 at 8 29 28 PM" src="https://user-"
We use the 'displayName' or 'name' (when not having the former) but it seems that there are multiple extensions with the same name... We should be more precise in that case.

const picks = formatter.map((formatter, index) => { return <IIndexedPick>{ index, <del> label: formatter.displayName || formatter.extensionId || '?' </del> <ins> label: formatter.displayName || formatter.extensionId || '?', description: formatter.extensionId && formatter.extensionId.value </ins> }; }); const langName = this._modeService.getLanguageName(document.getModeId()) || document.getModeId();


Question:
Description Currently, when editing a file, the command <kbdctrl</kbd+<kbdshift</kbd+<kbda</kbd(toggle block comment) generates the following comment placeholder . I wonder if it might be also wise to include this as an auto-closing pair so that when users attempt to write the closing is automatically like other languages (ex: Typescript).
This issue is caused by an extension, please file it with the repository (or contact) the extension has linked in its overview in VS Code or the for VS Code. See also our guidelines. Happy Coding!
I'm not quite sure as to who or where the owner is for the extension. Looking at the I noticed multiple past updates to support additional features. Isn't the proposed feature request present in the issue similar to those past updates?
Oh, you are right. This part is us, not the extension. Sorry for the confusion...
Looks like a good change to me. Feel free to make a pull request.
Not able to reproduce ctrl+shift+a not having any effect.
I assume you are editing a file, but sorry the keybinding I mentioned is for Linux, on macOS for example the keybinding is . The easiest way to test is to simply run the command from the menu 🡒 :)
Got it, in windows it is Shift+Alt+A.
I forgot to mention I won't be able to submit a PR myself due to my company policy. If anyone would like to take on the issue, please feel free to do so :)
In that case, I am more than happy to make a pull request for this. Thanks for the information. I will submit one soon.
thank you!

{ "open": "{", "close": "}" }, { "open": "(", "close": ")" }, { "open": "'", "close": "'", "notIn": ["string", "comment"] }, <del> { "open": """, "close": """, "notIn": ["string"] } </del> <ins> { "open": """, "close": """, "notIn": ["string"] }, { "open": "/*", "close": " */", "notIn": ["string", "comment"] } </ins> ], "surroundingPairs": [ ["{", "}"],


Question:
a TypeScript file open (with some code in it) the outline to jump to the beginning of a method something somewhere the cursor jump to the beginning of the previously jumped-to function as soon as you stop pressing keys for .5 seconds Yes (both in insiders & stable) Version: 1.34.0-insider (user setup) Commit: Date: 2019-04-26T13:39:29.623Z Electron: 3.1.8 Chrome: 66.0.3359.181 10.2.0 V8: 6.6.346.32 OS: Windows_NT x64 10.0.
It seems that the tree send a selection change event after updating children (which happens because markers changed). I will look into a workaround, e.g being but it seems like a tree issue <img width="777" alt="Screenshot 2019-04-29 at 10 33 24" src="https://user-"

return; } <ins> this._set(nodes, false, browserEvent); } private _set(nodes: ITreeNode<T, any>[], silent: boolean, browserEvent?: UIEvent): void { </ins> this.nodes = [...nodes]; this.elements = undefined; this._nodeSet = undefined; <del> const that = this; this._onDidChange.fire({ get elements() { return that.get(); }, browserEvent }); </del> <ins> if (!silent) { const that = this; this._onDidChange.fire({ get elements() { return that.get(); }, browserEvent }); } </ins> } get(): T[] {


Question:
a TypeScript file open (with some code in it) the outline to jump to the beginning of a method something somewhere the cursor jump to the beginning of the previously jumped-to function as soon as you stop pressing keys for .5 seconds Yes (both in insiders & stable) Version: 1.34.0-insider (user setup) Commit: Date: 2019-04-26T13:39:29.623Z Electron: 3.1.8 Chrome: 66.0.3359.181 10.2.0 V8: 6.6.346.32 OS: Windows_NT x64 10.0.
It seems that the tree send a selection change event after updating children (which happens because markers changed). I will look into a workaround, e.g being but it seems like a tree issue <img width="777" alt="Screenshot 2019-04-29 at 10 33 24" src="https://user-"

insertedNodes.forEach(node => dfs(node, insertedNodesVisitor)); const nodes: ITreeNode<T, any>[] = []; <ins> let silent = true; </ins> for (const node of this.nodes) { const id = this.identityProvider.getId(node.element).toString();


Question:
a TypeScript file open (with some code in it) the outline to jump to the beginning of a method something somewhere the cursor jump to the beginning of the previously jumped-to function as soon as you stop pressing keys for .5 seconds Yes (both in insiders & stable) Version: 1.34.0-insider (user setup) Commit: Date: 2019-04-26T13:39:29.623Z Electron: 3.1.8 Chrome: 66.0.3359.181 10.2.0 V8: 6.6.346.32 OS: Windows_NT x64 10.0.
It seems that the tree send a selection change event after updating children (which happens because markers changed). I will look into a workaround, e.g being but it seems like a tree issue <img width="777" alt="Screenshot 2019-04-29 at 10 33 24" src="https://user-"

if (insertedNode) { nodes.push(insertedNode); <ins> } else { silent = false; </ins> } } } <del> this.set(nodes); </del> <ins> this._set(nodes, silent); </ins> } private createNodeSet(): Set<ITreeNode<T, any>> {


Question:
Extensions smoke tests are failing
This was caused because of two reasons has changed their search strategy and looking for extension by name is broken - label of an extension has string which was a bug introduced recently. Fixed them here -

this.parent.removeAttribute('aria-label'); this.parent.title = this.getTooltip(); if (this.extension) { <del> this.parent.setAttribute('aria-label', localize('extension-arialabel', "{0}. {1} Press enter for extension details.", this.extension.displayName)); </del> <ins> this.parent.setAttribute('aria-label', localize('extension-arialabel', "{0}. Press enter for extension details.", this.extension.displayName)); </ins> } }


Question:
Extensions smoke tests are failing
This was caused because of two reasons has changed their search strategy and looking for extension by name is broken - label of an extension has string which was a bug introduced recently. Fixed them here -

return; } <del> const extensionName = 'vscode-smoketest-check'; </del> await app.workbench.extensions.openExtensionsViewlet(); <del> await app.workbench.extensions.installExtension(extensionName); </del> <ins> await app.workbench.extensions.installExtension('michelkaporin.vscode-smoketest-check', 'vscode-smoketest-check'); </ins> await app.workbench.extensions.waitForExtensionsViewlet(); await app.workbench.quickopen.runCommand('Smoke Test Check');


Question:
Extensions smoke tests are failing
This was caused because of two reasons has changed their search strategy and looking for extension by name is broken - label of an extension has string which was a bug introduced recently. Fixed them here -

await this.code.waitForElement(SEARCH_BOX); } <del> async searchForExtension(name: string): Promise<any> { </del> <ins> async searchForExtension(id: string): Promise<any> { </ins> await this.code.waitAndClick(SEARCH_BOX); await this.code.waitForActiveElement(SEARCH_BOX); <del> await this.code.waitForTypeInEditor(SEARCH_BOX, `name:"${name}"`); </del> <ins> await this.code.waitForTypeInEditor(SEARCH_BOX, `@id:${id}`); </ins> } <del> async installExtension(name: string): Promise<void> { await this.searchForExtension(name); </del> <ins> async installExtension(id: string, name: string): Promise<void> { await this.searchForExtension(id); </ins> const ariaLabel = `${name}. Press enter for extension details.`; await this.code.waitAndClick(`div.extensions-viewlet[id="workbench.view.extensions"] .monaco-list-row[aria-label="${ariaLabel}"] .extension li[class='action-item'] .extension-action.install`); await this.code.waitForElement(`.extension-editor .monaco-action-bar .action-item:not(.disabled) .extension-action.uninstall`);


Question:
Extensions smoke tests are failing
This was caused because of two reasons has changed their search strategy and looking for extension by name is broken - label of an extension has string which was a bug introduced recently. Fixed them here -

return; } <del> const extensionName = 'German Language Pack for Visual Studio Code'; </del> await app.workbench.extensions.openExtensionsViewlet(); <del> await app.workbench.extensions.installExtension(extensionName); </del> <ins> await app.workbench.extensions.installExtension('ms-ceintl.vscode-language-pack-de', 'German Language Pack for Visual Studio Code'); </ins> await app.restart({ extraArgs: ['--locale=DE'] }); });


Question:
Issue Type: <bBug</bI noticed when I install extension by clicking on the green "Install" button from within the VScode extension page, as opposed to the "Would you like to install..." notification/chat bubble in the lower right corner of the editor, the chat bubble stays there, asking me if I want to install the extension I just installed. Would be great if the state was in sync and the bubble would be dismissed when I installed the extension, no matter how. <details<summaryScreenshot after installation</summary<img width="2032" alt="Screen Shot 2019-05-06 at 17 54 50" src="https://user-"</detailsVS Code version: Code 1.33.1 (, 2019-04-11T08:22:55.268Z) OS version: Darwin x64 18.5.0 <details<summarySystem Info</summary </details<details<summaryExtensions (19)</summaryExtensionVersion ------ project-manager10.5.1 solargraph0.19.6 bracket-pair-colorizer1.0.61 vscode-eslint1.8.2 es7-react-js-snippets2.2.2 gitlens9.7.1 prettier-vscode1.9.0 rails-snippets1.0.8 rest-client0.21.2 vscode-codemetrics1.18.0 vscode-language-babel0.0.22 ruby-rubocop0.8.0 sublime-keybindings4.0.0 debugger-for-chrome4.11.3 JavaScriptSnippets0.2.0 ruby0.22.3 code-settings-sync3.2.9 change-case1.0.0 JavaScriptSnippets1.7.2 </details<!-- generated by issue reporter --
, I would like to try this , Some starter and code pointers would be helpful :)
It depends on how got this notification. can you please let us know how you got this?
It shouldn't depend on that. I got it by clicking install button in VS Code Extension Marketplace website, in the browser.
This notification comes from here -
, I checked the code but just wanted to discuss on one thing . Is that notification needed in the first place , clicking on install button on top will do the same job , Also removing that notification will keep the two scenarios consistent and same (Normally opening that extension page and opening the extension page from browser) We can remove the notification prompt to fix the inconsistency .
, were you able to look into this ? I can remove the notification bubble and send a PR, please confirm :)
Yeah it look unnecessary for me. Please remove it.

import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IWindowService } from 'vs/platform/windows/common/windows'; <del> import Severity from 'vs/base/common/severity'; </del> import { URI } from 'vs/base/common/uri'; import { IExtension, ExtensionState, IExtensionsWorkbenchService, AutoUpdateConfigurationKey, AutoCheckUpdatesConfigurationKey } from 'vs/workbench/contrib/extensions/common/extensions'; import { IEditorService, SIDE_GROUP, ACTIVE_GROUP } from 'vs/workbench/services/editor/common/editorService';


Question:
Issue Type: <bBug</bI noticed when I install extension by clicking on the green "Install" button from within the VScode extension page, as opposed to the "Would you like to install..." notification/chat bubble in the lower right corner of the editor, the chat bubble stays there, asking me if I want to install the extension I just installed. Would be great if the state was in sync and the bubble would be dismissed when I installed the extension, no matter how. <details<summaryScreenshot after installation</summary<img width="2032" alt="Screen Shot 2019-05-06 at 17 54 50" src="https://user-"</detailsVS Code version: Code 1.33.1 (, 2019-04-11T08:22:55.268Z) OS version: Darwin x64 18.5.0 <details<summarySystem Info</summary </details<details<summaryExtensions (19)</summaryExtensionVersion ------ project-manager10.5.1 solargraph0.19.6 bracket-pair-colorizer1.0.61 vscode-eslint1.8.2 es7-react-js-snippets2.2.2 gitlens9.7.1 prettier-vscode1.9.0 rails-snippets1.0.8 rest-client0.21.2 vscode-codemetrics1.18.0 vscode-language-babel0.0.22 ruby-rubocop0.8.0 sublime-keybindings4.0.0 debugger-for-chrome4.11.3 JavaScriptSnippets0.2.0 ruby0.22.3 code-settings-sync3.2.9 change-case1.0.0 JavaScriptSnippets1.7.2 </details<!-- generated by issue reporter --
, I would like to try this , Some starter and code pointers would be helpful :)
It depends on how got this notification. can you please let us know how you got this?
It shouldn't depend on that. I got it by clicking install button in VS Code Extension Marketplace website, in the browser.
This notification comes from here -
, I checked the code but just wanted to discuss on one thing . Is that notification needed in the first place , clicking on install button on top will do the same job , Also removing that notification will keep the two scenarios consistent and same (Normally opening that extension page and opening the extension page from browser) We can remove the notification prompt to fix the inconsistency .
, were you able to look into this ? I can remove the notification bubble and send a PR, please confirm :)
Yeah it look unnecessary for me. Please remove it.

return this.windowService.focusWindow() .then(() => this.open(extension)); } return this.queryGallery({ names: [extensionId], source: 'uri' }, CancellationToken.None).then(result => { if (result.total < 1) { return Promise.resolve(null);


Question:
Issue Type: <bBug</bI noticed when I install extension by clicking on the green "Install" button from within the VScode extension page, as opposed to the "Would you like to install..." notification/chat bubble in the lower right corner of the editor, the chat bubble stays there, asking me if I want to install the extension I just installed. Would be great if the state was in sync and the bubble would be dismissed when I installed the extension, no matter how. <details<summaryScreenshot after installation</summary<img width="2032" alt="Screen Shot 2019-05-06 at 17 54 50" src="https://user-"</detailsVS Code version: Code 1.33.1 (, 2019-04-11T08:22:55.268Z) OS version: Darwin x64 18.5.0 <details<summarySystem Info</summary </details<details<summaryExtensions (19)</summaryExtensionVersion ------ project-manager10.5.1 solargraph0.19.6 bracket-pair-colorizer1.0.61 vscode-eslint1.8.2 es7-react-js-snippets2.2.2 gitlens9.7.1 prettier-vscode1.9.0 rails-snippets1.0.8 rest-client0.21.2 vscode-codemetrics1.18.0 vscode-language-babel0.0.22 ruby-rubocop0.8.0 sublime-keybindings4.0.0 debugger-for-chrome4.11.3 JavaScriptSnippets0.2.0 ruby0.22.3 code-settings-sync3.2.9 change-case1.0.0 JavaScriptSnippets1.7.2 </details<!-- generated by issue reporter --
, I would like to try this , Some starter and code pointers would be helpful :)
It depends on how got this notification. can you please let us know how you got this?
It shouldn't depend on that. I got it by clicking install button in VS Code Extension Marketplace website, in the browser.
This notification comes from here -
, I checked the code but just wanted to discuss on one thing . Is that notification needed in the first place , clicking on install button on top will do the same job , Also removing that notification will keep the two scenarios consistent and same (Normally opening that extension page and opening the extension page from browser) We can remove the notification prompt to fix the inconsistency .
, were you able to look into this ? I can remove the notification bubble and send a PR, please confirm :)
Yeah it look unnecessary for me. Please remove it.

const extension = result.firstPage[0]; return this.windowService.focusWindow().then(() => { <del> return this.open(extension).then(() => { this.notificationService.prompt( Severity.Info, nls.localize('installConfirmation', "Would you like to install the '{0}' extension?", extension.displayName, extension.publisher), [{ label: nls.localize('install', "Install"), run: () => this.install(extension).then(undefined, error => this.onError(error)) }], { sticky: true } ); }); </del> <ins> return this.open(extension); </ins> }); }); }).then(undefined, error => this.onError(error));


Question:
<!-- Please search existing issues to avoid creating duplicates. --Step 0. Version 1.35.0 with extensions disabled. Step 1. Open a file with changes committed in git Step 2. Use ALT+F3 to navigate to the next change in-line Step 3. Click Revert Change Step 4. find the line number you were on and move your cursor there, then hit ALT+F3 again <!-- Describe the feature you'd like. --I would like vscode to remember where I was whenever I revert a change, then return me to that place, so that I can see the change disappear and so that I can proceed using hotkey to the next change.
We might just have to set the cursor in that position, should be simple. Would you like to submit a PR?
I can take a look at this.. As this will be my first pull request here in vscode repo, I will require some help. Do let me know a good starting point for this..
Hi, I would like to work on this issue. I'll submit a PR soon.
Do we want to fix this for 'stage change' functionality too? It behaves now the same way as 'revert change' - it starts searching from the beginning, instead of placing cursor in staged line position.
Sounds good.

import { lstat, Stats } from 'fs'; import * as os from 'os'; import * as path from 'path'; <del> import { commands, Disposable, LineChange, MessageOptions, OutputChannel, Position, ProgressLocation, QuickPickItem, Range, SourceControlResourceState, TextDocumentShowOptions, TextEditor, Uri, ViewColumn, window, workspace, WorkspaceEdit, WorkspaceFolder } from 'vscode'; </del> <ins> import { Selection, commands, Disposable, LineChange, MessageOptions, OutputChannel, Position, ProgressLocation, QuickPickItem, Range, SourceControlResourceState, TextDocumentShowOptions, TextEditor, Uri, ViewColumn, window, workspace, WorkspaceEdit, WorkspaceFolder } from 'vscode'; </ins> import TelemetryReporter from 'vscode-extension-telemetry'; import * as nls from 'vscode-nls'; import { Branch, GitErrorCodes, Ref, RefType, Status } from './api/git';


Question:
<!-- Please search existing issues to avoid creating duplicates. --Step 0. Version 1.35.0 with extensions disabled. Step 1. Open a file with changes committed in git Step 2. Use ALT+F3 to navigate to the next change in-line Step 3. Click Revert Change Step 4. find the line number you were on and move your cursor there, then hit ALT+F3 again <!-- Describe the feature you'd like. --I would like vscode to remember where I was whenever I revert a change, then return me to that place, so that I can see the change disappear and so that I can proceed using hotkey to the next change.
We might just have to set the cursor in that position, should be simple. Would you like to submit a PR?
I can take a look at this.. As this will be my first pull request here in vscode repo, I will require some help. Do let me know a good starting point for this..
Hi, I would like to work on this issue. I'll submit a PR soon.
Do we want to fix this for 'stage change' functionality too? It behaves now the same way as 'revert change' - it starts searching from the beginning, instead of placing cursor in staged line position.
Sounds good.

} await this._stageChanges(textEditor, [changes[index]]); <ins> const firstStagedLine = changes[index].modifiedStartLineNumber - 1; textEditor.selections = [new Selection(firstStagedLine, 0, firstStagedLine, 0)]; </ins> } @command('git.stageSelectedRanges', { diff: true })


Question:
<!-- Please search existing issues to avoid creating duplicates. --Step 0. Version 1.35.0 with extensions disabled. Step 1. Open a file with changes committed in git Step 2. Use ALT+F3 to navigate to the next change in-line Step 3. Click Revert Change Step 4. find the line number you were on and move your cursor there, then hit ALT+F3 again <!-- Describe the feature you'd like. --I would like vscode to remember where I was whenever I revert a change, then return me to that place, so that I can see the change disappear and so that I can proceed using hotkey to the next change.
We might just have to set the cursor in that position, should be simple. Would you like to submit a PR?
I can take a look at this.. As this will be my first pull request here in vscode repo, I will require some help. Do let me know a good starting point for this..
Hi, I would like to work on this issue. I'll submit a PR soon.
Do we want to fix this for 'stage change' functionality too? It behaves now the same way as 'revert change' - it starts searching from the beginning, instead of placing cursor in staged line position.
Sounds good.

} await this._revertChanges(textEditor, [...changes.slice(0, index), ...changes.slice(index + 1)]); <ins> const firstStagedLine = changes[index].modifiedStartLineNumber - 1; textEditor.selections = [new Selection(firstStagedLine, 0, firstStagedLine, 0)]; </ins> } @command('git.revertSelectedRanges', { diff: true })


Question:
<!-- Please search existing issues to avoid creating duplicates. --Step 0. Version 1.35.0 with extensions disabled. Step 1. Open a file with changes committed in git Step 2. Use ALT+F3 to navigate to the next change in-line Step 3. Click Revert Change Step 4. find the line number you were on and move your cursor there, then hit ALT+F3 again <!-- Describe the feature you'd like. --I would like vscode to remember where I was whenever I revert a change, then return me to that place, so that I can see the change disappear and so that I can proceed using hotkey to the next change.
We might just have to set the cursor in that position, should be simple. Would you like to submit a PR?
I can take a look at this.. As this will be my first pull request here in vscode repo, I will require some help. Do let me know a good starting point for this..
Hi, I would like to work on this issue. I'll submit a PR soon.
Do we want to fix this for 'stage change' functionality too? It behaves now the same way as 'revert change' - it starts searching from the beginning, instead of placing cursor in staged line position.
Sounds good.

return; } <ins> const selectionsBeforeRevert = textEditor.selections; </ins> await this._revertChanges(textEditor, selectedChanges); <ins> textEditor.selections = selectionsBeforeRevert; </ins> } private async _revertChanges(textEditor: TextEditor, changes: LineChange[]): Promise<void> {


Question:
<!-- Please search existing issues to avoid creating duplicates. --Step 0. Version 1.35.0 with extensions disabled. Step 1. Open a file with changes committed in git Step 2. Use ALT+F3 to navigate to the next change in-line Step 3. Click Revert Change Step 4. find the line number you were on and move your cursor there, then hit ALT+F3 again <!-- Describe the feature you'd like. --I would like vscode to remember where I was whenever I revert a change, then return me to that place, so that I can see the change disappear and so that I can proceed using hotkey to the next change.
We might just have to set the cursor in that position, should be simple. Would you like to submit a PR?
I can take a look at this.. As this will be my first pull request here in vscode repo, I will require some help. Do let me know a good starting point for this..
Hi, I would like to work on this issue. I'll submit a PR soon.
Do we want to fix this for 'stage change' functionality too? It behaves now the same way as 'revert change' - it starts searching from the beginning, instead of placing cursor in staged line position.
Sounds good.

const originalUri = toGitUri(modifiedUri, '~'); const originalDocument = await workspace.openTextDocument(originalUri); <del> const selectionsBeforeRevert = textEditor.selections; </del> const visibleRangesBeforeRevert = textEditor.visibleRanges; const result = applyLineChanges(originalDocument, modifiedDocument, changes);


Question:
<!-- Please search existing issues to avoid creating duplicates. --Step 0. Version 1.35.0 with extensions disabled. Step 1. Open a file with changes committed in git Step 2. Use ALT+F3 to navigate to the next change in-line Step 3. Click Revert Change Step 4. find the line number you were on and move your cursor there, then hit ALT+F3 again <!-- Describe the feature you'd like. --I would like vscode to remember where I was whenever I revert a change, then return me to that place, so that I can see the change disappear and so that I can proceed using hotkey to the next change.
We might just have to set the cursor in that position, should be simple. Would you like to submit a PR?
I can take a look at this.. As this will be my first pull request here in vscode repo, I will require some help. Do let me know a good starting point for this..
Hi, I would like to work on this issue. I'll submit a PR soon.
Do we want to fix this for 'stage change' functionality too? It behaves now the same way as 'revert change' - it starts searching from the beginning, instead of placing cursor in staged line position.
Sounds good.

await modifiedDocument.save(); <del> textEditor.selections = selectionsBeforeRevert; </del> textEditor.revealRange(visibleRangesBeforeRevert[0]); }


Question: Support rendering text decorations in the minimap, beginning with search results. We can add a new option to decorations, similar to in : The new optional property could look like: The find widget can then set this property for its decorations, and the minimap can read the decorations from its text model.

<key>function</key> <dict> <key>begin</key> <del> <string>((?i:function|filter|configuration|workflow))s+((?:p{L}|d|_|-|.)+)</string> </del> <ins> <string>(?<!S)(?i)(function|filter|configuration|workflow)s+(?:(global|local|script|private):)?((?:p{L}|d|_|-|.)+)</string> </ins> <key>beginCaptures</key> <dict> <key>0</key>


Question: Support rendering text decorations in the minimap, beginning with search results. We can add a new option to decorations, similar to in : The new optional property could look like: The find widget can then set this property for its decorations, and the minimap can read the decorations from its text model.

<key>2</key> <dict> <key>name</key> <del> <string>entity.name.function</string> </del> <ins> <string>storage.modifier.scope.powershell</string> </dict> <key>3</key> <dict> <key>name</key> <string>entity.name.function.powershell</string> </ins> </dict> </dict> <key>end</key>


Question: Support rendering text decorations in the minimap, beginning with search results. We can add a new option to decorations, similar to in : The new optional property could look like: The find widget can then set this property for its decorations, and the minimap can read the decorations from its text model.

<key>uuid</key> <string>f8f5ffb0-503e-11df-9879-0800200c9a66</string> </dict> <del> </plist> </del>  No newline at end of file <ins> </plist> </ins>


Question:
I am a bit confused about this change, isn't it that command line arguments are being passed to Chrome/Electron anyway? Why is this needed? Originally posted by in
Would you like to submit a PR that reverts the original PR?

if (jsFlags) { app.commandLine.appendSwitch('--js-flags', jsFlags); } <del> // Disable smooth scrolling for Webviews if (cliArgs['disable-smooth-scrolling']) { app.commandLine.appendSwitch('disable-smooth-scrolling'); } </del> } /**


Question:
When installing the extension completes, the message is shown: "Completed installing the extension <publisher.<name. Instead, the extension displayName should be shown. VSCode Version: 1.36 OS Version: Windows 10 !
Currently, is displayed, it would be better if is shown.

.then(extensions => { for (const extension of extensions) { const requireReload = !(extension.local && this.extensionService.canAddExtension(toExtensionDescription(extension.local))); <del> const message = requireReload ? localize('InstallVSIXAction.successReload', "Please reload Visual Studio Code to complete installing the extension {0}.", extension.identifier.id) : localize('InstallVSIXAction.success', "Completed installing the extension {0}.", extension.identifier.id); </del> <ins> const message = requireReload ? localize('InstallVSIXAction.successReload', "Please reload Visual Studio Code to complete installing the extension {0}.", extension.displayName || extension.name) : localize('InstallVSIXAction.success', "Completed installing the extension {0}.", extension.displayName || extension.name); </ins> const actions = requireReload ? [{ label: localize('InstallVSIXAction.reloadNow', "Reload Now"), run: () => this.windowService.reloadWindow()


Question:
Apparently resolving a string like will work but it will leave the last curly brace. We should disallow this case or throw an error, etc. See
Still seeing some odd behavior (although this may be expected) Repro MacOs : new terminal Bug In the terminal, see: This does not happen if I use a setting such as
Looks like that's a side effect of 'breaking' the path. Nested variables are just no longer interpolated, it's left as:
are those side effects you listed above intended side effects of the change? If so, I see the same thing on codespaces and we can just leave this issue verified. Otherwise, should the issue be moved to the next milestone?
Yes, it's intended that variables that have nested segments are no longer replace. Previously it would have resulted in a malformed string.

export class AbstractVariableResolverService implements IConfigurationResolverService { <ins> static readonly VARIABLE_LHS = '${'; </ins> static readonly VARIABLE_REGEXP = /${(.*?)}/g; declare readonly _serviceBrand: undefined;


Question:
Apparently resolving a string like will work but it will leave the last curly brace. We should disallow this case or throw an error, etc. See
Still seeing some odd behavior (although this may be expected) Repro MacOs : new terminal Bug In the terminal, see: This does not happen if I use a setting such as
Looks like that's a side effect of 'breaking' the path. Nested variables are just no longer interpolated, it's left as:
are those side effects you listed above intended side effects of the change? If so, I see the same thing on codespaces and we can just leave this issue verified. Otherwise, should the issue be moved to the next milestone?
Yes, it's intended that variables that have nested segments are no longer replace. Previously it would have resulted in a malformed string.

// loop through all variables occurrences in 'value' const replaced = value.replace(AbstractVariableResolverService.VARIABLE_REGEXP, (match: string, variable: string) => { <ins> // disallow attempted nesting, see #77289 if (variable.includes(AbstractVariableResolverService.VARIABLE_LHS)) { return match; } </ins> let resolvedValue = this.evaluateSingleVariable(match, variable, folderUri, commandValueMapping);


Question:
Apparently resolving a string like will work but it will leave the last curly brace. We should disallow this case or throw an error, etc. See
Still seeing some odd behavior (although this may be expected) Repro MacOs : new terminal Bug In the terminal, see: This does not happen if I use a setting such as
Looks like that's a side effect of 'breaking' the path. Nested variables are just no longer interpolated, it's left as:
are those side effects you listed above intended side effects of the change? If so, I see the same thing on codespaces and we can just leave this issue verified. Otherwise, should the issue be moved to the next milestone?
Yes, it's intended that variables that have nested segments are no longer replace. Previously it would have resulted in a malformed string.

} }); <ins> test('disallows nested keys (#77289)', () => { assert.strictEqual(configurationResolverService!.resolve(workspace, '${env:key1} ${env:key1${env:key2}}'), 'Value for key1 ${env:key1${env:key2}}'); }); </ins> // test('substitute keys and values in object', () => { // 	const myObject = { // 		'${workspaceRootFolderName}': '${lineNumber}',


Question:
Are there any commands in VScode to navigate "up" or "down" (a folder, directly) in a selection in breadcrumbs? <img width="659" alt="Screen Shot 2019-07-13 at 7 04 55 PM" src="https://user-"
for what the command id is but pressing ArrowLeft does the job for me
The command is actually . It will collapse a node. If already collapsed, it will select the parent. Should we implement a command to simply select the parent?
I can do this and have a try
i make a PR but not very clear about how primary work.
Command is , you'll be able to configure a custom key binding when it's out.

} } }); <ins> KeybindingsRegistry.registerCommandAndKeybindingRule({ id: 'list.focusParent', weight: KeybindingWeight.WorkbenchContrib, when: WorkbenchListFocusContextKey, primary: KeyCode.Shift | KeyCode.LeftArrow, handler: (accessor) => { const focused = accessor.get(IListService).lastFocusedList; // Tree only if (focused && !(focused instanceof List || focused instanceof PagedList)) { if (focused instanceof ObjectTree || focused instanceof DataTree || focused instanceof AsyncDataTree) { const tree = focused; const focusedElements = tree.getFocus(); if (focusedElements.length === 0) { return; } const focus = focusedElements[0]; const parent = tree.getParentElement(focus); if (parent) { const fakeKeyboardEvent = new KeyboardEvent('keydown'); tree.setFocus([parent], fakeKeyboardEvent); tree.reveal(parent); } } else { const tree = focused; tree.focusParent({ origin: 'keyboard' }); } } } }); </ins>  No newline at end of file