@marmooo/midy 0.0.3 → 0.0.5

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 (33) hide show
  1. package/esm/deps/cdn.jsdelivr.net/npm/@marmooo/{soundfont-parser@0.0.1 → soundfont-parser@0.0.2}/+esm.d.ts +13 -6
  2. package/esm/deps/cdn.jsdelivr.net/npm/@marmooo/soundfont-parser@0.0.2/+esm.d.ts.map +1 -0
  3. package/esm/deps/cdn.jsdelivr.net/npm/@marmooo/{soundfont-parser@0.0.1 → soundfont-parser@0.0.2}/+esm.js +5 -5
  4. package/esm/midy-GM1.d.ts +27 -36
  5. package/esm/midy-GM1.d.ts.map +1 -1
  6. package/esm/midy-GM1.js +199 -135
  7. package/esm/midy-GM2.d.ts +51 -35
  8. package/esm/midy-GM2.d.ts.map +1 -1
  9. package/esm/midy-GM2.js +234 -141
  10. package/esm/midy-GMLite.d.ts +25 -36
  11. package/esm/midy-GMLite.d.ts.map +1 -1
  12. package/esm/midy-GMLite.js +187 -135
  13. package/esm/midy.d.ts +68 -24
  14. package/esm/midy.d.ts.map +1 -1
  15. package/esm/midy.js +274 -141
  16. package/package.json +1 -1
  17. package/script/deps/cdn.jsdelivr.net/npm/@marmooo/{soundfont-parser@0.0.1 → soundfont-parser@0.0.2}/+esm.d.ts +13 -6
  18. package/script/deps/cdn.jsdelivr.net/npm/@marmooo/soundfont-parser@0.0.2/+esm.d.ts.map +1 -0
  19. package/script/deps/cdn.jsdelivr.net/npm/@marmooo/{soundfont-parser@0.0.1 → soundfont-parser@0.0.2}/+esm.js +5 -5
  20. package/script/midy-GM1.d.ts +27 -36
  21. package/script/midy-GM1.d.ts.map +1 -1
  22. package/script/midy-GM1.js +199 -135
  23. package/script/midy-GM2.d.ts +51 -35
  24. package/script/midy-GM2.d.ts.map +1 -1
  25. package/script/midy-GM2.js +234 -141
  26. package/script/midy-GMLite.d.ts +25 -36
  27. package/script/midy-GMLite.d.ts.map +1 -1
  28. package/script/midy-GMLite.js +187 -135
  29. package/script/midy.d.ts +68 -24
  30. package/script/midy.d.ts.map +1 -1
  31. package/script/midy.js +274 -141
  32. package/esm/deps/cdn.jsdelivr.net/npm/@marmooo/soundfont-parser@0.0.1/+esm.d.ts.map +0 -1
  33. package/script/deps/cdn.jsdelivr.net/npm/@marmooo/soundfont-parser@0.0.1/+esm.d.ts.map +0 -1
@@ -12,7 +12,14 @@ declare class F {
12
12
  sampleName: any;
13
13
  sampleModes: number;
14
14
  playbackRate: (e: any) => number;
15
+ modLfoToPitch: number;
16
+ vibLfoToPitch: number;
15
17
  modEnvToPitch: number;
18
+ initialFilterFc: number;
19
+ initialFilterQ: number;
20
+ modLfoToFilterFc: number;
21
+ modEnvToFilterFc: number;
22
+ modLfoToVolume: number;
16
23
  scaleTuning: number;
17
24
  start: number;
18
25
  end: number;
@@ -32,12 +39,12 @@ declare class F {
32
39
  modRelease: number;
33
40
  keyRange: d;
34
41
  velRange: d;
35
- initialFilterFc: number;
36
- modEnvToFilterFc: number;
37
- initialFilterQ: number;
42
+ delayModLFO: number;
43
+ freqModLFO: number;
44
+ delayVibLFO: number;
45
+ freqVibLFO: number;
38
46
  initialAttenuation: number;
39
- freqVibLFO: number | undefined;
40
- pan: undefined;
47
+ pan: number;
41
48
  } | null;
42
49
  getPresetNames(): {};
43
50
  }
@@ -95,7 +102,7 @@ declare namespace T {
95
102
  let initialFilterQ: number;
96
103
  let initialFilterFc: number;
97
104
  let sampleModes: number;
98
- let pan: undefined;
105
+ let pan: number;
99
106
  }
