@k-l-lambda/lilylet-markdown 0.1.68 → 0.1.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/lib/index.cjs +599 -342
  2. package/lib/index.js +599 -342
  3. package/package.json +2 -2
package/lib/index.cjs CHANGED
@@ -44,14 +44,14 @@ var localGrammar = function() {
44
44
  var o = function(k, v, o2, l) {
45
45
  for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) ;
46
46
  return o2;
47
- }, $V0 = [5, 26, 33, 36, 50, 51, 52, 53, 54, 60, 63, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 105, 106, 107, 108, 111, 112, 114, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 173, 175, 177, 178], $V1 = [2, 44], $V2 = [1, 9], $V3 = [1, 10], $V4 = [1, 11], $V5 = [1, 12], $V6 = [1, 13], $V7 = [1, 14], $V8 = [1, 15], $V9 = [1, 16], $Va = [1, 17], $Vb = [1, 18], $Vc = [1, 19], $Vd = [1, 20], $Ve = [1, 29], $Vf = [1, 32], $Vg = [1, 33], $Vh = [5, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 33, 36, 50, 51, 52, 53, 54, 60, 63, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 105, 106, 107, 108, 111, 112, 114, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 173, 175, 177, 178], $Vi = [5, 26], $Vj = [5, 26, 33], $Vk = [1, 47], $Vl = [5, 26, 33, 36], $Vm = [1, 83], $Vn = [1, 84], $Vo = [1, 85], $Vp = [1, 86], $Vq = [1, 87], $Vr = [1, 88], $Vs = [1, 94], $Vt = [1, 95], $Vu = [1, 66], $Vv = [1, 67], $Vw = [1, 108], $Vx = [1, 109], $Vy = [1, 110], $Vz = [1, 111], $VA = [1, 96], $VB = [1, 97], $VC = [1, 98], $VD = [1, 106], $VE = [1, 107], $VF = [1, 99], $VG = [1, 100], $VH = [1, 101], $VI = [1, 102], $VJ = [1, 103], $VK = [1, 104], $VL = [1, 105], $VM = [1, 79], $VN = [1, 80], $VO = [1, 81], $VP = [1, 82], $VQ = [1, 112], $VR = [1, 113], $VS = [1, 114], $VT = [1, 115], $VU = [1, 116], $VV = [1, 117], $VW = [1, 118], $VX = [1, 119], $VY = [1, 120], $VZ = [1, 121], $V_ = [1, 122], $V$ = [1, 123], $V01 = [1, 124], $V11 = [1, 90], $V21 = [1, 91], $V31 = [1, 92], $V41 = [1, 93], $V51 = [5, 9, 26, 33, 36, 50, 51, 52, 53, 54, 60, 63, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 105, 106, 107, 108, 111, 112, 114, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 173, 175, 177, 178], $V61 = [2, 29], $V71 = [5, 9, 26, 33, 36, 50, 51, 52, 53, 54, 60, 63, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 105, 106, 107, 108, 110, 111, 112, 114, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 173, 175, 177, 178], $V81 = [5, 9, 26, 33, 36, 173, 175, 177, 178], $V91 = [5, 9, 13, 26, 33, 36, 50, 51, 52, 53, 54, 60, 62, 63, 70, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 104, 105, 106, 107, 108, 110, 111, 112, 114, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 175, 177, 178], $Va1 = [2, 130], $Vb1 = [1, 150], $Vc1 = [5, 9, 13, 26, 33, 36, 50, 51, 52, 53, 54, 60, 62, 63, 68, 70, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 104, 105, 106, 107, 108, 110, 111, 112, 114, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 175, 177, 178], $Vd1 = [5, 9, 26, 33, 36, 50, 51, 60, 63, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 105, 106, 107, 108, 110, 111, 112, 114, 173, 175, 177, 178], $Ve1 = [1, 236], $Vf1 = [1, 242], $Vg1 = [1, 217], $Vh1 = [1, 218], $Vi1 = [1, 215], $Vj1 = [1, 239], $Vk1 = [1, 216], $Vl1 = [1, 214], $Vm1 = [1, 238], $Vn1 = [1, 208], $Vo1 = [1, 209], $Vp1 = [1, 210], $Vq1 = [1, 211], $Vr1 = [1, 212], $Vs1 = [1, 213], $Vt1 = [1, 219], $Vu1 = [1, 220], $Vv1 = [1, 221], $Vw1 = [1, 222], $Vx1 = [1, 223], $Vy1 = [1, 224], $Vz1 = [1, 225], $VA1 = [1, 226], $VB1 = [1, 227], $VC1 = [1, 228], $VD1 = [1, 229], $VE1 = [1, 230], $VF1 = [1, 231], $VG1 = [1, 232], $VH1 = [1, 233], $VI1 = [1, 234], $VJ1 = [1, 235], $VK1 = [1, 237], $VL1 = [1, 240], $VM1 = [1, 241], $VN1 = [1, 243], $VO1 = [5, 9, 13, 26, 33, 36, 50, 51, 52, 53, 54, 60, 62, 63, 68, 70, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 100, 101, 102, 104, 105, 106, 107, 108, 110, 111, 112, 114, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 175, 177, 178], $VP1 = [9, 50, 51, 52, 53, 54, 60, 63, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 105, 106, 107, 108, 110, 111, 112, 114, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159], $VQ1 = [110, 196, 197, 198, 199], $VR1 = [110, 180, 184], $VS1 = [2, 210], $VT1 = [62, 63], $VU1 = [5, 9, 13, 26, 33, 36, 50, 51, 52, 53, 54, 60, 62, 63, 65, 66, 67, 68, 70, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 104, 105, 106, 107, 108, 110, 111, 112, 114, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 175, 177, 178], $VV1 = [1, 295], $VW1 = [1, 296], $VX1 = [1, 310], $VY1 = [1, 311], $VZ1 = [1, 313], $V_1 = [1, 314], $V$1 = [1, 315], $V02 = [2, 214], $V12 = [1, 317], $V22 = [60, 63, 68, 110], $V32 = [182, 185, 190, 192, 193, 194], $V42 = [182, 185, 190], $V52 = [2, 223], $V62 = [110, 180, 184, 187];
47
+ }, $V0 = [5, 26, 33, 36, 51, 52, 53, 54, 55, 61, 64, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 117, 118, 120, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 180, 182, 184, 185], $V1 = [2, 44], $V2 = [1, 9], $V3 = [1, 10], $V4 = [1, 11], $V5 = [1, 12], $V6 = [1, 13], $V7 = [1, 14], $V8 = [1, 15], $V9 = [1, 16], $Va = [1, 17], $Vb = [1, 18], $Vc = [1, 19], $Vd = [1, 20], $Ve = [1, 29], $Vf = [1, 32], $Vg = [1, 33], $Vh = [5, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 33, 36, 51, 52, 53, 54, 55, 61, 64, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 117, 118, 120, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 180, 182, 184, 185], $Vi = [5, 26], $Vj = [5, 26, 33], $Vk = [1, 47], $Vl = [5, 26, 33, 36], $Vm = [1, 87], $Vn = [1, 88], $Vo = [1, 89], $Vp = [1, 90], $Vq = [1, 91], $Vr = [1, 92], $Vs = [1, 98], $Vt = [1, 99], $Vu = [1, 67], $Vv = [1, 68], $Vw = [1, 69], $Vx = [1, 70], $Vy = [1, 71], $Vz = [1, 112], $VA = [1, 113], $VB = [1, 114], $VC = [1, 115], $VD = [1, 100], $VE = [1, 101], $VF = [1, 102], $VG = [1, 110], $VH = [1, 111], $VI = [1, 103], $VJ = [1, 104], $VK = [1, 105], $VL = [1, 106], $VM = [1, 107], $VN = [1, 108], $VO = [1, 109], $VP = [1, 83], $VQ = [1, 84], $VR = [1, 85], $VS = [1, 86], $VT = [1, 116], $VU = [1, 117], $VV = [1, 118], $VW = [1, 119], $VX = [1, 120], $VY = [1, 121], $VZ = [1, 122], $V_ = [1, 123], $V$ = [1, 124], $V01 = [1, 125], $V11 = [1, 126], $V21 = [1, 127], $V31 = [1, 128], $V41 = [1, 94], $V51 = [1, 95], $V61 = [1, 96], $V71 = [1, 97], $V81 = [5, 9, 26, 33, 36, 51, 52, 53, 54, 55, 61, 64, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 117, 118, 120, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 180, 182, 184, 185], $V91 = [2, 29], $Va1 = [5, 9, 26, 33, 36, 51, 52, 53, 54, 55, 61, 64, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 116, 117, 118, 120, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 180, 182, 184, 185], $Vb1 = [5, 9, 26, 33, 36, 180, 182, 184, 185], $Vc1 = [5, 9, 13, 26, 33, 36, 51, 52, 53, 54, 55, 61, 63, 64, 72, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 110, 111, 112, 113, 114, 116, 117, 118, 120, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 182, 184, 185], $Vd1 = [2, 136], $Ve1 = [1, 154], $Vf1 = [1, 155], $Vg1 = [5, 9, 13, 26, 33, 36, 51, 52, 53, 54, 55, 61, 63, 64, 69, 71, 72, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 110, 111, 112, 113, 114, 116, 117, 118, 120, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 182, 184, 185], $Vh1 = [5, 9, 13, 26, 33, 36, 51, 52, 53, 54, 55, 61, 63, 64, 69, 72, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 110, 111, 112, 113, 114, 116, 117, 118, 120, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 182, 184, 185], $Vi1 = [5, 9, 26, 33, 36, 51, 52, 61, 64, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 116, 117, 118, 120, 180, 182, 184, 185], $Vj1 = [1, 242], $Vk1 = [1, 248], $Vl1 = [1, 222], $Vm1 = [1, 223], $Vn1 = [1, 220], $Vo1 = [1, 245], $Vp1 = [1, 221], $Vq1 = [1, 219], $Vr1 = [1, 244], $Vs1 = [1, 213], $Vt1 = [1, 214], $Vu1 = [1, 215], $Vv1 = [1, 216], $Vw1 = [1, 217], $Vx1 = [1, 218], $Vy1 = [1, 224], $Vz1 = [1, 225], $VA1 = [1, 226], $VB1 = [1, 227], $VC1 = [1, 228], $VD1 = [1, 229], $VE1 = [1, 230], $VF1 = [1, 231], $VG1 = [1, 232], $VH1 = [1, 233], $VI1 = [1, 234], $VJ1 = [1, 235], $VK1 = [1, 236], $VL1 = [1, 237], $VM1 = [1, 238], $VN1 = [1, 239], $VO1 = [1, 240], $VP1 = [1, 241], $VQ1 = [1, 243], $VR1 = [1, 246], $VS1 = [1, 247], $VT1 = [1, 249], $VU1 = [5, 9, 13, 26, 33, 36, 51, 52, 53, 54, 55, 61, 63, 64, 69, 72, 73, 74, 75, 76, 77, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 106, 107, 108, 110, 111, 112, 113, 114, 116, 117, 118, 120, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 182, 184, 185], $VV1 = [2, 82], $VW1 = [9, 51, 52, 53, 54, 55, 61, 64, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 116, 117, 118, 120, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166], $VX1 = [116, 203, 204, 205, 206], $VY1 = [116, 187, 191], $VZ1 = [2, 217], $V_1 = [63, 64], $V$1 = [5, 9, 13, 26, 33, 36, 51, 52, 53, 54, 55, 61, 63, 64, 66, 67, 68, 69, 71, 72, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 110, 111, 112, 113, 114, 116, 117, 118, 120, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 182, 184, 185], $V02 = [5, 9, 13, 26, 33, 36, 51, 52, 53, 54, 55, 61, 63, 64, 69, 73, 74, 75, 76, 77, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 106, 107, 108, 110, 111, 112, 113, 114, 116, 117, 118, 120, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 182, 184, 185], $V12 = [1, 290], $V22 = [1, 304], $V32 = [1, 305], $V42 = [1, 320], $V52 = [1, 321], $V62 = [1, 323], $V72 = [1, 324], $V82 = [1, 325], $V92 = [2, 221], $Va2 = [1, 327], $Vb2 = [61, 64, 69, 71, 116], $Vc2 = [189, 192, 197, 199, 200, 201], $Vd2 = [189, 192, 197], $Ve2 = [2, 230], $Vf2 = [116, 187, 191, 194];
48
48
  var parser = {
49
49
  trace: function trace() {
50
50
  },
51
51
  yy: {},
52
- symbols_: { "error": 2, "document": 3, "content": 4, "EOF": 5, "headers": 6, "measures": 7, "newlines": 8, "NEWLINE": 9, "header": 10, "HEADER_TITLE": 11, "STRING": 12, "]": 13, "HEADER_SUBTITLE": 14, "HEADER_COMPOSER": 15, "HEADER_ARRANGER": 16, "HEADER_LYRICIST": 17, "HEADER_OPUS": 18, "HEADER_INSTRUMENT": 19, "HEADER_INSTRUMENT_STAFF": 20, "HEADER_GENRE": 21, "HEADER_STAVES": 22, "HEADER_MEASURES": 23, "HEADER_AUTOBEAM": 24, "measure_content": 25, "|": 26, "parts": 27, "annotations_opt": 28, "annotations": 29, "addlyrics_block": 30, "figures_block": 31, "part_voices": 32, "PART_SEP": 33, "part_start": 34, "voice_block": 35, "VOICE_SEP": 36, "voice_events": 37, "event": 38, "note_event": 39, "rest_event": 40, "context_event": 41, "grace_event": 42, "tuplet_event": 43, "tremolo_event": 44, "pitch_reset_event": 45, "barline_event": 46, "harmony_event": 47, "markup_event": 48, "dynamic_event": 49, "CMD_BAR": 50, "CMD_CHORDS": 51, "CMD_MARKUP": 52, "^": 53, "_": 54, "dynamic_mark": 55, "chord": 56, "duration": 57, "post_events": 58, "pitch": 59, "<": 60, "pitches": 61, ">": 62, "PITCH": 63, "octave": 64, "!": 65, "OCT_UP": 66, "OCT_DOWN": 67, "NUMBER": 68, "dots": 69, ".": 70, "REST_CHAR": 71, "SPACE_CHAR": 72, "clef_cmd": 73, "key_cmd": 74, "time_cmd": 75, "partial_cmd": 76, "tempo_cmd": 77, "staff_cmd": 78, "ottava_cmd": 79, "stem_cmd": 80, "numeric_time_sig_cmd": 81, "default_time_sig_cmd": 82, "omit_cmd": 83, "CMD_OMIT_TIME_SIG": 84, "CMD_UNDO_OMIT_TIME_SIG": 85, "CMD_OMIT_BAR_LINE": 86, "CMD_UNDO_OMIT_BAR_LINE": 87, "CMD_CLEF": 88, "CMD_KEY": 89, "pitch_name": 90, "mode": 91, "MODE_MAJOR": 92, "MODE_MINOR": 93, "CMD_TIME": 94, "/": 95, "CMD_NUMERIC_TIME_SIG": 96, "CMD_DEFAULT_TIME_SIG": 97, "CMD_PARTIAL": 98, "CMD_TEMPO": 99, "=": 100, "CMD_STAFF": 101, "CMD_OTTAVA": 102, "#": 103, "-": 104, "CMD_STEMUP": 105, "CMD_STEMDOWN": 106, "CMD_STEMNEUTRAL": 107, "CMD_GRACE": 108, "{": 109, "}": 110, "CMD_TIMES": 111, "CMD_TUPLET": 112, "tremolo_pitches": 113, "CMD_REPEAT": 114, "TREMOLO": 115, "post_event": 116, "articulation_mark": 117, "ornament_mark": 118, "hairpin_mark": 119, "pedal_mark": 120, "tie_mark": 121, "slur_mark": 122, "beam_mark": 123, "tremolo_mark": 124, "direction_mark": 125, "rest_mark": 126, "fingering_mark": 127, "fingering_number": 128, "navigation_mark": 129, "markup_mark": 130, "glissando_mark": 131, "CMD_REST": 132, "ART_STACCATO": 133, "ART_STACCATISSIMO": 134, "ART_TENUTO": 135, "ART_MARCATO": 136, "ART_ACCENT": 137, "ART_PORTATO": 138, "ORN_TRILL": 139, "ORN_TURN": 140, "ORN_MORDENT": 141, "ORN_PRALL": 142, "ORN_FERMATA": 143, "ORN_SHORTFERMATA": 144, "ORN_ARPEGGIO": 145, "ORN_BREATHE": 146, "DYN_PPP": 147, "DYN_PP": 148, "DYN_P": 149, "DYN_MP": 150, "DYN_MF": 151, "DYN_F": 152, "DYN_FF": 153, "DYN_FFF": 154, "DYN_SFZ": 155, "DYN_RFZ": 156, "DYN_SF": 157, "DYN_OTHER": 158, "DYN_FP": 159, "CMD_CRESC_BEGIN": 160, "CMD_DIM_BEGIN": 161, "CMD_DYNAMICS_END": 162, "CMD_SUSTAINON": 163, "CMD_SUSTAINOFF": 164, "~": 165, "(": 166, ")": 167, "[": 168, ":": 169, "CMD_CODA": 170, "CMD_SEGNO": 171, "CMD_GLISSANDO": 172, "CMD_ADDLYRICS": 173, "lyric_sequence": 174, "CMD_FIGURES": 175, "figure_sequence": 176, "CMD_FIGURES_BELOW": 177, "CMD_FIGURES_ABOVE": 178, "figure_item": 179, "FIG_OPEN": 180, "figure_lines": 181, "FIG_CLOSE": 182, "figure_duration_opt": 183, "FIG_SKIP": 184, "FIG_NUMBER": 185, "figure_dots": 186, "FIG_DOT": 187, "figure_line": 188, "figure_accidental_opt": 189, "FIG_BLANK": 190, "figure_accidental": 191, "FIG_SHARP": 192, "FIG_FLAT": 193, "FIG_NATURAL": 194, "lyric_item": 195, "LYRIC_WORD": 196, "LYRIC_HYPHEN": 197, "LYRIC_SKIP": 198, "LYRIC_EXTENDER": 199, "$accept": 0, "$end": 1 },
53
- terminals_: { 2: "error", 5: "EOF", 9: "NEWLINE", 11: "HEADER_TITLE", 12: "STRING", 13: "]", 14: "HEADER_SUBTITLE", 15: "HEADER_COMPOSER", 16: "HEADER_ARRANGER", 17: "HEADER_LYRICIST", 18: "HEADER_OPUS", 19: "HEADER_INSTRUMENT", 20: "HEADER_INSTRUMENT_STAFF", 21: "HEADER_GENRE", 22: "HEADER_STAVES", 23: "HEADER_MEASURES", 24: "HEADER_AUTOBEAM", 26: "|", 33: "PART_SEP", 36: "VOICE_SEP", 50: "CMD_BAR", 51: "CMD_CHORDS", 52: "CMD_MARKUP", 53: "^", 54: "_", 60: "<", 62: ">", 63: "PITCH", 65: "!", 66: "OCT_UP", 67: "OCT_DOWN", 68: "NUMBER", 70: ".", 71: "REST_CHAR", 72: "SPACE_CHAR", 84: "CMD_OMIT_TIME_SIG", 85: "CMD_UNDO_OMIT_TIME_SIG", 86: "CMD_OMIT_BAR_LINE", 87: "CMD_UNDO_OMIT_BAR_LINE", 88: "CMD_CLEF", 89: "CMD_KEY", 92: "MODE_MAJOR", 93: "MODE_MINOR", 94: "CMD_TIME", 95: "/", 96: "CMD_NUMERIC_TIME_SIG", 97: "CMD_DEFAULT_TIME_SIG", 98: "CMD_PARTIAL", 99: "CMD_TEMPO", 100: "=", 101: "CMD_STAFF", 102: "CMD_OTTAVA", 103: "#", 104: "-", 105: "CMD_STEMUP", 106: "CMD_STEMDOWN", 107: "CMD_STEMNEUTRAL", 108: "CMD_GRACE", 109: "{", 110: "}", 111: "CMD_TIMES", 112: "CMD_TUPLET", 114: "CMD_REPEAT", 115: "TREMOLO", 132: "CMD_REST", 133: "ART_STACCATO", 134: "ART_STACCATISSIMO", 135: "ART_TENUTO", 136: "ART_MARCATO", 137: "ART_ACCENT", 138: "ART_PORTATO", 139: "ORN_TRILL", 140: "ORN_TURN", 141: "ORN_MORDENT", 142: "ORN_PRALL", 143: "ORN_FERMATA", 144: "ORN_SHORTFERMATA", 145: "ORN_ARPEGGIO", 146: "ORN_BREATHE", 147: "DYN_PPP", 148: "DYN_PP", 149: "DYN_P", 150: "DYN_MP", 151: "DYN_MF", 152: "DYN_F", 153: "DYN_FF", 154: "DYN_FFF", 155: "DYN_SFZ", 156: "DYN_RFZ", 157: "DYN_SF", 158: "DYN_OTHER", 159: "DYN_FP", 160: "CMD_CRESC_BEGIN", 161: "CMD_DIM_BEGIN", 162: "CMD_DYNAMICS_END", 163: "CMD_SUSTAINON", 164: "CMD_SUSTAINOFF", 165: "~", 166: "(", 167: ")", 168: "[", 169: ":", 170: "CMD_CODA", 171: "CMD_SEGNO", 172: "CMD_GLISSANDO", 173: "CMD_ADDLYRICS", 175: "CMD_FIGURES", 177: "CMD_FIGURES_BELOW", 178: "CMD_FIGURES_ABOVE", 180: "FIG_OPEN", 182: "FIG_CLOSE", 184: "FIG_SKIP", 185: "FIG_NUMBER", 187: "FIG_DOT", 190: "FIG_BLANK", 192: "FIG_SHARP", 193: "FIG_FLAT", 194: "FIG_NATURAL", 196: "LYRIC_WORD", 197: "LYRIC_HYPHEN", 198: "LYRIC_SKIP", 199: "LYRIC_EXTENDER" },
54
- productions_: [0, [3, 2], [4, 2], [4, 3], [4, 3], [4, 4], [4, 2], [4, 1], [8, 1], [8, 2], [6, 1], [6, 2], [6, 2], [6, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 4], [10, 3], [10, 3], [10, 3], [10, 3], [7, 1], [7, 3], [7, 2], [25, 1], [28, 0], [28, 1], [29, 1], [29, 1], [29, 2], [29, 2], [29, 2], [27, 1], [27, 4], [34, 0], [32, 1], [32, 3], [35, 2], [37, 0], [37, 2], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [46, 2], [47, 2], [48, 2], [48, 3], [48, 3], [49, 1], [45, 1], [39, 3], [39, 3], [39, 2], [39, 2], [56, 3], [61, 1], [61, 2], [59, 3], [59, 2], [59, 2], [59, 1], [64, 1], [64, 1], [64, 2], [64, 2], [57, 2], [69, 0], [69, 2], [40, 3], [40, 3], [40, 2], [40, 2], [41, 1], [41, 1], [41, 1], [41, 1], [41, 1], [41, 1], [41, 1], [41, 1], [41, 1], [41, 1], [41, 1], [83, 1], [83, 1], [83, 1], [83, 1], [73, 2], [74, 3], [90, 1], [91, 1], [91, 1], [75, 4], [81, 1], [82, 1], [76, 2], [77, 5], [77, 2], [77, 4], [78, 2], [79, 3], [79, 4], [79, 1], [80, 1], [80, 1], [80, 1], [42, 4], [42, 2], [42, 2], [43, 7], [43, 7], [113, 1], [113, 1], [44, 9], [44, 8], [44, 7], [58, 0], [58, 2], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [116, 1], [126, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 2], [117, 2], [117, 2], [117, 2], [117, 2], [117, 2], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [118, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [55, 1], [119, 1], [119, 1], [119, 1], [120, 1], [120, 1], [121, 1], [122, 1], [122, 1], [123, 1], [123, 1], [124, 2], [125, 2], [125, 2], [127, 2], [128, 1], [129, 1], [129, 1], [130, 2], [131, 1], [30, 4], [31, 4], [31, 4], [31, 4], [176, 0], [176, 2], [179, 4], [179, 2], [183, 0], [183, 2], [186, 0], [186, 2], [181, 1], [181, 2], [188, 2], [188, 2], [188, 1], [189, 0], [189, 1], [191, 1], [191, 1], [191, 1], [174, 0], [174, 2], [195, 1], [195, 1], [195, 1], [195, 1]],
52
+ symbols_: { "error": 2, "document": 3, "content": 4, "EOF": 5, "headers": 6, "measures": 7, "newlines": 8, "NEWLINE": 9, "header": 10, "HEADER_TITLE": 11, "STRING": 12, "]": 13, "HEADER_SUBTITLE": 14, "HEADER_COMPOSER": 15, "HEADER_ARRANGER": 16, "HEADER_LYRICIST": 17, "HEADER_OPUS": 18, "HEADER_INSTRUMENT": 19, "HEADER_INSTRUMENT_STAFF": 20, "HEADER_GENRE": 21, "HEADER_STAVES": 22, "HEADER_MEASURES": 23, "HEADER_AUTOBEAM": 24, "measure_content": 25, "|": 26, "parts": 27, "annotations_opt": 28, "annotations": 29, "addlyrics_block": 30, "figures_block": 31, "part_voices": 32, "PART_SEP": 33, "part_start": 34, "voice_block": 35, "VOICE_SEP": 36, "voice_events": 37, "event": 38, "note_event": 39, "head_shape_cmd": 40, "rest_event": 41, "context_event": 42, "grace_event": 43, "tuplet_event": 44, "tremolo_event": 45, "pitch_reset_event": 46, "barline_event": 47, "harmony_event": 48, "markup_event": 49, "dynamic_event": 50, "CMD_BAR": 51, "CMD_CHORDS": 52, "CMD_MARKUP": 53, "^": 54, "_": 55, "dynamic_mark": 56, "chord": 57, "duration": 58, "post_events": 59, "pitch": 60, "<": 61, "pitches": 62, ">": 63, "PITCH": 64, "octave": 65, "!": 66, "OCT_UP": 67, "OCT_DOWN": 68, "NUMBER": 69, "dots": 70, "CMD_BREVE": 71, ".": 72, "CMD_XNOTE": 73, "CMD_IMPROV_ON": 74, "CMD_IMPROV_OFF": 75, "REST_CHAR": 76, "*": 77, "SPACE_CHAR": 78, "clef_cmd": 79, "key_cmd": 80, "time_cmd": 81, "partial_cmd": 82, "tempo_cmd": 83, "staff_cmd": 84, "ottava_cmd": 85, "stem_cmd": 86, "numeric_time_sig_cmd": 87, "default_time_sig_cmd": 88, "omit_cmd": 89, "CMD_OMIT_TIME_SIG": 90, "CMD_UNDO_OMIT_TIME_SIG": 91, "CMD_OMIT_BAR_LINE": 92, "CMD_UNDO_OMIT_BAR_LINE": 93, "CMD_CLEF": 94, "CMD_KEY": 95, "pitch_name": 96, "mode": 97, "MODE_MAJOR": 98, "MODE_MINOR": 99, "CMD_TIME": 100, "/": 101, "CMD_NUMERIC_TIME_SIG": 102, "CMD_DEFAULT_TIME_SIG": 103, "CMD_PARTIAL": 104, "CMD_TEMPO": 105, "=": 106, "CMD_STAFF": 107, "CMD_OTTAVA": 108, "#": 109, "-": 110, "CMD_STEMUP": 111, "CMD_STEMDOWN": 112, "CMD_STEMNEUTRAL": 113, "CMD_GRACE": 114, "{": 115, "}": 116, "CMD_TIMES": 117, "CMD_TUPLET": 118, "tremolo_pitches": 119, "CMD_REPEAT": 120, "TREMOLO": 121, "post_event": 122, "articulation_mark": 123, "ornament_mark": 124, "hairpin_mark": 125, "pedal_mark": 126, "tie_mark": 127, "slur_mark": 128, "beam_mark": 129, "tremolo_mark": 130, "direction_mark": 131, "rest_mark": 132, "fingering_mark": 133, "fingering_number": 134, "navigation_mark": 135, "markup_mark": 136, "glissando_mark": 137, "CMD_REST": 138, "ART_STACCATO": 139, "ART_STACCATISSIMO": 140, "ART_TENUTO": 141, "ART_MARCATO": 142, "ART_ACCENT": 143, "ART_PORTATO": 144, "ORN_TRILL": 145, "ORN_TURN": 146, "ORN_MORDENT": 147, "ORN_PRALL": 148, "ORN_FERMATA": 149, "ORN_SHORTFERMATA": 150, "ORN_ARPEGGIO": 151, "ORN_BREATHE": 152, "ORN_CAESURA": 153, "DYN_PPP": 154, "DYN_PP": 155, "DYN_P": 156, "DYN_MP": 157, "DYN_MF": 158, "DYN_F": 159, "DYN_FF": 160, "DYN_FFF": 161, "DYN_SFZ": 162, "DYN_RFZ": 163, "DYN_SF": 164, "DYN_OTHER": 165, "DYN_FP": 166, "CMD_CRESC_BEGIN": 167, "CMD_DIM_BEGIN": 168, "CMD_DYNAMICS_END": 169, "CMD_SUSTAINON": 170, "CMD_SUSTAINOFF": 171, "~": 172, "(": 173, ")": 174, "[": 175, ":": 176, "CMD_CODA": 177, "CMD_SEGNO": 178, "CMD_GLISSANDO": 179, "CMD_ADDLYRICS": 180, "lyric_sequence": 181, "CMD_FIGURES": 182, "figure_sequence": 183, "CMD_FIGURES_BELOW": 184, "CMD_FIGURES_ABOVE": 185, "figure_item": 186, "FIG_OPEN": 187, "figure_lines": 188, "FIG_CLOSE": 189, "figure_duration_opt": 190, "FIG_SKIP": 191, "FIG_NUMBER": 192, "figure_dots": 193, "FIG_DOT": 194, "figure_line": 195, "figure_accidental_opt": 196, "FIG_BLANK": 197, "figure_accidental": 198, "FIG_SHARP": 199, "FIG_FLAT": 200, "FIG_NATURAL": 201, "lyric_item": 202, "LYRIC_WORD": 203, "LYRIC_HYPHEN": 204, "LYRIC_SKIP": 205, "LYRIC_EXTENDER": 206, "$accept": 0, "$end": 1 },
53
+ terminals_: { 2: "error", 5: "EOF", 9: "NEWLINE", 11: "HEADER_TITLE", 12: "STRING", 13: "]", 14: "HEADER_SUBTITLE", 15: "HEADER_COMPOSER", 16: "HEADER_ARRANGER", 17: "HEADER_LYRICIST", 18: "HEADER_OPUS", 19: "HEADER_INSTRUMENT", 20: "HEADER_INSTRUMENT_STAFF", 21: "HEADER_GENRE", 22: "HEADER_STAVES", 23: "HEADER_MEASURES", 24: "HEADER_AUTOBEAM", 26: "|", 33: "PART_SEP", 36: "VOICE_SEP", 51: "CMD_BAR", 52: "CMD_CHORDS", 53: "CMD_MARKUP", 54: "^", 55: "_", 61: "<", 63: ">", 64: "PITCH", 66: "!", 67: "OCT_UP", 68: "OCT_DOWN", 69: "NUMBER", 71: "CMD_BREVE", 72: ".", 73: "CMD_XNOTE", 74: "CMD_IMPROV_ON", 75: "CMD_IMPROV_OFF", 76: "REST_CHAR", 77: "*", 78: "SPACE_CHAR", 90: "CMD_OMIT_TIME_SIG", 91: "CMD_UNDO_OMIT_TIME_SIG", 92: "CMD_OMIT_BAR_LINE", 93: "CMD_UNDO_OMIT_BAR_LINE", 94: "CMD_CLEF", 95: "CMD_KEY", 98: "MODE_MAJOR", 99: "MODE_MINOR", 100: "CMD_TIME", 101: "/", 102: "CMD_NUMERIC_TIME_SIG", 103: "CMD_DEFAULT_TIME_SIG", 104: "CMD_PARTIAL", 105: "CMD_TEMPO", 106: "=", 107: "CMD_STAFF", 108: "CMD_OTTAVA", 109: "#", 110: "-", 111: "CMD_STEMUP", 112: "CMD_STEMDOWN", 113: "CMD_STEMNEUTRAL", 114: "CMD_GRACE", 115: "{", 116: "}", 117: "CMD_TIMES", 118: "CMD_TUPLET", 120: "CMD_REPEAT", 121: "TREMOLO", 138: "CMD_REST", 139: "ART_STACCATO", 140: "ART_STACCATISSIMO", 141: "ART_TENUTO", 142: "ART_MARCATO", 143: "ART_ACCENT", 144: "ART_PORTATO", 145: "ORN_TRILL", 146: "ORN_TURN", 147: "ORN_MORDENT", 148: "ORN_PRALL", 149: "ORN_FERMATA", 150: "ORN_SHORTFERMATA", 151: "ORN_ARPEGGIO", 152: "ORN_BREATHE", 153: "ORN_CAESURA", 154: "DYN_PPP", 155: "DYN_PP", 156: "DYN_P", 157: "DYN_MP", 158: "DYN_MF", 159: "DYN_F", 160: "DYN_FF", 161: "DYN_FFF", 162: "DYN_SFZ", 163: "DYN_RFZ", 164: "DYN_SF", 165: "DYN_OTHER", 166: "DYN_FP", 167: "CMD_CRESC_BEGIN", 168: "CMD_DIM_BEGIN", 169: "CMD_DYNAMICS_END", 170: "CMD_SUSTAINON", 171: "CMD_SUSTAINOFF", 172: "~", 173: "(", 174: ")", 175: "[", 176: ":", 177: "CMD_CODA", 178: "CMD_SEGNO", 179: "CMD_GLISSANDO", 180: "CMD_ADDLYRICS", 182: "CMD_FIGURES", 184: "CMD_FIGURES_BELOW", 185: "CMD_FIGURES_ABOVE", 187: "FIG_OPEN", 189: "FIG_CLOSE", 191: "FIG_SKIP", 192: "FIG_NUMBER", 194: "FIG_DOT", 197: "FIG_BLANK", 199: "FIG_SHARP", 200: "FIG_FLAT", 201: "FIG_NATURAL", 203: "LYRIC_WORD", 204: "LYRIC_HYPHEN", 205: "LYRIC_SKIP", 206: "LYRIC_EXTENDER" },
54
+ productions_: [0, [3, 2], [4, 2], [4, 3], [4, 3], [4, 4], [4, 2], [4, 1], [8, 1], [8, 2], [6, 1], [6, 2], [6, 2], [6, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 3], [10, 4], [10, 3], [10, 3], [10, 3], [10, 3], [7, 1], [7, 3], [7, 2], [25, 1], [28, 0], [28, 1], [29, 1], [29, 1], [29, 2], [29, 2], [29, 2], [27, 1], [27, 4], [34, 0], [32, 1], [32, 3], [35, 2], [37, 0], [37, 2], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [38, 1], [47, 2], [48, 2], [49, 2], [49, 3], [49, 3], [50, 1], [46, 1], [39, 3], [39, 3], [39, 2], [39, 2], [57, 3], [62, 1], [62, 2], [60, 3], [60, 2], [60, 2], [60, 1], [65, 1], [65, 1], [65, 2], [65, 2], [58, 2], [58, 2], [70, 0], [70, 2], [40, 1], [40, 1], [40, 1], [41, 3], [41, 5], [41, 3], [41, 2], [41, 2], [42, 1], [42, 1], [42, 1], [42, 1], [42, 1], [42, 1], [42, 1], [42, 1], [42, 1], [42, 1], [42, 1], [89, 1], [89, 1], [89, 1], [89, 1], [79, 2], [80, 3], [96, 1], [97, 1], [97, 1], [81, 4], [87, 1], [88, 1], [82, 2], [83, 5], [83, 2], [83, 4], [84, 2], [85, 3], [85, 4], [85, 1], [86, 1], [86, 1], [86, 1], [43, 4], [43, 2], [43, 2], [44, 7], [44, 7], [119, 1], [119, 1], [45, 11], [45, 9], [45, 7], [59, 0], [59, 2], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [122, 1], [132, 1], [123, 1], [123, 1], [123, 1], [123, 1], [123, 1], [123, 1], [123, 2], [123, 2], [123, 2], [123, 2], [123, 2], [123, 2], [123, 1], [123, 1], [123, 1], [123, 1], [123, 1], [124, 1], [124, 1], [124, 1], [124, 1], [124, 1], [124, 1], [124, 1], [124, 1], [124, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [125, 1], [125, 1], [125, 1], [126, 1], [126, 1], [127, 1], [128, 1], [128, 1], [129, 1], [129, 1], [130, 2], [131, 2], [131, 2], [133, 2], [134, 1], [135, 1], [135, 1], [136, 2], [137, 1], [30, 4], [31, 4], [31, 4], [31, 4], [183, 0], [183, 2], [186, 4], [186, 2], [190, 0], [190, 2], [193, 0], [193, 2], [188, 1], [188, 2], [195, 2], [195, 2], [195, 1], [196, 0], [196, 1], [198, 1], [198, 1], [198, 1], [181, 0], [181, 2], [202, 1], [202, 1], [202, 1], [202, 1]],
55
55
  performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {
56
56
  var $0 = $$.length - 1;
57
57
  switch (yystate) {
@@ -71,15 +71,15 @@ var localGrammar = function() {
71
71
  this.$ = { metadata: void 0, measures: $$[$0] };
72
72
  break;
73
73
  case 10:
74
- case 109:
75
- case 126:
74
+ case 115:
75
+ case 132:
76
76
  this.$ = $$[$0];
77
77
  break;
78
78
  case 11:
79
79
  this.$ = mergeHeaders($$[$0 - 1], $$[$0]);
80
80
  break;
81
81
  case 12:
82
- case 68:
82
+ case 69:
83
83
  this.$ = $$[$0 - 1];
84
84
  break;
85
85
  case 13:
@@ -166,7 +166,7 @@ var localGrammar = function() {
166
166
  this.$ = { lyrics: [], figures: [] };
167
167
  break;
168
168
  case 32:
169
- case 224:
169
+ case 231:
170
170
  this.$ = $$[$0];
171
171
  break;
172
172
  case 33:
@@ -201,165 +201,184 @@ var localGrammar = function() {
201
201
  this.$ = { events: $$[$0 - 1], lyrics: $$[$0].lyrics, figures: $$[$0].figures };
202
202
  break;
203
203
  case 44:
204
- case 130:
205
- case 210:
206
- case 228:
204
+ case 136:
205
+ case 217:
206
+ case 235:
207
207
  this.$ = [];
208
208
  break;
209
209
  case 45:
210
210
  this.$ = $$[$0] === null ? $$[$0 - 1] : $$[$0 - 1].concat(Array.isArray($$[$0]) ? $$[$0] : [$$[$0]]);
211
211
  break;
212
- case 57:
212
+ case 58:
213
213
  this.$ = barlineEvent($$[$0].slice(1, -1));
214
214
  break;
215
- case 58:
215
+ case 59:
216
216
  this.$ = harmonyEvent($$[$0].slice(1, -1));
217
217
  break;
218
- case 59:
218
+ case 60:
219
219
  this.$ = markupEvent(unq($$[$0]));
220
220
  break;
221
- case 60:
221
+ case 61:
222
222
  this.$ = markupEvent(unq($$[$0]), "above");
223
223
  break;
224
- case 61:
224
+ case 62:
225
225
  this.$ = markupEvent(unq($$[$0]), "below");
226
226
  break;
227
- case 62:
227
+ case 63:
228
228
  this.$ = dynamicEvent($$[$0].type);
229
229
  break;
230
- case 63:
230
+ case 64:
231
231
  this.$ = { type: "pitchReset" };
232
232
  break;
233
- case 64:
234
233
  case 65:
234
+ case 66:
235
235
  currentDuration = $$[$0 - 1];
236
236
  this.$ = noteEvent($$[$0 - 2], $$[$0 - 1], $$[$0]);
237
237
  break;
238
- case 66:
239
238
  case 67:
239
+ case 68:
240
240
  this.$ = noteEvent($$[$0 - 1], currentDuration, $$[$0]);
241
241
  break;
242
- case 69:
243
- case 125:
244
- case 218:
245
- this.$ = [$$[$0]];
246
- break;
247
242
  case 70:
248
243
  case 131:
249
- case 211:
250
- case 219:
251
- case 229:
252
- this.$ = $$[$0 - 1].concat([$$[$0]]);
244
+ case 225:
245
+ this.$ = [$$[$0]];
253
246
  break;
254
247
  case 71:
255
- this.$ = { ...parsePitch($$[$0 - 2], $$[$0 - 1]), courtesy: true };
248
+ case 218:
249
+ case 226:
250
+ case 236:
251
+ this.$ = $$[$0 - 1].concat([$$[$0]]);
256
252
  break;
257
253
  case 72:
258
- this.$ = { ...parsePitch($$[$0 - 1], 0), courtesy: true };
254
+ this.$ = { ...parsePitch($$[$0 - 2], $$[$0 - 1]), courtesy: true };
259
255
  break;
260
256
  case 73:
261
- this.$ = parsePitch($$[$0 - 1], $$[$0]);
257
+ this.$ = { ...parsePitch($$[$0 - 1], 0), courtesy: true };
262
258
  break;
263
259
  case 74:
264
- this.$ = parsePitch($$[$0], 0);
260
+ this.$ = parsePitch($$[$0 - 1], $$[$0]);
265
261
  break;
266
262
  case 75:
267
- this.$ = 1;
263
+ this.$ = parsePitch($$[$0], 0);
268
264
  break;
269
265
  case 76:
270
- this.$ = -1;
266
+ this.$ = 1;
271
267
  break;
272
268
  case 77:
273
- this.$ = $$[$0 - 1] + 1;
269
+ this.$ = -1;
274
270
  break;
275
271
  case 78:
276
- this.$ = $$[$0 - 1] - 1;
272
+ this.$ = $$[$0 - 1] + 1;
277
273
  break;
278
274
  case 79:
279
- this.$ = duration(Number($$[$0 - 1]), $$[$0]);
275
+ this.$ = $$[$0 - 1] - 1;
280
276
  break;
281
277
  case 80:
282
- case 216:
283
- this.$ = 0;
278
+ this.$ = duration(Number($$[$0 - 1]), $$[$0]);
284
279
  break;
285
280
  case 81:
286
- case 217:
287
- this.$ = $$[$0 - 1] + 1;
281
+ this.$ = duration(0.5, $$[$0]);
288
282
  break;
289
283
  case 82:
290
- currentDuration = $$[$0 - 1];
291
- this.$ = restEvent($$[$0 - 1], { fullMeasure: $$[$0 - 2] === "R" });
284
+ case 223:
285
+ this.$ = 0;
292
286
  break;
293
287
  case 83:
294
- currentDuration = $$[$0 - 1];
295
- this.$ = restEvent($$[$0 - 1], { invisible: true });
288
+ case 224:
289
+ this.$ = $$[$0 - 1] + 1;
296
290
  break;
297
291
  case 84:
298
- this.$ = restEvent(currentDuration, { fullMeasure: $$[$0 - 1] === "R" });
292
+ currentHeadShape = "x";
293
+ xNotePending = true;
294
+ this.$ = null;
299
295
  break;
300
296
  case 85:
301
- this.$ = restEvent(currentDuration, { invisible: true });
297
+ currentHeadShape = "slash";
298
+ this.$ = null;
302
299
  break;
303
300
  case 86:
304
- this.$ = contextChange({ clef: $$[$0] });
301
+ currentHeadShape = void 0;
302
+ this.$ = null;
305
303
  break;
306
304
  case 87:
307
- this.$ = contextChange({ key: $$[$0] });
305
+ currentDuration = $$[$0 - 1];
306
+ this.$ = restEvent($$[$0 - 1], { fullMeasure: $$[$0 - 2] === "R", marks: $$[$0].length ? $$[$0] : void 0 });
308
307
  break;
309
308
  case 88:
310
- this.$ = contextChange({ time: $$[$0] });
309
+ currentDuration = $$[$0 - 3];
310
+ this.$ = restEvent($$[$0 - 3], { fullMeasure: $$[$0 - 4] === "R", multiMeasure: Number($$[$0 - 1]), marks: $$[$0].length ? $$[$0] : void 0 });
311
311
  break;
312
312
  case 89:
313
- this.$ = contextChange({ partial: $$[$0] });
313
+ currentDuration = $$[$0 - 1];
314
+ this.$ = restEvent($$[$0 - 1], { invisible: true, marks: $$[$0].length ? $$[$0] : void 0 });
314
315
  break;
315
316
  case 90:
316
- this.$ = contextChange({ tempo: $$[$0] });
317
+ this.$ = restEvent(currentDuration, { fullMeasure: true, marks: $$[$0].length ? $$[$0] : void 0 });
317
318
  break;
318
319
  case 91:
319
- this.$ = contextChange({ staff: $$[$0] });
320
+ this.$ = restEvent(currentDuration, { invisible: true, marks: $$[$0].length ? $$[$0] : void 0 });
320
321
  break;
321
322
  case 92:
322
- this.$ = contextChange({ ottava: $$[$0] });
323
+ this.$ = contextChange({ clef: $$[$0] });
323
324
  break;
324
325
  case 93:
325
- this.$ = contextChange({ stemDirection: $$[$0] });
326
+ this.$ = contextChange({ key: $$[$0] });
326
327
  break;
327
328
  case 94:
329
+ this.$ = contextChange({ time: $$[$0] });
330
+ break;
328
331
  case 95:
329
- this.$ = null;
332
+ this.$ = contextChange({ partial: $$[$0] });
330
333
  break;
331
334
  case 96:
332
- this.$ = contextChange({ omit: $$[$0] });
335
+ this.$ = contextChange({ tempo: $$[$0] });
333
336
  break;
334
337
  case 97:
335
- this.$ = { timeSignature: true };
338
+ this.$ = contextChange({ staff: $$[$0] });
336
339
  break;
337
340
  case 98:
338
- this.$ = { timeSignature: false };
341
+ this.$ = contextChange({ ottava: $$[$0] });
339
342
  break;
340
343
  case 99:
341
- this.$ = { barLine: true };
344
+ this.$ = contextChange({ stemDirection: $$[$0] });
342
345
  break;
343
346
  case 100:
347
+ case 101:
348
+ this.$ = null;
349
+ break;
350
+ case 102:
351
+ this.$ = contextChange({ omit: $$[$0] });
352
+ break;
353
+ case 103:
354
+ this.$ = { timeSignature: true };
355
+ break;
356
+ case 104:
357
+ this.$ = { timeSignature: false };
358
+ break;
359
+ case 105:
360
+ this.$ = { barLine: true };
361
+ break;
362
+ case 106:
344
363
  this.$ = { barLine: false };
345
364
  break;
346
- case 101:
365
+ case 107:
347
366
  this.$ = $$[$0].slice(1, -1);
348
367
  break;
349
- case 102:
368
+ case 108:
350
369
  currentKey = keySignature($$[$0 - 1].phonet, $$[$0 - 1].accidental, $$[$0]);
351
370
  this.$ = currentKey;
352
371
  break;
353
- case 103:
372
+ case 109:
354
373
  this.$ = parsePitchName($$[$0]);
355
374
  break;
356
- case 104:
375
+ case 110:
357
376
  this.$ = "major";
358
377
  break;
359
- case 105:
378
+ case 111:
360
379
  this.$ = "minor";
361
380
  break;
362
- case 106:
381
+ case 112:
363
382
  const num = Number($$[$0 - 2]);
364
383
  const den = Number($$[$0]);
365
384
  const timeSig = fraction(num, den);
@@ -373,280 +392,289 @@ var localGrammar = function() {
373
392
  currentTimeSig = timeSig;
374
393
  this.$ = currentTimeSig;
375
394
  break;
376
- case 107:
395
+ case 113:
377
396
  numericTimeSignature = true;
378
397
  this.$ = null;
379
398
  break;
380
- case 108:
399
+ case 114:
381
400
  numericTimeSignature = false;
382
401
  this.$ = null;
383
402
  break;
384
- case 110:
403
+ case 116:
385
404
  this.$ = { text: unq($$[$0 - 3]), beat: $$[$0 - 2], bpm: Number($$[$0]) };
386
405
  break;
387
- case 111:
406
+ case 117:
388
407
  this.$ = { text: unq($$[$0]) };
389
408
  break;
390
- case 112:
409
+ case 118:
391
410
  this.$ = { beat: $$[$0 - 2], bpm: Number($$[$0]) };
392
411
  break;
393
- case 113:
412
+ case 119:
394
413
  currentStaff = Number($$[$0].slice(1, -1));
395
414
  this.$ = currentStaff;
396
415
  break;
397
- case 114:
416
+ case 120:
398
417
  currentOttava = Number($$[$0]);
399
418
  this.$ = currentOttava;
400
419
  break;
401
- case 115:
420
+ case 121:
402
421
  currentOttava = -Number($$[$0]);
403
422
  this.$ = currentOttava;
404
423
  break;
405
- case 116:
424
+ case 122:
406
425
  currentOttava = 0;
407
426
  this.$ = 0;
408
427
  break;
409
- case 117:
428
+ case 123:
410
429
  this.$ = "up";
411
430
  break;
412
- case 118:
431
+ case 124:
413
432
  this.$ = "down";
414
433
  break;
415
- case 119:
434
+ case 125:
416
435
  this.$ = "auto";
417
436
  break;
418
- case 120:
437
+ case 126:
419
438
  this.$ = $$[$0 - 1].map((e) => e.type === "note" || e.type === "rest" ? { ...e, grace: true } : e);
420
439
  break;
421
- case 121:
422
- case 122:
440
+ case 127:
441
+ case 128:
423
442
  this.$ = { ...$$[$0], grace: true };
424
443
  break;
425
- case 123:
444
+ case 129:
426
445
  this.$ = timesEvent(fraction(Number($$[$0 - 5]), Number($$[$0 - 3])), $$[$0 - 1].filter((e) => e.type === "note" || e.type === "rest" || e.type === "context"));
427
446
  break;
428
- case 124:
429
- this.$ = tupletEvent(fraction(Number($$[$0 - 3]), Number($$[$0 - 5])), $$[$0 - 1].filter((e) => e.type === "note" || e.type === "rest" || e.type === "context"));
447
+ case 130:
448
+ this.$ = tupletEvent(fraction(Number($$[$0 - 3]), Number($$[$0 - 5])), $$[$0 - 1].filter((e) => e.type === "note" || e.type === "rest" || e.type === "context" || e.type === "tuplet"));
430
449
  break;
431
- case 127:
432
- currentDuration = $$[$0 - 3];
433
- this.$ = tremoloEvent($$[$0 - 4], $$[$0 - 2], Number($$[$0 - 6]), $$[$0 - 3].division);
450
+ case 133:
451
+ currentDuration = $$[$0 - 5];
452
+ this.$ = tremoloEvent($$[$0 - 6], $$[$0 - 3], Number($$[$0 - 8]), $$[$0 - 5].division, $$[$0 - 4], $$[$0 - 1]);
434
453
  break;
435
- case 128:
436
- currentDuration = $$[$0 - 2];
437
- this.$ = tremoloEvent($$[$0 - 3], $$[$0 - 1], Number($$[$0 - 5]), $$[$0 - 2].division);
454
+ case 134:
455
+ currentDuration = $$[$0 - 3];
456
+ this.$ = tremoloEvent($$[$0 - 4], $$[$0 - 1], Number($$[$0 - 6]), $$[$0 - 3].division, $$[$0 - 2], []);
438
457
  break;
439
- case 129:
458
+ case 135:
440
459
  this.$ = tremoloEvent($$[$0 - 2], $$[$0 - 1], Number($$[$0 - 4]), currentDuration.division);
441
460
  break;
442
- case 148:
461
+ case 137:
462
+ this.$ = $$[$0] === null ? $$[$0 - 1] : $$[$0 - 1].concat([$$[$0]]);
463
+ break;
464
+ case 154:
443
465
  this.$ = { pitchedRest: true };
444
466
  break;
445
- case 149:
446
467
  case 155:
447
- case 162:
468
+ case 161:
469
+ case 168:
448
470
  this.$ = articulation("staccato");
449
471
  break;
450
- case 150:
451
- case 159:
472
+ case 156:
473
+ case 165:
452
474
  this.$ = articulation("staccatissimo");
453
475
  break;
454
- case 151:
455
- case 160:
456
- case 163:
476
+ case 157:
477
+ case 166:
478
+ case 169:
457
479
  this.$ = articulation("tenuto");
458
480
  break;
459
- case 152:
460
- case 157:
461
- case 164:
481
+ case 158:
482
+ case 163:
483
+ case 170:
462
484
  this.$ = articulation("marcato");
463
485
  break;
464
- case 153:
465
- case 158:
466
- case 161:
486
+ case 159:
487
+ case 164:
488
+ case 167:
467
489
  this.$ = articulation("accent");
468
490
  break;
469
- case 154:
470
- case 156:
471
- case 165:
491
+ case 160:
492
+ case 162:
493
+ case 171:
472
494
  this.$ = articulation("portato");
473
495
  break;
474
- case 166:
496
+ case 172:
475
497
  this.$ = ornament("trill");
476
498
  break;
477
- case 167:
499
+ case 173:
478
500
  this.$ = ornament("turn");
479
501
  break;
480
- case 168:
502
+ case 174:
481
503
  this.$ = ornament("mordent");
482
504
  break;
483
- case 169:
505
+ case 175:
484
506
  this.$ = ornament("prall");
485
507
  break;
486
- case 170:
508
+ case 176:
487
509
  this.$ = ornament("fermata");
488
510
  break;
489
- case 171:
511
+ case 177:
490
512
  this.$ = ornament("shortFermata");
491
513
  break;
492
- case 172:
514
+ case 178:
493
515
  this.$ = ornament("arpeggio");
494
516
  break;
495
- case 173:
517
+ case 179:
496
518
  this.$ = ornament("breath");
497
519
  break;
498
- case 174:
520
+ case 180:
521
+ this.$ = ornament("caesura");
522
+ break;
523
+ case 181:
499
524
  this.$ = dynamic("ppp");
500
525
  break;
501
- case 175:
526
+ case 182:
502
527
  this.$ = dynamic("pp");
503
528
  break;
504
- case 176:
529
+ case 183:
505
530
  this.$ = dynamic("p");
506
531
  break;
507
- case 177:
532
+ case 184:
508
533
  this.$ = dynamic("mp");
509
534
  break;
510
- case 178:
535
+ case 185:
511
536
  this.$ = dynamic("mf");
512
537
  break;
513
- case 179:
538
+ case 186:
514
539
  this.$ = dynamic("f");
515
540
  break;
516
- case 180:
541
+ case 187:
517
542
  this.$ = dynamic("ff");
518
543
  break;
519
- case 181:
544
+ case 188:
520
545
  this.$ = dynamic("fff");
521
546
  break;
522
- case 182:
547
+ case 189:
523
548
  this.$ = dynamic("sfz");
524
549
  break;
525
- case 183:
550
+ case 190:
526
551
  this.$ = dynamic("rfz");
527
552
  break;
528
- case 184:
553
+ case 191:
529
554
  this.$ = dynamic("sf");
530
555
  break;
531
- case 185:
556
+ case 192:
532
557
  this.$ = dynamic($$[$0].slice(1).toLowerCase());
533
558
  break;
534
- case 186:
559
+ case 193:
535
560
  this.$ = dynamic("fp");
536
561
  break;
537
- case 187:
562
+ case 194:
563
+ lastHairpin = "crescendo";
538
564
  this.$ = hairpin("crescendoStart");
539
565
  break;
540
- case 188:
566
+ case 195:
567
+ lastHairpin = "diminuendo";
541
568
  this.$ = hairpin("diminuendoStart");
542
569
  break;
543
- case 189:
544
- this.$ = hairpin("crescendoEnd");
570
+ case 196:
571
+ this.$ = hairpin(lastHairpin === "diminuendo" ? "diminuendoEnd" : "crescendoEnd");
572
+ lastHairpin = void 0;
545
573
  break;
546
- case 190:
574
+ case 197:
547
575
  this.$ = pedal("sustainOn");
548
576
  break;
549
- case 191:
577
+ case 198:
550
578
  this.$ = pedal("sustainOff");
551
579
  break;
552
- case 192:
580
+ case 199:
553
581
  this.$ = tie(true);
554
582
  break;
555
- case 193:
583
+ case 200:
556
584
  this.$ = slur(true);
557
585
  break;
558
- case 194:
586
+ case 201:
559
587
  this.$ = slur(false);
560
588
  break;
561
- case 195:
589
+ case 202:
562
590
  this.$ = beam(true);
563
591
  break;
564
- case 196:
592
+ case 203:
565
593
  this.$ = beam(false);
566
594
  break;
567
- case 197:
595
+ case 204:
568
596
  this.$ = { tremolo: Number($$[$0]) };
569
597
  break;
570
- case 198:
598
+ case 205:
571
599
  this.$ = { ...$$[$0], placement: "above" };
572
600
  break;
573
- case 199:
601
+ case 206:
574
602
  this.$ = { ...$$[$0], placement: "below" };
575
603
  break;
576
- case 200:
577
- case 201:
604
+ case 207:
605
+ case 208:
578
606
  const n = Number($$[$0]);
579
- if (n >= 1 && n <= 5) this.$ = fingering(n);
607
+ if (n >= 0 && n <= 9) this.$ = fingering(n);
580
608
  else this.$ = null;
581
609
  break;
582
- case 202:
610
+ case 209:
583
611
  this.$ = navigation("coda");
584
612
  break;
585
- case 203:
613
+ case 210:
586
614
  this.$ = navigation("segno");
587
615
  break;
588
- case 204:
616
+ case 211:
589
617
  this.$ = markupMark(unq($$[$0]));
590
618
  break;
591
- case 205:
619
+ case 212:
592
620
  this.$ = glissando();
593
621
  break;
594
- case 206:
622
+ case 213:
595
623
  this.$ = addlyricsLane($$[$0 - 1]);
596
624
  break;
597
- case 207:
598
- case 208:
625
+ case 214:
626
+ case 215:
599
627
  this.$ = figuresLane("below", $$[$0 - 1]);
600
628
  break;
601
- case 209:
629
+ case 216:
602
630
  this.$ = figuresLane("above", $$[$0 - 1]);
603
631
  break;
604
- case 212:
632
+ case 219:
605
633
  this.$ = { lines: $$[$0 - 2], duration: $$[$0] };
606
634
  break;
607
- case 213:
635
+ case 220:
608
636
  this.$ = { duration: $$[$0] };
609
637
  break;
610
- case 214:
611
- case 223:
638
+ case 221:
639
+ case 230:
612
640
  this.$ = void 0;
613
641
  break;
614
- case 215:
642
+ case 222:
615
643
  this.$ = { division: Number($$[$0 - 1]), dots: $$[$0] };
616
644
  break;
617
- case 220:
645
+ case 227:
618
646
  this.$ = $$[$0] ? { number: Number($$[$0 - 1]), accidental: $$[$0] } : { number: Number($$[$0 - 1]) };
619
647
  break;
620
- case 221:
648
+ case 228:
621
649
  this.$ = $$[$0] ? { accidental: $$[$0] } : {};
622
650
  break;
623
- case 222:
651
+ case 229:
624
652
  this.$ = { accidental: $$[$0] };
625
653
  break;
626
- case 225:
654
+ case 232:
627
655
  this.$ = "sharp";
628
656
  break;
629
- case 226:
657
+ case 233:
630
658
  this.$ = "flat";
631
659
  break;
632
- case 227:
660
+ case 234:
633
661
  this.$ = "natural";
634
662
  break;
635
- case 230:
663
+ case 237:
636
664
  this.$ = { text: $$[$0].charAt(0) === '"' ? unq($$[$0]) : $$[$0] };
637
665
  break;
638
- case 231:
666
+ case 238:
639
667
  this.$ = { hyphen: true };
640
668
  break;
641
- case 232:
669
+ case 239:
642
670
  this.$ = { skip: true };
643
671
  break;
644
- case 233:
672
+ case 240:
645
673
  this.$ = { extend: true };
646
674
  break;
647
675
  }
648
676
  },
649
- table: [o($V0, $V1, { 3: 1, 4: 2, 6: 3, 8: 4, 7: 5, 10: 6, 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 9: [1, 7], 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), { 1: [3] }, { 5: [1, 25] }, o($V0, $V1, { 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 7: 26, 8: 27, 10: 28, 9: $Ve, 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), o($V0, $V1, { 10: 6, 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 6: 30, 7: 31, 9: $Vf, 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), { 5: [2, 7], 26: $Vg }, o($Vh, [2, 10]), o($Vh, [2, 8]), o($Vi, [2, 27]), { 12: [1, 34] }, { 12: [1, 35] }, { 12: [1, 36] }, { 12: [1, 37] }, { 12: [1, 38] }, { 12: [1, 39] }, { 12: [1, 40] }, { 12: [1, 41] }, { 12: [1, 42] }, { 12: [1, 43] }, { 12: [1, 44] }, { 12: [1, 45] }, o($Vi, [2, 30], { 33: [1, 46] }), o($Vj, [2, 38], { 36: $Vk }), o($Vl, [2, 41]), o($Vl, [2, 31], { 28: 48, 38: 49, 29: 50, 39: 51, 40: 52, 41: 53, 42: 54, 43: 55, 44: 56, 45: 57, 46: 58, 47: 59, 48: 60, 49: 61, 30: 62, 31: 63, 56: 64, 59: 65, 73: 68, 74: 69, 75: 70, 76: 71, 77: 72, 78: 73, 79: 74, 80: 75, 81: 76, 82: 77, 83: 78, 55: 89, 9: $Vm, 50: $Vn, 51: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 60: $Vs, 63: $Vt, 71: $Vu, 72: $Vv, 84: $Vw, 85: $Vx, 86: $Vy, 87: $Vz, 88: $VA, 89: $VB, 94: $VC, 96: $VD, 97: $VE, 98: $VF, 99: $VG, 101: $VH, 102: $VI, 105: $VJ, 106: $VK, 107: $VL, 108: $VM, 111: $VN, 112: $VO, 114: $VP, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 173: $V11, 175: $V21, 177: $V31, 178: $V41 }), { 1: [2, 1] }, { 5: [2, 2], 26: $Vg }, o($V0, $V1, { 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 7: 125, 9: $Vf }), o($Vh, [2, 11]), o($V51, [2, 12], { 10: 126, 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), o($V0, $V1, { 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 10: 28, 7: 127, 8: 128, 9: $Ve, 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), { 5: [2, 6], 26: $Vg }, o($Vh, [2, 9]), o([9, 33, 36, 50, 51, 52, 53, 54, 60, 63, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 105, 106, 107, 108, 111, 112, 114, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 173, 175, 177, 178], $V1, { 27: 21, 32: 22, 35: 23, 37: 24, 25: 129, 5: $V61, 26: $V61 }), { 13: [1, 130] }, { 13: [1, 131] }, { 13: [1, 132] }, { 13: [1, 133] }, { 13: [1, 134] }, { 13: [1, 135] }, { 13: [1, 136] }, { 12: [1, 138], 13: [1, 137] }, { 13: [1, 139] }, { 13: [1, 140] }, { 13: [1, 141] }, { 13: [1, 142] }, o($V51, [2, 40], { 34: 143 }), o($V51, $V1, { 37: 24, 35: 144 }), o($Vl, [2, 43]), o($V71, [2, 45]), o($Vl, [2, 32], { 30: 145, 31: 146, 9: [1, 147], 173: $V11, 175: $V21, 177: $V31, 178: $V41 }), o($V71, [2, 46]), o($V71, [2, 47]), o($V71, [2, 48]), o($V71, [2, 49]), o($V71, [2, 50]), o($V71, [2, 51]), o($V71, [2, 52]), o($V71, [2, 53]), o($V71, [2, 54]), o($V71, [2, 55]), o($V71, [2, 56]), o($V81, [2, 33]), o($V81, [2, 34]), o($V91, $Va1, { 57: 148, 58: 149, 68: $Vb1 }), o($V91, $Va1, { 57: 151, 58: 152, 68: $Vb1 }), o($V91, $Va1, { 57: 153, 58: 154, 68: $Vb1 }), o($V91, $Va1, { 57: 155, 58: 156, 68: $Vb1 }), o($V71, [2, 86]), o($V71, [2, 87]), o($V71, [2, 88]), o($V71, [2, 89]), o($V71, [2, 90]), o($V71, [2, 91]), o($V71, [2, 92]), o($V71, [2, 93]), o($V71, [2, 94]), o($V71, [2, 95]), o($V71, [2, 96]), { 39: 158, 40: 159, 56: 64, 59: 65, 60: $Vs, 63: $Vt, 71: $Vu, 72: $Vv, 109: [1, 157] }, { 68: [1, 160] }, { 68: [1, 161] }, { 115: [1, 162] }, o($V71, [2, 63]), { 12: [1, 163] }, { 12: [1, 164] }, { 12: [1, 165] }, { 52: [1, 166] }, { 52: [1, 167] }, o($V71, [2, 62]), { 109: [1, 168] }, { 109: [1, 169] }, { 109: [1, 170] }, { 109: [1, 171] }, { 59: 173, 61: 172, 63: $Vt }, o($Vc1, [2, 74], { 64: 174, 65: [1, 175], 66: [1, 176], 67: [1, 177] }), { 12: [1, 178] }, { 63: [1, 180], 90: 179 }, { 68: [1, 181] }, { 57: 182, 68: $Vb1 }, { 12: [1, 183], 57: 184, 68: $Vb1 }, { 12: [1, 185] }, o($V71, [2, 116], { 103: [1, 186] }), o($V71, [2, 117]), o($V71, [2, 118]), o($V71, [2, 119]), o($V71, [2, 107]), o($V71, [2, 108]), o($V71, [2, 97]), o($V71, [2, 98]), o($V71, [2, 99]), o($V71, [2, 100]), o($Vc1, [2, 174]), o($Vc1, [2, 175]), o($Vc1, [2, 176]), o($Vc1, [2, 177]), o($Vc1, [2, 178]), o($Vc1, [2, 179]), o($Vc1, [2, 180]), o($Vc1, [2, 181]), o($Vc1, [2, 182]), o($Vc1, [2, 183]), o($Vc1, [2, 184]), o($Vc1, [2, 185]), o($Vc1, [2, 186]), { 5: [2, 3], 26: $Vg }, o($Vh, [2, 13]), { 5: [2, 4], 26: $Vg }, o($V0, $V1, { 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 7: 187, 9: $Vf }), o($Vi, [2, 28]), o($Vh, [2, 14]), o($Vh, [2, 15]), o($Vh, [2, 16]), o($Vh, [2, 17]), o($Vh, [2, 18]), o($Vh, [2, 19]), o($Vh, [2, 20]), o($Vh, [2, 21]), { 13: [1, 188] }, o($Vh, [2, 23]), o($Vh, [2, 24]), o($Vh, [2, 25]), o($Vh, [2, 26]), o($V51, $V1, { 35: 23, 37: 24, 32: 189 }), o($Vl, [2, 42]), o($V81, [2, 35]), o($V81, [2, 36]), o($V81, [2, 37]), o($Vc1, $Va1, { 58: 190 }), o($Vd1, [2, 66], { 116: 191, 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($VO1, [2, 80], { 69: 244 }), o($Vc1, $Va1, { 58: 245 }), o($Vd1, [2, 67], { 116: 191, 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($Vc1, $Va1, { 58: 246 }), o($Vd1, [2, 84], { 116: 191, 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($Vc1, $Va1, { 58: 247 }), o($Vd1, [2, 85], { 116: 191, 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($VP1, $V1, { 37: 248 }), o($V71, [2, 121]), o($V71, [2, 122]), { 95: [1, 249] }, { 95: [1, 250] }, { 68: [1, 251] }, o($V71, [2, 57]), o($V71, [2, 58]), o($V71, [2, 59]), { 12: [1, 252] }, { 12: [1, 253] }, o($VQ1, [2, 228], { 174: 254 }), o($VR1, $VS1, { 176: 255 }), o($VR1, $VS1, { 176: 256 }), o($VR1, $VS1, { 176: 257 }), { 59: 259, 62: [1, 258], 63: $Vt }, o($VT1, [2, 69]), o($Vc1, [2, 73], { 65: [1, 260], 66: [1, 261], 67: [1, 262] }), o($Vc1, [2, 72]), o($VU1, [2, 75]), o($VU1, [2, 76]), o($V71, [2, 101]), { 91: 263, 92: [1, 264], 93: [1, 265] }, o([92, 93], [2, 103]), { 95: [1, 266] }, o($V71, [2, 109]), o($V71, [2, 111], { 57: 267, 68: $Vb1 }), { 100: [1, 268] }, o($V71, [2, 113]), { 68: [1, 269], 104: [1, 270] }, { 5: [2, 5], 26: $Vg }, o($Vh, [2, 22]), o($Vj, [2, 39], { 36: $Vk }), o($Vd1, [2, 64], { 116: 191, 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($Vc1, [2, 131]), o($Vc1, [2, 132]), o($Vc1, [2, 133]), o($Vc1, [2, 134]), o($Vc1, [2, 135]), o($Vc1, [2, 136]), o($Vc1, [2, 137]), o($Vc1, [2, 138]), o($Vc1, [2, 139]), o($Vc1, [2, 140]), o($Vc1, [2, 141]), o($Vc1, [2, 142]), o($Vc1, [2, 143]), o($Vc1, [2, 144]), o($Vc1, [2, 145]), o($Vc1, [2, 146]), o($Vc1, [2, 147]), o($Vc1, [2, 149]), o($Vc1, [2, 150]), o($Vc1, [2, 151]), o($Vc1, [2, 152]), o($Vc1, [2, 153]), o($Vc1, [2, 154]), o([5, 9, 13, 26, 33, 36, 50, 51, 52, 60, 63, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 101, 102, 105, 106, 107, 108, 110, 111, 112, 114, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 175, 177, 178], [2, 163], { 53: [1, 273], 54: [1, 272], 62: [1, 274], 65: [1, 275], 68: [1, 277], 70: [1, 271], 104: [1, 276] }), o($Vc1, [2, 161]), o($Vc1, [2, 162]), o($Vd1, [2, 164], { 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 116: 278, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($Vd1, [2, 165], { 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 116: 279, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($Vc1, [2, 166]), o($Vc1, [2, 167]), o($Vc1, [2, 168]), o($Vc1, [2, 169]), o($Vc1, [2, 170]), o($Vc1, [2, 171]), o($Vc1, [2, 172]), o($Vc1, [2, 173]), o($Vc1, [2, 187]), o($Vc1, [2, 188]), o($Vc1, [2, 189]), o($Vc1, [2, 190]), o($Vc1, [2, 191]), o($Vc1, [2, 192]), o($Vc1, [2, 193]), o($Vc1, [2, 194]), o($Vc1, [2, 195]), o($Vc1, [2, 196]), { 68: [1, 280] }, o($Vc1, [2, 148]), o($Vc1, [2, 201]), o($Vc1, [2, 202]), o($Vc1, [2, 203]), { 12: [1, 281] }, o($Vc1, [2, 205]), o([5, 9, 13, 26, 33, 36, 50, 51, 52, 53, 54, 60, 62, 63, 68, 71, 72, 84, 85, 86, 87, 88, 89, 94, 96, 97, 98, 99, 100, 101, 102, 104, 105, 106, 107, 108, 110, 111, 112, 114, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 175, 177, 178], [2, 79], { 70: [1, 282] }), o($Vd1, [2, 65], { 116: 191, 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($Vd1, [2, 82], { 116: 191, 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), o($Vd1, [2, 83], { 116: 191, 117: 192, 118: 193, 55: 194, 119: 195, 120: 196, 121: 197, 122: 198, 123: 199, 124: 200, 125: 201, 126: 202, 127: 203, 128: 204, 129: 205, 130: 206, 131: 207, 13: $Ve1, 52: $Vf1, 53: $Vg1, 54: $Vh1, 62: $Vi1, 68: $Vj1, 70: $Vk1, 104: $Vl1, 132: $Vm1, 133: $Vn1, 134: $Vo1, 135: $Vp1, 136: $Vq1, 137: $Vr1, 138: $Vs1, 139: $Vt1, 140: $Vu1, 141: $Vv1, 142: $Vw1, 143: $Vx1, 144: $Vy1, 145: $Vz1, 146: $VA1, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01, 160: $VB1, 161: $VC1, 162: $VD1, 163: $VE1, 164: $VF1, 165: $VG1, 166: $VH1, 167: $VI1, 168: $VJ1, 169: $VK1, 170: $VL1, 171: $VM1, 172: $VN1 }), { 9: $Vm, 38: 49, 39: 51, 40: 52, 41: 53, 42: 54, 43: 55, 44: 56, 45: 57, 46: 58, 47: 59, 48: 60, 49: 61, 50: $Vn, 51: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 55: 89, 56: 64, 59: 65, 60: $Vs, 63: $Vt, 71: $Vu, 72: $Vv, 73: 68, 74: 69, 75: 70, 76: 71, 77: 72, 78: 73, 79: 74, 80: 75, 81: 76, 82: 77, 83: 78, 84: $Vw, 85: $Vx, 86: $Vy, 87: $Vz, 88: $VA, 89: $VB, 94: $VC, 96: $VD, 97: $VE, 98: $VF, 99: $VG, 101: $VH, 102: $VI, 105: $VJ, 106: $VK, 107: $VL, 108: $VM, 110: [1, 283], 111: $VN, 112: $VO, 114: $VP, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01 }, { 68: [1, 284] }, { 68: [1, 285] }, { 109: [1, 286] }, o($V71, [2, 60]), o($V71, [2, 61]), { 110: [1, 287], 195: 288, 196: [1, 289], 197: [1, 290], 198: [1, 291], 199: [1, 292] }, { 110: [1, 293], 179: 294, 180: $VV1, 184: $VW1 }, { 110: [1, 297], 179: 294, 180: $VV1, 184: $VW1 }, { 110: [1, 298], 179: 294, 180: $VV1, 184: $VW1 }, o($Vc1, [2, 68]), o($VT1, [2, 70]), o($Vc1, [2, 71]), o($VU1, [2, 77]), o($VU1, [2, 78]), o($V71, [2, 102]), o($V71, [2, 104]), o($V71, [2, 105]), { 68: [1, 299] }, { 100: [1, 300] }, { 68: [1, 301] }, o($V71, [2, 114]), { 68: [1, 302] }, o($Vc1, [2, 155]), o($Vc1, [2, 156]), o($Vc1, [2, 157]), o($Vc1, [2, 158]), o($Vc1, [2, 159]), o($Vc1, [2, 160]), o($Vc1, [2, 200]), o($Vc1, [2, 198]), o($Vc1, [2, 199]), o($Vc1, [2, 197]), o($Vc1, [2, 204]), o($VO1, [2, 81]), o($V71, [2, 120]), { 109: [1, 303] }, { 109: [1, 304] }, { 56: 307, 59: 306, 60: $Vs, 63: $Vt, 113: 305 }, o($V81, [2, 206]), o($VQ1, [2, 229]), o($VQ1, [2, 230]), o($VQ1, [2, 231]), o($VQ1, [2, 232]), o($VQ1, [2, 233]), o($V81, [2, 207]), o($VR1, [2, 211]), { 181: 308, 185: $VX1, 188: 309, 190: $VY1, 191: 312, 192: $VZ1, 193: $V_1, 194: $V$1 }, o($VR1, $V02, { 183: 316, 185: $V12 }), o($V81, [2, 208]), o($V81, [2, 209]), o($V71, [2, 106]), { 68: [1, 318] }, o($V71, [2, 112]), o($V71, [2, 115]), o($VP1, $V1, { 37: 319 }), o($VP1, $V1, { 37: 320 }), { 56: 307, 57: 321, 59: 306, 60: $Vs, 63: $Vt, 68: $Vb1, 113: 322 }, o($V22, [2, 125]), o($V22, [2, 126]), { 182: [1, 323], 185: $VX1, 188: 324, 190: $VY1, 191: 312, 192: $VZ1, 193: $V_1, 194: $V$1 }, o($V32, [2, 218]), o($V42, $V52, { 189: 325, 191: 326, 192: $VZ1, 193: $V_1, 194: $V$1 }), o($V42, $V52, { 191: 326, 189: 327, 192: $VZ1, 193: $V_1, 194: $V$1 }), o($V32, [2, 222]), o($V32, [2, 225]), o($V32, [2, 226]), o($V32, [2, 227]), o($VR1, [2, 213]), o($V62, [2, 216], { 186: 328 }), o($V71, [2, 110]), { 9: $Vm, 38: 49, 39: 51, 40: 52, 41: 53, 42: 54, 43: 55, 44: 56, 45: 57, 46: 58, 47: 59, 48: 60, 49: 61, 50: $Vn, 51: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 55: 89, 56: 64, 59: 65, 60: $Vs, 63: $Vt, 71: $Vu, 72: $Vv, 73: 68, 74: 69, 75: 70, 76: 71, 77: 72, 78: 73, 79: 74, 80: 75, 81: 76, 82: 77, 83: 78, 84: $Vw, 85: $Vx, 86: $Vy, 87: $Vz, 88: $VA, 89: $VB, 94: $VC, 96: $VD, 97: $VE, 98: $VF, 99: $VG, 101: $VH, 102: $VI, 105: $VJ, 106: $VK, 107: $VL, 108: $VM, 110: [1, 329], 111: $VN, 112: $VO, 114: $VP, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01 }, { 9: $Vm, 38: 49, 39: 51, 40: 52, 41: 53, 42: 54, 43: 55, 44: 56, 45: 57, 46: 58, 47: 59, 48: 60, 49: 61, 50: $Vn, 51: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 55: 89, 56: 64, 59: 65, 60: $Vs, 63: $Vt, 71: $Vu, 72: $Vv, 73: 68, 74: 69, 75: 70, 76: 71, 77: 72, 78: 73, 79: 74, 80: 75, 81: 76, 82: 77, 83: 78, 84: $Vw, 85: $Vx, 86: $Vy, 87: $Vz, 88: $VA, 89: $VB, 94: $VC, 96: $VD, 97: $VE, 98: $VF, 99: $VG, 101: $VH, 102: $VI, 105: $VJ, 106: $VK, 107: $VL, 108: $VM, 110: [1, 330], 111: $VN, 112: $VO, 114: $VP, 147: $VQ, 148: $VR, 149: $VS, 150: $VT, 151: $VU, 152: $VV, 153: $VW, 154: $VX, 155: $VY, 156: $VZ, 157: $V_, 158: $V$, 159: $V01 }, { 56: 307, 59: 306, 60: $Vs, 63: $Vt, 113: 331 }, { 110: [1, 332] }, o($VR1, $V02, { 183: 333, 185: $V12 }), o($V32, [2, 219]), o($V32, [2, 220]), o($V32, [2, 224]), o($V32, [2, 221]), o($VR1, [2, 215], { 187: [1, 334] }), o($V71, [2, 123]), o($V71, [2, 124]), { 57: 335, 68: $Vb1, 110: [1, 336] }, o($V71, [2, 129]), o($VR1, [2, 212]), o($V62, [2, 217]), { 110: [1, 337] }, o($V71, [2, 128]), o($V71, [2, 127])],
677
+ table: [o($V0, $V1, { 3: 1, 4: 2, 6: 3, 8: 4, 7: 5, 10: 6, 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 9: [1, 7], 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), { 1: [3] }, { 5: [1, 25] }, o($V0, $V1, { 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 7: 26, 8: 27, 10: 28, 9: $Ve, 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), o($V0, $V1, { 10: 6, 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 6: 30, 7: 31, 9: $Vf, 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), { 5: [2, 7], 26: $Vg }, o($Vh, [2, 10]), o($Vh, [2, 8]), o($Vi, [2, 27]), { 12: [1, 34] }, { 12: [1, 35] }, { 12: [1, 36] }, { 12: [1, 37] }, { 12: [1, 38] }, { 12: [1, 39] }, { 12: [1, 40] }, { 12: [1, 41] }, { 12: [1, 42] }, { 12: [1, 43] }, { 12: [1, 44] }, { 12: [1, 45] }, o($Vi, [2, 30], { 33: [1, 46] }), o($Vj, [2, 38], { 36: $Vk }), o($Vl, [2, 41]), o($Vl, [2, 31], { 28: 48, 38: 49, 29: 50, 39: 51, 40: 52, 41: 53, 42: 54, 43: 55, 44: 56, 45: 57, 46: 58, 47: 59, 48: 60, 49: 61, 50: 62, 30: 63, 31: 64, 57: 65, 60: 66, 79: 72, 80: 73, 81: 74, 82: 75, 83: 76, 84: 77, 85: 78, 86: 79, 87: 80, 88: 81, 89: 82, 56: 93, 9: $Vm, 51: $Vn, 52: $Vo, 53: $Vp, 54: $Vq, 55: $Vr, 61: $Vs, 64: $Vt, 73: $Vu, 74: $Vv, 75: $Vw, 76: $Vx, 78: $Vy, 90: $Vz, 91: $VA, 92: $VB, 93: $VC, 94: $VD, 95: $VE, 100: $VF, 102: $VG, 103: $VH, 104: $VI, 105: $VJ, 107: $VK, 108: $VL, 111: $VM, 112: $VN, 113: $VO, 114: $VP, 117: $VQ, 118: $VR, 120: $VS, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 180: $V41, 182: $V51, 184: $V61, 185: $V71 }), { 1: [2, 1] }, { 5: [2, 2], 26: $Vg }, o($V0, $V1, { 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 7: 129, 9: $Vf }), o($Vh, [2, 11]), o($V81, [2, 12], { 10: 130, 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), o($V0, $V1, { 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 10: 28, 7: 131, 8: 132, 9: $Ve, 11: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd }), { 5: [2, 6], 26: $Vg }, o($Vh, [2, 9]), o([9, 33, 36, 51, 52, 53, 54, 55, 61, 64, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 117, 118, 120, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 180, 182, 184, 185], $V1, { 27: 21, 32: 22, 35: 23, 37: 24, 25: 133, 5: $V91, 26: $V91 }), { 13: [1, 134] }, { 13: [1, 135] }, { 13: [1, 136] }, { 13: [1, 137] }, { 13: [1, 138] }, { 13: [1, 139] }, { 13: [1, 140] }, { 12: [1, 142], 13: [1, 141] }, { 13: [1, 143] }, { 13: [1, 144] }, { 13: [1, 145] }, { 13: [1, 146] }, o($V81, [2, 40], { 34: 147 }), o($V81, $V1, { 37: 24, 35: 148 }), o($Vl, [2, 43]), o($Va1, [2, 45]), o($Vl, [2, 32], { 30: 149, 31: 150, 9: [1, 151], 180: $V41, 182: $V51, 184: $V61, 185: $V71 }), o($Va1, [2, 46]), o($Va1, [2, 47]), o($Va1, [2, 48]), o($Va1, [2, 49]), o($Va1, [2, 50]), o($Va1, [2, 51]), o($Va1, [2, 52]), o($Va1, [2, 53]), o($Va1, [2, 54]), o($Va1, [2, 55]), o($Va1, [2, 56]), o($Va1, [2, 57]), o($Vb1, [2, 33]), o($Vb1, [2, 34]), o($Vc1, $Vd1, { 58: 152, 59: 153, 69: $Ve1, 71: $Vf1 }), o($Vc1, $Vd1, { 58: 156, 59: 157, 69: $Ve1, 71: $Vf1 }), o($Va1, [2, 84]), o($Va1, [2, 85]), o($Va1, [2, 86]), o($Vc1, $Vd1, { 58: 158, 59: 159, 69: $Ve1, 71: $Vf1 }), o($Vc1, $Vd1, { 58: 160, 59: 161, 69: $Ve1, 71: $Vf1 }), o($Va1, [2, 92]), o($Va1, [2, 93]), o($Va1, [2, 94]), o($Va1, [2, 95]), o($Va1, [2, 96]), o($Va1, [2, 97]), o($Va1, [2, 98]), o($Va1, [2, 99]), o($Va1, [2, 100]), o($Va1, [2, 101]), o($Va1, [2, 102]), { 39: 163, 41: 164, 57: 65, 60: 66, 61: $Vs, 64: $Vt, 76: $Vx, 78: $Vy, 115: [1, 162] }, { 69: [1, 165] }, { 69: [1, 166] }, { 121: [1, 167] }, o($Va1, [2, 64]), { 12: [1, 168] }, { 12: [1, 169] }, { 12: [1, 170] }, { 53: [1, 171] }, { 53: [1, 172] }, o($Va1, [2, 63]), { 115: [1, 173] }, { 115: [1, 174] }, { 115: [1, 175] }, { 115: [1, 176] }, { 60: 178, 62: 177, 64: $Vt }, o($Vg1, [2, 75], { 65: 179, 66: [1, 180], 67: [1, 181], 68: [1, 182] }), { 12: [1, 183] }, { 64: [1, 185], 96: 184 }, { 69: [1, 186] }, { 58: 187, 69: $Ve1, 71: $Vf1 }, { 12: [1, 188], 58: 189, 69: $Ve1, 71: $Vf1 }, { 12: [1, 190] }, o($Va1, [2, 122], { 109: [1, 191] }), o($Va1, [2, 123]), o($Va1, [2, 124]), o($Va1, [2, 125]), o($Va1, [2, 113]), o($Va1, [2, 114]), o($Va1, [2, 103]), o($Va1, [2, 104]), o($Va1, [2, 105]), o($Va1, [2, 106]), o($Vh1, [2, 181]), o($Vh1, [2, 182]), o($Vh1, [2, 183]), o($Vh1, [2, 184]), o($Vh1, [2, 185]), o($Vh1, [2, 186]), o($Vh1, [2, 187]), o($Vh1, [2, 188]), o($Vh1, [2, 189]), o($Vh1, [2, 190]), o($Vh1, [2, 191]), o($Vh1, [2, 192]), o($Vh1, [2, 193]), { 5: [2, 3], 26: $Vg }, o($Vh, [2, 13]), { 5: [2, 4], 26: $Vg }, o($V0, $V1, { 25: 8, 27: 21, 32: 22, 35: 23, 37: 24, 7: 192, 9: $Vf }), o($Vi, [2, 28]), o($Vh, [2, 14]), o($Vh, [2, 15]), o($Vh, [2, 16]), o($Vh, [2, 17]), o($Vh, [2, 18]), o($Vh, [2, 19]), o($Vh, [2, 20]), o($Vh, [2, 21]), { 13: [1, 193] }, o($Vh, [2, 23]), o($Vh, [2, 24]), o($Vh, [2, 25]), o($Vh, [2, 26]), o($V81, $V1, { 35: 23, 37: 24, 32: 194 }), o($Vl, [2, 42]), o($Vb1, [2, 35]), o($Vb1, [2, 36]), o($Vb1, [2, 37]), o($Vh1, $Vd1, { 59: 195 }), o($Vi1, [2, 67], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($VU1, $VV1, { 70: 250 }), o($VU1, $VV1, { 70: 251 }), o($Vh1, $Vd1, { 59: 252 }), o($Vi1, [2, 68], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($Vh1, $Vd1, { 59: 253, 77: [1, 254] }), o($Vi1, [2, 90], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($Vh1, $Vd1, { 59: 255 }), o($Vi1, [2, 91], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($VW1, $V1, { 37: 256 }), o($Va1, [2, 127]), o($Va1, [2, 128]), { 101: [1, 257] }, { 101: [1, 258] }, { 69: [1, 259] }, o($Va1, [2, 58]), o($Va1, [2, 59]), o($Va1, [2, 60]), { 12: [1, 260] }, { 12: [1, 261] }, o($VX1, [2, 235], { 181: 262 }), o($VY1, $VZ1, { 183: 263 }), o($VY1, $VZ1, { 183: 264 }), o($VY1, $VZ1, { 183: 265 }), { 60: 267, 63: [1, 266], 64: $Vt }, o($V_1, [2, 70]), o($Vg1, [2, 74], { 66: [1, 268], 67: [1, 269], 68: [1, 270] }), o($Vg1, [2, 73]), o($V$1, [2, 76]), o($V$1, [2, 77]), o($Va1, [2, 107]), { 97: 271, 98: [1, 272], 99: [1, 273] }, o([98, 99], [2, 109]), { 101: [1, 274] }, o($Va1, [2, 115]), o($Va1, [2, 117], { 58: 275, 69: $Ve1, 71: $Vf1 }), { 106: [1, 276] }, o($Va1, [2, 119]), { 69: [1, 277], 110: [1, 278] }, { 5: [2, 5], 26: $Vg }, o($Vh, [2, 22]), o($Vj, [2, 39], { 36: $Vk }), o($Vi1, [2, 65], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($Vh1, [2, 137]), o($Vh1, [2, 138]), o($Vh1, [2, 139]), o($Vh1, [2, 140]), o($Vh1, [2, 141]), o($Vh1, [2, 142]), o($Vh1, [2, 143]), o($Vh1, [2, 144]), o($Vh1, [2, 145]), o($Vh1, [2, 146]), o($Vh1, [2, 147]), o($Vh1, [2, 148]), o($Vh1, [2, 149]), o($Vh1, [2, 150]), o($Vh1, [2, 151]), o($Vh1, [2, 152]), o($Vh1, [2, 153]), o($Vh1, [2, 155]), o($Vh1, [2, 156]), o($Vh1, [2, 157]), o($Vh1, [2, 158]), o($Vh1, [2, 159]), o($Vh1, [2, 160]), o([5, 9, 13, 26, 33, 36, 51, 52, 53, 61, 64, 73, 74, 75, 76, 78, 90, 91, 92, 93, 94, 95, 100, 102, 103, 104, 105, 107, 108, 111, 112, 113, 114, 116, 117, 118, 120, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 182, 184, 185], [2, 169], { 54: [1, 281], 55: [1, 280], 63: [1, 282], 66: [1, 283], 69: [1, 285], 72: [1, 279], 110: [1, 284] }), o($Vh1, [2, 167]), o($Vh1, [2, 168]), o($Vi1, [2, 170], { 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 122: 286, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($Vi1, [2, 171], { 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 122: 287, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($Vh1, [2, 172]), o($Vh1, [2, 173]), o($Vh1, [2, 174]), o($Vh1, [2, 175]), o($Vh1, [2, 176]), o($Vh1, [2, 177]), o($Vh1, [2, 178]), o($Vh1, [2, 179]), o($Vh1, [2, 180]), o($Vh1, [2, 194]), o($Vh1, [2, 195]), o($Vh1, [2, 196]), o($Vh1, [2, 197]), o($Vh1, [2, 198]), o($Vh1, [2, 199]), o($Vh1, [2, 200]), o($Vh1, [2, 201]), o($Vh1, [2, 202]), o($Vh1, [2, 203]), { 69: [1, 288] }, o($Vh1, [2, 154]), o($Vh1, [2, 208]), o($Vh1, [2, 209]), o($Vh1, [2, 210]), { 12: [1, 289] }, o($Vh1, [2, 212]), o($V02, [2, 80], { 72: $V12 }), o($V02, [2, 81], { 72: $V12 }), o($Vi1, [2, 66], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($Vi1, [2, 87], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), { 69: [1, 291] }, o($Vi1, [2, 89], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), { 9: $Vm, 38: 49, 39: 51, 40: 52, 41: 53, 42: 54, 43: 55, 44: 56, 45: 57, 46: 58, 47: 59, 48: 60, 49: 61, 50: 62, 51: $Vn, 52: $Vo, 53: $Vp, 54: $Vq, 55: $Vr, 56: 93, 57: 65, 60: 66, 61: $Vs, 64: $Vt, 73: $Vu, 74: $Vv, 75: $Vw, 76: $Vx, 78: $Vy, 79: 72, 80: 73, 81: 74, 82: 75, 83: 76, 84: 77, 85: 78, 86: 79, 87: 80, 88: 81, 89: 82, 90: $Vz, 91: $VA, 92: $VB, 93: $VC, 94: $VD, 95: $VE, 100: $VF, 102: $VG, 103: $VH, 104: $VI, 105: $VJ, 107: $VK, 108: $VL, 111: $VM, 112: $VN, 113: $VO, 114: $VP, 116: [1, 292], 117: $VQ, 118: $VR, 120: $VS, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31 }, { 69: [1, 293] }, { 69: [1, 294] }, { 115: [1, 295] }, o($Va1, [2, 61]), o($Va1, [2, 62]), { 116: [1, 296], 202: 297, 203: [1, 298], 204: [1, 299], 205: [1, 300], 206: [1, 301] }, { 116: [1, 302], 186: 303, 187: $V22, 191: $V32 }, { 116: [1, 306], 186: 303, 187: $V22, 191: $V32 }, { 116: [1, 307], 186: 303, 187: $V22, 191: $V32 }, o($Vg1, [2, 69]), o($V_1, [2, 71]), o($Vg1, [2, 72]), o($V$1, [2, 78]), o($V$1, [2, 79]), o($Va1, [2, 108]), o($Va1, [2, 110]), o($Va1, [2, 111]), { 69: [1, 308] }, { 106: [1, 309] }, { 69: [1, 310] }, o($Va1, [2, 120]), { 69: [1, 311] }, o($Vh1, [2, 161]), o($Vh1, [2, 162]), o($Vh1, [2, 163]), o($Vh1, [2, 164]), o($Vh1, [2, 165]), o($Vh1, [2, 166]), o($Vh1, [2, 207]), o($Vh1, [2, 205]), o($Vh1, [2, 206]), o($Vh1, [2, 204]), o($Vh1, [2, 211]), o($VU1, [2, 83]), o($Vh1, $Vd1, { 59: 312 }), o($Va1, [2, 126]), { 115: [1, 313] }, { 115: [1, 314] }, { 57: 317, 60: 316, 61: $Vs, 64: $Vt, 119: 315 }, o($Vb1, [2, 213]), o($VX1, [2, 236]), o($VX1, [2, 237]), o($VX1, [2, 238]), o($VX1, [2, 239]), o($VX1, [2, 240]), o($Vb1, [2, 214]), o($VY1, [2, 218]), { 188: 318, 192: $V42, 195: 319, 197: $V52, 198: 322, 199: $V62, 200: $V72, 201: $V82 }, o($VY1, $V92, { 190: 326, 192: $Va2 }), o($Vb1, [2, 215]), o($Vb1, [2, 216]), o($Va1, [2, 112]), { 69: [1, 328] }, o($Va1, [2, 118]), o($Va1, [2, 121]), o($Vi1, [2, 88], { 122: 196, 123: 197, 124: 198, 56: 199, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }), o($VW1, $V1, { 37: 329 }), o($VW1, $V1, { 37: 330 }), { 57: 317, 58: 331, 60: 316, 61: $Vs, 64: $Vt, 69: $Ve1, 71: $Vf1, 119: 332 }, o($Vb2, [2, 131]), o($Vb2, [2, 132]), { 189: [1, 333], 192: $V42, 195: 334, 197: $V52, 198: 322, 199: $V62, 200: $V72, 201: $V82 }, o($Vc2, [2, 225]), o($Vd2, $Ve2, { 196: 335, 198: 336, 199: $V62, 200: $V72, 201: $V82 }), o($Vd2, $Ve2, { 198: 336, 196: 337, 199: $V62, 200: $V72, 201: $V82 }), o($Vc2, [2, 229]), o($Vc2, [2, 232]), o($Vc2, [2, 233]), o($Vc2, [2, 234]), o($VY1, [2, 220]), o($Vf2, [2, 223], { 193: 338 }), o($Va1, [2, 116]), { 9: $Vm, 38: 49, 39: 51, 40: 52, 41: 53, 42: 54, 43: 55, 44: 56, 45: 57, 46: 58, 47: 59, 48: 60, 49: 61, 50: 62, 51: $Vn, 52: $Vo, 53: $Vp, 54: $Vq, 55: $Vr, 56: 93, 57: 65, 60: 66, 61: $Vs, 64: $Vt, 73: $Vu, 74: $Vv, 75: $Vw, 76: $Vx, 78: $Vy, 79: 72, 80: 73, 81: 74, 82: 75, 83: 76, 84: 77, 85: 78, 86: 79, 87: 80, 88: 81, 89: 82, 90: $Vz, 91: $VA, 92: $VB, 93: $VC, 94: $VD, 95: $VE, 100: $VF, 102: $VG, 103: $VH, 104: $VI, 105: $VJ, 107: $VK, 108: $VL, 111: $VM, 112: $VN, 113: $VO, 114: $VP, 116: [1, 339], 117: $VQ, 118: $VR, 120: $VS, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31 }, { 9: $Vm, 38: 49, 39: 51, 40: 52, 41: 53, 42: 54, 43: 55, 44: 56, 45: 57, 46: 58, 47: 59, 48: 60, 49: 61, 50: 62, 51: $Vn, 52: $Vo, 53: $Vp, 54: $Vq, 55: $Vr, 56: 93, 57: 65, 60: 66, 61: $Vs, 64: $Vt, 73: $Vu, 74: $Vv, 75: $Vw, 76: $Vx, 78: $Vy, 79: 72, 80: 73, 81: 74, 82: 75, 83: 76, 84: 77, 85: 78, 86: 79, 87: 80, 88: 81, 89: 82, 90: $Vz, 91: $VA, 92: $VB, 93: $VC, 94: $VD, 95: $VE, 100: $VF, 102: $VG, 103: $VH, 104: $VI, 105: $VJ, 107: $VK, 108: $VL, 111: $VM, 112: $VN, 113: $VO, 114: $VP, 116: [1, 340], 117: $VQ, 118: $VR, 120: $VS, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31 }, o([13, 53, 54, 55, 61, 63, 64, 69, 72, 110, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179], $Vd1, { 59: 341 }), { 116: [1, 342] }, o($VY1, $V92, { 190: 343, 192: $Va2 }), o($Vc2, [2, 226]), o($Vc2, [2, 227]), o($Vc2, [2, 231]), o($Vc2, [2, 228]), o($VY1, [2, 222], { 194: [1, 344] }), o($Va1, [2, 129]), o($Va1, [2, 130]), { 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 56: 199, 57: 317, 60: 316, 61: $Vs, 63: $Vn1, 64: $Vt, 69: $Vo1, 72: $Vp1, 110: $Vq1, 119: 345, 122: 196, 123: 197, 124: 198, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }, o($Va1, [2, 135]), o($VY1, [2, 219]), o($Vf2, [2, 224]), { 58: 346, 69: $Ve1, 71: $Vf1, 116: [1, 347] }, o([13, 53, 54, 55, 63, 69, 72, 110, 116, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179], $Vd1, { 59: 348 }), o($Va1, [2, 134]), { 13: $Vj1, 53: $Vk1, 54: $Vl1, 55: $Vm1, 56: 199, 63: $Vn1, 69: $Vo1, 72: $Vp1, 110: $Vq1, 116: [1, 349], 122: 196, 123: 197, 124: 198, 125: 200, 126: 201, 127: 202, 128: 203, 129: 204, 130: 205, 131: 206, 132: 207, 133: 208, 134: 209, 135: 210, 136: 211, 137: 212, 138: $Vr1, 139: $Vs1, 140: $Vt1, 141: $Vu1, 142: $Vv1, 143: $Vw1, 144: $Vx1, 145: $Vy1, 146: $Vz1, 147: $VA1, 148: $VB1, 149: $VC1, 150: $VD1, 151: $VE1, 152: $VF1, 153: $VG1, 154: $VT, 155: $VU, 156: $VV, 157: $VW, 158: $VX, 159: $VY, 160: $VZ, 161: $V_, 162: $V$, 163: $V01, 164: $V11, 165: $V21, 166: $V31, 167: $VH1, 168: $VI1, 169: $VJ1, 170: $VK1, 171: $VL1, 172: $VM1, 173: $VN1, 174: $VO1, 175: $VP1, 176: $VQ1, 177: $VR1, 178: $VS1, 179: $VT1 }, o($Va1, [2, 133])],
650
678
  defaultActions: { 25: [2, 1] },
651
679
  parseError: function parseError(str, hash) {
652
680
  if (hash.recoverable) {
@@ -806,6 +834,13 @@ var localGrammar = function() {
806
834
  dots: dots || 0
807
835
  });
808
836
  const noteEvent = (pitches, dur, marks, options = {}) => {
837
+ if (currentHeadShape !== void 0 && options.headShape === void 0) {
838
+ options = { ...options, headShape: currentHeadShape };
839
+ if (xNotePending) {
840
+ currentHeadShape = void 0;
841
+ xNotePending = false;
842
+ }
843
+ }
809
844
  const pitchedRestMark = marks && marks.find((m) => m && m.pitchedRest);
810
845
  if (pitchedRestMark) {
811
846
  const pitch2 = Array.isArray(pitches) ? pitches[0] : pitches;
@@ -923,12 +958,14 @@ var localGrammar = function() {
923
958
  ratio,
924
959
  events
925
960
  });
926
- const tremoloEvent = (pitchA, pitchB, count, division) => ({
961
+ const tremoloEvent = (pitchA, pitchB, count, division, marksA, marksB) => ({
927
962
  type: "tremolo",
928
963
  pitchA,
929
964
  pitchB,
930
965
  count,
931
- division
966
+ division,
967
+ ...marksA && marksA.length ? { marksA } : {},
968
+ ...marksB && marksB.length ? { marksB } : {}
932
969
  });
933
970
  const articulation = (type, placement) => ({ markType: "articulation", type, placement });
934
971
  const ornament = (type) => ({ markType: "ornament", type });
@@ -985,6 +1022,9 @@ var localGrammar = function() {
985
1022
  let currentDuration = { division: 4, dots: 0 };
986
1023
  let numericTimeSignature = false;
987
1024
  let currentOttava = 0;
1025
+ let currentHeadShape = void 0;
1026
+ let xNotePending = false;
1027
+ let lastHairpin = void 0;
988
1028
  let parseWarnings = [];
989
1029
  const resetParserState = () => {
990
1030
  currentStaff = 1;
@@ -1357,363 +1397,381 @@ var localGrammar = function() {
1357
1397
  return 12;
1358
1398
  break;
1359
1399
  case 17:
1360
- return 88;
1400
+ return 94;
1361
1401
  break;
1362
1402
  case 18:
1363
- return 89;
1403
+ return 95;
1364
1404
  break;
1365
1405
  case 19:
1366
- return 94;
1406
+ return 100;
1367
1407
  break;
1368
1408
  case 20:
1369
- return 98;
1409
+ return 104;
1370
1410
  break;
1371
1411
  case 21:
1372
- return 96;
1412
+ return 102;
1373
1413
  break;
1374
1414
  case 22:
1375
- return 85;
1415
+ return 91;
1376
1416
  break;
1377
1417
  case 23:
1378
- return 87;
1418
+ return 93;
1379
1419
  break;
1380
1420
  case 24:
1381
- return 84;
1421
+ return 90;
1382
1422
  break;
1383
1423
  case 25:
1384
- return 86;
1424
+ return 92;
1385
1425
  break;
1386
1426
  case 26:
1387
- return 97;
1427
+ return 103;
1388
1428
  break;
1389
1429
  case 27:
1390
- return 99;
1430
+ return 105;
1391
1431
  break;
1392
1432
  case 28:
1393
- return 101;
1433
+ return 107;
1394
1434
  break;
1395
1435
  case 29:
1396
- return 108;
1436
+ return 114;
1397
1437
  break;
1398
1438
  case 30:
1399
- return 111;
1439
+ return 117;
1400
1440
  break;
1401
1441
  case 31:
1402
- return 112;
1442
+ return 118;
1403
1443
  break;
1404
1444
  case 32:
1405
- return 114;
1445
+ return 120;
1406
1446
  break;
1407
1447
  case 33:
1408
- return 102;
1448
+ return 108;
1409
1449
  break;
1410
1450
  case 34:
1411
- return 105;
1451
+ return 111;
1412
1452
  break;
1413
1453
  case 35:
1414
- return 106;
1454
+ return 112;
1415
1455
  break;
1416
1456
  case 36:
1417
- return 107;
1457
+ return 113;
1418
1458
  break;
1419
1459
  case 37:
1420
- return 92;
1460
+ return 98;
1421
1461
  break;
1422
1462
  case 38:
1423
- return 93;
1463
+ return 99;
1424
1464
  break;
1425
1465
  case 39:
1426
- return 163;
1466
+ return 170;
1427
1467
  break;
1428
1468
  case 40:
1429
- return 164;
1469
+ return 171;
1430
1470
  break;
1431
1471
  case 41:
1432
- return 50;
1472
+ return 51;
1433
1473
  break;
1434
1474
  case 42:
1435
- return 170;
1475
+ return 177;
1436
1476
  break;
1437
1477
  case 43:
1438
- return 171;
1478
+ return 178;
1439
1479
  break;
1440
1480
  case 44:
1441
- return 51;
1481
+ return 52;
1442
1482
  break;
1443
1483
  case 45:
1444
- return 52;
1484
+ return 53;
1445
1485
  break;
1446
1486
  case 46:
1447
1487
  this.pushState("lyric");
1448
- return 173;
1488
+ return 180;
1449
1489
  break;
1450
1490
  case 47:
1451
1491
  this.pushState("figures");
1452
- return 178;
1492
+ return 185;
1453
1493
  break;
1454
1494
  case 48:
1455
1495
  this.pushState("figures");
1456
- return 177;
1496
+ return 184;
1457
1497
  break;
1458
1498
  case 49:
1459
1499
  this.pushState("figures");
1460
- return 175;
1500
+ return 182;
1461
1501
  break;
1462
1502
  case 50:
1463
- return 160;
1503
+ return 167;
1464
1504
  break;
1465
1505
  case 51:
1466
- return 161;
1506
+ return 168;
1467
1507
  break;
1468
1508
  case 52:
1469
- return 162;
1509
+ return 169;
1470
1510
  break;
1471
1511
  case 53:
1472
- return 133;
1512
+ return 139;
1473
1513
  break;
1474
1514
  case 54:
1475
- return 134;
1515
+ return 140;
1476
1516
  break;
1477
1517
  case 55:
1478
- return 135;
1518
+ return 141;
1479
1519
  break;
1480
1520
  case 56:
1481
- return 136;
1521
+ return 142;
1482
1522
  break;
1483
1523
  case 57:
1484
- return 137;
1524
+ return 143;
1485
1525
  break;
1486
1526
  case 58:
1487
- return 138;
1527
+ return 144;
1488
1528
  break;
1489
1529
  case 59:
1490
- return 139;
1530
+ return 145;
1491
1531
  break;
1492
1532
  case 60:
1493
- return 140;
1533
+ return 146;
1494
1534
  break;
1495
1535
  case 61:
1496
- return 141;
1536
+ return 147;
1497
1537
  break;
1498
1538
  case 62:
1499
- return 142;
1539
+ return 148;
1500
1540
  break;
1501
1541
  case 63:
1502
- return 143;
1542
+ return 149;
1503
1543
  break;
1504
1544
  case 64:
1505
- return 144;
1545
+ return 150;
1506
1546
  break;
1507
1547
  case 65:
1508
- return 145;
1548
+ return 151;
1509
1549
  break;
1510
1550
  case 66:
1511
- return 146;
1551
+ return 152;
1512
1552
  break;
1513
1553
  case 67:
1514
- return 172;
1554
+ return 153;
1515
1555
  break;
1516
1556
  case 68:
1517
- return 158;
1557
+ return 73;
1518
1558
  break;
1519
1559
  case 69:
1520
- return 147;
1560
+ return 74;
1521
1561
  break;
1522
1562
  case 70:
1523
- return 148;
1563
+ return 75;
1524
1564
  break;
1525
1565
  case 71:
1526
- return 150;
1566
+ return 179;
1527
1567
  break;
1528
1568
  case 72:
1529
- return 151;
1569
+ return 71;
1530
1570
  break;
1531
1571
  case 73:
1532
- return 154;
1572
+ return 165;
1533
1573
  break;
1534
1574
  case 74:
1535
- return 153;
1575
+ return 154;
1536
1576
  break;
1537
1577
  case 75:
1538
1578
  return 155;
1539
1579
  break;
1540
1580
  case 76:
1541
- return 156;
1581
+ return 157;
1542
1582
  break;
1543
1583
  case 77:
1544
- return 157;
1584
+ return 158;
1545
1585
  break;
1546
1586
  case 78:
1547
- return 159;
1587
+ return 161;
1548
1588
  break;
1549
1589
  case 79:
1550
- return 149;
1590
+ return 160;
1551
1591
  break;
1552
1592
  case 80:
1553
- return 152;
1593
+ return 162;
1554
1594
  break;
1555
1595
  case 81:
1556
- return 132;
1596
+ return 163;
1557
1597
  break;
1558
1598
  case 82:
1559
- return 33;
1599
+ return 164;
1560
1600
  break;
1561
1601
  case 83:
1562
- return 36;
1602
+ return 166;
1563
1603
  break;
1564
1604
  case 84:
1565
- return 115;
1605
+ return 156;
1566
1606
  break;
1567
1607
  case 85:
1568
- return 63;
1608
+ return 159;
1569
1609
  break;
1570
1610
  case 86:
1571
- return 66;
1611
+ return 138;
1572
1612
  break;
1573
1613
  case 87:
1574
- return 67;
1614
+ return 77;
1575
1615
  break;
1576
1616
  case 88:
1577
- return 68;
1617
+ return 33;
1578
1618
  break;
1579
1619
  case 89:
1580
- return 95;
1620
+ return 36;
1581
1621
  break;
1582
1622
  case 90:
1583
- return 103;
1623
+ return 121;
1584
1624
  break;
1585
1625
  case 91:
1586
- return 109;
1626
+ return 64;
1587
1627
  break;
1588
1628
  case 92:
1589
- return 110;
1629
+ return 67;
1590
1630
  break;
1591
1631
  case 93:
1592
- return 60;
1632
+ return 68;
1593
1633
  break;
1594
1634
  case 94:
1595
- return 62;
1635
+ return 69;
1596
1636
  break;
1597
1637
  case 95:
1598
- return 26;
1638
+ return 101;
1599
1639
  break;
1600
1640
  case 96:
1601
- return 168;
1641
+ return 109;
1602
1642
  break;
1603
1643
  case 97:
1604
- return 13;
1644
+ return 115;
1605
1645
  break;
1606
1646
  case 98:
1607
- return 166;
1647
+ return 116;
1608
1648
  break;
1609
1649
  case 99:
1610
- return 167;
1650
+ return 61;
1611
1651
  break;
1612
1652
  case 100:
1613
- return 165;
1653
+ return 63;
1614
1654
  break;
1615
1655
  case 101:
1616
- return 70;
1656
+ return 26;
1617
1657
  break;
1618
1658
  case 102:
1619
- return 104;
1659
+ return 175;
1620
1660
  break;
1621
1661
  case 103:
1622
- return 54;
1662
+ return 13;
1623
1663
  break;
1624
1664
  case 104:
1625
- return 53;
1665
+ return 173;
1626
1666
  break;
1627
1667
  case 105:
1628
- return 65;
1668
+ return 174;
1629
1669
  break;
1630
1670
  case 106:
1631
- return 169;
1671
+ return 172;
1632
1672
  break;
1633
1673
  case 107:
1634
- return 100;
1674
+ return 72;
1635
1675
  break;
1636
1676
  case 108:
1637
- return 71;
1677
+ return 110;
1638
1678
  break;
1639
1679
  case 109:
1640
- return 72;
1680
+ return 55;
1641
1681
  break;
1642
1682
  case 110:
1643
- return 5;
1683
+ return 54;
1644
1684
  break;
1645
1685
  case 111:
1686
+ return 66;
1646
1687
  break;
1647
1688
  case 112:
1648
- return 109;
1689
+ return 176;
1649
1690
  break;
1650
1691
  case 113:
1651
- this.popState();
1652
- return 110;
1692
+ return 106;
1653
1693
  break;
1654
1694
  case 114:
1695
+ return 76;
1655
1696
  break;
1656
1697
  case 115:
1698
+ return 78;
1657
1699
  break;
1658
1700
  case 116:
1659
- return 197;
1701
+ return 5;
1660
1702
  break;
1661
1703
  case 117:
1662
- return 199;
1663
1704
  break;
1664
1705
  case 118:
1665
- return 198;
1706
+ return 115;
1666
1707
  break;
1667
1708
  case 119:
1668
- return 196;
1709
+ this.popState();
1710
+ return 116;
1669
1711
  break;
1670
1712
  case 120:
1671
- return 196;
1672
1713
  break;
1673
1714
  case 121:
1674
- return 109;
1675
1715
  break;
1676
1716
  case 122:
1677
- this.popState();
1678
- return 110;
1717
+ return 204;
1679
1718
  break;
1680
1719
  case 123:
1720
+ return 206;
1681
1721
  break;
1682
1722
  case 124:
1723
+ return 205;
1683
1724
  break;
1684
1725
  case 125:
1726
+ return 203;
1685
1727
  break;
1686
1728
  case 126:
1687
- return 180;
1729
+ return 203;
1688
1730
  break;
1689
1731
  case 127:
1690
- return 182;
1732
+ return 115;
1691
1733
  break;
1692
1734
  case 128:
1693
- return 185;
1735
+ this.popState();
1736
+ return 116;
1694
1737
  break;
1695
1738
  case 129:
1696
- return 190;
1697
1739
  break;
1698
1740
  case 130:
1699
- return 192;
1700
1741
  break;
1701
1742
  case 131:
1702
- return 193;
1703
1743
  break;
1704
1744
  case 132:
1705
- return 194;
1745
+ return 187;
1706
1746
  break;
1707
1747
  case 133:
1708
- return 187;
1748
+ return 189;
1709
1749
  break;
1710
1750
  case 134:
1711
- return 184;
1751
+ return 192;
1752
+ break;
1753
+ case 135:
1754
+ return 197;
1755
+ break;
1756
+ case 136:
1757
+ return 199;
1758
+ break;
1759
+ case 137:
1760
+ return 200;
1761
+ break;
1762
+ case 138:
1763
+ return 201;
1764
+ break;
1765
+ case 139:
1766
+ return 194;
1767
+ break;
1768
+ case 140:
1769
+ return 191;
1712
1770
  break;
1713
1771
  }
1714
1772
  },
1715
- rules: [/^(?:[ \t]+)/, /^(?:(\r?\n)+)/, /^(?:%.*)/, /^(?:\[title\b)/, /^(?:\[subtitle\b)/, /^(?:\[composer\b)/, /^(?:\[arranger\b)/, /^(?:\[lyricist\b)/, /^(?:\[opus\b)/, /^(?:\[instrument-[A-Za-z0-9_]+(?:-[A-Za-z0-9_]+)*)/, /^(?:\[instrument\b)/, /^(?:\[genre\b)/, /^(?:\[staves\b)/, /^(?:\[measures\b)/, /^(?:\[auto-beam\b)/, /^(?:\])/, /^(?:"([^\"\\]|\\.)*")/, /^(?:\\clef\b)/, /^(?:\\key\b)/, /^(?:\\time\b)/, /^(?:\\partial\b)/, /^(?:\\numericTimeSignature\b)/, /^(?:\\undo[ \t]+\\omit[ \t]+(?:Score|Staff)\.TimeSignature\b)/, /^(?:\\undo[ \t]+\\omit[ \t]+(?:Score|Staff)\.BarLine\b)/, /^(?:\\omit[ \t]+(?:Score|Staff)\.TimeSignature\b)/, /^(?:\\omit[ \t]+(?:Score|Staff)\.BarLine\b)/, /^(?:\\defaultTimeSignature\b)/, /^(?:\\tempo\b)/, /^(?:\\staff\b)/, /^(?:\\grace\b)/, /^(?:\\times\b)/, /^(?:\\tuplet\b)/, /^(?:\\repeat\b)/, /^(?:\\ottava\b)/, /^(?:\\stemUp\b)/, /^(?:\\stemDown\b)/, /^(?:\\stemNeutral\b)/, /^(?:\\major\b)/, /^(?:\\minor\b)/, /^(?:\\sustainOn\b)/, /^(?:\\sustainOff\b)/, /^(?:\\bar\b)/, /^(?:\\coda\b)/, /^(?:\\segno\b)/, /^(?:\\chords\b)/, /^(?:\\markup\b)/, /^(?:\\addlyrics\b)/, /^(?:\^\\figures\b)/, /^(?:_\\figures\b)/, /^(?:\\figures\b)/, /^(?:\\<)/, /^(?:\\>)/, /^(?:\\!)/, /^(?:\\staccato\b)/, /^(?:\\staccatissimo\b)/, /^(?:\\tenuto\b)/, /^(?:\\marcato\b)/, /^(?:\\accent\b)/, /^(?:\\portato\b)/, /^(?:\\trill\b)/, /^(?:\\turn\b)/, /^(?:\\mordent\b)/, /^(?:\\prall\b)/, /^(?:\\fermata\b)/, /^(?:\\shortfermata\b)/, /^(?:\\arpeggio\b)/, /^(?:\\breathe\b)/, /^(?:\\glissando\b)/, /^(?:\\(?:fffff|ppppp|ffff|pppp|sffz|sfpp|sfzp|mfp|sff|sfp|spp|fz|pf|rf|sf|sp|n)(?![a-zA-Z]))/, /^(?:\\ppp\b)/, /^(?:\\pp\b)/, /^(?:\\mp\b)/, /^(?:\\mf\b)/, /^(?:\\fff\b)/, /^(?:\\ff\b)/, /^(?:\\sfz\b)/, /^(?:\\rfz\b)/, /^(?:\\sf\b)/, /^(?:\\fp\b)/, /^(?:\\p\b)/, /^(?:\\f)/, /^(?:\\rest\b)/, /^(?:\\\\\\)/, /^(?:\\\\)/, /^(?:tremolo\b)/, /^(?:[a-g](ss|ff|s|f)?)/, /^(?:')/, /^(?:,)/, /^(?:[0-9]+)/, /^(?:\/)/, /^(?:#)/, /^(?:\{)/, /^(?:\})/, /^(?:<)/, /^(?:>)/, /^(?:\|)/, /^(?:\[)/, /^(?:\])/, /^(?:\()/, /^(?:\))/, /^(?:~)/, /^(?:\.)/, /^(?:-)/, /^(?:[_])/, /^(?:\^)/, /^(?:!)/, /^(?::)/, /^(?:=)/, /^(?:[rR])/, /^(?:[sS])/, /^(?:$)/, /^(?:.)/, /^(?:\{)/, /^(?:\})/, /^(?:[ \t]+)/, /^(?:(\r?\n)+)/, /^(?:--)/, /^(?:__\b)/, /^(?:_\b)/, /^(?:"([^\"\\]|\\.)*")/, /^(?:[^ \t\r\n{}\"\\]+)/, /^(?:\{)/, /^(?:\})/, /^(?:[ \t]+)/, /^(?:(\r?\n)+)/, /^(?:%.*)/, /^(?:<)/, /^(?:>)/, /^(?:[0-9]+)/, /^(?:_\b)/, /^(?:\+)/, /^(?:-)/, /^(?:!)/, /^(?:\.)/, /^(?:[sS])/],
1716
- conditions: { "figures": { "rules": [121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134], "inclusive": false }, "lyric": { "rules": [112, 113, 114, 115, 116, 117, 118, 119, 120], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111], "inclusive": true } }
1773
+ rules: [/^(?:[ \t]+)/, /^(?:(\r?\n)+)/, /^(?:%.*)/, /^(?:\[title\b)/, /^(?:\[subtitle\b)/, /^(?:\[composer\b)/, /^(?:\[arranger\b)/, /^(?:\[lyricist\b)/, /^(?:\[opus\b)/, /^(?:\[instrument-[A-Za-z0-9_]+(?:-[A-Za-z0-9_]+)*)/, /^(?:\[instrument\b)/, /^(?:\[genre\b)/, /^(?:\[staves\b)/, /^(?:\[measures\b)/, /^(?:\[auto-beam\b)/, /^(?:\])/, /^(?:"([^\"\\]|\\.)*")/, /^(?:\\clef\b)/, /^(?:\\key\b)/, /^(?:\\time\b)/, /^(?:\\partial\b)/, /^(?:\\numericTimeSignature\b)/, /^(?:\\undo[ \t]+\\omit[ \t]+(?:Score|Staff)\.TimeSignature\b)/, /^(?:\\undo[ \t]+\\omit[ \t]+(?:Score|Staff)\.BarLine\b)/, /^(?:\\omit[ \t]+(?:Score|Staff)\.TimeSignature\b)/, /^(?:\\omit[ \t]+(?:Score|Staff)\.BarLine\b)/, /^(?:\\defaultTimeSignature\b)/, /^(?:\\tempo\b)/, /^(?:\\staff\b)/, /^(?:\\grace\b)/, /^(?:\\times\b)/, /^(?:\\tuplet\b)/, /^(?:\\repeat\b)/, /^(?:\\ottava\b)/, /^(?:\\stemUp\b)/, /^(?:\\stemDown\b)/, /^(?:\\stemNeutral\b)/, /^(?:\\major\b)/, /^(?:\\minor\b)/, /^(?:\\sustainOn(?![a-zA-Z]))/, /^(?:\\sustainOff(?![a-zA-Z]))/, /^(?:\\bar(?![a-zA-Z]))/, /^(?:\\coda(?![a-zA-Z]))/, /^(?:\\segno(?![a-zA-Z]))/, /^(?:\\chords(?![a-zA-Z]))/, /^(?:\\markup(?![a-zA-Z]))/, /^(?:\\addlyrics\b)/, /^(?:\^\\figures\b)/, /^(?:_\\figures\b)/, /^(?:\\figures\b)/, /^(?:\\<)/, /^(?:\\>)/, /^(?:\\!)/, /^(?:\\staccato(?![a-zA-Z]))/, /^(?:\\staccatissimo(?![a-zA-Z]))/, /^(?:\\tenuto(?![a-zA-Z]))/, /^(?:\\marcato(?![a-zA-Z]))/, /^(?:\\accent(?![a-zA-Z]))/, /^(?:\\portato(?![a-zA-Z]))/, /^(?:\\trill(?![a-zA-Z]))/, /^(?:\\turn(?![a-zA-Z]))/, /^(?:\\mordent(?![a-zA-Z]))/, /^(?:\\prall(?![a-zA-Z]))/, /^(?:\\fermata(?![a-zA-Z]))/, /^(?:\\shortfermata(?![a-zA-Z]))/, /^(?:\\arpeggio(?![a-zA-Z]))/, /^(?:\\breathe(?![a-zA-Z]))/, /^(?:\\caesura(?![a-zA-Z]))/, /^(?:\\xNote\b)/, /^(?:\\improvisationOn\b)/, /^(?:\\improvisationOff\b)/, /^(?:\\glissando(?![a-zA-Z]))/, /^(?:\\breve(?![a-zA-Z]))/, /^(?:\\(?:fffff|ppppp|fpp|ffff|pppp|sffz|sfpp|sfzp|mfp|sff|sfp|spp|fz|pf|rf|sf|sp|n)(?![a-zA-Z]))/, /^(?:\\ppp(?![a-zA-Z]))/, /^(?:\\pp(?![a-zA-Z]))/, /^(?:\\mp(?![a-zA-Z]))/, /^(?:\\mf(?![a-zA-Z]))/, /^(?:\\fff(?![a-zA-Z]))/, /^(?:\\ff(?![a-zA-Z]))/, /^(?:\\sfz(?![a-zA-Z]))/, /^(?:\\rfz(?![a-zA-Z]))/, /^(?:\\sf(?![a-zA-Z]))/, /^(?:\\fp(?![a-zA-Z]))/, /^(?:\\p(?![a-zA-Z]))/, /^(?:\\f(?![a-zA-Z]))/, /^(?:\\rest\b)/, /^(?:\*)/, /^(?:\\\\\\)/, /^(?:\\\\)/, /^(?:tremolo\b)/, /^(?:[a-g](ss|ff|s|f)?)/, /^(?:')/, /^(?:,)/, /^(?:[0-9]+)/, /^(?:\/)/, /^(?:#)/, /^(?:\{)/, /^(?:\})/, /^(?:<)/, /^(?:>)/, /^(?:\|)/, /^(?:\[)/, /^(?:\])/, /^(?:\()/, /^(?:\))/, /^(?:~)/, /^(?:\.)/, /^(?:-)/, /^(?:[_])/, /^(?:\^)/, /^(?:!)/, /^(?::)/, /^(?:=)/, /^(?:[rR])/, /^(?:[sS])/, /^(?:$)/, /^(?:.)/, /^(?:\{)/, /^(?:\})/, /^(?:[ \t]+)/, /^(?:(\r?\n)+)/, /^(?:--)/, /^(?:__\b)/, /^(?:_\b)/, /^(?:"([^\"\\]|\\.)*")/, /^(?:[^ \t\r\n{}\"\\]+)/, /^(?:\{)/, /^(?:\})/, /^(?:[ \t]+)/, /^(?:(\r?\n)+)/, /^(?:%.*)/, /^(?:<)/, /^(?:>)/, /^(?:[0-9]+)/, /^(?:_\b)/, /^(?:\+)/, /^(?:-)/, /^(?:!)/, /^(?:\.)/, /^(?:[sS])/],
1774
+ conditions: { "figures": { "rules": [127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140], "inclusive": false }, "lyric": { "rules": [118, 119, 120, 121, 122, 123, 124, 125, 126], "inclusive": false }, "INITIAL": { "rules": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117], "inclusive": true } }
1717
1775
  };
1718
1776
  return lexer2;
1719
1777
  }();
@@ -1865,6 +1923,11 @@ var Clef;
1865
1923
  Clef2["bass"] = "bass";
1866
1924
  Clef2["alto"] = "alto";
1867
1925
  Clef2["tenor"] = "tenor";
1926
+ Clef2["soprano"] = "soprano";
1927
+ Clef2["mezzosoprano"] = "mezzosoprano";
1928
+ Clef2["baritone"] = "baritone";
1929
+ Clef2["varbaritone"] = "varbaritone";
1930
+ Clef2["percussion"] = "percussion";
1868
1931
  })(Clef || (Clef = {}));
1869
1932
  var StemDirection;
1870
1933
  (function(StemDirection2) {
@@ -1891,6 +1954,7 @@ var OrnamentType;
1891
1954
  OrnamentType2["shortFermata"] = "shortFermata";
1892
1955
  OrnamentType2["arpeggio"] = "arpeggio";
1893
1956
  OrnamentType2["breath"] = "breath";
1957
+ OrnamentType2["caesura"] = "caesura";
1894
1958
  })(OrnamentType || (OrnamentType = {}));
1895
1959
  var DynamicType;
1896
1960
  (function(DynamicType2) {
@@ -1907,6 +1971,7 @@ var DynamicType;
1907
1971
  DynamicType2["fp"] = "fp";
1908
1972
  DynamicType2["pppp"] = "pppp";
1909
1973
  DynamicType2["ppppp"] = "ppppp";
1974
+ DynamicType2["fpp"] = "fpp";
1910
1975
  DynamicType2["ffff"] = "ffff";
1911
1976
  DynamicType2["fffff"] = "fffff";
1912
1977
  DynamicType2["sf"] = "sf";
@@ -2907,6 +2972,13 @@ var CLEF_SHAPES = {
2907
2972
  bass: { shape: "F", line: 4 },
2908
2973
  alto: { shape: "C", line: 3 },
2909
2974
  tenor: { shape: "C", line: 4 },
2975
+ // The rest of LilyPond's clef table (scm/parser-clef.scm).
2976
+ soprano: { shape: "C", line: 1 },
2977
+ mezzosoprano: { shape: "C", line: 2 },
2978
+ baritone: { shape: "C", line: 5 },
2979
+ varbaritone: { shape: "F", line: 3 },
2980
+ // A percussion clef has no line: MEI writes clef.shape="perc" alone.
2981
+ percussion: { shape: "perc" },
2910
2982
  // Also support uppercase letter clef names
2911
2983
  G: { shape: "G", line: 2 },
2912
2984
  F: { shape: "F", line: 4 },
@@ -2937,7 +3009,7 @@ var resolveClef = (clefStr) => {
2937
3009
  var clefOctaveShift = (clefStr) => clefStr ? resolveClef(clefStr).dis?.octaves ?? 0 : 0;
2938
3010
  var clefElementAttrs = (clefStr) => {
2939
3011
  const c = resolveClef(clefStr);
2940
- let attrs = `shape="${c.shape}" line="${c.line}"`;
3012
+ let attrs = c.line === void 0 ? `shape="${c.shape}"` : `shape="${c.shape}" line="${c.line}"`;
2941
3013
  if (c.dis)
2942
3014
  attrs += ` dis="${c.dis.dis}" dis.place="${c.dis.place}"`;
2943
3015
  return attrs;
@@ -2948,7 +3020,7 @@ var clefTransOf = (clefStr) => {
2948
3020
  };
2949
3021
  var staffDefClefAttrs = (clefStr) => {
2950
3022
  const c = resolveClef(clefStr);
2951
- let attrs = `clef.shape="${c.shape}" clef.line="${c.line}"`;
3023
+ let attrs = c.line === void 0 ? `clef.shape="${c.shape}"` : `clef.shape="${c.shape}" clef.line="${c.line}"`;
2952
3024
  if (c.dis)
2953
3025
  attrs += ` clef.dis="${c.dis.dis}" clef.dis.place="${c.dis.place}"`;
2954
3026
  if (c.trans)
@@ -2956,6 +3028,8 @@ var staffDefClefAttrs = (clefStr) => {
2956
3028
  return attrs;
2957
3029
  };
2958
3030
  var DURATIONS = {
3031
+ 0.5: "breve",
3032
+ // breve (double whole note), LilyPond \breve
2959
3033
  1: "1",
2960
3034
  // whole
2961
3035
  2: "2",
@@ -3038,12 +3112,13 @@ var encodePitch = (pitch, keyFifths = 0, ottavaShift = 0, measureAccidentals, cl
3038
3112
  const noteAccid = ACCIDENTALS[pitch.accidental];
3039
3113
  if (pitch.courtesy) {
3040
3114
  accid = noteAccid;
3115
+ } else if (prevMeasureAccid === noteAccid) {
3041
3116
  } else if (prevMeasureAccid !== void 0 && noteAccid !== prevMeasureAccid) {
3042
3117
  accid = noteAccid;
3043
3118
  } else if (noteAccid !== keyAccid) {
3044
3119
  accid = noteAccid;
3045
3120
  }
3046
- accidGes = noteAccid;
3121
+ accidGes = noteAccid === "x" ? "ss" : noteAccid;
3047
3122
  if (measureAccidentals)
3048
3123
  measureAccidentals.set(pitchKey, noteAccid);
3049
3124
  } else if (keyAccid) {
@@ -3056,6 +3131,11 @@ var encodePitch = (pitch, keyFifths = 0, ottavaShift = 0, measureAccidentals, cl
3056
3131
  accidGes = "n";
3057
3132
  if (measureAccidentals)
3058
3133
  measureAccidentals.set(pitchKey, "n");
3134
+ } else if (pitch.courtesy) {
3135
+ accid = "n";
3136
+ accidGes = "n";
3137
+ if (measureAccidentals)
3138
+ measureAccidentals.set(pitchKey, "n");
3059
3139
  } else if (pitch.courtesy && prevMeasureAccid && prevMeasureAccid !== "n") {
3060
3140
  accid = "n";
3061
3141
  accidGes = "n";
@@ -3136,13 +3216,15 @@ var buildNoteElement = (pitch, dur, dots, indent, inChord, options = {}, noteId)
3136
3216
  if (!inChord && options.stemDir)
3137
3217
  attrs += ` stem.dir="${options.stemDir}"`;
3138
3218
  if (!inChord && options.layerStaff && options.staff && options.staff !== options.layerStaff) {
3139
- attrs += ` staff="${options.staff}"`;
3219
+ attrs += ` staff="${options.staff + (options.staffOffset || 0)}"`;
3140
3220
  }
3141
3221
  if (!inChord && options.tremolo) {
3142
3222
  const stemMod = tremoloToStemMod(options.tremolo);
3143
3223
  if (stemMod)
3144
3224
  attrs += ` stem.mod="${stemMod}"`;
3145
3225
  }
3226
+ if (options.headShape)
3227
+ attrs += ` head.shape="${options.headShape}"`;
3146
3228
  const hasChildren = !inChord && (options.artics && options.artics.length > 0 || !!options.lyricXml);
3147
3229
  if (!hasChildren) {
3148
3230
  return `${indent}<note ${attrs} />
@@ -3189,14 +3271,17 @@ var extractMarkOptions = (marks) => {
3189
3271
  beamEnd: false,
3190
3272
  dynamic: void 0,
3191
3273
  dynamics: [],
3274
+ dynamicPlacement: void 0,
3192
3275
  hairpin: void 0,
3193
3276
  pedal: void 0,
3194
3277
  pedals: [],
3195
3278
  tremolo: void 0,
3196
3279
  fingerings: [],
3197
3280
  navigation: void 0,
3281
+ navigationPlacement: void 0,
3198
3282
  markups: [],
3199
3283
  breath: false,
3284
+ caesura: false,
3200
3285
  glissando: false
3201
3286
  };
3202
3287
  if (!marks)
@@ -3230,6 +3315,8 @@ var extractMarkOptions = (marks) => {
3230
3315
  result.mordent = "upper";
3231
3316
  } else if (mark.type === OrnamentType.breath) {
3232
3317
  result.breath = true;
3318
+ } else if (mark.type === OrnamentType.caesura) {
3319
+ result.caesura = true;
3233
3320
  }
3234
3321
  break;
3235
3322
  case "dynamic": {
@@ -3237,6 +3324,9 @@ var extractMarkOptions = (marks) => {
3237
3324
  if (dynStr) {
3238
3325
  result.dynamic = dynStr;
3239
3326
  result.dynamics.push(dynStr);
3327
+ const p = mark.placement;
3328
+ if (p)
3329
+ result.dynamicPlacement = p;
3240
3330
  }
3241
3331
  break;
3242
3332
  }
@@ -3285,6 +3375,7 @@ var extractMarkOptions = (marks) => {
3285
3375
  break;
3286
3376
  case "navigation":
3287
3377
  result.navigation = mark.type;
3378
+ result.navigationPlacement = mark.placement ?? "above";
3288
3379
  break;
3289
3380
  case "markup":
3290
3381
  result.markups.push({
@@ -3302,7 +3393,7 @@ var extractMarkOptions = (marks) => {
3302
3393
  }
3303
3394
  return result;
3304
3395
  };
3305
- var noteEventToMEI = (event, indent, layerStaff, tieEnd, contextStemDir, keyFifths = 0, ottavaShift = 0, measureAccidentals, lyricXml = "", clefOctave = 0) => {
3396
+ var noteEventToMEI = (event, indent, layerStaff, tieEnd, contextStemDir, keyFifths = 0, ottavaShift = 0, measureAccidentals, lyricXml = "", clefOctave = 0, tieStartPitches, staffOffset = 0) => {
3306
3397
  const dur = DURATIONS[event.duration.division] || "4";
3307
3398
  const dots = event.duration.dots || 0;
3308
3399
  const markOptions = extractMarkOptions(event.marks);
@@ -3327,10 +3418,27 @@ var noteEventToMEI = (event, indent, layerStaff, tieEnd, contextStemDir, keyFift
3327
3418
  staff: event.staff,
3328
3419
  layerStaff,
3329
3420
  artics: markOptions.artics,
3330
- tremolo: markOptions.tremolo
3421
+ tremolo: markOptions.tremolo,
3422
+ headShape: event.headShape,
3423
+ staffOffset
3424
+ };
3425
+ const suppressTieAccid = (p, index) => {
3426
+ if (!tieEnd || !p.accid)
3427
+ return p;
3428
+ const start = tieStartPitches?.[index];
3429
+ const startAccid = start?.accidental ? ACCIDENTALS[start.accidental] : void 0;
3430
+ if (startAccid === void 0)
3431
+ return p;
3432
+ const ges = p.accid === "x" ? "ss" : p.accid;
3433
+ const startGes = startAccid === "x" ? "ss" : startAccid;
3434
+ if (startGes !== ges)
3435
+ return p;
3436
+ const copy = { ...p };
3437
+ delete copy.accid;
3438
+ return copy;
3331
3439
  };
3332
3440
  if (event.pitches.length === 1) {
3333
- const pitch = encodePitch(event.pitches[0], keyFifths, ottavaShift, measureAccidentals, clefOctave);
3441
+ const pitch = suppressTieAccid(encodePitch(event.pitches[0], keyFifths, ottavaShift, measureAccidentals, clefOctave), 0);
3334
3442
  const noteId = generateId("note");
3335
3443
  return {
3336
3444
  xml: buildNoteElement(pitch, dur, dots, indent, false, { ...noteOptions, lyricXml }, noteId),
@@ -3351,8 +3459,11 @@ var noteEventToMEI = (event, indent, layerStaff, tieEnd, contextStemDir, keyFift
3351
3459
  slurEnd: markOptions.slurEnd,
3352
3460
  fingerings: markOptions.fingerings,
3353
3461
  navigation: markOptions.navigation,
3462
+ navigationPlacement: markOptions.navigationPlacement,
3463
+ dynamicPlacement: markOptions.dynamicPlacement,
3354
3464
  markups: markOptions.markups,
3355
3465
  breath: markOptions.breath,
3466
+ caesura: markOptions.caesura,
3356
3467
  glissando: markOptions.glissando
3357
3468
  };
3358
3469
  }
@@ -3367,7 +3478,7 @@ var noteEventToMEI = (event, indent, layerStaff, tieEnd, contextStemDir, keyFift
3367
3478
  if (noteOptions.stemDir)
3368
3479
  chordAttrs += ` stem.dir="${noteOptions.stemDir}"`;
3369
3480
  if (layerStaff && noteOptions.staff && noteOptions.staff !== layerStaff) {
3370
- chordAttrs += ` staff="${noteOptions.staff}"`;
3481
+ chordAttrs += ` staff="${noteOptions.staff + (noteOptions.staffOffset || 0)}"`;
3371
3482
  }
3372
3483
  if (noteOptions.tremolo) {
3373
3484
  const stemMod = tremoloToStemMod(noteOptions.tremolo);
@@ -3376,9 +3487,9 @@ var noteEventToMEI = (event, indent, layerStaff, tieEnd, contextStemDir, keyFift
3376
3487
  }
3377
3488
  let result = `${indent}<chord ${chordAttrs}>
3378
3489
  `;
3379
- for (const p of event.pitches) {
3380
- const pitch = encodePitch(p, keyFifths, ottavaShift, measureAccidentals, clefOctave);
3381
- result += buildNoteElement(pitch, dur, dots, indent + " ", true);
3490
+ for (let pi = 0; pi < event.pitches.length; pi++) {
3491
+ const pitch = suppressTieAccid(encodePitch(event.pitches[pi], keyFifths, ottavaShift, measureAccidentals, clefOctave), pi);
3492
+ result += buildNoteElement(pitch, dur, dots, indent + " ", true, { headShape: noteOptions.headShape });
3382
3493
  }
3383
3494
  if (noteOptions.artics.length > 0) {
3384
3495
  const aboveArtics = noteOptions.artics.filter((a) => a.placement === "above").map((a) => a.type);
@@ -3420,8 +3531,11 @@ var noteEventToMEI = (event, indent, layerStaff, tieEnd, contextStemDir, keyFift
3420
3531
  slurEnd: markOptions.slurEnd,
3421
3532
  fingerings: markOptions.fingerings,
3422
3533
  navigation: markOptions.navigation,
3534
+ navigationPlacement: markOptions.navigationPlacement,
3535
+ dynamicPlacement: markOptions.dynamicPlacement,
3423
3536
  markups: markOptions.markups,
3424
3537
  breath: markOptions.breath,
3538
+ caesura: markOptions.caesura,
3425
3539
  glissando: markOptions.glissando
3426
3540
  };
3427
3541
  };
@@ -3434,10 +3548,22 @@ var restEventToMEI = (event, indent, keyFifths = 0, ottavaShift = 0, measureAcci
3434
3548
  if (crossStaff)
3435
3549
  attrs += ` staff="${crossStaff}"`;
3436
3550
  let fermata;
3551
+ const restMarkups = [];
3552
+ const restDynamics = [];
3437
3553
  if (event.marks) {
3438
3554
  for (const mk of event.marks) {
3439
3555
  if (mk.markType === "ornament" && mk.type === "fermata")
3440
3556
  fermata = "normal";
3557
+ else if (mk.markType === "markup") {
3558
+ restMarkups.push({
3559
+ content: mk.content,
3560
+ placement: mk.placement
3561
+ });
3562
+ } else if (mk.markType === "dynamic") {
3563
+ const label = DYNAMIC_MAP[mk.type];
3564
+ if (label)
3565
+ restDynamics.push({ startid: restId, label, placement: mk.placement });
3566
+ }
3441
3567
  }
3442
3568
  }
3443
3569
  if (event.pitch) {
@@ -3446,15 +3572,18 @@ var restEventToMEI = (event, indent, keyFifths = 0, ottavaShift = 0, measureAcci
3446
3572
  }
3447
3573
  if (event.invisible) {
3448
3574
  return { xml: `${indent}<space ${attrs} />
3449
- `, elementId: restId, fermata };
3575
+ `, elementId: restId, fermata, markups: restMarkups, dynamics: restDynamics };
3450
3576
  }
3451
3577
  if (event.fullMeasure) {
3452
3578
  const mRestId = generateId("mrest");
3579
+ if (event.multiMeasure && event.multiMeasure > 1)
3580
+ return { xml: `${indent}<multiRest xml:id="${mRestId}" num="${event.multiMeasure}" />
3581
+ `, elementId: mRestId, fermata, markups: restMarkups, dynamics: restDynamics };
3453
3582
  return { xml: `${indent}<mRest xml:id="${mRestId}" />
3454
- `, elementId: mRestId, fermata };
3583
+ `, elementId: mRestId, fermata, markups: restMarkups, dynamics: restDynamics };
3455
3584
  }
3456
3585
  return { xml: `${indent}<rest ${attrs} />
3457
- `, elementId: restId, fermata };
3586
+ `, elementId: restId, fermata, markups: restMarkups, dynamics: restDynamics };
3458
3587
  };
3459
3588
  var tupletHasInternalBeams = (event) => {
3460
3589
  let starts = 0;
@@ -3470,17 +3599,27 @@ var tupletHasInternalBeams = (event) => {
3470
3599
  }
3471
3600
  return starts > 0 && starts === ends;
3472
3601
  };
3473
- var tupletEventToMEI = (event, indent, layerStaff, keyFifths = 0, currentStaff, ottavaShift = 0, inParentBeam = false, measureAccidentals, currentClef, lyricCursors = []) => {
3602
+ var tupletPitchesMatch = (p1, p2) => {
3603
+ if (p1.length !== p2.length)
3604
+ return false;
3605
+ for (let i = 0; i < p1.length; i++) {
3606
+ if (p1[i].phonet !== p2[i].phonet || p1[i].octave !== p2[i].octave)
3607
+ return false;
3608
+ }
3609
+ return true;
3610
+ };
3611
+ var tupletEventToMEI = (event, indent, layerStaff, keyFifths = 0, currentStaff, ottavaShift = 0, inParentBeam = false, measureAccidentals, currentClef, lyricCursors = [], contextStemDir, initialTiePitches = []) => {
3474
3612
  const num = event.ratio.denominator;
3475
3613
  const numbase = event.ratio.numerator;
3476
3614
  let xml = `${indent}<tuplet xml:id="${generateId("tuplet")}" num="${num}" numbase="${numbase}">
3477
3615
  `;
3478
3616
  const baseIndent = indent + " ";
3479
- const effectiveStaff = currentStaff ?? layerStaff;
3617
+ let effectiveStaff = currentStaff ?? layerStaff;
3480
3618
  let firstNoteId = null;
3481
3619
  let lastNoteId = null;
3482
3620
  const slurStarts = [];
3483
3621
  const slurEnds = [];
3622
+ const slurActions = [];
3484
3623
  const dynamics = [];
3485
3624
  const fermatas = [];
3486
3625
  const trills = [];
@@ -3490,10 +3629,14 @@ var tupletEventToMEI = (event, indent, layerStaff, keyFifths = 0, currentStaff,
3490
3629
  const pedals = [];
3491
3630
  const fingerings = [];
3492
3631
  const markups = [];
3632
+ const hairpinStarts = [];
3633
+ const hairpinEnds = [];
3493
3634
  const hasInternalBeams = !inParentBeam && tupletHasInternalBeams(event);
3494
3635
  let beamOpen = false;
3495
3636
  let activeClef = currentClef;
3496
3637
  let endingClef;
3638
+ let pendingTieIn = [...initialTiePitches];
3639
+ let pendingTieOut = [];
3497
3640
  for (const e of event.events) {
3498
3641
  if (e.type === "note") {
3499
3642
  const noteEvent = e;
@@ -3506,18 +3649,29 @@ var tupletEventToMEI = (event, indent, layerStaff, keyFifths = 0, currentStaff,
3506
3649
  const noteIndent = beamOpen ? baseIndent + " " : baseIndent;
3507
3650
  const effectiveNoteEvent = effectiveStaff && layerStaff && effectiveStaff !== layerStaff ? { ...noteEvent, staff: effectiveStaff } : noteEvent;
3508
3651
  const lyricXml = lyricCursors.length ? lyricXmlForEvent(lyricCursors, noteIndent + " ") : "";
3509
- const result = noteEventToMEI(effectiveNoteEvent, noteIndent, layerStaff, false, void 0, keyFifths, ottavaShift, measureAccidentals, lyricXml, clefOctaveShift(activeClef));
3652
+ const carryTieEnd = pendingTieIn.length > 0 && tupletPitchesMatch(pendingTieIn, noteEvent.pitches);
3653
+ const result = noteEventToMEI(effectiveNoteEvent, noteIndent, layerStaff, carryTieEnd, contextStemDir, keyFifths, ottavaShift, measureAccidentals, lyricXml, clefOctaveShift(activeClef), carryTieEnd ? pendingTieIn : void 0);
3654
+ if (carryTieEnd)
3655
+ pendingTieIn = [];
3510
3656
  xml += result.xml;
3511
3657
  if (!firstNoteId)
3512
3658
  firstNoteId = result.elementId;
3513
3659
  lastNoteId = result.elementId;
3660
+ if (result.hasTieStart)
3661
+ pendingTieOut = result.pitches;
3662
+ else if (carryTieEnd)
3663
+ pendingTieOut = [];
3514
3664
  if (result.slurStart)
3515
3665
  slurStarts.push(result.elementId);
3516
3666
  if (result.slurEnd)
3517
3667
  slurEnds.push(result.elementId);
3668
+ if (result.slurEnd)
3669
+ slurActions.push({ id: result.elementId, start: false });
3670
+ if (result.slurStart)
3671
+ slurActions.push({ id: result.elementId, start: true });
3518
3672
  if (result.dynamics)
3519
3673
  for (const label of result.dynamics)
3520
- dynamics.push({ startid: result.elementId, label });
3674
+ dynamics.push({ startid: result.elementId, label, placement: result.dynamicPlacement });
3521
3675
  if (result.fermata)
3522
3676
  fermatas.push({ startid: result.elementId, shape: result.fermata === "short" ? "angular" : void 0 });
3523
3677
  if (result.trill)
@@ -3535,6 +3689,12 @@ var tupletEventToMEI = (event, indent, layerStaff, keyFifths = 0, currentStaff,
3535
3689
  fingerings.push({ startid: result.elementId, finger: fing.finger, placement: fing.placement });
3536
3690
  for (const mkup of result.markups)
3537
3691
  markups.push({ startid: result.elementId, content: mkup.content, placement: mkup.placement });
3692
+ if (markOptions.hairpin === "crescStart")
3693
+ hairpinStarts.push({ id: result.elementId, form: "cres" });
3694
+ else if (markOptions.hairpin === "dimStart")
3695
+ hairpinStarts.push({ id: result.elementId, form: "dim" });
3696
+ else if (markOptions.hairpin === "crescEnd" || markOptions.hairpin === "dimEnd")
3697
+ hairpinEnds.push(result.elementId);
3538
3698
  if (hasInternalBeams && markOptions.beamEnd && beamOpen) {
3539
3699
  xml += `${baseIndent}</beam>
3540
3700
  `;
@@ -3547,8 +3707,41 @@ var tupletEventToMEI = (event, indent, layerStaff, keyFifths = 0, currentStaff,
3547
3707
  lastNoteId = restResult.elementId;
3548
3708
  if (restResult.fermata)
3549
3709
  fermatas.push({ startid: restResult.elementId, shape: restResult.fermata === "short" ? "angular" : void 0 });
3710
+ for (const mkup of restResult.markups)
3711
+ markups.push({ startid: restResult.elementId, content: mkup.content, placement: mkup.placement });
3712
+ dynamics.push(...restResult.dynamics);
3713
+ } else if (e.type === "tuplet") {
3714
+ const nestedIndent = beamOpen ? baseIndent + " " : baseIndent;
3715
+ const nested = tupletEventToMEI(e, nestedIndent, layerStaff, keyFifths, effectiveStaff, ottavaShift, inParentBeam, measureAccidentals, activeClef, [], contextStemDir, pendingTieIn);
3716
+ xml += nested.xml;
3717
+ if (!firstNoteId)
3718
+ firstNoteId = nested.firstNoteId;
3719
+ lastNoteId = nested.lastNoteId ?? lastNoteId;
3720
+ pendingTieIn = [];
3721
+ if (nested.pendingTieOut.length)
3722
+ pendingTieOut = nested.pendingTieOut;
3723
+ slurStarts.push(...nested.slurStarts);
3724
+ slurEnds.push(...nested.slurEnds);
3725
+ slurActions.push(...nested.slurActions);
3726
+ dynamics.push(...nested.dynamics);
3727
+ fermatas.push(...nested.fermatas);
3728
+ trills.push(...nested.trills);
3729
+ mordents.push(...nested.mordents);
3730
+ turns.push(...nested.turns);
3731
+ arpeggios.push(...nested.arpeggios);
3732
+ pedals.push(...nested.pedals);
3733
+ fingerings.push(...nested.fingerings);
3734
+ markups.push(...nested.markups);
3735
+ hairpinStarts.push(...nested.hairpinStarts);
3736
+ hairpinEnds.push(...nested.hairpinEnds);
3737
+ if (nested.endingClef) {
3738
+ activeClef = nested.endingClef;
3739
+ endingClef = nested.endingClef;
3740
+ }
3550
3741
  } else if (e.type === "context") {
3551
3742
  const ctx = e;
3743
+ if (ctx.staff !== void 0 && ctx.staff !== effectiveStaff)
3744
+ effectiveStaff = ctx.staff;
3552
3745
  if (ctx.clef && ctx.clef !== activeClef) {
3553
3746
  const layerStaffNum = layerStaff || 1;
3554
3747
  const effectiveStaffNum = effectiveStaff ?? layerStaffNum;
@@ -3568,7 +3761,7 @@ var tupletEventToMEI = (event, indent, layerStaff, keyFifths = 0, currentStaff,
3568
3761
  }
3569
3762
  xml += `${indent}</tuplet>
3570
3763
  `;
3571
- return { xml, firstNoteId, lastNoteId, slurStarts, slurEnds, dynamics, fermatas, trills, mordents, turns, arpeggios, pedals, fingerings, markups, endingClef };
3764
+ return { xml, firstNoteId, lastNoteId, pendingTieOut, slurStarts, slurEnds, slurActions, dynamics, fermatas, trills, mordents, turns, arpeggios, pedals, fingerings, markups, hairpinStarts, hairpinEnds, endingClef };
3572
3765
  };
3573
3766
  var tremoloEventToMEI = (event, indent, keyFifths = 0, ottavaShift = 0, measureAccidentals, clefOctave = 0) => {
3574
3767
  const ftremId = generateId("fTrem");
@@ -3663,7 +3856,7 @@ var getEventBeamMarks = (event) => {
3663
3856
  }
3664
3857
  return { beamStart: false, beamEnd: false };
3665
3858
  };
3666
- var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0, initialClef, initialSlurs = [], initialHairpin = null, initialOctave = null, initialGliss = null) => {
3859
+ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0, initialClef, initialSlurs = [], initialHairpin = null, initialOctave = null, initialGliss = null, staffOffset = 0) => {
3667
3860
  const layerId = generateId("layer");
3668
3861
  let xml = `${indent}<layer xml:id="${layerId}" n="${layerN}">
3669
3862
  `;
@@ -3707,12 +3900,14 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3707
3900
  }
3708
3901
  };
3709
3902
  const slurs = [];
3710
- const openSlurs = initialSlurs.map((startId) => ({ startId }));
3903
+ const slurEndReplacements = {};
3904
+ const openSlurs = initialSlurs.map((s) => ({ ...s }));
3711
3905
  let currentSlur = openSlurs.length ? openSlurs[openSlurs.length - 1] : null;
3712
3906
  const arpeggios = [];
3713
3907
  const fermatas = [];
3714
3908
  const trills = [];
3715
3909
  const breaths = [];
3910
+ const caesuras = [];
3716
3911
  const glissandos = [];
3717
3912
  let pendingGlissStart = initialGliss;
3718
3913
  const mordents = [];
@@ -3783,7 +3978,7 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3783
3978
  applyPendingOttavaShift();
3784
3979
  const effectiveNoteEvent = currentStaff !== voice.staff ? { ...noteEvent, staff: currentStaff } : noteEvent;
3785
3980
  const eventLyricXml = isGraceNote ? "" : lyricXmlForEvent(lyricCursors, currentIndent + " ");
3786
- const result = noteEventToMEI(effectiveNoteEvent, currentIndent, voice.staff, tieEnd, currentStemDirection, keyFifths, currentOttavaShift, measureAccidentals, eventLyricXml, clefOctaveShift(currentClef));
3981
+ const result = noteEventToMEI(effectiveNoteEvent, currentIndent, voice.staff, tieEnd, currentStemDirection, keyFifths, currentOttavaShift, measureAccidentals, eventLyricXml, clefOctaveShift(currentClef), tieEnd ? pendingTiePitches : void 0, staffOffset);
3787
3982
  xml += result.xml;
3788
3983
  lastNoteId = result.elementId;
3789
3984
  extendOttavaEnd(result.elementId);
@@ -3824,13 +4019,16 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3824
4019
  }
3825
4020
  if (result.slurEnd && openSlurs.length > 0) {
3826
4021
  const open = openSlurs.pop();
3827
- slurs.push({
3828
- startId: open.startId,
3829
- endId: result.elementId
3830
- });
4022
+ if (open.token) {
4023
+ slurEndReplacements[open.token] = result.elementId;
4024
+ } else {
4025
+ slurs.push({ startId: open.startId, endId: result.elementId });
4026
+ }
3831
4027
  }
3832
4028
  if (result.slurStart) {
3833
- openSlurs.push({ startId: result.elementId });
4029
+ const token = `__SLUR_END_${generateId("slurEnd")}__`;
4030
+ openSlurs.push({ startId: result.elementId, token });
4031
+ slurs.push({ startId: result.elementId, endId: token });
3834
4032
  }
3835
4033
  currentSlur = openSlurs.length ? openSlurs[openSlurs.length - 1] : null;
3836
4034
  if (result.arpeggio) {
@@ -3848,6 +4046,9 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3848
4046
  if (result.breath) {
3849
4047
  breaths.push({ startid: result.elementId });
3850
4048
  }
4049
+ if (result.caesura) {
4050
+ caesuras.push({ startid: result.elementId });
4051
+ }
3851
4052
  if (pendingGlissStart) {
3852
4053
  glissandos.push({ startid: pendingGlissStart, endid: result.elementId });
3853
4054
  pendingGlissStart = null;
@@ -3866,7 +4067,7 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3866
4067
  }
3867
4068
  if (result.dynamics) {
3868
4069
  for (const label of result.dynamics)
3869
- dynamics.push({ startid: result.elementId, label });
4070
+ dynamics.push({ startid: result.elementId, label, placement: result.dynamicPlacement });
3870
4071
  }
3871
4072
  for (const fing of result.fingerings) {
3872
4073
  fingerings.push({ startid: result.elementId, finger: fing.finger, placement: fing.placement });
@@ -3875,7 +4076,7 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3875
4076
  markups.push({ startid: result.elementId, content: mkup.content, placement: mkup.placement });
3876
4077
  }
3877
4078
  if (result.navigation) {
3878
- navigations.push({ type: result.navigation });
4079
+ navigations.push({ type: result.navigation, placement: result.navigationPlacement, staff: voice.staff || 1 });
3879
4080
  }
3880
4081
  break;
3881
4082
  }
@@ -3889,6 +4090,9 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3889
4090
  applyOttavaAnchor(restResult.elementId);
3890
4091
  if (restResult.fermata)
3891
4092
  fermatas.push({ startid: restResult.elementId, shape: restResult.fermata === "short" ? "angular" : void 0 });
4093
+ for (const mkup of restResult.markups)
4094
+ markups.push({ startid: restResult.elementId, content: mkup.content, placement: mkup.placement });
4095
+ dynamics.push(...restResult.dynamics);
3892
4096
  flushPendingMarkups(restResult.elementId);
3893
4097
  flushPendingDynamics(restResult.elementId);
3894
4098
  break;
@@ -3896,7 +4100,7 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3896
4100
  case "tuplet":
3897
4101
  case "times": {
3898
4102
  applyPendingOttavaShift();
3899
- const tupletResult = tupletEventToMEI(event, currentIndent, voice.staff, keyFifths, currentStaff, currentOttavaShift, beamElementOpen, measureAccidentals, currentClef, lyricCursors);
4103
+ const tupletResult = tupletEventToMEI(event, currentIndent, voice.staff, keyFifths, currentStaff, currentOttavaShift, beamElementOpen, measureAccidentals, currentClef, lyricCursors, currentStemDirection, pendingTiePitches);
3900
4104
  xml += tupletResult.xml;
3901
4105
  if (tupletResult.firstNoteId)
3902
4106
  applyOttavaAnchor(tupletResult.firstNoteId);
@@ -3910,19 +4114,25 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
3910
4114
  flushPendingDynamics(tupletResult.firstNoteId);
3911
4115
  lastNoteId = tupletResult.lastNoteId ?? tupletResult.firstNoteId;
3912
4116
  }
3913
- for (const endId of tupletResult.slurEnds) {
3914
- if (openSlurs.length > 0) {
4117
+ for (const act of tupletResult.slurActions) {
4118
+ if (act.start) {
4119
+ openSlurs.push({ startId: act.id });
4120
+ } else if (openSlurs.length > 0) {
3915
4121
  const open = openSlurs.pop();
3916
- slurs.push({
3917
- startId: open.startId,
3918
- endId
3919
- });
4122
+ slurs.push({ startId: open.startId, endId: act.id });
3920
4123
  }
3921
4124
  }
3922
- for (const startId of tupletResult.slurStarts) {
3923
- openSlurs.push({ startId });
3924
- }
3925
4125
  currentSlur = openSlurs.length ? openSlurs[openSlurs.length - 1] : null;
4126
+ for (const endId of tupletResult.hairpinEnds) {
4127
+ const pick = openHairpins.length - 1;
4128
+ if (pick >= 0) {
4129
+ const open = openHairpins.splice(pick, 1)[0];
4130
+ hairpins.push({ form: open.form, startId: open.startId, endId });
4131
+ }
4132
+ }
4133
+ for (const hs of tupletResult.hairpinStarts)
4134
+ openHairpins.push({ form: hs.form, startId: hs.id });
4135
+ pendingTiePitches = tupletResult.pendingTieOut;
3926
4136
  dynamics.push(...tupletResult.dynamics);
3927
4137
  fermatas.push(...tupletResult.fermatas);
3928
4138
  trills.push(...tupletResult.trills);
@@ -4060,9 +4270,9 @@ var encodeLayer = (voice, layerN, indent, initialTiePitches = [], keyFifths = 0,
4060
4270
  }
4061
4271
  xml += `${indent}</layer>
4062
4272
  `;
4063
- return { xml, hairpins, pedals, octaves, slurs, arpeggios, fermatas, trills, breaths, glissandos, mordents, turns, dynamics, fingerings, navigations, harmonies, barlines, markups, pendingTiePitches, pendingSlur: openSlurs.map((s) => s.startId), pendingGliss: pendingGlissStart, pendingHairpin, pendingOctave, ottavaExplicitlyClosed, endingClef: currentClef, lastNoteId, currentOttavaShift, octaveEndReplacements };
4273
+ return { xml, hairpins, pedals, octaves, slurs, arpeggios, fermatas, trills, breaths, caesuras, glissandos, mordents, turns, dynamics, fingerings, navigations, harmonies, barlines, markups, pendingTiePitches, pendingSlur: openSlurs.map((s) => ({ startId: s.startId, token: s.token })), slurEndReplacements, pendingGliss: pendingGlissStart, pendingHairpin, pendingOctave, ottavaExplicitlyClosed, endingClef: currentClef, lastNoteId, currentOttavaShift, octaveEndReplacements };
4064
4274
  };
4065
- var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpinState = {}, ottavaState = {}, keyFifths = 0, initialClef, glissState = {}) => {
4275
+ var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpinState = {}, ottavaState = {}, keyFifths = 0, initialClef, glissState = {}, staffOffset = 0) => {
4066
4276
  const staffId = generateId("staff");
4067
4277
  let xml = `${indent}<staff xml:id="${staffId}" n="${staffN}">
4068
4278
  `;
@@ -4074,6 +4284,7 @@ var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpi
4074
4284
  const allFermatas = [];
4075
4285
  const allTrills = [];
4076
4286
  const allBreaths = [];
4287
+ const allCaesuras = [];
4077
4288
  const allGlissandos = [];
4078
4289
  const allMordents = [];
4079
4290
  const allTurns = [];
@@ -4091,6 +4302,7 @@ var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpi
4091
4302
  const ottavaExplicitlyClosed = {};
4092
4303
  const lastNoteIds = {};
4093
4304
  const octaveEndReplacements = {};
4305
+ const slurEndReplacements = {};
4094
4306
  let endingClef = initialClef;
4095
4307
  if (voices.length === 0) {
4096
4308
  xml += `${indent} <layer xml:id="${generateId("layer")}" n="1" />
@@ -4104,7 +4316,7 @@ var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpi
4104
4316
  const initialHairpin = hairpinState[tieKey] || null;
4105
4317
  const initialOctave = ottavaState[tieKey] || null;
4106
4318
  const initialGliss = glissState[tieKey] || null;
4107
- const result = encodeLayer(voice, layerN, indent + " ", initialTies, keyFifths, endingClef, initialSlur, initialHairpin, initialOctave, initialGliss);
4319
+ const result = encodeLayer(voice, layerN, indent + " ", initialTies, keyFifths, endingClef, initialSlur, initialHairpin, initialOctave, initialGliss, staffOffset);
4108
4320
  xml += result.xml;
4109
4321
  allHairpins.push(...result.hairpins);
4110
4322
  allPedals.push(...result.pedals);
@@ -4114,6 +4326,7 @@ var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpi
4114
4326
  allFermatas.push(...result.fermatas);
4115
4327
  allTrills.push(...result.trills);
4116
4328
  allBreaths.push(...result.breaths);
4329
+ allCaesuras.push(...result.caesuras);
4117
4330
  allGlissandos.push(...result.glissandos);
4118
4331
  allMordents.push(...result.mordents);
4119
4332
  allTurns.push(...result.turns);
@@ -4124,14 +4337,13 @@ var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpi
4124
4337
  allBarlines.push(...result.barlines);
4125
4338
  allMarkups.push(...result.markups);
4126
4339
  Object.assign(octaveEndReplacements, result.octaveEndReplacements);
4340
+ Object.assign(slurEndReplacements, result.slurEndReplacements);
4127
4341
  if (result.pendingTiePitches.length > 0) {
4128
4342
  pendingTies[tieKey] = result.pendingTiePitches;
4129
4343
  }
4130
4344
  pendingSlurs[tieKey] = result.pendingSlur;
4131
4345
  pendingGlisses[tieKey] = result.pendingGliss;
4132
- if (result.pendingHairpin) {
4133
- pendingHairpins[tieKey] = result.pendingHairpin;
4134
- }
4346
+ pendingHairpins[tieKey] = result.pendingHairpin;
4135
4347
  if (result.pendingOctave) {
4136
4348
  pendingOctaves[tieKey] = result.pendingOctave;
4137
4349
  }
@@ -4148,6 +4360,7 @@ var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpi
4148
4360
  `;
4149
4361
  return {
4150
4362
  xml,
4363
+ slurEndReplacements,
4151
4364
  hairpins: allHairpins,
4152
4365
  pedals: allPedals,
4153
4366
  octaves: allOctaves,
@@ -4156,6 +4369,7 @@ var encodeStaff = (voices, staffN, indent, tieState = {}, slurState = {}, hairpi
4156
4369
  fermatas: allFermatas,
4157
4370
  trills: allTrills,
4158
4371
  breaths: allBreaths,
4372
+ caesuras: allCaesuras,
4159
4373
  glissandos: allGlissandos,
4160
4374
  mordents: allMordents,
4161
4375
  turns: allTurns,
@@ -4263,7 +4477,7 @@ var BARLINE_TO_MEI = {
4263
4477
  ":..:|": "rptboth",
4264
4478
  ":..:": "rptboth"
4265
4479
  };
4266
- var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState, hairpinState, ottavaState, keyFifths = 0, partInfos = [], clefState = {}, octaveEndReplacements = {}, measureIds, glissState = {}, barHidden = false, meterUnit = 4) => {
4480
+ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState, hairpinState, ottavaState, keyFifths = 0, partInfos = [], clefState = {}, octaveEndReplacements = {}, measureIds, glissState = {}, barHidden = false, meterUnit = 4, slurEndReplacements = {}) => {
4267
4481
  const measureId = generateId("measure");
4268
4482
  if (measureIds)
4269
4483
  measureIds.push(measureId);
@@ -4276,6 +4490,7 @@ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState
4276
4490
  const allFermatas = [];
4277
4491
  const allTrills = [];
4278
4492
  const allBreaths = [];
4493
+ const allCaesuras = [];
4279
4494
  const allGlissandos = [];
4280
4495
  const allMordents = [];
4281
4496
  const allTurns = [];
@@ -4305,12 +4520,14 @@ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState
4305
4520
  }
4306
4521
  }
4307
4522
  const voicesByStaff = {};
4523
+ const staffOffsets = {};
4308
4524
  for (let pi = 0; pi < measure.parts.length; pi++) {
4309
4525
  const part = measure.parts[pi];
4310
4526
  const partOffset = partInfos[pi]?.staffOffset || 0;
4311
4527
  for (const voice of part.voices) {
4312
4528
  const localStaff = voice.staff || 1;
4313
4529
  const globalStaff = partOffset + localStaff;
4530
+ staffOffsets[globalStaff] = partOffset;
4314
4531
  if (!voicesByStaff[globalStaff]) {
4315
4532
  voicesByStaff[globalStaff] = [];
4316
4533
  }
@@ -4320,7 +4537,7 @@ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState
4320
4537
  for (let si = 1; si <= totalStaves; si++) {
4321
4538
  const voices = voicesByStaff[si] || [];
4322
4539
  const initialClef = clefState[si];
4323
- const result = encodeStaff(voices, si, indent + " ", tieState, slurState, hairpinState, ottavaState, keyFifths, initialClef, glissState);
4540
+ const result = encodeStaff(voices, si, indent + " ", tieState, slurState, hairpinState, ottavaState, keyFifths, initialClef, glissState, staffOffsets[si] || 0);
4324
4541
  staffContent += result.xml;
4325
4542
  allHairpins.push(...result.hairpins);
4326
4543
  allPedals.push(...result.pedals);
@@ -4330,6 +4547,7 @@ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState
4330
4547
  allFermatas.push(...result.fermatas);
4331
4548
  allTrills.push(...result.trills);
4332
4549
  allBreaths.push(...result.breaths);
4550
+ allCaesuras.push(...result.caesuras);
4333
4551
  allGlissandos.push(...result.glissandos);
4334
4552
  allMordents.push(...result.mordents);
4335
4553
  allTurns.push(...result.turns);
@@ -4340,6 +4558,7 @@ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState
4340
4558
  allBarlines.push(...result.barlines);
4341
4559
  allMarkups.push(...result.markups);
4342
4560
  Object.assign(octaveEndReplacements, result.octaveEndReplacements);
4561
+ Object.assign(slurEndReplacements, result.slurEndReplacements);
4343
4562
  Object.assign(tieState, result.pendingTies);
4344
4563
  Object.assign(slurState, result.pendingSlurs);
4345
4564
  Object.assign(glissState, result.pendingGlisses);
@@ -4407,6 +4626,10 @@ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState
4407
4626
  }
4408
4627
  for (const br of allBreaths) {
4409
4628
  staffContent += `${indent} <breath xml:id="${generateId("breath")}" startid="#${br.startid}" />
4629
+ `;
4630
+ }
4631
+ for (const ca of allCaesuras) {
4632
+ staffContent += `${indent} <caesura xml:id="${generateId("caesura")}" startid="#${ca.startid}" />
4410
4633
  `;
4411
4634
  }
4412
4635
  for (const gl of allGlissandos) {
@@ -4423,7 +4646,8 @@ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState
4423
4646
  `;
4424
4647
  }
4425
4648
  for (const dyn of allDynamics) {
4426
- staffContent += `${indent} <dynam xml:id="${generateId("dynam")}" startid="#${dyn.startid}">${dyn.label}</dynam>
4649
+ const placeAttr = dyn.placement ? ` place="${dyn.placement}"` : "";
4650
+ staffContent += `${indent} <dynam xml:id="${generateId("dynam")}" startid="#${dyn.startid}"${placeAttr}>${dyn.label}</dynam>
4427
4651
  `;
4428
4652
  }
4429
4653
  for (const fing of allFingerings) {
@@ -4433,7 +4657,9 @@ var encodeMeasure = (measure, measureN, indent, totalStaves, tieState, slurState
4433
4657
  }
4434
4658
  for (const nav of allNavigations) {
4435
4659
  const glyph = nav.type === "coda" ? "\u{1D10C}" : "\u{1D10B}";
4436
- staffContent += `${indent} <dir xml:id="${generateId("dir")}" tstamp="1">${glyph}</dir>
4660
+ const placeAttr = nav.placement ? ` place="${nav.placement}"` : "";
4661
+ const staffAttr = nav.staff ? ` staff="${nav.staff}"` : "";
4662
+ staffContent += `${indent} <dir xml:id="${generateId("dir")}" tstamp="1"${placeAttr}${staffAttr}>${glyph}</dir>
4437
4663
  `;
4438
4664
  }
4439
4665
  for (const harm of allHarmonies) {
@@ -4593,7 +4819,7 @@ var staffDefWithLabel = (attrs, instr, indent, channels) => {
4593
4819
  `;
4594
4820
  return xml;
4595
4821
  };
4596
- var encodeScoreDef = (keySig, timeNum, timeDen, partInfos, indent, meterSymbol, stavesCode, instruments = {}, meterHidden = false) => {
4822
+ var encodeScoreDef = (keySig, timeNum, timeDen, partInfos, indent, meterSymbol, stavesCode, instruments = {}, meterHidden = false, staffKeys = {}) => {
4597
4823
  const scoreDefId = generateId("scoredef");
4598
4824
  const channels = newChannelAllocator();
4599
4825
  const meterSymAttr = meterSymbol ? ` meter.sym="${meterSymbol}"` : "";
@@ -4610,7 +4836,7 @@ var encodeScoreDef = (keySig, timeNum, timeDen, partInfos, indent, meterSymbol,
4610
4836
  if (stavesCode) {
4611
4837
  const layout = parseStaffLayout(stavesCode);
4612
4838
  if (layout.stavesCount === flatStaves.length) {
4613
- const staffDefAttrs = flatStaves.map((s) => `xml:id="${generateId("staffdef")}" n="${s.n}" lines="5" ${staffDefClefAttrs(s.clef)}`);
4839
+ const staffDefAttrs = flatStaves.map((s) => `xml:id="${generateId("staffdef")}" n="${s.n}" lines="5" ${staffDefClefAttrs(s.clef)}` + (staffKeys[s.n] !== void 0 ? ` key.sig="${KEY_SIGS[staffKeys[s.n]] || "0"}"` : ""));
4614
4840
  xml += layoutGroupToMEI(layout.group, staffDefAttrs, { i: 0 }, `${indent} `, instruments, channels);
4615
4841
  layoutUsed = true;
4616
4842
  }
@@ -4631,7 +4857,7 @@ var encodeScoreDef = (keySig, timeNum, timeDen, partInfos, indent, meterSymbol,
4631
4857
  const globalStaff = info.staffOffset + ls;
4632
4858
  const clef = info.clefs[ls] || Clef.treble;
4633
4859
  const leafInstr = instruments[`${globalStaff}`];
4634
- const attrs = `xml:id="${generateId("staffdef")}" n="${globalStaff}" lines="5" ${staffDefClefAttrs(clef)}`;
4860
+ const attrs = `xml:id="${generateId("staffdef")}" n="${globalStaff}" lines="5" ${staffDefClefAttrs(clef)}` + (staffKeys[globalStaff] !== void 0 ? ` key.sig="${KEY_SIGS[staffKeys[globalStaff]] || "0"}"` : "");
4635
4861
  xml += staffDefWithLabel(attrs, leafInstr, `${indent} `, channels);
4636
4862
  }
4637
4863
  xml += `${indent} </staffGrp>
@@ -4930,6 +5156,33 @@ var encode = (doc, options = {}) => {
4930
5156
  currentTimeDen = firstMeasure.timeSig.denominator;
4931
5157
  currentMeterSymbol = firstMeasure.timeSig.symbol;
4932
5158
  }
5159
+ const voiceKeys = [];
5160
+ {
5161
+ const offsets = [];
5162
+ let running = 0;
5163
+ for (const info of partInfos) {
5164
+ offsets.push(running);
5165
+ running += info.maxStaff;
5166
+ }
5167
+ firstMeasure.parts.forEach((part, pi) => {
5168
+ for (const voice of part.voices) {
5169
+ const keyEv = voice.events.find((e) => e.type === "context" && !!e.key);
5170
+ if (!keyEv)
5171
+ continue;
5172
+ voiceKeys.push({
5173
+ staff: (offsets[pi] ?? 0) + (voice.staff || 1),
5174
+ fifths: keyToFifths(keyEv.key)
5175
+ });
5176
+ }
5177
+ });
5178
+ }
5179
+ if (voiceKeys.length > 0)
5180
+ currentKey = voiceKeys[0].fifths;
5181
+ const staffKeys = {};
5182
+ for (const vk of voiceKeys) {
5183
+ if (vk.fifths !== currentKey)
5184
+ staffKeys[vk.staff] = vk.fifths;
5185
+ }
4933
5186
  const keySig = KEY_SIGS[currentKey] || "0";
4934
5187
  const shouldAutoBeam = resolveAutoBeam(doc);
4935
5188
  if (shouldAutoBeam) {
@@ -4991,7 +5244,7 @@ var encode = (doc, options = {}) => {
4991
5244
  mei += `${indent}${indent}${indent}${indent}<score xml:id="${generateId("score")}">
4992
5245
  `;
4993
5246
  const omitStates = computeOmitStates(doc.measures);
4994
- mei += encodeScoreDef(keySig, currentTimeNum, currentTimeDen, partInfos, `${indent}${indent}${indent}${indent}${indent}`, currentMeterSymbol, doc.metadata?.staves, doc.metadata?.instruments, omitStates.meterHidden[0]);
5247
+ mei += encodeScoreDef(keySig, currentTimeNum, currentTimeDen, partInfos, `${indent}${indent}${indent}${indent}${indent}`, currentMeterSymbol, doc.metadata?.staves, doc.metadata?.instruments, omitStates.meterHidden[0], staffKeys);
4995
5248
  mei += `${indent}${indent}${indent}${indent}${indent}<section xml:id="${generateId("section")}">
4996
5249
  `;
4997
5250
  const expansionInsertPos = mei.length;
@@ -5051,6 +5304,7 @@ var encode = (doc, options = {}) => {
5051
5304
  const hairpinState = {};
5052
5305
  const ottavaState = {};
5053
5306
  const octaveEndReplacements = {};
5307
+ const slurEndReplacements = {};
5054
5308
  const clefState = {};
5055
5309
  const transState = {};
5056
5310
  for (let pi = 0; pi < partInfos.length; pi++) {
@@ -5123,7 +5377,7 @@ var encode = (doc, options = {}) => {
5123
5377
  if (openTag)
5124
5378
  mei += openTag;
5125
5379
  const measureIndent = segDecomp ? `${mIndent}${indent}` : mIndent;
5126
- mei += encodeMeasure(measure, mIndex, measureIndent, totalStaves, tieState, slurState, hairpinState, ottavaState, currentKey, partInfos, clefState, octaveEndReplacements, measureIds, glissState, omitStates.barHidden[mi], currentTimeDen);
5380
+ mei += encodeMeasure(measure, mIndex, measureIndent, totalStaves, tieState, slurState, hairpinState, ottavaState, currentKey, partInfos, clefState, octaveEndReplacements, measureIds, glissState, omitStates.barHidden[mi], currentTimeDen, slurEndReplacements);
5127
5381
  const closeTag = segCloseAt.get(mIndex);
5128
5382
  if (closeTag)
5129
5383
  mei += closeTag;
@@ -5173,6 +5427,9 @@ var encode = (doc, options = {}) => {
5173
5427
  for (const [token, endId] of Object.entries(octaveEndReplacements)) {
5174
5428
  mei = mei.replaceAll(token, endId);
5175
5429
  }
5430
+ for (const [token, endId] of Object.entries(slurEndReplacements)) {
5431
+ mei = mei.replaceAll(token, endId);
5432
+ }
5176
5433
  return mei;
5177
5434
  };
5178
5435
  var escapeXml = (text) => {