100
107
  declare function b(e: any, n?: {}): {
101
108
  samples: any;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"+esm.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/cdn.jsdelivr.net/npm/@marmooo/soundfont-parser@0.0.2/+esm.js"],"names":[],"mappings":";;AAMizX;IAAQ,oBAA2H;IAAd,YAAa;IAAC,qDAAoJ;IAAA,mCAAoP;IAAA,uCAAwQ;IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAAkqE;IAAA,qBAA0I;CAAC;AAAA,mCAAwC;AAA9oI,+BAA8F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAA98D;;;;;;;;;;;;;;;;EAA27B;AAAr4I;IAAqQ,wBAAwD;IAArT,4BAAyN;IAApB,QAAS;IAAC,QAAS;IAAC,oBAAoC;CAAyD;AAAllG;IAAwjC,gCAA8d;CAAC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.37.0.
3
- * Original file: /npm/@marmooo/soundfont-parser@0.0.1/esm/mod.js
3
+ * Original file: /npm/@marmooo/soundfont-parser@0.0.2/esm/mod.js
4
4
  *
5
5
  * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
6
6
  */
@@ -108,7 +108,7 @@ function I(e) { const t = {}; for (const r of e) {
108
108
  const e = r.type;
109
109
  void 0 !== e && (t[e] = r.value);
110
110
  } return t; }
111
- const T = { keynum: void 0, instrument: void 0, velocity: void 0, exclusiveClass: void 0, keyRange: new d(0, 127), velRange: new d(0, 127), sampleID: void 0, delayVolEnv: -12e3, attackVolEnv: -12e3, decayVolEnv: -12e3, holdVolEnv: -12e3, sustainVolEnv: 0, releaseVolEnv: -12e3, delayModEnv: -12e3, attackModEnv: -12e3, decayModEnv: -12e3, holdModEnv: -12e3, sustainModEnv: 0, releaseModEnv: -12e3, modEnvToPitch: 0, modEnvToFilterFc: 0, modLfoToFilterFc: 0, modLfoToPitch: 0, modLfoToVolume: 0, vibLfoToPitch: 0, chorusEffectsSend: 0, reverbEffectsSend: 0, delayModLFO: 0, freqModLFO: 0, delayVibLFO: 0, keynumToModEnvDecay: 0, keynumToModEnvHold: 0, keynumToVolEnvDecay: 0, keynumToVolEnvHold: 0, coarseTune: 0, fineTune: 0, scaleTuning: 100, freqVibLFO: 0, startAddrsOffset: 0, startAddrsCoarseOffset: 0, endAddrsOffset: 0, endAddrsCoarseOffset: 0, startloopAddrsOffset: 0, startloopAddrsCoarseOffset: 0, initialAttenuation: 0, endloopAddrsOffset: 0, endloopAddrsCoarseOffset: 0, overridingRootKey: void 0, initialFilterQ: 1, initialFilterFc: 13500, sampleModes: 0, pan: void 0 };
111
+ const T = { keynum: void 0, instrument: void 0, velocity: void 0, exclusiveClass: void 0, keyRange: new d(0, 127), velRange: new d(0, 127), sampleID: void 0, delayVolEnv: -12e3, attackVolEnv: -12e3, decayVolEnv: -12e3, holdVolEnv: -12e3, sustainVolEnv: 0, releaseVolEnv: -12e3, delayModEnv: -12e3, attackModEnv: -12e3, decayModEnv: -12e3, holdModEnv: -12e3, sustainModEnv: 0, releaseModEnv: -12e3, modEnvToPitch: 0, modEnvToFilterFc: 0, modLfoToFilterFc: 0, modLfoToPitch: 0, modLfoToVolume: 0, vibLfoToPitch: 0, chorusEffectsSend: 0, reverbEffectsSend: 0, delayModLFO: 0, freqModLFO: 0, delayVibLFO: 0, keynumToModEnvDecay: 0, keynumToModEnvHold: 0, keynumToVolEnvDecay: 0, keynumToVolEnvHold: 0, coarseTune: 0, fineTune: 0, scaleTuning: 100, freqVibLFO: 0, startAddrsOffset: 0, startAddrsCoarseOffset: 0, endAddrsOffset: 0, endAddrsCoarseOffset: 0, startloopAddrsOffset: 0, startloopAddrsCoarseOffset: 0, initialAttenuation: 0, endloopAddrsOffset: 0, endloopAddrsCoarseOffset: 0, overridingRootKey: void 0, initialFilterQ: 1, initialFilterFc: 13500, sampleModes: 0, pan: 0 };
112
112
  class F {
113
113
  constructor(e) { Object.defineProperty(this, "parsed", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), this.parsed = e; }
114
114
  getGenerators(e, t, r, n) { const a = new Array(n - r); for (let i = r; i < n; i++) {
@@ -144,12 +144,12 @@ class F {
144
144
  break;
145
145
  } if (!l)
146
146
  return console.warn("instrument not found: bank=%s instrument=%s", e, t), null; if (void 0 === l.sampleID)
147
- throw new Error("Invalid SoundFont: sampleID not found"); const d = { ...T, ...A(o || {}), ...A(s || {}), ...A(l) }, u = this.parsed.samples[d.sampleID], c = this.parsed.sampleHeaders[d.sampleID], f = d.coarseTune + d.fineTune / 100 + c.pitchCorrection / 100 - (d.overridingRootKey || c.originalPitch), p = d.scaleTuning / 100; return { sample: u, sampleRate: c.sampleRate, sampleName: c.sampleName, sampleModes: d.sampleModes, playbackRate: e => Math.pow(Math.pow(2, 1 / 12), (e + f) * p), modEnvToPitch: d.modEnvToPitch / 100, scaleTuning: p, start: 32768 * d.startAddrsCoarseOffset + d.startAddrsOffset, end: 32768 * d.endAddrsCoarseOffset + d.endAddrsOffset, loopStart: c.loopStart + 32768 * d.startloopAddrsCoarseOffset + d.startloopAddrsOffset, loopEnd: c.loopEnd + 32768 * d.endloopAddrsCoarseOffset + d.endloopAddrsOffset, volDelay: M(d.delayVolEnv), volAttack: M(d.attackVolEnv), volHold: M(d.holdVolEnv), volDecay: M(d.decayVolEnv), volSustain: d.sustainVolEnv / 1e3, volRelease: M(d.releaseVolEnv), modDelay: M(d.delayModEnv), modAttack: M(d.attackModEnv), modHold: M(d.holdModEnv), modDecay: M(d.decayModEnv), modSustain: d.sustainModEnv / 1e3, modRelease: M(d.releaseModEnv), keyRange: d.keyRange, velRange: d.velRange, initialFilterFc: d.initialFilterFc, modEnvToFilterFc: d.modEnvToFilterFc, initialFilterQ: d.initialFilterQ, initialAttenuation: d.initialAttenuation, freqVibLFO: d.freqVibLFO ? 8.176 * M(d.freqVibLFO) : void 0, pan: d.pan }; }
147
+ throw new Error("Invalid SoundFont: sampleID not found"); const d = { ...T, ...L(o || {}), ...L(s || {}), ...L(l) }, u = this.parsed.samples[d.sampleID], c = this.parsed.sampleHeaders[d.sampleID], f = d.coarseTune + d.fineTune / 100 + c.pitchCorrection / 100 - (d.overridingRootKey || c.originalPitch), p = d.scaleTuning / 100; return { sample: u, sampleRate: c.sampleRate, sampleName: c.sampleName, sampleModes: d.sampleModes, playbackRate: e => Math.pow(Math.pow(2, 1 / 12), (e + f) * p), modLfoToPitch: d.modLfoToPitch, vibLfoToPitch: d.vibLfoToPitch, modEnvToPitch: d.modEnvToPitch, initialFilterFc: d.initialFilterFc, initialFilterQ: d.initialFilterQ, modLfoToFilterFc: d.modLfoToFilterFc, modEnvToFilterFc: d.modEnvToFilterFc, modLfoToVolume: d.modLfoToVolume, scaleTuning: p, start: 32768 * d.startAddrsCoarseOffset + d.startAddrsOffset, end: 32768 * d.endAddrsCoarseOffset + d.endAddrsOffset, loopStart: c.loopStart + 32768 * d.startloopAddrsCoarseOffset + d.startloopAddrsOffset, loopEnd: c.loopEnd + 32768 * d.endloopAddrsCoarseOffset + d.endloopAddrsOffset, volDelay: M(d.delayVolEnv), volAttack: M(d.attackVolEnv), volHold: M(d.holdVolEnv), volDecay: M(d.decayVolEnv), volSustain: d.sustainVolEnv / 1e3, volRelease: M(d.releaseVolEnv), modDelay: M(d.delayModEnv), modAttack: M(d.attackModEnv), modHold: M(d.holdModEnv), modDecay: M(d.decayModEnv), modSustain: d.sustainModEnv / 1e3, modRelease: M(d.releaseModEnv), keyRange: d.keyRange, velRange: d.velRange, delayModLFO: M(d.delayModLFO), freqModLFO: d.freqModLFO, delayVibLFO: M(d.delayVibLFO), freqVibLFO: d.freqVibLFO, initialAttenuation: d.initialAttenuation, pan: d.pan }; }
148
148
  getPresetNames() { const e = {}; return this.parsed.presetHeaders.forEach((t => { e[t.bank] || (e[t.bank] = {}), e[t.bank][t.preset] = t.presetName; })), e; }
149
149
  }
150
150
  function M(e) { return Math.pow(2, e / 1200); }
151
- function A(e) { const t = {}; for (const r in e)
151
+ function L(e) { const t = {}; for (const r in e)
152
152
  void 0 !== e[r] && (t[r] = e[r]); return t; }
153
153
  export { F as SoundFont, M as convertTime, I as createGeneratorObject, T as defaultInstrumentZone, b as parse };
154
154
  export default null;
155
- //# sourceMappingURL=/sm/f81f37edef0ee7c3c75f39a74df8b8e54ea144490d686e35430b76b426f1559d.map
155
+ //# sourceMappingURL=/sm/22d03ff23e99217677631c656a57eea14149d50ae4425cf6cd850760c3e93c1e.map
package/esm/midy-GM1.d.ts CHANGED
@@ -2,9 +2,6 @@ export class MidyGM1 {
2
2
  static channelSettings: {
3
3
  volume: number;
4
4
  pan: number;
5
- vibratoRate: number;
6
- vibratoDepth: number;
7
- vibratoDelay: number;
8
5
  bank: number;
9
6
  dataMSB: number;
10
7
  dataLSB: number;
@@ -44,12 +41,8 @@ export class MidyGM1 {
44
41
  masterGain: any;
45
42
  channels: {
46
43
  scheduledNotes: Map<any, any>;
47
- sostenutoNotes: Map<any, any>;
48
44
  gainNode: any;
49
45
  pannerNode: any;
50
- modulationEffect: {
51
- lfo: any;
52
- };
53
46
  expression: number;
54
47
  modulation: number;
55
48
  sustainPedal: boolean;
@@ -58,9 +51,6 @@ export class MidyGM1 {
58
51
  pitchBendRange: number;
59
52
  volume: number;
60
53
  pan: number;
61
- vibratoRate: number;
62
- vibratoDepth: number;
63
- vibratoDelay: number;
64
54
  bank: number;
65
55
  dataMSB: number;
66
56
  dataLSB: number;
@@ -77,18 +67,11 @@ export class MidyGM1 {
77
67
  setChannelAudioNodes(audioContext: any): {
78
68
  gainNode: any;
79
69
  pannerNode: any;
80
- modulationEffect: {
81
- lfo: any;
82
- };
83
70
  };
84
71
  createChannels(audioContext: any): {
85
72
  scheduledNotes: Map<any, any>;
86
- sostenutoNotes: Map<any, any>;
87
73
  gainNode: any;
88
74
  pannerNode: any;
89
- modulationEffect: {
90
- lfo: any;
91
- };
92
75
  expression: number;
93
76
  modulation: number;
94
77
  sustainPedal: boolean;
@@ -97,9 +80,6 @@ export class MidyGM1 {
97
80
  pitchBendRange: number;
98
81
  volume: number;
99
82
  pan: number;
100
- vibratoRate: number;
101
- vibratoDepth: number;
102
- vibratoDelay: number;
103
83
  bank: number;
104
84
  dataMSB: number;
105
85
  dataLSB: number;
@@ -109,8 +89,8 @@ export class MidyGM1 {
109
89
  coarseTuning: number;
110
90
  modulationDepthRange: number;
111
91
  }[];
112
- createNoteBuffer(noteInfo: any, isSF3: any): Promise<any>;
113
- createNoteBufferNode(noteInfo: any, isSF3: any): Promise<any>;
92
+ createNoteBuffer(instrumentKey: any, isSF3: any): Promise<any>;
93
+ createNoteBufferNode(instrumentKey: any, isSF3: any): Promise<any>;
114
94
  convertToFloat32Array(uint8Array: any): Float32Array;
115
95
  scheduleTimelineEvents(t: any, offset: any, queueIndex: any): Promise<any>;
116
96
  getQueueIndex(second: any): number;
@@ -129,30 +109,26 @@ export class MidyGM1 {
129
109
  seekTo(second: any): void;
130
110
  calcTotalTime(): number;
131
111
  currentTime(): number;
132
- getActiveNotes(channel: any): Map<any, any>;
133
- getActiveChannelNotes(scheduledNotes: any): any;
134
- createModulationEffect(audioContext: any): {
135
- lfo: any;
136
- };
112
+ getActiveNotes(channel: any, time: any): Map<any, any>;
113
+ getActiveNote(noteList: any, time: any): any;
137
114
  connectNoteEffects(channel: any, gainNode: any): void;
138
115
  cbToRatio(cb: any): number;
139
116
  centToHz(cent: any): number;
140
- createNoteAudioChain(channel: any, noteInfo: any, noteNumber: any, velocity: any, startTime: any, isSF3: any): Promise<{
141
- bufferSource: any;
142
- gainNode: any;
143
- filterNode: any;
144
- lfoGain: any;
145
- }>;
117
+ calcSemitoneOffset(channel: any): any;
118
+ calcPlaybackRate(instrumentKey: any, noteNumber: any, semitoneOffset: any): number;
119
+ setVolumeEnvelope(channel: any, note: any): void;
120
+ setFilterEnvelope(channel: any, note: any): void;
121
+ startModulation(channel: any, note: any, time: any): void;
122
+ createNote(channel: any, instrumentKey: any, noteNumber: any, velocity: any, startTime: any, isSF3: any): Promise<Note>;
146
123
  scheduleNoteOn(channelNumber: any, noteNumber: any, velocity: any, startTime: any): Promise<void>;
147
124
  noteOn(channelNumber: any, noteNumber: any, velocity: any): Promise<void>;
148
125
  scheduleNoteRelease(channelNumber: any, noteNumber: any, velocity: any, stopTime: any, stopPedal?: boolean): Promise<any> | undefined;
149
126
  releaseNote(channelNumber: any, noteNumber: any, velocity: any): Promise<any> | undefined;
150
127
  releaseSustainPedal(channelNumber: any, halfVelocity: any): any[];
151
128
  handleMIDIMessage(statusByte: any, data1: any, data2: any): void | any[] | Promise<any>;
152
- handlePolyphonicKeyPressure(channelNumber: any, noteNumber: any, pressure: any): void;
153
129
  handleProgramChange(channelNumber: any, program: any): void;
154
- handleChannelPressure(channelNumber: any, pressure: any): void;
155
- handlePitchBend(channelNumber: any, lsb: any, msb: any): void;
130
+ handlePitchBendMessage(channelNumber: any, lsb: any, msb: any): void;
131
+ handlePitchBend(channelNumber: any, pitchBend: any): void;
156
132
  handleControlChange(channelNumber: any, controller: any, value: any): void | any[];
157
133
  setModulation(channelNumber: any, modulation: any): void;
158
134
  setVolume(channelNumber: any, volume: any): void;
@@ -175,4 +151,19 @@ export class MidyGM1 {
175
151
  handleSysEx(data: any): void;
176
152
  scheduleTask(callback: any, startTime: any): Promise<any>;
177
153
  }
154
+ declare class Note {
155
+ constructor(noteNumber: any, velocity: any, startTime: any, instrumentKey: any);
156
+ bufferSource: any;
157
+ gainNode: any;
158
+ filterNode: any;
159
+ modLFO: any;
160
+ modLFOGain: any;
161
+ vibLFO: any;
162
+ vibLFOGain: any;
163
+ noteNumber: any;
164
+ velocity: any;
165
+ startTime: any;
166
+ instrumentKey: any;
167
+ }
168
+ export {};
178
169
  //# sourceMappingURL=midy-GM1.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAMA;IAmBE;;;;;;;;;;;;;;MAcE;IAEF;;;;;;;MAOE;IAEF,+BAMC;IAjDD,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,mBAAiB;IACjB,oBAAkB;IA4BhB,kBAAgC;IAChC,gBAA4C;IAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAiD;IAInD,4BAMC;IAED,mCASC;IAED,gDAMC;IAED,sCASC;IAED;;;;;;MAgBC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;QAWC;IAED,0DAyBC;IAED,8DAUC;IAED,qDAOC;IAED,2EA4CC;IAED,mCAOC;IAED,0BA+CC;IAED,uDAEC;IAED,wDAEC;IAED;;;MAyEC;IAED,4BAsBC;IAED,uBAKC;IAED,aAGC;IAED,cAKC;IAED,wBAIC;IAED,0BAKC;IAED,wBAOC;IAED,sBAGC;IAED,4CASC;IAED,gDAKC;IAED;;MAOC;IAED,sDAEC;IAED,2BAEC;IAED,4BAEC;IAED;;;;;OA6EC;IAED,kGAuCC;IAED,0EAGC;IAED,sIA4CC;IAED,0FAGC;IAED,kEAeC;IAED,wFAqBC;IAED,sFAeC;IAED,4DAGC;IAED,+DAEC;IAED,8DAGC;IAED,mFA+BC;IAED,yDAIC;IAED,iDAIC;IAED,2CAMC;IAED,yDAIC;IAED,sCAKC;IAED,sDAMC;IAED,gDAEC;IAED,gDAEC;IAED,+DAoBC;IAED,uCAoBC;IAED,8CAEC;IAED,uCAoBC;IAED,4DAgBC;IAED,oBAQC;IAED,yDAaC;IAED,yCAGC;IAED,sCAIC;IAED,wCAEC;IAED,6BASC;IAED,0DAUC;CACF"}
1
+ {"version":3,"file":"midy-GM1.d.ts","sourceRoot":"","sources":["../src/midy-GM1.js"],"names":[],"mappings":"AAuBA;IAmBE;;;;;;;;;;;MAWE;IAEF;;;;;;;MAOE;IAEF,+BAMC;IA9CD,qBAAmB;IACnB,kBAAc;IACd,0BAAwB;IACxB,kBAAc;IACd,mBAAiB;IACjB,kBAAc;IACd,mBAAe;IACf,kBAAgB;IAChB,sBAA2C;IAC3C,mBAAkB;IAClB,mBAAkB;IAClB,kBAAiB;IACjB,oBAAmB;IACnB,mBAAkB;IAClB,gBAAc;IACd,mBAAiB;IACjB,oBAAkB;IAyBhB,kBAAgC;IAChC,gBAA4C;IAE5C;;;;;;;;;;;;;;;;;;;;QAAiD;IAInD,4BAMC;IAED,mCASC;IAED,gDAMC;IAED,sCASC;IAED;;;MAaC;IAED;;;;;;;;;;;;;;;;;;;;QAUC;IAED,+DAyBC;IAED,mEAWC;IAED,qDAOC;IAED,2EA+CC;IAED,mCAOC;IAED,0BA+CC;IAED,uDAEC;IAED,wDAEC;IAED;;;MAyEC;IAED,4BAsBC;IAED,uBAKC;IAED,aAGC;IAED,cAKC;IAED,wBAIC;IAED,0BAKC;IAED,wBAOC;IAED,sBAGC;IAED,uDASC;IAED,6CAQC;IAED,sDAEC;IAED,2BAEC;IAED,4BAEC;IAED,sCAGC;IAED,mFAGC;IAED,iDAmBC;IAED,iDAiCC;IAED,0DAmBC;IAED,wHA6BC;IAED,kGA6BC;IAED,0EAGC;IAED,sIAmDC;IAED,0FAGC;IAED,kEAeC;IAED,wFAiBC;IAED,4DAGC;IAED,qEAGC;IAED,0DAiBC;IAED,mFA+BC;IAED,yDAiBC;IAED,iDAIC;IAED,2CAMC;IAED,yDAIC;IAED,sCAKC;IAED,sDAMC;IAED,gDAEC;IAED,gDAEC;IAED,+DAoBC;IAED,uCAoBC;IAED,8CAEC;IAED,uCAoBC;IAED,4DAgBC;IAED,oBAQC;IAED,yDAaC;IAED,yCAGC;IAED,sCAQC;IAED,wCAEC;IAED,6BASC;IAED,0DAUC;CACF;AAv+BD;IASE,gFAKC;IAbD,kBAAa;IACb,cAAS;IACT,gBAAW;IACX,YAAO;IACP,gBAAW;IACX,YAAO;IACP,gBAAW;IAGT,gBAA4B;IAC5B,cAAwB;IACxB,eAA0B;IAC1B,mBAAkC;CAErC"}