diff --git a/.gitignore b/.gitignore index 462374b..ffa6182 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,9 @@ *.la *.a *.lib +# Exception: Faust shared library files (text source, .lib extension by +# Faust convention) should be tracked. +!playground/faust/*.lib # Executables *.exe diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..157f9ef --- /dev/null +++ b/package-lock.json @@ -0,0 +1,78 @@ +{ + "name": "memlnaut-nisps-tests", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "memlnaut-nisps-tests", + "version": "1.0.0", + "devDependencies": { + "@playwright/test": "^1.59.1" + } + }, + "node_modules/@playwright/test": { + "version": "1.59.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.59.1.tgz", + "integrity": "sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.59.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/playwright": { + "version": "1.59.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.59.1.tgz", + "integrity": "sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.59.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.59.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.1.tgz", + "integrity": "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + } + } +} diff --git a/playground/faust/MODULAR_DESTINATIONS.md b/playground/faust/MODULAR_DESTINATIONS.md new file mode 100644 index 0000000..0f7d2cf --- /dev/null +++ b/playground/faust/MODULAR_DESTINATIONS.md @@ -0,0 +1,45 @@ +# Modular engines — modulation destination table + +Each of the three `modular-*` Faust engines exposes a 48-source × 10-destination +modulation matrix. All engines import `mod-pool.lib` (16 ADSRs + 32 LFOs = 48 +sources) and bind those sources to engine-specific destinations via the +`MM_Matrix/sNN_dNN_` slider labels. + +The destination index (`dNN`) is consistent per engine but NOT consistent across +engines — `d08` happens to be `amp` for all three because the generator places +the master amplitude destination in the same slot for every engine, which makes +it easy for Phase B to wire up a default ADSR1→amp patch regardless of the +active engine. + +| Engine | d00 | d01 | d02 | d03 | d04 | d05 | d06 | d07 | d08 | d09 | +|-------------|-------|-------------|-------------|----------------|------------|------------------|-----------------|----------------|-----|-----| +| subtractive | pitch | osc2_detune | osc3_detune | osc_mix_bal | noise_level| cutoff | resonance | filter_env_amt | amp | pan | +| additive | pitch | bright | tilt | inharmonicity | odd_even | formant_ctr | formant_depth | noise_mix | amp | pan | +| fm | pitch | op1_level | op2_level | op3_level | op4_level | cross_mod_global | feedback_global | global_ratio | amp | pan | + +## Conventions + +- **Source index** (`sNN`): 00..15 = ADSR slots 1..16, 16..47 = LFO slots 1..32. +- **Amount range**: each matrix slider is `[-1.0, +1.0]`, default 0 (no route). +- **`amp` destination** (d08): always the master amplitude destination for the + engine. Without any source routed here, the voice is either silent + (subtractive — the mod_amp signal multiplies into the VCA) or produces a + sustained tone at the engine's natural level (additive and fm — still gated + through mod_amp; without a route the amp signal is 0). **Route ADSR1 → d08 + for a standard VCA envelope in all three engines.** +- **`pitch` destination** (d00): always semitones, ±12 per mod unit. +- **`pan` destination** (d09): added to the master pan knob, clamped to [-1,1]. + +## Notes + +- `additive.bright` is a progressive high-partial boost/cut (replaces the old + brightness envelope in the non-modular `additive.dsp`). At mod=0, it is + unity; at mod=+1 it boosts top partials, at -1 it cuts them. +- `additive.formant_ctr` shifts BOTH formant centre frequencies by the same + amount (up to ±8 harmonics) so you can "move" the vocal shape with an LFO or + envelope. +- `fm.cross_mod_global` and `fm.feedback_global` are `(1 + mod)` multipliers + applied to the respective matrix cells BEFORE the feedback loop is closed, + so a mod of +1 doubles FM depth and -1 zeroes it out. +- `fm.global_ratio` is an ADDITIVE offset on all four operator ratios (±8), + clamped to ≥0.01. This can behave like a pitch-bend when animated slowly. diff --git a/playground/faust/additive.json b/playground/faust/additive.json index c2e316a..78fe7b9 100644 --- a/playground/faust/additive.json +++ b/playground/faust/additive.json @@ -1,758 +1 @@ -{ - "name": "additive", - "filename": "additive.dsp", - "version": "2.83.1", - "compile_options": "-lang cpp -fpga-mem-th 4 -ct 1 -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0", - "library_list": ["/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/stdfaust.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/envelopes.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/maths.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/platform.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/oscillators.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/basics.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/noises.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/filters.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/signals.lib"], - "include_pathnames": ["/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/.claude/worktrees/agent-ae51af34/.claude/worktrees/agent-a667e616/playground/faust"], - "size": 1908, - "inputs": 0, - "outputs": 2, - "meta": [ - { "basics.lib/name": "Faust Basic Element Library" }, - { "basics.lib/version": "1.22.0" }, - { "compile_options": "-lang cpp -fpga-mem-th 4 -ct 1 -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" }, - { "envelopes.lib/adsr:author": "Yann Orlarey and Andrey Bundin" }, - { "envelopes.lib/author": "GRAME" }, - { "envelopes.lib/copyright": "GRAME" }, - { "envelopes.lib/license": "LGPL with exception" }, - { "envelopes.lib/name": "Faust Envelope Library" }, - { "envelopes.lib/version": "1.3.0" }, - { "filename": "additive.dsp" }, - { "filters.lib/lowpass0_highpass1": "MIT-style STK-4.3 license" }, - { "filters.lib/lowpass0_highpass1:author": "Julius O. Smith III" }, - { "filters.lib/lowpass:author": "Julius O. Smith III" }, - { "filters.lib/lowpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " }, - { "filters.lib/lowpass:license": "MIT-style STK-4.3 license" }, - { "filters.lib/name": "Faust Filters Library" }, - { "filters.lib/tf1:author": "Julius O. Smith III" }, - { "filters.lib/tf1:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " }, - { "filters.lib/tf1:license": "MIT-style STK-4.3 license" }, - { "filters.lib/tf1s:author": "Julius O. Smith III" }, - { "filters.lib/tf1s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " }, - { "filters.lib/tf1s:license": "MIT-style STK-4.3 license" }, - { "filters.lib/version": "1.7.1" }, - { "maths.lib/author": "GRAME" }, - { "maths.lib/copyright": "GRAME" }, - { "maths.lib/license": "LGPL with exception" }, - { "maths.lib/name": "Faust Math Library" }, - { "maths.lib/version": "2.9.0" }, - { "name": "additive" }, - { "noises.lib/name": "Faust Noise Generator Library" }, - { "noises.lib/version": "1.5.0" }, - { "oscillators.lib/name": "Faust Oscillator Library" }, - { "oscillators.lib/version": "1.6.0" }, - { "platform.lib/name": "Generic Platform Library" }, - { "platform.lib/version": "1.3.0" }, - { "signals.lib/name": "Faust Signal Routing Library" }, - { "signals.lib/version": "1.6.0" } - ], - "ui": [ - { - "type": "vgroup", - "label": "additive", - "items": [ - { - "type": "hslider", - "label": "0_Hidden/freq", - "varname": "fHslider19", - "shortname": "0_Hidden_freq", - "address": "/additive/0_Hidden_freq", - "meta": [ - { "hidden": "1" }, - { "unit": "Hz" } - ], - "init": 220, - "min": 20, - "max": 4000, - "step": 0.01 - }, - { - "type": "button", - "label": "0_Hidden/gate", - "varname": "fButton0", - "shortname": "0_Hidden_gate", - "address": "/additive/0_Hidden_gate", - "meta": [ - { "hidden": "1" } - ] - }, - { - "type": "hslider", - "label": "1_Spectral Shape/00_h1_amp", - "varname": "fHslider41", - "shortname": "1_Spectral_Shape_00_h1_amp", - "address": "/additive/1_Spectral_Shape_00_h1_amp", - "meta": [ - { "tooltip": "H1 amplitude" } - ], - "init": 0.8, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "1_Spectral Shape/01_h2_amp", - "varname": "fHslider40", - "shortname": "1_Spectral_Shape_01_h2_amp", - "address": "/additive/1_Spectral_Shape_01_h2_amp", - "meta": [ - { "tooltip": "H2 amplitude" } - ], - "init": 0.5, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "1_Spectral Shape/02_h3_amp", - "varname": "fHslider39", - "shortname": "1_Spectral_Shape_02_h3_amp", - "address": "/additive/1_Spectral_Shape_02_h3_amp", - "meta": [ - { "tooltip": "H3 amplitude" } - ], - "init": 0.35, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "1_Spectral Shape/03_h4_amp", - "varname": "fHslider38", - "shortname": "1_Spectral_Shape_03_h4_amp", - "address": "/additive/1_Spectral_Shape_03_h4_amp", - "meta": [ - { "tooltip": "H4 amplitude" } - ], - "init": 0.25, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "1_Spectral Shape/04_h5_amp", - "varname": "fHslider37", - "shortname": "1_Spectral_Shape_04_h5_amp", - "address": "/additive/1_Spectral_Shape_04_h5_amp", - "meta": [ - { "tooltip": "H5 amplitude" } - ], - "init": 0.18, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "1_Spectral Shape/05_h6_amp", - "varname": "fHslider36", - "shortname": "1_Spectral_Shape_05_h6_amp", - "address": "/additive/1_Spectral_Shape_05_h6_amp", - "meta": [ - { "tooltip": "H6 amplitude" } - ], - "init": 0.12, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "1_Spectral Shape/06_h7_amp", - "varname": "fHslider35", - "shortname": "1_Spectral_Shape_06_h7_amp", - "address": "/additive/1_Spectral_Shape_06_h7_amp", - "meta": [ - { "tooltip": "H7 amplitude" } - ], - "init": 0.08, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "1_Spectral Shape/07_h8_amp", - "varname": "fHslider34", - "shortname": "1_Spectral_Shape_07_h8_amp", - "address": "/additive/1_Spectral_Shape_07_h8_amp", - "meta": [ - { "tooltip": "H8 amplitude" } - ], - "init": 0.06, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "1_Spectral Shape/08_h9_16_amp", - "varname": "fHslider33", - "shortname": "1_Spectral_Shape_08_h9_16_amp", - "address": "/additive/1_Spectral_Shape_08_h9_16_amp", - "meta": [ - { "tooltip": "H9-16 group amp" } - ], - "init": 0.05, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "1_Spectral Shape/09_h17_32_amp", - "varname": "fHslider32", - "shortname": "1_Spectral_Shape_09_h17_32_amp", - "address": "/additive/1_Spectral_Shape_09_h17_32_amp", - "meta": [ - { "tooltip": "H17-32 group amp" } - ], - "init": 0.025, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "1_Spectral Shape/10_h33_64_amp", - "varname": "fHslider30", - "shortname": "1_Spectral_Shape_10_h33_64_amp", - "address": "/additive/1_Spectral_Shape_10_h33_64_amp", - "meta": [ - { "tooltip": "H33-64 group amp" } - ], - "init": 0.01, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "1_Spectral Shape/11_spectral_tilt", - "varname": "fHslider29", - "shortname": "1_Spectral_Shape_11_spectral_tilt", - "address": "/additive/1_Spectral_Shape_11_spectral_tilt", - "meta": [ - { "tooltip": "Global tilt" } - ], - "init": 0, - "min": -1, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "1_Spectral Shape/12_inharmonicity", - "varname": "fHslider20", - "shortname": "1_Spectral_Shape_12_inharmonicity", - "address": "/additive/1_Spectral_Shape_12_inharmonicity", - "meta": [ - { "tooltip": "Inharmonicity" } - ], - "init": 0, - "min": 0, - "max": 0.15, - "step": 0.0001 - }, - { - "type": "hslider", - "label": "1_Spectral Shape/13_odd_even", - "varname": "fHslider31", - "shortname": "1_Spectral_Shape_13_odd_even", - "address": "/additive/1_Spectral_Shape_13_odd_even", - "meta": [ - { "tooltip": "Odd/even balance" } - ], - "init": 0.5, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "2_Temporal/00_attack", - "varname": "fHslider8", - "shortname": "2_Temporal_00_attack", - "address": "/additive/2_Temporal_00_attack", - "meta": [ - { "scale": "log" }, - { "tooltip": "Attack" } - ], - "init": 0.01, - "min": 0.001, - "max": 5, - "step": 0.001 - }, - { - "type": "hslider", - "label": "2_Temporal/01_decay", - "varname": "fHslider9", - "shortname": "2_Temporal_01_decay", - "address": "/additive/2_Temporal_01_decay", - "meta": [ - { "tooltip": "Decay" } - ], - "init": 0.3, - "min": 0.001, - "max": 10, - "step": 0.001 - }, - { - "type": "hslider", - "label": "2_Temporal/02_sustain", - "varname": "fHslider10", - "shortname": "2_Temporal_02_sustain", - "address": "/additive/2_Temporal_02_sustain", - "meta": [ - { "tooltip": "Sustain" } - ], - "init": 0.7, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "2_Temporal/03_release", - "varname": "fHslider7", - "shortname": "2_Temporal_03_release", - "address": "/additive/2_Temporal_03_release", - "meta": [ - { "tooltip": "Release" } - ], - "init": 0.5, - "min": 0.01, - "max": 10, - "step": 0.001 - }, - { - "type": "hslider", - "label": "2_Temporal/04_brightness_attack", - "varname": "fHslider1", - "shortname": "2_Temporal_04_brightness_attack", - "address": "/additive/2_Temporal_04_brightness_attack", - "meta": [ - { "scale": "log" }, - { "tooltip": "Bright A" } - ], - "init": 0.005, - "min": 0.001, - "max": 5, - "step": 0.001 - }, - { - "type": "hslider", - "label": "2_Temporal/05_brightness_decay", - "varname": "fHslider2", - "shortname": "2_Temporal_05_brightness_decay", - "address": "/additive/2_Temporal_05_brightness_decay", - "meta": [ - { "tooltip": "Bright D" } - ], - "init": 0.15, - "min": 0.001, - "max": 5, - "step": 0.001 - }, - { - "type": "hslider", - "label": "2_Temporal/06_brightness_sustain", - "varname": "fHslider3", - "shortname": "2_Temporal_06_brightness_sustain", - "address": "/additive/2_Temporal_06_brightness_sustain", - "meta": [ - { "tooltip": "Bright S" } - ], - "init": 0.4, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "2_Temporal/07_brightness_release", - "varname": "fHslider0", - "shortname": "2_Temporal_07_brightness_release", - "address": "/additive/2_Temporal_07_brightness_release", - "meta": [ - { "tooltip": "Bright R" } - ], - "init": 0.3, - "min": 0.01, - "max": 5, - "step": 0.001 - }, - { - "type": "hslider", - "label": "2_Temporal/08_spectral_flux_rate", - "varname": "fHslider22", - "shortname": "2_Temporal_08_spectral_flux_rate", - "address": "/additive/2_Temporal_08_spectral_flux_rate", - "meta": [ - { "tooltip": "Flux rate" } - ], - "init": 0.5, - "min": 0, - "max": 10, - "step": 0.01 - }, - { - "type": "hslider", - "label": "2_Temporal/09_spectral_flux_depth", - "varname": "fHslider23", - "shortname": "2_Temporal_09_spectral_flux_depth", - "address": "/additive/2_Temporal_09_spectral_flux_depth", - "meta": [ - { "tooltip": "Flux depth" } - ], - "init": 0.1, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "3_Phase/00_phase_random", - "varname": "fHslider11", - "shortname": "3_Phase_00_phase_random", - "address": "/additive/3_Phase_00_phase_random", - "meta": [ - { "tooltip": "Phase randomisation" } - ], - "init": 0, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "3_Phase/01_phase_walk_rate", - "varname": "fHslider21", - "shortname": "3_Phase_01_phase_walk_rate", - "address": "/additive/3_Phase_01_phase_walk_rate", - "meta": [ - { "tooltip": "Phase walk rate" } - ], - "init": 0, - "min": 0, - "max": 5, - "step": 0.001 - }, - { - "type": "hslider", - "label": "3_Phase/02_beating_depth", - "varname": "fHslider13", - "shortname": "3_Phase_02_beating_depth", - "address": "/additive/3_Phase_02_beating_depth", - "meta": [ - { "tooltip": "Beating depth" } - ], - "init": 0, - "min": 0, - "max": 0.02, - "step": 0.0001 - }, - { - "type": "hslider", - "label": "3_Phase/03_beating_rate", - "varname": "fHslider12", - "shortname": "3_Phase_03_beating_rate", - "address": "/additive/3_Phase_03_beating_rate", - "meta": [ - { "tooltip": "Beating rate" } - ], - "init": 1, - "min": 0, - "max": 10, - "step": 0.01 - }, - { - "type": "hslider", - "label": "3_Phase/04_stereo_phase_spread", - "varname": "fHslider48", - "shortname": "3_Phase_04_stereo_phase_spread", - "address": "/additive/3_Phase_04_stereo_phase_spread", - "meta": [ - { "tooltip": "Stereo spread" } - ], - "init": 0.1, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "3_Phase/05_noise_floor", - "varname": "fHslider43", - "shortname": "3_Phase_05_noise_floor", - "address": "/additive/3_Phase_05_noise_floor", - "meta": [ - { "tooltip": "Noise floor" } - ], - "init": 0, - "min": 0, - "max": 0.2, - "step": 0.001 - }, - { - "type": "hslider", - "label": "3_Phase/06_noise_color", - "varname": "fHslider42", - "shortname": "3_Phase_06_noise_color", - "address": "/additive/3_Phase_06_noise_color", - "meta": [ - { "tooltip": "Noise colour" } - ], - "init": 0.5, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "3_Phase/07_sub_harmonic", - "varname": "fHslider44", - "shortname": "3_Phase_07_sub_harmonic", - "address": "/additive/3_Phase_07_sub_harmonic", - "meta": [ - { "tooltip": "Sub-harmonic" } - ], - "init": 0, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "4_Modulation/00_vibrato_rate", - "varname": "fHslider15", - "shortname": "4_Modulation_00_vibrato_rate", - "address": "/additive/4_Modulation_00_vibrato_rate", - "meta": [ - { "tooltip": "Vibrato rate" } - ], - "init": 5, - "min": 0, - "max": 10, - "step": 0.01 - }, - { - "type": "hslider", - "label": "4_Modulation/01_vibrato_depth", - "varname": "fHslider16", - "shortname": "4_Modulation_01_vibrato_depth", - "address": "/additive/4_Modulation_01_vibrato_depth", - "meta": [ - { "tooltip": "Vibrato depth" } - ], - "init": 0, - "min": 0, - "max": 0.05, - "step": 0.0001 - }, - { - "type": "hslider", - "label": "4_Modulation/02_vibrato_delay", - "varname": "fHslider14", - "shortname": "4_Modulation_02_vibrato_delay", - "address": "/additive/4_Modulation_02_vibrato_delay", - "meta": [ - { "tooltip": "Vibrato delay" } - ], - "init": 0.3, - "min": 0, - "max": 2, - "step": 0.001 - }, - { - "type": "hslider", - "label": "4_Modulation/03_tremolo_rate", - "varname": "fHslider5", - "shortname": "4_Modulation_03_tremolo_rate", - "address": "/additive/4_Modulation_03_tremolo_rate", - "meta": [ - { "tooltip": "Tremolo rate" } - ], - "init": 4, - "min": 0, - "max": 20, - "step": 0.01 - }, - { - "type": "hslider", - "label": "4_Modulation/04_tremolo_depth", - "varname": "fHslider6", - "shortname": "4_Modulation_04_tremolo_depth", - "address": "/additive/4_Modulation_04_tremolo_depth", - "meta": [ - { "tooltip": "Tremolo depth" } - ], - "init": 0, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "4_Modulation/05_drift_rate", - "varname": "fHslider24", - "shortname": "4_Modulation_05_drift_rate", - "address": "/additive/4_Modulation_05_drift_rate", - "meta": [ - { "tooltip": "Drift rate" } - ], - "init": 0, - "min": 0, - "max": 2, - "step": 0.001 - }, - { - "type": "hslider", - "label": "4_Modulation/06_drift_depth", - "varname": "fHslider25", - "shortname": "4_Modulation_06_drift_depth", - "address": "/additive/4_Modulation_06_drift_depth", - "meta": [ - { "tooltip": "Drift depth" } - ], - "init": 0, - "min": 0, - "max": 0.3, - "step": 0.001 - }, - { - "type": "hslider", - "label": "4_Modulation/07_formant1_freq", - "varname": "fHslider27", - "shortname": "4_Modulation_07_formant1_freq", - "address": "/additive/4_Modulation_07_formant1_freq", - "meta": [ - { "tooltip": "Formant 1 freq" } - ], - "init": 3, - "min": 1, - "max": 16, - "step": 0.01 - }, - { - "type": "hslider", - "label": "4_Modulation/08_formant2_freq", - "varname": "fHslider26", - "shortname": "4_Modulation_08_formant2_freq", - "address": "/additive/4_Modulation_08_formant2_freq", - "meta": [ - { "tooltip": "Formant 2 freq" } - ], - "init": 6, - "min": 1, - "max": 16, - "step": 0.01 - }, - { - "type": "hslider", - "label": "4_Modulation/09_formant_depth", - "varname": "fHslider28", - "shortname": "4_Modulation_09_formant_depth", - "address": "/additive/4_Modulation_09_formant_depth", - "meta": [ - { "tooltip": "Formant depth" } - ], - "init": 0, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "5_Master/00_level", - "varname": "fHslider47", - "shortname": "5_Master_00_level", - "address": "/additive/5_Master_00_level", - "meta": [ - { "tooltip": "Output level" } - ], - "init": 0.7, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "5_Master/01_vel_sens", - "varname": "fHslider46", - "shortname": "5_Master_01_vel_sens", - "address": "/additive/5_Master_01_vel_sens", - "meta": [ - { "tooltip": "Velocity sens" } - ], - "init": 0.5, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "5_Master/02_vel_brightness", - "varname": "fHslider4", - "shortname": "5_Master_02_vel_brightness", - "address": "/additive/5_Master_02_vel_brightness", - "meta": [ - { "tooltip": "Vel bright" } - ], - "init": 0.3, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "5_Master/03_pitch_glide", - "varname": "fHslider17", - "shortname": "5_Master_03_pitch_glide", - "address": "/additive/5_Master_03_pitch_glide", - "meta": [ - { "tooltip": "Portamento" } - ], - "init": 0, - "min": 0, - "max": 10, - "step": 0.01 - }, - { - "type": "hslider", - "label": "5_Master/04_saturation", - "varname": "fHslider45", - "shortname": "5_Master_04_saturation", - "address": "/additive/5_Master_04_saturation", - "meta": [ - { "tooltip": "Saturation" } - ], - "init": 0, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "5_Master/05_fine_tune", - "varname": "fHslider18", - "shortname": "5_Master_05_fine_tune", - "address": "/additive/5_Master_05_fine_tune", - "meta": [ - { "tooltip": "Cents" }, - { "unit": "ct" } - ], - "init": 0, - "min": -50, - "max": 50, - "step": 0.1 - } - ] - } - ] -} \ No newline at end of file +{"name": "additive","filename": "additive.dsp","version": "2.79.3","compile_options": "-lang wasm -ct 1 -cn additive -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0","library_list": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/stdfaust.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/envelopes.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/maths.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/platform.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/oscillators.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/basics.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/noises.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/filters.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/signals.lib"],"include_pathnames": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust"],"size": 264068,"code": "Ly8gYWRkaXRpdmUuZHNwIOKAlCBGdWxsIDQ4LXBhcmFtZXRlciBhZGRpdGl2ZSBzeW50aGVzaXNlciBmb3IgTUVNTE5hdXQgTklTUFMgcGxheWdyb3VuZAovLwovLyA2NCBoYXJtb25pYyBzaW5lIGJhbmtzIHdpdGggc3BlY3RyYWwtZGVzY3JpcHRvciBwYXJhbWV0cmlzYXRpb24uCi8vIEFsbCA0OCBwYXJhbXMgYXJlIGRlc2lnbmVkIGZvciBjb250aW51b3VzIE1MIGV4cGxvcmF0aW9uIHZpYSBOSVNQUy4KLy8KLy8gUGFyYW1ldGVyIG9yZGVyIG1hdGNoZXMgTklTUFMgb3V0cHV0IGluZGljZXMgMOKAkzQ3OgovLyAgIEdyb3VwIDEg4oCUIFNwZWN0cmFsIFNoYXBlICgw4oCTMTMpOiAgaGFybW9uaWMgYmFuayArIHRpbHQgKyBpbmhhcm1vbmljaXR5ICsgb2RkL2V2ZW4KLy8gICBHcm91cCAyIOKAlCBUZW1wb3JhbCAgICAgICAoMTTigJMyMyk6IGdsb2JhbCBBRFNSICsgYnJpZ2h0bmVzcyBBRFNSICsgc3BlY3RyYWwgZmx1eAovLyAgIEdyb3VwIDMg4oCUIFBoYXNlICAgICAgICAgICgyNOKAkzMxKTogcGhhc2UgcmFuZG9taXNhdGlvbiwgYmVhdGluZywgc3RlcmVvLCBub2lzZSwgc3ViCi8vICAgR3JvdXAgNCDigJQgTW9kdWxhdGlvbiAgICAgKDMy4oCTNDEpOiB2aWJyYXRvLCB0cmVtb2xvLCBkcmlmdCwgZm9ybWFudHMKLy8gICBHcm91cCA1IOKAlCBNYXN0ZXIgICAgICAgICAoNDLigJM0Nyk6IGxldmVsLCB2ZWxvY2l0eSwgZ2xpZGUsIHNhdHVyYXRpb24sIGZpbmUtdHVuZQovLwovLyBHcm91cHMgYXJlIHByZWZpeGVkICIxXyIsICIyXyIgZXRjLiwgYW5kIGVhY2ggcGFyYW1ldGVyIGlzIHByZWZpeGVkICIwMF8iLAovLyAiMDFfIiBldGMuLCBzbyB0aGF0IEZhdXN0J3MgYWxwaGFiZXRpY2FsIEpTT04gb3JkZXJpbmcgbWF0Y2hlcyB0aGUgc3BlYy4KLy8gVGhlIGZhdXN0SnNvblRvUGFyYW1NZXRhIHBhcnNlciBzdHJpcHMgbnVtZXJpYyBwcmVmaXhlcyBhbmQgIlsuLi5dIiBtZXRhZGF0YQovLyBmcm9tIGxhYmVscyB0byBwcm9kdWNlIGNsZWFuIG5hbWVzLgovLwovLyBIaWRkZW4gY29udHJvbHMgKG5vdCBpbiBwYXJhbU1ldGEg4oCUIHdvcmtsZXQgZHJpdmVzIHRoZW0gZGlyZWN0bHkpOgovLyAgIGZyZXEgIOKAlCBmdW5kYW1lbnRhbCBmcmVxdWVuY3kgSHogKG5vdGVPbikKLy8gICBnYXRlICDigJQgZ2F0ZSBzaWduYWwgMC8xICAgICAgICAgIChub3RlT24vbm90ZU9mZikKLy8KLy8gQnVpbGQ6Ci8vICAgZmF1c3QgLWxhbmcgd2FzbSAtY24gYWRkaXRpdmUgLWUgYWRkaXRpdmUuZHNwIC1vIGFkZGl0aXZlLndhc20KLy8gICBmYXVzdCAtanNvbiBhZGRpdGl2ZS5kc3AgLW8gL2Rldi9udWxsICAocHJvZHVjZXMgYWRkaXRpdmUuZHNwLmpzb24pCi8vCmltcG9ydCgic3RkZmF1c3QubGliIik7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gSGlkZGVuIGNvbnRyb2xzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpmcmVxID0gaHNsaWRlcigiMF9IaWRkZW4vZnJlcVtoaWRkZW46MV1bdW5pdDpIel0iLCAyMjAsIDIwLCA0MDAwLCAwLjAxKTsKZ2F0ZSA9IGJ1dHRvbigiMF9IaWRkZW4vZ2F0ZVtoaWRkZW46MV0iKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBHcm91cCAxIOKAlCBTcGVjdHJhbCBTaGFwZSAocGFyYW1zIDDigJMxMykKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmgxX2FtcCAgICAgICAgPSBoc2xpZGVyKCIxX1NwZWN0cmFsIFNoYXBlLzAwX2gxX2FtcFt0b29sdGlwOkgxIGFtcGxpdHVkZV0iLCAgICAgICAgMC44LCAgIDAsICAgIDEsICAgICAwLjAwMSk7CmgyX2FtcCAgICAgICAgPSBoc2xpZGVyKCIxX1NwZWN0cmFsIFNoYXBlLzAxX2gyX2FtcFt0b29sdGlwOkgyIGFtcGxpdHVkZV0iLCAgICAgICAgMC41LCAgIDAsICAgIDEsICAgICAwLjAwMSk7CmgzX2FtcCAgICAgICAgPSBoc2xpZGVyKCIxX1NwZWN0cmFsIFNoYXBlLzAyX2gzX2FtcFt0b29sdGlwOkgzIGFtcGxpdHVkZV0iLCAgICAgICAgMC4zNSwgIDAsICAgIDEsICAgICAwLjAwMSk7Cmg0X2FtcCAgICAgICAgPSBoc2xpZGVyKCIxX1NwZWN0cmFsIFNoYXBlLzAzX2g0X2FtcFt0b29sdGlwOkg0IGFtcGxpdHVkZV0iLCAgICAgICAgMC4yNSwgIDAsICAgIDEsICAgICAwLjAwMSk7Cmg1X2FtcCAgICAgICAgPSBoc2xpZGVyKCIxX1NwZWN0cmFsIFNoYXBlLzA0X2g1X2FtcFt0b29sdGlwOkg1IGFtcGxpdHVkZV0iLCAgICAgICAgMC4xOCwgIDAsICAgIDEsICAgICAwLjAwMSk7Cmg2X2FtcCAgICAgICAgPSBoc2xpZGVyKCIxX1NwZWN0cmFsIFNoYXBlLzA1X2g2X2FtcFt0b29sdGlwOkg2IGFtcGxpdHVkZV0iLCAgICAgICAgMC4xMiwgIDAsICAgIDEsICAgICAwLjAwMSk7Cmg3X2FtcCAgICAgICAgPSBoc2xpZGVyKCIxX1NwZWN0cmFsIFNoYXBlLzA2X2g3X2FtcFt0b29sdGlwOkg3IGFtcGxpdHVkZV0iLCAgICAgICAgMC4wOCwgIDAsICAgIDEsICAgICAwLjAwMSk7Cmg4X2FtcCAgICAgICAgPSBoc2xpZGVyKCIxX1NwZWN0cmFsIFNoYXBlLzA3X2g4X2FtcFt0b29sdGlwOkg4IGFtcGxpdHVkZV0iLCAgICAgICAgMC4wNiwgIDAsICAgIDEsICAgICAwLjAwMSk7Cmg5XzE2X2FtcCAgICAgPSBoc2xpZGVyKCIxX1NwZWN0cmFsIFNoYXBlLzA4X2g5XzE2X2FtcFt0b29sdGlwOkg5LTE2IGdyb3VwIGFtcF0iLCAgMC4wNSwgIDAsICAgIDEsICAgICAwLjAwMSk7CmgxN18zMl9hbXAgICAgPSBoc2xpZGVyKCIxX1NwZWN0cmFsIFNoYXBlLzA5X2gxN18zMl9hbXBbdG9vbHRpcDpIMTctMzIgZ3JvdXAgYW1wXSIsMC4wMjUsIDAsICAgIDEsICAgICAwLjAwMSk7CmgzM182NF9hbXAgICAgPSBoc2xpZGVyKCIxX1NwZWN0cmFsIFNoYXBlLzEwX2gzM182NF9hbXBbdG9vbHRpcDpIMzMtNjQgZ3JvdXAgYW1wXSIsMC4wMSwgIDAsICAgIDEsICAgICAwLjAwMSk7CnNwZWN0cmFsX3RpbHQgPSBoc2xpZGVyKCIxX1NwZWN0cmFsIFNoYXBlLzExX3NwZWN0cmFsX3RpbHRbdG9vbHRpcDpHbG9iYWwgdGlsdF0iLCAgMCwgICAgLTEsICAgIDEsICAgICAwLjAwMSk7CmluaGFybW9uaWNpdHkgPSBoc2xpZGVyKCIxX1NwZWN0cmFsIFNoYXBlLzEyX2luaGFybW9uaWNpdHlbdG9vbHRpcDpJbmhhcm1vbmljaXR5XSIsIDAsICAgIDAsICAgIDAuMTUsICAwLjAwMDEpOwpvZGRfZXZlbiAgICAgID0gaHNsaWRlcigiMV9TcGVjdHJhbCBTaGFwZS8xM19vZGRfZXZlblt0b29sdGlwOk9kZC9ldmVuIGJhbGFuY2VdIiwgIDAuNSwgICAwLCAgICAxLCAgICAgMC4wMDEpOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEdyb3VwIDIg4oCUIFRlbXBvcmFsIChwYXJhbXMgMTTigJMyMykKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmF0dGFjayAgICAgICAgICAgICA9IGhzbGlkZXIoIjJfVGVtcG9yYWwvMDBfYXR0YWNrW3NjYWxlOmxvZ11bdG9vbHRpcDpBdHRhY2tdIiwgICAgICAgICAgICAgMC4wMSwgIDAuMDAxLCA1LCAgIDAuMDAxKTsKZGVjYXkgICAgICAgICAgICAgID0gaHNsaWRlcigiMl9UZW1wb3JhbC8wMV9kZWNheVt0b29sdGlwOkRlY2F5XSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zLCAgIDAuMDAxLCAxMCwgIDAuMDAxKTsKc3VzdGFpbiAgICAgICAgICAgID0gaHNsaWRlcigiMl9UZW1wb3JhbC8wMl9zdXN0YWluW3Rvb2x0aXA6U3VzdGFpbl0iLCAgICAgICAgICAgICAgICAgICAgICAgMC43LCAgIDAsICAgICAxLCAgIDAuMDAxKTsKcmVsZWFzZSAgICAgICAgICAgID0gaHNsaWRlcigiMl9UZW1wb3JhbC8wM19yZWxlYXNlW3Rvb2x0aXA6UmVsZWFzZV0iLCAgICAgICAgICAgICAgICAgICAgICAgMC41LCAgIDAuMDEsICAxMCwgIDAuMDAxKTsKYnJpZ2h0bmVzc19hdHRhY2sgID0gaHNsaWRlcigiMl9UZW1wb3JhbC8wNF9icmlnaHRuZXNzX2F0dGFja1tzY2FsZTpsb2ddW3Rvb2x0aXA6QnJpZ2h0IEFdIiwgMC4wMDUsIDAuMDAxLCA1LCAgIDAuMDAxKTsKYnJpZ2h0bmVzc19kZWNheSAgID0gaHNsaWRlcigiMl9UZW1wb3JhbC8wNV9icmlnaHRuZXNzX2RlY2F5W3Rvb2x0aXA6QnJpZ2h0IERdIiwgICAgICAgICAgICAgMC4xNSwgIDAuMDAxLCA1LCAgIDAuMDAxKTsKYnJpZ2h0bmVzc19zdXN0YWluID0gaHNsaWRlcigiMl9UZW1wb3JhbC8wNl9icmlnaHRuZXNzX3N1c3RhaW5bdG9vbHRpcDpCcmlnaHQgU10iLCAgICAgICAgICAgMC40LCAgIDAsICAgICAxLCAgIDAuMDAxKTsKYnJpZ2h0bmVzc19yZWxlYXNlID0gaHNsaWRlcigiMl9UZW1wb3JhbC8wN19icmlnaHRuZXNzX3JlbGVhc2VbdG9vbHRpcDpCcmlnaHQgUl0iLCAgICAgICAgICAgMC4zLCAgIDAuMDEsICA1LCAgIDAuMDAxKTsKc3BlY3RyYWxfZmx1eF9yYXRlID0gaHNsaWRlcigiMl9UZW1wb3JhbC8wOF9zcGVjdHJhbF9mbHV4X3JhdGVbdG9vbHRpcDpGbHV4IHJhdGVdIiwgICAgICAgICAgMC41LCAgIDAsICAgICAxMCwgIDAuMDEpOwpzcGVjdHJhbF9mbHV4X2RlcHRoPSBoc2xpZGVyKCIyX1RlbXBvcmFsLzA5X3NwZWN0cmFsX2ZsdXhfZGVwdGhbdG9vbHRpcDpGbHV4IGRlcHRoXSIsICAgICAgICAwLjEsICAgMCwgICAgIDEsICAgMC4wMDEpOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEdyb3VwIDMg4oCUIFBoYXNlICYgQ29oZXJlbmNlIChwYXJhbXMgMjTigJMzMSkKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnBoYXNlX3JhbmRvbSAgICAgICA9IGhzbGlkZXIoIjNfUGhhc2UvMDBfcGhhc2VfcmFuZG9tW3Rvb2x0aXA6UGhhc2UgcmFuZG9taXNhdGlvbl0iLCAgICAgIDAsICAgMCwgICAgMSwgICAgMC4wMDEpOwpwaGFzZV93YWxrX3JhdGUgICAgPSBoc2xpZGVyKCIzX1BoYXNlLzAxX3BoYXNlX3dhbGtfcmF0ZVt0b29sdGlwOlBoYXNlIHdhbGsgcmF0ZV0iLCAgICAgICAgMCwgICAwLCAgICA1LCAgICAwLjAwMSk7CmJlYXRpbmdfZGVwdGggICAgICA9IGhzbGlkZXIoIjNfUGhhc2UvMDJfYmVhdGluZ19kZXB0aFt0b29sdGlwOkJlYXRpbmcgZGVwdGhdIiwgICAgICAgICAgICAwLCAgIDAsICAgIDAuMDIsIDAuMDAwMSk7CmJlYXRpbmdfcmF0ZSAgICAgICA9IGhzbGlkZXIoIjNfUGhhc2UvMDNfYmVhdGluZ19yYXRlW3Rvb2x0aXA6QmVhdGluZyByYXRlXSIsICAgICAgICAgICAgICAxLCAgIDAsICAgIDEwLCAgIDAuMDEpOwpzdGVyZW9fcGhhc2Vfc3ByZWFkPSBoc2xpZGVyKCIzX1BoYXNlLzA0X3N0ZXJlb19waGFzZV9zcHJlYWRbdG9vbHRpcDpTdGVyZW8gc3ByZWFkXSIsICAgICAgMC4xLCAwLCAgICAxLCAgICAwLjAwMSk7Cm5vaXNlX2Zsb29yICAgICAgICA9IGhzbGlkZXIoIjNfUGhhc2UvMDVfbm9pc2VfZmxvb3JbdG9vbHRpcDpOb2lzZSBmbG9vcl0iLCAgICAgICAgICAgICAgICAwLCAgIDAsICAgIDAuMiwgIDAuMDAxKTsKbm9pc2VfY29sb3IgICAgICAgID0gaHNsaWRlcigiM19QaGFzZS8wNl9ub2lzZV9jb2xvclt0b29sdGlwOk5vaXNlIGNvbG91cl0iLCAgICAgICAgICAgICAgIDAuNSwgMCwgICAgMSwgICAgMC4wMDEpOwpzdWJfaGFybW9uaWMgICAgICAgPSBoc2xpZGVyKCIzX1BoYXNlLzA3X3N1Yl9oYXJtb25pY1t0b29sdGlwOlN1Yi1oYXJtb25pY10iLCAgICAgICAgICAgICAgMCwgICAwLCAgICAxLCAgICAwLjAwMSk7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gR3JvdXAgNCDigJQgTW9kdWxhdGlvbiAocGFyYW1zIDMy4oCTNDEpCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp2aWJyYXRvX3JhdGUgID0gaHNsaWRlcigiNF9Nb2R1bGF0aW9uLzAwX3ZpYnJhdG9fcmF0ZVt0b29sdGlwOlZpYnJhdG8gcmF0ZV0iLCAgIDUsICAgMCwgIDEwLCAgIDAuMDEpOwp2aWJyYXRvX2RlcHRoID0gaHNsaWRlcigiNF9Nb2R1bGF0aW9uLzAxX3ZpYnJhdG9fZGVwdGhbdG9vbHRpcDpWaWJyYXRvIGRlcHRoXSIsIDAsICAgMCwgIDAuMDUsIDAuMDAwMSk7CnZpYnJhdG9fZGVsYXkgPSBoc2xpZGVyKCI0X01vZHVsYXRpb24vMDJfdmlicmF0b19kZWxheVt0b29sdGlwOlZpYnJhdG8gZGVsYXldIiwgMC4zLCAwLCAgMiwgICAgMC4wMDEpOwp0cmVtb2xvX3JhdGUgID0gaHNsaWRlcigiNF9Nb2R1bGF0aW9uLzAzX3RyZW1vbG9fcmF0ZVt0b29sdGlwOlRyZW1vbG8gcmF0ZV0iLCAgIDQsICAgMCwgIDIwLCAgIDAuMDEpOwp0cmVtb2xvX2RlcHRoID0gaHNsaWRlcigiNF9Nb2R1bGF0aW9uLzA0X3RyZW1vbG9fZGVwdGhbdG9vbHRpcDpUcmVtb2xvIGRlcHRoXSIsIDAsICAgMCwgIDEsICAgIDAuMDAxKTsKZHJpZnRfcmF0ZSAgICA9IGhzbGlkZXIoIjRfTW9kdWxhdGlvbi8wNV9kcmlmdF9yYXRlW3Rvb2x0aXA6RHJpZnQgcmF0ZV0iLCAgICAgICAwLCAgIDAsICAyLCAgICAwLjAwMSk7CmRyaWZ0X2RlcHRoICAgPSBoc2xpZGVyKCI0X01vZHVsYXRpb24vMDZfZHJpZnRfZGVwdGhbdG9vbHRpcDpEcmlmdCBkZXB0aF0iLCAgICAgMCwgICAwLCAgMC4zLCAgMC4wMDEpOwpmb3JtYW50MV9mcmVxID0gaHNsaWRlcigiNF9Nb2R1bGF0aW9uLzA3X2Zvcm1hbnQxX2ZyZXFbdG9vbHRpcDpGb3JtYW50IDEgZnJlcV0iLDMsICAgMSwgIDE2LCAgIDAuMDEpOwpmb3JtYW50Ml9mcmVxID0gaHNsaWRlcigiNF9Nb2R1bGF0aW9uLzA4X2Zvcm1hbnQyX2ZyZXFbdG9vbHRpcDpGb3JtYW50IDIgZnJlcV0iLDYsICAgMSwgIDE2LCAgIDAuMDEpOwpmb3JtYW50X2RlcHRoID0gaHNsaWRlcigiNF9Nb2R1bGF0aW9uLzA5X2Zvcm1hbnRfZGVwdGhbdG9vbHRpcDpGb3JtYW50IGRlcHRoXSIsIDAsICAgMCwgIDEsICAgIDAuMDAxKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBHcm91cCA1IOKAlCBNYXN0ZXIgKHBhcmFtcyA0MuKAkzQ3KQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KbGV2ZWwgICAgICA9IGhzbGlkZXIoIjVfTWFzdGVyLzAwX2xldmVsW3Rvb2x0aXA6T3V0cHV0IGxldmVsXSIsICAgICAgIDAuNywgIDAsICAgMSwgICAwLjAwMSk7CnZlbF9zZW5zICAgPSBoc2xpZGVyKCI1X01hc3Rlci8wMV92ZWxfc2Vuc1t0b29sdGlwOlZlbG9jaXR5IHNlbnNdIiwgICAwLjUsICAwLCAgIDEsICAgMC4wMDEpOwp2ZWxfYnJpZ2h0ID0gaHNsaWRlcigiNV9NYXN0ZXIvMDJfdmVsX2JyaWdodG5lc3NbdG9vbHRpcDpWZWwgYnJpZ2h0XSIsMC4zLCAgMCwgICAxLCAgIDAuMDAxKTsKcGl0Y2hfZ2xpZGU9IGhzbGlkZXIoIjVfTWFzdGVyLzAzX3BpdGNoX2dsaWRlW3Rvb2x0aXA6UG9ydGFtZW50b10iLCAgIDAsICAgIDAsICAgMTAsICAwLjAxKTsKc2F0dXJhdGlvbiA9IGhzbGlkZXIoIjVfTWFzdGVyLzA0X3NhdHVyYXRpb25bdG9vbHRpcDpTYXR1cmF0aW9uXSIsICAgIDAsICAgIDAsICAgMSwgICAwLjAwMSk7CmZpbmVfdHVuZSAgPSBoc2xpZGVyKCI1X01hc3Rlci8wNV9maW5lX3R1bmVbdW5pdDpjdF1bdG9vbHRpcDpDZW50c10iLCAwLCAgIC01MCwgIDUwLCAgMC4xKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBJbnRlcm5hbCBjb25zdGFudHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCk4gID0gNjQ7ClBJID0gbWEuUEk7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gUGl0Y2gg4oCUIHBvcnRhbWVudG8gKyBmaW5lIHR1bmUKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmdsaWRlX3RhdSAgID0gMC4wMDAxICsgcGl0Y2hfZ2xpZGUgKiAwLjI7CmZpbmVfcmF0aW8gID0gcG93KDIuMCwgZmluZV90dW5lIC8gMTIwMC4wKTsKZnJlcV9zbW9vdGggPSBmcmVxICogZmluZV9yYXRpbyA6IHNpLnNtb290aChiYS50YXUycG9sZShnbGlkZV90YXUpKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBWaWJyYXRvIExGTyDigJQgZGVsYXllZCBvbnNldCB2aWEgc2xvdy1hdHRhY2sgZW52ZWxvcGUKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnZpYnJhdG9fZW52ID0gZW4uYWRzcih2aWJyYXRvX2RlbGF5LCAwLjAxLCAxLjAsIDAuNSwgZ2F0ZSk7CnZpYnJhdG9fbGZvID0gb3Mub3NjKHZpYnJhdG9fcmF0ZSkgKiB2aWJyYXRvX2RlcHRoICogdmlicmF0b19lbnY7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gVHJlbW9sbyBMRk8KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnRyZW1vbG9fbGZvID0gMS4wIC0gdHJlbW9sb19kZXB0aCAqIDAuNSAqICgxLjAgKyBvcy5vc2ModHJlbW9sb19yYXRlKSk7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gR2xvYmFsIGFtcGxpdHVkZSBBRFNSCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQphbXBfZW52ID0gZW4uYWRzcihhdHRhY2ssIGRlY2F5LCBzdXN0YWluLCByZWxlYXNlLCBnYXRlKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBCcmlnaHRuZXNzIGVudmVsb3BlIOKAlCBjb250cm9scyBoaWdoIGhhcm1vbmljIGFtcGxpdHVkZSBvdmVyIHRpbWUKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmJyaWdodF9lbnYgICA9IGVuLmFkc3IoYnJpZ2h0bmVzc19hdHRhY2ssIGJyaWdodG5lc3NfZGVjYXksCiAgICAgICAgICAgICAgICAgICAgICAgIGJyaWdodG5lc3Nfc3VzdGFpbiwgYnJpZ2h0bmVzc19yZWxlYXNlLCBnYXRlKTsKYnJpZ2h0X2JsZW5kKGspID0gZmxvYXQoayAtIDEpIC8gZmxvYXQoTiAtIDEpOwpicmlnaHRfZmFjdG9yKGspID0gMS4wIC0gYnJpZ2h0X2JsZW5kKGspICsgYnJpZ2h0X2JsZW5kKGspICogYnJpZ2h0X2VudjsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBTcGVjdHJhbCBmbHV4IOKAlCBzbG93IExGTyBvbiB1cHBlciBoYXJtb25pYyBhbXBsaXR1ZGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpmbHV4X2xmbyA9IG9zLm9zYyhzcGVjdHJhbF9mbHV4X3JhdGUpOwpmbHV4X2ZhY3RvcihrKSA9IGJhLmlmKGsgPiA4LAogICAgICAgICAgICAgICAgICAgMS4wICsgc3BlY3RyYWxfZmx1eF9kZXB0aCAqIGZsdXhfbGZvICogYnJpZ2h0X2JsZW5kKGspLAogICAgICAgICAgICAgICAgICAgMS4wKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBEcmlmdCDigJQgc2xvdyByYW5kb20gd2FsayBvbiBwZXItcGFydGlhbCBhbXBsaXR1ZGVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkcmlmdF9sZm8oaykgPSBuby5ub2lzZSAqIChmbG9hdChrICUgNyArIDEpIC8gNy4wKQogICAgICAgICAgICAgICA6IGZpLmxvd3Bhc3MoMSwgbWF4KDAuMSwgZHJpZnRfcmF0ZSAqIDIuMCkpCiAgICAgICAgICAgICAgIDogKihkcmlmdF9kZXB0aCk7CmRyaWZ0X2ZhY3RvcihrKSA9IDEuMCArIGRyaWZ0X2xmbyhrKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBQZXItaGFybW9uaWMgYmFzZSBhbXBsaXR1ZGUgZnJvbSBncm91cCBzbGlkZXJzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpncm91cF9hbXAoaykgPQogIGJhLmlmKGsgPT0gMSwgaDFfYW1wLAogIGJhLmlmKGsgPT0gMiwgaDJfYW1wLAogIGJhLmlmKGsgPT0gMywgaDNfYW1wLAogIGJhLmlmKGsgPT0gNCwgaDRfYW1wLAogIGJhLmlmKGsgPT0gNSwgaDVfYW1wLAogIGJhLmlmKGsgPT0gNiwgaDZfYW1wLAogIGJhLmlmKGsgPT0gNywgaDdfYW1wLAogIGJhLmlmKGsgPT0gOCwgaDhfYW1wLAogIGJhLmlmKGsgPD0gMTYsIGg5XzE2X2FtcCwKICBiYS5pZihrIDw9IDMyLCBoMTdfMzJfYW1wLAogICAgICAgICAgICAgICAgIGgzM182NF9hbXApKSkpKSkpKSkpOwoKLy8gU3BlY3RyYWwgdGlsdDogYW1wICo9IGtedGlsdCAoaz0xIGlzIGFsd2F5cyB1bml0eSkKdGlsdF9mYWN0b3IoaykgPSBwb3coZmxvYXQoayksIHNwZWN0cmFsX3RpbHQpOwoKLy8gT2RkL2V2ZW4gYmFsYW5jZTogw5cyIHNvIHVuaXR5IGdhaW4gYXQgb2RkX2V2ZW49MC41Cm9kZF93ZWlnaHQgID0gKDEuMCAtIG9kZF9ldmVuKSAqIDIuMDsKZXZlbl93ZWlnaHQgPSBvZGRfZXZlbiAqIDIuMDsKb2RkX2V2ZW5fZmFjdG9yKGspID0gYmEuaWYoayAlIDIgPT0gMCwgZXZlbl93ZWlnaHQsIG9kZF93ZWlnaHQpOwoKLy8gQ29tYmluZWQgcmF3IGFtcGxpdHVkZQpoYXJtX2FtcF9yYXcoaykgPSBncm91cF9hbXAoaykgKiB0aWx0X2ZhY3RvcihrKSAqIG9kZF9ldmVuX2ZhY3RvcihrKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBGb3JtYW50IHNoYXBpbmcg4oCUIHR3byBHYXVzc2lhbiBidW1wcyBpbiBoYXJtb25pYy1pbmRleCBzcGFjZQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc2lnbWFfc3EgPSAxLjUgKiAxLjU7CmZvcm1hbnRfYnVtcChrLCBjdHIpID0gZXhwKC0wLjUgKiAoZmxvYXQoaykgLSBjdHIpICogKGZsb2F0KGspIC0gY3RyKSAvIHNpZ21hX3NxKTsKZm9ybWFudF9mYWN0b3IoaykgPQogIDEuMCArIGZvcm1hbnRfZGVwdGggKiAoZm9ybWFudF9idW1wKGssIGZvcm1hbnQxX2ZyZXEpICsgZm9ybWFudF9idW1wKGssIGZvcm1hbnQyX2ZyZXEpKTsKCmhhcm1fYW1wKGspID0gaGFybV9hbXBfcmF3KGspICogZm9ybWFudF9mYWN0b3Ioayk7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gSW5oYXJtb25pYyBwYXJ0aWFsIGZyZXF1ZW5jeTogZnJlcV9rID0gaypmMCooMSArIEIqKGteMiAtIDEpKQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KaGFybV9mcmVxKGspID0gZnJlcV9zbW9vdGggKiBmbG9hdChrKQogICAgICAgICAgICAgICAqICgxLjAgKyBpbmhhcm1vbmljaXR5ICogKGZsb2F0KGspICogZmxvYXQoaykgLSAxLjApKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBQaGFzZSByYW5kb21pc2F0aW9uIOKAlCBhZGRzIHBlci1oYXJtb25pYyBub2lzZSB0byB0aGUgb3NjaWxsYXRvciBmcmVxdWVuY3ksCi8vIGdyYWR1YWxseSBkZXBoYXNpbmcgcGFydGlhbHMgKHBoYXNlX3JhbmRvbT0wOiBwaGFzZS1sb2NrZWQsID0xOiByYW5kb20pCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpwaGFzZV9yYW5kX2xmbyhrKSA9IG5vLm5vaXNlICogKGZsb2F0KChrICogMTcgKyAzKSAlIDMxICsgMSkgLyAzMS4wKQogICAgICAgICAgICAgICAgICAgIDogc2kuc21vb3RoKGJhLnRhdTJwb2xlKDAuMDUpKQogICAgICAgICAgICAgICAgICAgIDogKihwaGFzZV9yYW5kb20gKiBoYXJtX2ZyZXEoaykgKiAwLjAxKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBQaGFzZSByYW5kb20gd2FsayDigJQgc2xvd2VyIGluZGVwZW5kZW50IGRyaWZ0IHBlciBwYXJ0aWFsCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpwaGFzZV93YWxrKGspID0gbm8ubm9pc2UgKiAoZmxvYXQoayAlIDcgKyAxKSAvIDcuMCkKICAgICAgICAgICAgICAgIDogc2kuc21vb3RoKGJhLnRhdTJwb2xlKDAuMSkpCiAgICAgICAgICAgICAgICA6ICoocGhhc2Vfd2Fsa19yYXRlKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBJbnRlci1wYXJ0aWFsIGJlYXRpbmcg4oCUIHNpbnVzb2lkYWwgZGV0dW5pbmcgc3RhZ2dlcgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KYmVhdGluZ19vZmZzZXQoaykgPSBiZWF0aW5nX2RlcHRoCiAgICAgICAgICAgICAgICAgICAgKiBvcy5vc2MoYmVhdGluZ19yYXRlICogZmxvYXQoayAlIDMgKyAxKSAqIDAuNykKICAgICAgICAgICAgICAgICAgICAqIGhhcm1fZnJlcShrKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBTdGVyZW8gc3ByZWFkIOKAlCBSIGNoYW5uZWwgZ2V0cyBhIHNtYWxsIHBlci1oYXJtb25pYyBwaXRjaCBvZmZzZXQKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN0ZXJlb19zcHJlYWRfZnJlcShrKSA9IHN0ZXJlb19waGFzZV9zcHJlYWQgKiBmbG9hdChrKSAqIDAuMDE7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gQWRkaXRpdmUgb3NjaWxsYXRvciBzdW1zIOKAlCBMIGFuZCBSCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQphZGRpdGl2ZV9MID0gc3VtKGssIE4sCiAgaGFybV9hbXAoaysxKSAqIGJyaWdodF9mYWN0b3IoaysxKSAqIGZsdXhfZmFjdG9yKGsrMSkgKiBkcmlmdF9mYWN0b3IoaysxKSAqCiAgb3Mub3NjKCAgaGFybV9mcmVxKGsrMSkgKiAoMS4wICsgdmlicmF0b19sZm8pCiAgICAgICAgICsgYmVhdGluZ19vZmZzZXQoaysxKQogICAgICAgICArIHBoYXNlX3JhbmRfbGZvKGsrMSkKICAgICAgICAgKyBwaGFzZV93YWxrKGsrMSkKICApCik7CgphZGRpdGl2ZV9SID0gc3VtKGssIE4sCiAgaGFybV9hbXAoaysxKSAqIGJyaWdodF9mYWN0b3IoaysxKSAqIGZsdXhfZmFjdG9yKGsrMSkgKiBkcmlmdF9mYWN0b3IoaysxKSAqCiAgb3Mub3NjKCAgaGFybV9mcmVxKGsrMSkgKiAoMS4wICsgdmlicmF0b19sZm8gKyBzdGVyZW9fc3ByZWFkX2ZyZXEoaysxKSkKICAgICAgICAgKyBiZWF0aW5nX29mZnNldChrKzEpCiAgICAgICAgICsgcGhhc2VfcmFuZF9sZm8oaysxKQogICAgICAgICArIHBoYXNlX3dhbGsoaysxKQogICkKKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBTdWItaGFybW9uaWMgKDAuNcOXIGZ1bmRhbWVudGFsKQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViX29zYyA9IHN1Yl9oYXJtb25pYyAqIG9zLm9zYyhmcmVxX3Ntb290aCAqIDAuNSk7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gTm9pc2UgZmxvb3Ig4oCUIGNvbG91cmVkIHZpYSBvbmUtcG9sZSBMUCAobm9pc2VfY29sb3I9MOKGkndoaXRlLCA9MeKGkmRhcmspCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpub2lzZV9scF9jdXRvZmYgPSAyMDAuMCArICgxLjAgLSBub2lzZV9jb2xvcikgKiAxOTgwMC4wOwpub2lzZV9zaWduYWwgICAgPSBuby5ub2lzZSA6IGZpLmxvd3Bhc3MoMSwgbm9pc2VfbHBfY3V0b2ZmKTsKbm9pc2Vfb3V0ICAgICAgID0gbm9pc2VfZmxvb3IgKiBub2lzZV9zaWduYWw7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gU29mdC1jbGlwIHNhdHVyYXRpb24g4oCUIHRhbmggd2F2ZXNoYXBlcgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZHJpdmUgICAgICAgPSAxLjAgKyBzYXR1cmF0aW9uICogOS4wOwpzb2Z0Y2xpcCh4KSA9IG1hLnRhbmgoeCAqIGRyaXZlKSAvIGRyaXZlOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIE91dHB1dCBnYWluCi8vIHZlbF9icmlnaHQgbW9kdWxhdGVzIGhvdyBtdWNoIHRoZSBicmlnaHRuZXNzIGVudmVsb3BlIGJvb3N0cyB0aGUgb3ZlcmFsbAovLyBsZXZlbCBkdXJpbmcgbm90ZSBvbnNldCAoY291cGxlcyB2ZWxvY2l0eSBzZW5zaXRpdml0eSB0byBicmlnaHRuZXNzKS4KLy8gSGVyZSBpdCBhY3RzIGFzIGEgc3VidGxlIG1pZC10ZXJtIGdhaW4gc2hhcGVyIHZpYSB0aGUgYnJpZ2h0X2VudiBzaWduYWwuCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp2ZWxfYnJpZ2h0X2Jvb3N0ID0gMS4wICsgdmVsX2JyaWdodCAqIGJyaWdodF9lbnYgKiAwLjM7Cm91dF9nYWluID0gbGV2ZWwgKiAoMS4wIC0gdmVsX3NlbnMgKiAwLjMpICogdmVsX2JyaWdodF9ib29zdDsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBGaW5hbCBhc3NlbWJseQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc2lnbmFsX0wgPSAoYWRkaXRpdmVfTCArIHN1Yl9vc2MgKyBub2lzZV9vdXQpICogYW1wX2VudiAqIHRyZW1vbG9fbGZvICogb3V0X2dhaW47CnNpZ25hbF9SID0gKGFkZGl0aXZlX1IgKyBzdWJfb3NjICsgbm9pc2Vfb3V0KSAqIGFtcF9lbnYgKiB0cmVtb2xvX2xmbyAqIG91dF9nYWluOwoKcHJvY2VzcyA9IHNvZnRjbGlwKHNpZ25hbF9MKSwgc29mdGNsaXAoc2lnbmFsX1IpOwo=","inputs": 0,"outputs": 2,"meta": [ { "basics.lib/name": "Faust Basic Element Library" },{ "basics.lib/version": "1.21.0" },{ "compile_options": "-lang wasm -ct 1 -cn additive -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" },{ "envelopes.lib/adsr:author": "Yann Orlarey and Andrey Bundin" },{ "envelopes.lib/author": "GRAME" },{ "envelopes.lib/copyright": "GRAME" },{ "envelopes.lib/license": "LGPL with exception" },{ "envelopes.lib/name": "Faust Envelope Library" },{ "envelopes.lib/version": "1.3.0" },{ "filename": "additive.dsp" },{ "filters.lib/lowpass0_highpass1": "MIT-style STK-4.3 license" },{ "filters.lib/lowpass0_highpass1:author": "Julius O. Smith III" },{ "filters.lib/lowpass:author": "Julius O. Smith III" },{ "filters.lib/lowpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass:license": "MIT-style STK-4.3 license" },{ "filters.lib/name": "Faust Filters Library" },{ "filters.lib/tf1:author": "Julius O. Smith III" },{ "filters.lib/tf1:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf1s:author": "Julius O. Smith III" },{ "filters.lib/tf1s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1s:license": "MIT-style STK-4.3 license" },{ "filters.lib/version": "1.7.1" },{ "maths.lib/author": "GRAME" },{ "maths.lib/copyright": "GRAME" },{ "maths.lib/license": "LGPL with exception" },{ "maths.lib/name": "Faust Math Library" },{ "maths.lib/version": "2.8.1" },{ "name": "additive" },{ "noises.lib/name": "Faust Noise Generator Library" },{ "noises.lib/version": "1.4.1" },{ "oscillators.lib/name": "Faust Oscillator Library" },{ "oscillators.lib/version": "1.6.0" },{ "platform.lib/name": "Generic Platform Library" },{ "platform.lib/version": "1.3.0" },{ "signals.lib/name": "Faust Signal Routing Library" },{ "signals.lib/version": "1.6.0" }],"ui": [ {"type": "vgroup","label": "additive","items": [ {"type": "hslider","label": "0_Hidden/freq","varname": "fHslider19","shortname": "0_Hidden_freq","address": "/additive/0_Hidden_freq","index": 262336,"meta": [{ "hidden": "1" },{ "unit": "Hz" }],"init": 220,"min": 20,"max": 4000,"step": 0.01},{"type": "button","label": "0_Hidden/gate","varname": "fButton0","shortname": "0_Hidden_gate","address": "/additive/0_Hidden_gate","index": 262152,"meta": [{ "hidden": "1" }]},{"type": "hslider","label": "1_Spectral Shape/00_h1_amp","varname": "fHslider41","shortname": "1_Spectral_Shape_00_h1_amp","address": "/additive/1_Spectral_Shape_00_h1_amp","index": 263488,"meta": [{ "tooltip": "H1 amplitude" }],"init": 0.8,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral Shape/01_h2_amp","varname": "fHslider40","shortname": "1_Spectral_Shape_01_h2_amp","address": "/additive/1_Spectral_Shape_01_h2_amp","index": 263476,"meta": [{ "tooltip": "H2 amplitude" }],"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral Shape/02_h3_amp","varname": "fHslider39","shortname": "1_Spectral_Shape_02_h3_amp","address": "/additive/1_Spectral_Shape_02_h3_amp","index": 263464,"meta": [{ "tooltip": "H3 amplitude" }],"init": 0.35,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral Shape/03_h4_amp","varname": "fHslider38","shortname": "1_Spectral_Shape_03_h4_amp","address": "/additive/1_Spectral_Shape_03_h4_amp","index": 263452,"meta": [{ "tooltip": "H4 amplitude" }],"init": 0.25,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral Shape/04_h5_amp","varname": "fHslider37","shortname": "1_Spectral_Shape_04_h5_amp","address": "/additive/1_Spectral_Shape_04_h5_amp","index": 263440,"meta": [{ "tooltip": "H5 amplitude" }],"init": 0.18,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral Shape/05_h6_amp","varname": "fHslider36","shortname": "1_Spectral_Shape_05_h6_amp","address": "/additive/1_Spectral_Shape_05_h6_amp","index": 263428,"meta": [{ "tooltip": "H6 amplitude" }],"init": 0.12,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral Shape/06_h7_amp","varname": "fHslider35","shortname": "1_Spectral_Shape_06_h7_amp","address": "/additive/1_Spectral_Shape_06_h7_amp","index": 263416,"meta": [{ "tooltip": "H7 amplitude" }],"init": 0.08,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral Shape/07_h8_amp","varname": "fHslider34","shortname": "1_Spectral_Shape_07_h8_amp","address": "/additive/1_Spectral_Shape_07_h8_amp","index": 263404,"meta": [{ "tooltip": "H8 amplitude" }],"init": 0.06,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral Shape/08_h9_16_amp","varname": "fHslider33","shortname": "1_Spectral_Shape_08_h9_16_amp","address": "/additive/1_Spectral_Shape_08_h9_16_amp","index": 263336,"meta": [{ "tooltip": "H9-16 group amp" }],"init": 0.05,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral Shape/09_h17_32_amp","varname": "fHslider32","shortname": "1_Spectral_Shape_09_h17_32_amp","address": "/additive/1_Spectral_Shape_09_h17_32_amp","index": 263204,"meta": [{ "tooltip": "H17-32 group amp" }],"init": 0.025,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral Shape/10_h33_64_amp","varname": "fHslider30","shortname": "1_Spectral_Shape_10_h33_64_amp","address": "/additive/1_Spectral_Shape_10_h33_64_amp","index": 262436,"meta": [{ "tooltip": "H33-64 group amp" }],"init": 0.01,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral Shape/11_spectral_tilt","varname": "fHslider29","shortname": "1_Spectral_Shape_11_spectral_tilt","address": "/additive/1_Spectral_Shape_11_spectral_tilt","index": 262432,"meta": [{ "tooltip": "Global tilt" }],"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral Shape/12_inharmonicity","varname": "fHslider20","shortname": "1_Spectral_Shape_12_inharmonicity","address": "/additive/1_Spectral_Shape_12_inharmonicity","index": 262348,"meta": [{ "tooltip": "Inharmonicity" }],"init": 0,"min": 0,"max": 0.15,"step": 0.0001},{"type": "hslider","label": "1_Spectral Shape/13_odd_even","varname": "fHslider31","shortname": "1_Spectral_Shape_13_odd_even","address": "/additive/1_Spectral_Shape_13_odd_even","index": 262440,"meta": [{ "tooltip": "Odd/even balance" }],"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "2_Temporal/00_attack","varname": "fHslider8","shortname": "2_Temporal_00_attack","address": "/additive/2_Temporal_00_attack","index": 262232,"meta": [{ "scale": "log" },{ "tooltip": "Attack" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "2_Temporal/01_decay","varname": "fHslider9","shortname": "2_Temporal_01_decay","address": "/additive/2_Temporal_01_decay","index": 262236,"meta": [{ "tooltip": "Decay" }],"init": 0.3,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "2_Temporal/02_sustain","varname": "fHslider10","shortname": "2_Temporal_02_sustain","address": "/additive/2_Temporal_02_sustain","index": 262240,"meta": [{ "tooltip": "Sustain" }],"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "2_Temporal/03_release","varname": "fHslider7","shortname": "2_Temporal_03_release","address": "/additive/2_Temporal_03_release","index": 262228,"meta": [{ "tooltip": "Release" }],"init": 0.5,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "2_Temporal/04_brightness_attack","varname": "fHslider1","shortname": "2_Temporal_04_brightness_attack","address": "/additive/2_Temporal_04_brightness_attack","index": 262192,"meta": [{ "scale": "log" },{ "tooltip": "Bright A" }],"init": 0.005,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "2_Temporal/05_brightness_decay","varname": "fHslider2","shortname": "2_Temporal_05_brightness_decay","address": "/additive/2_Temporal_05_brightness_decay","index": 262196,"meta": [{ "tooltip": "Bright D" }],"init": 0.15,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "2_Temporal/06_brightness_sustain","varname": "fHslider3","shortname": "2_Temporal_06_brightness_sustain","address": "/additive/2_Temporal_06_brightness_sustain","index": 262200,"meta": [{ "tooltip": "Bright S" }],"init": 0.4,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "2_Temporal/07_brightness_release","varname": "fHslider0","shortname": "2_Temporal_07_brightness_release","address": "/additive/2_Temporal_07_brightness_release","index": 262172,"meta": [{ "tooltip": "Bright R" }],"init": 0.3,"min": 0.01,"max": 5,"step": 0.001},{"type": "hslider","label": "2_Temporal/08_spectral_flux_rate","varname": "fHslider22","shortname": "2_Temporal_08_spectral_flux_rate","address": "/additive/2_Temporal_08_spectral_flux_rate","index": 262384,"meta": [{ "tooltip": "Flux rate" }],"init": 0.5,"min": 0,"max": 10,"step": 0.01},{"type": "hslider","label": "2_Temporal/09_spectral_flux_depth","varname": "fHslider23","shortname": "2_Temporal_09_spectral_flux_depth","address": "/additive/2_Temporal_09_spectral_flux_depth","index": 262396,"meta": [{ "tooltip": "Flux depth" }],"init": 0.1,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "3_Phase/00_phase_random","varname": "fHslider11","shortname": "3_Phase_00_phase_random","address": "/additive/3_Phase_00_phase_random","index": 262280,"meta": [{ "tooltip": "Phase randomisation" }],"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "3_Phase/01_phase_walk_rate","varname": "fHslider21","shortname": "3_Phase_01_phase_walk_rate","address": "/additive/3_Phase_01_phase_walk_rate","index": 262372,"meta": [{ "tooltip": "Phase walk rate" }],"init": 0,"min": 0,"max": 5,"step": 0.001},{"type": "hslider","label": "3_Phase/02_beating_depth","varname": "fHslider13","shortname": "3_Phase_02_beating_depth","address": "/additive/3_Phase_02_beating_depth","index": 262300,"meta": [{ "tooltip": "Beating depth" }],"init": 0,"min": 0,"max": 0.02,"step": 0.0001},{"type": "hslider","label": "3_Phase/03_beating_rate","varname": "fHslider12","shortname": "3_Phase_03_beating_rate","address": "/additive/3_Phase_03_beating_rate","index": 262284,"meta": [{ "tooltip": "Beating rate" }],"init": 1,"min": 0,"max": 10,"step": 0.01},{"type": "hslider","label": "3_Phase/04_stereo_phase_spread","varname": "fHslider48","shortname": "3_Phase_04_stereo_phase_spread","address": "/additive/3_Phase_04_stereo_phase_spread","index": 263536,"meta": [{ "tooltip": "Stereo spread" }],"init": 0.1,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "3_Phase/05_noise_floor","varname": "fHslider43","shortname": "3_Phase_05_noise_floor","address": "/additive/3_Phase_05_noise_floor","index": 263504,"meta": [{ "tooltip": "Noise floor" }],"init": 0,"min": 0,"max": 0.2,"step": 0.001},{"type": "hslider","label": "3_Phase/06_noise_color","varname": "fHslider42","shortname": "3_Phase_06_noise_color","address": "/additive/3_Phase_06_noise_color","index": 263492,"meta": [{ "tooltip": "Noise colour" }],"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "3_Phase/07_sub_harmonic","varname": "fHslider44","shortname": "3_Phase_07_sub_harmonic","address": "/additive/3_Phase_07_sub_harmonic","index": 263520,"meta": [{ "tooltip": "Sub-harmonic" }],"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "4_Modulation/00_vibrato_rate","varname": "fHslider15","shortname": "4_Modulation_00_vibrato_rate","address": "/additive/4_Modulation_00_vibrato_rate","index": 262312,"meta": [{ "tooltip": "Vibrato rate" }],"init": 5,"min": 0,"max": 10,"step": 0.01},{"type": "hslider","label": "4_Modulation/01_vibrato_depth","varname": "fHslider16","shortname": "4_Modulation_01_vibrato_depth","address": "/additive/4_Modulation_01_vibrato_depth","index": 262324,"meta": [{ "tooltip": "Vibrato depth" }],"init": 0,"min": 0,"max": 0.05,"step": 0.0001},{"type": "hslider","label": "4_Modulation/02_vibrato_delay","varname": "fHslider14","shortname": "4_Modulation_02_vibrato_delay","address": "/additive/4_Modulation_02_vibrato_delay","index": 262308,"meta": [{ "tooltip": "Vibrato delay" }],"init": 0.3,"min": 0,"max": 2,"step": 0.001},{"type": "hslider","label": "4_Modulation/03_tremolo_rate","varname": "fHslider5","shortname": "4_Modulation_03_tremolo_rate","address": "/additive/4_Modulation_03_tremolo_rate","index": 262208,"meta": [{ "tooltip": "Tremolo rate" }],"init": 4,"min": 0,"max": 20,"step": 0.01},{"type": "hslider","label": "4_Modulation/04_tremolo_depth","varname": "fHslider6","shortname": "4_Modulation_04_tremolo_depth","address": "/additive/4_Modulation_04_tremolo_depth","index": 262224,"meta": [{ "tooltip": "Tremolo depth" }],"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "4_Modulation/05_drift_rate","varname": "fHslider24","shortname": "4_Modulation_05_drift_rate","address": "/additive/4_Modulation_05_drift_rate","index": 262400,"meta": [{ "tooltip": "Drift rate" }],"init": 0,"min": 0,"max": 2,"step": 0.001},{"type": "hslider","label": "4_Modulation/06_drift_depth","varname": "fHslider25","shortname": "4_Modulation_06_drift_depth","address": "/additive/4_Modulation_06_drift_depth","index": 262416,"meta": [{ "tooltip": "Drift depth" }],"init": 0,"min": 0,"max": 0.3,"step": 0.001},{"type": "hslider","label": "4_Modulation/07_formant1_freq","varname": "fHslider27","shortname": "4_Modulation_07_formant1_freq","address": "/additive/4_Modulation_07_formant1_freq","index": 262424,"meta": [{ "tooltip": "Formant 1 freq" }],"init": 3,"min": 1,"max": 16,"step": 0.01},{"type": "hslider","label": "4_Modulation/08_formant2_freq","varname": "fHslider26","shortname": "4_Modulation_08_formant2_freq","address": "/additive/4_Modulation_08_formant2_freq","index": 262420,"meta": [{ "tooltip": "Formant 2 freq" }],"init": 6,"min": 1,"max": 16,"step": 0.01},{"type": "hslider","label": "4_Modulation/09_formant_depth","varname": "fHslider28","shortname": "4_Modulation_09_formant_depth","address": "/additive/4_Modulation_09_formant_depth","index": 262428,"meta": [{ "tooltip": "Formant depth" }],"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "5_Master/00_level","varname": "fHslider47","shortname": "5_Master_00_level","address": "/additive/5_Master_00_level","index": 263532,"meta": [{ "tooltip": "Output level" }],"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "5_Master/01_vel_sens","varname": "fHslider46","shortname": "5_Master_01_vel_sens","address": "/additive/5_Master_01_vel_sens","index": 263528,"meta": [{ "tooltip": "Velocity sens" }],"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "5_Master/02_vel_brightness","varname": "fHslider4","shortname": "5_Master_02_vel_brightness","address": "/additive/5_Master_02_vel_brightness","index": 262204,"meta": [{ "tooltip": "Vel bright" }],"init": 0.3,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "5_Master/03_pitch_glide","varname": "fHslider17","shortname": "5_Master_03_pitch_glide","address": "/additive/5_Master_03_pitch_glide","index": 262328,"meta": [{ "tooltip": "Portamento" }],"init": 0,"min": 0,"max": 10,"step": 0.01},{"type": "hslider","label": "5_Master/04_saturation","varname": "fHslider45","shortname": "5_Master_04_saturation","address": "/additive/5_Master_04_saturation","index": 263524,"meta": [{ "tooltip": "Saturation" }],"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "5_Master/05_fine_tune","varname": "fHslider18","shortname": "5_Master_05_fine_tune","address": "/additive/5_Master_05_fine_tune","index": 262332,"meta": [{ "tooltip": "Cents" },{ "unit": "ct" }],"init": 0,"min": -50,"max": 50,"step": 0.1}]}]} \ No newline at end of file diff --git a/playground/faust/additive.wasm b/playground/faust/additive.wasm index 36b038b..84a582a 100644 Binary files a/playground/faust/additive.wasm and b/playground/faust/additive.wasm differ diff --git a/playground/faust/build.sh b/playground/faust/build.sh index fd3a308..b92dbcf 100755 --- a/playground/faust/build.sh +++ b/playground/faust/build.sh @@ -68,30 +68,32 @@ for DSP in "${DSP_FILES[@]}"; do NAME="$(basename "$DSP" .dsp)" echo "Compiling $NAME.dsp ..." + # Faust -o is interpreted relative to -O (so we must cd into SCRIPT_DIR + # and pass just the filename). Class names (-cn) must be valid C identifiers, + # so dash characters are replaced with underscores. + CLASSNAME="$(echo "$NAME" | tr '-' '_')" + # Step 1: emit WASM binary + JS glue # -lang wasm — target WebAssembly # -cn — class name prefix in generated JS - # -e — export all DSP metadata into the WASM module # -O — output directory - faust -lang wasm \ - -cn "$NAME" \ - -e \ - -O "$SCRIPT_DIR" \ - "$DSP" \ - -o "$SCRIPT_DIR/${NAME}.wasm" + # + # NB: do NOT pass -e here. In Faust 2.79, -e means "export expanded DSP + # (textual)" — it causes the .wasm output to be Faust source text, not a + # real WebAssembly binary. This script historically used -e by mistake. + ( cd "$SCRIPT_DIR" && \ + faust -lang wasm \ + -cn "$CLASSNAME" \ + -O "$SCRIPT_DIR" \ + "${NAME}.dsp" \ + -o "${NAME}.wasm" ) - # Step 2: emit the standalone JSON descriptor (separate pass so the JSON - # is always present even if the WASM glue is regenerated). - # -json produces .json next to the source. - faust -json "$DSP" -o /dev/null 2>/dev/null || \ - faust -lang codebox -json "$DSP" -o /dev/null 2>/dev/null || true - - # Faust places the JSON next to the .dsp; rename to sit next to outputs. - if [ -f "${DSP}.json" ]; then - mv "${DSP}.json" "$SCRIPT_DIR/${NAME}.json" - elif [ -f "$SCRIPT_DIR/${NAME}.json" ]; then - : # already in the right place (some faust versions) - else + # Note: `faust -lang wasm -O . foo.dsp -o foo.wasm` already writes + # foo.json alongside foo.wasm with the wasm-native descriptor (including + # numeric `index` fields that workers use as setParamValue zone addresses). + # The old standalone `-json` pass produced a smaller JSON WITHOUT the + # `index` field, which is the wrong shape for workers — don't run it. + if [ ! -f "$SCRIPT_DIR/${NAME}.json" ]; then echo " WARNING: ${NAME}.json not produced — check faust version" fi diff --git a/playground/faust/eoc-compressor.json b/playground/faust/eoc-compressor.json index c2a096b..827bf86 100644 --- a/playground/faust/eoc-compressor.json +++ b/playground/faust/eoc-compressor.json @@ -1 +1 @@ -{"name": "eoc-compressor","filename": "eoc-compressor.dsp","version": "2.83.1","compile_options": "-lang wasm -fpga-mem-th 4 -ct 1 -cn eoc_compressor -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0","library_list": ["/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/stdfaust.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/basics.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/compressors.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/analyzers.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/signals.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/maths.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/platform.lib"],"include_pathnames": ["/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/.claude/worktrees/agent-a42cfe12/playground/faust"],"size": 68,"code": "Ly8gZW9jLWNvbXByZXNzb3IuZHNwIOKAlCBTdGVyZW8gZmVlZC1mb3J3YXJkIGNvbXByZXNzb3IgZm9yIE1FTUxOYXV0IEVPQyBjaGFpbgovLwovLyA3IHBhcmFtczogdGhyZXNob2xkLCByYXRpbywgYXR0YWNrLCByZWxlYXNlLCBrbmVlLCBtYWtldXAsIG1peAovLwovLyBDb21waWxlOgovLyAgIGZhdXN0IC1sYW5nIHdhc20gLWNuIGVvY19jb21wcmVzc29yIC1lIGVvYy1jb21wcmVzc29yLmRzcCAtbyBlb2MtY29tcHJlc3Nvci53YXNtIC1qc29uCgppbXBvcnQoInN0ZGZhdXN0LmxpYiIpOwoKdGhyZXNob2xkID0gaHNsaWRlcigidGhyZXNob2xkW3VuaXQ6ZEJdIiwgLTI0LjAsIC02MC4wLCAgIDAuMCwgIDAuMSk7CnJhdGlvICAgICA9IGhzbGlkZXIoInJhdGlvIiwgICAgICAgICAgICAgICAgNC4wLCAgIDEuMCwgIDIwLjAsICAwLjEpOwphdHRhY2sgICAgPSBoc2xpZGVyKCJhdHRhY2tbdW5pdDptc10iLCAgICAgMTAuMCwgICAwLjEsIDIwMC4wLCAgMC4xKTsKcmVsZWFzZSAgID0gaHNsaWRlcigicmVsZWFzZVt1bml0Om1zXSIsICAgMTAwLjAsICAxMC4wLCAyMDAwLjAsIDEuMCk7CmtuZWUgICAgICA9IGhzbGlkZXIoImtuZWVbdW5pdDpkQl0iLCAgICAgICAgNi4wLCAgIDAuMCwgIDI0LjAsICAwLjEpOwptYWtldXAgICAgPSBoc2xpZGVyKCJtYWtldXBbdW5pdDpkQl0iLCAgICAgIDAuMCwgICAwLjAsICAyNC4wLCAgMC4xKTsKbWl4ICAgICAgID0gaHNsaWRlcigibWl4IiwgICAgICAgICAgICAgICAgICAxLjAsICAgMC4wLCAgIDEuMCwgIDAuMDAxKTsKCi8vIENvbnZlcnQgbXMgdG8gc2Vjb25kcyBmb3IgRmF1c3QKYXR0YWNrU2VjICA9IGF0dGFjayAgLyAxMDAwLjA7CnJlbGVhc2VTZWMgPSByZWxlYXNlIC8gMTAwMC4wOwoKLy8gU29mdC1rbmVlIHRocmVzaG9sZCBhZGp1c3RtZW50IChzaGlmdCB0aHJlc2hvbGQgZG93biBieSBoYWxmIHRoZSBrbmVlKQp0aHJlc2hLbmVlID0gdGhyZXNob2xkIC0ga25lZSAvIDIuMDsKCi8vIE1ha2V1cCBnYWluIGFzIGxpbmVhciBtdWx0aXBsaWVyCm1ha2V1cExpbiA9IGJhLmRiMmxpbmVhcihtYWtldXApOwoKLy8gQ29tcHJlc3NvciBvbiBhIHNpbmdsZSBjaGFubmVsIHdpdGggbWFrZXVwIGFwcGxpZWQKY29tcENoKHgpID0gY28uY29tcHJlc3Nvcl9tb25vKHJhdGlvLCB0aHJlc2hLbmVlLCBhdHRhY2tTZWMsIHJlbGVhc2VTZWMsIHgpICogbWFrZXVwTGluOwoKLy8gUGFyYWxsZWwgY29tcHJlc3Npb24gKGRyeS93ZXQgYmxlbmQpCnBhcmFsbGVsQ29tcCh4KSA9ICgxLjAgLSBtaXgpICogeCArIG1peCAqIGNvbXBDaCh4KTsKCnByb2Nlc3MgPSBwYXJhbGxlbENvbXAsIHBhcmFsbGVsQ29tcDsK","inputs": 2,"outputs": 2,"meta": [ { "analyzers.lib/amp_follower_ar:author": "Jonatan Liljedahl, revised by Romain Michon" },{ "analyzers.lib/name": "Faust Analyzer Library" },{ "analyzers.lib/version": "1.3.0" },{ "basics.lib/name": "Faust Basic Element Library" },{ "basics.lib/version": "1.22.0" },{ "compile_options": "-lang wasm -fpga-mem-th 4 -ct 1 -cn eoc_compressor -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" },{ "compressors.lib/compression_gain_mono:author": "Julius O. Smith III" },{ "compressors.lib/compression_gain_mono:copyright": "Copyright (C) 2014-2020 by Julius O. Smith III " },{ "compressors.lib/compression_gain_mono:license": "MIT-style STK-4.3 license" },{ "compressors.lib/compressor_lad_mono:author": "Julius O. Smith III" },{ "compressors.lib/compressor_lad_mono:copyright": "Copyright (C) 2014-2020 by Julius O. Smith III " },{ "compressors.lib/compressor_lad_mono:license": "MIT-style STK-4.3 license" },{ "compressors.lib/compressor_mono:author": "Julius O. Smith III" },{ "compressors.lib/compressor_mono:copyright": "Copyright (C) 2014-2020 by Julius O. Smith III " },{ "compressors.lib/compressor_mono:license": "MIT-style STK-4.3 license" },{ "compressors.lib/name": "Faust Compressor Effect Library" },{ "compressors.lib/version": "1.6.0" },{ "filename": "eoc-compressor.dsp" },{ "maths.lib/author": "GRAME" },{ "maths.lib/copyright": "GRAME" },{ "maths.lib/license": "LGPL with exception" },{ "maths.lib/name": "Faust Math Library" },{ "maths.lib/version": "2.9.0" },{ "name": "eoc-compressor" },{ "platform.lib/name": "Generic Platform Library" },{ "platform.lib/version": "1.3.0" },{ "signals.lib/name": "Faust Signal Routing Library" },{ "signals.lib/onePoleSwitching:author": "Jonatan Liljedahl, revised by Dario Sanfilippo" },{ "signals.lib/onePoleSwitching:licence": "STK-4.3" },{ "signals.lib/version": "1.6.0" }],"ui": [ {"type": "vgroup","label": "eoc-compressor","items": [ {"type": "hslider","label": "attack","varname": "fHslider0","shortname": "attack","address": "/eoc-compressor/attack","index": 0,"meta": [{ "unit": "ms" }],"init": 10,"min": 0.1,"max": 200,"step": 0.1},{"type": "hslider","label": "knee","varname": "fHslider3","shortname": "knee","address": "/eoc-compressor/knee","index": 28,"meta": [{ "unit": "dB" }],"init": 6,"min": 0,"max": 24,"step": 0.1},{"type": "hslider","label": "makeup","varname": "fHslider5","shortname": "makeup","address": "/eoc-compressor/makeup","index": 44,"meta": [{ "unit": "dB" }],"init": 0,"min": 0,"max": 24,"step": 0.1},{"type": "hslider","label": "mix","varname": "fHslider6","shortname": "mix","address": "/eoc-compressor/mix","index": 48,"init": 1,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "ratio","varname": "fHslider4","shortname": "ratio","address": "/eoc-compressor/ratio","index": 32,"init": 4,"min": 1,"max": 20,"step": 0.1},{"type": "hslider","label": "release","varname": "fHslider2","shortname": "release","address": "/eoc-compressor/release","index": 16,"meta": [{ "unit": "ms" }],"init": 100,"min": 10,"max": 2000,"step": 1},{"type": "hslider","label": "threshold","varname": "fHslider1","shortname": "threshold","address": "/eoc-compressor/threshold","index": 12,"meta": [{ "unit": "dB" }],"init": -24,"min": -60,"max": 0,"step": 0.1}]}]} \ No newline at end of file +{"name": "eoc-compressor","filename": "eoc-compressor.dsp","version": "2.79.3","compile_options": "-lang wasm -ct 1 -cn eoc_compressor -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0","library_list": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/stdfaust.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/basics.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/compressors.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/analyzers.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/signals.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/maths.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/platform.lib"],"include_pathnames": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust"],"size": 68,"code": "Ly8gZW9jLWNvbXByZXNzb3IuZHNwIOKAlCBTdGVyZW8gZmVlZC1mb3J3YXJkIGNvbXByZXNzb3IgZm9yIE1FTUxOYXV0IEVPQyBjaGFpbgovLwovLyA3IHBhcmFtczogdGhyZXNob2xkLCByYXRpbywgYXR0YWNrLCByZWxlYXNlLCBrbmVlLCBtYWtldXAsIG1peAovLwovLyBDb21waWxlOgovLyAgIGZhdXN0IC1sYW5nIHdhc20gLWNuIGVvY19jb21wcmVzc29yIC1lIGVvYy1jb21wcmVzc29yLmRzcCAtbyBlb2MtY29tcHJlc3Nvci53YXNtIC1qc29uCgppbXBvcnQoInN0ZGZhdXN0LmxpYiIpOwoKdGhyZXNob2xkID0gaHNsaWRlcigidGhyZXNob2xkW3VuaXQ6ZEJdIiwgLTI0LjAsIC02MC4wLCAgIDAuMCwgIDAuMSk7CnJhdGlvICAgICA9IGhzbGlkZXIoInJhdGlvIiwgICAgICAgICAgICAgICAgNC4wLCAgIDEuMCwgIDIwLjAsICAwLjEpOwphdHRhY2sgICAgPSBoc2xpZGVyKCJhdHRhY2tbdW5pdDptc10iLCAgICAgMTAuMCwgICAwLjEsIDIwMC4wLCAgMC4xKTsKcmVsZWFzZSAgID0gaHNsaWRlcigicmVsZWFzZVt1bml0Om1zXSIsICAgMTAwLjAsICAxMC4wLCAyMDAwLjAsIDEuMCk7CmtuZWUgICAgICA9IGhzbGlkZXIoImtuZWVbdW5pdDpkQl0iLCAgICAgICAgNi4wLCAgIDAuMCwgIDI0LjAsICAwLjEpOwptYWtldXAgICAgPSBoc2xpZGVyKCJtYWtldXBbdW5pdDpkQl0iLCAgICAgIDAuMCwgICAwLjAsICAyNC4wLCAgMC4xKTsKbWl4ICAgICAgID0gaHNsaWRlcigibWl4IiwgICAgICAgICAgICAgICAgICAxLjAsICAgMC4wLCAgIDEuMCwgIDAuMDAxKTsKCi8vIENvbnZlcnQgbXMgdG8gc2Vjb25kcyBmb3IgRmF1c3QKYXR0YWNrU2VjICA9IGF0dGFjayAgLyAxMDAwLjA7CnJlbGVhc2VTZWMgPSByZWxlYXNlIC8gMTAwMC4wOwoKLy8gU29mdC1rbmVlIHRocmVzaG9sZCBhZGp1c3RtZW50IChzaGlmdCB0aHJlc2hvbGQgZG93biBieSBoYWxmIHRoZSBrbmVlKQp0aHJlc2hLbmVlID0gdGhyZXNob2xkIC0ga25lZSAvIDIuMDsKCi8vIE1ha2V1cCBnYWluIGFzIGxpbmVhciBtdWx0aXBsaWVyCm1ha2V1cExpbiA9IGJhLmRiMmxpbmVhcihtYWtldXApOwoKLy8gQ29tcHJlc3NvciBvbiBhIHNpbmdsZSBjaGFubmVsIHdpdGggbWFrZXVwIGFwcGxpZWQKY29tcENoKHgpID0gY28uY29tcHJlc3Nvcl9tb25vKHJhdGlvLCB0aHJlc2hLbmVlLCBhdHRhY2tTZWMsIHJlbGVhc2VTZWMsIHgpICogbWFrZXVwTGluOwoKLy8gUGFyYWxsZWwgY29tcHJlc3Npb24gKGRyeS93ZXQgYmxlbmQpCnBhcmFsbGVsQ29tcCh4KSA9ICgxLjAgLSBtaXgpICogeCArIG1peCAqIGNvbXBDaCh4KTsKCnByb2Nlc3MgPSBwYXJhbGxlbENvbXAsIHBhcmFsbGVsQ29tcDsK","inputs": 2,"outputs": 2,"meta": [ { "analyzers.lib/amp_follower_ar:author": "Jonatan Liljedahl, revised by Romain Michon" },{ "analyzers.lib/name": "Faust Analyzer Library" },{ "analyzers.lib/version": "1.2.0" },{ "basics.lib/name": "Faust Basic Element Library" },{ "basics.lib/version": "1.21.0" },{ "compile_options": "-lang wasm -ct 1 -cn eoc_compressor -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" },{ "compressors.lib/compression_gain_mono:author": "Julius O. Smith III" },{ "compressors.lib/compression_gain_mono:copyright": "Copyright (C) 2014-2020 by Julius O. Smith III " },{ "compressors.lib/compression_gain_mono:license": "MIT-style STK-4.3 license" },{ "compressors.lib/compressor_lad_mono:author": "Julius O. Smith III" },{ "compressors.lib/compressor_lad_mono:copyright": "Copyright (C) 2014-2020 by Julius O. Smith III " },{ "compressors.lib/compressor_lad_mono:license": "MIT-style STK-4.3 license" },{ "compressors.lib/compressor_mono:author": "Julius O. Smith III" },{ "compressors.lib/compressor_mono:copyright": "Copyright (C) 2014-2020 by Julius O. Smith III " },{ "compressors.lib/compressor_mono:license": "MIT-style STK-4.3 license" },{ "compressors.lib/name": "Faust Compressor Effect Library" },{ "compressors.lib/version": "1.6.0" },{ "filename": "eoc-compressor.dsp" },{ "maths.lib/author": "GRAME" },{ "maths.lib/copyright": "GRAME" },{ "maths.lib/license": "LGPL with exception" },{ "maths.lib/name": "Faust Math Library" },{ "maths.lib/version": "2.8.1" },{ "name": "eoc-compressor" },{ "platform.lib/name": "Generic Platform Library" },{ "platform.lib/version": "1.3.0" },{ "signals.lib/name": "Faust Signal Routing Library" },{ "signals.lib/onePoleSwitching:author": "Jonatan Liljedahl, revised by Dario Sanfilippo" },{ "signals.lib/onePoleSwitching:licence": "STK-4.3" },{ "signals.lib/version": "1.6.0" }],"ui": [ {"type": "vgroup","label": "eoc-compressor","items": [ {"type": "hslider","label": "attack","varname": "fHslider0","shortname": "attack","address": "/eoc-compressor/attack","index": 0,"meta": [{ "unit": "ms" }],"init": 10,"min": 0.1,"max": 200,"step": 0.1},{"type": "hslider","label": "knee","varname": "fHslider3","shortname": "knee","address": "/eoc-compressor/knee","index": 28,"meta": [{ "unit": "dB" }],"init": 6,"min": 0,"max": 24,"step": 0.1},{"type": "hslider","label": "makeup","varname": "fHslider5","shortname": "makeup","address": "/eoc-compressor/makeup","index": 44,"meta": [{ "unit": "dB" }],"init": 0,"min": 0,"max": 24,"step": 0.1},{"type": "hslider","label": "mix","varname": "fHslider6","shortname": "mix","address": "/eoc-compressor/mix","index": 48,"init": 1,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "ratio","varname": "fHslider4","shortname": "ratio","address": "/eoc-compressor/ratio","index": 32,"init": 4,"min": 1,"max": 20,"step": 0.1},{"type": "hslider","label": "release","varname": "fHslider2","shortname": "release","address": "/eoc-compressor/release","index": 16,"meta": [{ "unit": "ms" }],"init": 100,"min": 10,"max": 2000,"step": 1},{"type": "hslider","label": "threshold","varname": "fHslider1","shortname": "threshold","address": "/eoc-compressor/threshold","index": 12,"meta": [{ "unit": "dB" }],"init": -24,"min": -60,"max": 0,"step": 0.1}]}]} \ No newline at end of file diff --git a/playground/faust/eoc-compressor.wasm b/playground/faust/eoc-compressor.wasm index 965376f..90a88da 100644 Binary files a/playground/faust/eoc-compressor.wasm and b/playground/faust/eoc-compressor.wasm differ diff --git a/playground/faust/eoc-delay.json b/playground/faust/eoc-delay.json index 5e5a39b..1373391 100644 --- a/playground/faust/eoc-delay.json +++ b/playground/faust/eoc-delay.json @@ -1,131 +1 @@ -{ - "name": "eoc-delay", - "filename": "eoc-delay.dsp", - "version": "2.83.1", - "compile_options": "-lang cpp -fpga-mem-th 4 -ct 1 -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0", - "library_list": ["/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/stdfaust.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/maths.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/platform.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/basics.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/delays.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/filters.lib"], - "include_pathnames": ["/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/.claude/worktrees/agent-a8d5e213/playground/faust"], - "size": 1048656, - "inputs": 2, - "outputs": 2, - "meta": [ - { "basics.lib/name": "Faust Basic Element Library" }, - { "basics.lib/version": "1.22.0" }, - { "compile_options": "-lang cpp -fpga-mem-th 4 -ct 1 -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" }, - { "delays.lib/name": "Faust Delay Library" }, - { "delays.lib/version": "1.2.0" }, - { "filename": "eoc-delay.dsp" }, - { "filters.lib/lowpass0_highpass1": "MIT-style STK-4.3 license" }, - { "filters.lib/lowpass0_highpass1:author": "Julius O. Smith III" }, - { "filters.lib/lowpass:author": "Julius O. Smith III" }, - { "filters.lib/lowpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " }, - { "filters.lib/lowpass:license": "MIT-style STK-4.3 license" }, - { "filters.lib/name": "Faust Filters Library" }, - { "filters.lib/tf1:author": "Julius O. Smith III" }, - { "filters.lib/tf1:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " }, - { "filters.lib/tf1:license": "MIT-style STK-4.3 license" }, - { "filters.lib/tf1s:author": "Julius O. Smith III" }, - { "filters.lib/tf1s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " }, - { "filters.lib/tf1s:license": "MIT-style STK-4.3 license" }, - { "filters.lib/version": "1.7.1" }, - { "maths.lib/author": "GRAME" }, - { "maths.lib/copyright": "GRAME" }, - { "maths.lib/license": "LGPL with exception" }, - { "maths.lib/name": "Faust Math Library" }, - { "maths.lib/version": "2.9.0" }, - { "name": "eoc-delay" }, - { "platform.lib/name": "Generic Platform Library" }, - { "platform.lib/version": "1.3.0" } - ], - "ui": [ - { - "type": "vgroup", - "label": "eoc-delay", - "items": [ - { - "type": "hslider", - "label": "feedback", - "varname": "fHslider1", - "shortname": "feedback", - "address": "/eoc-delay/feedback", - "init": 0.3, - "min": 0, - "max": 0.95, - "step": 0.001 - }, - { - "type": "hslider", - "label": "lp_cutoff", - "varname": "fHslider3", - "shortname": "lp_cutoff", - "address": "/eoc-delay/lp_cutoff", - "meta": [ - { "unit": "Hz" } - ], - "init": 8000, - "min": 500, - "max": 20000, - "step": 1 - }, - { - "type": "hslider", - "label": "mix", - "varname": "fHslider5", - "shortname": "mix", - "address": "/eoc-delay/mix", - "init": 0.3, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "ping_pong", - "varname": "fHslider0", - "shortname": "ping_pong", - "address": "/eoc-delay/ping_pong", - "init": 0, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "spread", - "varname": "fHslider4", - "shortname": "spread", - "address": "/eoc-delay/spread", - "init": 0.5, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "nentry", - "label": "sync", - "varname": "fEntry0", - "shortname": "sync", - "address": "/eoc-delay/sync", - "init": 0, - "min": 0, - "max": 3, - "step": 1 - }, - { - "type": "hslider", - "label": "time", - "varname": "fHslider2", - "shortname": "time", - "address": "/eoc-delay/time", - "meta": [ - { "unit": "ms" } - ], - "init": 250, - "min": 1, - "max": 2000, - "step": 0.1 - } - ] - } - ] -} \ No newline at end of file +{"name": "eoc-delay","filename": "eoc-delay.dsp","version": "2.79.3","compile_options": "-lang wasm -ct 1 -cn eoc_delay -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0","library_list": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/stdfaust.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/maths.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/platform.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/basics.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/delays.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/filters.lib"],"include_pathnames": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust"],"size": 1048656,"code": "Ly8gZW9jLWRlbGF5LmRzcCDigJQgU3RlcmVvIGRlbGF5IGVmZmVjdCBmb3IgdGhlIEVPQyByYWNrLgovLwovLyBQYXJhbWV0ZXJzICg3KToKLy8gICB0aW1lICAgICAgWzI1MG1zLCAxLTIwMDBtc10gICBkZWxheSB0aW1lIChtcykgd2hlbiBzeW5jPTAKLy8gICBmZWVkYmFjayAgWzAuMywgIDAtMC45NV0gICAgICBmZWVkYmFjayBhbW91bnQKLy8gICBscF9jdXRvZmYgWzgwMDAsIDUwMC0yMDAwMF0gICBMUCBmaWx0ZXIgY3V0b2ZmIG9uIGZlZWRiYWNrIHBhdGggKEh6KQovLyAgIHBpbmdfcG9uZyBbMC4wLCAgMC0xXSAgICAgICAgIDA9bm9ybWFsIHN0ZXJlbywgMT1mdWxsIHBpbmctcG9uZyBMPC0+UgovLyAgIHNwcmVhZCAgICBbMC41LCAgMC0xXSAgICAgICAgIHN0ZXJlbyB3aWR0aCBvZiBkZWxheSB0YWlscwovLyAgIHN5bmMgICAgICBbMF0gICAgICAgICAgICAgICAgIG5lbnRyeTogMD1mcmVlLCAxPWhhbGYsIDI9cXVhcnRlciwgMz1laWdodGggKDEyMGJwbSkKLy8gICBtaXggICAgICAgWzAuMywgIDAtMV0gICAgICAgICBkcnkvd2V0IG1peAoKaW1wb3J0KCJzdGRmYXVzdC5saWIiKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBVSQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnRpbWUgICAgICA9IGhzbGlkZXIoInRpbWVbdW5pdDptc10iLCAgICAgIDI1MCwgMSwgICAyMDAwLCAgMC4xKTsKZmVlZGJhY2sgID0gaHNsaWRlcigiZmVlZGJhY2siLCAgICAgICAgICAgMC4zLCAwLCAgIDAuOTUsICAwLjAwMSk7CmxwX2N1dG9mZiA9IGhzbGlkZXIoImxwX2N1dG9mZlt1bml0Okh6XSIsIDgwMDAsIDUwMCwgMjAwMDAsIDEpOwpwaW5nX3BvbmcgPSBoc2xpZGVyKCJwaW5nX3BvbmciLCAgICAgICAgICAwLjAsIDAsICAgMSwgICAgIDAuMDAxKTsKc3ByZWFkICAgID0gaHNsaWRlcigic3ByZWFkIiwgICAgICAgICAgICAgMC41LCAwLCAgIDEsICAgICAwLjAwMSk7CnN5bmMgICAgICA9IG5lbnRyeSgic3luYyIsICAgICAgICAgICAgICAgIDAsICAgMCwgICAzLCAgICAgMSk7Cm1peCAgICAgICA9IGhzbGlkZXIoIm1peCIsICAgICAgICAgICAgICAgIDAuMywgMCwgICAxLCAgICAgMC4wMDEpOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIERlcml2ZWQgZGVsYXkgdGltZTogZnJlZSBvciB0ZW1wby1zeW5jZWQgYXQgMTIwYnBtCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKYnBtID0gMTIwLjA7CmJlYXRfbXMgPSA2MDAwMC4wIC8gYnBtOwoKc3luY190aW1lX21zID0KICAgIGJhLmlmKHN5bmMgPCAwLjUsIHRpbWUsCiAgICBiYS5pZihzeW5jIDwgMS41LCBiZWF0X21zICogMi4wLAogICAgYmEuaWYoc3luYyA8IDIuNSwgYmVhdF9tcywKICAgICAgICAgICAgICAgICAgICAgIGJlYXRfbXMgKiAwLjUpKSk7CgovLyBGaXhlZCBtYXggZGVsYXk6IDk2MDAwIHNhbXBsZXMgKDFzIGF0IDk2a0h6LCBjb3ZlcnMgYWxsIHRlbXBvcyBmb3IgZWlnaHRoIG5vdGVzIGF0IDMwYnBtKykKbWF4X2RlbGF5X3NhbXAgPSA5NjAwMDsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBTdGVyZW8gcGluZy1wb25nIGRlbGF5LgovLyBVc2VzIGYgfiAoXywgXykgcGF0dGVybiBmb3Igc3RlcmVvIGZlZWRiYWNrIGxvb3AuCi8vIGRlLmRlbGF5IHVzZWQgZm9yIHZhcmlhYmxlIGRlbGF5IChubyBMUCBvbiBmZWVkYmFjayBwYXRoIGluc2lkZSB0aGUgbG9vcCDigJQKLy8gTFAgaXMgYXBwbGllZCB0byB0aGUgd2hvbGUgd2V0IHNpZ25hbCBmb3IgZWZmaWNpZW5jeSkuCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZFNhbXAgPSBpbnQoc3luY190aW1lX21zICogZmxvYXQobWEuU1IpIC8gMTAwMC4wKTsKCmRlbGF5Q29yZShpbkwsIGluUiwgZmJMLCBmYlIpID0gd2V0TCwgd2V0Ugp3aXRoIHsKICAgIHBwICA9IHBpbmdfcG9uZzsKICAgIGZiICA9IGZlZWRiYWNrOwogICAgbWl4TCA9IGluTCArIChmYkwgKiAoMS4wIC0gcHApICsgZmJSICogcHApICogZmI7CiAgICBtaXhSID0gaW5SICsgKGZiUiAqICgxLjAgLSBwcCkgKyBmYkwgKiBwcCkgKiBmYjsKICAgIHdldEwgPSBkZS5kZWxheShtYXhfZGVsYXlfc2FtcCwgZFNhbXAsIG1peEwpOwogICAgd2V0UiA9IGRlLmRlbGF5KG1heF9kZWxheV9zYW1wLCBkU2FtcCwgbWl4Uik7Cn07CgpzdGVyZW9EZWxheSA9IChfLCBfKSA6IGRlbGF5Q29yZSB+IChfLCBfKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBQb3N0LWRlbGF5IExQIGZpbHRlciAodG9uZSBzaGFwaW5nIG9uIHRoZSBmZWVkYmFjayB0YWlsKQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmRlbGF5TFAoeCkgPSBmaS5sb3dwYXNzKDEsIGxwX2N1dG9mZiwgeCk7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gTWlkLXNpZGUgc3RlcmVvIHNwcmVhZAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCm1zU3ByZWFkKGluTCwgaW5SKSA9IG91dEwsIG91dFIKd2l0aCB7CiAgICB3ICAgID0gc3ByZWFkOwogICAgbWlkICA9IChpbkwgKyBpblIpICogMC41OwogICAgc2lkZSA9IChpbkwgLSBpblIpICogMC41OwogICAgb3V0TCA9IG1pZCArIHNpZGUgKiB3ICogMi4wOwogICAgb3V0UiA9IG1pZCAtIHNpZGUgKiB3ICogMi4wOwp9OwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIE1haW4gcHJvY2VzczogZHJ5L3dldCBtaXgKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBEZWxheSArIExQICsgc3ByZWFkIG9uIHR3byBzaWduYWxzCmRlbGF5QW5kUHJvY2VzcyhpbkwsIGluUikgPSB3aWRlTCwgd2lkZVIKd2l0aCB7CiAgICB3ZXRMMCA9IHN0ZXJlb0RlbGF5KGluTCwgaW5SKSA6IF8sITsKICAgIHdldFIwID0gc3RlcmVvRGVsYXkoaW5MLCBpblIpIDogISxfOwogICAgd2V0TDEgPSBkZWxheUxQKHdldEwwKTsKICAgIHdldFIxID0gZGVsYXlMUCh3ZXRSMCk7CiAgICB3aWRlTCA9IG1zU3ByZWFkKHdldEwxLCB3ZXRSMSkgOiBfLCE7CiAgICB3aWRlUiA9IG1zU3ByZWFkKHdldEwxLCB3ZXRSMSkgOiAhLF87Cn07Cgpwcm9jZXNzKGluTCwgaW5SKSA9IG91dEwsIG91dFIKd2l0aCB7CiAgICB3aWRlTCA9IGRlbGF5QW5kUHJvY2VzcyhpbkwsIGluUikgOiBfLCE7CiAgICB3aWRlUiA9IGRlbGF5QW5kUHJvY2VzcyhpbkwsIGluUikgOiAhLF87CiAgICBvdXRMID0gaW5MICogKDEuMCAtIG1peCkgKyB3aWRlTCAqIG1peDsKICAgIG91dFIgPSBpblIgKiAoMS4wIC0gbWl4KSArIHdpZGVSICogbWl4Owp9Owo=","inputs": 2,"outputs": 2,"meta": [ { "basics.lib/name": "Faust Basic Element Library" },{ "basics.lib/version": "1.21.0" },{ "compile_options": "-lang wasm -ct 1 -cn eoc_delay -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" },{ "delays.lib/name": "Faust Delay Library" },{ "delays.lib/version": "1.1.0" },{ "filename": "eoc-delay.dsp" },{ "filters.lib/lowpass0_highpass1": "MIT-style STK-4.3 license" },{ "filters.lib/lowpass0_highpass1:author": "Julius O. Smith III" },{ "filters.lib/lowpass:author": "Julius O. Smith III" },{ "filters.lib/lowpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass:license": "MIT-style STK-4.3 license" },{ "filters.lib/name": "Faust Filters Library" },{ "filters.lib/tf1:author": "Julius O. Smith III" },{ "filters.lib/tf1:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf1s:author": "Julius O. Smith III" },{ "filters.lib/tf1s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1s:license": "MIT-style STK-4.3 license" },{ "filters.lib/version": "1.7.1" },{ "maths.lib/author": "GRAME" },{ "maths.lib/copyright": "GRAME" },{ "maths.lib/license": "LGPL with exception" },{ "maths.lib/name": "Faust Math Library" },{ "maths.lib/version": "2.8.1" },{ "name": "eoc-delay" },{ "platform.lib/name": "Generic Platform Library" },{ "platform.lib/version": "1.3.0" }],"ui": [ {"type": "vgroup","label": "eoc-delay","items": [ {"type": "hslider","label": "feedback","varname": "fHslider1","shortname": "feedback","address": "/eoc-delay/feedback","index": 4,"init": 0.3,"min": 0,"max": 0.95,"step": 0.001},{"type": "hslider","label": "lp_cutoff","varname": "fHslider3","shortname": "lp_cutoff","address": "/eoc-delay/lp_cutoff","index": 1048624,"meta": [{ "unit": "Hz" }],"init": 8000,"min": 500,"max": 20000,"step": 1},{"type": "hslider","label": "mix","varname": "fHslider5","shortname": "mix","address": "/eoc-delay/mix","index": 1048652,"init": 0.3,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "ping_pong","varname": "fHslider0","shortname": "ping_pong","address": "/eoc-delay/ping_pong","index": 0,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "spread","varname": "fHslider4","shortname": "spread","address": "/eoc-delay/spread","index": 1048648,"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "nentry","label": "sync","varname": "fEntry0","shortname": "sync","address": "/eoc-delay/sync","index": 524300,"init": 0,"min": 0,"max": 3,"step": 1},{"type": "hslider","label": "time","varname": "fHslider2","shortname": "time","address": "/eoc-delay/time","index": 524304,"meta": [{ "unit": "ms" }],"init": 250,"min": 1,"max": 2000,"step": 0.1}]}]} \ No newline at end of file diff --git a/playground/faust/eoc-delay.wasm b/playground/faust/eoc-delay.wasm index edb2113..bfcc5f2 100644 Binary files a/playground/faust/eoc-delay.wasm and b/playground/faust/eoc-delay.wasm differ diff --git a/playground/faust/eoc-eq.json b/playground/faust/eoc-eq.json index 55bef69..5ab4f90 100644 --- a/playground/faust/eoc-eq.json +++ b/playground/faust/eoc-eq.json @@ -1 +1 @@ -{"name": "eoc-eq","filename": "eoc-eq.dsp","version": "2.83.1","compile_options": "-lang wasm -fpga-mem-th 4 -ct 1 -cn eoc_eq -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0","library_list": ["/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/stdfaust.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/filters.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/analyzers.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/basics.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/maths.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/platform.lib"],"include_pathnames": ["/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/.claude/worktrees/agent-a42cfe12/playground/faust"],"size": 296,"code": "Ly8gZW9jLWVxLmRzcCDigJQgNC1iYW5kIHBhcmFtZXRyaWMgRVEgZm9yIE1FTUxOYXV0IEVPQyBjaGFpbgovLwovLyBCYW5kIDE6IExvdyBTaGVsZiAgKGRlZmF1bHQgODAgSHosIHJhbmdlIDIw4oCTNTAwKQovLyBCYW5kIDI6IExvdy1NaWQgYmVsbCAoZGVmYXVsdCA0MDAgSHosIHJhbmdlIDEwMOKAkzIwMDApCi8vIEJhbmQgMzogSGlnaC1NaWQgYmVsbCAoZGVmYXVsdCAyNTAwIEh6LCByYW5nZSA1MDDigJM4MDAwKQovLyBCYW5kIDQ6IEhpZ2ggU2hlbGYgKGRlZmF1bHQgODAwMCBIeiwgcmFuZ2UgMjAwMOKAkzIwMDAwKQovLwovLyBDb21waWxlOgovLyAgIGZhdXN0IC1sYW5nIHdhc20gLWNuIGVvY19lcSAtZSBlb2MtZXEuZHNwIC1vIGVvYy1lcS53YXNtIC1qc29uCgppbXBvcnQoInN0ZGZhdXN0LmxpYiIpOwoKLy8gQmFuZCAxIOKAlCBMb3cgU2hlbGYKZnJlcTEgID0gaHNsaWRlcigiQmFuZCAxIChMb3cgU2hlbGYpL2ZyZXExW3VuaXQ6SHpdIiwgIDgwLCAgICAyMCwgICAgNTAwLCAgIDAuMSk7CmdhaW4xICA9IGhzbGlkZXIoIkJhbmQgMSAoTG93IFNoZWxmKS9nYWluMVt1bml0OmRCXSIsICAgMCwgICAtMTIsICAgIDEyLCAgICAwLjEpOwpxMSAgICAgPSBoc2xpZGVyKCJCYW5kIDEgKExvdyBTaGVsZikvcTEiLCAgICAgICAgICAgICAgIDEuMCwgICAwLjEsICAxMC4wLCAgMC4wMSk7CgovLyBCYW5kIDIg4oCUIExvdy1NaWQgYmVsbApmcmVxMiAgPSBoc2xpZGVyKCJCYW5kIDIgKExvdy1NaWQpL2ZyZXEyW3VuaXQ6SHpdIiwgICA0MDAsICAgMTAwLCAgMjAwMCwgICAxLjApOwpnYWluMiAgPSBoc2xpZGVyKCJCYW5kIDIgKExvdy1NaWQpL2dhaW4yW3VuaXQ6ZEJdIiwgICAgIDAsICAgLTEyLCAgICAxMiwgICAgMC4xKTsKcTIgICAgID0gaHNsaWRlcigiQmFuZCAyIChMb3ctTWlkKS9xMiIsICAgICAgICAgICAgICAgICAxLjAsICAgMC4xLCAgMTAuMCwgIDAuMDEpOwoKLy8gQmFuZCAzIOKAlCBIaWdoLU1pZCBiZWxsCmZyZXEzICA9IGhzbGlkZXIoIkJhbmQgMyAoSGlnaC1NaWQpL2ZyZXEzW3VuaXQ6SHpdIiwgMjUwMCwgICA1MDAsICA4MDAwLCAgIDEuMCk7CmdhaW4zICA9IGhzbGlkZXIoIkJhbmQgMyAoSGlnaC1NaWQpL2dhaW4zW3VuaXQ6ZEJdIiwgICAgMCwgICAtMTIsICAgIDEyLCAgICAwLjEpOwpxMyAgICAgPSBoc2xpZGVyKCJCYW5kIDMgKEhpZ2gtTWlkKS9xMyIsICAgICAgICAgICAgICAgIDEuMCwgICAwLjEsICAxMC4wLCAgMC4wMSk7CgovLyBCYW5kIDQg4oCUIEhpZ2ggU2hlbGYKZnJlcTQgID0gaHNsaWRlcigiQmFuZCA0IChIaWdoIFNoZWxmKS9mcmVxNFt1bml0Okh6XSIsIDgwMDAsIDIwMDAsIDIwMDAwLCAgMTAuMCk7CmdhaW40ICA9IGhzbGlkZXIoIkJhbmQgNCAoSGlnaCBTaGVsZikvZ2FpbjRbdW5pdDpkQl0iLCAgICAwLCAgLTEyLCAgICAxMiwgICAgMC4xKTsKcTQgICAgID0gaHNsaWRlcigiQmFuZCA0IChIaWdoIFNoZWxmKS9xNCIsICAgICAgICAgICAgICAgMS4wLCAgIDAuMSwgIDEwLjAsICAwLjAxKTsKCmVxQ2hhaW4gPSBmaS5sb3dfc2hlbGYoZ2FpbjEsIGZyZXExKSA6CiAgICAgICAgICAgZmkucGVha19lcShnYWluMiwgZnJlcTIsIHEyKSA6CiAgICAgICAgICAgZmkucGVha19lcShnYWluMywgZnJlcTMsIHEzKSA6CiAgICAgICAgICAgZmkuaGlnaF9zaGVsZihnYWluNCwgZnJlcTQpOwoKcHJvY2VzcyA9IGVxQ2hhaW4sIGVxQ2hhaW47Cg==","inputs": 2,"outputs": 2,"meta": [ { "analyzers.lib/name": "Faust Analyzer Library" },{ "analyzers.lib/version": "1.3.0" },{ "basics.lib/name": "Faust Basic Element Library" },{ "basics.lib/version": "1.22.0" },{ "compile_options": "-lang wasm -fpga-mem-th 4 -ct 1 -cn eoc_eq -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" },{ "filename": "eoc-eq.dsp" },{ "filters.lib/filterbank:author": "Julius O. Smith III" },{ "filters.lib/filterbank:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/filterbank:license": "MIT-style STK-4.3 license" },{ "filters.lib/fir:author": "Julius O. Smith III" },{ "filters.lib/fir:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/fir:license": "MIT-style STK-4.3 license" },{ "filters.lib/highpass:author": "Julius O. Smith III" },{ "filters.lib/highpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/highshelf:author": "Julius O. Smith III" },{ "filters.lib/highshelf:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/highshelf:license": "MIT-style STK-4.3 license" },{ "filters.lib/iir:author": "Julius O. Smith III" },{ "filters.lib/iir:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/iir:license": "MIT-style STK-4.3 license" },{ "filters.lib/low_shelf:author": "Julius O. Smith III" },{ "filters.lib/low_shelf:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/low_shelf:license": "MIT-style STK-4.3 license" },{ "filters.lib/lowpass0_highpass1": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass0_highpass1:author": "Julius O. Smith III" },{ "filters.lib/lowpass:author": "Julius O. Smith III" },{ "filters.lib/lowpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass:license": "MIT-style STK-4.3 license" },{ "filters.lib/lowshelf:author": "Julius O. Smith III" },{ "filters.lib/lowshelf:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowshelf:license": "MIT-style STK-4.3 license" },{ "filters.lib/name": "Faust Filters Library" },{ "filters.lib/peak_eq:author": "Julius O. Smith III" },{ "filters.lib/peak_eq:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/peak_eq:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf1:author": "Julius O. Smith III" },{ "filters.lib/tf1:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf1s:author": "Julius O. Smith III" },{ "filters.lib/tf1s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1s:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf2:author": "Julius O. Smith III" },{ "filters.lib/tf2:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf2:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf2s:author": "Julius O. Smith III" },{ "filters.lib/tf2s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf2s:license": "MIT-style STK-4.3 license" },{ "filters.lib/version": "1.7.1" },{ "maths.lib/author": "GRAME" },{ "maths.lib/copyright": "GRAME" },{ "maths.lib/license": "LGPL with exception" },{ "maths.lib/name": "Faust Math Library" },{ "maths.lib/version": "2.9.0" },{ "name": "eoc-eq" },{ "platform.lib/name": "Generic Platform Library" },{ "platform.lib/version": "1.3.0" }],"ui": [ {"type": "vgroup","label": "eoc-eq","items": [ {"type": "hslider","label": "Band 1 (Low Shelf)/freq1","varname": "fHslider7","shortname": "Band_1_Low_Shelf_freq1","address": "/eoc-eq/Band_1__Low_Shelf__freq1","index": 44,"meta": [{ "unit": "Hz" }],"init": 80,"min": 20,"max": 500,"step": 0.1},{"type": "hslider","label": "Band 1 (Low Shelf)/gain1","varname": "fHslider8","shortname": "Band_1_Low_Shelf_gain1","address": "/eoc-eq/Band_1__Low_Shelf__gain1","index": 76,"meta": [{ "unit": "dB" }],"init": 0,"min": -12,"max": 12,"step": 0.1},{"type": "hslider","label": "Band 2 (Low-Mid)/freq2","varname": "fHslider5","shortname": "Band_2_Low_Mid_freq2","address": "/eoc-eq/Band_2__Low-Mid__freq2","index": 36,"meta": [{ "unit": "Hz" }],"init": 400,"min": 100,"max": 2000,"step": 1},{"type": "hslider","label": "Band 2 (Low-Mid)/gain2","varname": "fHslider4","shortname": "Band_2_Low_Mid_gain2","address": "/eoc-eq/Band_2__Low-Mid__gain2","index": 32,"meta": [{ "unit": "dB" }],"init": 0,"min": -12,"max": 12,"step": 0.1},{"type": "hslider","label": "Band 2 (Low-Mid)/q2","varname": "fHslider6","shortname": "Band_2_Low_Mid_q2","address": "/eoc-eq/Band_2__Low-Mid__q2","index": 40,"init": 1,"min": 0.1,"max": 10,"step": 0.01},{"type": "hslider","label": "Band 3 (High-Mid)/freq3","varname": "fHslider2","shortname": "Band_3_High_Mid_freq3","address": "/eoc-eq/Band_3__High-Mid__freq3","index": 20,"meta": [{ "unit": "Hz" }],"init": 2500,"min": 500,"max": 8000,"step": 1},{"type": "hslider","label": "Band 3 (High-Mid)/gain3","varname": "fHslider1","shortname": "Band_3_High_Mid_gain3","address": "/eoc-eq/Band_3__High-Mid__gain3","index": 16,"meta": [{ "unit": "dB" }],"init": 0,"min": -12,"max": 12,"step": 0.1},{"type": "hslider","label": "Band 3 (High-Mid)/q3","varname": "fHslider3","shortname": "Band_3_High_Mid_q3","address": "/eoc-eq/Band_3__High-Mid__q3","index": 28,"init": 1,"min": 0.1,"max": 10,"step": 0.01},{"type": "hslider","label": "Band 4 (High Shelf)/freq4","varname": "fHslider0","shortname": "Band_4_High_Shelf_freq4","address": "/eoc-eq/Band_4__High_Shelf__freq4","index": 0,"meta": [{ "unit": "Hz" }],"init": 8000,"min": 2000,"max": 20000,"step": 10},{"type": "hslider","label": "Band 4 (High Shelf)/gain4","varname": "fHslider9","shortname": "Band_4_High_Shelf_gain4","address": "/eoc-eq/Band_4__High_Shelf__gain4","index": 152,"meta": [{ "unit": "dB" }],"init": 0,"min": -12,"max": 12,"step": 0.1}]}]} \ No newline at end of file +{"name": "eoc-eq","filename": "eoc-eq.dsp","version": "2.79.3","compile_options": "-lang wasm -ct 1 -cn eoc_eq -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0","library_list": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/stdfaust.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/filters.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/analyzers.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/basics.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/maths.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/platform.lib"],"include_pathnames": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust"],"size": 296,"code": "Ly8gZW9jLWVxLmRzcCDigJQgNC1iYW5kIHBhcmFtZXRyaWMgRVEgZm9yIE1FTUxOYXV0IEVPQyBjaGFpbgovLwovLyBCYW5kIDE6IExvdyBTaGVsZiAgKGRlZmF1bHQgODAgSHosIHJhbmdlIDIw4oCTNTAwKQovLyBCYW5kIDI6IExvdy1NaWQgYmVsbCAoZGVmYXVsdCA0MDAgSHosIHJhbmdlIDEwMOKAkzIwMDApCi8vIEJhbmQgMzogSGlnaC1NaWQgYmVsbCAoZGVmYXVsdCAyNTAwIEh6LCByYW5nZSA1MDDigJM4MDAwKQovLyBCYW5kIDQ6IEhpZ2ggU2hlbGYgKGRlZmF1bHQgODAwMCBIeiwgcmFuZ2UgMjAwMOKAkzIwMDAwKQovLwovLyBDb21waWxlOgovLyAgIGZhdXN0IC1sYW5nIHdhc20gLWNuIGVvY19lcSAtZSBlb2MtZXEuZHNwIC1vIGVvYy1lcS53YXNtIC1qc29uCgppbXBvcnQoInN0ZGZhdXN0LmxpYiIpOwoKLy8gQmFuZCAxIOKAlCBMb3cgU2hlbGYKZnJlcTEgID0gaHNsaWRlcigiQmFuZCAxIChMb3cgU2hlbGYpL2ZyZXExW3VuaXQ6SHpdIiwgIDgwLCAgICAyMCwgICAgNTAwLCAgIDAuMSk7CmdhaW4xICA9IGhzbGlkZXIoIkJhbmQgMSAoTG93IFNoZWxmKS9nYWluMVt1bml0OmRCXSIsICAgMCwgICAtMTIsICAgIDEyLCAgICAwLjEpOwpxMSAgICAgPSBoc2xpZGVyKCJCYW5kIDEgKExvdyBTaGVsZikvcTEiLCAgICAgICAgICAgICAgIDEuMCwgICAwLjEsICAxMC4wLCAgMC4wMSk7CgovLyBCYW5kIDIg4oCUIExvdy1NaWQgYmVsbApmcmVxMiAgPSBoc2xpZGVyKCJCYW5kIDIgKExvdy1NaWQpL2ZyZXEyW3VuaXQ6SHpdIiwgICA0MDAsICAgMTAwLCAgMjAwMCwgICAxLjApOwpnYWluMiAgPSBoc2xpZGVyKCJCYW5kIDIgKExvdy1NaWQpL2dhaW4yW3VuaXQ6ZEJdIiwgICAgIDAsICAgLTEyLCAgICAxMiwgICAgMC4xKTsKcTIgICAgID0gaHNsaWRlcigiQmFuZCAyIChMb3ctTWlkKS9xMiIsICAgICAgICAgICAgICAgICAxLjAsICAgMC4xLCAgMTAuMCwgIDAuMDEpOwoKLy8gQmFuZCAzIOKAlCBIaWdoLU1pZCBiZWxsCmZyZXEzICA9IGhzbGlkZXIoIkJhbmQgMyAoSGlnaC1NaWQpL2ZyZXEzW3VuaXQ6SHpdIiwgMjUwMCwgICA1MDAsICA4MDAwLCAgIDEuMCk7CmdhaW4zICA9IGhzbGlkZXIoIkJhbmQgMyAoSGlnaC1NaWQpL2dhaW4zW3VuaXQ6ZEJdIiwgICAgMCwgICAtMTIsICAgIDEyLCAgICAwLjEpOwpxMyAgICAgPSBoc2xpZGVyKCJCYW5kIDMgKEhpZ2gtTWlkKS9xMyIsICAgICAgICAgICAgICAgIDEuMCwgICAwLjEsICAxMC4wLCAgMC4wMSk7CgovLyBCYW5kIDQg4oCUIEhpZ2ggU2hlbGYKZnJlcTQgID0gaHNsaWRlcigiQmFuZCA0IChIaWdoIFNoZWxmKS9mcmVxNFt1bml0Okh6XSIsIDgwMDAsIDIwMDAsIDIwMDAwLCAgMTAuMCk7CmdhaW40ICA9IGhzbGlkZXIoIkJhbmQgNCAoSGlnaCBTaGVsZikvZ2FpbjRbdW5pdDpkQl0iLCAgICAwLCAgLTEyLCAgICAxMiwgICAgMC4xKTsKcTQgICAgID0gaHNsaWRlcigiQmFuZCA0IChIaWdoIFNoZWxmKS9xNCIsICAgICAgICAgICAgICAgMS4wLCAgIDAuMSwgIDEwLjAsICAwLjAxKTsKCmVxQ2hhaW4gPSBmaS5sb3dfc2hlbGYoZ2FpbjEsIGZyZXExKSA6CiAgICAgICAgICAgZmkucGVha19lcShnYWluMiwgZnJlcTIsIHEyKSA6CiAgICAgICAgICAgZmkucGVha19lcShnYWluMywgZnJlcTMsIHEzKSA6CiAgICAgICAgICAgZmkuaGlnaF9zaGVsZihnYWluNCwgZnJlcTQpOwoKcHJvY2VzcyA9IGVxQ2hhaW4sIGVxQ2hhaW47Cg==","inputs": 2,"outputs": 2,"meta": [ { "analyzers.lib/name": "Faust Analyzer Library" },{ "analyzers.lib/version": "1.2.0" },{ "basics.lib/name": "Faust Basic Element Library" },{ "basics.lib/version": "1.21.0" },{ "compile_options": "-lang wasm -ct 1 -cn eoc_eq -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" },{ "filename": "eoc-eq.dsp" },{ "filters.lib/filterbank:author": "Julius O. Smith III" },{ "filters.lib/filterbank:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/filterbank:license": "MIT-style STK-4.3 license" },{ "filters.lib/fir:author": "Julius O. Smith III" },{ "filters.lib/fir:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/fir:license": "MIT-style STK-4.3 license" },{ "filters.lib/highpass:author": "Julius O. Smith III" },{ "filters.lib/highpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/highshelf:author": "Julius O. Smith III" },{ "filters.lib/highshelf:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/highshelf:license": "MIT-style STK-4.3 license" },{ "filters.lib/iir:author": "Julius O. Smith III" },{ "filters.lib/iir:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/iir:license": "MIT-style STK-4.3 license" },{ "filters.lib/low_shelf:author": "Julius O. Smith III" },{ "filters.lib/low_shelf:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/low_shelf:license": "MIT-style STK-4.3 license" },{ "filters.lib/lowpass0_highpass1": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass0_highpass1:author": "Julius O. Smith III" },{ "filters.lib/lowpass:author": "Julius O. Smith III" },{ "filters.lib/lowpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass:license": "MIT-style STK-4.3 license" },{ "filters.lib/lowshelf:author": "Julius O. Smith III" },{ "filters.lib/lowshelf:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowshelf:license": "MIT-style STK-4.3 license" },{ "filters.lib/name": "Faust Filters Library" },{ "filters.lib/peak_eq:author": "Julius O. Smith III" },{ "filters.lib/peak_eq:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/peak_eq:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf1:author": "Julius O. Smith III" },{ "filters.lib/tf1:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf1s:author": "Julius O. Smith III" },{ "filters.lib/tf1s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1s:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf2:author": "Julius O. Smith III" },{ "filters.lib/tf2:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf2:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf2s:author": "Julius O. Smith III" },{ "filters.lib/tf2s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf2s:license": "MIT-style STK-4.3 license" },{ "filters.lib/version": "1.7.1" },{ "maths.lib/author": "GRAME" },{ "maths.lib/copyright": "GRAME" },{ "maths.lib/license": "LGPL with exception" },{ "maths.lib/name": "Faust Math Library" },{ "maths.lib/version": "2.8.1" },{ "name": "eoc-eq" },{ "platform.lib/name": "Generic Platform Library" },{ "platform.lib/version": "1.3.0" }],"ui": [ {"type": "vgroup","label": "eoc-eq","items": [ {"type": "hslider","label": "Band 1 (Low Shelf)/freq1","varname": "fHslider7","shortname": "Band_1_Low_Shelf_freq1","address": "/eoc-eq/Band_1__Low_Shelf__freq1","index": 44,"meta": [{ "unit": "Hz" }],"init": 80,"min": 20,"max": 500,"step": 0.1},{"type": "hslider","label": "Band 1 (Low Shelf)/gain1","varname": "fHslider8","shortname": "Band_1_Low_Shelf_gain1","address": "/eoc-eq/Band_1__Low_Shelf__gain1","index": 76,"meta": [{ "unit": "dB" }],"init": 0,"min": -12,"max": 12,"step": 0.1},{"type": "hslider","label": "Band 2 (Low-Mid)/freq2","varname": "fHslider5","shortname": "Band_2_Low_Mid_freq2","address": "/eoc-eq/Band_2__Low-Mid__freq2","index": 36,"meta": [{ "unit": "Hz" }],"init": 400,"min": 100,"max": 2000,"step": 1},{"type": "hslider","label": "Band 2 (Low-Mid)/gain2","varname": "fHslider4","shortname": "Band_2_Low_Mid_gain2","address": "/eoc-eq/Band_2__Low-Mid__gain2","index": 32,"meta": [{ "unit": "dB" }],"init": 0,"min": -12,"max": 12,"step": 0.1},{"type": "hslider","label": "Band 2 (Low-Mid)/q2","varname": "fHslider6","shortname": "Band_2_Low_Mid_q2","address": "/eoc-eq/Band_2__Low-Mid__q2","index": 40,"init": 1,"min": 0.1,"max": 10,"step": 0.01},{"type": "hslider","label": "Band 3 (High-Mid)/freq3","varname": "fHslider2","shortname": "Band_3_High_Mid_freq3","address": "/eoc-eq/Band_3__High-Mid__freq3","index": 20,"meta": [{ "unit": "Hz" }],"init": 2500,"min": 500,"max": 8000,"step": 1},{"type": "hslider","label": "Band 3 (High-Mid)/gain3","varname": "fHslider1","shortname": "Band_3_High_Mid_gain3","address": "/eoc-eq/Band_3__High-Mid__gain3","index": 16,"meta": [{ "unit": "dB" }],"init": 0,"min": -12,"max": 12,"step": 0.1},{"type": "hslider","label": "Band 3 (High-Mid)/q3","varname": "fHslider3","shortname": "Band_3_High_Mid_q3","address": "/eoc-eq/Band_3__High-Mid__q3","index": 28,"init": 1,"min": 0.1,"max": 10,"step": 0.01},{"type": "hslider","label": "Band 4 (High Shelf)/freq4","varname": "fHslider0","shortname": "Band_4_High_Shelf_freq4","address": "/eoc-eq/Band_4__High_Shelf__freq4","index": 0,"meta": [{ "unit": "Hz" }],"init": 8000,"min": 2000,"max": 20000,"step": 10},{"type": "hslider","label": "Band 4 (High Shelf)/gain4","varname": "fHslider9","shortname": "Band_4_High_Shelf_gain4","address": "/eoc-eq/Band_4__High_Shelf__gain4","index": 152,"meta": [{ "unit": "dB" }],"init": 0,"min": -12,"max": 12,"step": 0.1}]}]} \ No newline at end of file diff --git a/playground/faust/eoc-eq.wasm b/playground/faust/eoc-eq.wasm index 8deaf08..9640bf6 100644 Binary files a/playground/faust/eoc-eq.wasm and b/playground/faust/eoc-eq.wasm differ diff --git a/playground/faust/eoc-master.json b/playground/faust/eoc-master.json index 0e31d68..10b9dad 100644 --- a/playground/faust/eoc-master.json +++ b/playground/faust/eoc-master.json @@ -1,92 +1 @@ -{ - "name": "eoc-master", - "filename": "eoc-master.dsp", - "version": "2.83.1", - "compile_options": "-lang cpp -fpga-mem-th 4 -ct 1 -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0", - "library_list": ["/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/stdfaust.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/filters.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/maths.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/platform.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/basics.lib"], - "include_pathnames": ["/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/.claude/worktrees/agent-a8d5e213/playground/faust"], - "size": 88, - "inputs": 2, - "outputs": 2, - "meta": [ - { "basics.lib/name": "Faust Basic Element Library" }, - { "basics.lib/version": "1.22.0" }, - { "compile_options": "-lang cpp -fpga-mem-th 4 -ct 1 -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" }, - { "filename": "eoc-master.dsp" }, - { "filters.lib/highpass:author": "Julius O. Smith III" }, - { "filters.lib/highpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " }, - { "filters.lib/lowpass0_highpass1": "Copyright (C) 2003-2019 by Julius O. Smith III " }, - { "filters.lib/lowpass0_highpass1:author": "Julius O. Smith III" }, - { "filters.lib/name": "Faust Filters Library" }, - { "filters.lib/tf1:author": "Julius O. Smith III" }, - { "filters.lib/tf1:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " }, - { "filters.lib/tf1:license": "MIT-style STK-4.3 license" }, - { "filters.lib/tf1s:author": "Julius O. Smith III" }, - { "filters.lib/tf1s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " }, - { "filters.lib/tf1s:license": "MIT-style STK-4.3 license" }, - { "filters.lib/version": "1.7.1" }, - { "maths.lib/author": "GRAME" }, - { "maths.lib/copyright": "GRAME" }, - { "maths.lib/license": "LGPL with exception" }, - { "maths.lib/name": "Faust Math Library" }, - { "maths.lib/version": "2.9.0" }, - { "name": "eoc-master" }, - { "platform.lib/name": "Generic Platform Library" }, - { "platform.lib/version": "1.3.0" } - ], - "ui": [ - { - "type": "vgroup", - "label": "eoc-master", - "items": [ - { - "type": "nentry", - "label": "dc_block", - "varname": "fEntry0", - "shortname": "dc_block", - "address": "/eoc-master/dc_block", - "init": 1, - "min": 0, - "max": 1, - "step": 1 - }, - { - "type": "hslider", - "label": "gain", - "varname": "fHslider2", - "shortname": "gain", - "address": "/eoc-master/gain", - "init": 1, - "min": 0, - "max": 2, - "step": 0.001 - }, - { - "type": "hslider", - "label": "limiter_thresh", - "varname": "fHslider0", - "shortname": "limiter_thresh", - "address": "/eoc-master/limiter_thresh", - "meta": [ - { "unit": "dB" } - ], - "init": -1, - "min": -12, - "max": 0, - "step": 0.1 - }, - { - "type": "hslider", - "label": "width", - "varname": "fHslider1", - "shortname": "width", - "address": "/eoc-master/width", - "init": 1, - "min": 0, - "max": 2, - "step": 0.001 - } - ] - } - ] -} \ No newline at end of file +{"name": "eoc-master","filename": "eoc-master.dsp","version": "2.79.3","compile_options": "-lang wasm -ct 1 -cn eoc_master -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0","library_list": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/stdfaust.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/filters.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/maths.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/platform.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/basics.lib"],"include_pathnames": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust"],"size": 88,"code": "Ly8gZW9jLW1hc3Rlci5kc3Ag4oCUIE1hc3RlciBidXMgZWZmZWN0IGZvciB0aGUgRU9DIHJhY2suCi8vCi8vIFBhcmFtZXRlcnMgKDQpOgovLyAgIGdhaW4gICAgICAgICAgICBbMS4wLCAgMC0yXSAgICAgICAgb3V0cHV0IGdhaW4gbXVsdGlwbGllcgovLyAgIHdpZHRoICAgICAgICAgICBbMS4wLCAgMC0yXSAgICAgICAgc3RlcmVvIHdpZHRoOiAwPW1vbm8sIDE9bm9ybWFsLCAyPWV4dHJhLXdpZGUKLy8gICBsaW1pdGVyX3RocmVzaCAgWy0xLjAsIC0xMiB0byAwXSAgIGJyaWNrLXdhbGwgbGltaXRlciB0aHJlc2hvbGQgKGRCKQovLyAgIGRjX2Jsb2NrICAgICAgICBbMV0gICAgICAgICAgICAgICAgbmVudHJ5OiAwPW9mZiwgMT1vbiDigJQgREMgYmxvY2tpbmcgZmlsdGVyCgppbXBvcnQoInN0ZGZhdXN0LmxpYiIpOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIFVJCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZ2FpbiAgICAgICAgICAgPSBoc2xpZGVyKCJnYWluIiwgICAgICAgICAgICAgICAgICAxLjAsICAwLCAgICAyLCAgIDAuMDAxKTsKd2lkdGggICAgICAgICAgPSBoc2xpZGVyKCJ3aWR0aCIsICAgICAgICAgICAgICAgICAxLjAsICAwLCAgICAyLCAgIDAuMDAxKTsKbGltaXRlcl90aHJlc2ggPSBoc2xpZGVyKCJsaW1pdGVyX3RocmVzaFt1bml0OmRCXSIsIC0xLjAsIC0xMiwgMCwgMC4xKTsKZGNfYmxvY2tfb24gICAgPSBuZW50cnkoImRjX2Jsb2NrIiwgICAgICAgICAgICAgICAxLCAgICAwLCAgICAxLCAgIDEpOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIERDIGJsb2NraW5nIGZpbHRlciAofjEwSHogb25lLXBvbGUgSFApCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZGNCbG9jayhvbiwgeCkgPSBvbiAqIGZpLmhpZ2hwYXNzKDEsIDEwLjAsIHgpICsgKDEuMCAtIG9uKSAqIHg7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gU3RlcmVvIHdpZHRoIHZpYSBtaWQtc2lkZSBwcm9jZXNzaW5nCi8vICAgd2lkdGggPSAwOiBtb25vIChzaWRlIHJlbW92ZWQpCi8vICAgd2lkdGggPSAxOiBvcmlnaW5hbCBzdGVyZW8KLy8gICB3aWR0aCA9IDI6IGVuaGFuY2VkIHN0ZXJlbyAoZG91YmxlZCBzaWRlcykKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdGVyZW9XaWR0aChpbkwsIGluUikgPSBvdXRMLCBvdXRSCndpdGggewogICAgdyAgICA9IHdpZHRoOwogICAgbWlkICA9IChpbkwgKyBpblIpICogMC41OwogICAgc2lkZSA9IChpbkwgLSBpblIpICogMC41OwogICAgb3V0TCA9IG1pZCArIHNpZGUgKiB3OwogICAgb3V0UiA9IG1pZCAtIHNpZGUgKiB3Owp9OwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEJyaWNrLXdhbGwgbGltaXRlcjogcGVhay1mb2xsb3dpbmcgZ2FpbiByZWR1Y3Rpb24uCi8vIFVzZXMgYSBsZWFreSBlbnZlbG9wZSBmb2xsb3dlciB3aXRoIGZhc3QgYXR0YWNrICh+MC41bXMpIGFuZCBzbG93IHJlbGVhc2UgKH4xMDBtcykuCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKdGhyZXNoTGluID0gYmEuZGIybGluZWFyKGxpbWl0ZXJfdGhyZXNoKTsKCi8vIExlYWt5LXBlYWsgZW52ZWxvcGUgZm9sbG93ZXI6IGV4cG9uZW50aWFsIHJlbGVhc2UgfjEwMG1zCi8vIFRha2VzIGEgc2lnbmFsLCBvdXRwdXRzIGl0cyBwZWFrIGVudmVsb3BlCnJlbGVhc2VDb2VmZiA9IGV4cCgtMS4wIC8gKGZsb2F0KG1hLlNSKSAqIDAuMTAwKSk7CgpwZWFrRW52ID0gYWJzIDogKCsgfiAqKHJlbGVhc2VDb2VmZikpOwoKLy8gR2FpbiByZWR1Y3Rpb246IGNsYW1wIHRvIHRocmVzaG9sZApsaW1pdGVyR1IoZW52KSA9IHRocmVzaExpbiAvIG1heCh0aHJlc2hMaW4sIGVudik7CgovLyBTdGVyZW8gbGltaXRlcjogbGlua2VkIEwvUiBnYWluIHJlZHVjdGlvbiBmcm9tIG1heCBvZiBib3RoIHBlYWtzCmxpbWl0ZXIoaW5MLCBpblIpID0gaW5MICogZ3IsIGluUiAqIGdyCndpdGggewogICAgZW52TCA9IHBlYWtFbnYoaW5MKTsKICAgIGVudlIgPSBwZWFrRW52KGluUik7CiAgICBwZWFrU3RlcmVvID0gbWF4KGVudkwsIGVudlIpOwogICAgZ3IgPSBsaW1pdGVyR1IocGVha1N0ZXJlbyk7Cn07CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gTWFpbiBwcm9jZXNzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKcHJvY2VzcyhpbkwsIGluUikgPSBvdXRMLCBvdXRSCndpdGggewogICAgLy8gMS4gREMgYmxvY2sKICAgIGRjTCA9IGRjQmxvY2soZGNfYmxvY2tfb24sIGluTCk7CiAgICBkY1IgPSBkY0Jsb2NrKGRjX2Jsb2NrX29uLCBpblIpOwogICAgLy8gMi4gR2FpbgogICAgZ0wgPSBkY0wgKiBnYWluOwogICAgZ1IgPSBkY1IgKiBnYWluOwogICAgLy8gMy4gU3RlcmVvIHdpZHRoCiAgICB3TCA9IHN0ZXJlb1dpZHRoKGdMLCBnUikgOiBfLCE7CiAgICB3UiA9IHN0ZXJlb1dpZHRoKGdMLCBnUikgOiAhLF87CiAgICAvLyA0LiBMaW1pdGVyCiAgICBvdXRMID0gbGltaXRlcih3TCwgd1IpIDogXywhOwogICAgb3V0UiA9IGxpbWl0ZXIod0wsIHdSKSA6ICEsXzsKfTsK","inputs": 2,"outputs": 2,"meta": [ { "basics.lib/name": "Faust Basic Element Library" },{ "basics.lib/version": "1.21.0" },{ "compile_options": "-lang wasm -ct 1 -cn eoc_master -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" },{ "filename": "eoc-master.dsp" },{ "filters.lib/highpass:author": "Julius O. Smith III" },{ "filters.lib/highpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass0_highpass1": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass0_highpass1:author": "Julius O. Smith III" },{ "filters.lib/name": "Faust Filters Library" },{ "filters.lib/tf1:author": "Julius O. Smith III" },{ "filters.lib/tf1:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf1s:author": "Julius O. Smith III" },{ "filters.lib/tf1s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1s:license": "MIT-style STK-4.3 license" },{ "filters.lib/version": "1.7.1" },{ "maths.lib/author": "GRAME" },{ "maths.lib/copyright": "GRAME" },{ "maths.lib/license": "LGPL with exception" },{ "maths.lib/name": "Faust Math Library" },{ "maths.lib/version": "2.8.1" },{ "name": "eoc-master" },{ "platform.lib/name": "Generic Platform Library" },{ "platform.lib/version": "1.3.0" }],"ui": [ {"type": "vgroup","label": "eoc-master","items": [ {"type": "nentry","label": "dc_block","varname": "fEntry0","shortname": "dc_block","address": "/eoc-master/dc_block","index": 40,"init": 1,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "gain","varname": "fHslider2","shortname": "gain","address": "/eoc-master/gain","index": 64,"init": 1,"min": 0,"max": 2,"step": 0.001},{"type": "hslider","label": "limiter_thresh","varname": "fHslider0","shortname": "limiter_thresh","address": "/eoc-master/limiter_thresh","index": 0,"meta": [{ "unit": "dB" }],"init": -1,"min": -12,"max": 0,"step": 0.1},{"type": "hslider","label": "width","varname": "fHslider1","shortname": "width","address": "/eoc-master/width","index": 60,"init": 1,"min": 0,"max": 2,"step": 0.001}]}]} \ No newline at end of file diff --git a/playground/faust/eoc-master.wasm b/playground/faust/eoc-master.wasm index 449d0ee..ae6eef7 100644 Binary files a/playground/faust/eoc-master.wasm and b/playground/faust/eoc-master.wasm differ diff --git a/playground/faust/eoc-reverb.json b/playground/faust/eoc-reverb.json index aafd256..2cfc0bb 100644 --- a/playground/faust/eoc-reverb.json +++ b/playground/faust/eoc-reverb.json @@ -1 +1 @@ -{"name": "eoc-reverb","filename": "eoc-reverb.dsp","version": "2.83.1","compile_options": "-lang wasm -fpga-mem-th 4 -ct 1 -cn eoc_reverb -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0","library_list": ["/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/stdfaust.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/maths.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/platform.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/reverbs.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/delays.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/basics.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/signals.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/filters.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/routes.lib"],"include_pathnames": ["/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/.claude/worktrees/agent-a42cfe12/playground/faust"],"size": 2048504,"code": "Ly8gZW9jLXJldmVyYi5kc3Ag4oCUIFN0ZXJlbyByZXZlcmIgZm9yIE1FTUxOYXV0IEVPQyBjaGFpbgovLwovLyA5IHBhcmFtczogcHJlZGVsYXksIHNpemUsIGRpZmZ1c2lvbiwgaGlfZGFtcCwgbG9fZGFtcCwgZGVjYXksIG1peCwgd2lkdGgsIG1vZF9yYXRlCi8vCi8vIFVzZXMgcmUueml0YV9yZXYxX3N0ZXJlbyBmb3IgdGhlIGNvcmUgcmV2ZXJiIGFsZ29yaXRobS4KLy8KLy8gQ29tcGlsZToKLy8gICBmYXVzdCAtbGFuZyB3YXNtIC1jbiBlb2NfcmV2ZXJiIC1qc29uIGVvYy1yZXZlcmIuZHNwIC1vIGVvYy1yZXZlcmIud2FzbQoKaW1wb3J0KCJzdGRmYXVzdC5saWIiKTsKCnByZWRlbGF5ID0gaHNsaWRlcigicHJlZGVsYXlbdW5pdDptc10iLCAgMC4wLCAgIDAuMCwgIDEwMC4wLCAgMC41KTsKc2l6ZSAgICAgPSBoc2xpZGVyKCJzaXplIiwgICAgICAgICAgICAgIDAuNSwgICAwLjAsICAgIDEuMCwgIDAuMDAxKTsKZGlmZnVzaW9uPSBoc2xpZGVyKCJkaWZmdXNpb24iLCAgICAgICAgIDAuNywgICAwLjAsICAgIDEuMCwgIDAuMDAxKTsKaGlfZGFtcCAgPSBoc2xpZGVyKCJoaV9kYW1wIiwgICAgICAgICAgIDAuNSwgICAwLjAsICAgIDEuMCwgIDAuMDAxKTsKbG9fZGFtcCAgPSBoc2xpZGVyKCJsb19kYW1wIiwgICAgICAgICAgIDAuMCwgICAwLjAsICAgIDEuMCwgIDAuMDAxKTsKZGVjYXkgICAgPSBoc2xpZGVyKCJkZWNheVt1bml0OnNdIiwgICAgICAzLjAsICAgMC4xLCAgIDIwLjAsICAwLjEpOwptaXggICAgICA9IGhzbGlkZXIoIm1peCIsICAgICAgICAgICAgICAgMC4yLCAgIDAuMCwgICAgMS4wLCAgMC4wMDEpOwp3aWR0aCAgICA9IGhzbGlkZXIoIndpZHRoIiwgICAgICAgICAgICAgMC44LCAgIDAuMCwgICAgMS4wLCAgMC4wMDEpOwptb2RfcmF0ZSA9IGhzbGlkZXIoIm1vZF9yYXRlW3VuaXQ6SHpdIiwgMC41LCAgIDAuMCwgICAgNS4wLCAgMC4wMSk7CgovLyBQcmUtZGVsYXkgaW4gc2FtcGxlcyAobWluaW11bSAxKQpwZFNhbXBzID0gbWF4KDEsIGludChwcmVkZWxheSAvIDEwMDAuMCAqIG1hLlNSKSk7CgovLyBGcmVxdWVuY3kgY3Jvc3NvdmVycyBmb3Igeml0YQpmMSAgID0gMjAwLjAgKyBsb19kYW1wICogMTgwMC4wOwpmMiAgID0gMjAwMDAuMCAtIGhpX2RhbXAgKiAxODAwMC4wOwoKLy8gUmV2ZXJiIGRlY2F5IHRpbWVzIHNjYWxlZCBieSBzaXplCnQ2MGRjID0gZGVjYXkgKiAoMS4wICsgc2l6ZSAqIDAuNSk7CnQ2MG0gID0gZGVjYXk7CgovLyBQcmUtZGVsYXk6IHNpbmdsZSBjaGFubmVsCnByZWRlbGF5TGluZSA9IF8gQCBwZFNhbXBzOwoKLy8gV2lkdGggcHJvY2Vzc2luZzogTS9TIGVuY29kZS1zY2FsZS1kZWNvZGUKLy8gTCBSIOKGkiBMJyBSJyB3aGVyZSBzaWRlIGNoYW5uZWxzIHNjYWxlZCBieSB3aWR0aAp3aWR0aEwobCwgcikgPSAobCArIHIpICogMC41ICsgKGwgLSByKSAqIDAuNSAqIHdpZHRoOwp3aWR0aFIobCwgcikgPSAobCArIHIpICogMC41IC0gKGwgLSByKSAqIDAuNSAqIHdpZHRoOwoKLy8gV2V0IHNpZ25hbCB0aHJvdWdoIHByZWRlbGF5LCBkaWZmdXNpb24gc2NhbGUsIGFuZCB6aXRhIHJldmVyYgp3ZXRMKGluTCwgaW5SKSA9IChyZS56aXRhX3JldjFfc3RlcmVvKDAuMCwgZjEsIGYyLCB0NjBkYywgdDYwbSwgMTkyMDAwLjAsCiAgICAgICAgICAgICAgICAgICAgaW5MICogZGlmZnVzaW9uIEAgcGRTYW1wcywKICAgICAgICAgICAgICAgICAgICBpblIgKiBkaWZmdXNpb24gQCBwZFNhbXBzKSkgOiB3aWR0aEw7Cgp3ZXRSKGluTCwgaW5SKSA9IChyZS56aXRhX3JldjFfc3RlcmVvKDAuMCwgZjEsIGYyLCB0NjBkYywgdDYwbSwgMTkyMDAwLjAsCiAgICAgICAgICAgICAgICAgICAgaW5MICogZGlmZnVzaW9uIEAgcGRTYW1wcywKICAgICAgICAgICAgICAgICAgICBpblIgKiBkaWZmdXNpb24gQCBwZFNhbXBzKSkgOiB3aWR0aFI7Cgpwcm9jZXNzKGluTCwgaW5SKSA9CiAgICBpbkwgKiAoMS4wIC0gbWl4KSArIHdldEwoaW5MLCBpblIpICogbWl4LAogICAgaW5SICogKDEuMCAtIG1peCkgKyB3ZXRSKGluTCwgaW5SKSAqIG1peDsK","inputs": 2,"outputs": 2,"meta": [ { "basics.lib/name": "Faust Basic Element Library" },{ "basics.lib/version": "1.22.0" },{ "compile_options": "-lang wasm -fpga-mem-th 4 -ct 1 -cn eoc_reverb -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" },{ "delays.lib/name": "Faust Delay Library" },{ "delays.lib/version": "1.2.0" },{ "filename": "eoc-reverb.dsp" },{ "filters.lib/allpass_comb:author": "Julius O. Smith III" },{ "filters.lib/allpass_comb:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/allpass_comb:license": "MIT-style STK-4.3 license" },{ "filters.lib/lowpass0_highpass1": "MIT-style STK-4.3 license" },{ "filters.lib/lowpass0_highpass1:author": "Julius O. Smith III" },{ "filters.lib/lowpass:author": "Julius O. Smith III" },{ "filters.lib/lowpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass:license": "MIT-style STK-4.3 license" },{ "filters.lib/name": "Faust Filters Library" },{ "filters.lib/tf1:author": "Julius O. Smith III" },{ "filters.lib/tf1:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf1s:author": "Julius O. Smith III" },{ "filters.lib/tf1s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1s:license": "MIT-style STK-4.3 license" },{ "filters.lib/version": "1.7.1" },{ "maths.lib/author": "GRAME" },{ "maths.lib/copyright": "GRAME" },{ "maths.lib/license": "LGPL with exception" },{ "maths.lib/name": "Faust Math Library" },{ "maths.lib/version": "2.9.0" },{ "name": "eoc-reverb" },{ "platform.lib/name": "Generic Platform Library" },{ "platform.lib/version": "1.3.0" },{ "reverbs.lib/name": "Faust Reverb Library" },{ "reverbs.lib/version": "1.5.1" },{ "routes.lib/hadamard:author": "Remy Muller, revised by Romain Michon" },{ "routes.lib/name": "Faust Signal Routing Library" },{ "routes.lib/version": "1.2.0" },{ "signals.lib/name": "Faust Signal Routing Library" },{ "signals.lib/version": "1.6.0" }],"ui": [ {"type": "vgroup","label": "eoc-reverb","items": [ {"type": "hslider","label": "decay","varname": "fHslider0","shortname": "decay","address": "/eoc-reverb/decay","index": 0,"meta": [{ "unit": "s" }],"init": 3,"min": 0.1,"max": 20,"step": 0.1},{"type": "hslider","label": "diffusion","varname": "fHslider4","shortname": "diffusion","address": "/eoc-reverb/diffusion","index": 262212,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "hi_damp","varname": "fHslider1","shortname": "hi_damp","address": "/eoc-reverb/hi_damp","index": 20,"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "lo_damp","varname": "fHslider2","shortname": "lo_damp","address": "/eoc-reverb/lo_damp","index": 28,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "mix","varname": "fHslider7","shortname": "mix","address": "/eoc-reverb/mix","index": 2048500,"init": 0.2,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "predelay","varname": "fHslider5","shortname": "predelay","address": "/eoc-reverb/predelay","index": 393288,"meta": [{ "unit": "ms" }],"init": 0,"min": 0,"max": 100,"step": 0.5},{"type": "hslider","label": "size","varname": "fHslider3","shortname": "size","address": "/eoc-reverb/size","index": 44,"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "width","varname": "fHslider6","shortname": "width","address": "/eoc-reverb/width","index": 2048496,"init": 0.8,"min": 0,"max": 1,"step": 0.001}]}]} \ No newline at end of file +{"name": "eoc-reverb","filename": "eoc-reverb.dsp","version": "2.79.3","compile_options": "-lang wasm -ct 1 -cn eoc_reverb -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0","library_list": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/stdfaust.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/maths.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/platform.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/reverbs.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/delays.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/basics.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/signals.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/filters.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/routes.lib"],"include_pathnames": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust"],"size": 2048504,"code": "Ly8gZW9jLXJldmVyYi5kc3Ag4oCUIFN0ZXJlbyByZXZlcmIgZm9yIE1FTUxOYXV0IEVPQyBjaGFpbgovLwovLyA5IHBhcmFtczogcHJlZGVsYXksIHNpemUsIGRpZmZ1c2lvbiwgaGlfZGFtcCwgbG9fZGFtcCwgZGVjYXksIG1peCwgd2lkdGgsIG1vZF9yYXRlCi8vCi8vIFVzZXMgcmUueml0YV9yZXYxX3N0ZXJlbyBmb3IgdGhlIGNvcmUgcmV2ZXJiIGFsZ29yaXRobS4KLy8KLy8gQ29tcGlsZToKLy8gICBmYXVzdCAtbGFuZyB3YXNtIC1jbiBlb2NfcmV2ZXJiIC1qc29uIGVvYy1yZXZlcmIuZHNwIC1vIGVvYy1yZXZlcmIud2FzbQoKaW1wb3J0KCJzdGRmYXVzdC5saWIiKTsKCnByZWRlbGF5ID0gaHNsaWRlcigicHJlZGVsYXlbdW5pdDptc10iLCAgMC4wLCAgIDAuMCwgIDEwMC4wLCAgMC41KTsKc2l6ZSAgICAgPSBoc2xpZGVyKCJzaXplIiwgICAgICAgICAgICAgIDAuNSwgICAwLjAsICAgIDEuMCwgIDAuMDAxKTsKZGlmZnVzaW9uPSBoc2xpZGVyKCJkaWZmdXNpb24iLCAgICAgICAgIDAuNywgICAwLjAsICAgIDEuMCwgIDAuMDAxKTsKaGlfZGFtcCAgPSBoc2xpZGVyKCJoaV9kYW1wIiwgICAgICAgICAgIDAuNSwgICAwLjAsICAgIDEuMCwgIDAuMDAxKTsKbG9fZGFtcCAgPSBoc2xpZGVyKCJsb19kYW1wIiwgICAgICAgICAgIDAuMCwgICAwLjAsICAgIDEuMCwgIDAuMDAxKTsKZGVjYXkgICAgPSBoc2xpZGVyKCJkZWNheVt1bml0OnNdIiwgICAgICAzLjAsICAgMC4xLCAgIDIwLjAsICAwLjEpOwptaXggICAgICA9IGhzbGlkZXIoIm1peCIsICAgICAgICAgICAgICAgMC4yLCAgIDAuMCwgICAgMS4wLCAgMC4wMDEpOwp3aWR0aCAgICA9IGhzbGlkZXIoIndpZHRoIiwgICAgICAgICAgICAgMC44LCAgIDAuMCwgICAgMS4wLCAgMC4wMDEpOwptb2RfcmF0ZSA9IGhzbGlkZXIoIm1vZF9yYXRlW3VuaXQ6SHpdIiwgMC41LCAgIDAuMCwgICAgNS4wLCAgMC4wMSk7CgovLyBQcmUtZGVsYXkgaW4gc2FtcGxlcyAobWluaW11bSAxKQpwZFNhbXBzID0gbWF4KDEsIGludChwcmVkZWxheSAvIDEwMDAuMCAqIG1hLlNSKSk7CgovLyBGcmVxdWVuY3kgY3Jvc3NvdmVycyBmb3Igeml0YQpmMSAgID0gMjAwLjAgKyBsb19kYW1wICogMTgwMC4wOwpmMiAgID0gMjAwMDAuMCAtIGhpX2RhbXAgKiAxODAwMC4wOwoKLy8gUmV2ZXJiIGRlY2F5IHRpbWVzIHNjYWxlZCBieSBzaXplCnQ2MGRjID0gZGVjYXkgKiAoMS4wICsgc2l6ZSAqIDAuNSk7CnQ2MG0gID0gZGVjYXk7CgovLyBQcmUtZGVsYXk6IHNpbmdsZSBjaGFubmVsCnByZWRlbGF5TGluZSA9IF8gQCBwZFNhbXBzOwoKLy8gV2lkdGggcHJvY2Vzc2luZzogTS9TIGVuY29kZS1zY2FsZS1kZWNvZGUKLy8gTCBSIOKGkiBMJyBSJyB3aGVyZSBzaWRlIGNoYW5uZWxzIHNjYWxlZCBieSB3aWR0aAp3aWR0aEwobCwgcikgPSAobCArIHIpICogMC41ICsgKGwgLSByKSAqIDAuNSAqIHdpZHRoOwp3aWR0aFIobCwgcikgPSAobCArIHIpICogMC41IC0gKGwgLSByKSAqIDAuNSAqIHdpZHRoOwoKLy8gV2V0IHNpZ25hbCB0aHJvdWdoIHByZWRlbGF5LCBkaWZmdXNpb24gc2NhbGUsIGFuZCB6aXRhIHJldmVyYgp3ZXRMKGluTCwgaW5SKSA9IChyZS56aXRhX3JldjFfc3RlcmVvKDAuMCwgZjEsIGYyLCB0NjBkYywgdDYwbSwgMTkyMDAwLjAsCiAgICAgICAgICAgICAgICAgICAgaW5MICogZGlmZnVzaW9uIEAgcGRTYW1wcywKICAgICAgICAgICAgICAgICAgICBpblIgKiBkaWZmdXNpb24gQCBwZFNhbXBzKSkgOiB3aWR0aEw7Cgp3ZXRSKGluTCwgaW5SKSA9IChyZS56aXRhX3JldjFfc3RlcmVvKDAuMCwgZjEsIGYyLCB0NjBkYywgdDYwbSwgMTkyMDAwLjAsCiAgICAgICAgICAgICAgICAgICAgaW5MICogZGlmZnVzaW9uIEAgcGRTYW1wcywKICAgICAgICAgICAgICAgICAgICBpblIgKiBkaWZmdXNpb24gQCBwZFNhbXBzKSkgOiB3aWR0aFI7Cgpwcm9jZXNzKGluTCwgaW5SKSA9CiAgICBpbkwgKiAoMS4wIC0gbWl4KSArIHdldEwoaW5MLCBpblIpICogbWl4LAogICAgaW5SICogKDEuMCAtIG1peCkgKyB3ZXRSKGluTCwgaW5SKSAqIG1peDsK","inputs": 2,"outputs": 2,"meta": [ { "basics.lib/name": "Faust Basic Element Library" },{ "basics.lib/version": "1.21.0" },{ "compile_options": "-lang wasm -ct 1 -cn eoc_reverb -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" },{ "delays.lib/name": "Faust Delay Library" },{ "delays.lib/version": "1.1.0" },{ "filename": "eoc-reverb.dsp" },{ "filters.lib/allpass_comb:author": "Julius O. Smith III" },{ "filters.lib/allpass_comb:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/allpass_comb:license": "MIT-style STK-4.3 license" },{ "filters.lib/lowpass0_highpass1": "MIT-style STK-4.3 license" },{ "filters.lib/lowpass0_highpass1:author": "Julius O. Smith III" },{ "filters.lib/lowpass:author": "Julius O. Smith III" },{ "filters.lib/lowpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass:license": "MIT-style STK-4.3 license" },{ "filters.lib/name": "Faust Filters Library" },{ "filters.lib/tf1:author": "Julius O. Smith III" },{ "filters.lib/tf1:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf1s:author": "Julius O. Smith III" },{ "filters.lib/tf1s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1s:license": "MIT-style STK-4.3 license" },{ "filters.lib/version": "1.7.1" },{ "maths.lib/author": "GRAME" },{ "maths.lib/copyright": "GRAME" },{ "maths.lib/license": "LGPL with exception" },{ "maths.lib/name": "Faust Math Library" },{ "maths.lib/version": "2.8.1" },{ "name": "eoc-reverb" },{ "platform.lib/name": "Generic Platform Library" },{ "platform.lib/version": "1.3.0" },{ "reverbs.lib/name": "Faust Reverb Library" },{ "reverbs.lib/version": "1.4.0" },{ "routes.lib/hadamard:author": "Remy Muller, revised by Romain Michon" },{ "routes.lib/name": "Faust Signal Routing Library" },{ "routes.lib/version": "1.2.0" },{ "signals.lib/name": "Faust Signal Routing Library" },{ "signals.lib/version": "1.6.0" }],"ui": [ {"type": "vgroup","label": "eoc-reverb","items": [ {"type": "hslider","label": "decay","varname": "fHslider0","shortname": "decay","address": "/eoc-reverb/decay","index": 0,"meta": [{ "unit": "s" }],"init": 3,"min": 0.1,"max": 20,"step": 0.1},{"type": "hslider","label": "diffusion","varname": "fHslider4","shortname": "diffusion","address": "/eoc-reverb/diffusion","index": 262212,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "hi_damp","varname": "fHslider1","shortname": "hi_damp","address": "/eoc-reverb/hi_damp","index": 20,"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "lo_damp","varname": "fHslider2","shortname": "lo_damp","address": "/eoc-reverb/lo_damp","index": 28,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "mix","varname": "fHslider7","shortname": "mix","address": "/eoc-reverb/mix","index": 2048500,"init": 0.2,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "predelay","varname": "fHslider5","shortname": "predelay","address": "/eoc-reverb/predelay","index": 393288,"meta": [{ "unit": "ms" }],"init": 0,"min": 0,"max": 100,"step": 0.5},{"type": "hslider","label": "size","varname": "fHslider3","shortname": "size","address": "/eoc-reverb/size","index": 44,"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "width","varname": "fHslider6","shortname": "width","address": "/eoc-reverb/width","index": 2048496,"init": 0.8,"min": 0,"max": 1,"step": 0.001}]}]} \ No newline at end of file diff --git a/playground/faust/eoc-reverb.wasm b/playground/faust/eoc-reverb.wasm index 6357d1b..4b92e7a 100644 Binary files a/playground/faust/eoc-reverb.wasm and b/playground/faust/eoc-reverb.wasm differ diff --git a/playground/faust/eoc-saturation.json b/playground/faust/eoc-saturation.json index 1e0e342..6e11090 100644 --- a/playground/faust/eoc-saturation.json +++ b/playground/faust/eoc-saturation.json @@ -1,88 +1 @@ -{ - "name": "eoc-saturation", - "filename": "eoc-saturation.dsp", - "version": "2.83.1", - "compile_options": "-lang cpp -fpga-mem-th 4 -ct 1 -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0", - "library_list": ["/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/stdfaust.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/maths.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/filters.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/platform.lib"], - "include_pathnames": ["/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/.claude/worktrees/agent-a8d5e213/playground/faust"], - "size": 56, - "inputs": 2, - "outputs": 2, - "meta": [ - { "compile_options": "-lang cpp -fpga-mem-th 4 -ct 1 -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" }, - { "filename": "eoc-saturation.dsp" }, - { "filters.lib/lowpass0_highpass1": "Copyright (C) 2003-2019 by Julius O. Smith III " }, - { "filters.lib/lowpass0_highpass1:author": "Julius O. Smith III" }, - { "filters.lib/lowpass:author": "Julius O. Smith III" }, - { "filters.lib/lowpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " }, - { "filters.lib/lowpass:license": "MIT-style STK-4.3 license" }, - { "filters.lib/name": "Faust Filters Library" }, - { "filters.lib/tf1:author": "Julius O. Smith III" }, - { "filters.lib/tf1:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " }, - { "filters.lib/tf1:license": "MIT-style STK-4.3 license" }, - { "filters.lib/tf1s:author": "Julius O. Smith III" }, - { "filters.lib/tf1s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " }, - { "filters.lib/tf1s:license": "MIT-style STK-4.3 license" }, - { "filters.lib/version": "1.7.1" }, - { "maths.lib/author": "GRAME" }, - { "maths.lib/copyright": "GRAME" }, - { "maths.lib/license": "LGPL with exception" }, - { "maths.lib/name": "Faust Math Library" }, - { "maths.lib/version": "2.9.0" }, - { "name": "eoc-saturation" }, - { "platform.lib/name": "Generic Platform Library" }, - { "platform.lib/version": "1.3.0" } - ], - "ui": [ - { - "type": "vgroup", - "label": "eoc-saturation", - "items": [ - { - "type": "hslider", - "label": "character", - "varname": "fHslider1", - "shortname": "character", - "address": "/eoc-saturation/character", - "init": 0, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "drive", - "varname": "fHslider0", - "shortname": "drive", - "address": "/eoc-saturation/drive", - "init": 0, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "mix", - "varname": "fHslider3", - "shortname": "mix", - "address": "/eoc-saturation/mix", - "init": 1, - "min": 0, - "max": 1, - "step": 0.001 - }, - { - "type": "hslider", - "label": "tone", - "varname": "fHslider2", - "shortname": "tone", - "address": "/eoc-saturation/tone", - "init": 0.5, - "min": 0, - "max": 1, - "step": 0.001 - } - ] - } - ] -} \ No newline at end of file +{"name": "eoc-saturation","filename": "eoc-saturation.dsp","version": "2.79.3","compile_options": "-lang wasm -ct 1 -cn eoc_saturation -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0","library_list": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/stdfaust.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/maths.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/filters.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/platform.lib"],"include_pathnames": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust"],"size": 56,"code": "Ly8gZW9jLXNhdHVyYXRpb24uZHNwIOKAlCBTdGVyZW8gc2F0dXJhdGlvbiBlZmZlY3QgZm9yIHRoZSBFT0MgcmFjay4KLy8KLy8gUGFyYW1ldGVycyAoNCk6Ci8vICAgZHJpdmUgICAgIFswLjAsIDAtMV0gICAwPWNsZWFuLCAxPWZ1bGwgZHJpdmUKLy8gICBjaGFyYWN0ZXIgWzAuMCwgMC0xXSAgIDA9c29mdC1jbGlwL3RhbmgsIDAuNT10YXBlL2FzeW1tZXRyaWMsIDE9aGFyZC1jbGlwCi8vICAgdG9uZSAgICAgIFswLjUsIDAtMV0gICBwb3N0LXNhdHVyYXRpb24gdG9uZTogMD1kYXJrIChMUCksIDE9YnJpZ2h0IChIUCBibGVuZCkKLy8gICBtaXggICAgICAgWzEuMCwgMC0xXSAgIGRyeS93ZXQgZm9yIHBhcmFsbGVsIHNhdHVyYXRpb24KCmltcG9ydCgic3RkZmF1c3QubGliIik7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gVUkKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpkcml2ZSAgICAgPSBoc2xpZGVyKCJkcml2ZSIsICAgICAwLjAsIDAsIDEsIDAuMDAxKTsKY2hhcmFjdGVyID0gaHNsaWRlcigiY2hhcmFjdGVyIiwgMC4wLCAwLCAxLCAwLjAwMSk7CnRvbmUgICAgICA9IGhzbGlkZXIoInRvbmUiLCAgICAgIDAuNSwgMCwgMSwgMC4wMDEpOwptaXggICAgICAgPSBoc2xpZGVyKCJtaXgiLCAgICAgICAxLjAsIDAsIDEsIDAuMDAxKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBTYXR1cmF0aW9uIHNoYXBlcwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmRyaXZlR2FpbiA9IDEuMCArIGRyaXZlICogMTUuMDsgICAvLyAxeCB0byAxNnggZ2FpbiBiZWZvcmUgY2xpcHBpbmcKCi8vIFNvZnQgY2xpcDogdGFuaApzb2Z0Q2xpcCh4KSA9IG1hLnRhbmgoeCk7CgovLyBUYXBlOiBhc3ltbWV0cmljIHdhdmVzaGFwZXIg4oCUIHNsaWdodGx5IGhhcmRlciBjbGlwcGluZyBvbiBwb3NpdGl2ZSBwZWFrcwovLyBCbGVuZHMgdGFuaCB3aXRoIGEgZ2VudGxlIHNlY29uZC1oYXJtb25pYyBiaWFzCnRhcGVDbGlwKHgpID0gc29mdENsaXAoeCAqIDEuMikgKiAwLjU1ICsgc29mdENsaXAoeCkgKiAwLjQ1ICsgeCAqIHggKiAwLjA0ICogKDEuMCAtIHNvZnRDbGlwKGFicyh4KSkpOwoKLy8gSGFyZCBjbGlwOiBzaW1wbGUgc2F0dXJhdGUKaGFyZENsaXAoeCkgPSBtYXgoLTEuMCwgbWluKDEuMCwgeCkpOwoKLy8gQ2hhcmFjdGVyIGNyb3NzZmFkZSBiZXR3ZWVuIHRoZSB0aHJlZSBzaGFwZXM6Ci8vICAgYz0wLjAgIOKGkiBzb2Z0ICh0YW5oKQovLyAgIGM9MC41ICDihpIgdGFwZSAoYXN5bW1ldHJpYykKLy8gICBjPTEuMCAg4oaSIGhhcmQgY2xpcApzYXR1cmF0ZShjLCB4KSA9CiAgICBzb2Z0Q2xpcCh4KSAqIChtYXgoMC4wLCAxLjAgLSBjICogMi4wKSkgKwogICAgdGFwZUNsaXAoeCkgKiAoMS4wIC0gYWJzKGMgLSAwLjUpICogMi4wKSArCiAgICBoYXJkQ2xpcCh4KSAqIG1heCgwLjAsIChjIC0gMC41KSAqIDIuMCk7CgovLyBBcHBseSBkcml2ZSwgc2F0dXJhdGUsIGFuZCBub3JtYWxpc2Ugb3V0cHV0IGxldmVsCnByb2Nlc3NDaGFubmVsKHgpID0gc2F0dXJhdGUoY2hhcmFjdGVyLCB4ICogZHJpdmVHYWluKSAvIG1heCgwLjAwMSwgc3FydChkcml2ZUdhaW4pKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBUb25lIGNvbnRyb2w6IExQL0hQIGJsZW5kIHZpYSBvbmUtcG9sZSBmaWx0ZXJzCi8vCi8vIHRvbmU9MC4wICDihpIgZGFyayAoNDAwSHogTFApCi8vIHRvbmU9MC41ICDihpIgZmxhdCAocGFzc3Rocm91Z2gpCi8vIHRvbmU9MS4wICDihpIgYnJpZ2h0ICg4a0h6IEhQIGJsZW5kKQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnRvbmVGcmVxTFAgPSA0MDAuMCArIHRvbmUgKiAxOTYwMC4wOyAgIC8vIDQwMEh6IHRvIDIwa0h6IChmdWxseSBvcGVuIGF0IHRvbmU9MSkKdG9uZUZyZXFIUCA9IDIwMC4wICsgdG9uZSAqIDc4MDAuMDsgICAgLy8gMjAwSHogdG8gOGtIegoKYXBwbHlUb25lKHgpID0gZmkubG93cGFzcygxLCB0b25lRnJlcUxQLCB4KTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBNYWluIHByb2Nlc3M6IHN0ZXJlbyBzYXR1cmF0aW9uIHdpdGggcGFyYWxsZWwgZHJ5L3dldCBtaXgKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpwcm9jZXNzKGluTCwgaW5SKSA9IG91dEwsIG91dFIKd2l0aCB7CiAgICB3ZXRMID0gYXBwbHlUb25lKHByb2Nlc3NDaGFubmVsKGluTCkpOwogICAgd2V0UiA9IGFwcGx5VG9uZShwcm9jZXNzQ2hhbm5lbChpblIpKTsKICAgIG91dEwgPSBpbkwgKiAoMS4wIC0gbWl4KSArIHdldEwgKiBtaXg7CiAgICBvdXRSID0gaW5SICogKDEuMCAtIG1peCkgKyB3ZXRSICogbWl4Owp9Owo=","inputs": 2,"outputs": 2,"meta": [ { "compile_options": "-lang wasm -ct 1 -cn eoc_saturation -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" },{ "filename": "eoc-saturation.dsp" },{ "filters.lib/lowpass0_highpass1": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass0_highpass1:author": "Julius O. Smith III" },{ "filters.lib/lowpass:author": "Julius O. Smith III" },{ "filters.lib/lowpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass:license": "MIT-style STK-4.3 license" },{ "filters.lib/name": "Faust Filters Library" },{ "filters.lib/tf1:author": "Julius O. Smith III" },{ "filters.lib/tf1:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf1s:author": "Julius O. Smith III" },{ "filters.lib/tf1s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1s:license": "MIT-style STK-4.3 license" },{ "filters.lib/version": "1.7.1" },{ "maths.lib/author": "GRAME" },{ "maths.lib/copyright": "GRAME" },{ "maths.lib/license": "LGPL with exception" },{ "maths.lib/name": "Faust Math Library" },{ "maths.lib/version": "2.8.1" },{ "name": "eoc-saturation" },{ "platform.lib/name": "Generic Platform Library" },{ "platform.lib/version": "1.3.0" }],"ui": [ {"type": "vgroup","label": "eoc-saturation","items": [ {"type": "hslider","label": "character","varname": "fHslider1","shortname": "character","address": "/eoc-saturation/character","index": 4,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "drive","varname": "fHslider0","shortname": "drive","address": "/eoc-saturation/drive","index": 0,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "mix","varname": "fHslider3","shortname": "mix","address": "/eoc-saturation/mix","index": 36,"init": 1,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "tone","varname": "fHslider2","shortname": "tone","address": "/eoc-saturation/tone","index": 16,"init": 0.5,"min": 0,"max": 1,"step": 0.001}]}]} \ No newline at end of file diff --git a/playground/faust/eoc-saturation.wasm b/playground/faust/eoc-saturation.wasm index ee4405d..db88369 100644 Binary files a/playground/faust/eoc-saturation.wasm and b/playground/faust/eoc-saturation.wasm differ diff --git a/playground/faust/faust-worklet-processor.js b/playground/faust/faust-worklet-processor.js index 493ec39..b3ce032 100644 --- a/playground/faust/faust-worklet-processor.js +++ b/playground/faust/faust-worklet-processor.js @@ -26,9 +26,47 @@ class FaustWorkletProcessor extends AudioWorkletProcessor { this._ready = false; this._paramValues = {}; // index → current value (raw Faust units) + // Messages that arrive before init() finishes are buffered here and + // drained by _drainPendingMessages() in order once the subclass sets + // _ready = true. Subclasses with extended _handleMessage() should call + // _queueIfNotReady(msg) as their first line to participate. + this._pendingMessages = []; + this.port.onmessage = (e) => this._handleMessage(e.data); } + // --------------------------------------------------------------------------- + // Pre-ready message buffering + // --------------------------------------------------------------------------- + + /** + * Returns true if the message was queued (processor not ready yet). + * Subclasses should call this at the top of their _handleMessage override + * after the 'init' special case, before touching _dspInst. + */ + _queueIfNotReady(msg) { + if (this._ready) return false; + if (!msg || msg.type === 'init') return false; + this._pendingMessages.push(msg); + return true; + } + + /** Drain all buffered pre-ready messages, in arrival order. */ + _drainPendingMessages() { + if (this._pendingMessages.length === 0) return; + const pending = this._pendingMessages; + this._pendingMessages = []; + for (const msg of pending) { + try { this._handleMessage(msg); } + catch (err) { + this.port.postMessage({ + type: 'error', + message: 'drain failed: ' + String(err), + }); + } + } + } + // --------------------------------------------------------------------------- // Message handler (runs in worklet thread) // --------------------------------------------------------------------------- @@ -36,18 +74,22 @@ class FaustWorkletProcessor extends AudioWorkletProcessor { _handleMessage(msg) { if (!msg || !msg.type) return; - switch (msg.type) { - case 'init': - this._initWasm(msg.wasmBytes, msg.sampleRate || sampleRate) - .then(() => { - this._ready = true; - this.port.postMessage({ type: 'ready' }); - }) - .catch((err) => { - this.port.postMessage({ type: 'error', message: String(err) }); - }); - break; + if (msg.type === 'init') { + this._initWasm(msg.wasmBytes, msg.sampleRate || sampleRate) + .then(() => { + this._ready = true; + this.port.postMessage({ type: 'ready' }); + this._drainPendingMessages(); + }) + .catch((err) => { + this.port.postMessage({ type: 'error', message: String(err) }); + }); + return; + } + if (this._queueIfNotReady(msg)) return; + + switch (msg.type) { case 'setParam': this._paramValues[msg.index] = msg.value; this._onSetParam(msg.index, msg.value); diff --git a/playground/faust/fm-matrix.json b/playground/faust/fm-matrix.json index dd05eba..0cbea0e 100644 --- a/playground/faust/fm-matrix.json +++ b/playground/faust/fm-matrix.json @@ -1 +1 @@ -{"name": "fm-matrix","filename": "fm-matrix.dsp","version": "2.83.1","compile_options": "-lang wasm -fpga-mem-th 4 -ct 1 -cn fm_matrix -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0","library_list": ["/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/stdfaust.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/signals.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/maths.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/platform.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/envelopes.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/oscillators.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/filters.lib","/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust/basics.lib"],"include_pathnames": ["/nix/store/fnjbalzgc6pjm8la292cczxqbr00qmav-faust-2.83.1/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust"],"size": 344892,"code": "Ly8gZm0tbWF0cml4LmRzcCDigJQgRnVsbCA1Ni1wYXJhbWV0ZXIgNC1vcGVyYXRvciBGTSBzeW50aGVzaXplciB3aXRoIGNvbnRpbnVvdXMgcm91dGluZyBtYXRyaXgKLy8KLy8gRGVzaWduOiA0IG9wZXJhdG9ycyB3aXRoIGZ1bGx5IGNvbnRpbnVvdXMgTsOXTiBjcm9zcy1tb2R1bGF0aW9uIG1hdHJpeC4KLy8gTm8gZml4ZWQgYWxnb3JpdGhtIHNsb3RzIOKAlCB0aGUgYWxnb3JpdGhtIGVtZXJnZXMgZnJvbSBtb2R1bGF0aW9uIGluZGV4IHZhbHVlcy4KLy8gV2hlbiBhbGwgcm91dGluZyBtYXRyaXggaW5kaWNlcyBhcmUgbmVhciAwOiBhZGRpdGl2ZSBzeW50aGVzaXMuCi8vIEFzIGluZGljZXMgZ3JvdzogaW5jcmVhc2luZ2x5IGNvbXBsZXggRk0gdGltYnJlcyBlbWVyZ2UuCi8vCi8vIFBhcmFtZXRlciBvcmRlcmluZyAoNTYgdG90YWwsIG1hcHMgdG8gTUxQIG91dHB1dCBpbmRpY2VzIDDigJM1NSk6Ci8vICAgMOKAkzIzOiAgT3BlcmF0b3IgQ29yZSDDlyA0IChyYXRpbywgbGV2ZWwsIGF0dGFjaywgZGVjYXksIHN1c3RhaW4sIHJlbGVhc2UpCi8vICAgMjTigJMzNTogQ3Jvc3MtTW9kdWxhdGlvbiBNYXRyaXggKDEyIGRpcmVjdGVkIHBhaXJzKQovLyAgIDM24oCTMzk6IFNlbGYtRmVlZGJhY2sgw5cgNAovLyAgIDQw4oCTNDc6IEdsb2JhbCBNb2R1bGF0aW9uIChMRk8sIHBpdGNoIGVudiwgdmVsb2NpdHkpCi8vICAgNDjigJM1NTogTWFzdGVyIChsZXZlbCwgdmVsIHNlbnMsIGdsaWRlLCBmaW5lIHR1bmUsIHdhdmVmb3JtIGJsZW5kLCBzdGVyZW8gc3ByZWFkLAovLyAgICAgICAgICAgb3V0cHV0IHNhdHVyYXRpb24sIG91dHB1dCBIUCkKLy8KLy8gSGlkZGVuIHBhcmFtcyAobm90IGluIHRoZSA1Ni1wYXJhbSBOSVNQUyBsaXN0KToKLy8gICBmcmVxICDigJQgc2V0IGJ5IG5vdGVPbiAoSHopCi8vICAgZ2F0ZSAg4oCUIHNldCBieSBub3RlT24vbm90ZU9mZiAoMC8xKQovLyAgIF92ZWwgIOKAlCBzZXQgYnkgbm90ZU9uICh2ZWxvY2l0eSAw4oCTMSkKLy8KLy8gRk0gaW1wbGVtZW50YXRpb246IGVhY2ggb3BlcmF0b3IgcGhhc2UtbW9kdWxhdGVzIG90aGVycyB2aWEgYSAxLXNhbXBsZSBkZWxheWVkCi8vIGZlZWRiYWNrIGJ1cy4gVGhlIDQgb3BlcmF0b3Igb3V0cHV0cyBhcmUgY29sbGVjdGVkIGludG8gYSA0LWNoYW5uZWwgYnVzIGFuZAovLyBsb29wZWQgdmlhIH4uIFRoaXMgaXMgdGhlIHN0YW5kYXJkIEZhdXN0IEZNIHBhdHRlcm4uCi8vCi8vIEJ1aWxkOgovLyAgIG5peC1zaGVsbCAtcCBmYXVzdCAtLXJ1biBcCi8vICAgICAiZmF1c3QgLWxhbmcgd2FzbSAtY24gZm1fbWF0cml4IGZtLW1hdHJpeC5kc3AgLW8gZm0tbWF0cml4Lndhc20iCgppbXBvcnQoInN0ZGZhdXN0LmxpYiIpOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEhpZGRlbiBjb250cm9sIHBhcmFtcyAoZHJpdmVuIGJ5IG5vdGVPbi9ub3RlT2ZmLCBub3QgTklTUFMpCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZnJlcSA9IGhzbGlkZXIoIk1hc3Rlci9mcmVxW2hpZGRlbjoxXVt1bml0Okh6XSIsIDIyMCwgMjAsIDQwMDAsIDAuMDEpOwpnYXRlID0gYnV0dG9uKCJNYXN0ZXIvZ2F0ZVtoaWRkZW46MV0iKTsKdmVsICA9IGhzbGlkZXIoIk1hc3Rlci9fdmVsW2hpZGRlbjoxXSIsIDAuNywgMC4wLCAxLjAsIDAuMDAxKSA6IHNpLnNtb287CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gR3JvdXAgMSDigJQgT3BlcmF0b3IgQ29yZSDDlyA0ICAocGFyYW1zIDDigJMyMykKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpvcDFfcmF0aW8gICA9IGhzbGlkZXIoIk9wZXJhdG9ycy9PcCAxL29wMV9yYXRpbyIsICAgMS4wLCAwLjEyNSwgMTYuMCwgMC4wMDEpIDogc2kuc21vbzsKb3AxX2xldmVsICAgPSBoc2xpZGVyKCJPcGVyYXRvcnMvT3AgMS9vcDFfbGV2ZWwiLCAgIDAuOCwgMC4wLCAgIDEuMCwgIDAuMDAxKSA6IHNpLnNtb287Cm9wMV9hdHRhY2sgID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDEvb3AxX2F0dGFjayIsICAwLjAxLCAwLjAwMSwgNS4wLCAwLjAwMSk7Cm9wMV9kZWNheSAgID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDEvb3AxX2RlY2F5IiwgICAwLjMsIDAuMDAxLCAxMC4wLCAwLjAwMSk7Cm9wMV9zdXN0YWluID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDEvb3AxX3N1c3RhaW4iLCAwLjcsIDAuMCwgICAxLjAsICAwLjAwMSk7Cm9wMV9yZWxlYXNlID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDEvb3AxX3JlbGVhc2UiLCAwLjUsIDAuMDEsICAxMC4wLCAwLjAwMSk7CgpvcDJfcmF0aW8gICA9IGhzbGlkZXIoIk9wZXJhdG9ycy9PcCAyL29wMl9yYXRpbyIsICAgMi4wLCAwLjEyNSwgMTYuMCwgMC4wMDEpIDogc2kuc21vbzsKb3AyX2xldmVsICAgPSBoc2xpZGVyKCJPcGVyYXRvcnMvT3AgMi9vcDJfbGV2ZWwiLCAgIDAuNiwgMC4wLCAgIDEuMCwgIDAuMDAxKSA6IHNpLnNtb287Cm9wMl9hdHRhY2sgID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDIvb3AyX2F0dGFjayIsICAwLjAxLCAwLjAwMSwgNS4wLCAwLjAwMSk7Cm9wMl9kZWNheSAgID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDIvb3AyX2RlY2F5IiwgICAwLjMsIDAuMDAxLCAxMC4wLCAwLjAwMSk7Cm9wMl9zdXN0YWluID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDIvb3AyX3N1c3RhaW4iLCAwLjcsIDAuMCwgICAxLjAsICAwLjAwMSk7Cm9wMl9yZWxlYXNlID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDIvb3AyX3JlbGVhc2UiLCAwLjUsIDAuMDEsICAxMC4wLCAwLjAwMSk7CgpvcDNfcmF0aW8gICA9IGhzbGlkZXIoIk9wZXJhdG9ycy9PcCAzL29wM19yYXRpbyIsICAgMy4wLCAwLjEyNSwgMTYuMCwgMC4wMDEpIDogc2kuc21vbzsKb3AzX2xldmVsICAgPSBoc2xpZGVyKCJPcGVyYXRvcnMvT3AgMy9vcDNfbGV2ZWwiLCAgIDAuNCwgMC4wLCAgIDEuMCwgIDAuMDAxKSA6IHNpLnNtb287Cm9wM19hdHRhY2sgID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDMvb3AzX2F0dGFjayIsICAwLjAxLCAwLjAwMSwgNS4wLCAwLjAwMSk7Cm9wM19kZWNheSAgID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDMvb3AzX2RlY2F5IiwgICAwLjMsIDAuMDAxLCAxMC4wLCAwLjAwMSk7Cm9wM19zdXN0YWluID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDMvb3AzX3N1c3RhaW4iLCAwLjcsIDAuMCwgICAxLjAsICAwLjAwMSk7Cm9wM19yZWxlYXNlID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDMvb3AzX3JlbGVhc2UiLCAwLjUsIDAuMDEsICAxMC4wLCAwLjAwMSk7CgpvcDRfcmF0aW8gICA9IGhzbGlkZXIoIk9wZXJhdG9ycy9PcCA0L29wNF9yYXRpbyIsICAgMC41LCAwLjEyNSwgMTYuMCwgMC4wMDEpIDogc2kuc21vbzsKb3A0X2xldmVsICAgPSBoc2xpZGVyKCJPcGVyYXRvcnMvT3AgNC9vcDRfbGV2ZWwiLCAgIDAuMywgMC4wLCAgIDEuMCwgIDAuMDAxKSA6IHNpLnNtb287Cm9wNF9hdHRhY2sgID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDQvb3A0X2F0dGFjayIsICAwLjAxLCAwLjAwMSwgNS4wLCAwLjAwMSk7Cm9wNF9kZWNheSAgID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDQvb3A0X2RlY2F5IiwgICAwLjMsIDAuMDAxLCAxMC4wLCAwLjAwMSk7Cm9wNF9zdXN0YWluID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDQvb3A0X3N1c3RhaW4iLCAwLjcsIDAuMCwgICAxLjAsICAwLjAwMSk7Cm9wNF9yZWxlYXNlID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDQvb3A0X3JlbGVhc2UiLCAwLjUsIDAuMDEsICAxMC4wLCAwLjAwMSk7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gR3JvdXAgMiDigJQgQ3Jvc3MtTW9kdWxhdGlvbiBNYXRyaXggKHBhcmFtcyAyNOKAkzM1KQovLyBtWFkgPSBvcCBYIG1vZHVsYXRlcyBvcCBZIChYJ3Mgb3V0cHV0IGlzIGFkZGVkIHRvIFkncyBwaGFzZSkKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgptMTIgPSBoc2xpZGVyKCJNYXRyaXgvbTEyIiwgMC4wLCAwLjAsIDEwLjAsIDAuMDAxKSA6IHNpLnNtb287Cm0xMyA9IGhzbGlkZXIoIk1hdHJpeC9tMTMiLCAwLjAsIDAuMCwgMTAuMCwgMC4wMDEpIDogc2kuc21vbzsKbTE0ID0gaHNsaWRlcigiTWF0cml4L20xNCIsIDAuMCwgMC4wLCAxMC4wLCAwLjAwMSkgOiBzaS5zbW9vOwptMjEgPSBoc2xpZGVyKCJNYXRyaXgvbTIxIiwgMS4wLCAwLjAsIDEwLjAsIDAuMDAxKSA6IHNpLnNtb287Cm0yMyA9IGhzbGlkZXIoIk1hdHJpeC9tMjMiLCAwLjAsIDAuMCwgMTAuMCwgMC4wMDEpIDogc2kuc21vbzsKbTI0ID0gaHNsaWRlcigiTWF0cml4L20yNCIsIDAuMCwgMC4wLCAxMC4wLCAwLjAwMSkgOiBzaS5zbW9vOwptMzEgPSBoc2xpZGVyKCJNYXRyaXgvbTMxIiwgMC4wLCAwLjAsIDEwLjAsIDAuMDAxKSA6IHNpLnNtb287Cm0zMiA9IGhzbGlkZXIoIk1hdHJpeC9tMzIiLCAwLjAsIDAuMCwgMTAuMCwgMC4wMDEpIDogc2kuc21vbzsKbTM0ID0gaHNsaWRlcigiTWF0cml4L20zNCIsIDAuMCwgMC4wLCAxMC4wLCAwLjAwMSkgOiBzaS5zbW9vOwptNDEgPSBoc2xpZGVyKCJNYXRyaXgvbTQxIiwgMC4wLCAwLjAsIDEwLjAsIDAuMDAxKSA6IHNpLnNtb287Cm00MiA9IGhzbGlkZXIoIk1hdHJpeC9tNDIiLCAwLjAsIDAuMCwgMTAuMCwgMC4wMDEpIDogc2kuc21vbzsKbTQzID0gaHNsaWRlcigiTWF0cml4L200MyIsIDAuMCwgMC4wLCAxMC4wLCAwLjAwMSkgOiBzaS5zbW9vOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEdyb3VwIDMg4oCUIFNlbGYtRmVlZGJhY2sgw5cgNCAgKHBhcmFtcyAzNuKAkzM5KQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmZiMSA9IGhzbGlkZXIoIkZlZWRiYWNrL2ZiMSIsIDAuMCwgMC4wLCAxLjAsIDAuMDAxKSA6IHNpLnNtb287CmZiMiA9IGhzbGlkZXIoIkZlZWRiYWNrL2ZiMiIsIDAuMCwgMC4wLCAxLjAsIDAuMDAxKSA6IHNpLnNtb287CmZiMyA9IGhzbGlkZXIoIkZlZWRiYWNrL2ZiMyIsIDAuMCwgMC4wLCAxLjAsIDAuMDAxKSA6IHNpLnNtb287CmZiNCA9IGhzbGlkZXIoIkZlZWRiYWNrL2ZiNCIsIDAuMCwgMC4wLCAxLjAsIDAuMDAxKSA6IHNpLnNtb287CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gR3JvdXAgNCDigJQgR2xvYmFsIE1vZHVsYXRpb24gIChwYXJhbXMgNDDigJM0NykKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpsZm9fcmF0ZSAgICAgICAgID0gaHNsaWRlcigiR2xvYmFsL2xmb19yYXRlIiwgICAgICAgICA1LjAsICAgMC4wMSwgIDIwLjAsICAwLjAwMSk7Cmxmb19kZXB0aCAgICAgICAgPSBoc2xpZGVyKCJHbG9iYWwvbGZvX2RlcHRoIiwgICAgICAgIDAuMCwgICAwLjAsICAgMS4wLCAgIDAuMDAxKSA6IHNpLnNtb287Cmxmb19waXRjaCAgICAgICAgPSBoc2xpZGVyKCJHbG9iYWwvbGZvX3BpdGNoIiwgICAgICAgIDAuNSwgICAwLjAsICAgMS4wLCAgIDAuMDAxKSA6IHNpLnNtb287Cmxmb19sZXZlbHMgICAgICAgPSBoc2xpZGVyKCJHbG9iYWwvbGZvX2xldmVscyIsICAgICAgIDAuNSwgICAwLjAsICAgMS4wLCAgIDAuMDAxKSA6IHNpLnNtb287Cmxmb193YXZlZm9ybSAgICAgPSBoc2xpZGVyKCJHbG9iYWwvbGZvX3dhdmVmb3JtIiwgICAgIDAuMCwgICAwLjAsICAgMS4wLCAgIDAuMDAxKTsKcGl0Y2hfZW52X2Ftb3VudCA9IGhzbGlkZXIoIkdsb2JhbC9waXRjaF9lbnZfYW1vdW50IiwgMC4wLCAgIDAuMCwgICAxLjAsICAgMC4wMDEpIDogc2kuc21vbzsKcGl0Y2hfZW52X2RlY2F5ICA9IGhzbGlkZXIoIkdsb2JhbC9waXRjaF9lbnZfZGVjYXkiLCAgMC4xLCAgIDAuMDAxLCAyLjAsICAgMC4wMDEpOwp2ZWxfaW5kZXhfc2NhbGUgID0gaHNsaWRlcigiR2xvYmFsL3ZlbF9pbmRleF9zY2FsZSIsICAwLjAsICAgMC4wLCAgIDEuMCwgICAwLjAwMSkgOiBzaS5zbW9vOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEdyb3VwIDUg4oCUIE1hc3RlciAgKHBhcmFtcyA0OOKAkzU1KQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCm1hc3Rlcl9sZXZlbCAgICAgICA9IGhzbGlkZXIoIk1hc3Rlci9sZXZlbCIsICAgICAgICAgICAgICAwLjcsICAwLjAsICAgMS4wLCAgIDAuMDAxKSA6IHNpLnNtb287CnZlbF9zZW5zICAgICAgICAgICA9IGhzbGlkZXIoIk1hc3Rlci92ZWxfc2VucyIsICAgICAgICAgICAwLjUsICAwLjAsICAgMS4wLCAgIDAuMDAxKTsKcGl0Y2hfZ2xpZGUgICAgICAgID0gaHNsaWRlcigiTWFzdGVyL3BpdGNoX2dsaWRlIiwgICAgICAgIDAuMCwgIDAuMCwgICAxMC4wLCAgMC4wMDEpOwpmaW5lX3R1bmUgICAgICAgICAgPSBoc2xpZGVyKCJNYXN0ZXIvZmluZV90dW5lW3VuaXQ6Y2VudHNdIiwgMC4wLCAtNTAuMCwgNTAuMCwgMC4wMSk7CndhdmVmb3JtX2JsZW5kICAgICA9IGhzbGlkZXIoIk1hc3Rlci93YXZlZm9ybV9ibGVuZCIsICAgICAwLjAsICAwLjAsICAgMS4wLCAgIDAuMDAxKSA6IHNpLnNtb287CnN0ZXJlb19zcHJlYWQgICAgICA9IGhzbGlkZXIoIk1hc3Rlci9zdGVyZW9fc3ByZWFkIiwgICAgICAwLjEsICAwLjAsICAgMS4wLCAgIDAuMDAxKSA6IHNpLnNtb287Cm91dHB1dF9zYXR1cmF0aW9uICA9IGhzbGlkZXIoIk1hc3Rlci9vdXRwdXRfc2F0dXJhdGlvbiIsICAwLjAsICAwLjAsICAgMS4wLCAgIDAuMDAxKSA6IHNpLnNtb287Cm91dHB1dF9ocCAgICAgICAgICA9IGhzbGlkZXIoIk1hc3Rlci9vdXRwdXRfaHBbdW5pdDpIel0iLCAyMC4wLCAyMC4wLCAyMDAuMCwgIDAuMSk7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gRGVyaXZlZCB2YWx1ZXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBDZW50cyDihpIgZnJlcXVlbmN5IHJhdGlvCmNlbnQycmF0aW8oYykgPSBwb3coMi4wLCBjIC8gMTIwMC4wKTsKCi8vIEJhc2UgZnJlcXVlbmN5IHdpdGggZmluZS10dW5lCmJhc2VfZnJlcSA9IGZyZXEgKiBjZW50MnJhdGlvKGZpbmVfdHVuZSk7CgovLyBWZWxvY2l0eSBnYWluOiBibGVuZCBiZXR3ZWVuIDEuMCAobm8gdmVsb2NpdHkpIGFuZCBhY3R1YWwgdmVsb2NpdHkKdmVsX2dhaW4gPSAoMS4wIC0gdmVsX3NlbnMpICsgdmVsX3NlbnMgKiB2ZWw7CgovLyBWZWxvY2l0eS1zY2FsZWQgRk0gaW5kZXggbXVsdGlwbGllcgovLyB2ZWxfaW5kZXhfc2NhbGU9MDogdmVsb2NpdHkgZG9lc24ndCBhZmZlY3QgRk0gaW5kaWNlcwovLyB2ZWxfaW5kZXhfc2NhbGU9MTogRk0gaW5kaWNlcyBhcmUgZnVsbHkgc2NhbGVkIGJ5IHZlbG9jaXR5CnZlbF9pZHhfbXVsdCA9ICgxLjAgLSB2ZWxfaW5kZXhfc2NhbGUpICsgdmVsX2luZGV4X3NjYWxlICogdmVsOwoKLy8gTEZPOiA0IHdhdmVmb3JtcyBjcm9zc2ZhZGVkCi8vIFNlZ21lbnRzOiBbMCwwLjMzMyk9c2luZeKGknRyaSwgWzAuMzMzLDAuNjY3KT10cmnihpJzYXcsIFswLjY2NywxXT1zYXfihpJzcXVhcmUKbGZvX3NpZyA9CiAgYmEuaWYobGZvX3dhdmVmb3JtIDwgMC4zMzMsCiAgICAoMS4wIC0gbGZvX3dhdmVmb3JtKjMuMCkgKiBvcy5vc2MobGZvX3JhdGUpICAgICAgKyBsZm9fd2F2ZWZvcm0qMy4wICAgICAgKiBvcy50cmlhbmdsZShsZm9fcmF0ZSksCiAgICBiYS5pZihsZm9fd2F2ZWZvcm0gPCAwLjY2NywKICAgICAgKDEuMCAtIChsZm9fd2F2ZWZvcm0tMC4zMzMpKjMuMCkgKiBvcy50cmlhbmdsZShsZm9fcmF0ZSkgKyAobGZvX3dhdmVmb3JtLTAuMzMzKSozLjAgKiBvcy5zYXd0b290aChsZm9fcmF0ZSksCiAgICAgICgxLjAgLSAobGZvX3dhdmVmb3JtLTAuNjY3KSozLjApICogb3Muc2F3dG9vdGgobGZvX3JhdGUpICsgKGxmb193YXZlZm9ybS0wLjY2NykqMy4wICogb3Muc3F1YXJlKGxmb19yYXRlKSkpOwoKLy8gUGl0Y2ggZW52ZWxvcGU6IGZhc3QgYXR0YWNrLCBjb25maWd1cmFibGUgZGVjYXksIHRyaWdnZXJlZCBieSBnYXRlCnBpdGNoX2VudiA9IGVuLmFyKDAuMDAxLCBwaXRjaF9lbnZfZGVjYXksIGdhdGUpOwoKLy8gTW9kdWxhdGVkIGZyZXF1ZW5jeTogZmluZS10dW5lICsgTEZPIHBpdGNoICsgcGl0Y2ggZW52ZWxvcGUKLy8gTEZPIHBpdGNoOiDCsTAuMDgzMyBzZW1pdG9uZXMgcGVyIHVuaXQgZGVwdGggKHN1YnRsZSB2aWJyYXRvKQovLyBQaXRjaCBlbnY6IHVwIHRvICsxIG9jdGF2ZSAocmF0aW8gKzEuMCA9ICtvY3RhdmUpCmxmb19waXRjaF9vZmZzZXQgPSBsZm9fc2lnICogbGZvX2RlcHRoICogbGZvX3BpdGNoICogMC4wMDgzOyAgIC8vIH4wLjEgc2VtaXRvbmUgbWF4CnBpdGNoX2Vudl9vZmZzZXQgPSBwaXRjaF9lbnYgKiBwaXRjaF9lbnZfYW1vdW50OyAgICAgICAgICAgICAgICAgLy8gMC4uMSBvY3QKbW9kX2ZyZXEgPSBiYXNlX2ZyZXEgKiBwb3coMi4wLCBsZm9fcGl0Y2hfb2Zmc2V0ICsgcGl0Y2hfZW52X29mZnNldCk7CgovLyBMRk8gbGV2ZWwgbW9kdWxhdGlvbiAodHJlbW9sbyk6IDEuMCB3aGVuIGRlcHRoPTAsIGRpcHMgdG8gKDEtMC41KmRlcHRoKmxmb19sZXZlbHMpIGF0IHRyb3VnaApsZm9fbGV2ZWxfZmFjdG9yID0gMS4wIC0gbGZvX2RlcHRoICogbGZvX2xldmVscyAqIDAuNSAqICgxLjAgLSBsZm9fc2lnKSAqIDAuNTsKCi8vIFBlci1vcGVyYXRvciBvc2NpbGxhdG9yOiBibGVuZCBzaW5lICgwKSDihpIgdHJpYW5nbGUgKDEpCm9wX29zYyhmKSA9ICgxLjAgLSB3YXZlZm9ybV9ibGVuZCkgKiBvcy5vc2MoZikgKyB3YXZlZm9ybV9ibGVuZCAqIG9zLnRyaWFuZ2xlKGYpOwoKLy8gUGVyLW9wZXJhdG9yIEFEU1IgZW52ZWxvcGVzCmVudjEgPSBlbi5hZHNyKG9wMV9hdHRhY2ssIG9wMV9kZWNheSwgb3AxX3N1c3RhaW4sIG9wMV9yZWxlYXNlLCBnYXRlKTsKZW52MiA9IGVuLmFkc3Iob3AyX2F0dGFjaywgb3AyX2RlY2F5LCBvcDJfc3VzdGFpbiwgb3AyX3JlbGVhc2UsIGdhdGUpOwplbnYzID0gZW4uYWRzcihvcDNfYXR0YWNrLCBvcDNfZGVjYXksIG9wM19zdXN0YWluLCBvcDNfcmVsZWFzZSwgZ2F0ZSk7CmVudjQgPSBlbi5hZHNyKG9wNF9hdHRhY2ssIG9wNF9kZWNheSwgb3A0X3N1c3RhaW4sIG9wNF9yZWxlYXNlLCBnYXRlKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyA0LU9wZXJhdG9yIEZNIFJvdXRpbmcKLy8KLy8gSW1wbGVtZW50YXRpb24gc3RyYXRlZ3k6IGJ1aWxkIGEgcmVjdXJzaXZlIDQtY2hhbm5lbCBidXMgdXNpbmcgfgovLyBUaGUgYnVzIGNhcnJpZXMgKG9wMV9vdXQsIG9wMl9vdXQsIG9wM19vdXQsIG9wNF9vdXQpIHdpdGggMS1zYW1wbGUgZGVsYXkuCi8vIEVhY2ggZnJhbWUsIHdlIGNvbXB1dGUgbmV3IG91dHB1dHMgZnJvbSBkZWxheWVkIHByZXZpb3VzIG91dHB1dHMuCi8vCi8vIGZtYnVzOiAoZDEsZDIsZDMsZDQpIOKGkiAob3AxX291dCxvcDJfb3V0LG9wM19vdXQsb3A0X291dCkKLy8gd2hlcmUgZE4gYXJlIHRoZSAxLXNhbXBsZS1kZWxheWVkIHByZXZpb3VzIG91dHB1dHMgKHZpYSB+KQovLwovLyBGTSBwaGFzZSBkZXZpYXRpb246IGRldmlhdGlvbl9oeiA9IGluZGV4ICogbW9kdWxhdG9yX291dCAqIGNhcnJpZXJfZnJlcQovLyBUaGlzIGlzIHRoZSBzdGFuZGFyZCAiZnJlcXVlbmN5IG1vZHVsYXRpb24iIGZvcm11bGEgd2hlcmUgbW9kdWxhdG9yX291dCDiiIggWy0xLDFdCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZm1idXMoZDEsZDIsZDMsZDQpID0KICBvcDFfb3V0LCBvcDJfb3V0LCBvcDNfb3V0LCBvcDRfb3V0CndpdGggewogIC8vIEVmZmVjdGl2ZSBpbmRpY2VzIHNjYWxlZCBieSB2ZWxvY2l0eQogIG0xMmUgPSBtMTIgKiB2ZWxfaWR4X211bHQ7ICBtMTNlID0gbTEzICogdmVsX2lkeF9tdWx0OyAgbTE0ZSA9IG0xNCAqIHZlbF9pZHhfbXVsdDsKICBtMjFlID0gbTIxICogdmVsX2lkeF9tdWx0OyAgbTIzZSA9IG0yMyAqIHZlbF9pZHhfbXVsdDsgIG0yNGUgPSBtMjQgKiB2ZWxfaWR4X211bHQ7CiAgbTMxZSA9IG0zMSAqIHZlbF9pZHhfbXVsdDsgIG0zMmUgPSBtMzIgKiB2ZWxfaWR4X211bHQ7ICBtMzRlID0gbTM0ICogdmVsX2lkeF9tdWx0OwogIG00MWUgPSBtNDEgKiB2ZWxfaWR4X211bHQ7ICBtNDJlID0gbTQyICogdmVsX2lkeF9tdWx0OyAgbTQzZSA9IG00MyAqIHZlbF9pZHhfbXVsdDsKICBmYjFlID0gZmIxICogdmVsX2lkeF9tdWx0OyAgZmIyZSA9IGZiMiAqIHZlbF9pZHhfbXVsdDsKICBmYjNlID0gZmIzICogdmVsX2lkeF9tdWx0OyAgZmI0ZSA9IGZiNCAqIHZlbF9pZHhfbXVsdDsKCiAgZjEgPSBtb2RfZnJlcSAqIG9wMV9yYXRpbzsKICBmMiA9IG1vZF9mcmVxICogb3AyX3JhdGlvOwogIGYzID0gbW9kX2ZyZXEgKiBvcDNfcmF0aW87CiAgZjQgPSBtb2RfZnJlcSAqIG9wNF9yYXRpbzsKCiAgb3AxX291dCA9IGVudjEgKiBvcDFfbGV2ZWwgKiBsZm9fbGV2ZWxfZmFjdG9yICogdmVsX2dhaW4gKgogICAgb3Bfb3NjKGYxICsgKG0yMWUqZDIgKyBtMzFlKmQzICsgbTQxZSpkNCArIGZiMWUqZDEpICogZjEpOwoKICBvcDJfb3V0ID0gZW52MiAqIG9wMl9sZXZlbCAqIGxmb19sZXZlbF9mYWN0b3IgKiB2ZWxfZ2FpbiAqCiAgICBvcF9vc2MoZjIgKyAobTEyZSpkMSArIG0zMmUqZDMgKyBtNDJlKmQ0ICsgZmIyZSpkMikgKiBmMik7CgogIG9wM19vdXQgPSBlbnYzICogb3AzX2xldmVsICogbGZvX2xldmVsX2ZhY3RvciAqIHZlbF9nYWluICoKICAgIG9wX29zYyhmMyArIChtMTNlKmQxICsgbTIzZSpkMiArIG00M2UqZDQgKyBmYjNlKmQzKSAqIGYzKTsKCiAgb3A0X291dCA9IGVudjQgKiBvcDRfbGV2ZWwgKiBsZm9fbGV2ZWxfZmFjdG9yICogdmVsX2dhaW4gKgogICAgb3Bfb3NjKGY0ICsgKG0xNGUqZDEgKyBtMjRlKmQyICsgbTM0ZSpkMyArIGZiNGUqZDQpICogZjQpOwp9OwoKLy8gUm91dGUgNC1jaGFubmVsIGJ1cyB0aHJvdWdoIGZlZWRiYWNrIGxvb3AgKGludHJvZHVjZXMgbWFuZGF0b3J5IDEtc2FtcGxlIGRlbGF5KQovLyBPdXRwdXQgb2YgZm1idXMgaXMgKG9wMSxvcDIsb3AzLG9wNCk7IHN1bSBhbGwgZm9yIGF1ZGlvIG91dApmbV9vdXQgPSAoZm1idXMgfiAoc2kuYnVzKDQpKSkgOiAoXywgXywgXywgXykgOj4gXzsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBQb3N0LXByb2Nlc3NpbmcKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBTb2Z0IGNsaXA6IHRhbmggYXBwcm94aW1hdGlvbiAoZHJpdmUgY29udHJvbGxlZCBieSBvdXRwdXRfc2F0dXJhdGlvbikKLy8gQXQgMDogbGluZWFyIHBhc3N0aHJvdWdoLiBBdCAxOiBjbGlwcyBhdCDCsX4wLjYKc29mdF9jbGlwKHgpID0geCAvIG1heCgwLjAwMSwgMS4wICsgb3V0cHV0X3NhdHVyYXRpb24gKiBhYnMoeCkpOwoKLy8gU3RlcmVvIHNwcmVhZCB2aWEgc2xpZ2h0IHBpdGNoIGRldHVuaW5nIEwgdnMgUgpzcHJlYWRfY2VudHMgPSBzdGVyZW9fc3ByZWFkICogNS4wOyAgIC8vIMKxNSBjZW50cyBtYXgKCi8vIEhQIGZpbHRlciByZW1vdmVzIERDIG9mZnNldCBmcm9tIGhlYXZ5IGZlZWRiYWNrIEZNCmhwX291dCh4KSA9IGZpLmhpZ2hwYXNzKDEsIG91dHB1dF9ocCwgeCk7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gcHJvY2VzczogbW9ubyBGTSBzdW0g4oaSIHNjYWxlIOKGkiBzb2Z0LWNsaXAg4oaSIEhQIOKGkiBzdGVyZW8gc3ByZWFkCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKcHJvY2VzcyA9CiAgZm1fb3V0CiAgOiAqKG1hc3Rlcl9sZXZlbCAqIDAuMjUpICAgICAgIC8vIDQgb3BzIHN1bW1pbmc6IHNjYWxlIHRvIHNhZmUgcmFuZ2UKICA6IHNvZnRfY2xpcAogIDogaHBfb3V0CiAgPDogKihjZW50MnJhdGlvKHNwcmVhZF9jZW50cykpLCAqKGNlbnQycmF0aW8oMC4wIC0gc3ByZWFkX2NlbnRzKSk7Cg==","inputs": 0,"outputs": 2,"meta": [ { "basics.lib/name": "Faust Basic Element Library" },{ "basics.lib/version": "1.22.0" },{ "compile_options": "-lang wasm -fpga-mem-th 4 -ct 1 -cn fm_matrix -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" },{ "envelopes.lib/adsr:author": "Yann Orlarey and Andrey Bundin" },{ "envelopes.lib/ar:author": "Yann Orlarey, Stéphane Letz" },{ "envelopes.lib/author": "GRAME" },{ "envelopes.lib/copyright": "GRAME" },{ "envelopes.lib/license": "LGPL with exception" },{ "envelopes.lib/name": "Faust Envelope Library" },{ "envelopes.lib/version": "1.3.0" },{ "filename": "fm-matrix.dsp" },{ "filters.lib/highpass:author": "Julius O. Smith III" },{ "filters.lib/highpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass0_highpass1": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass0_highpass1:author": "Julius O. Smith III" },{ "filters.lib/name": "Faust Filters Library" },{ "filters.lib/pole:author": "Julius O. Smith III" },{ "filters.lib/pole:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/pole:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf1:author": "Julius O. Smith III" },{ "filters.lib/tf1:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf1s:author": "Julius O. Smith III" },{ "filters.lib/tf1s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1s:license": "MIT-style STK-4.3 license" },{ "filters.lib/version": "1.7.1" },{ "maths.lib/author": "GRAME" },{ "maths.lib/copyright": "GRAME" },{ "maths.lib/license": "LGPL with exception" },{ "maths.lib/name": "Faust Math Library" },{ "maths.lib/version": "2.9.0" },{ "name": "fm-matrix" },{ "oscillators.lib/lf_sawpos:author": "Bart Brouns, revised by Stéphane Letz" },{ "oscillators.lib/lf_sawpos:licence": "STK-4.3" },{ "oscillators.lib/name": "Faust Oscillator Library" },{ "oscillators.lib/saw2ptr:author": "Julius O. Smith III" },{ "oscillators.lib/saw2ptr:license": "STK-4.3" },{ "oscillators.lib/sawN:author": "Julius O. Smith III" },{ "oscillators.lib/sawN:license": "STK-4.3" },{ "oscillators.lib/version": "1.6.0" },{ "platform.lib/name": "Generic Platform Library" },{ "platform.lib/version": "1.3.0" },{ "signals.lib/name": "Faust Signal Routing Library" },{ "signals.lib/version": "1.6.0" }],"ui": [ {"type": "vgroup","label": "fm-matrix","items": [ {"type": "hslider","label": "Feedback/fb1","varname": "fHslider3","shortname": "Feedback_fb1","address": "/fm-matrix/Feedback_fb1","index": 262200,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Feedback/fb2","varname": "fHslider26","shortname": "Feedback_fb2","address": "/fm-matrix/Feedback_fb2","index": 295312,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Feedback/fb3","varname": "fHslider36","shortname": "Feedback_fb3","address": "/fm-matrix/Feedback_fb3","index": 311824,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Feedback/fb4","varname": "fHslider46","shortname": "Feedback_fb4","address": "/fm-matrix/Feedback_fb4","index": 328336,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Global/lfo_depth","varname": "fHslider14","shortname": "Global_lfo_depth","address": "/fm-matrix/Global_lfo_depth","index": 278784,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Global/lfo_levels","varname": "fHslider20","shortname": "Global_lfo_levels","address": "/fm-matrix/Global_lfo_levels","index": 295248,"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Global/lfo_pitch","varname": "fHslider13","shortname": "Global_lfo_pitch","address": "/fm-matrix/Global_lfo_pitch","index": 278772,"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Global/lfo_rate","varname": "fHslider12","shortname": "Global_lfo_rate","address": "/fm-matrix/Global_lfo_rate","index": 262320,"init": 5,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "Global/lfo_waveform","varname": "fHslider11","shortname": "Global_lfo_waveform","address": "/fm-matrix/Global_lfo_waveform","index": 262316,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Global/pitch_env_amount","varname": "fHslider10","shortname": "Global_pitch_env_amount","address": "/fm-matrix/Global_pitch_env_amount","index": 262304,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Global/pitch_env_decay","varname": "fHslider9","shortname": "Global_pitch_env_decay","address": "/fm-matrix/Global_pitch_env_decay","index": 262300,"init": 0.1,"min": 0.001,"max": 2,"step": 0.001},{"type": "hslider","label": "Global/vel_index_scale","varname": "fHslider8","shortname": "Global_vel_index_scale","address": "/fm-matrix/Global_vel_index_scale","index": 262260,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Master/_vel","varname": "fHslider7","shortname": "Master_vel","address": "/fm-matrix/Master__vel","index": 262248,"meta": [{ "hidden": "1" }],"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Master/fine_tune","varname": "fHslider16","shortname": "Master_fine_tune","address": "/fm-matrix/Master_fine_tune","index": 278808,"meta": [{ "unit": "cents" }],"init": 0,"min": -50,"max": 50,"step": 0.01},{"type": "hslider","label": "Master/freq","varname": "fHslider17","shortname": "Master_freq","address": "/fm-matrix/Master_freq","index": 278812,"meta": [{ "hidden": "1" },{ "unit": "Hz" }],"init": 220,"min": 20,"max": 4000,"step": 0.01},{"type": "button","label": "Master/gate","varname": "fButton0","shortname": "Master_gate","address": "/fm-matrix/Master_gate","index": 262272,"meta": [{ "hidden": "1" }]},{"type": "hslider","label": "Master/level","varname": "fHslider2","shortname": "Master_level","address": "/fm-matrix/Master_level","index": 262188,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Master/output_hp","varname": "fHslider1","shortname": "Master_output_hp","address": "/fm-matrix/Master_output_hp","index": 262180,"meta": [{ "unit": "Hz" }],"init": 20,"min": 20,"max": 200,"step": 0.1},{"type": "hslider","label": "Master/output_saturation","varname": "fHslider56","shortname": "Master_output_saturation","address": "/fm-matrix/Master_output_saturation","index": 344848,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Master/stereo_spread","varname": "fHslider0","shortname": "Master_stereo_spread","address": "/fm-matrix/Master_stereo_spread","index": 262168,"init": 0.1,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Master/vel_sens","varname": "fHslider19","shortname": "Master_vel_sens","address": "/fm-matrix/Master_vel_sens","index": 295244,"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Master/waveform_blend","varname": "fHslider18","shortname": "Master_waveform_blend","address": "/fm-matrix/Master_waveform_blend","index": 295224,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Matrix/m12","varname": "fHslider29","shortname": "Matrix_m12","address": "/fm-matrix/Matrix_m12","index": 295348,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m13","varname": "fHslider39","shortname": "Matrix_m13","address": "/fm-matrix/Matrix_m13","index": 311860,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m14","varname": "fHslider49","shortname": "Matrix_m14","address": "/fm-matrix/Matrix_m14","index": 328372,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m21","varname": "fHslider6","shortname": "Matrix_m21","address": "/fm-matrix/Matrix_m21","index": 262236,"init": 1,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m23","varname": "fHslider38","shortname": "Matrix_m23","address": "/fm-matrix/Matrix_m23","index": 311848,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m24","varname": "fHslider48","shortname": "Matrix_m24","address": "/fm-matrix/Matrix_m24","index": 328360,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m31","varname": "fHslider5","shortname": "Matrix_m31","address": "/fm-matrix/Matrix_m31","index": 262224,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m32","varname": "fHslider28","shortname": "Matrix_m32","address": "/fm-matrix/Matrix_m32","index": 295336,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m34","varname": "fHslider47","shortname": "Matrix_m34","address": "/fm-matrix/Matrix_m34","index": 328348,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m41","varname": "fHslider4","shortname": "Matrix_m41","address": "/fm-matrix/Matrix_m41","index": 262212,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m42","varname": "fHslider27","shortname": "Matrix_m42","address": "/fm-matrix/Matrix_m42","index": 295324,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m43","varname": "fHslider37","shortname": "Matrix_m43","address": "/fm-matrix/Matrix_m43","index": 311836,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 1/op1_attack","varname": "fHslider22","shortname": "Operators_Op_1_op1_attack","address": "/fm-matrix/Operators_Op_1_op1_attack","index": 295280,"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "Operators/Op 1/op1_decay","varname": "fHslider23","shortname": "Operators_Op_1_op1_decay","address": "/fm-matrix/Operators_Op_1_op1_decay","index": 295284,"init": 0.3,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 1/op1_level","varname": "fHslider25","shortname": "Operators_Op_1_op1_level","address": "/fm-matrix/Operators_Op_1_op1_level","index": 295292,"init": 0.8,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Operators/Op 1/op1_ratio","varname": "fHslider15","shortname": "Operators_Op_1_op1_ratio","address": "/fm-matrix/Operators_Op_1_op1_ratio","index": 278796,"init": 1,"min": 0.125,"max": 16,"step": 0.001},{"type": "hslider","label": "Operators/Op 1/op1_release","varname": "fHslider21","shortname": "Operators_Op_1_op1_release","address": "/fm-matrix/Operators_Op_1_op1_release","index": 295268,"init": 0.5,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 1/op1_sustain","varname": "fHslider24","shortname": "Operators_Op_1_op1_sustain","address": "/fm-matrix/Operators_Op_1_op1_sustain","index": 295288,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Operators/Op 2/op2_attack","varname": "fHslider32","shortname": "Operators_Op_2_op2_attack","address": "/fm-matrix/Operators_Op_2_op2_attack","index": 311792,"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "Operators/Op 2/op2_decay","varname": "fHslider33","shortname": "Operators_Op_2_op2_decay","address": "/fm-matrix/Operators_Op_2_op2_decay","index": 311796,"init": 0.3,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 2/op2_level","varname": "fHslider35","shortname": "Operators_Op_2_op2_level","address": "/fm-matrix/Operators_Op_2_op2_level","index": 311804,"init": 0.6,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Operators/Op 2/op2_ratio","varname": "fHslider30","shortname": "Operators_Op_2_op2_ratio","address": "/fm-matrix/Operators_Op_2_op2_ratio","index": 295360,"init": 2,"min": 0.125,"max": 16,"step": 0.001},{"type": "hslider","label": "Operators/Op 2/op2_release","varname": "fHslider31","shortname": "Operators_Op_2_op2_release","address": "/fm-matrix/Operators_Op_2_op2_release","index": 311788,"init": 0.5,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 2/op2_sustain","varname": "fHslider34","shortname": "Operators_Op_2_op2_sustain","address": "/fm-matrix/Operators_Op_2_op2_sustain","index": 311800,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Operators/Op 3/op3_attack","varname": "fHslider42","shortname": "Operators_Op_3_op3_attack","address": "/fm-matrix/Operators_Op_3_op3_attack","index": 328304,"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "Operators/Op 3/op3_decay","varname": "fHslider43","shortname": "Operators_Op_3_op3_decay","address": "/fm-matrix/Operators_Op_3_op3_decay","index": 328308,"init": 0.3,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 3/op3_level","varname": "fHslider45","shortname": "Operators_Op_3_op3_level","address": "/fm-matrix/Operators_Op_3_op3_level","index": 328316,"init": 0.4,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Operators/Op 3/op3_ratio","varname": "fHslider40","shortname": "Operators_Op_3_op3_ratio","address": "/fm-matrix/Operators_Op_3_op3_ratio","index": 311872,"init": 3,"min": 0.125,"max": 16,"step": 0.001},{"type": "hslider","label": "Operators/Op 3/op3_release","varname": "fHslider41","shortname": "Operators_Op_3_op3_release","address": "/fm-matrix/Operators_Op_3_op3_release","index": 328300,"init": 0.5,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 3/op3_sustain","varname": "fHslider44","shortname": "Operators_Op_3_op3_sustain","address": "/fm-matrix/Operators_Op_3_op3_sustain","index": 328312,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Operators/Op 4/op4_attack","varname": "fHslider52","shortname": "Operators_Op_4_op4_attack","address": "/fm-matrix/Operators_Op_4_op4_attack","index": 344816,"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "Operators/Op 4/op4_decay","varname": "fHslider53","shortname": "Operators_Op_4_op4_decay","address": "/fm-matrix/Operators_Op_4_op4_decay","index": 344820,"init": 0.3,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 4/op4_level","varname": "fHslider55","shortname": "Operators_Op_4_op4_level","address": "/fm-matrix/Operators_Op_4_op4_level","index": 344828,"init": 0.3,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Operators/Op 4/op4_ratio","varname": "fHslider50","shortname": "Operators_Op_4_op4_ratio","address": "/fm-matrix/Operators_Op_4_op4_ratio","index": 328384,"init": 0.5,"min": 0.125,"max": 16,"step": 0.001},{"type": "hslider","label": "Operators/Op 4/op4_release","varname": "fHslider51","shortname": "Operators_Op_4_op4_release","address": "/fm-matrix/Operators_Op_4_op4_release","index": 344812,"init": 0.5,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 4/op4_sustain","varname": "fHslider54","shortname": "Operators_Op_4_op4_sustain","address": "/fm-matrix/Operators_Op_4_op4_sustain","index": 344824,"init": 0.7,"min": 0,"max": 1,"step": 0.001}]}]} \ No newline at end of file +{"name": "fm-matrix","filename": "fm-matrix.dsp","version": "2.79.3","compile_options": "-lang wasm -ct 1 -cn fm_matrix -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0","library_list": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/stdfaust.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/signals.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/maths.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/platform.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/envelopes.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/oscillators.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/filters.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/basics.lib"],"include_pathnames": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust"],"size": 344892,"code": "Ly8gZm0tbWF0cml4LmRzcCDigJQgRnVsbCA1Ni1wYXJhbWV0ZXIgNC1vcGVyYXRvciBGTSBzeW50aGVzaXplciB3aXRoIGNvbnRpbnVvdXMgcm91dGluZyBtYXRyaXgKLy8KLy8gRGVzaWduOiA0IG9wZXJhdG9ycyB3aXRoIGZ1bGx5IGNvbnRpbnVvdXMgTsOXTiBjcm9zcy1tb2R1bGF0aW9uIG1hdHJpeC4KLy8gTm8gZml4ZWQgYWxnb3JpdGhtIHNsb3RzIOKAlCB0aGUgYWxnb3JpdGhtIGVtZXJnZXMgZnJvbSBtb2R1bGF0aW9uIGluZGV4IHZhbHVlcy4KLy8gV2hlbiBhbGwgcm91dGluZyBtYXRyaXggaW5kaWNlcyBhcmUgbmVhciAwOiBhZGRpdGl2ZSBzeW50aGVzaXMuCi8vIEFzIGluZGljZXMgZ3JvdzogaW5jcmVhc2luZ2x5IGNvbXBsZXggRk0gdGltYnJlcyBlbWVyZ2UuCi8vCi8vIFBhcmFtZXRlciBvcmRlcmluZyAoNTYgdG90YWwsIG1hcHMgdG8gTUxQIG91dHB1dCBpbmRpY2VzIDDigJM1NSk6Ci8vICAgMOKAkzIzOiAgT3BlcmF0b3IgQ29yZSDDlyA0IChyYXRpbywgbGV2ZWwsIGF0dGFjaywgZGVjYXksIHN1c3RhaW4sIHJlbGVhc2UpCi8vICAgMjTigJMzNTogQ3Jvc3MtTW9kdWxhdGlvbiBNYXRyaXggKDEyIGRpcmVjdGVkIHBhaXJzKQovLyAgIDM24oCTMzk6IFNlbGYtRmVlZGJhY2sgw5cgNAovLyAgIDQw4oCTNDc6IEdsb2JhbCBNb2R1bGF0aW9uIChMRk8sIHBpdGNoIGVudiwgdmVsb2NpdHkpCi8vICAgNDjigJM1NTogTWFzdGVyIChsZXZlbCwgdmVsIHNlbnMsIGdsaWRlLCBmaW5lIHR1bmUsIHdhdmVmb3JtIGJsZW5kLCBzdGVyZW8gc3ByZWFkLAovLyAgICAgICAgICAgb3V0cHV0IHNhdHVyYXRpb24sIG91dHB1dCBIUCkKLy8KLy8gSGlkZGVuIHBhcmFtcyAobm90IGluIHRoZSA1Ni1wYXJhbSBOSVNQUyBsaXN0KToKLy8gICBmcmVxICDigJQgc2V0IGJ5IG5vdGVPbiAoSHopCi8vICAgZ2F0ZSAg4oCUIHNldCBieSBub3RlT24vbm90ZU9mZiAoMC8xKQovLyAgIF92ZWwgIOKAlCBzZXQgYnkgbm90ZU9uICh2ZWxvY2l0eSAw4oCTMSkKLy8KLy8gRk0gaW1wbGVtZW50YXRpb246IGVhY2ggb3BlcmF0b3IgcGhhc2UtbW9kdWxhdGVzIG90aGVycyB2aWEgYSAxLXNhbXBsZSBkZWxheWVkCi8vIGZlZWRiYWNrIGJ1cy4gVGhlIDQgb3BlcmF0b3Igb3V0cHV0cyBhcmUgY29sbGVjdGVkIGludG8gYSA0LWNoYW5uZWwgYnVzIGFuZAovLyBsb29wZWQgdmlhIH4uIFRoaXMgaXMgdGhlIHN0YW5kYXJkIEZhdXN0IEZNIHBhdHRlcm4uCi8vCi8vIEJ1aWxkOgovLyAgIG5peC1zaGVsbCAtcCBmYXVzdCAtLXJ1biBcCi8vICAgICAiZmF1c3QgLWxhbmcgd2FzbSAtY24gZm1fbWF0cml4IGZtLW1hdHJpeC5kc3AgLW8gZm0tbWF0cml4Lndhc20iCgppbXBvcnQoInN0ZGZhdXN0LmxpYiIpOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEhpZGRlbiBjb250cm9sIHBhcmFtcyAoZHJpdmVuIGJ5IG5vdGVPbi9ub3RlT2ZmLCBub3QgTklTUFMpCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZnJlcSA9IGhzbGlkZXIoIk1hc3Rlci9mcmVxW2hpZGRlbjoxXVt1bml0Okh6XSIsIDIyMCwgMjAsIDQwMDAsIDAuMDEpOwpnYXRlID0gYnV0dG9uKCJNYXN0ZXIvZ2F0ZVtoaWRkZW46MV0iKTsKdmVsICA9IGhzbGlkZXIoIk1hc3Rlci9fdmVsW2hpZGRlbjoxXSIsIDAuNywgMC4wLCAxLjAsIDAuMDAxKSA6IHNpLnNtb287CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gR3JvdXAgMSDigJQgT3BlcmF0b3IgQ29yZSDDlyA0ICAocGFyYW1zIDDigJMyMykKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpvcDFfcmF0aW8gICA9IGhzbGlkZXIoIk9wZXJhdG9ycy9PcCAxL29wMV9yYXRpbyIsICAgMS4wLCAwLjEyNSwgMTYuMCwgMC4wMDEpIDogc2kuc21vbzsKb3AxX2xldmVsICAgPSBoc2xpZGVyKCJPcGVyYXRvcnMvT3AgMS9vcDFfbGV2ZWwiLCAgIDAuOCwgMC4wLCAgIDEuMCwgIDAuMDAxKSA6IHNpLnNtb287Cm9wMV9hdHRhY2sgID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDEvb3AxX2F0dGFjayIsICAwLjAxLCAwLjAwMSwgNS4wLCAwLjAwMSk7Cm9wMV9kZWNheSAgID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDEvb3AxX2RlY2F5IiwgICAwLjMsIDAuMDAxLCAxMC4wLCAwLjAwMSk7Cm9wMV9zdXN0YWluID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDEvb3AxX3N1c3RhaW4iLCAwLjcsIDAuMCwgICAxLjAsICAwLjAwMSk7Cm9wMV9yZWxlYXNlID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDEvb3AxX3JlbGVhc2UiLCAwLjUsIDAuMDEsICAxMC4wLCAwLjAwMSk7CgpvcDJfcmF0aW8gICA9IGhzbGlkZXIoIk9wZXJhdG9ycy9PcCAyL29wMl9yYXRpbyIsICAgMi4wLCAwLjEyNSwgMTYuMCwgMC4wMDEpIDogc2kuc21vbzsKb3AyX2xldmVsICAgPSBoc2xpZGVyKCJPcGVyYXRvcnMvT3AgMi9vcDJfbGV2ZWwiLCAgIDAuNiwgMC4wLCAgIDEuMCwgIDAuMDAxKSA6IHNpLnNtb287Cm9wMl9hdHRhY2sgID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDIvb3AyX2F0dGFjayIsICAwLjAxLCAwLjAwMSwgNS4wLCAwLjAwMSk7Cm9wMl9kZWNheSAgID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDIvb3AyX2RlY2F5IiwgICAwLjMsIDAuMDAxLCAxMC4wLCAwLjAwMSk7Cm9wMl9zdXN0YWluID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDIvb3AyX3N1c3RhaW4iLCAwLjcsIDAuMCwgICAxLjAsICAwLjAwMSk7Cm9wMl9yZWxlYXNlID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDIvb3AyX3JlbGVhc2UiLCAwLjUsIDAuMDEsICAxMC4wLCAwLjAwMSk7CgpvcDNfcmF0aW8gICA9IGhzbGlkZXIoIk9wZXJhdG9ycy9PcCAzL29wM19yYXRpbyIsICAgMy4wLCAwLjEyNSwgMTYuMCwgMC4wMDEpIDogc2kuc21vbzsKb3AzX2xldmVsICAgPSBoc2xpZGVyKCJPcGVyYXRvcnMvT3AgMy9vcDNfbGV2ZWwiLCAgIDAuNCwgMC4wLCAgIDEuMCwgIDAuMDAxKSA6IHNpLnNtb287Cm9wM19hdHRhY2sgID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDMvb3AzX2F0dGFjayIsICAwLjAxLCAwLjAwMSwgNS4wLCAwLjAwMSk7Cm9wM19kZWNheSAgID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDMvb3AzX2RlY2F5IiwgICAwLjMsIDAuMDAxLCAxMC4wLCAwLjAwMSk7Cm9wM19zdXN0YWluID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDMvb3AzX3N1c3RhaW4iLCAwLjcsIDAuMCwgICAxLjAsICAwLjAwMSk7Cm9wM19yZWxlYXNlID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDMvb3AzX3JlbGVhc2UiLCAwLjUsIDAuMDEsICAxMC4wLCAwLjAwMSk7CgpvcDRfcmF0aW8gICA9IGhzbGlkZXIoIk9wZXJhdG9ycy9PcCA0L29wNF9yYXRpbyIsICAgMC41LCAwLjEyNSwgMTYuMCwgMC4wMDEpIDogc2kuc21vbzsKb3A0X2xldmVsICAgPSBoc2xpZGVyKCJPcGVyYXRvcnMvT3AgNC9vcDRfbGV2ZWwiLCAgIDAuMywgMC4wLCAgIDEuMCwgIDAuMDAxKSA6IHNpLnNtb287Cm9wNF9hdHRhY2sgID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDQvb3A0X2F0dGFjayIsICAwLjAxLCAwLjAwMSwgNS4wLCAwLjAwMSk7Cm9wNF9kZWNheSAgID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDQvb3A0X2RlY2F5IiwgICAwLjMsIDAuMDAxLCAxMC4wLCAwLjAwMSk7Cm9wNF9zdXN0YWluID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDQvb3A0X3N1c3RhaW4iLCAwLjcsIDAuMCwgICAxLjAsICAwLjAwMSk7Cm9wNF9yZWxlYXNlID0gaHNsaWRlcigiT3BlcmF0b3JzL09wIDQvb3A0X3JlbGVhc2UiLCAwLjUsIDAuMDEsICAxMC4wLCAwLjAwMSk7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gR3JvdXAgMiDigJQgQ3Jvc3MtTW9kdWxhdGlvbiBNYXRyaXggKHBhcmFtcyAyNOKAkzM1KQovLyBtWFkgPSBvcCBYIG1vZHVsYXRlcyBvcCBZIChYJ3Mgb3V0cHV0IGlzIGFkZGVkIHRvIFkncyBwaGFzZSkKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgptMTIgPSBoc2xpZGVyKCJNYXRyaXgvbTEyIiwgMC4wLCAwLjAsIDEwLjAsIDAuMDAxKSA6IHNpLnNtb287Cm0xMyA9IGhzbGlkZXIoIk1hdHJpeC9tMTMiLCAwLjAsIDAuMCwgMTAuMCwgMC4wMDEpIDogc2kuc21vbzsKbTE0ID0gaHNsaWRlcigiTWF0cml4L20xNCIsIDAuMCwgMC4wLCAxMC4wLCAwLjAwMSkgOiBzaS5zbW9vOwptMjEgPSBoc2xpZGVyKCJNYXRyaXgvbTIxIiwgMS4wLCAwLjAsIDEwLjAsIDAuMDAxKSA6IHNpLnNtb287Cm0yMyA9IGhzbGlkZXIoIk1hdHJpeC9tMjMiLCAwLjAsIDAuMCwgMTAuMCwgMC4wMDEpIDogc2kuc21vbzsKbTI0ID0gaHNsaWRlcigiTWF0cml4L20yNCIsIDAuMCwgMC4wLCAxMC4wLCAwLjAwMSkgOiBzaS5zbW9vOwptMzEgPSBoc2xpZGVyKCJNYXRyaXgvbTMxIiwgMC4wLCAwLjAsIDEwLjAsIDAuMDAxKSA6IHNpLnNtb287Cm0zMiA9IGhzbGlkZXIoIk1hdHJpeC9tMzIiLCAwLjAsIDAuMCwgMTAuMCwgMC4wMDEpIDogc2kuc21vbzsKbTM0ID0gaHNsaWRlcigiTWF0cml4L20zNCIsIDAuMCwgMC4wLCAxMC4wLCAwLjAwMSkgOiBzaS5zbW9vOwptNDEgPSBoc2xpZGVyKCJNYXRyaXgvbTQxIiwgMC4wLCAwLjAsIDEwLjAsIDAuMDAxKSA6IHNpLnNtb287Cm00MiA9IGhzbGlkZXIoIk1hdHJpeC9tNDIiLCAwLjAsIDAuMCwgMTAuMCwgMC4wMDEpIDogc2kuc21vbzsKbTQzID0gaHNsaWRlcigiTWF0cml4L200MyIsIDAuMCwgMC4wLCAxMC4wLCAwLjAwMSkgOiBzaS5zbW9vOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEdyb3VwIDMg4oCUIFNlbGYtRmVlZGJhY2sgw5cgNCAgKHBhcmFtcyAzNuKAkzM5KQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmZiMSA9IGhzbGlkZXIoIkZlZWRiYWNrL2ZiMSIsIDAuMCwgMC4wLCAxLjAsIDAuMDAxKSA6IHNpLnNtb287CmZiMiA9IGhzbGlkZXIoIkZlZWRiYWNrL2ZiMiIsIDAuMCwgMC4wLCAxLjAsIDAuMDAxKSA6IHNpLnNtb287CmZiMyA9IGhzbGlkZXIoIkZlZWRiYWNrL2ZiMyIsIDAuMCwgMC4wLCAxLjAsIDAuMDAxKSA6IHNpLnNtb287CmZiNCA9IGhzbGlkZXIoIkZlZWRiYWNrL2ZiNCIsIDAuMCwgMC4wLCAxLjAsIDAuMDAxKSA6IHNpLnNtb287CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gR3JvdXAgNCDigJQgR2xvYmFsIE1vZHVsYXRpb24gIChwYXJhbXMgNDDigJM0NykKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpsZm9fcmF0ZSAgICAgICAgID0gaHNsaWRlcigiR2xvYmFsL2xmb19yYXRlIiwgICAgICAgICA1LjAsICAgMC4wMSwgIDIwLjAsICAwLjAwMSk7Cmxmb19kZXB0aCAgICAgICAgPSBoc2xpZGVyKCJHbG9iYWwvbGZvX2RlcHRoIiwgICAgICAgIDAuMCwgICAwLjAsICAgMS4wLCAgIDAuMDAxKSA6IHNpLnNtb287Cmxmb19waXRjaCAgICAgICAgPSBoc2xpZGVyKCJHbG9iYWwvbGZvX3BpdGNoIiwgICAgICAgIDAuNSwgICAwLjAsICAgMS4wLCAgIDAuMDAxKSA6IHNpLnNtb287Cmxmb19sZXZlbHMgICAgICAgPSBoc2xpZGVyKCJHbG9iYWwvbGZvX2xldmVscyIsICAgICAgIDAuNSwgICAwLjAsICAgMS4wLCAgIDAuMDAxKSA6IHNpLnNtb287Cmxmb193YXZlZm9ybSAgICAgPSBoc2xpZGVyKCJHbG9iYWwvbGZvX3dhdmVmb3JtIiwgICAgIDAuMCwgICAwLjAsICAgMS4wLCAgIDAuMDAxKTsKcGl0Y2hfZW52X2Ftb3VudCA9IGhzbGlkZXIoIkdsb2JhbC9waXRjaF9lbnZfYW1vdW50IiwgMC4wLCAgIDAuMCwgICAxLjAsICAgMC4wMDEpIDogc2kuc21vbzsKcGl0Y2hfZW52X2RlY2F5ICA9IGhzbGlkZXIoIkdsb2JhbC9waXRjaF9lbnZfZGVjYXkiLCAgMC4xLCAgIDAuMDAxLCAyLjAsICAgMC4wMDEpOwp2ZWxfaW5kZXhfc2NhbGUgID0gaHNsaWRlcigiR2xvYmFsL3ZlbF9pbmRleF9zY2FsZSIsICAwLjAsICAgMC4wLCAgIDEuMCwgICAwLjAwMSkgOiBzaS5zbW9vOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEdyb3VwIDUg4oCUIE1hc3RlciAgKHBhcmFtcyA0OOKAkzU1KQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCm1hc3Rlcl9sZXZlbCAgICAgICA9IGhzbGlkZXIoIk1hc3Rlci9sZXZlbCIsICAgICAgICAgICAgICAwLjcsICAwLjAsICAgMS4wLCAgIDAuMDAxKSA6IHNpLnNtb287CnZlbF9zZW5zICAgICAgICAgICA9IGhzbGlkZXIoIk1hc3Rlci92ZWxfc2VucyIsICAgICAgICAgICAwLjUsICAwLjAsICAgMS4wLCAgIDAuMDAxKTsKcGl0Y2hfZ2xpZGUgICAgICAgID0gaHNsaWRlcigiTWFzdGVyL3BpdGNoX2dsaWRlIiwgICAgICAgIDAuMCwgIDAuMCwgICAxMC4wLCAgMC4wMDEpOwpmaW5lX3R1bmUgICAgICAgICAgPSBoc2xpZGVyKCJNYXN0ZXIvZmluZV90dW5lW3VuaXQ6Y2VudHNdIiwgMC4wLCAtNTAuMCwgNTAuMCwgMC4wMSk7CndhdmVmb3JtX2JsZW5kICAgICA9IGhzbGlkZXIoIk1hc3Rlci93YXZlZm9ybV9ibGVuZCIsICAgICAwLjAsICAwLjAsICAgMS4wLCAgIDAuMDAxKSA6IHNpLnNtb287CnN0ZXJlb19zcHJlYWQgICAgICA9IGhzbGlkZXIoIk1hc3Rlci9zdGVyZW9fc3ByZWFkIiwgICAgICAwLjEsICAwLjAsICAgMS4wLCAgIDAuMDAxKSA6IHNpLnNtb287Cm91dHB1dF9zYXR1cmF0aW9uICA9IGhzbGlkZXIoIk1hc3Rlci9vdXRwdXRfc2F0dXJhdGlvbiIsICAwLjAsICAwLjAsICAgMS4wLCAgIDAuMDAxKSA6IHNpLnNtb287Cm91dHB1dF9ocCAgICAgICAgICA9IGhzbGlkZXIoIk1hc3Rlci9vdXRwdXRfaHBbdW5pdDpIel0iLCAyMC4wLCAyMC4wLCAyMDAuMCwgIDAuMSk7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gRGVyaXZlZCB2YWx1ZXMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBDZW50cyDihpIgZnJlcXVlbmN5IHJhdGlvCmNlbnQycmF0aW8oYykgPSBwb3coMi4wLCBjIC8gMTIwMC4wKTsKCi8vIEJhc2UgZnJlcXVlbmN5IHdpdGggZmluZS10dW5lCmJhc2VfZnJlcSA9IGZyZXEgKiBjZW50MnJhdGlvKGZpbmVfdHVuZSk7CgovLyBWZWxvY2l0eSBnYWluOiBibGVuZCBiZXR3ZWVuIDEuMCAobm8gdmVsb2NpdHkpIGFuZCBhY3R1YWwgdmVsb2NpdHkKdmVsX2dhaW4gPSAoMS4wIC0gdmVsX3NlbnMpICsgdmVsX3NlbnMgKiB2ZWw7CgovLyBWZWxvY2l0eS1zY2FsZWQgRk0gaW5kZXggbXVsdGlwbGllcgovLyB2ZWxfaW5kZXhfc2NhbGU9MDogdmVsb2NpdHkgZG9lc24ndCBhZmZlY3QgRk0gaW5kaWNlcwovLyB2ZWxfaW5kZXhfc2NhbGU9MTogRk0gaW5kaWNlcyBhcmUgZnVsbHkgc2NhbGVkIGJ5IHZlbG9jaXR5CnZlbF9pZHhfbXVsdCA9ICgxLjAgLSB2ZWxfaW5kZXhfc2NhbGUpICsgdmVsX2luZGV4X3NjYWxlICogdmVsOwoKLy8gTEZPOiA0IHdhdmVmb3JtcyBjcm9zc2ZhZGVkCi8vIFNlZ21lbnRzOiBbMCwwLjMzMyk9c2luZeKGknRyaSwgWzAuMzMzLDAuNjY3KT10cmnihpJzYXcsIFswLjY2NywxXT1zYXfihpJzcXVhcmUKbGZvX3NpZyA9CiAgYmEuaWYobGZvX3dhdmVmb3JtIDwgMC4zMzMsCiAgICAoMS4wIC0gbGZvX3dhdmVmb3JtKjMuMCkgKiBvcy5vc2MobGZvX3JhdGUpICAgICAgKyBsZm9fd2F2ZWZvcm0qMy4wICAgICAgKiBvcy50cmlhbmdsZShsZm9fcmF0ZSksCiAgICBiYS5pZihsZm9fd2F2ZWZvcm0gPCAwLjY2NywKICAgICAgKDEuMCAtIChsZm9fd2F2ZWZvcm0tMC4zMzMpKjMuMCkgKiBvcy50cmlhbmdsZShsZm9fcmF0ZSkgKyAobGZvX3dhdmVmb3JtLTAuMzMzKSozLjAgKiBvcy5zYXd0b290aChsZm9fcmF0ZSksCiAgICAgICgxLjAgLSAobGZvX3dhdmVmb3JtLTAuNjY3KSozLjApICogb3Muc2F3dG9vdGgobGZvX3JhdGUpICsgKGxmb193YXZlZm9ybS0wLjY2NykqMy4wICogb3Muc3F1YXJlKGxmb19yYXRlKSkpOwoKLy8gUGl0Y2ggZW52ZWxvcGU6IGZhc3QgYXR0YWNrLCBjb25maWd1cmFibGUgZGVjYXksIHRyaWdnZXJlZCBieSBnYXRlCnBpdGNoX2VudiA9IGVuLmFyKDAuMDAxLCBwaXRjaF9lbnZfZGVjYXksIGdhdGUpOwoKLy8gTW9kdWxhdGVkIGZyZXF1ZW5jeTogZmluZS10dW5lICsgTEZPIHBpdGNoICsgcGl0Y2ggZW52ZWxvcGUKLy8gTEZPIHBpdGNoOiDCsTAuMDgzMyBzZW1pdG9uZXMgcGVyIHVuaXQgZGVwdGggKHN1YnRsZSB2aWJyYXRvKQovLyBQaXRjaCBlbnY6IHVwIHRvICsxIG9jdGF2ZSAocmF0aW8gKzEuMCA9ICtvY3RhdmUpCmxmb19waXRjaF9vZmZzZXQgPSBsZm9fc2lnICogbGZvX2RlcHRoICogbGZvX3BpdGNoICogMC4wMDgzOyAgIC8vIH4wLjEgc2VtaXRvbmUgbWF4CnBpdGNoX2Vudl9vZmZzZXQgPSBwaXRjaF9lbnYgKiBwaXRjaF9lbnZfYW1vdW50OyAgICAgICAgICAgICAgICAgLy8gMC4uMSBvY3QKbW9kX2ZyZXEgPSBiYXNlX2ZyZXEgKiBwb3coMi4wLCBsZm9fcGl0Y2hfb2Zmc2V0ICsgcGl0Y2hfZW52X29mZnNldCk7CgovLyBMRk8gbGV2ZWwgbW9kdWxhdGlvbiAodHJlbW9sbyk6IDEuMCB3aGVuIGRlcHRoPTAsIGRpcHMgdG8gKDEtMC41KmRlcHRoKmxmb19sZXZlbHMpIGF0IHRyb3VnaApsZm9fbGV2ZWxfZmFjdG9yID0gMS4wIC0gbGZvX2RlcHRoICogbGZvX2xldmVscyAqIDAuNSAqICgxLjAgLSBsZm9fc2lnKSAqIDAuNTsKCi8vIFBlci1vcGVyYXRvciBvc2NpbGxhdG9yOiBibGVuZCBzaW5lICgwKSDihpIgdHJpYW5nbGUgKDEpCm9wX29zYyhmKSA9ICgxLjAgLSB3YXZlZm9ybV9ibGVuZCkgKiBvcy5vc2MoZikgKyB3YXZlZm9ybV9ibGVuZCAqIG9zLnRyaWFuZ2xlKGYpOwoKLy8gUGVyLW9wZXJhdG9yIEFEU1IgZW52ZWxvcGVzCmVudjEgPSBlbi5hZHNyKG9wMV9hdHRhY2ssIG9wMV9kZWNheSwgb3AxX3N1c3RhaW4sIG9wMV9yZWxlYXNlLCBnYXRlKTsKZW52MiA9IGVuLmFkc3Iob3AyX2F0dGFjaywgb3AyX2RlY2F5LCBvcDJfc3VzdGFpbiwgb3AyX3JlbGVhc2UsIGdhdGUpOwplbnYzID0gZW4uYWRzcihvcDNfYXR0YWNrLCBvcDNfZGVjYXksIG9wM19zdXN0YWluLCBvcDNfcmVsZWFzZSwgZ2F0ZSk7CmVudjQgPSBlbi5hZHNyKG9wNF9hdHRhY2ssIG9wNF9kZWNheSwgb3A0X3N1c3RhaW4sIG9wNF9yZWxlYXNlLCBnYXRlKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyA0LU9wZXJhdG9yIEZNIFJvdXRpbmcKLy8KLy8gSW1wbGVtZW50YXRpb24gc3RyYXRlZ3k6IGJ1aWxkIGEgcmVjdXJzaXZlIDQtY2hhbm5lbCBidXMgdXNpbmcgfgovLyBUaGUgYnVzIGNhcnJpZXMgKG9wMV9vdXQsIG9wMl9vdXQsIG9wM19vdXQsIG9wNF9vdXQpIHdpdGggMS1zYW1wbGUgZGVsYXkuCi8vIEVhY2ggZnJhbWUsIHdlIGNvbXB1dGUgbmV3IG91dHB1dHMgZnJvbSBkZWxheWVkIHByZXZpb3VzIG91dHB1dHMuCi8vCi8vIGZtYnVzOiAoZDEsZDIsZDMsZDQpIOKGkiAob3AxX291dCxvcDJfb3V0LG9wM19vdXQsb3A0X291dCkKLy8gd2hlcmUgZE4gYXJlIHRoZSAxLXNhbXBsZS1kZWxheWVkIHByZXZpb3VzIG91dHB1dHMgKHZpYSB+KQovLwovLyBGTSBwaGFzZSBkZXZpYXRpb246IGRldmlhdGlvbl9oeiA9IGluZGV4ICogbW9kdWxhdG9yX291dCAqIGNhcnJpZXJfZnJlcQovLyBUaGlzIGlzIHRoZSBzdGFuZGFyZCAiZnJlcXVlbmN5IG1vZHVsYXRpb24iIGZvcm11bGEgd2hlcmUgbW9kdWxhdG9yX291dCDiiIggWy0xLDFdCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZm1idXMoZDEsZDIsZDMsZDQpID0KICBvcDFfb3V0LCBvcDJfb3V0LCBvcDNfb3V0LCBvcDRfb3V0CndpdGggewogIC8vIEVmZmVjdGl2ZSBpbmRpY2VzIHNjYWxlZCBieSB2ZWxvY2l0eQogIG0xMmUgPSBtMTIgKiB2ZWxfaWR4X211bHQ7ICBtMTNlID0gbTEzICogdmVsX2lkeF9tdWx0OyAgbTE0ZSA9IG0xNCAqIHZlbF9pZHhfbXVsdDsKICBtMjFlID0gbTIxICogdmVsX2lkeF9tdWx0OyAgbTIzZSA9IG0yMyAqIHZlbF9pZHhfbXVsdDsgIG0yNGUgPSBtMjQgKiB2ZWxfaWR4X211bHQ7CiAgbTMxZSA9IG0zMSAqIHZlbF9pZHhfbXVsdDsgIG0zMmUgPSBtMzIgKiB2ZWxfaWR4X211bHQ7ICBtMzRlID0gbTM0ICogdmVsX2lkeF9tdWx0OwogIG00MWUgPSBtNDEgKiB2ZWxfaWR4X211bHQ7ICBtNDJlID0gbTQyICogdmVsX2lkeF9tdWx0OyAgbTQzZSA9IG00MyAqIHZlbF9pZHhfbXVsdDsKICBmYjFlID0gZmIxICogdmVsX2lkeF9tdWx0OyAgZmIyZSA9IGZiMiAqIHZlbF9pZHhfbXVsdDsKICBmYjNlID0gZmIzICogdmVsX2lkeF9tdWx0OyAgZmI0ZSA9IGZiNCAqIHZlbF9pZHhfbXVsdDsKCiAgZjEgPSBtb2RfZnJlcSAqIG9wMV9yYXRpbzsKICBmMiA9IG1vZF9mcmVxICogb3AyX3JhdGlvOwogIGYzID0gbW9kX2ZyZXEgKiBvcDNfcmF0aW87CiAgZjQgPSBtb2RfZnJlcSAqIG9wNF9yYXRpbzsKCiAgb3AxX291dCA9IGVudjEgKiBvcDFfbGV2ZWwgKiBsZm9fbGV2ZWxfZmFjdG9yICogdmVsX2dhaW4gKgogICAgb3Bfb3NjKGYxICsgKG0yMWUqZDIgKyBtMzFlKmQzICsgbTQxZSpkNCArIGZiMWUqZDEpICogZjEpOwoKICBvcDJfb3V0ID0gZW52MiAqIG9wMl9sZXZlbCAqIGxmb19sZXZlbF9mYWN0b3IgKiB2ZWxfZ2FpbiAqCiAgICBvcF9vc2MoZjIgKyAobTEyZSpkMSArIG0zMmUqZDMgKyBtNDJlKmQ0ICsgZmIyZSpkMikgKiBmMik7CgogIG9wM19vdXQgPSBlbnYzICogb3AzX2xldmVsICogbGZvX2xldmVsX2ZhY3RvciAqIHZlbF9nYWluICoKICAgIG9wX29zYyhmMyArIChtMTNlKmQxICsgbTIzZSpkMiArIG00M2UqZDQgKyBmYjNlKmQzKSAqIGYzKTsKCiAgb3A0X291dCA9IGVudjQgKiBvcDRfbGV2ZWwgKiBsZm9fbGV2ZWxfZmFjdG9yICogdmVsX2dhaW4gKgogICAgb3Bfb3NjKGY0ICsgKG0xNGUqZDEgKyBtMjRlKmQyICsgbTM0ZSpkMyArIGZiNGUqZDQpICogZjQpOwp9OwoKLy8gUm91dGUgNC1jaGFubmVsIGJ1cyB0aHJvdWdoIGZlZWRiYWNrIGxvb3AgKGludHJvZHVjZXMgbWFuZGF0b3J5IDEtc2FtcGxlIGRlbGF5KQovLyBPdXRwdXQgb2YgZm1idXMgaXMgKG9wMSxvcDIsb3AzLG9wNCk7IHN1bSBhbGwgZm9yIGF1ZGlvIG91dApmbV9vdXQgPSAoZm1idXMgfiAoc2kuYnVzKDQpKSkgOiAoXywgXywgXywgXykgOj4gXzsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBQb3N0LXByb2Nlc3NpbmcKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBTb2Z0IGNsaXA6IHRhbmggYXBwcm94aW1hdGlvbiAoZHJpdmUgY29udHJvbGxlZCBieSBvdXRwdXRfc2F0dXJhdGlvbikKLy8gQXQgMDogbGluZWFyIHBhc3N0aHJvdWdoLiBBdCAxOiBjbGlwcyBhdCDCsX4wLjYKc29mdF9jbGlwKHgpID0geCAvIG1heCgwLjAwMSwgMS4wICsgb3V0cHV0X3NhdHVyYXRpb24gKiBhYnMoeCkpOwoKLy8gU3RlcmVvIHNwcmVhZCB2aWEgc2xpZ2h0IHBpdGNoIGRldHVuaW5nIEwgdnMgUgpzcHJlYWRfY2VudHMgPSBzdGVyZW9fc3ByZWFkICogNS4wOyAgIC8vIMKxNSBjZW50cyBtYXgKCi8vIEhQIGZpbHRlciByZW1vdmVzIERDIG9mZnNldCBmcm9tIGhlYXZ5IGZlZWRiYWNrIEZNCmhwX291dCh4KSA9IGZpLmhpZ2hwYXNzKDEsIG91dHB1dF9ocCwgeCk7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gcHJvY2VzczogbW9ubyBGTSBzdW0g4oaSIHNjYWxlIOKGkiBzb2Z0LWNsaXAg4oaSIEhQIOKGkiBzdGVyZW8gc3ByZWFkCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKcHJvY2VzcyA9CiAgZm1fb3V0CiAgOiAqKG1hc3Rlcl9sZXZlbCAqIDAuMjUpICAgICAgIC8vIDQgb3BzIHN1bW1pbmc6IHNjYWxlIHRvIHNhZmUgcmFuZ2UKICA6IHNvZnRfY2xpcAogIDogaHBfb3V0CiAgPDogKihjZW50MnJhdGlvKHNwcmVhZF9jZW50cykpLCAqKGNlbnQycmF0aW8oMC4wIC0gc3ByZWFkX2NlbnRzKSk7Cg==","inputs": 0,"outputs": 2,"meta": [ { "basics.lib/name": "Faust Basic Element Library" },{ "basics.lib/version": "1.21.0" },{ "compile_options": "-lang wasm -ct 1 -cn fm_matrix -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" },{ "envelopes.lib/adsr:author": "Yann Orlarey and Andrey Bundin" },{ "envelopes.lib/ar:author": "Yann Orlarey, Stéphane Letz" },{ "envelopes.lib/author": "GRAME" },{ "envelopes.lib/copyright": "GRAME" },{ "envelopes.lib/license": "LGPL with exception" },{ "envelopes.lib/name": "Faust Envelope Library" },{ "envelopes.lib/version": "1.3.0" },{ "filename": "fm-matrix.dsp" },{ "filters.lib/highpass:author": "Julius O. Smith III" },{ "filters.lib/highpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass0_highpass1": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass0_highpass1:author": "Julius O. Smith III" },{ "filters.lib/name": "Faust Filters Library" },{ "filters.lib/pole:author": "Julius O. Smith III" },{ "filters.lib/pole:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/pole:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf1:author": "Julius O. Smith III" },{ "filters.lib/tf1:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf1s:author": "Julius O. Smith III" },{ "filters.lib/tf1s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1s:license": "MIT-style STK-4.3 license" },{ "filters.lib/version": "1.7.1" },{ "maths.lib/author": "GRAME" },{ "maths.lib/copyright": "GRAME" },{ "maths.lib/license": "LGPL with exception" },{ "maths.lib/name": "Faust Math Library" },{ "maths.lib/version": "2.8.1" },{ "name": "fm-matrix" },{ "oscillators.lib/lf_sawpos:author": "Bart Brouns, revised by Stéphane Letz" },{ "oscillators.lib/lf_sawpos:licence": "STK-4.3" },{ "oscillators.lib/name": "Faust Oscillator Library" },{ "oscillators.lib/saw2ptr:author": "Julius O. Smith III" },{ "oscillators.lib/saw2ptr:license": "STK-4.3" },{ "oscillators.lib/sawN:author": "Julius O. Smith III" },{ "oscillators.lib/sawN:license": "STK-4.3" },{ "oscillators.lib/version": "1.6.0" },{ "platform.lib/name": "Generic Platform Library" },{ "platform.lib/version": "1.3.0" },{ "signals.lib/name": "Faust Signal Routing Library" },{ "signals.lib/version": "1.6.0" }],"ui": [ {"type": "vgroup","label": "fm-matrix","items": [ {"type": "hslider","label": "Feedback/fb1","varname": "fHslider3","shortname": "Feedback_fb1","address": "/fm-matrix/Feedback_fb1","index": 262200,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Feedback/fb2","varname": "fHslider26","shortname": "Feedback_fb2","address": "/fm-matrix/Feedback_fb2","index": 295312,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Feedback/fb3","varname": "fHslider36","shortname": "Feedback_fb3","address": "/fm-matrix/Feedback_fb3","index": 311824,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Feedback/fb4","varname": "fHslider46","shortname": "Feedback_fb4","address": "/fm-matrix/Feedback_fb4","index": 328336,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Global/lfo_depth","varname": "fHslider14","shortname": "Global_lfo_depth","address": "/fm-matrix/Global_lfo_depth","index": 278784,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Global/lfo_levels","varname": "fHslider20","shortname": "Global_lfo_levels","address": "/fm-matrix/Global_lfo_levels","index": 295248,"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Global/lfo_pitch","varname": "fHslider13","shortname": "Global_lfo_pitch","address": "/fm-matrix/Global_lfo_pitch","index": 278772,"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Global/lfo_rate","varname": "fHslider12","shortname": "Global_lfo_rate","address": "/fm-matrix/Global_lfo_rate","index": 262320,"init": 5,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "Global/lfo_waveform","varname": "fHslider11","shortname": "Global_lfo_waveform","address": "/fm-matrix/Global_lfo_waveform","index": 262316,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Global/pitch_env_amount","varname": "fHslider10","shortname": "Global_pitch_env_amount","address": "/fm-matrix/Global_pitch_env_amount","index": 262304,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Global/pitch_env_decay","varname": "fHslider9","shortname": "Global_pitch_env_decay","address": "/fm-matrix/Global_pitch_env_decay","index": 262300,"init": 0.1,"min": 0.001,"max": 2,"step": 0.001},{"type": "hslider","label": "Global/vel_index_scale","varname": "fHslider8","shortname": "Global_vel_index_scale","address": "/fm-matrix/Global_vel_index_scale","index": 262260,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Master/_vel","varname": "fHslider7","shortname": "Master_vel","address": "/fm-matrix/Master__vel","index": 262248,"meta": [{ "hidden": "1" }],"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Master/fine_tune","varname": "fHslider16","shortname": "Master_fine_tune","address": "/fm-matrix/Master_fine_tune","index": 278808,"meta": [{ "unit": "cents" }],"init": 0,"min": -50,"max": 50,"step": 0.01},{"type": "hslider","label": "Master/freq","varname": "fHslider17","shortname": "Master_freq","address": "/fm-matrix/Master_freq","index": 278812,"meta": [{ "hidden": "1" },{ "unit": "Hz" }],"init": 220,"min": 20,"max": 4000,"step": 0.01},{"type": "button","label": "Master/gate","varname": "fButton0","shortname": "Master_gate","address": "/fm-matrix/Master_gate","index": 262272,"meta": [{ "hidden": "1" }]},{"type": "hslider","label": "Master/level","varname": "fHslider2","shortname": "Master_level","address": "/fm-matrix/Master_level","index": 262188,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Master/output_hp","varname": "fHslider1","shortname": "Master_output_hp","address": "/fm-matrix/Master_output_hp","index": 262180,"meta": [{ "unit": "Hz" }],"init": 20,"min": 20,"max": 200,"step": 0.1},{"type": "hslider","label": "Master/output_saturation","varname": "fHslider56","shortname": "Master_output_saturation","address": "/fm-matrix/Master_output_saturation","index": 344848,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Master/stereo_spread","varname": "fHslider0","shortname": "Master_stereo_spread","address": "/fm-matrix/Master_stereo_spread","index": 262168,"init": 0.1,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Master/vel_sens","varname": "fHslider19","shortname": "Master_vel_sens","address": "/fm-matrix/Master_vel_sens","index": 295244,"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Master/waveform_blend","varname": "fHslider18","shortname": "Master_waveform_blend","address": "/fm-matrix/Master_waveform_blend","index": 295224,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Matrix/m12","varname": "fHslider29","shortname": "Matrix_m12","address": "/fm-matrix/Matrix_m12","index": 295348,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m13","varname": "fHslider39","shortname": "Matrix_m13","address": "/fm-matrix/Matrix_m13","index": 311860,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m14","varname": "fHslider49","shortname": "Matrix_m14","address": "/fm-matrix/Matrix_m14","index": 328372,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m21","varname": "fHslider6","shortname": "Matrix_m21","address": "/fm-matrix/Matrix_m21","index": 262236,"init": 1,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m23","varname": "fHslider38","shortname": "Matrix_m23","address": "/fm-matrix/Matrix_m23","index": 311848,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m24","varname": "fHslider48","shortname": "Matrix_m24","address": "/fm-matrix/Matrix_m24","index": 328360,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m31","varname": "fHslider5","shortname": "Matrix_m31","address": "/fm-matrix/Matrix_m31","index": 262224,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m32","varname": "fHslider28","shortname": "Matrix_m32","address": "/fm-matrix/Matrix_m32","index": 295336,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m34","varname": "fHslider47","shortname": "Matrix_m34","address": "/fm-matrix/Matrix_m34","index": 328348,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m41","varname": "fHslider4","shortname": "Matrix_m41","address": "/fm-matrix/Matrix_m41","index": 262212,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m42","varname": "fHslider27","shortname": "Matrix_m42","address": "/fm-matrix/Matrix_m42","index": 295324,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Matrix/m43","varname": "fHslider37","shortname": "Matrix_m43","address": "/fm-matrix/Matrix_m43","index": 311836,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 1/op1_attack","varname": "fHslider22","shortname": "Operators_Op_1_op1_attack","address": "/fm-matrix/Operators_Op_1_op1_attack","index": 295280,"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "Operators/Op 1/op1_decay","varname": "fHslider23","shortname": "Operators_Op_1_op1_decay","address": "/fm-matrix/Operators_Op_1_op1_decay","index": 295284,"init": 0.3,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 1/op1_level","varname": "fHslider25","shortname": "Operators_Op_1_op1_level","address": "/fm-matrix/Operators_Op_1_op1_level","index": 295292,"init": 0.8,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Operators/Op 1/op1_ratio","varname": "fHslider15","shortname": "Operators_Op_1_op1_ratio","address": "/fm-matrix/Operators_Op_1_op1_ratio","index": 278796,"init": 1,"min": 0.125,"max": 16,"step": 0.001},{"type": "hslider","label": "Operators/Op 1/op1_release","varname": "fHslider21","shortname": "Operators_Op_1_op1_release","address": "/fm-matrix/Operators_Op_1_op1_release","index": 295268,"init": 0.5,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 1/op1_sustain","varname": "fHslider24","shortname": "Operators_Op_1_op1_sustain","address": "/fm-matrix/Operators_Op_1_op1_sustain","index": 295288,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Operators/Op 2/op2_attack","varname": "fHslider32","shortname": "Operators_Op_2_op2_attack","address": "/fm-matrix/Operators_Op_2_op2_attack","index": 311792,"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "Operators/Op 2/op2_decay","varname": "fHslider33","shortname": "Operators_Op_2_op2_decay","address": "/fm-matrix/Operators_Op_2_op2_decay","index": 311796,"init": 0.3,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 2/op2_level","varname": "fHslider35","shortname": "Operators_Op_2_op2_level","address": "/fm-matrix/Operators_Op_2_op2_level","index": 311804,"init": 0.6,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Operators/Op 2/op2_ratio","varname": "fHslider30","shortname": "Operators_Op_2_op2_ratio","address": "/fm-matrix/Operators_Op_2_op2_ratio","index": 295360,"init": 2,"min": 0.125,"max": 16,"step": 0.001},{"type": "hslider","label": "Operators/Op 2/op2_release","varname": "fHslider31","shortname": "Operators_Op_2_op2_release","address": "/fm-matrix/Operators_Op_2_op2_release","index": 311788,"init": 0.5,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 2/op2_sustain","varname": "fHslider34","shortname": "Operators_Op_2_op2_sustain","address": "/fm-matrix/Operators_Op_2_op2_sustain","index": 311800,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Operators/Op 3/op3_attack","varname": "fHslider42","shortname": "Operators_Op_3_op3_attack","address": "/fm-matrix/Operators_Op_3_op3_attack","index": 328304,"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "Operators/Op 3/op3_decay","varname": "fHslider43","shortname": "Operators_Op_3_op3_decay","address": "/fm-matrix/Operators_Op_3_op3_decay","index": 328308,"init": 0.3,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 3/op3_level","varname": "fHslider45","shortname": "Operators_Op_3_op3_level","address": "/fm-matrix/Operators_Op_3_op3_level","index": 328316,"init": 0.4,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Operators/Op 3/op3_ratio","varname": "fHslider40","shortname": "Operators_Op_3_op3_ratio","address": "/fm-matrix/Operators_Op_3_op3_ratio","index": 311872,"init": 3,"min": 0.125,"max": 16,"step": 0.001},{"type": "hslider","label": "Operators/Op 3/op3_release","varname": "fHslider41","shortname": "Operators_Op_3_op3_release","address": "/fm-matrix/Operators_Op_3_op3_release","index": 328300,"init": 0.5,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 3/op3_sustain","varname": "fHslider44","shortname": "Operators_Op_3_op3_sustain","address": "/fm-matrix/Operators_Op_3_op3_sustain","index": 328312,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Operators/Op 4/op4_attack","varname": "fHslider52","shortname": "Operators_Op_4_op4_attack","address": "/fm-matrix/Operators_Op_4_op4_attack","index": 344816,"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "Operators/Op 4/op4_decay","varname": "fHslider53","shortname": "Operators_Op_4_op4_decay","address": "/fm-matrix/Operators_Op_4_op4_decay","index": 344820,"init": 0.3,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 4/op4_level","varname": "fHslider55","shortname": "Operators_Op_4_op4_level","address": "/fm-matrix/Operators_Op_4_op4_level","index": 344828,"init": 0.3,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "Operators/Op 4/op4_ratio","varname": "fHslider50","shortname": "Operators_Op_4_op4_ratio","address": "/fm-matrix/Operators_Op_4_op4_ratio","index": 328384,"init": 0.5,"min": 0.125,"max": 16,"step": 0.001},{"type": "hslider","label": "Operators/Op 4/op4_release","varname": "fHslider51","shortname": "Operators_Op_4_op4_release","address": "/fm-matrix/Operators_Op_4_op4_release","index": 344812,"init": 0.5,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "Operators/Op 4/op4_sustain","varname": "fHslider54","shortname": "Operators_Op_4_op4_sustain","address": "/fm-matrix/Operators_Op_4_op4_sustain","index": 344824,"init": 0.7,"min": 0,"max": 1,"step": 0.001}]}]} \ No newline at end of file diff --git a/playground/faust/fm-matrix.wasm b/playground/faust/fm-matrix.wasm index 55dc38d..ecc29c5 100644 Binary files a/playground/faust/fm-matrix.wasm and b/playground/faust/fm-matrix.wasm differ diff --git a/playground/faust/gen-modular-dsp.py b/playground/faust/gen-modular-dsp.py new file mode 100644 index 0000000..178659c --- /dev/null +++ b/playground/faust/gen-modular-dsp.py @@ -0,0 +1,722 @@ +#!/usr/bin/env python3 +""" +gen-modular-dsp.py — Emit modular-*.dsp files for the Faust "Modular" mode. + +The modulation matrix has 48 sources × 10 destinations and every amount must be +a unique hslider (Faust slider labels are compile-time string literals). Hand- +writing 480+ sliders is impractical, so this script produces a fully expanded +.dsp file with one hslider per (source, destination) cell plus an explicit +48-term weighted-sum expression for each destination. + +The generator emits three engines in one run: + + modular-subtractive.dsp Minimoog-style 3-osc + moog filter voice + modular-additive.dsp 64-partial additive voice (spectral descriptors) + modular-fm.dsp 4-operator FM voice with full cross-mod matrix + +Each engine has its own 48×10 modulation matrix and its own set of sound +parameters. All modulation (envelopes, LFOs) comes from the shared +mod-pool.lib — the engines themselves contain ZERO internal envs/LFOs. + +Run: + python3 gen-modular-dsp.py + +Re-running this script is reproducible: same inputs produce byte-identical +output. Please DO NOT hand-edit the generated .dsp files — edit this +generator and re-run it instead. +""" + +import os + +N_SRC = 48 + +# --------------------------------------------------------------------------- +# Engine definitions. One dict per engine; each has: +# name file stem ("modular-.dsp") +# title header comment title +# description short audio-path description +# destinations list of (idx, short_name, doc) — exactly 10 entries +# sound_params Faust source for engine sound params (hsliders/buttons) +# signal_flow Faust source for derived signals + process line +# --------------------------------------------------------------------------- + + +# Common hidden-controls block (identical for all engines) +HIDDEN_BLOCK = """\ +// --------------------------------------------------------------------------- +// Hidden controls +// --------------------------------------------------------------------------- +freq = hslider("0_Hidden/freq[hidden:1][unit:Hz]", 220, 20, 4000, 0.01); +gate = button("0_Hidden/gate[hidden:1]"); +vel = hslider("0_Hidden/_vel[hidden:1]", 0.7, 0.0, 1.0, 0.001) : si.smoo; +""" + + +# --------------------------------------------------------------------------- +# Engine 1 — Subtractive (Minimoog-style) +# --------------------------------------------------------------------------- + +SUBTRACTIVE_DESTS = [ + (0, "pitch", "semitones, applied to all osc frequencies"), + (1, "osc2_detune", "cents offset added to osc2 detune knob"), + (2, "osc3_detune", "cents offset added to osc3 detune knob"), + (3, "osc_mix_bal", "-1..+1 crossfades osc1<->osc3"), + (4, "noise_level", "added to noise level knob"), + (5, "cutoff", "+/-5 octaves of filter cutoff modulation"), + (6, "resonance", "added to res knob"), + (7, "filter_env_amt", "second independent +/-5 octave cutoff mod channel"), + (8, "amp", "added to amp knob (route an ADSR here for a VCA env)"), + (9, "pan", "added to pan knob"), +] + +SUBTRACTIVE_PARAMS = """\ +// --------------------------------------------------------------------------- +// Group 1 — Oscillators +// --------------------------------------------------------------------------- +osc1_wave = hslider("1_Oscillators/00_osc1_wave[tooltip:0=saw,0.5=tri,1=square]", 0.0, 0.0, 1.0, 0.001); +osc1_range = hslider("1_Oscillators/01_osc1_range[unit:oct]", 0.0, -2.0, 2.0, 0.01); +osc1_level = hslider("1_Oscillators/02_osc1_level", 0.8, 0.0, 1.0, 0.001); + +osc2_wave = hslider("1_Oscillators/03_osc2_wave[tooltip:0=saw,0.5=tri,1=square]", 0.0, 0.0, 1.0, 0.001); +osc2_range = hslider("1_Oscillators/04_osc2_range[unit:oct]", 0.0, -2.0, 2.0, 0.01); +osc2_detune = hslider("1_Oscillators/05_osc2_detune[unit:ct]", 0.0, -50.0, 50.0, 0.1); +osc2_level = hslider("1_Oscillators/06_osc2_level", 0.6, 0.0, 1.0, 0.001); + +osc3_wave = hslider("1_Oscillators/07_osc3_wave[tooltip:0=saw,0.5=tri,1=square]", 0.5, 0.0, 1.0, 0.001); +osc3_range = hslider("1_Oscillators/08_osc3_range[unit:oct]", -1.0, -2.0, 2.0, 0.01); +osc3_detune = hslider("1_Oscillators/09_osc3_detune[unit:ct]", 0.0, -50.0, 50.0, 0.1); +osc3_level = hslider("1_Oscillators/10_osc3_level", 0.4, 0.0, 1.0, 0.001); +osc3_kb_track = hslider("1_Oscillators/11_osc3_kb_track[tooltip:1=tracks keyboard,0=LFO]", 1.0, 0.0, 1.0, 1.0); + +// --------------------------------------------------------------------------- +// Group 2 — Mixer +// --------------------------------------------------------------------------- +noise_type = hslider("2_Mixer/00_noise_type[tooltip:0=white,1=pink]", 0.0, 0.0, 1.0, 1.0); +noise_level = hslider("2_Mixer/01_noise_level", 0.0, 0.0, 1.0, 0.001); +mixer_drive = hslider("2_Mixer/02_mixer_drive[tooltip:Pre-filter overdrive]", 1.0, 0.5, 4.0, 0.001); + +// --------------------------------------------------------------------------- +// Group 3 — Filter +// --------------------------------------------------------------------------- +cutoff = hslider("3_Filter/00_cutoff[scale:log][unit:Hz]", 1200.0, 20.0, 20000.0, 0.1); +resonance = hslider("3_Filter/01_resonance", 0.3, 0.0, 1.0, 0.001); +filter_kb = hslider("3_Filter/02_filter_kb_track", 0.5, 0.0, 1.0, 0.001); + +// --------------------------------------------------------------------------- +// Group 4 — Master +// --------------------------------------------------------------------------- +master_level = hslider("4_Master/00_master_level", 0.7, 0.0, 1.0, 0.001); +master_glide = hslider("4_Master/01_master_glide[unit:s][scale:log]", 0.0, 0.0, 2.0, 0.001); +master_tune = hslider("4_Master/02_master_tune[unit:ct]", 0.0, -50.0, 50.0, 0.1); +master_pan = hslider("4_Master/03_master_pan", 0.0, -1.0, 1.0, 0.001); +""" + +SUBTRACTIVE_FLOW = """\ +// --------------------------------------------------------------------------- +// Derived signals +// --------------------------------------------------------------------------- + +cent2ratio(c) = pow(2.0, c / 1200.0); +oct2ratio(o) = pow(2.0, o); +semi2ratio(s) = pow(2.0, s / 12.0); + +// Portamento +glide_tau = 0.0001 + master_glide * 1.0; +freq_glided = freq : si.smooth(ba.tau2pole(glide_tau)); + +// Base (glide + master fine tune) +base_freq = freq_glided * cent2ratio(master_tune); + +// --------------------------------------------------------------------------- +// Per-oscillator wavetable (saw → tri → square crossfade) +// 0.0 → saw, 0.5 → triangle, 1.0 → square. Output in [-1,+1]. +// --------------------------------------------------------------------------- +osc_wave(shape, f) = + ba.if(shape < 0.5, + (1.0 - shape*2.0) * os.lf_saw(f) + (shape*2.0) * os.lf_triangle(f), + (1.0 - (shape-0.5)*2.0) * os.lf_triangle(f) + ((shape-0.5)*2.0) * os.lf_squarewave(f)); + +// --------------------------------------------------------------------------- +// Oscillator frequencies (pitch modulation: 1 unit = 12 semitones) +// --------------------------------------------------------------------------- +pitch_ratio = semi2ratio(mod_pitch(gate) * 12.0); + +osc1_freq = base_freq * oct2ratio(osc1_range) * pitch_ratio; +osc2_freq = base_freq * oct2ratio(osc2_range) * pitch_ratio + * cent2ratio(osc2_detune + mod_osc2_detune(gate) * 50.0); +osc3_freq_tracked = base_freq * oct2ratio(osc3_range) * pitch_ratio + * cent2ratio(osc3_detune + mod_osc3_detune(gate) * 50.0); +// When kb_track=0, osc3 becomes a free-running sub/LFO source at ~55 Hz * oct +osc3_freq_untracked = 55.0 * oct2ratio(osc3_range) + * cent2ratio(osc3_detune + mod_osc3_detune(gate) * 50.0); +osc3_freq = osc3_kb_track * osc3_freq_tracked + (1.0 - osc3_kb_track) * osc3_freq_untracked; + +// --------------------------------------------------------------------------- +// Oscillators +// --------------------------------------------------------------------------- +o1 = osc_wave(osc1_wave, osc1_freq); +o2 = osc_wave(osc2_wave, osc2_freq); +o3 = osc_wave(osc3_wave, osc3_freq); + +// Osc mix balance: -1 = all osc1, +1 = all osc3, 0 = both equal. osc2 unaffected. +mix_bal = max(-1.0, min(1.0, mod_osc_mix_bal(gate))); +mix_t = (mix_bal + 1.0) * 0.5; // 0..1 +w_o1 = 1.0 - mix_t; +w_o3 = mix_t; + +// --------------------------------------------------------------------------- +// Noise: white (noise_type<0.5) / pink (else) +// --------------------------------------------------------------------------- +white_noise = no.noise; +pink_noise = no.pink_noise; +noise_raw = ba.if(noise_type < 0.5, white_noise, pink_noise); +noise_lvl = max(0.0, min(1.0, noise_level + mod_noise_level(gate))); + +// --------------------------------------------------------------------------- +// Mixer sum +// --------------------------------------------------------------------------- +mix_sum = + o1 * osc1_level * w_o1 + + o2 * osc2_level + + o3 * osc3_level * w_o3 + + noise_raw * noise_lvl; + +mix_driven = ma.tanh(mix_sum * mixer_drive); + +// --------------------------------------------------------------------------- +// Filter — Moog ladder. Cutoff is modulated in octaves (±5 oct per mod unit). +// --------------------------------------------------------------------------- +cutoff_mod_oct = (mod_cutoff(gate) + mod_filter_env_amt(gate)) * 5.0; +kb_scale = pow(freq_glided / 440.0, filter_kb); // 1.0 at A4 when kb=1 +eff_cutoff_raw = cutoff * kb_scale * oct2ratio(cutoff_mod_oct); +eff_cutoff = max(20.0, min(18000.0, eff_cutoff_raw)); +eff_res = max(0.0, min(0.99, resonance + mod_resonance(gate))); + +filtered = mix_driven : ve.moog_vcf(eff_res, eff_cutoff); + +// --------------------------------------------------------------------------- +// Amp and pan +// --------------------------------------------------------------------------- +// Velocity gain: blend 1.0 (no velocity) -> vel. Referenced here so Faust +// keeps the _vel hidden param alive in the JSON descriptor. +vel_gain = (1.0 - 0.3) + 0.3 * vel; // 30% velocity sensitivity, fixed +amp_val = max(0.0, min(1.0, mod_amp(gate))) * master_level * vel_gain; +pan_val = max(-1.0, min(1.0, master_pan + mod_pan(gate))); + +// equal-power pan +pan_l = cos((pan_val + 1.0) * 0.25 * ma.PI); +pan_r = sin((pan_val + 1.0) * 0.25 * ma.PI); + +signal = filtered * amp_val; +signal_L = signal * pan_l; +signal_R = signal * pan_r; + +process = signal_L, signal_R; +""" + + +# --------------------------------------------------------------------------- +# Engine 2 — Additive (64-partial spectral descriptors) +# --------------------------------------------------------------------------- + +ADDITIVE_DESTS = [ + (0, "pitch", "semitones, applied to the fundamental frequency"), + (1, "bright", "high-partial group amplitude boost/cut (replaces bright env)"), + (2, "tilt", "added to spectral_tilt knob"), + (3, "inharmonicity", "added to inharmonicity knob"), + (4, "odd_even", "added to odd/even balance knob"), + (5, "formant_ctr", "shifts both formant centre frequencies (harmonic index)"), + (6, "formant_depth", "added to formant_depth knob"), + (7, "noise_mix", "added to noise_floor knob (clamped 0..1)"), + (8, "amp", "master amplitude dest (route an ADSR here for a VCA env)"), + (9, "pan", "stereo balance"), +] + +ADDITIVE_PARAMS = """\ +// --------------------------------------------------------------------------- +// Group 1 — Spectral Shape (harmonic bank + descriptors) +// --------------------------------------------------------------------------- +h1_amp = hslider("1_Spectral/00_h1_amp", 0.8, 0.0, 1.0, 0.001); +h2_amp = hslider("1_Spectral/01_h2_amp", 0.5, 0.0, 1.0, 0.001); +h3_amp = hslider("1_Spectral/02_h3_amp", 0.35, 0.0, 1.0, 0.001); +h4_amp = hslider("1_Spectral/03_h4_amp", 0.25, 0.0, 1.0, 0.001); +h5_amp = hslider("1_Spectral/04_h5_amp", 0.18, 0.0, 1.0, 0.001); +h6_amp = hslider("1_Spectral/05_h6_amp", 0.12, 0.0, 1.0, 0.001); +h7_amp = hslider("1_Spectral/06_h7_amp", 0.08, 0.0, 1.0, 0.001); +h8_amp = hslider("1_Spectral/07_h8_amp", 0.06, 0.0, 1.0, 0.001); +h9_16_amp = hslider("1_Spectral/08_h9_16_amp", 0.05, 0.0, 1.0, 0.001); +h17_32_amp = hslider("1_Spectral/09_h17_32_amp", 0.025, 0.0, 1.0, 0.001); +h33_64_amp = hslider("1_Spectral/10_h33_64_amp", 0.01, 0.0, 1.0, 0.001); +spectral_tilt = hslider("1_Spectral/11_spectral_tilt", 0.0, -1.0, 1.0, 0.001); +inharmonicity = hslider("1_Spectral/12_inharmonicity", 0.0, 0.0, 0.15, 0.0001); +odd_even = hslider("1_Spectral/13_odd_even", 0.5, 0.0, 1.0, 0.001); + +// --------------------------------------------------------------------------- +// Group 2 — Formants & Noise +// --------------------------------------------------------------------------- +formant1_freq = hslider("2_Formants/00_formant1_freq[tooltip:Formant 1 harmonic idx]", 3.0, 1.0, 16.0, 0.01); +formant2_freq = hslider("2_Formants/01_formant2_freq[tooltip:Formant 2 harmonic idx]", 6.0, 1.0, 16.0, 0.01); +formant_depth = hslider("2_Formants/02_formant_depth", 0.0, 0.0, 1.0, 0.001); +noise_floor = hslider("2_Formants/03_noise_floor", 0.0, 0.0, 0.2, 0.001); +noise_color = hslider("2_Formants/04_noise_color", 0.5, 0.0, 1.0, 0.001); +sub_harmonic = hslider("2_Formants/05_sub_harmonic", 0.0, 0.0, 1.0, 0.001); + +// --------------------------------------------------------------------------- +// Group 3 — Master +// --------------------------------------------------------------------------- +level = hslider("3_Master/00_level", 0.7, 0.0, 1.0, 0.001); +fine_tune = hslider("3_Master/01_fine_tune[unit:ct]", 0.0, -50.0, 50.0, 0.1); +saturation = hslider("3_Master/02_saturation", 0.0, 0.0, 1.0, 0.001); +stereo_phase_spread= hslider("3_Master/03_stereo_phase_spread",0.1, 0.0, 1.0, 0.001); +master_pan = hslider("3_Master/04_master_pan", 0.0, -1.0, 1.0, 0.001); +""" + +ADDITIVE_FLOW = """\ +// --------------------------------------------------------------------------- +// Derived signals +// --------------------------------------------------------------------------- + +N = 64; +PI = ma.PI; + +cent2ratio(c) = pow(2.0, c / 1200.0); +semi2ratio(s) = pow(2.0, s / 12.0); + +// Pitch: modulation (semitones), no glide +fine_ratio = cent2ratio(fine_tune); +pitch_ratio = semi2ratio(mod_pitch(gate) * 12.0); +base_freq = freq * fine_ratio * pitch_ratio; + +// --------------------------------------------------------------------------- +// Per-harmonic base amplitude from group sliders +// --------------------------------------------------------------------------- +group_amp(k) = + ba.if(k == 1, h1_amp, + ba.if(k == 2, h2_amp, + ba.if(k == 3, h3_amp, + ba.if(k == 4, h4_amp, + ba.if(k == 5, h5_amp, + ba.if(k == 6, h6_amp, + ba.if(k == 7, h7_amp, + ba.if(k == 8, h8_amp, + ba.if(k <= 16, h9_16_amp, + ba.if(k <= 32, h17_32_amp, + h33_64_amp)))))))))); + +// Spectral tilt (modulated) — amp *= k^tilt +eff_tilt = spectral_tilt + mod_tilt(gate); +tilt_factor(k) = pow(float(k), eff_tilt); + +// Odd/even balance (modulated, clamped) +eff_odd_even = max(0.0, min(1.0, odd_even + mod_odd_even(gate))); +odd_weight = (1.0 - eff_odd_even) * 2.0; +even_weight = eff_odd_even * 2.0; +odd_even_factor(k) = ba.if(k % 2 == 0, even_weight, odd_weight); + +// Brightness destination: progressive boost/cut on upper partials. +// bright_blend(k): 0 at k=1, 1 at k=N. mod_bright is [-1,+1]. +// factor(k) = 1 + bright_blend(k) * mod_bright. At mod=0 -> unity (neutral). +bright_blend(k) = float(k - 1) / float(N - 1); +mb = mod_bright(gate); +bright_factor(k) = 1.0 + bright_blend(k) * mb; + +// Inharmonicity (modulated, clamped to keep partials monotonic) +eff_inharm = max(0.0, min(0.2, inharmonicity + mod_inharmonicity(gate) * 0.15)); + +// Formant centres (modulated together — mod_formant_ctr shifts both by same amt) +eff_formant_shift = mod_formant_ctr(gate) * 8.0; // ±8 harmonics +eff_f1 = max(1.0, min(32.0, formant1_freq + eff_formant_shift)); +eff_f2 = max(1.0, min(32.0, formant2_freq + eff_formant_shift)); +eff_formant_depth = max(0.0, min(1.0, formant_depth + mod_formant_depth(gate))); + +// Formant shaping — two Gaussian bumps in harmonic-index space +sigma_sq = 1.5 * 1.5; +formant_bump(k, ctr) = exp(-0.5 * (float(k) - ctr) * (float(k) - ctr) / sigma_sq); +formant_factor(k) = + 1.0 + eff_formant_depth * (formant_bump(k, eff_f1) + formant_bump(k, eff_f2)); + +// Combined per-harmonic amplitude +harm_amp(k) = + group_amp(k) * tilt_factor(k) * odd_even_factor(k) * + bright_factor(k) * formant_factor(k); + +// Inharmonic partial frequency: freq_k = k*f0*(1 + B*(k^2 - 1)) +harm_freq(k) = base_freq * float(k) + * (1.0 + eff_inharm * (float(k) * float(k) - 1.0)); + +// Stereo spread — R channel gets a small per-harmonic pitch offset +stereo_spread_freq(k) = stereo_phase_spread * float(k) * 0.01; + +// --------------------------------------------------------------------------- +// Additive oscillator sums — L and R +// --------------------------------------------------------------------------- +additive_L = sum(k, N, harm_amp(k+1) * os.osc(harm_freq(k+1))); +additive_R = sum(k, N, + harm_amp(k+1) * os.osc(harm_freq(k+1) * (1.0 + stereo_spread_freq(k+1)))); + +// Sub-harmonic (0.5× fundamental) +sub_osc = sub_harmonic * os.osc(base_freq * 0.5); + +// --------------------------------------------------------------------------- +// Noise floor — coloured via one-pole LP +// --------------------------------------------------------------------------- +eff_noise = max(0.0, min(1.0, noise_floor + mod_noise_mix(gate))); +noise_lp_cutoff = 200.0 + (1.0 - noise_color) * 19800.0; +noise_signal = no.noise : fi.lowpass(1, noise_lp_cutoff); +noise_out = eff_noise * noise_signal; + +// --------------------------------------------------------------------------- +// Soft-clip saturation — tanh waveshaper +// --------------------------------------------------------------------------- +drive = 1.0 + saturation * 9.0; +softclip(x) = ma.tanh(x * drive) / drive; + +// --------------------------------------------------------------------------- +// Velocity gain — keeps _vel alive in the JSON descriptor +// --------------------------------------------------------------------------- +vel_gain = (1.0 - 0.3) + 0.3 * vel; + +// --------------------------------------------------------------------------- +// Amplitude and pan (both mod-driven) +// --------------------------------------------------------------------------- +amp_val = max(0.0, min(1.0, mod_amp(gate))) * level * vel_gain; +pan_val = max(-1.0, min(1.0, master_pan + mod_pan(gate))); + +pan_l = cos((pan_val + 1.0) * 0.25 * ma.PI); +pan_r = sin((pan_val + 1.0) * 0.25 * ma.PI); + +raw_L = (additive_L + sub_osc + noise_out) * amp_val; +raw_R = (additive_R + sub_osc + noise_out) * amp_val; + +signal_L = softclip(raw_L) * pan_l; +signal_R = softclip(raw_R) * pan_r; + +process = signal_L, signal_R; +""" + + +# --------------------------------------------------------------------------- +# Engine 3 — FM (4-operator with cross-mod matrix) +# --------------------------------------------------------------------------- + +FM_DESTS = [ + (0, "pitch", "semitones added to the base frequency"), + (1, "op1_level", "added to op1 level knob"), + (2, "op2_level", "added to op2 level knob"), + (3, "op3_level", "added to op3 level knob"), + (4, "op4_level", "added to op4 level knob"), + (5, "cross_mod_global", "global FM depth multiplier on all 12 cross-mod cells"), + (6, "feedback_global", "global feedback multiplier on all 4 self-feedback cells"), + (7, "global_ratio", "additive scale factor on all 4 operator ratios"), + (8, "amp", "master amplitude dest (route an ADSR here for a VCA env)"), + (9, "pan", "stereo balance"), +] + +FM_PARAMS = """\ +// --------------------------------------------------------------------------- +// Group 1 — Operators (ratio & level per op) +// --------------------------------------------------------------------------- +op1_ratio = hslider("1_Operators/00_op1_ratio", 1.0, 0.125, 16.0, 0.001); +op1_level = hslider("1_Operators/01_op1_level", 0.8, 0.0, 1.0, 0.001); +op2_ratio = hslider("1_Operators/02_op2_ratio", 2.0, 0.125, 16.0, 0.001); +op2_level = hslider("1_Operators/03_op2_level", 0.6, 0.0, 1.0, 0.001); +op3_ratio = hslider("1_Operators/04_op3_ratio", 3.0, 0.125, 16.0, 0.001); +op3_level = hslider("1_Operators/05_op3_level", 0.4, 0.0, 1.0, 0.001); +op4_ratio = hslider("1_Operators/06_op4_ratio", 0.5, 0.125, 16.0, 0.001); +op4_level = hslider("1_Operators/07_op4_level", 0.3, 0.0, 1.0, 0.001); + +// --------------------------------------------------------------------------- +// Group 2 — Cross-mod Matrix (mXY = op X modulates op Y) +// --------------------------------------------------------------------------- +m12 = hslider("2_CrossMod/00_m12", 0.0, 0.0, 10.0, 0.001); +m13 = hslider("2_CrossMod/01_m13", 0.0, 0.0, 10.0, 0.001); +m14 = hslider("2_CrossMod/02_m14", 0.0, 0.0, 10.0, 0.001); +m21 = hslider("2_CrossMod/03_m21", 1.0, 0.0, 10.0, 0.001); +m23 = hslider("2_CrossMod/04_m23", 0.0, 0.0, 10.0, 0.001); +m24 = hslider("2_CrossMod/05_m24", 0.0, 0.0, 10.0, 0.001); +m31 = hslider("2_CrossMod/06_m31", 0.0, 0.0, 10.0, 0.001); +m32 = hslider("2_CrossMod/07_m32", 0.0, 0.0, 10.0, 0.001); +m34 = hslider("2_CrossMod/08_m34", 0.0, 0.0, 10.0, 0.001); +m41 = hslider("2_CrossMod/09_m41", 0.0, 0.0, 10.0, 0.001); +m42 = hslider("2_CrossMod/10_m42", 0.0, 0.0, 10.0, 0.001); +m43 = hslider("2_CrossMod/11_m43", 0.0, 0.0, 10.0, 0.001); + +// --------------------------------------------------------------------------- +// Group 3 — Self-feedback +// --------------------------------------------------------------------------- +fb1 = hslider("3_Feedback/00_fb1", 0.0, 0.0, 1.0, 0.001); +fb2 = hslider("3_Feedback/01_fb2", 0.0, 0.0, 1.0, 0.001); +fb3 = hslider("3_Feedback/02_fb3", 0.0, 0.0, 1.0, 0.001); +fb4 = hslider("3_Feedback/03_fb4", 0.0, 0.0, 1.0, 0.001); + +// --------------------------------------------------------------------------- +// Group 4 — Master +// --------------------------------------------------------------------------- +master_level = hslider("4_Master/00_master_level", 0.7, 0.0, 1.0, 0.001); +fine_tune = hslider("4_Master/01_fine_tune[unit:ct]", 0.0, -50.0, 50.0, 0.1); +stereo_spread = hslider("4_Master/02_stereo_spread", 0.1, 0.0, 1.0, 0.001); +output_saturation = hslider("4_Master/03_output_saturation", 0.0, 0.0, 1.0, 0.001); +output_hp = hslider("4_Master/04_output_hp[unit:Hz]",20.0, 20.0, 200.0,0.1); +master_pan = hslider("4_Master/05_master_pan", 0.0, -1.0, 1.0, 0.001); +""" + +FM_FLOW = """\ +// --------------------------------------------------------------------------- +// Derived signals +// --------------------------------------------------------------------------- + +cent2ratio(c) = pow(2.0, c / 1200.0); +semi2ratio(s) = pow(2.0, s / 12.0); + +// Base frequency: fine tune + pitch mod (semitones, ±12) +base_freq = freq * cent2ratio(fine_tune) * semi2ratio(mod_pitch(gate) * 12.0); + +// Velocity gain — keeps _vel alive +vel_gain = (1.0 - 0.3) + 0.3 * vel; + +// --------------------------------------------------------------------------- +// Effective per-operator ratios and levels (mod applied) +// global_ratio mod is an additive ratio offset (±8) +// --------------------------------------------------------------------------- +ratio_offset = mod_global_ratio(gate) * 8.0; +r1 = max(0.01, op1_ratio + ratio_offset); +r2 = max(0.01, op2_ratio + ratio_offset); +r3 = max(0.01, op3_ratio + ratio_offset); +r4 = max(0.01, op4_ratio + ratio_offset); + +lev1 = max(0.0, min(1.0, op1_level + mod_op1_level(gate))); +lev2 = max(0.0, min(1.0, op2_level + mod_op2_level(gate))); +lev3 = max(0.0, min(1.0, op3_level + mod_op3_level(gate))); +lev4 = max(0.0, min(1.0, op4_level + mod_op4_level(gate))); + +// --------------------------------------------------------------------------- +// Global multipliers for cross-mod and feedback. +// (1 + mod) in [0, 2] roughly; clamp to stay sane. +// --------------------------------------------------------------------------- +cross_mul = max(0.0, 1.0 + mod_cross_mod_global(gate)); +fb_mul = max(0.0, 1.0 + mod_feedback_global(gate)); + +m12e = m12 * cross_mul; m13e = m13 * cross_mul; m14e = m14 * cross_mul; +m21e = m21 * cross_mul; m23e = m23 * cross_mul; m24e = m24 * cross_mul; +m31e = m31 * cross_mul; m32e = m32 * cross_mul; m34e = m34 * cross_mul; +m41e = m41 * cross_mul; m42e = m42 * cross_mul; m43e = m43 * cross_mul; + +fb1e = fb1 * fb_mul; +fb2e = fb2 * fb_mul; +fb3e = fb3 * fb_mul; +fb4e = fb4 * fb_mul; + +// --------------------------------------------------------------------------- +// 4-operator FM bus — feedback loop via ~ on a 4-channel bus +// --------------------------------------------------------------------------- +fmbus(d1,d2,d3,d4) = + op1_out, op2_out, op3_out, op4_out +with { + f1 = base_freq * r1; + f2 = base_freq * r2; + f3 = base_freq * r3; + f4 = base_freq * r4; + + op1_out = lev1 * + os.osc(f1 + (m21e*d2 + m31e*d3 + m41e*d4 + fb1e*d1) * f1); + + op2_out = lev2 * + os.osc(f2 + (m12e*d1 + m32e*d3 + m42e*d4 + fb2e*d2) * f2); + + op3_out = lev3 * + os.osc(f3 + (m13e*d1 + m23e*d2 + m43e*d4 + fb3e*d3) * f3); + + op4_out = lev4 * + os.osc(f4 + (m14e*d1 + m24e*d2 + m34e*d3 + fb4e*d4) * f4); +}; + +// Route 4-channel bus through feedback loop, sum all ops +fm_out = (fmbus ~ (si.bus(4))) : (_, _, _, _) :> _; + +// --------------------------------------------------------------------------- +// Post-processing +// --------------------------------------------------------------------------- +soft_clip(x) = x / max(0.001, 1.0 + output_saturation * abs(x)); +hp_out(x) = fi.highpass(1, output_hp, x); + +// Master amplitude destination (route an ADSR here for VCA) +amp_val = max(0.0, min(1.0, mod_amp(gate))) * master_level * vel_gain * 0.25; + +// Pan +pan_val = max(-1.0, min(1.0, master_pan + mod_pan(gate))); +pan_l = cos((pan_val + 1.0) * 0.25 * ma.PI); +pan_r = sin((pan_val + 1.0) * 0.25 * ma.PI); + +// Stereo spread via slight detuning (apply after main FM sum) +spread_cents = stereo_spread * 5.0; +spread_l = cent2ratio(spread_cents); +spread_r = cent2ratio(0.0 - spread_cents); + +mono_post = fm_out * amp_val : soft_clip : hp_out; + +signal_L = mono_post * spread_l * pan_l; +signal_R = mono_post * spread_r * pan_r; + +process = signal_L, signal_R; +""" + + +ENGINES = [ + { + "name": "subtractive", + "title": "Minimoog-style subtractive voice", + "description": "3 oscillators + noise → mixer → moog ladder filter → amp/pan.", + "destinations": SUBTRACTIVE_DESTS, + "sound_params": SUBTRACTIVE_PARAMS, + "signal_flow": SUBTRACTIVE_FLOW, + }, + { + "name": "additive", + "title": "64-partial additive voice", + "description": "64 harmonic sines with spectral descriptors (tilt, odd/even, formants).", + "destinations": ADDITIVE_DESTS, + "sound_params": ADDITIVE_PARAMS, + "signal_flow": ADDITIVE_FLOW, + }, + { + "name": "fm", + "title": "4-operator FM voice", + "description": "4 ops with 12-cell cross-mod matrix and per-op feedback.", + "destinations": FM_DESTS, + "sound_params": FM_PARAMS, + "signal_flow": FM_FLOW, + }, +] + + +# --------------------------------------------------------------------------- +# Shared matrix-emission helpers +# --------------------------------------------------------------------------- + +def src_name(s): + return f"s{s:02d}" + + +def dest_label(d, name): + return f"d{d:02d}_{name}" + + +def amt_slider_line(s, d, name): + label = f"MM_Matrix/{src_name(s)}_{dest_label(d, name)}" + varname = f"amt_{src_name(s)}_{dest_label(d, name)}" + return f'{varname} = hslider("{label}", 0.0, -1.0, 1.0, 0.001);' + + +def dest_expression(d, name): + varname = f"mod_{name}" + lines = [f"{varname}(gate) ="] + for s in range(N_SRC): + amt_var = f"amt_{src_name(s)}_{dest_label(d, name)}" + src_call = f"mp.src{s:02d}(gate)" + if s < N_SRC - 1: + lines.append(f" {src_call} * {amt_var} +") + else: + lines.append(f" {src_call} * {amt_var};") + return "\n".join(lines) + + +def gen_matrix_sliders(dests): + blocks = [] + for (d, name, _doc) in dests: + blocks.append(f"// Matrix column: destination {d} = {name}") + for s in range(N_SRC): + blocks.append(amt_slider_line(s, d, name)) + blocks.append("") + return "\n".join(blocks) + + +def gen_dest_expressions(dests): + blocks = [] + for (d, name, _doc) in dests: + blocks.append(dest_expression(d, name)) + blocks.append("") + return "\n".join(blocks) + + +def emit_engine(cfg, out_dir): + name = cfg["name"] + title = cfg["title"] + description = cfg["description"] + dests = cfg["destinations"] + sound_params = cfg["sound_params"] + signal_flow = cfg["signal_flow"] + + n_dest = len(dests) + assert n_dest == 10, f"engine {name}: expected 10 destinations, got {n_dest}" + + # Header comment with per-engine destination docs + dest_doc_lines = [] + for (d, dname, doc) in dests: + dest_doc_lines.append(f"// {d} {dname:<17} {doc}") + dest_doc = "\n".join(dest_doc_lines) + + header = f"""\ +// modular-{name}.dsp — {title} for the "Modular" mode. +// +// AUTO-GENERATED by gen-modular-dsp.py. DO NOT EDIT BY HAND. +// Regenerate with: +// cd playground/faust && python3 gen-modular-dsp.py +// +// Audio path: {description} +// All envelopes and LFOs come from mod-pool.lib via a 48-source × {n_dest}-dest +// modulation matrix. No internal envs/LFOs. +// +// Modulation destinations ({n_dest}): +{dest_doc} +// +// Hidden controls (driven by noteOn/noteOff, not by the ML engine): +// freq, gate, _vel +// +// Build: +// cd playground/faust && ./build.sh +// +// --------------------------------------------------------------------------- + +import("stdfaust.lib"); +mp = library("mod-pool.lib"); + +{HIDDEN_BLOCK} +{sound_params} +// --------------------------------------------------------------------------- +// Modulation matrix — 48 sources × {n_dest} destinations. +// Each hslider is one "amount" entry in [-1, +1]. Zero = no connection. +// Group "MM_Matrix" so the paramMeta parser can recognise matrix params. +// --------------------------------------------------------------------------- +""" + + parts = [ + header, + gen_matrix_sliders(dests), + "// ---------------------------------------------------------------------------", + "// Destination signals — one per modulation destination. Each is a 48-term", + "// weighted sum of sources × amounts. The `gate` argument is threaded through", + "// so that mp.src??(gate) can drive ADSR envelopes.", + "// ---------------------------------------------------------------------------", + "", + gen_dest_expressions(dests), + signal_flow, + ] + + out_path = os.path.join(out_dir, f"modular-{name}.dsp") + with open(out_path, "w") as f: + f.write("\n".join(parts)) + + n_matrix = N_SRC * n_dest + print(f"Wrote {out_path}") + print(f" destinations: {n_dest}") + print(f" matrix sliders: {n_matrix}") + + +def main(): + out_dir = os.path.dirname(os.path.abspath(__file__)) + for cfg in ENGINES: + emit_engine(cfg, out_dir) + + +if __name__ == "__main__": + main() diff --git a/playground/faust/mod-pool.lib b/playground/faust/mod-pool.lib new file mode 100644 index 0000000..b20cb33 --- /dev/null +++ b/playground/faust/mod-pool.lib @@ -0,0 +1,435 @@ +// mod-pool.lib — Shared modulation pool (ADSRs + LFOs) for the "Modular" mode. +// +// Provides 16 ADSR slots + 32 LFO slots that can be routed through a +// per-engine modulation matrix to any parameter in the host .dsp. +// Engines import this via: +// +// mp = library("mod-pool.lib"); +// sources = mp.sources(gate); // 48-wide parallel bus +// mod_x = sum(s, 48, sources : ba.selector(s, 48) * amount(s)); +// +// PUBLIC API +// ---------- +// +// mp.N_ADSR integer — 16 +// mp.N_LFO integer — 32 +// mp.N_SOURCES integer — 48 (= N_ADSR + N_LFO) +// +// mp.adsrs(gate) bus — 16-wide parallel bus, each element [0,1] +// mp.lfos bus — 32-wide parallel bus, each element [-1,+1] +// mp.sources(gate) bus — 48-wide parallel bus (adsrs(gate), lfos) +// +// PARAMETER NAMESPACE CONVENTION +// ------------------------------ +// All mod-pool sliders live under groups prefixed with "MM_" so that the +// paramMeta parser can segregate them from engine sound params: +// +// MM_ADSR/NN_adsrNN_{attack,decay,sustain,release,enable} (16 slots) +// MM_LFO /NN_lfoNN_{rate,morph,enable} (32 slots) +// +// Engine-side matrix sliders (declared in the engine .dsp, not in this file) +// should follow: +// +// MM_Matrix/sNN_dNN_ (48 * n_dst) +// +// where sNN = source index (0..47; 0..15 = ADSRs, 16..47 = LFOs), +// dNN = destination index, and = short destination label. +// +// MUTING +// ------ +// Each slot has an "enable" hslider (0 or 1). The slot's output is multiplied +// by the enable value so a muted slot contributes 0 at the matrix input. This +// is cheap but does NOT let Faust eliminate the underlying env/LFO compute. +// Compile-time dead-code elimination of unused slots is a future concern. +// +// LFO WAVEMORPH +// ------------- +// A single "morph" slider (0..1) crossfades through four shapes: +// +// [0.000, 0.333) : sine -> triangle +// [0.333, 0.666) : triangle -> square +// [0.666, 1.000] : square -> saw +// +// Implemented via nested ba.if so the chosen pair is a linear crossfade. +// The output is always in [-1,+1]. +// +// --------------------------------------------------------------------------- + +import("stdfaust.lib"); + +// Counts (engine code can reference mp.N_SOURCES etc.) +N_ADSR = 16; +N_LFO = 32; +N_SOURCES = 48; + +// --------------------------------------------------------------------------- +// Per-slot hslider helpers. Unique label per slot index. +// Slot indices are 1-based in labels (adsr01..adsr16, lfo01..lfo32) to keep +// alphabetical ordering stable in the Faust JSON output. +// --------------------------------------------------------------------------- + +// ADSR param factories — declared per-slot because Faust slider labels must +// be string literals known at compile time. One function per slot index. + +adsr01_a = hslider("MM_ADSR/00_adsr01_attack[scale:log]", 0.010, 0.001, 5.0, 0.001); +adsr01_d = hslider("MM_ADSR/00_adsr01_decay", 0.200, 0.001, 10.0, 0.001); +adsr01_s = hslider("MM_ADSR/00_adsr01_sustain", 0.700, 0.0, 1.0, 0.001); +adsr01_r = hslider("MM_ADSR/00_adsr01_release", 0.300, 0.01, 10.0, 0.001); +adsr01_e = hslider("MM_ADSR/00_adsr01_enable", 1.0, 0.0, 1.0, 1.0); + +adsr02_a = hslider("MM_ADSR/01_adsr02_attack[scale:log]", 0.010, 0.001, 5.0, 0.001); +adsr02_d = hslider("MM_ADSR/01_adsr02_decay", 0.200, 0.001, 10.0, 0.001); +adsr02_s = hslider("MM_ADSR/01_adsr02_sustain", 0.700, 0.0, 1.0, 0.001); +adsr02_r = hslider("MM_ADSR/01_adsr02_release", 0.300, 0.01, 10.0, 0.001); +adsr02_e = hslider("MM_ADSR/01_adsr02_enable", 0.0, 0.0, 1.0, 1.0); + +adsr03_a = hslider("MM_ADSR/02_adsr03_attack[scale:log]", 0.010, 0.001, 5.0, 0.001); +adsr03_d = hslider("MM_ADSR/02_adsr03_decay", 0.200, 0.001, 10.0, 0.001); +adsr03_s = hslider("MM_ADSR/02_adsr03_sustain", 0.700, 0.0, 1.0, 0.001); +adsr03_r = hslider("MM_ADSR/02_adsr03_release", 0.300, 0.01, 10.0, 0.001); +adsr03_e = hslider("MM_ADSR/02_adsr03_enable", 0.0, 0.0, 1.0, 1.0); + +adsr04_a = hslider("MM_ADSR/03_adsr04_attack[scale:log]", 0.010, 0.001, 5.0, 0.001); +adsr04_d = hslider("MM_ADSR/03_adsr04_decay", 0.200, 0.001, 10.0, 0.001); +adsr04_s = hslider("MM_ADSR/03_adsr04_sustain", 0.700, 0.0, 1.0, 0.001); +adsr04_r = hslider("MM_ADSR/03_adsr04_release", 0.300, 0.01, 10.0, 0.001); +adsr04_e = hslider("MM_ADSR/03_adsr04_enable", 0.0, 0.0, 1.0, 1.0); + +adsr05_a = hslider("MM_ADSR/04_adsr05_attack[scale:log]", 0.010, 0.001, 5.0, 0.001); +adsr05_d = hslider("MM_ADSR/04_adsr05_decay", 0.200, 0.001, 10.0, 0.001); +adsr05_s = hslider("MM_ADSR/04_adsr05_sustain", 0.700, 0.0, 1.0, 0.001); +adsr05_r = hslider("MM_ADSR/04_adsr05_release", 0.300, 0.01, 10.0, 0.001); +adsr05_e = hslider("MM_ADSR/04_adsr05_enable", 0.0, 0.0, 1.0, 1.0); + +adsr06_a = hslider("MM_ADSR/05_adsr06_attack[scale:log]", 0.010, 0.001, 5.0, 0.001); +adsr06_d = hslider("MM_ADSR/05_adsr06_decay", 0.200, 0.001, 10.0, 0.001); +adsr06_s = hslider("MM_ADSR/05_adsr06_sustain", 0.700, 0.0, 1.0, 0.001); +adsr06_r = hslider("MM_ADSR/05_adsr06_release", 0.300, 0.01, 10.0, 0.001); +adsr06_e = hslider("MM_ADSR/05_adsr06_enable", 0.0, 0.0, 1.0, 1.0); + +adsr07_a = hslider("MM_ADSR/06_adsr07_attack[scale:log]", 0.010, 0.001, 5.0, 0.001); +adsr07_d = hslider("MM_ADSR/06_adsr07_decay", 0.200, 0.001, 10.0, 0.001); +adsr07_s = hslider("MM_ADSR/06_adsr07_sustain", 0.700, 0.0, 1.0, 0.001); +adsr07_r = hslider("MM_ADSR/06_adsr07_release", 0.300, 0.01, 10.0, 0.001); +adsr07_e = hslider("MM_ADSR/06_adsr07_enable", 0.0, 0.0, 1.0, 1.0); + +adsr08_a = hslider("MM_ADSR/07_adsr08_attack[scale:log]", 0.010, 0.001, 5.0, 0.001); +adsr08_d = hslider("MM_ADSR/07_adsr08_decay", 0.200, 0.001, 10.0, 0.001); +adsr08_s = hslider("MM_ADSR/07_adsr08_sustain", 0.700, 0.0, 1.0, 0.001); +adsr08_r = hslider("MM_ADSR/07_adsr08_release", 0.300, 0.01, 10.0, 0.001); +adsr08_e = hslider("MM_ADSR/07_adsr08_enable", 0.0, 0.0, 1.0, 1.0); + +adsr09_a = hslider("MM_ADSR/08_adsr09_attack[scale:log]", 0.010, 0.001, 5.0, 0.001); +adsr09_d = hslider("MM_ADSR/08_adsr09_decay", 0.200, 0.001, 10.0, 0.001); +adsr09_s = hslider("MM_ADSR/08_adsr09_sustain", 0.700, 0.0, 1.0, 0.001); +adsr09_r = hslider("MM_ADSR/08_adsr09_release", 0.300, 0.01, 10.0, 0.001); +adsr09_e = hslider("MM_ADSR/08_adsr09_enable", 0.0, 0.0, 1.0, 1.0); + +adsr10_a = hslider("MM_ADSR/09_adsr10_attack[scale:log]", 0.010, 0.001, 5.0, 0.001); +adsr10_d = hslider("MM_ADSR/09_adsr10_decay", 0.200, 0.001, 10.0, 0.001); +adsr10_s = hslider("MM_ADSR/09_adsr10_sustain", 0.700, 0.0, 1.0, 0.001); +adsr10_r = hslider("MM_ADSR/09_adsr10_release", 0.300, 0.01, 10.0, 0.001); +adsr10_e = hslider("MM_ADSR/09_adsr10_enable", 0.0, 0.0, 1.0, 1.0); + +adsr11_a = hslider("MM_ADSR/10_adsr11_attack[scale:log]", 0.010, 0.001, 5.0, 0.001); +adsr11_d = hslider("MM_ADSR/10_adsr11_decay", 0.200, 0.001, 10.0, 0.001); +adsr11_s = hslider("MM_ADSR/10_adsr11_sustain", 0.700, 0.0, 1.0, 0.001); +adsr11_r = hslider("MM_ADSR/10_adsr11_release", 0.300, 0.01, 10.0, 0.001); +adsr11_e = hslider("MM_ADSR/10_adsr11_enable", 0.0, 0.0, 1.0, 1.0); + +adsr12_a = hslider("MM_ADSR/11_adsr12_attack[scale:log]", 0.010, 0.001, 5.0, 0.001); +adsr12_d = hslider("MM_ADSR/11_adsr12_decay", 0.200, 0.001, 10.0, 0.001); +adsr12_s = hslider("MM_ADSR/11_adsr12_sustain", 0.700, 0.0, 1.0, 0.001); +adsr12_r = hslider("MM_ADSR/11_adsr12_release", 0.300, 0.01, 10.0, 0.001); +adsr12_e = hslider("MM_ADSR/11_adsr12_enable", 0.0, 0.0, 1.0, 1.0); + +adsr13_a = hslider("MM_ADSR/12_adsr13_attack[scale:log]", 0.010, 0.001, 5.0, 0.001); +adsr13_d = hslider("MM_ADSR/12_adsr13_decay", 0.200, 0.001, 10.0, 0.001); +adsr13_s = hslider("MM_ADSR/12_adsr13_sustain", 0.700, 0.0, 1.0, 0.001); +adsr13_r = hslider("MM_ADSR/12_adsr13_release", 0.300, 0.01, 10.0, 0.001); +adsr13_e = hslider("MM_ADSR/12_adsr13_enable", 0.0, 0.0, 1.0, 1.0); + +adsr14_a = hslider("MM_ADSR/13_adsr14_attack[scale:log]", 0.010, 0.001, 5.0, 0.001); +adsr14_d = hslider("MM_ADSR/13_adsr14_decay", 0.200, 0.001, 10.0, 0.001); +adsr14_s = hslider("MM_ADSR/13_adsr14_sustain", 0.700, 0.0, 1.0, 0.001); +adsr14_r = hslider("MM_ADSR/13_adsr14_release", 0.300, 0.01, 10.0, 0.001); +adsr14_e = hslider("MM_ADSR/13_adsr14_enable", 0.0, 0.0, 1.0, 1.0); + +adsr15_a = hslider("MM_ADSR/14_adsr15_attack[scale:log]", 0.010, 0.001, 5.0, 0.001); +adsr15_d = hslider("MM_ADSR/14_adsr15_decay", 0.200, 0.001, 10.0, 0.001); +adsr15_s = hslider("MM_ADSR/14_adsr15_sustain", 0.700, 0.0, 1.0, 0.001); +adsr15_r = hslider("MM_ADSR/14_adsr15_release", 0.300, 0.01, 10.0, 0.001); +adsr15_e = hslider("MM_ADSR/14_adsr15_enable", 0.0, 0.0, 1.0, 1.0); + +adsr16_a = hslider("MM_ADSR/15_adsr16_attack[scale:log]", 0.010, 0.001, 5.0, 0.001); +adsr16_d = hslider("MM_ADSR/15_adsr16_decay", 0.200, 0.001, 10.0, 0.001); +adsr16_s = hslider("MM_ADSR/15_adsr16_sustain", 0.700, 0.0, 1.0, 0.001); +adsr16_r = hslider("MM_ADSR/15_adsr16_release", 0.300, 0.01, 10.0, 0.001); +adsr16_e = hslider("MM_ADSR/15_adsr16_enable", 0.0, 0.0, 1.0, 1.0); + +// Single-slot ADSR expression. The enable multiplier zeros muted slots. +adsr_slot(a, d, s, r, e, gate) = en.adsr(a, d, s, r, gate) : *(e); + +// 16-wide parallel bus of ADSR outputs. Takes the global gate as an argument +// so engines can bind their own gate signal (noteOn/noteOff). +adsrs(gate) = + adsr_slot(adsr01_a, adsr01_d, adsr01_s, adsr01_r, adsr01_e, gate), + adsr_slot(adsr02_a, adsr02_d, adsr02_s, adsr02_r, adsr02_e, gate), + adsr_slot(adsr03_a, adsr03_d, adsr03_s, adsr03_r, adsr03_e, gate), + adsr_slot(adsr04_a, adsr04_d, adsr04_s, adsr04_r, adsr04_e, gate), + adsr_slot(adsr05_a, adsr05_d, adsr05_s, adsr05_r, adsr05_e, gate), + adsr_slot(adsr06_a, adsr06_d, adsr06_s, adsr06_r, adsr06_e, gate), + adsr_slot(adsr07_a, adsr07_d, adsr07_s, adsr07_r, adsr07_e, gate), + adsr_slot(adsr08_a, adsr08_d, adsr08_s, adsr08_r, adsr08_e, gate), + adsr_slot(adsr09_a, adsr09_d, adsr09_s, adsr09_r, adsr09_e, gate), + adsr_slot(adsr10_a, adsr10_d, adsr10_s, adsr10_r, adsr10_e, gate), + adsr_slot(adsr11_a, adsr11_d, adsr11_s, adsr11_r, adsr11_e, gate), + adsr_slot(adsr12_a, adsr12_d, adsr12_s, adsr12_r, adsr12_e, gate), + adsr_slot(adsr13_a, adsr13_d, adsr13_s, adsr13_r, adsr13_e, gate), + adsr_slot(adsr14_a, adsr14_d, adsr14_s, adsr14_r, adsr14_e, gate), + adsr_slot(adsr15_a, adsr15_d, adsr15_s, adsr15_r, adsr15_e, gate), + adsr_slot(adsr16_a, adsr16_d, adsr16_s, adsr16_r, adsr16_e, gate); + +// --------------------------------------------------------------------------- +// LFO slots (32) +// --------------------------------------------------------------------------- + +lfo01_r = hslider("MM_LFO/00_lfo01_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo01_m = hslider("MM_LFO/00_lfo01_morph", 0.0, 0.0, 1.0, 0.001); +lfo01_e = hslider("MM_LFO/00_lfo01_enable", 0.0, 0.0, 1.0, 1.0); + +lfo02_r = hslider("MM_LFO/01_lfo02_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo02_m = hslider("MM_LFO/01_lfo02_morph", 0.0, 0.0, 1.0, 0.001); +lfo02_e = hslider("MM_LFO/01_lfo02_enable", 0.0, 0.0, 1.0, 1.0); + +lfo03_r = hslider("MM_LFO/02_lfo03_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo03_m = hslider("MM_LFO/02_lfo03_morph", 0.0, 0.0, 1.0, 0.001); +lfo03_e = hslider("MM_LFO/02_lfo03_enable", 0.0, 0.0, 1.0, 1.0); + +lfo04_r = hslider("MM_LFO/03_lfo04_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo04_m = hslider("MM_LFO/03_lfo04_morph", 0.0, 0.0, 1.0, 0.001); +lfo04_e = hslider("MM_LFO/03_lfo04_enable", 0.0, 0.0, 1.0, 1.0); + +lfo05_r = hslider("MM_LFO/04_lfo05_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo05_m = hslider("MM_LFO/04_lfo05_morph", 0.0, 0.0, 1.0, 0.001); +lfo05_e = hslider("MM_LFO/04_lfo05_enable", 0.0, 0.0, 1.0, 1.0); + +lfo06_r = hslider("MM_LFO/05_lfo06_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo06_m = hslider("MM_LFO/05_lfo06_morph", 0.0, 0.0, 1.0, 0.001); +lfo06_e = hslider("MM_LFO/05_lfo06_enable", 0.0, 0.0, 1.0, 1.0); + +lfo07_r = hslider("MM_LFO/06_lfo07_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo07_m = hslider("MM_LFO/06_lfo07_morph", 0.0, 0.0, 1.0, 0.001); +lfo07_e = hslider("MM_LFO/06_lfo07_enable", 0.0, 0.0, 1.0, 1.0); + +lfo08_r = hslider("MM_LFO/07_lfo08_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo08_m = hslider("MM_LFO/07_lfo08_morph", 0.0, 0.0, 1.0, 0.001); +lfo08_e = hslider("MM_LFO/07_lfo08_enable", 0.0, 0.0, 1.0, 1.0); + +lfo09_r = hslider("MM_LFO/08_lfo09_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo09_m = hslider("MM_LFO/08_lfo09_morph", 0.0, 0.0, 1.0, 0.001); +lfo09_e = hslider("MM_LFO/08_lfo09_enable", 0.0, 0.0, 1.0, 1.0); + +lfo10_r = hslider("MM_LFO/09_lfo10_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo10_m = hslider("MM_LFO/09_lfo10_morph", 0.0, 0.0, 1.0, 0.001); +lfo10_e = hslider("MM_LFO/09_lfo10_enable", 0.0, 0.0, 1.0, 1.0); + +lfo11_r = hslider("MM_LFO/10_lfo11_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo11_m = hslider("MM_LFO/10_lfo11_morph", 0.0, 0.0, 1.0, 0.001); +lfo11_e = hslider("MM_LFO/10_lfo11_enable", 0.0, 0.0, 1.0, 1.0); + +lfo12_r = hslider("MM_LFO/11_lfo12_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo12_m = hslider("MM_LFO/11_lfo12_morph", 0.0, 0.0, 1.0, 0.001); +lfo12_e = hslider("MM_LFO/11_lfo12_enable", 0.0, 0.0, 1.0, 1.0); + +lfo13_r = hslider("MM_LFO/12_lfo13_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo13_m = hslider("MM_LFO/12_lfo13_morph", 0.0, 0.0, 1.0, 0.001); +lfo13_e = hslider("MM_LFO/12_lfo13_enable", 0.0, 0.0, 1.0, 1.0); + +lfo14_r = hslider("MM_LFO/13_lfo14_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo14_m = hslider("MM_LFO/13_lfo14_morph", 0.0, 0.0, 1.0, 0.001); +lfo14_e = hslider("MM_LFO/13_lfo14_enable", 0.0, 0.0, 1.0, 1.0); + +lfo15_r = hslider("MM_LFO/14_lfo15_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo15_m = hslider("MM_LFO/14_lfo15_morph", 0.0, 0.0, 1.0, 0.001); +lfo15_e = hslider("MM_LFO/14_lfo15_enable", 0.0, 0.0, 1.0, 1.0); + +lfo16_r = hslider("MM_LFO/15_lfo16_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo16_m = hslider("MM_LFO/15_lfo16_morph", 0.0, 0.0, 1.0, 0.001); +lfo16_e = hslider("MM_LFO/15_lfo16_enable", 0.0, 0.0, 1.0, 1.0); + +lfo17_r = hslider("MM_LFO/16_lfo17_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo17_m = hslider("MM_LFO/16_lfo17_morph", 0.0, 0.0, 1.0, 0.001); +lfo17_e = hslider("MM_LFO/16_lfo17_enable", 0.0, 0.0, 1.0, 1.0); + +lfo18_r = hslider("MM_LFO/17_lfo18_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo18_m = hslider("MM_LFO/17_lfo18_morph", 0.0, 0.0, 1.0, 0.001); +lfo18_e = hslider("MM_LFO/17_lfo18_enable", 0.0, 0.0, 1.0, 1.0); + +lfo19_r = hslider("MM_LFO/18_lfo19_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo19_m = hslider("MM_LFO/18_lfo19_morph", 0.0, 0.0, 1.0, 0.001); +lfo19_e = hslider("MM_LFO/18_lfo19_enable", 0.0, 0.0, 1.0, 1.0); + +lfo20_r = hslider("MM_LFO/19_lfo20_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo20_m = hslider("MM_LFO/19_lfo20_morph", 0.0, 0.0, 1.0, 0.001); +lfo20_e = hslider("MM_LFO/19_lfo20_enable", 0.0, 0.0, 1.0, 1.0); + +lfo21_r = hslider("MM_LFO/20_lfo21_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo21_m = hslider("MM_LFO/20_lfo21_morph", 0.0, 0.0, 1.0, 0.001); +lfo21_e = hslider("MM_LFO/20_lfo21_enable", 0.0, 0.0, 1.0, 1.0); + +lfo22_r = hslider("MM_LFO/21_lfo22_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo22_m = hslider("MM_LFO/21_lfo22_morph", 0.0, 0.0, 1.0, 0.001); +lfo22_e = hslider("MM_LFO/21_lfo22_enable", 0.0, 0.0, 1.0, 1.0); + +lfo23_r = hslider("MM_LFO/22_lfo23_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo23_m = hslider("MM_LFO/22_lfo23_morph", 0.0, 0.0, 1.0, 0.001); +lfo23_e = hslider("MM_LFO/22_lfo23_enable", 0.0, 0.0, 1.0, 1.0); + +lfo24_r = hslider("MM_LFO/23_lfo24_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo24_m = hslider("MM_LFO/23_lfo24_morph", 0.0, 0.0, 1.0, 0.001); +lfo24_e = hslider("MM_LFO/23_lfo24_enable", 0.0, 0.0, 1.0, 1.0); + +lfo25_r = hslider("MM_LFO/24_lfo25_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo25_m = hslider("MM_LFO/24_lfo25_morph", 0.0, 0.0, 1.0, 0.001); +lfo25_e = hslider("MM_LFO/24_lfo25_enable", 0.0, 0.0, 1.0, 1.0); + +lfo26_r = hslider("MM_LFO/25_lfo26_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo26_m = hslider("MM_LFO/25_lfo26_morph", 0.0, 0.0, 1.0, 0.001); +lfo26_e = hslider("MM_LFO/25_lfo26_enable", 0.0, 0.0, 1.0, 1.0); + +lfo27_r = hslider("MM_LFO/26_lfo27_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo27_m = hslider("MM_LFO/26_lfo27_morph", 0.0, 0.0, 1.0, 0.001); +lfo27_e = hslider("MM_LFO/26_lfo27_enable", 0.0, 0.0, 1.0, 1.0); + +lfo28_r = hslider("MM_LFO/27_lfo28_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo28_m = hslider("MM_LFO/27_lfo28_morph", 0.0, 0.0, 1.0, 0.001); +lfo28_e = hslider("MM_LFO/27_lfo28_enable", 0.0, 0.0, 1.0, 1.0); + +lfo29_r = hslider("MM_LFO/28_lfo29_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo29_m = hslider("MM_LFO/28_lfo29_morph", 0.0, 0.0, 1.0, 0.001); +lfo29_e = hslider("MM_LFO/28_lfo29_enable", 0.0, 0.0, 1.0, 1.0); + +lfo30_r = hslider("MM_LFO/29_lfo30_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo30_m = hslider("MM_LFO/29_lfo30_morph", 0.0, 0.0, 1.0, 0.001); +lfo30_e = hslider("MM_LFO/29_lfo30_enable", 0.0, 0.0, 1.0, 1.0); + +lfo31_r = hslider("MM_LFO/30_lfo31_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo31_m = hslider("MM_LFO/30_lfo31_morph", 0.0, 0.0, 1.0, 0.001); +lfo31_e = hslider("MM_LFO/30_lfo31_enable", 0.0, 0.0, 1.0, 1.0); + +lfo32_r = hslider("MM_LFO/31_lfo32_rate[scale:log]", 1.0, 0.01, 20.0, 0.001); +lfo32_m = hslider("MM_LFO/31_lfo32_morph", 0.0, 0.0, 1.0, 0.001); +lfo32_e = hslider("MM_LFO/31_lfo32_enable", 0.0, 0.0, 1.0, 1.0); + +// Wavemorph — 0..1 crossfades sine -> triangle -> square -> saw. +// Uses nested ba.if. Each shape is already in [-1,+1]. +wavemorph(rate, morph) = + ba.if(morph < 0.333, + (1.0 - morph*3.0) * os.osc(rate) + (morph*3.0) * os.lf_triangle(rate), + ba.if(morph < 0.666, + (1.0 - (morph-0.333)*3.0) * os.lf_triangle(rate) + ((morph-0.333)*3.0) * os.lf_squarewave(rate), + (1.0 - (morph-0.666)*3.0) * os.lf_squarewave(rate) + ((morph-0.666)*3.0) * os.lf_saw(rate))); + +lfo_slot(rate, morph, en_flag) = wavemorph(rate, morph) : *(en_flag); + +lfos = + lfo_slot(lfo01_r, lfo01_m, lfo01_e), + lfo_slot(lfo02_r, lfo02_m, lfo02_e), + lfo_slot(lfo03_r, lfo03_m, lfo03_e), + lfo_slot(lfo04_r, lfo04_m, lfo04_e), + lfo_slot(lfo05_r, lfo05_m, lfo05_e), + lfo_slot(lfo06_r, lfo06_m, lfo06_e), + lfo_slot(lfo07_r, lfo07_m, lfo07_e), + lfo_slot(lfo08_r, lfo08_m, lfo08_e), + lfo_slot(lfo09_r, lfo09_m, lfo09_e), + lfo_slot(lfo10_r, lfo10_m, lfo10_e), + lfo_slot(lfo11_r, lfo11_m, lfo11_e), + lfo_slot(lfo12_r, lfo12_m, lfo12_e), + lfo_slot(lfo13_r, lfo13_m, lfo13_e), + lfo_slot(lfo14_r, lfo14_m, lfo14_e), + lfo_slot(lfo15_r, lfo15_m, lfo15_e), + lfo_slot(lfo16_r, lfo16_m, lfo16_e), + lfo_slot(lfo17_r, lfo17_m, lfo17_e), + lfo_slot(lfo18_r, lfo18_m, lfo18_e), + lfo_slot(lfo19_r, lfo19_m, lfo19_e), + lfo_slot(lfo20_r, lfo20_m, lfo20_e), + lfo_slot(lfo21_r, lfo21_m, lfo21_e), + lfo_slot(lfo22_r, lfo22_m, lfo22_e), + lfo_slot(lfo23_r, lfo23_m, lfo23_e), + lfo_slot(lfo24_r, lfo24_m, lfo24_e), + lfo_slot(lfo25_r, lfo25_m, lfo25_e), + lfo_slot(lfo26_r, lfo26_m, lfo26_e), + lfo_slot(lfo27_r, lfo27_m, lfo27_e), + lfo_slot(lfo28_r, lfo28_m, lfo28_e), + lfo_slot(lfo29_r, lfo29_m, lfo29_e), + lfo_slot(lfo30_r, lfo30_m, lfo30_e), + lfo_slot(lfo31_r, lfo31_m, lfo31_e), + lfo_slot(lfo32_r, lfo32_m, lfo32_e); + +// --------------------------------------------------------------------------- +// sources(gate) — concatenated 48-wide mod-source bus. +// Order: adsr01..adsr16, lfo01..lfo32 +// --------------------------------------------------------------------------- + +sources(gate) = adsrs(gate), lfos; + +// --------------------------------------------------------------------------- +// Individual named source functions — 48 total, in canonical order. +// Engines can reference these directly in matrix sums, since each hslider +// inside a matrix amount must have a unique compile-time label. +// +// Canonical source ordering (source index 0..47): +// 0..15 : adsr01..adsr16 +// 16..47 : lfo01..lfo32 +// --------------------------------------------------------------------------- + +src00(gate) = adsr_slot(adsr01_a, adsr01_d, adsr01_s, adsr01_r, adsr01_e, gate); +src01(gate) = adsr_slot(adsr02_a, adsr02_d, adsr02_s, adsr02_r, adsr02_e, gate); +src02(gate) = adsr_slot(adsr03_a, adsr03_d, adsr03_s, adsr03_r, adsr03_e, gate); +src03(gate) = adsr_slot(adsr04_a, adsr04_d, adsr04_s, adsr04_r, adsr04_e, gate); +src04(gate) = adsr_slot(adsr05_a, adsr05_d, adsr05_s, adsr05_r, adsr05_e, gate); +src05(gate) = adsr_slot(adsr06_a, adsr06_d, adsr06_s, adsr06_r, adsr06_e, gate); +src06(gate) = adsr_slot(adsr07_a, adsr07_d, adsr07_s, adsr07_r, adsr07_e, gate); +src07(gate) = adsr_slot(adsr08_a, adsr08_d, adsr08_s, adsr08_r, adsr08_e, gate); +src08(gate) = adsr_slot(adsr09_a, adsr09_d, adsr09_s, adsr09_r, adsr09_e, gate); +src09(gate) = adsr_slot(adsr10_a, adsr10_d, adsr10_s, adsr10_r, adsr10_e, gate); +src10(gate) = adsr_slot(adsr11_a, adsr11_d, adsr11_s, adsr11_r, adsr11_e, gate); +src11(gate) = adsr_slot(adsr12_a, adsr12_d, adsr12_s, adsr12_r, adsr12_e, gate); +src12(gate) = adsr_slot(adsr13_a, adsr13_d, adsr13_s, adsr13_r, adsr13_e, gate); +src13(gate) = adsr_slot(adsr14_a, adsr14_d, adsr14_s, adsr14_r, adsr14_e, gate); +src14(gate) = adsr_slot(adsr15_a, adsr15_d, adsr15_s, adsr15_r, adsr15_e, gate); +src15(gate) = adsr_slot(adsr16_a, adsr16_d, adsr16_s, adsr16_r, adsr16_e, gate); + +src16(gate) = lfo_slot(lfo01_r, lfo01_m, lfo01_e); +src17(gate) = lfo_slot(lfo02_r, lfo02_m, lfo02_e); +src18(gate) = lfo_slot(lfo03_r, lfo03_m, lfo03_e); +src19(gate) = lfo_slot(lfo04_r, lfo04_m, lfo04_e); +src20(gate) = lfo_slot(lfo05_r, lfo05_m, lfo05_e); +src21(gate) = lfo_slot(lfo06_r, lfo06_m, lfo06_e); +src22(gate) = lfo_slot(lfo07_r, lfo07_m, lfo07_e); +src23(gate) = lfo_slot(lfo08_r, lfo08_m, lfo08_e); +src24(gate) = lfo_slot(lfo09_r, lfo09_m, lfo09_e); +src25(gate) = lfo_slot(lfo10_r, lfo10_m, lfo10_e); +src26(gate) = lfo_slot(lfo11_r, lfo11_m, lfo11_e); +src27(gate) = lfo_slot(lfo12_r, lfo12_m, lfo12_e); +src28(gate) = lfo_slot(lfo13_r, lfo13_m, lfo13_e); +src29(gate) = lfo_slot(lfo14_r, lfo14_m, lfo14_e); +src30(gate) = lfo_slot(lfo15_r, lfo15_m, lfo15_e); +src31(gate) = lfo_slot(lfo16_r, lfo16_m, lfo16_e); +src32(gate) = lfo_slot(lfo17_r, lfo17_m, lfo17_e); +src33(gate) = lfo_slot(lfo18_r, lfo18_m, lfo18_e); +src34(gate) = lfo_slot(lfo19_r, lfo19_m, lfo19_e); +src35(gate) = lfo_slot(lfo20_r, lfo20_m, lfo20_e); +src36(gate) = lfo_slot(lfo21_r, lfo21_m, lfo21_e); +src37(gate) = lfo_slot(lfo22_r, lfo22_m, lfo22_e); +src38(gate) = lfo_slot(lfo23_r, lfo23_m, lfo23_e); +src39(gate) = lfo_slot(lfo24_r, lfo24_m, lfo24_e); +src40(gate) = lfo_slot(lfo25_r, lfo25_m, lfo25_e); +src41(gate) = lfo_slot(lfo26_r, lfo26_m, lfo26_e); +src42(gate) = lfo_slot(lfo27_r, lfo27_m, lfo27_e); +src43(gate) = lfo_slot(lfo28_r, lfo28_m, lfo28_e); +src44(gate) = lfo_slot(lfo29_r, lfo29_m, lfo29_e); +src45(gate) = lfo_slot(lfo30_r, lfo30_m, lfo30_e); +src46(gate) = lfo_slot(lfo31_r, lfo31_m, lfo31_e); +src47(gate) = lfo_slot(lfo32_r, lfo32_m, lfo32_e); diff --git a/playground/faust/modular-additive-processor.js b/playground/faust/modular-additive-processor.js new file mode 100644 index 0000000..8048889 --- /dev/null +++ b/playground/faust/modular-additive-processor.js @@ -0,0 +1,257 @@ +/** + * modular-additive-processor.js — AudioWorklet processor for the + * "Modular" mode additive voice (modular-additive.dsp). + * + * Extends FaustWorkletProcessor (faust-worklet-processor.js). + * Loads modular-subtractive.wasm compiled by `faust -lang wasm`. + * + * Param-index strategy: + * modular-additive.dsp has ~700 parameters (25 engine + 80 ADSR + 96 LFO + * + 480 matrix + 3 hidden). Hand-maintained zone tables (additive-processor + * style) do not scale. Instead we use the wasm-native JSON descriptor + * produced by `faust -lang wasm`, which has a numeric `index` field on each + * leaf item. That index is the direct memory offset that setParamValue + * expects as its zone argument — no sentinel scanning, no address strings. + * + * The main thread fetches modular-additive.json, parses it, and passes + * the UI tree to the worklet via the init message. + * + * Calling convention (faust -lang wasm, single-instance): + * init(dsp, sampleRate) dsp is always 0 + * compute(dsp, n, inputs, outputs) + * setParamValue(dsp, zone, value) zone = numeric memory address from JSON + * getParamValue(dsp, zone) -> float + * + * Hidden params (not in the engine's ML-controllable list): + * 0_Hidden/freq — set by noteOn + * 0_Hidden/gate — set by noteOn/noteOff (button, value 0/1) + * 0_Hidden/_vel — set by noteOn + */ + +// Must be imported in AudioWorkletGlobalScope — include faust-worklet-processor.js +// via audioCtx.audioWorklet.addModule() before this file. + +const DSP = 0; +const BLOCK_SIZE = 128; + +class ModularAdditiveProcessor extends FaustWorkletProcessor { + constructor(options) { + super(options); + this._dspInst = null; + this._dspMemory = null; // live Float32Array view + this._sampleRate = 48000; + + // Zone tables, populated once the init message has been processed. + this._paramZones = []; // NISPS index (order from JSON walk) -> zone + this._paramZonesByLabel = {}; // label -> zone (for smoke test) + this._hiddenZones = {}; // {freq, gate, _vel} -> zone + + // Audio output buffer pointers + this._outPtrsAddr = 0; + this._outLAddr = 0; + this._outRAddr = 0; + } + + // --------------------------------------------------------------------------- + // _initWasm — called by FaustWorkletProcessor.handleMessage on 'init'. + // + // Extra fields on the init message: + // uiJson — parsed Faust UI descriptor (the .json file contents) for + // zone discovery. Faust's -lang wasm embeds numeric `index` + // fields that we use directly as zone memory addresses. + // --------------------------------------------------------------------------- + + async _initWasm(wasmBytes, sampleRate, uiJson) { + this._sampleRate = sampleRate; + + const importObj = { + env: { + _sinf: Math.sin, + _cosf: Math.cos, + _tanf: Math.tan, + _expf: Math.exp, + _logf: Math.log, + _log10f: Math.log10, + _powf: Math.pow, + _tanhf: Math.tanh, + _sqrtf: Math.sqrt, + _fabsf: Math.abs, + _floorf: Math.floor, + _ceilf: Math.ceil, + _remainderf: (a, b) => a - Math.round(a / b) * b, + _fmodf: (a, b) => a % b, + _roundf: Math.round, + _truncf: Math.trunc, + _acosf: Math.acos, + _asinf: Math.asin, + _atanf: Math.atan, + _atan2f: Math.atan2, + }, + }; + + const result = await WebAssembly.instantiate(wasmBytes, importObj); + this._dspInst = result.instance; + const ex = this._dspInst.exports; + + // Grow memory by 2 pages (128 KB) so the output buffer region sits past + // Faust's allocated parameter zones. After growth we have at least + // 3 * BLOCK_SIZE * 4 bytes of scratch at the high end of memory. + ex.memory.grow(2); + + this._dspMemory = new Float32Array(ex.memory.buffer); + + // Initialise the DSP instance (single-instance convention: dsp = 0) + ex.init(DSP, sampleRate); + + // Allocate output buffers at the top of WASM memory. + const memBytes = ex.memory.buffer.byteLength; + this._outLAddr = memBytes - BLOCK_SIZE * 4 * 3; + this._outRAddr = this._outLAddr + BLOCK_SIZE * 4; + this._outPtrsAddr = this._outRAddr + BLOCK_SIZE * 4; + + const u32 = new Uint32Array(ex.memory.buffer); + u32[this._outPtrsAddr / 4] = this._outLAddr; + u32[this._outPtrsAddr / 4 + 1] = this._outRAddr; + + // Refresh the float view after any potential reallocation + this._dspMemory = new Float32Array(ex.memory.buffer); + + // Build the zone index from the JSON we were passed. + if (uiJson) { + this._buildZoneIndexFromJson(uiJson); + } else { + console.warn('[ModularAdditiveProcessor] no uiJson in init message — ' + + 'setParam will silently no-op.'); + } + } + + // ------------------------------------------------------------------------- + // _buildZoneIndexFromJson — walk the Faust UI tree and collect numeric + // zone indexes, separating hidden params from the main NISPS-controllable + // list. Preserves the UI tree's traversal order, which matches the order + // the playground's faustJsonToParamMeta() parser will produce. + // ------------------------------------------------------------------------- + + _buildZoneIndexFromJson(faustJson) { + const HIDDEN_TAIL = new Set(['freq', 'gate', '_vel']); + const zones = []; + const byLabel = {}; + const hidden = {}; + + const walk = (items) => { + if (!Array.isArray(items)) return; + for (const item of items) { + const type = item?.type; + if (type === 'hslider' || type === 'vslider' || + type === 'nentry' || type === 'button' || + type === 'checkbox') { + const label = item.label ?? ''; + const idx = item.index; + if (typeof idx !== 'number') continue; + + const hasHiddenMeta = Array.isArray(item.meta) && + item.meta.some(m => m.hidden === '1' || m.hidden === 1); + const tail = label.includes('/') ? label.split('/').pop() : label; + + if (hasHiddenMeta || HIDDEN_TAIL.has(tail)) { + hidden[tail] = idx; + } else { + zones.push(idx); + byLabel[label] = idx; + } + } else if (item?.items) { + walk(item.items); + } + } + }; + + walk(faustJson.ui ?? []); + + this._paramZones = zones; + this._paramZonesByLabel = byLabel; + this._hiddenZones = hidden; + } + + // ------------------------------------------------------------------------- + // _onSetParam — look up the zone by NISPS index and poke the DSP + // ------------------------------------------------------------------------- + + _onSetParam(index, value) { + if (!this._dspInst) return; + const zone = this._paramZones[index]; + if (zone === undefined) return; + this._dspInst.exports.setParamValue(DSP, zone, value); + } + + _onNoteOn(freq, vel) { + if (!this._dspInst) return; + const ex = this._dspInst.exports; + const z = this._hiddenZones; + if (z.freq !== undefined) ex.setParamValue(DSP, z.freq, freq); + if (z._vel !== undefined) ex.setParamValue(DSP, z._vel, vel ?? 0.7); + if (z.gate !== undefined) ex.setParamValue(DSP, z.gate, 1.0); + } + + _onNoteOff(_freq) { + if (!this._dspInst) return; + const z = this._hiddenZones; + if (z.gate !== undefined) { + this._dspInst.exports.setParamValue(DSP, z.gate, 0.0); + } + } + + // ------------------------------------------------------------------------- + // Extended message handling — override for setByLabel + init-with-json + // ------------------------------------------------------------------------- + + _handleMessage(msg) { + if (!msg || !msg.type) return; + + if (msg.type === 'init') { + // Override the base class's init path so we can thread `uiJson` through. + this._initWasm(msg.wasmBytes, msg.sampleRate || sampleRate, msg.uiJson) + .then(() => { + this._ready = true; + this.port.postMessage({ type: 'ready' }); + this._drainPendingMessages(); + }) + .catch((err) => { + this.port.postMessage({ type: 'error', message: String(err) }); + }); + return; + } + + // Buffer anything that arrives before init() finishes. See + // faust-worklet-processor.js._queueIfNotReady. + if (this._queueIfNotReady(msg)) return; + + if (msg.type === 'setByLabel') { + const zone = this._paramZonesByLabel[msg.label]; + if (zone !== undefined) { + this._dspInst.exports.setParamValue(DSP, zone, msg.value); + } + return; + } + + // Delegate everything else (setParam, noteOn, noteOff) to the base class. + super._handleMessage(msg); + } + + // ------------------------------------------------------------------------- + // _renderBlock — call Faust compute, copy output buffers + // ------------------------------------------------------------------------- + + _renderBlock(outL, outR, blockSize) { + if (!this._dspInst || !this._dspMemory) return; + + const ex = this._dspInst.exports; + ex.compute(DSP, blockSize, 0, this._outPtrsAddr); + + const wL = new Float32Array(ex.memory.buffer, this._outLAddr, blockSize); + const wR = new Float32Array(ex.memory.buffer, this._outRAddr, blockSize); + outL.set(wL); + outR.set(wR); + } +} + +registerProcessor('modular-additive-processor', ModularAdditiveProcessor); diff --git a/playground/faust/modular-additive.dsp b/playground/faust/modular-additive.dsp new file mode 100644 index 0000000..5227633 --- /dev/null +++ b/playground/faust/modular-additive.dsp @@ -0,0 +1,1209 @@ +// modular-additive.dsp — 64-partial additive voice for the "Modular" mode. +// +// AUTO-GENERATED by gen-modular-dsp.py. DO NOT EDIT BY HAND. +// Regenerate with: +// cd playground/faust && python3 gen-modular-dsp.py +// +// Audio path: 64 harmonic sines with spectral descriptors (tilt, odd/even, formants). +// All envelopes and LFOs come from mod-pool.lib via a 48-source × 10-dest +// modulation matrix. No internal envs/LFOs. +// +// Modulation destinations (10): +// 0 pitch semitones, applied to the fundamental frequency +// 1 bright high-partial group amplitude boost/cut (replaces bright env) +// 2 tilt added to spectral_tilt knob +// 3 inharmonicity added to inharmonicity knob +// 4 odd_even added to odd/even balance knob +// 5 formant_ctr shifts both formant centre frequencies (harmonic index) +// 6 formant_depth added to formant_depth knob +// 7 noise_mix added to noise_floor knob (clamped 0..1) +// 8 amp master amplitude dest (route an ADSR here for a VCA env) +// 9 pan stereo balance +// +// Hidden controls (driven by noteOn/noteOff, not by the ML engine): +// freq, gate, _vel +// +// Build: +// cd playground/faust && ./build.sh +// +// --------------------------------------------------------------------------- + +import("stdfaust.lib"); +mp = library("mod-pool.lib"); + +// --------------------------------------------------------------------------- +// Hidden controls +// --------------------------------------------------------------------------- +freq = hslider("0_Hidden/freq[hidden:1][unit:Hz]", 220, 20, 4000, 0.01); +gate = button("0_Hidden/gate[hidden:1]"); +vel = hslider("0_Hidden/_vel[hidden:1]", 0.7, 0.0, 1.0, 0.001) : si.smoo; + +// --------------------------------------------------------------------------- +// Group 1 — Spectral Shape (harmonic bank + descriptors) +// --------------------------------------------------------------------------- +h1_amp = hslider("1_Spectral/00_h1_amp", 0.8, 0.0, 1.0, 0.001); +h2_amp = hslider("1_Spectral/01_h2_amp", 0.5, 0.0, 1.0, 0.001); +h3_amp = hslider("1_Spectral/02_h3_amp", 0.35, 0.0, 1.0, 0.001); +h4_amp = hslider("1_Spectral/03_h4_amp", 0.25, 0.0, 1.0, 0.001); +h5_amp = hslider("1_Spectral/04_h5_amp", 0.18, 0.0, 1.0, 0.001); +h6_amp = hslider("1_Spectral/05_h6_amp", 0.12, 0.0, 1.0, 0.001); +h7_amp = hslider("1_Spectral/06_h7_amp", 0.08, 0.0, 1.0, 0.001); +h8_amp = hslider("1_Spectral/07_h8_amp", 0.06, 0.0, 1.0, 0.001); +h9_16_amp = hslider("1_Spectral/08_h9_16_amp", 0.05, 0.0, 1.0, 0.001); +h17_32_amp = hslider("1_Spectral/09_h17_32_amp", 0.025, 0.0, 1.0, 0.001); +h33_64_amp = hslider("1_Spectral/10_h33_64_amp", 0.01, 0.0, 1.0, 0.001); +spectral_tilt = hslider("1_Spectral/11_spectral_tilt", 0.0, -1.0, 1.0, 0.001); +inharmonicity = hslider("1_Spectral/12_inharmonicity", 0.0, 0.0, 0.15, 0.0001); +odd_even = hslider("1_Spectral/13_odd_even", 0.5, 0.0, 1.0, 0.001); + +// --------------------------------------------------------------------------- +// Group 2 — Formants & Noise +// --------------------------------------------------------------------------- +formant1_freq = hslider("2_Formants/00_formant1_freq[tooltip:Formant 1 harmonic idx]", 3.0, 1.0, 16.0, 0.01); +formant2_freq = hslider("2_Formants/01_formant2_freq[tooltip:Formant 2 harmonic idx]", 6.0, 1.0, 16.0, 0.01); +formant_depth = hslider("2_Formants/02_formant_depth", 0.0, 0.0, 1.0, 0.001); +noise_floor = hslider("2_Formants/03_noise_floor", 0.0, 0.0, 0.2, 0.001); +noise_color = hslider("2_Formants/04_noise_color", 0.5, 0.0, 1.0, 0.001); +sub_harmonic = hslider("2_Formants/05_sub_harmonic", 0.0, 0.0, 1.0, 0.001); + +// --------------------------------------------------------------------------- +// Group 3 — Master +// --------------------------------------------------------------------------- +level = hslider("3_Master/00_level", 0.7, 0.0, 1.0, 0.001); +fine_tune = hslider("3_Master/01_fine_tune[unit:ct]", 0.0, -50.0, 50.0, 0.1); +saturation = hslider("3_Master/02_saturation", 0.0, 0.0, 1.0, 0.001); +stereo_phase_spread= hslider("3_Master/03_stereo_phase_spread",0.1, 0.0, 1.0, 0.001); +master_pan = hslider("3_Master/04_master_pan", 0.0, -1.0, 1.0, 0.001); + +// --------------------------------------------------------------------------- +// Modulation matrix — 48 sources × 10 destinations. +// Each hslider is one "amount" entry in [-1, +1]. Zero = no connection. +// Group "MM_Matrix" so the paramMeta parser can recognise matrix params. +// --------------------------------------------------------------------------- + +// Matrix column: destination 0 = pitch +amt_s00_d00_pitch = hslider("MM_Matrix/s00_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s01_d00_pitch = hslider("MM_Matrix/s01_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s02_d00_pitch = hslider("MM_Matrix/s02_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s03_d00_pitch = hslider("MM_Matrix/s03_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s04_d00_pitch = hslider("MM_Matrix/s04_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s05_d00_pitch = hslider("MM_Matrix/s05_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s06_d00_pitch = hslider("MM_Matrix/s06_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s07_d00_pitch = hslider("MM_Matrix/s07_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s08_d00_pitch = hslider("MM_Matrix/s08_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s09_d00_pitch = hslider("MM_Matrix/s09_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s10_d00_pitch = hslider("MM_Matrix/s10_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s11_d00_pitch = hslider("MM_Matrix/s11_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s12_d00_pitch = hslider("MM_Matrix/s12_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s13_d00_pitch = hslider("MM_Matrix/s13_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s14_d00_pitch = hslider("MM_Matrix/s14_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s15_d00_pitch = hslider("MM_Matrix/s15_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s16_d00_pitch = hslider("MM_Matrix/s16_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s17_d00_pitch = hslider("MM_Matrix/s17_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s18_d00_pitch = hslider("MM_Matrix/s18_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s19_d00_pitch = hslider("MM_Matrix/s19_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s20_d00_pitch = hslider("MM_Matrix/s20_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s21_d00_pitch = hslider("MM_Matrix/s21_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s22_d00_pitch = hslider("MM_Matrix/s22_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s23_d00_pitch = hslider("MM_Matrix/s23_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s24_d00_pitch = hslider("MM_Matrix/s24_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s25_d00_pitch = hslider("MM_Matrix/s25_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s26_d00_pitch = hslider("MM_Matrix/s26_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s27_d00_pitch = hslider("MM_Matrix/s27_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s28_d00_pitch = hslider("MM_Matrix/s28_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s29_d00_pitch = hslider("MM_Matrix/s29_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s30_d00_pitch = hslider("MM_Matrix/s30_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s31_d00_pitch = hslider("MM_Matrix/s31_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s32_d00_pitch = hslider("MM_Matrix/s32_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s33_d00_pitch = hslider("MM_Matrix/s33_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s34_d00_pitch = hslider("MM_Matrix/s34_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s35_d00_pitch = hslider("MM_Matrix/s35_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s36_d00_pitch = hslider("MM_Matrix/s36_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s37_d00_pitch = hslider("MM_Matrix/s37_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s38_d00_pitch = hslider("MM_Matrix/s38_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s39_d00_pitch = hslider("MM_Matrix/s39_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s40_d00_pitch = hslider("MM_Matrix/s40_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s41_d00_pitch = hslider("MM_Matrix/s41_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s42_d00_pitch = hslider("MM_Matrix/s42_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s43_d00_pitch = hslider("MM_Matrix/s43_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s44_d00_pitch = hslider("MM_Matrix/s44_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s45_d00_pitch = hslider("MM_Matrix/s45_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s46_d00_pitch = hslider("MM_Matrix/s46_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s47_d00_pitch = hslider("MM_Matrix/s47_d00_pitch", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 1 = bright +amt_s00_d01_bright = hslider("MM_Matrix/s00_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s01_d01_bright = hslider("MM_Matrix/s01_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s02_d01_bright = hslider("MM_Matrix/s02_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s03_d01_bright = hslider("MM_Matrix/s03_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s04_d01_bright = hslider("MM_Matrix/s04_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s05_d01_bright = hslider("MM_Matrix/s05_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s06_d01_bright = hslider("MM_Matrix/s06_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s07_d01_bright = hslider("MM_Matrix/s07_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s08_d01_bright = hslider("MM_Matrix/s08_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s09_d01_bright = hslider("MM_Matrix/s09_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s10_d01_bright = hslider("MM_Matrix/s10_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s11_d01_bright = hslider("MM_Matrix/s11_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s12_d01_bright = hslider("MM_Matrix/s12_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s13_d01_bright = hslider("MM_Matrix/s13_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s14_d01_bright = hslider("MM_Matrix/s14_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s15_d01_bright = hslider("MM_Matrix/s15_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s16_d01_bright = hslider("MM_Matrix/s16_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s17_d01_bright = hslider("MM_Matrix/s17_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s18_d01_bright = hslider("MM_Matrix/s18_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s19_d01_bright = hslider("MM_Matrix/s19_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s20_d01_bright = hslider("MM_Matrix/s20_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s21_d01_bright = hslider("MM_Matrix/s21_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s22_d01_bright = hslider("MM_Matrix/s22_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s23_d01_bright = hslider("MM_Matrix/s23_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s24_d01_bright = hslider("MM_Matrix/s24_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s25_d01_bright = hslider("MM_Matrix/s25_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s26_d01_bright = hslider("MM_Matrix/s26_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s27_d01_bright = hslider("MM_Matrix/s27_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s28_d01_bright = hslider("MM_Matrix/s28_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s29_d01_bright = hslider("MM_Matrix/s29_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s30_d01_bright = hslider("MM_Matrix/s30_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s31_d01_bright = hslider("MM_Matrix/s31_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s32_d01_bright = hslider("MM_Matrix/s32_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s33_d01_bright = hslider("MM_Matrix/s33_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s34_d01_bright = hslider("MM_Matrix/s34_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s35_d01_bright = hslider("MM_Matrix/s35_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s36_d01_bright = hslider("MM_Matrix/s36_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s37_d01_bright = hslider("MM_Matrix/s37_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s38_d01_bright = hslider("MM_Matrix/s38_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s39_d01_bright = hslider("MM_Matrix/s39_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s40_d01_bright = hslider("MM_Matrix/s40_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s41_d01_bright = hslider("MM_Matrix/s41_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s42_d01_bright = hslider("MM_Matrix/s42_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s43_d01_bright = hslider("MM_Matrix/s43_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s44_d01_bright = hslider("MM_Matrix/s44_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s45_d01_bright = hslider("MM_Matrix/s45_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s46_d01_bright = hslider("MM_Matrix/s46_d01_bright", 0.0, -1.0, 1.0, 0.001); +amt_s47_d01_bright = hslider("MM_Matrix/s47_d01_bright", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 2 = tilt +amt_s00_d02_tilt = hslider("MM_Matrix/s00_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s01_d02_tilt = hslider("MM_Matrix/s01_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s02_d02_tilt = hslider("MM_Matrix/s02_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s03_d02_tilt = hslider("MM_Matrix/s03_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s04_d02_tilt = hslider("MM_Matrix/s04_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s05_d02_tilt = hslider("MM_Matrix/s05_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s06_d02_tilt = hslider("MM_Matrix/s06_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s07_d02_tilt = hslider("MM_Matrix/s07_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s08_d02_tilt = hslider("MM_Matrix/s08_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s09_d02_tilt = hslider("MM_Matrix/s09_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s10_d02_tilt = hslider("MM_Matrix/s10_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s11_d02_tilt = hslider("MM_Matrix/s11_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s12_d02_tilt = hslider("MM_Matrix/s12_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s13_d02_tilt = hslider("MM_Matrix/s13_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s14_d02_tilt = hslider("MM_Matrix/s14_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s15_d02_tilt = hslider("MM_Matrix/s15_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s16_d02_tilt = hslider("MM_Matrix/s16_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s17_d02_tilt = hslider("MM_Matrix/s17_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s18_d02_tilt = hslider("MM_Matrix/s18_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s19_d02_tilt = hslider("MM_Matrix/s19_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s20_d02_tilt = hslider("MM_Matrix/s20_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s21_d02_tilt = hslider("MM_Matrix/s21_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s22_d02_tilt = hslider("MM_Matrix/s22_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s23_d02_tilt = hslider("MM_Matrix/s23_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s24_d02_tilt = hslider("MM_Matrix/s24_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s25_d02_tilt = hslider("MM_Matrix/s25_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s26_d02_tilt = hslider("MM_Matrix/s26_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s27_d02_tilt = hslider("MM_Matrix/s27_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s28_d02_tilt = hslider("MM_Matrix/s28_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s29_d02_tilt = hslider("MM_Matrix/s29_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s30_d02_tilt = hslider("MM_Matrix/s30_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s31_d02_tilt = hslider("MM_Matrix/s31_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s32_d02_tilt = hslider("MM_Matrix/s32_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s33_d02_tilt = hslider("MM_Matrix/s33_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s34_d02_tilt = hslider("MM_Matrix/s34_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s35_d02_tilt = hslider("MM_Matrix/s35_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s36_d02_tilt = hslider("MM_Matrix/s36_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s37_d02_tilt = hslider("MM_Matrix/s37_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s38_d02_tilt = hslider("MM_Matrix/s38_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s39_d02_tilt = hslider("MM_Matrix/s39_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s40_d02_tilt = hslider("MM_Matrix/s40_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s41_d02_tilt = hslider("MM_Matrix/s41_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s42_d02_tilt = hslider("MM_Matrix/s42_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s43_d02_tilt = hslider("MM_Matrix/s43_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s44_d02_tilt = hslider("MM_Matrix/s44_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s45_d02_tilt = hslider("MM_Matrix/s45_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s46_d02_tilt = hslider("MM_Matrix/s46_d02_tilt", 0.0, -1.0, 1.0, 0.001); +amt_s47_d02_tilt = hslider("MM_Matrix/s47_d02_tilt", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 3 = inharmonicity +amt_s00_d03_inharmonicity = hslider("MM_Matrix/s00_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s01_d03_inharmonicity = hslider("MM_Matrix/s01_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s02_d03_inharmonicity = hslider("MM_Matrix/s02_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s03_d03_inharmonicity = hslider("MM_Matrix/s03_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s04_d03_inharmonicity = hslider("MM_Matrix/s04_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s05_d03_inharmonicity = hslider("MM_Matrix/s05_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s06_d03_inharmonicity = hslider("MM_Matrix/s06_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s07_d03_inharmonicity = hslider("MM_Matrix/s07_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s08_d03_inharmonicity = hslider("MM_Matrix/s08_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s09_d03_inharmonicity = hslider("MM_Matrix/s09_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s10_d03_inharmonicity = hslider("MM_Matrix/s10_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s11_d03_inharmonicity = hslider("MM_Matrix/s11_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s12_d03_inharmonicity = hslider("MM_Matrix/s12_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s13_d03_inharmonicity = hslider("MM_Matrix/s13_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s14_d03_inharmonicity = hslider("MM_Matrix/s14_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s15_d03_inharmonicity = hslider("MM_Matrix/s15_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s16_d03_inharmonicity = hslider("MM_Matrix/s16_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s17_d03_inharmonicity = hslider("MM_Matrix/s17_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s18_d03_inharmonicity = hslider("MM_Matrix/s18_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s19_d03_inharmonicity = hslider("MM_Matrix/s19_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s20_d03_inharmonicity = hslider("MM_Matrix/s20_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s21_d03_inharmonicity = hslider("MM_Matrix/s21_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s22_d03_inharmonicity = hslider("MM_Matrix/s22_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s23_d03_inharmonicity = hslider("MM_Matrix/s23_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s24_d03_inharmonicity = hslider("MM_Matrix/s24_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s25_d03_inharmonicity = hslider("MM_Matrix/s25_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s26_d03_inharmonicity = hslider("MM_Matrix/s26_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s27_d03_inharmonicity = hslider("MM_Matrix/s27_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s28_d03_inharmonicity = hslider("MM_Matrix/s28_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s29_d03_inharmonicity = hslider("MM_Matrix/s29_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s30_d03_inharmonicity = hslider("MM_Matrix/s30_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s31_d03_inharmonicity = hslider("MM_Matrix/s31_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s32_d03_inharmonicity = hslider("MM_Matrix/s32_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s33_d03_inharmonicity = hslider("MM_Matrix/s33_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s34_d03_inharmonicity = hslider("MM_Matrix/s34_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s35_d03_inharmonicity = hslider("MM_Matrix/s35_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s36_d03_inharmonicity = hslider("MM_Matrix/s36_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s37_d03_inharmonicity = hslider("MM_Matrix/s37_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s38_d03_inharmonicity = hslider("MM_Matrix/s38_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s39_d03_inharmonicity = hslider("MM_Matrix/s39_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s40_d03_inharmonicity = hslider("MM_Matrix/s40_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s41_d03_inharmonicity = hslider("MM_Matrix/s41_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s42_d03_inharmonicity = hslider("MM_Matrix/s42_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s43_d03_inharmonicity = hslider("MM_Matrix/s43_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s44_d03_inharmonicity = hslider("MM_Matrix/s44_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s45_d03_inharmonicity = hslider("MM_Matrix/s45_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s46_d03_inharmonicity = hslider("MM_Matrix/s46_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); +amt_s47_d03_inharmonicity = hslider("MM_Matrix/s47_d03_inharmonicity", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 4 = odd_even +amt_s00_d04_odd_even = hslider("MM_Matrix/s00_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s01_d04_odd_even = hslider("MM_Matrix/s01_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s02_d04_odd_even = hslider("MM_Matrix/s02_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s03_d04_odd_even = hslider("MM_Matrix/s03_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s04_d04_odd_even = hslider("MM_Matrix/s04_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s05_d04_odd_even = hslider("MM_Matrix/s05_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s06_d04_odd_even = hslider("MM_Matrix/s06_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s07_d04_odd_even = hslider("MM_Matrix/s07_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s08_d04_odd_even = hslider("MM_Matrix/s08_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s09_d04_odd_even = hslider("MM_Matrix/s09_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s10_d04_odd_even = hslider("MM_Matrix/s10_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s11_d04_odd_even = hslider("MM_Matrix/s11_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s12_d04_odd_even = hslider("MM_Matrix/s12_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s13_d04_odd_even = hslider("MM_Matrix/s13_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s14_d04_odd_even = hslider("MM_Matrix/s14_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s15_d04_odd_even = hslider("MM_Matrix/s15_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s16_d04_odd_even = hslider("MM_Matrix/s16_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s17_d04_odd_even = hslider("MM_Matrix/s17_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s18_d04_odd_even = hslider("MM_Matrix/s18_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s19_d04_odd_even = hslider("MM_Matrix/s19_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s20_d04_odd_even = hslider("MM_Matrix/s20_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s21_d04_odd_even = hslider("MM_Matrix/s21_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s22_d04_odd_even = hslider("MM_Matrix/s22_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s23_d04_odd_even = hslider("MM_Matrix/s23_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s24_d04_odd_even = hslider("MM_Matrix/s24_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s25_d04_odd_even = hslider("MM_Matrix/s25_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s26_d04_odd_even = hslider("MM_Matrix/s26_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s27_d04_odd_even = hslider("MM_Matrix/s27_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s28_d04_odd_even = hslider("MM_Matrix/s28_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s29_d04_odd_even = hslider("MM_Matrix/s29_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s30_d04_odd_even = hslider("MM_Matrix/s30_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s31_d04_odd_even = hslider("MM_Matrix/s31_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s32_d04_odd_even = hslider("MM_Matrix/s32_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s33_d04_odd_even = hslider("MM_Matrix/s33_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s34_d04_odd_even = hslider("MM_Matrix/s34_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s35_d04_odd_even = hslider("MM_Matrix/s35_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s36_d04_odd_even = hslider("MM_Matrix/s36_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s37_d04_odd_even = hslider("MM_Matrix/s37_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s38_d04_odd_even = hslider("MM_Matrix/s38_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s39_d04_odd_even = hslider("MM_Matrix/s39_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s40_d04_odd_even = hslider("MM_Matrix/s40_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s41_d04_odd_even = hslider("MM_Matrix/s41_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s42_d04_odd_even = hslider("MM_Matrix/s42_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s43_d04_odd_even = hslider("MM_Matrix/s43_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s44_d04_odd_even = hslider("MM_Matrix/s44_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s45_d04_odd_even = hslider("MM_Matrix/s45_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s46_d04_odd_even = hslider("MM_Matrix/s46_d04_odd_even", 0.0, -1.0, 1.0, 0.001); +amt_s47_d04_odd_even = hslider("MM_Matrix/s47_d04_odd_even", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 5 = formant_ctr +amt_s00_d05_formant_ctr = hslider("MM_Matrix/s00_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s01_d05_formant_ctr = hslider("MM_Matrix/s01_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s02_d05_formant_ctr = hslider("MM_Matrix/s02_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s03_d05_formant_ctr = hslider("MM_Matrix/s03_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s04_d05_formant_ctr = hslider("MM_Matrix/s04_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s05_d05_formant_ctr = hslider("MM_Matrix/s05_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s06_d05_formant_ctr = hslider("MM_Matrix/s06_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s07_d05_formant_ctr = hslider("MM_Matrix/s07_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s08_d05_formant_ctr = hslider("MM_Matrix/s08_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s09_d05_formant_ctr = hslider("MM_Matrix/s09_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s10_d05_formant_ctr = hslider("MM_Matrix/s10_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s11_d05_formant_ctr = hslider("MM_Matrix/s11_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s12_d05_formant_ctr = hslider("MM_Matrix/s12_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s13_d05_formant_ctr = hslider("MM_Matrix/s13_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s14_d05_formant_ctr = hslider("MM_Matrix/s14_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s15_d05_formant_ctr = hslider("MM_Matrix/s15_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s16_d05_formant_ctr = hslider("MM_Matrix/s16_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s17_d05_formant_ctr = hslider("MM_Matrix/s17_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s18_d05_formant_ctr = hslider("MM_Matrix/s18_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s19_d05_formant_ctr = hslider("MM_Matrix/s19_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s20_d05_formant_ctr = hslider("MM_Matrix/s20_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s21_d05_formant_ctr = hslider("MM_Matrix/s21_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s22_d05_formant_ctr = hslider("MM_Matrix/s22_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s23_d05_formant_ctr = hslider("MM_Matrix/s23_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s24_d05_formant_ctr = hslider("MM_Matrix/s24_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s25_d05_formant_ctr = hslider("MM_Matrix/s25_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s26_d05_formant_ctr = hslider("MM_Matrix/s26_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s27_d05_formant_ctr = hslider("MM_Matrix/s27_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s28_d05_formant_ctr = hslider("MM_Matrix/s28_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s29_d05_formant_ctr = hslider("MM_Matrix/s29_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s30_d05_formant_ctr = hslider("MM_Matrix/s30_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s31_d05_formant_ctr = hslider("MM_Matrix/s31_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s32_d05_formant_ctr = hslider("MM_Matrix/s32_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s33_d05_formant_ctr = hslider("MM_Matrix/s33_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s34_d05_formant_ctr = hslider("MM_Matrix/s34_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s35_d05_formant_ctr = hslider("MM_Matrix/s35_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s36_d05_formant_ctr = hslider("MM_Matrix/s36_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s37_d05_formant_ctr = hslider("MM_Matrix/s37_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s38_d05_formant_ctr = hslider("MM_Matrix/s38_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s39_d05_formant_ctr = hslider("MM_Matrix/s39_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s40_d05_formant_ctr = hslider("MM_Matrix/s40_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s41_d05_formant_ctr = hslider("MM_Matrix/s41_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s42_d05_formant_ctr = hslider("MM_Matrix/s42_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s43_d05_formant_ctr = hslider("MM_Matrix/s43_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s44_d05_formant_ctr = hslider("MM_Matrix/s44_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s45_d05_formant_ctr = hslider("MM_Matrix/s45_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s46_d05_formant_ctr = hslider("MM_Matrix/s46_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); +amt_s47_d05_formant_ctr = hslider("MM_Matrix/s47_d05_formant_ctr", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 6 = formant_depth +amt_s00_d06_formant_depth = hslider("MM_Matrix/s00_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s01_d06_formant_depth = hslider("MM_Matrix/s01_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s02_d06_formant_depth = hslider("MM_Matrix/s02_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s03_d06_formant_depth = hslider("MM_Matrix/s03_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s04_d06_formant_depth = hslider("MM_Matrix/s04_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s05_d06_formant_depth = hslider("MM_Matrix/s05_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s06_d06_formant_depth = hslider("MM_Matrix/s06_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s07_d06_formant_depth = hslider("MM_Matrix/s07_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s08_d06_formant_depth = hslider("MM_Matrix/s08_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s09_d06_formant_depth = hslider("MM_Matrix/s09_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s10_d06_formant_depth = hslider("MM_Matrix/s10_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s11_d06_formant_depth = hslider("MM_Matrix/s11_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s12_d06_formant_depth = hslider("MM_Matrix/s12_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s13_d06_formant_depth = hslider("MM_Matrix/s13_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s14_d06_formant_depth = hslider("MM_Matrix/s14_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s15_d06_formant_depth = hslider("MM_Matrix/s15_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s16_d06_formant_depth = hslider("MM_Matrix/s16_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s17_d06_formant_depth = hslider("MM_Matrix/s17_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s18_d06_formant_depth = hslider("MM_Matrix/s18_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s19_d06_formant_depth = hslider("MM_Matrix/s19_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s20_d06_formant_depth = hslider("MM_Matrix/s20_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s21_d06_formant_depth = hslider("MM_Matrix/s21_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s22_d06_formant_depth = hslider("MM_Matrix/s22_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s23_d06_formant_depth = hslider("MM_Matrix/s23_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s24_d06_formant_depth = hslider("MM_Matrix/s24_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s25_d06_formant_depth = hslider("MM_Matrix/s25_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s26_d06_formant_depth = hslider("MM_Matrix/s26_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s27_d06_formant_depth = hslider("MM_Matrix/s27_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s28_d06_formant_depth = hslider("MM_Matrix/s28_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s29_d06_formant_depth = hslider("MM_Matrix/s29_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s30_d06_formant_depth = hslider("MM_Matrix/s30_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s31_d06_formant_depth = hslider("MM_Matrix/s31_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s32_d06_formant_depth = hslider("MM_Matrix/s32_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s33_d06_formant_depth = hslider("MM_Matrix/s33_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s34_d06_formant_depth = hslider("MM_Matrix/s34_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s35_d06_formant_depth = hslider("MM_Matrix/s35_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s36_d06_formant_depth = hslider("MM_Matrix/s36_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s37_d06_formant_depth = hslider("MM_Matrix/s37_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s38_d06_formant_depth = hslider("MM_Matrix/s38_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s39_d06_formant_depth = hslider("MM_Matrix/s39_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s40_d06_formant_depth = hslider("MM_Matrix/s40_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s41_d06_formant_depth = hslider("MM_Matrix/s41_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s42_d06_formant_depth = hslider("MM_Matrix/s42_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s43_d06_formant_depth = hslider("MM_Matrix/s43_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s44_d06_formant_depth = hslider("MM_Matrix/s44_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s45_d06_formant_depth = hslider("MM_Matrix/s45_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s46_d06_formant_depth = hslider("MM_Matrix/s46_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); +amt_s47_d06_formant_depth = hslider("MM_Matrix/s47_d06_formant_depth", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 7 = noise_mix +amt_s00_d07_noise_mix = hslider("MM_Matrix/s00_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s01_d07_noise_mix = hslider("MM_Matrix/s01_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s02_d07_noise_mix = hslider("MM_Matrix/s02_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s03_d07_noise_mix = hslider("MM_Matrix/s03_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s04_d07_noise_mix = hslider("MM_Matrix/s04_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s05_d07_noise_mix = hslider("MM_Matrix/s05_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s06_d07_noise_mix = hslider("MM_Matrix/s06_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s07_d07_noise_mix = hslider("MM_Matrix/s07_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s08_d07_noise_mix = hslider("MM_Matrix/s08_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s09_d07_noise_mix = hslider("MM_Matrix/s09_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s10_d07_noise_mix = hslider("MM_Matrix/s10_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s11_d07_noise_mix = hslider("MM_Matrix/s11_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s12_d07_noise_mix = hslider("MM_Matrix/s12_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s13_d07_noise_mix = hslider("MM_Matrix/s13_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s14_d07_noise_mix = hslider("MM_Matrix/s14_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s15_d07_noise_mix = hslider("MM_Matrix/s15_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s16_d07_noise_mix = hslider("MM_Matrix/s16_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s17_d07_noise_mix = hslider("MM_Matrix/s17_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s18_d07_noise_mix = hslider("MM_Matrix/s18_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s19_d07_noise_mix = hslider("MM_Matrix/s19_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s20_d07_noise_mix = hslider("MM_Matrix/s20_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s21_d07_noise_mix = hslider("MM_Matrix/s21_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s22_d07_noise_mix = hslider("MM_Matrix/s22_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s23_d07_noise_mix = hslider("MM_Matrix/s23_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s24_d07_noise_mix = hslider("MM_Matrix/s24_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s25_d07_noise_mix = hslider("MM_Matrix/s25_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s26_d07_noise_mix = hslider("MM_Matrix/s26_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s27_d07_noise_mix = hslider("MM_Matrix/s27_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s28_d07_noise_mix = hslider("MM_Matrix/s28_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s29_d07_noise_mix = hslider("MM_Matrix/s29_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s30_d07_noise_mix = hslider("MM_Matrix/s30_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s31_d07_noise_mix = hslider("MM_Matrix/s31_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s32_d07_noise_mix = hslider("MM_Matrix/s32_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s33_d07_noise_mix = hslider("MM_Matrix/s33_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s34_d07_noise_mix = hslider("MM_Matrix/s34_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s35_d07_noise_mix = hslider("MM_Matrix/s35_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s36_d07_noise_mix = hslider("MM_Matrix/s36_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s37_d07_noise_mix = hslider("MM_Matrix/s37_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s38_d07_noise_mix = hslider("MM_Matrix/s38_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s39_d07_noise_mix = hslider("MM_Matrix/s39_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s40_d07_noise_mix = hslider("MM_Matrix/s40_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s41_d07_noise_mix = hslider("MM_Matrix/s41_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s42_d07_noise_mix = hslider("MM_Matrix/s42_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s43_d07_noise_mix = hslider("MM_Matrix/s43_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s44_d07_noise_mix = hslider("MM_Matrix/s44_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s45_d07_noise_mix = hslider("MM_Matrix/s45_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s46_d07_noise_mix = hslider("MM_Matrix/s46_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); +amt_s47_d07_noise_mix = hslider("MM_Matrix/s47_d07_noise_mix", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 8 = amp +amt_s00_d08_amp = hslider("MM_Matrix/s00_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s01_d08_amp = hslider("MM_Matrix/s01_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s02_d08_amp = hslider("MM_Matrix/s02_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s03_d08_amp = hslider("MM_Matrix/s03_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s04_d08_amp = hslider("MM_Matrix/s04_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s05_d08_amp = hslider("MM_Matrix/s05_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s06_d08_amp = hslider("MM_Matrix/s06_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s07_d08_amp = hslider("MM_Matrix/s07_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s08_d08_amp = hslider("MM_Matrix/s08_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s09_d08_amp = hslider("MM_Matrix/s09_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s10_d08_amp = hslider("MM_Matrix/s10_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s11_d08_amp = hslider("MM_Matrix/s11_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s12_d08_amp = hslider("MM_Matrix/s12_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s13_d08_amp = hslider("MM_Matrix/s13_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s14_d08_amp = hslider("MM_Matrix/s14_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s15_d08_amp = hslider("MM_Matrix/s15_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s16_d08_amp = hslider("MM_Matrix/s16_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s17_d08_amp = hslider("MM_Matrix/s17_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s18_d08_amp = hslider("MM_Matrix/s18_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s19_d08_amp = hslider("MM_Matrix/s19_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s20_d08_amp = hslider("MM_Matrix/s20_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s21_d08_amp = hslider("MM_Matrix/s21_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s22_d08_amp = hslider("MM_Matrix/s22_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s23_d08_amp = hslider("MM_Matrix/s23_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s24_d08_amp = hslider("MM_Matrix/s24_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s25_d08_amp = hslider("MM_Matrix/s25_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s26_d08_amp = hslider("MM_Matrix/s26_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s27_d08_amp = hslider("MM_Matrix/s27_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s28_d08_amp = hslider("MM_Matrix/s28_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s29_d08_amp = hslider("MM_Matrix/s29_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s30_d08_amp = hslider("MM_Matrix/s30_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s31_d08_amp = hslider("MM_Matrix/s31_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s32_d08_amp = hslider("MM_Matrix/s32_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s33_d08_amp = hslider("MM_Matrix/s33_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s34_d08_amp = hslider("MM_Matrix/s34_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s35_d08_amp = hslider("MM_Matrix/s35_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s36_d08_amp = hslider("MM_Matrix/s36_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s37_d08_amp = hslider("MM_Matrix/s37_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s38_d08_amp = hslider("MM_Matrix/s38_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s39_d08_amp = hslider("MM_Matrix/s39_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s40_d08_amp = hslider("MM_Matrix/s40_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s41_d08_amp = hslider("MM_Matrix/s41_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s42_d08_amp = hslider("MM_Matrix/s42_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s43_d08_amp = hslider("MM_Matrix/s43_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s44_d08_amp = hslider("MM_Matrix/s44_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s45_d08_amp = hslider("MM_Matrix/s45_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s46_d08_amp = hslider("MM_Matrix/s46_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s47_d08_amp = hslider("MM_Matrix/s47_d08_amp", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 9 = pan +amt_s00_d09_pan = hslider("MM_Matrix/s00_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s01_d09_pan = hslider("MM_Matrix/s01_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s02_d09_pan = hslider("MM_Matrix/s02_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s03_d09_pan = hslider("MM_Matrix/s03_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s04_d09_pan = hslider("MM_Matrix/s04_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s05_d09_pan = hslider("MM_Matrix/s05_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s06_d09_pan = hslider("MM_Matrix/s06_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s07_d09_pan = hslider("MM_Matrix/s07_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s08_d09_pan = hslider("MM_Matrix/s08_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s09_d09_pan = hslider("MM_Matrix/s09_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s10_d09_pan = hslider("MM_Matrix/s10_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s11_d09_pan = hslider("MM_Matrix/s11_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s12_d09_pan = hslider("MM_Matrix/s12_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s13_d09_pan = hslider("MM_Matrix/s13_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s14_d09_pan = hslider("MM_Matrix/s14_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s15_d09_pan = hslider("MM_Matrix/s15_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s16_d09_pan = hslider("MM_Matrix/s16_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s17_d09_pan = hslider("MM_Matrix/s17_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s18_d09_pan = hslider("MM_Matrix/s18_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s19_d09_pan = hslider("MM_Matrix/s19_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s20_d09_pan = hslider("MM_Matrix/s20_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s21_d09_pan = hslider("MM_Matrix/s21_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s22_d09_pan = hslider("MM_Matrix/s22_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s23_d09_pan = hslider("MM_Matrix/s23_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s24_d09_pan = hslider("MM_Matrix/s24_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s25_d09_pan = hslider("MM_Matrix/s25_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s26_d09_pan = hslider("MM_Matrix/s26_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s27_d09_pan = hslider("MM_Matrix/s27_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s28_d09_pan = hslider("MM_Matrix/s28_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s29_d09_pan = hslider("MM_Matrix/s29_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s30_d09_pan = hslider("MM_Matrix/s30_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s31_d09_pan = hslider("MM_Matrix/s31_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s32_d09_pan = hslider("MM_Matrix/s32_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s33_d09_pan = hslider("MM_Matrix/s33_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s34_d09_pan = hslider("MM_Matrix/s34_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s35_d09_pan = hslider("MM_Matrix/s35_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s36_d09_pan = hslider("MM_Matrix/s36_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s37_d09_pan = hslider("MM_Matrix/s37_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s38_d09_pan = hslider("MM_Matrix/s38_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s39_d09_pan = hslider("MM_Matrix/s39_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s40_d09_pan = hslider("MM_Matrix/s40_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s41_d09_pan = hslider("MM_Matrix/s41_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s42_d09_pan = hslider("MM_Matrix/s42_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s43_d09_pan = hslider("MM_Matrix/s43_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s44_d09_pan = hslider("MM_Matrix/s44_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s45_d09_pan = hslider("MM_Matrix/s45_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s46_d09_pan = hslider("MM_Matrix/s46_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s47_d09_pan = hslider("MM_Matrix/s47_d09_pan", 0.0, -1.0, 1.0, 0.001); + +// --------------------------------------------------------------------------- +// Destination signals — one per modulation destination. Each is a 48-term +// weighted sum of sources × amounts. The `gate` argument is threaded through +// so that mp.src??(gate) can drive ADSR envelopes. +// --------------------------------------------------------------------------- + +mod_pitch(gate) = + mp.src00(gate) * amt_s00_d00_pitch + + mp.src01(gate) * amt_s01_d00_pitch + + mp.src02(gate) * amt_s02_d00_pitch + + mp.src03(gate) * amt_s03_d00_pitch + + mp.src04(gate) * amt_s04_d00_pitch + + mp.src05(gate) * amt_s05_d00_pitch + + mp.src06(gate) * amt_s06_d00_pitch + + mp.src07(gate) * amt_s07_d00_pitch + + mp.src08(gate) * amt_s08_d00_pitch + + mp.src09(gate) * amt_s09_d00_pitch + + mp.src10(gate) * amt_s10_d00_pitch + + mp.src11(gate) * amt_s11_d00_pitch + + mp.src12(gate) * amt_s12_d00_pitch + + mp.src13(gate) * amt_s13_d00_pitch + + mp.src14(gate) * amt_s14_d00_pitch + + mp.src15(gate) * amt_s15_d00_pitch + + mp.src16(gate) * amt_s16_d00_pitch + + mp.src17(gate) * amt_s17_d00_pitch + + mp.src18(gate) * amt_s18_d00_pitch + + mp.src19(gate) * amt_s19_d00_pitch + + mp.src20(gate) * amt_s20_d00_pitch + + mp.src21(gate) * amt_s21_d00_pitch + + mp.src22(gate) * amt_s22_d00_pitch + + mp.src23(gate) * amt_s23_d00_pitch + + mp.src24(gate) * amt_s24_d00_pitch + + mp.src25(gate) * amt_s25_d00_pitch + + mp.src26(gate) * amt_s26_d00_pitch + + mp.src27(gate) * amt_s27_d00_pitch + + mp.src28(gate) * amt_s28_d00_pitch + + mp.src29(gate) * amt_s29_d00_pitch + + mp.src30(gate) * amt_s30_d00_pitch + + mp.src31(gate) * amt_s31_d00_pitch + + mp.src32(gate) * amt_s32_d00_pitch + + mp.src33(gate) * amt_s33_d00_pitch + + mp.src34(gate) * amt_s34_d00_pitch + + mp.src35(gate) * amt_s35_d00_pitch + + mp.src36(gate) * amt_s36_d00_pitch + + mp.src37(gate) * amt_s37_d00_pitch + + mp.src38(gate) * amt_s38_d00_pitch + + mp.src39(gate) * amt_s39_d00_pitch + + mp.src40(gate) * amt_s40_d00_pitch + + mp.src41(gate) * amt_s41_d00_pitch + + mp.src42(gate) * amt_s42_d00_pitch + + mp.src43(gate) * amt_s43_d00_pitch + + mp.src44(gate) * amt_s44_d00_pitch + + mp.src45(gate) * amt_s45_d00_pitch + + mp.src46(gate) * amt_s46_d00_pitch + + mp.src47(gate) * amt_s47_d00_pitch; + +mod_bright(gate) = + mp.src00(gate) * amt_s00_d01_bright + + mp.src01(gate) * amt_s01_d01_bright + + mp.src02(gate) * amt_s02_d01_bright + + mp.src03(gate) * amt_s03_d01_bright + + mp.src04(gate) * amt_s04_d01_bright + + mp.src05(gate) * amt_s05_d01_bright + + mp.src06(gate) * amt_s06_d01_bright + + mp.src07(gate) * amt_s07_d01_bright + + mp.src08(gate) * amt_s08_d01_bright + + mp.src09(gate) * amt_s09_d01_bright + + mp.src10(gate) * amt_s10_d01_bright + + mp.src11(gate) * amt_s11_d01_bright + + mp.src12(gate) * amt_s12_d01_bright + + mp.src13(gate) * amt_s13_d01_bright + + mp.src14(gate) * amt_s14_d01_bright + + mp.src15(gate) * amt_s15_d01_bright + + mp.src16(gate) * amt_s16_d01_bright + + mp.src17(gate) * amt_s17_d01_bright + + mp.src18(gate) * amt_s18_d01_bright + + mp.src19(gate) * amt_s19_d01_bright + + mp.src20(gate) * amt_s20_d01_bright + + mp.src21(gate) * amt_s21_d01_bright + + mp.src22(gate) * amt_s22_d01_bright + + mp.src23(gate) * amt_s23_d01_bright + + mp.src24(gate) * amt_s24_d01_bright + + mp.src25(gate) * amt_s25_d01_bright + + mp.src26(gate) * amt_s26_d01_bright + + mp.src27(gate) * amt_s27_d01_bright + + mp.src28(gate) * amt_s28_d01_bright + + mp.src29(gate) * amt_s29_d01_bright + + mp.src30(gate) * amt_s30_d01_bright + + mp.src31(gate) * amt_s31_d01_bright + + mp.src32(gate) * amt_s32_d01_bright + + mp.src33(gate) * amt_s33_d01_bright + + mp.src34(gate) * amt_s34_d01_bright + + mp.src35(gate) * amt_s35_d01_bright + + mp.src36(gate) * amt_s36_d01_bright + + mp.src37(gate) * amt_s37_d01_bright + + mp.src38(gate) * amt_s38_d01_bright + + mp.src39(gate) * amt_s39_d01_bright + + mp.src40(gate) * amt_s40_d01_bright + + mp.src41(gate) * amt_s41_d01_bright + + mp.src42(gate) * amt_s42_d01_bright + + mp.src43(gate) * amt_s43_d01_bright + + mp.src44(gate) * amt_s44_d01_bright + + mp.src45(gate) * amt_s45_d01_bright + + mp.src46(gate) * amt_s46_d01_bright + + mp.src47(gate) * amt_s47_d01_bright; + +mod_tilt(gate) = + mp.src00(gate) * amt_s00_d02_tilt + + mp.src01(gate) * amt_s01_d02_tilt + + mp.src02(gate) * amt_s02_d02_tilt + + mp.src03(gate) * amt_s03_d02_tilt + + mp.src04(gate) * amt_s04_d02_tilt + + mp.src05(gate) * amt_s05_d02_tilt + + mp.src06(gate) * amt_s06_d02_tilt + + mp.src07(gate) * amt_s07_d02_tilt + + mp.src08(gate) * amt_s08_d02_tilt + + mp.src09(gate) * amt_s09_d02_tilt + + mp.src10(gate) * amt_s10_d02_tilt + + mp.src11(gate) * amt_s11_d02_tilt + + mp.src12(gate) * amt_s12_d02_tilt + + mp.src13(gate) * amt_s13_d02_tilt + + mp.src14(gate) * amt_s14_d02_tilt + + mp.src15(gate) * amt_s15_d02_tilt + + mp.src16(gate) * amt_s16_d02_tilt + + mp.src17(gate) * amt_s17_d02_tilt + + mp.src18(gate) * amt_s18_d02_tilt + + mp.src19(gate) * amt_s19_d02_tilt + + mp.src20(gate) * amt_s20_d02_tilt + + mp.src21(gate) * amt_s21_d02_tilt + + mp.src22(gate) * amt_s22_d02_tilt + + mp.src23(gate) * amt_s23_d02_tilt + + mp.src24(gate) * amt_s24_d02_tilt + + mp.src25(gate) * amt_s25_d02_tilt + + mp.src26(gate) * amt_s26_d02_tilt + + mp.src27(gate) * amt_s27_d02_tilt + + mp.src28(gate) * amt_s28_d02_tilt + + mp.src29(gate) * amt_s29_d02_tilt + + mp.src30(gate) * amt_s30_d02_tilt + + mp.src31(gate) * amt_s31_d02_tilt + + mp.src32(gate) * amt_s32_d02_tilt + + mp.src33(gate) * amt_s33_d02_tilt + + mp.src34(gate) * amt_s34_d02_tilt + + mp.src35(gate) * amt_s35_d02_tilt + + mp.src36(gate) * amt_s36_d02_tilt + + mp.src37(gate) * amt_s37_d02_tilt + + mp.src38(gate) * amt_s38_d02_tilt + + mp.src39(gate) * amt_s39_d02_tilt + + mp.src40(gate) * amt_s40_d02_tilt + + mp.src41(gate) * amt_s41_d02_tilt + + mp.src42(gate) * amt_s42_d02_tilt + + mp.src43(gate) * amt_s43_d02_tilt + + mp.src44(gate) * amt_s44_d02_tilt + + mp.src45(gate) * amt_s45_d02_tilt + + mp.src46(gate) * amt_s46_d02_tilt + + mp.src47(gate) * amt_s47_d02_tilt; + +mod_inharmonicity(gate) = + mp.src00(gate) * amt_s00_d03_inharmonicity + + mp.src01(gate) * amt_s01_d03_inharmonicity + + mp.src02(gate) * amt_s02_d03_inharmonicity + + mp.src03(gate) * amt_s03_d03_inharmonicity + + mp.src04(gate) * amt_s04_d03_inharmonicity + + mp.src05(gate) * amt_s05_d03_inharmonicity + + mp.src06(gate) * amt_s06_d03_inharmonicity + + mp.src07(gate) * amt_s07_d03_inharmonicity + + mp.src08(gate) * amt_s08_d03_inharmonicity + + mp.src09(gate) * amt_s09_d03_inharmonicity + + mp.src10(gate) * amt_s10_d03_inharmonicity + + mp.src11(gate) * amt_s11_d03_inharmonicity + + mp.src12(gate) * amt_s12_d03_inharmonicity + + mp.src13(gate) * amt_s13_d03_inharmonicity + + mp.src14(gate) * amt_s14_d03_inharmonicity + + mp.src15(gate) * amt_s15_d03_inharmonicity + + mp.src16(gate) * amt_s16_d03_inharmonicity + + mp.src17(gate) * amt_s17_d03_inharmonicity + + mp.src18(gate) * amt_s18_d03_inharmonicity + + mp.src19(gate) * amt_s19_d03_inharmonicity + + mp.src20(gate) * amt_s20_d03_inharmonicity + + mp.src21(gate) * amt_s21_d03_inharmonicity + + mp.src22(gate) * amt_s22_d03_inharmonicity + + mp.src23(gate) * amt_s23_d03_inharmonicity + + mp.src24(gate) * amt_s24_d03_inharmonicity + + mp.src25(gate) * amt_s25_d03_inharmonicity + + mp.src26(gate) * amt_s26_d03_inharmonicity + + mp.src27(gate) * amt_s27_d03_inharmonicity + + mp.src28(gate) * amt_s28_d03_inharmonicity + + mp.src29(gate) * amt_s29_d03_inharmonicity + + mp.src30(gate) * amt_s30_d03_inharmonicity + + mp.src31(gate) * amt_s31_d03_inharmonicity + + mp.src32(gate) * amt_s32_d03_inharmonicity + + mp.src33(gate) * amt_s33_d03_inharmonicity + + mp.src34(gate) * amt_s34_d03_inharmonicity + + mp.src35(gate) * amt_s35_d03_inharmonicity + + mp.src36(gate) * amt_s36_d03_inharmonicity + + mp.src37(gate) * amt_s37_d03_inharmonicity + + mp.src38(gate) * amt_s38_d03_inharmonicity + + mp.src39(gate) * amt_s39_d03_inharmonicity + + mp.src40(gate) * amt_s40_d03_inharmonicity + + mp.src41(gate) * amt_s41_d03_inharmonicity + + mp.src42(gate) * amt_s42_d03_inharmonicity + + mp.src43(gate) * amt_s43_d03_inharmonicity + + mp.src44(gate) * amt_s44_d03_inharmonicity + + mp.src45(gate) * amt_s45_d03_inharmonicity + + mp.src46(gate) * amt_s46_d03_inharmonicity + + mp.src47(gate) * amt_s47_d03_inharmonicity; + +mod_odd_even(gate) = + mp.src00(gate) * amt_s00_d04_odd_even + + mp.src01(gate) * amt_s01_d04_odd_even + + mp.src02(gate) * amt_s02_d04_odd_even + + mp.src03(gate) * amt_s03_d04_odd_even + + mp.src04(gate) * amt_s04_d04_odd_even + + mp.src05(gate) * amt_s05_d04_odd_even + + mp.src06(gate) * amt_s06_d04_odd_even + + mp.src07(gate) * amt_s07_d04_odd_even + + mp.src08(gate) * amt_s08_d04_odd_even + + mp.src09(gate) * amt_s09_d04_odd_even + + mp.src10(gate) * amt_s10_d04_odd_even + + mp.src11(gate) * amt_s11_d04_odd_even + + mp.src12(gate) * amt_s12_d04_odd_even + + mp.src13(gate) * amt_s13_d04_odd_even + + mp.src14(gate) * amt_s14_d04_odd_even + + mp.src15(gate) * amt_s15_d04_odd_even + + mp.src16(gate) * amt_s16_d04_odd_even + + mp.src17(gate) * amt_s17_d04_odd_even + + mp.src18(gate) * amt_s18_d04_odd_even + + mp.src19(gate) * amt_s19_d04_odd_even + + mp.src20(gate) * amt_s20_d04_odd_even + + mp.src21(gate) * amt_s21_d04_odd_even + + mp.src22(gate) * amt_s22_d04_odd_even + + mp.src23(gate) * amt_s23_d04_odd_even + + mp.src24(gate) * amt_s24_d04_odd_even + + mp.src25(gate) * amt_s25_d04_odd_even + + mp.src26(gate) * amt_s26_d04_odd_even + + mp.src27(gate) * amt_s27_d04_odd_even + + mp.src28(gate) * amt_s28_d04_odd_even + + mp.src29(gate) * amt_s29_d04_odd_even + + mp.src30(gate) * amt_s30_d04_odd_even + + mp.src31(gate) * amt_s31_d04_odd_even + + mp.src32(gate) * amt_s32_d04_odd_even + + mp.src33(gate) * amt_s33_d04_odd_even + + mp.src34(gate) * amt_s34_d04_odd_even + + mp.src35(gate) * amt_s35_d04_odd_even + + mp.src36(gate) * amt_s36_d04_odd_even + + mp.src37(gate) * amt_s37_d04_odd_even + + mp.src38(gate) * amt_s38_d04_odd_even + + mp.src39(gate) * amt_s39_d04_odd_even + + mp.src40(gate) * amt_s40_d04_odd_even + + mp.src41(gate) * amt_s41_d04_odd_even + + mp.src42(gate) * amt_s42_d04_odd_even + + mp.src43(gate) * amt_s43_d04_odd_even + + mp.src44(gate) * amt_s44_d04_odd_even + + mp.src45(gate) * amt_s45_d04_odd_even + + mp.src46(gate) * amt_s46_d04_odd_even + + mp.src47(gate) * amt_s47_d04_odd_even; + +mod_formant_ctr(gate) = + mp.src00(gate) * amt_s00_d05_formant_ctr + + mp.src01(gate) * amt_s01_d05_formant_ctr + + mp.src02(gate) * amt_s02_d05_formant_ctr + + mp.src03(gate) * amt_s03_d05_formant_ctr + + mp.src04(gate) * amt_s04_d05_formant_ctr + + mp.src05(gate) * amt_s05_d05_formant_ctr + + mp.src06(gate) * amt_s06_d05_formant_ctr + + mp.src07(gate) * amt_s07_d05_formant_ctr + + mp.src08(gate) * amt_s08_d05_formant_ctr + + mp.src09(gate) * amt_s09_d05_formant_ctr + + mp.src10(gate) * amt_s10_d05_formant_ctr + + mp.src11(gate) * amt_s11_d05_formant_ctr + + mp.src12(gate) * amt_s12_d05_formant_ctr + + mp.src13(gate) * amt_s13_d05_formant_ctr + + mp.src14(gate) * amt_s14_d05_formant_ctr + + mp.src15(gate) * amt_s15_d05_formant_ctr + + mp.src16(gate) * amt_s16_d05_formant_ctr + + mp.src17(gate) * amt_s17_d05_formant_ctr + + mp.src18(gate) * amt_s18_d05_formant_ctr + + mp.src19(gate) * amt_s19_d05_formant_ctr + + mp.src20(gate) * amt_s20_d05_formant_ctr + + mp.src21(gate) * amt_s21_d05_formant_ctr + + mp.src22(gate) * amt_s22_d05_formant_ctr + + mp.src23(gate) * amt_s23_d05_formant_ctr + + mp.src24(gate) * amt_s24_d05_formant_ctr + + mp.src25(gate) * amt_s25_d05_formant_ctr + + mp.src26(gate) * amt_s26_d05_formant_ctr + + mp.src27(gate) * amt_s27_d05_formant_ctr + + mp.src28(gate) * amt_s28_d05_formant_ctr + + mp.src29(gate) * amt_s29_d05_formant_ctr + + mp.src30(gate) * amt_s30_d05_formant_ctr + + mp.src31(gate) * amt_s31_d05_formant_ctr + + mp.src32(gate) * amt_s32_d05_formant_ctr + + mp.src33(gate) * amt_s33_d05_formant_ctr + + mp.src34(gate) * amt_s34_d05_formant_ctr + + mp.src35(gate) * amt_s35_d05_formant_ctr + + mp.src36(gate) * amt_s36_d05_formant_ctr + + mp.src37(gate) * amt_s37_d05_formant_ctr + + mp.src38(gate) * amt_s38_d05_formant_ctr + + mp.src39(gate) * amt_s39_d05_formant_ctr + + mp.src40(gate) * amt_s40_d05_formant_ctr + + mp.src41(gate) * amt_s41_d05_formant_ctr + + mp.src42(gate) * amt_s42_d05_formant_ctr + + mp.src43(gate) * amt_s43_d05_formant_ctr + + mp.src44(gate) * amt_s44_d05_formant_ctr + + mp.src45(gate) * amt_s45_d05_formant_ctr + + mp.src46(gate) * amt_s46_d05_formant_ctr + + mp.src47(gate) * amt_s47_d05_formant_ctr; + +mod_formant_depth(gate) = + mp.src00(gate) * amt_s00_d06_formant_depth + + mp.src01(gate) * amt_s01_d06_formant_depth + + mp.src02(gate) * amt_s02_d06_formant_depth + + mp.src03(gate) * amt_s03_d06_formant_depth + + mp.src04(gate) * amt_s04_d06_formant_depth + + mp.src05(gate) * amt_s05_d06_formant_depth + + mp.src06(gate) * amt_s06_d06_formant_depth + + mp.src07(gate) * amt_s07_d06_formant_depth + + mp.src08(gate) * amt_s08_d06_formant_depth + + mp.src09(gate) * amt_s09_d06_formant_depth + + mp.src10(gate) * amt_s10_d06_formant_depth + + mp.src11(gate) * amt_s11_d06_formant_depth + + mp.src12(gate) * amt_s12_d06_formant_depth + + mp.src13(gate) * amt_s13_d06_formant_depth + + mp.src14(gate) * amt_s14_d06_formant_depth + + mp.src15(gate) * amt_s15_d06_formant_depth + + mp.src16(gate) * amt_s16_d06_formant_depth + + mp.src17(gate) * amt_s17_d06_formant_depth + + mp.src18(gate) * amt_s18_d06_formant_depth + + mp.src19(gate) * amt_s19_d06_formant_depth + + mp.src20(gate) * amt_s20_d06_formant_depth + + mp.src21(gate) * amt_s21_d06_formant_depth + + mp.src22(gate) * amt_s22_d06_formant_depth + + mp.src23(gate) * amt_s23_d06_formant_depth + + mp.src24(gate) * amt_s24_d06_formant_depth + + mp.src25(gate) * amt_s25_d06_formant_depth + + mp.src26(gate) * amt_s26_d06_formant_depth + + mp.src27(gate) * amt_s27_d06_formant_depth + + mp.src28(gate) * amt_s28_d06_formant_depth + + mp.src29(gate) * amt_s29_d06_formant_depth + + mp.src30(gate) * amt_s30_d06_formant_depth + + mp.src31(gate) * amt_s31_d06_formant_depth + + mp.src32(gate) * amt_s32_d06_formant_depth + + mp.src33(gate) * amt_s33_d06_formant_depth + + mp.src34(gate) * amt_s34_d06_formant_depth + + mp.src35(gate) * amt_s35_d06_formant_depth + + mp.src36(gate) * amt_s36_d06_formant_depth + + mp.src37(gate) * amt_s37_d06_formant_depth + + mp.src38(gate) * amt_s38_d06_formant_depth + + mp.src39(gate) * amt_s39_d06_formant_depth + + mp.src40(gate) * amt_s40_d06_formant_depth + + mp.src41(gate) * amt_s41_d06_formant_depth + + mp.src42(gate) * amt_s42_d06_formant_depth + + mp.src43(gate) * amt_s43_d06_formant_depth + + mp.src44(gate) * amt_s44_d06_formant_depth + + mp.src45(gate) * amt_s45_d06_formant_depth + + mp.src46(gate) * amt_s46_d06_formant_depth + + mp.src47(gate) * amt_s47_d06_formant_depth; + +mod_noise_mix(gate) = + mp.src00(gate) * amt_s00_d07_noise_mix + + mp.src01(gate) * amt_s01_d07_noise_mix + + mp.src02(gate) * amt_s02_d07_noise_mix + + mp.src03(gate) * amt_s03_d07_noise_mix + + mp.src04(gate) * amt_s04_d07_noise_mix + + mp.src05(gate) * amt_s05_d07_noise_mix + + mp.src06(gate) * amt_s06_d07_noise_mix + + mp.src07(gate) * amt_s07_d07_noise_mix + + mp.src08(gate) * amt_s08_d07_noise_mix + + mp.src09(gate) * amt_s09_d07_noise_mix + + mp.src10(gate) * amt_s10_d07_noise_mix + + mp.src11(gate) * amt_s11_d07_noise_mix + + mp.src12(gate) * amt_s12_d07_noise_mix + + mp.src13(gate) * amt_s13_d07_noise_mix + + mp.src14(gate) * amt_s14_d07_noise_mix + + mp.src15(gate) * amt_s15_d07_noise_mix + + mp.src16(gate) * amt_s16_d07_noise_mix + + mp.src17(gate) * amt_s17_d07_noise_mix + + mp.src18(gate) * amt_s18_d07_noise_mix + + mp.src19(gate) * amt_s19_d07_noise_mix + + mp.src20(gate) * amt_s20_d07_noise_mix + + mp.src21(gate) * amt_s21_d07_noise_mix + + mp.src22(gate) * amt_s22_d07_noise_mix + + mp.src23(gate) * amt_s23_d07_noise_mix + + mp.src24(gate) * amt_s24_d07_noise_mix + + mp.src25(gate) * amt_s25_d07_noise_mix + + mp.src26(gate) * amt_s26_d07_noise_mix + + mp.src27(gate) * amt_s27_d07_noise_mix + + mp.src28(gate) * amt_s28_d07_noise_mix + + mp.src29(gate) * amt_s29_d07_noise_mix + + mp.src30(gate) * amt_s30_d07_noise_mix + + mp.src31(gate) * amt_s31_d07_noise_mix + + mp.src32(gate) * amt_s32_d07_noise_mix + + mp.src33(gate) * amt_s33_d07_noise_mix + + mp.src34(gate) * amt_s34_d07_noise_mix + + mp.src35(gate) * amt_s35_d07_noise_mix + + mp.src36(gate) * amt_s36_d07_noise_mix + + mp.src37(gate) * amt_s37_d07_noise_mix + + mp.src38(gate) * amt_s38_d07_noise_mix + + mp.src39(gate) * amt_s39_d07_noise_mix + + mp.src40(gate) * amt_s40_d07_noise_mix + + mp.src41(gate) * amt_s41_d07_noise_mix + + mp.src42(gate) * amt_s42_d07_noise_mix + + mp.src43(gate) * amt_s43_d07_noise_mix + + mp.src44(gate) * amt_s44_d07_noise_mix + + mp.src45(gate) * amt_s45_d07_noise_mix + + mp.src46(gate) * amt_s46_d07_noise_mix + + mp.src47(gate) * amt_s47_d07_noise_mix; + +mod_amp(gate) = + mp.src00(gate) * amt_s00_d08_amp + + mp.src01(gate) * amt_s01_d08_amp + + mp.src02(gate) * amt_s02_d08_amp + + mp.src03(gate) * amt_s03_d08_amp + + mp.src04(gate) * amt_s04_d08_amp + + mp.src05(gate) * amt_s05_d08_amp + + mp.src06(gate) * amt_s06_d08_amp + + mp.src07(gate) * amt_s07_d08_amp + + mp.src08(gate) * amt_s08_d08_amp + + mp.src09(gate) * amt_s09_d08_amp + + mp.src10(gate) * amt_s10_d08_amp + + mp.src11(gate) * amt_s11_d08_amp + + mp.src12(gate) * amt_s12_d08_amp + + mp.src13(gate) * amt_s13_d08_amp + + mp.src14(gate) * amt_s14_d08_amp + + mp.src15(gate) * amt_s15_d08_amp + + mp.src16(gate) * amt_s16_d08_amp + + mp.src17(gate) * amt_s17_d08_amp + + mp.src18(gate) * amt_s18_d08_amp + + mp.src19(gate) * amt_s19_d08_amp + + mp.src20(gate) * amt_s20_d08_amp + + mp.src21(gate) * amt_s21_d08_amp + + mp.src22(gate) * amt_s22_d08_amp + + mp.src23(gate) * amt_s23_d08_amp + + mp.src24(gate) * amt_s24_d08_amp + + mp.src25(gate) * amt_s25_d08_amp + + mp.src26(gate) * amt_s26_d08_amp + + mp.src27(gate) * amt_s27_d08_amp + + mp.src28(gate) * amt_s28_d08_amp + + mp.src29(gate) * amt_s29_d08_amp + + mp.src30(gate) * amt_s30_d08_amp + + mp.src31(gate) * amt_s31_d08_amp + + mp.src32(gate) * amt_s32_d08_amp + + mp.src33(gate) * amt_s33_d08_amp + + mp.src34(gate) * amt_s34_d08_amp + + mp.src35(gate) * amt_s35_d08_amp + + mp.src36(gate) * amt_s36_d08_amp + + mp.src37(gate) * amt_s37_d08_amp + + mp.src38(gate) * amt_s38_d08_amp + + mp.src39(gate) * amt_s39_d08_amp + + mp.src40(gate) * amt_s40_d08_amp + + mp.src41(gate) * amt_s41_d08_amp + + mp.src42(gate) * amt_s42_d08_amp + + mp.src43(gate) * amt_s43_d08_amp + + mp.src44(gate) * amt_s44_d08_amp + + mp.src45(gate) * amt_s45_d08_amp + + mp.src46(gate) * amt_s46_d08_amp + + mp.src47(gate) * amt_s47_d08_amp; + +mod_pan(gate) = + mp.src00(gate) * amt_s00_d09_pan + + mp.src01(gate) * amt_s01_d09_pan + + mp.src02(gate) * amt_s02_d09_pan + + mp.src03(gate) * amt_s03_d09_pan + + mp.src04(gate) * amt_s04_d09_pan + + mp.src05(gate) * amt_s05_d09_pan + + mp.src06(gate) * amt_s06_d09_pan + + mp.src07(gate) * amt_s07_d09_pan + + mp.src08(gate) * amt_s08_d09_pan + + mp.src09(gate) * amt_s09_d09_pan + + mp.src10(gate) * amt_s10_d09_pan + + mp.src11(gate) * amt_s11_d09_pan + + mp.src12(gate) * amt_s12_d09_pan + + mp.src13(gate) * amt_s13_d09_pan + + mp.src14(gate) * amt_s14_d09_pan + + mp.src15(gate) * amt_s15_d09_pan + + mp.src16(gate) * amt_s16_d09_pan + + mp.src17(gate) * amt_s17_d09_pan + + mp.src18(gate) * amt_s18_d09_pan + + mp.src19(gate) * amt_s19_d09_pan + + mp.src20(gate) * amt_s20_d09_pan + + mp.src21(gate) * amt_s21_d09_pan + + mp.src22(gate) * amt_s22_d09_pan + + mp.src23(gate) * amt_s23_d09_pan + + mp.src24(gate) * amt_s24_d09_pan + + mp.src25(gate) * amt_s25_d09_pan + + mp.src26(gate) * amt_s26_d09_pan + + mp.src27(gate) * amt_s27_d09_pan + + mp.src28(gate) * amt_s28_d09_pan + + mp.src29(gate) * amt_s29_d09_pan + + mp.src30(gate) * amt_s30_d09_pan + + mp.src31(gate) * amt_s31_d09_pan + + mp.src32(gate) * amt_s32_d09_pan + + mp.src33(gate) * amt_s33_d09_pan + + mp.src34(gate) * amt_s34_d09_pan + + mp.src35(gate) * amt_s35_d09_pan + + mp.src36(gate) * amt_s36_d09_pan + + mp.src37(gate) * amt_s37_d09_pan + + mp.src38(gate) * amt_s38_d09_pan + + mp.src39(gate) * amt_s39_d09_pan + + mp.src40(gate) * amt_s40_d09_pan + + mp.src41(gate) * amt_s41_d09_pan + + mp.src42(gate) * amt_s42_d09_pan + + mp.src43(gate) * amt_s43_d09_pan + + mp.src44(gate) * amt_s44_d09_pan + + mp.src45(gate) * amt_s45_d09_pan + + mp.src46(gate) * amt_s46_d09_pan + + mp.src47(gate) * amt_s47_d09_pan; + +// --------------------------------------------------------------------------- +// Derived signals +// --------------------------------------------------------------------------- + +N = 64; +PI = ma.PI; + +cent2ratio(c) = pow(2.0, c / 1200.0); +semi2ratio(s) = pow(2.0, s / 12.0); + +// Pitch: modulation (semitones), no glide +fine_ratio = cent2ratio(fine_tune); +pitch_ratio = semi2ratio(mod_pitch(gate) * 12.0); +base_freq = freq * fine_ratio * pitch_ratio; + +// --------------------------------------------------------------------------- +// Per-harmonic base amplitude from group sliders +// --------------------------------------------------------------------------- +group_amp(k) = + ba.if(k == 1, h1_amp, + ba.if(k == 2, h2_amp, + ba.if(k == 3, h3_amp, + ba.if(k == 4, h4_amp, + ba.if(k == 5, h5_amp, + ba.if(k == 6, h6_amp, + ba.if(k == 7, h7_amp, + ba.if(k == 8, h8_amp, + ba.if(k <= 16, h9_16_amp, + ba.if(k <= 32, h17_32_amp, + h33_64_amp)))))))))); + +// Spectral tilt (modulated) — amp *= k^tilt +eff_tilt = spectral_tilt + mod_tilt(gate); +tilt_factor(k) = pow(float(k), eff_tilt); + +// Odd/even balance (modulated, clamped) +eff_odd_even = max(0.0, min(1.0, odd_even + mod_odd_even(gate))); +odd_weight = (1.0 - eff_odd_even) * 2.0; +even_weight = eff_odd_even * 2.0; +odd_even_factor(k) = ba.if(k % 2 == 0, even_weight, odd_weight); + +// Brightness destination: progressive boost/cut on upper partials. +// bright_blend(k): 0 at k=1, 1 at k=N. mod_bright is [-1,+1]. +// factor(k) = 1 + bright_blend(k) * mod_bright. At mod=0 -> unity (neutral). +bright_blend(k) = float(k - 1) / float(N - 1); +mb = mod_bright(gate); +bright_factor(k) = 1.0 + bright_blend(k) * mb; + +// Inharmonicity (modulated, clamped to keep partials monotonic) +eff_inharm = max(0.0, min(0.2, inharmonicity + mod_inharmonicity(gate) * 0.15)); + +// Formant centres (modulated together — mod_formant_ctr shifts both by same amt) +eff_formant_shift = mod_formant_ctr(gate) * 8.0; // ±8 harmonics +eff_f1 = max(1.0, min(32.0, formant1_freq + eff_formant_shift)); +eff_f2 = max(1.0, min(32.0, formant2_freq + eff_formant_shift)); +eff_formant_depth = max(0.0, min(1.0, formant_depth + mod_formant_depth(gate))); + +// Formant shaping — two Gaussian bumps in harmonic-index space +sigma_sq = 1.5 * 1.5; +formant_bump(k, ctr) = exp(-0.5 * (float(k) - ctr) * (float(k) - ctr) / sigma_sq); +formant_factor(k) = + 1.0 + eff_formant_depth * (formant_bump(k, eff_f1) + formant_bump(k, eff_f2)); + +// Combined per-harmonic amplitude +harm_amp(k) = + group_amp(k) * tilt_factor(k) * odd_even_factor(k) * + bright_factor(k) * formant_factor(k); + +// Inharmonic partial frequency: freq_k = k*f0*(1 + B*(k^2 - 1)) +harm_freq(k) = base_freq * float(k) + * (1.0 + eff_inharm * (float(k) * float(k) - 1.0)); + +// Stereo spread — R channel gets a small per-harmonic pitch offset +stereo_spread_freq(k) = stereo_phase_spread * float(k) * 0.01; + +// --------------------------------------------------------------------------- +// Additive oscillator sums — L and R +// --------------------------------------------------------------------------- +additive_L = sum(k, N, harm_amp(k+1) * os.osc(harm_freq(k+1))); +additive_R = sum(k, N, + harm_amp(k+1) * os.osc(harm_freq(k+1) * (1.0 + stereo_spread_freq(k+1)))); + +// Sub-harmonic (0.5× fundamental) +sub_osc = sub_harmonic * os.osc(base_freq * 0.5); + +// --------------------------------------------------------------------------- +// Noise floor — coloured via one-pole LP +// --------------------------------------------------------------------------- +eff_noise = max(0.0, min(1.0, noise_floor + mod_noise_mix(gate))); +noise_lp_cutoff = 200.0 + (1.0 - noise_color) * 19800.0; +noise_signal = no.noise : fi.lowpass(1, noise_lp_cutoff); +noise_out = eff_noise * noise_signal; + +// --------------------------------------------------------------------------- +// Soft-clip saturation — tanh waveshaper +// --------------------------------------------------------------------------- +drive = 1.0 + saturation * 9.0; +softclip(x) = ma.tanh(x * drive) / drive; + +// --------------------------------------------------------------------------- +// Velocity gain — keeps _vel alive in the JSON descriptor +// --------------------------------------------------------------------------- +vel_gain = (1.0 - 0.3) + 0.3 * vel; + +// --------------------------------------------------------------------------- +// Amplitude and pan (both mod-driven) +// --------------------------------------------------------------------------- +amp_val = max(0.0, min(1.0, mod_amp(gate))) * level * vel_gain; +pan_val = max(-1.0, min(1.0, master_pan + mod_pan(gate))); + +pan_l = cos((pan_val + 1.0) * 0.25 * ma.PI); +pan_r = sin((pan_val + 1.0) * 0.25 * ma.PI); + +raw_L = (additive_L + sub_osc + noise_out) * amp_val; +raw_R = (additive_R + sub_osc + noise_out) * amp_val; + +signal_L = softclip(raw_L) * pan_l; +signal_R = softclip(raw_R) * pan_r; + +process = signal_L, signal_R; diff --git a/playground/faust/modular-additive.json b/playground/faust/modular-additive.json new file mode 100644 index 0000000..86142a6 --- /dev/null +++ b/playground/faust/modular-additive.json @@ -0,0 +1 @@ +{"name": "modular-additive","filename": "modular-additive.dsp","version": "2.79.3","compile_options": "-lang wasm -ct 1 -cn modular_additive -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0","library_list": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/stdfaust.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/maths.lib","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust/mod-pool.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/oscillators.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/platform.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/basics.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/envelopes.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/signals.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/noises.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/filters.lib"],"include_pathnames": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust"],"size": 266528,"code": "Ly8gbW9kdWxhci1hZGRpdGl2ZS5kc3Ag4oCUIDY0LXBhcnRpYWwgYWRkaXRpdmUgdm9pY2UgZm9yIHRoZSAiTW9kdWxhciIgbW9kZS4KLy8KLy8gQVVUTy1HRU5FUkFURUQgYnkgZ2VuLW1vZHVsYXItZHNwLnB5LiBETyBOT1QgRURJVCBCWSBIQU5ELgovLyBSZWdlbmVyYXRlIHdpdGg6Ci8vICAgICBjZCBwbGF5Z3JvdW5kL2ZhdXN0ICYmIHB5dGhvbjMgZ2VuLW1vZHVsYXItZHNwLnB5Ci8vCi8vIEF1ZGlvIHBhdGg6IDY0IGhhcm1vbmljIHNpbmVzIHdpdGggc3BlY3RyYWwgZGVzY3JpcHRvcnMgKHRpbHQsIG9kZC9ldmVuLCBmb3JtYW50cykuCi8vIEFsbCBlbnZlbG9wZXMgYW5kIExGT3MgY29tZSBmcm9tIG1vZC1wb29sLmxpYiB2aWEgYSA0OC1zb3VyY2Ugw5cgMTAtZGVzdAovLyBtb2R1bGF0aW9uIG1hdHJpeC4gTm8gaW50ZXJuYWwgZW52cy9MRk9zLgovLwovLyBNb2R1bGF0aW9uIGRlc3RpbmF0aW9ucyAoMTApOgovLyAgICAgMCBwaXRjaCAgICAgICAgICAgICBzZW1pdG9uZXMsIGFwcGxpZWQgdG8gdGhlIGZ1bmRhbWVudGFsIGZyZXF1ZW5jeQovLyAgICAgMSBicmlnaHQgICAgICAgICAgICBoaWdoLXBhcnRpYWwgZ3JvdXAgYW1wbGl0dWRlIGJvb3N0L2N1dCAocmVwbGFjZXMgYnJpZ2h0IGVudikKLy8gICAgIDIgdGlsdCAgICAgICAgICAgICAgYWRkZWQgdG8gc3BlY3RyYWxfdGlsdCBrbm9iCi8vICAgICAzIGluaGFybW9uaWNpdHkgICAgIGFkZGVkIHRvIGluaGFybW9uaWNpdHkga25vYgovLyAgICAgNCBvZGRfZXZlbiAgICAgICAgICBhZGRlZCB0byBvZGQvZXZlbiBiYWxhbmNlIGtub2IKLy8gICAgIDUgZm9ybWFudF9jdHIgICAgICAgc2hpZnRzIGJvdGggZm9ybWFudCBjZW50cmUgZnJlcXVlbmNpZXMgKGhhcm1vbmljIGluZGV4KQovLyAgICAgNiBmb3JtYW50X2RlcHRoICAgICBhZGRlZCB0byBmb3JtYW50X2RlcHRoIGtub2IKLy8gICAgIDcgbm9pc2VfbWl4ICAgICAgICAgYWRkZWQgdG8gbm9pc2VfZmxvb3Iga25vYiAoY2xhbXBlZCAwLi4xKQovLyAgICAgOCBhbXAgICAgICAgICAgICAgICBtYXN0ZXIgYW1wbGl0dWRlIGRlc3QgKHJvdXRlIGFuIEFEU1IgaGVyZSBmb3IgYSBWQ0EgZW52KQovLyAgICAgOSBwYW4gICAgICAgICAgICAgICBzdGVyZW8gYmFsYW5jZQovLwovLyBIaWRkZW4gY29udHJvbHMgKGRyaXZlbiBieSBub3RlT24vbm90ZU9mZiwgbm90IGJ5IHRoZSBNTCBlbmdpbmUpOgovLyAgICAgZnJlcSwgZ2F0ZSwgX3ZlbAovLwovLyBCdWlsZDoKLy8gICAgIGNkIHBsYXlncm91bmQvZmF1c3QgJiYgLi9idWlsZC5zaAovLwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmltcG9ydCgic3RkZmF1c3QubGliIik7Cm1wID0gbGlicmFyeSgibW9kLXBvb2wubGliIik7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gSGlkZGVuIGNvbnRyb2xzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpmcmVxID0gaHNsaWRlcigiMF9IaWRkZW4vZnJlcVtoaWRkZW46MV1bdW5pdDpIel0iLCAyMjAsIDIwLCA0MDAwLCAwLjAxKTsKZ2F0ZSA9IGJ1dHRvbigiMF9IaWRkZW4vZ2F0ZVtoaWRkZW46MV0iKTsKdmVsICA9IGhzbGlkZXIoIjBfSGlkZGVuL192ZWxbaGlkZGVuOjFdIiwgMC43LCAwLjAsIDEuMCwgMC4wMDEpIDogc2kuc21vbzsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBHcm91cCAxIOKAlCBTcGVjdHJhbCBTaGFwZSAoaGFybW9uaWMgYmFuayArIGRlc2NyaXB0b3JzKQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KaDFfYW1wICAgICAgICA9IGhzbGlkZXIoIjFfU3BlY3RyYWwvMDBfaDFfYW1wIiwgICAgICAgIDAuOCwgICAwLjAsIDEuMCwgMC4wMDEpOwpoMl9hbXAgICAgICAgID0gaHNsaWRlcigiMV9TcGVjdHJhbC8wMV9oMl9hbXAiLCAgICAgICAgMC41LCAgIDAuMCwgMS4wLCAwLjAwMSk7CmgzX2FtcCAgICAgICAgPSBoc2xpZGVyKCIxX1NwZWN0cmFsLzAyX2gzX2FtcCIsICAgICAgICAwLjM1LCAgMC4wLCAxLjAsIDAuMDAxKTsKaDRfYW1wICAgICAgICA9IGhzbGlkZXIoIjFfU3BlY3RyYWwvMDNfaDRfYW1wIiwgICAgICAgIDAuMjUsICAwLjAsIDEuMCwgMC4wMDEpOwpoNV9hbXAgICAgICAgID0gaHNsaWRlcigiMV9TcGVjdHJhbC8wNF9oNV9hbXAiLCAgICAgICAgMC4xOCwgIDAuMCwgMS4wLCAwLjAwMSk7Cmg2X2FtcCAgICAgICAgPSBoc2xpZGVyKCIxX1NwZWN0cmFsLzA1X2g2X2FtcCIsICAgICAgICAwLjEyLCAgMC4wLCAxLjAsIDAuMDAxKTsKaDdfYW1wICAgICAgICA9IGhzbGlkZXIoIjFfU3BlY3RyYWwvMDZfaDdfYW1wIiwgICAgICAgIDAuMDgsICAwLjAsIDEuMCwgMC4wMDEpOwpoOF9hbXAgICAgICAgID0gaHNsaWRlcigiMV9TcGVjdHJhbC8wN19oOF9hbXAiLCAgICAgICAgMC4wNiwgIDAuMCwgMS4wLCAwLjAwMSk7Cmg5XzE2X2FtcCAgICAgPSBoc2xpZGVyKCIxX1NwZWN0cmFsLzA4X2g5XzE2X2FtcCIsICAgICAwLjA1LCAgMC4wLCAxLjAsIDAuMDAxKTsKaDE3XzMyX2FtcCAgICA9IGhzbGlkZXIoIjFfU3BlY3RyYWwvMDlfaDE3XzMyX2FtcCIsICAgIDAuMDI1LCAwLjAsIDEuMCwgMC4wMDEpOwpoMzNfNjRfYW1wICAgID0gaHNsaWRlcigiMV9TcGVjdHJhbC8xMF9oMzNfNjRfYW1wIiwgICAgMC4wMSwgIDAuMCwgMS4wLCAwLjAwMSk7CnNwZWN0cmFsX3RpbHQgPSBoc2xpZGVyKCIxX1NwZWN0cmFsLzExX3NwZWN0cmFsX3RpbHQiLCAwLjAsICAtMS4wLCAxLjAsIDAuMDAxKTsKaW5oYXJtb25pY2l0eSA9IGhzbGlkZXIoIjFfU3BlY3RyYWwvMTJfaW5oYXJtb25pY2l0eSIsIDAuMCwgICAwLjAsIDAuMTUsIDAuMDAwMSk7Cm9kZF9ldmVuICAgICAgPSBoc2xpZGVyKCIxX1NwZWN0cmFsLzEzX29kZF9ldmVuIiwgICAgICAwLjUsICAgMC4wLCAxLjAsIDAuMDAxKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBHcm91cCAyIOKAlCBGb3JtYW50cyAmIE5vaXNlCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpmb3JtYW50MV9mcmVxID0gaHNsaWRlcigiMl9Gb3JtYW50cy8wMF9mb3JtYW50MV9mcmVxW3Rvb2x0aXA6Rm9ybWFudCAxIGhhcm1vbmljIGlkeF0iLCAzLjAsIDEuMCwgMTYuMCwgMC4wMSk7CmZvcm1hbnQyX2ZyZXEgPSBoc2xpZGVyKCIyX0Zvcm1hbnRzLzAxX2Zvcm1hbnQyX2ZyZXFbdG9vbHRpcDpGb3JtYW50IDIgaGFybW9uaWMgaWR4XSIsIDYuMCwgMS4wLCAxNi4wLCAwLjAxKTsKZm9ybWFudF9kZXB0aCA9IGhzbGlkZXIoIjJfRm9ybWFudHMvMDJfZm9ybWFudF9kZXB0aCIsIDAuMCwgMC4wLCAxLjAsIDAuMDAxKTsKbm9pc2VfZmxvb3IgICA9IGhzbGlkZXIoIjJfRm9ybWFudHMvMDNfbm9pc2VfZmxvb3IiLCAgIDAuMCwgMC4wLCAwLjIsIDAuMDAxKTsKbm9pc2VfY29sb3IgICA9IGhzbGlkZXIoIjJfRm9ybWFudHMvMDRfbm9pc2VfY29sb3IiLCAgIDAuNSwgMC4wLCAxLjAsIDAuMDAxKTsKc3ViX2hhcm1vbmljICA9IGhzbGlkZXIoIjJfRm9ybWFudHMvMDVfc3ViX2hhcm1vbmljIiwgIDAuMCwgMC4wLCAxLjAsIDAuMDAxKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBHcm91cCAzIOKAlCBNYXN0ZXIKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmxldmVsICAgICAgICAgICAgICA9IGhzbGlkZXIoIjNfTWFzdGVyLzAwX2xldmVsIiwgICAgICAgICAgICAgIDAuNywgIDAuMCwgMS4wLCAwLjAwMSk7CmZpbmVfdHVuZSAgICAgICAgICA9IGhzbGlkZXIoIjNfTWFzdGVyLzAxX2ZpbmVfdHVuZVt1bml0OmN0XSIsIDAuMCwgLTUwLjAsIDUwLjAsIDAuMSk7CnNhdHVyYXRpb24gICAgICAgICA9IGhzbGlkZXIoIjNfTWFzdGVyLzAyX3NhdHVyYXRpb24iLCAgICAgICAgIDAuMCwgIDAuMCwgMS4wLCAwLjAwMSk7CnN0ZXJlb19waGFzZV9zcHJlYWQ9IGhzbGlkZXIoIjNfTWFzdGVyLzAzX3N0ZXJlb19waGFzZV9zcHJlYWQiLDAuMSwgIDAuMCwgMS4wLCAwLjAwMSk7Cm1hc3Rlcl9wYW4gICAgICAgICA9IGhzbGlkZXIoIjNfTWFzdGVyLzA0X21hc3Rlcl9wYW4iLCAgICAgICAgIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gTW9kdWxhdGlvbiBtYXRyaXgg4oCUIDQ4IHNvdXJjZXMgw5cgMTAgZGVzdGluYXRpb25zLgovLyBFYWNoIGhzbGlkZXIgaXMgb25lICJhbW91bnQiIGVudHJ5IGluIFstMSwgKzFdLiBaZXJvID0gbm8gY29ubmVjdGlvbi4KLy8gR3JvdXAgIk1NX01hdHJpeCIgc28gdGhlIHBhcmFtTWV0YSBwYXJzZXIgY2FuIHJlY29nbmlzZSBtYXRyaXggcGFyYW1zLgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIE1hdHJpeCBjb2x1bW46IGRlc3RpbmF0aW9uIDAgPSBwaXRjaAphbXRfczAwX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDBfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMV9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAxX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDJfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMl9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAzX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDNfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNF9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA0X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDVfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNV9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA2X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDZfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwN19kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA3X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDhfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOF9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA5X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDlfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMF9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEwX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTFfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMV9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEyX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTJfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxM19kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEzX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTRfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNF9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE1X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTVfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNl9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE2X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTdfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MxN19kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE4X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMThfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOV9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE5X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjBfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMF9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIxX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjFfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMl9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIyX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjNfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MyM19kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI0X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjRfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNV9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI1X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjZfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNl9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI3X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjdfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOF9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI4X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjlfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOV9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMwX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzBfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMV9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMxX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzJfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMl9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMzX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzNfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNF9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM0X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzVfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNV9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM2X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzZfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzN19kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM3X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzhfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOF9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM5X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzlfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MF9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQwX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDFfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MV9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQyX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDJfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0M19kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQzX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDRfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NF9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ1X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDVfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Nl9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ2X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDdfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3M0N19kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwoKLy8gTWF0cml4IGNvbHVtbjogZGVzdGluYXRpb24gMSA9IGJyaWdodAphbXRfczAwX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAwX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAxX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAxX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAyX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAyX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAzX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAzX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA0X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA0X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA1X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA1X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA2X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA2X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA3X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA3X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA4X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA4X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA5X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA5X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEwX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEwX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczExX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczExX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEyX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEyX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEzX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEzX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE0X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE0X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE1X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE1X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE2X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE2X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE3X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE3X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE4X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE4X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE5X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE5X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIwX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIwX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIxX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIxX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIyX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIyX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIzX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIzX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI0X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI0X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI1X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI1X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI2X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI2X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI3X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI3X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI4X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI4X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI5X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI5X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMwX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMwX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMxX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMxX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMyX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMyX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMzX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMzX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM0X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM0X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM1X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM1X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM2X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM2X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM3X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM3X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM4X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM4X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM5X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM5X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQwX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQwX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQxX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQxX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQyX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQyX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQzX2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQzX2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ0X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ0X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ1X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ1X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ2X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ2X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ3X2QwMV9icmlnaHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ3X2QwMV9icmlnaHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwoKLy8gTWF0cml4IGNvbHVtbjogZGVzdGluYXRpb24gMiA9IHRpbHQKYW10X3MwMF9kMDJfdGlsdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDBfZDAyX3RpbHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAxX2QwMl90aWx0ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMV9kMDJfdGlsdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDJfZDAyX3RpbHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAyX2QwMl90aWx0IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwM19kMDJfdGlsdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDNfZDAyX3RpbHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA0X2QwMl90aWx0ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNF9kMDJfdGlsdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDVfZDAyX3RpbHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA1X2QwMl90aWx0IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNl9kMDJfdGlsdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDZfZDAyX3RpbHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA3X2QwMl90aWx0ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwN19kMDJfdGlsdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDhfZDAyX3RpbHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA4X2QwMl90aWx0IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOV9kMDJfdGlsdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDlfZDAyX3RpbHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEwX2QwMl90aWx0ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMF9kMDJfdGlsdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTFfZDAyX3RpbHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczExX2QwMl90aWx0IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMl9kMDJfdGlsdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTJfZDAyX3RpbHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEzX2QwMl90aWx0ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxM19kMDJfdGlsdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTRfZDAyX3RpbHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE0X2QwMl90aWx0IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNV9kMDJfdGlsdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTVfZDAyX3RpbHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE2X2QwMl90aWx0ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNl9kMDJfdGlsdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTdfZDAyX3RpbHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE3X2QwMl90aWx0IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOF9kMDJfdGlsdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMThfZDAyX3RpbHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE5X2QwMl90aWx0ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOV9kMDJfdGlsdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjBfZDAyX3RpbHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIwX2QwMl90aWx0IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMV9kMDJfdGlsdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjFfZDAyX3RpbHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIyX2QwMl90aWx0ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMl9kMDJfdGlsdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjNfZDAyX3RpbHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIzX2QwMl90aWx0IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNF9kMDJfdGlsdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjRfZDAyX3RpbHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI1X2QwMl90aWx0ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNV9kMDJfdGlsdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjZfZDAyX3RpbHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI2X2QwMl90aWx0IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyN19kMDJfdGlsdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjdfZDAyX3RpbHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI4X2QwMl90aWx0ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOF9kMDJfdGlsdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjlfZDAyX3RpbHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI5X2QwMl90aWx0IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMF9kMDJfdGlsdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzBfZDAyX3RpbHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMxX2QwMl90aWx0ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMV9kMDJfdGlsdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzJfZDAyX3RpbHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMyX2QwMl90aWx0IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzM19kMDJfdGlsdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzNfZDAyX3RpbHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM0X2QwMl90aWx0ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNF9kMDJfdGlsdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzVfZDAyX3RpbHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM1X2QwMl90aWx0IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNl9kMDJfdGlsdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzZfZDAyX3RpbHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM3X2QwMl90aWx0ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzN19kMDJfdGlsdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzhfZDAyX3RpbHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM4X2QwMl90aWx0IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOV9kMDJfdGlsdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzlfZDAyX3RpbHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQwX2QwMl90aWx0ID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MF9kMDJfdGlsdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDFfZDAyX3RpbHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQxX2QwMl90aWx0IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Ml9kMDJfdGlsdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDJfZDAyX3RpbHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQzX2QwMl90aWx0ID0gaHNsaWRlcigiTU1fTWF0cml4L3M0M19kMDJfdGlsdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDRfZDAyX3RpbHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ0X2QwMl90aWx0IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NV9kMDJfdGlsdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDVfZDAyX3RpbHQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ2X2QwMl90aWx0ID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Nl9kMDJfdGlsdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDdfZDAyX3RpbHQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ3X2QwMl90aWx0IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKCi8vIE1hdHJpeCBjb2x1bW46IGRlc3RpbmF0aW9uIDMgPSBpbmhhcm1vbmljaXR5CmFtdF9zMDBfZDAzX2luaGFybW9uaWNpdHkgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAwX2QwM19pbmhhcm1vbmljaXR5IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMV9kMDNfaW5oYXJtb25pY2l0eSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDFfZDAzX2luaGFybW9uaWNpdHkiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAyX2QwM19pbmhhcm1vbmljaXR5ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMl9kMDNfaW5oYXJtb25pY2l0eSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDNfZDAzX2luaGFybW9uaWNpdHkgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAzX2QwM19pbmhhcm1vbmljaXR5IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNF9kMDNfaW5oYXJtb25pY2l0eSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDRfZDAzX2luaGFybW9uaWNpdHkiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA1X2QwM19pbmhhcm1vbmljaXR5ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNV9kMDNfaW5oYXJtb25pY2l0eSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDZfZDAzX2luaGFybW9uaWNpdHkgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA2X2QwM19pbmhhcm1vbmljaXR5IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwN19kMDNfaW5oYXJtb25pY2l0eSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDdfZDAzX2luaGFybW9uaWNpdHkiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA4X2QwM19pbmhhcm1vbmljaXR5ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOF9kMDNfaW5oYXJtb25pY2l0eSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDlfZDAzX2luaGFybW9uaWNpdHkgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA5X2QwM19pbmhhcm1vbmljaXR5IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMF9kMDNfaW5oYXJtb25pY2l0eSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTBfZDAzX2luaGFybW9uaWNpdHkiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczExX2QwM19pbmhhcm1vbmljaXR5ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMV9kMDNfaW5oYXJtb25pY2l0eSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTJfZDAzX2luaGFybW9uaWNpdHkgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEyX2QwM19pbmhhcm1vbmljaXR5IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxM19kMDNfaW5oYXJtb25pY2l0eSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTNfZDAzX2luaGFybW9uaWNpdHkiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE0X2QwM19pbmhhcm1vbmljaXR5ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNF9kMDNfaW5oYXJtb25pY2l0eSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTVfZDAzX2luaGFybW9uaWNpdHkgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE1X2QwM19pbmhhcm1vbmljaXR5IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNl9kMDNfaW5oYXJtb25pY2l0eSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTZfZDAzX2luaGFybW9uaWNpdHkiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE3X2QwM19pbmhhcm1vbmljaXR5ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxN19kMDNfaW5oYXJtb25pY2l0eSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMThfZDAzX2luaGFybW9uaWNpdHkgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE4X2QwM19pbmhhcm1vbmljaXR5IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOV9kMDNfaW5oYXJtb25pY2l0eSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTlfZDAzX2luaGFybW9uaWNpdHkiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIwX2QwM19pbmhhcm1vbmljaXR5ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMF9kMDNfaW5oYXJtb25pY2l0eSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjFfZDAzX2luaGFybW9uaWNpdHkgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIxX2QwM19pbmhhcm1vbmljaXR5IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMl9kMDNfaW5oYXJtb25pY2l0eSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjJfZDAzX2luaGFybW9uaWNpdHkiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIzX2QwM19pbmhhcm1vbmljaXR5ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyM19kMDNfaW5oYXJtb25pY2l0eSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjRfZDAzX2luaGFybW9uaWNpdHkgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI0X2QwM19pbmhhcm1vbmljaXR5IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNV9kMDNfaW5oYXJtb25pY2l0eSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjVfZDAzX2luaGFybW9uaWNpdHkiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI2X2QwM19pbmhhcm1vbmljaXR5ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNl9kMDNfaW5oYXJtb25pY2l0eSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjdfZDAzX2luaGFybW9uaWNpdHkgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI3X2QwM19pbmhhcm1vbmljaXR5IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOF9kMDNfaW5oYXJtb25pY2l0eSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjhfZDAzX2luaGFybW9uaWNpdHkiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI5X2QwM19pbmhhcm1vbmljaXR5ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOV9kMDNfaW5oYXJtb25pY2l0eSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzBfZDAzX2luaGFybW9uaWNpdHkgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMwX2QwM19pbmhhcm1vbmljaXR5IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMV9kMDNfaW5oYXJtb25pY2l0eSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzFfZDAzX2luaGFybW9uaWNpdHkiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMyX2QwM19pbmhhcm1vbmljaXR5ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMl9kMDNfaW5oYXJtb25pY2l0eSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzNfZDAzX2luaGFybW9uaWNpdHkgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMzX2QwM19pbmhhcm1vbmljaXR5IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNF9kMDNfaW5oYXJtb25pY2l0eSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzRfZDAzX2luaGFybW9uaWNpdHkiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM1X2QwM19pbmhhcm1vbmljaXR5ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNV9kMDNfaW5oYXJtb25pY2l0eSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzZfZDAzX2luaGFybW9uaWNpdHkgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM2X2QwM19pbmhhcm1vbmljaXR5IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzN19kMDNfaW5oYXJtb25pY2l0eSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzdfZDAzX2luaGFybW9uaWNpdHkiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM4X2QwM19pbmhhcm1vbmljaXR5ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOF9kMDNfaW5oYXJtb25pY2l0eSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzlfZDAzX2luaGFybW9uaWNpdHkgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM5X2QwM19pbmhhcm1vbmljaXR5IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MF9kMDNfaW5oYXJtb25pY2l0eSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDBfZDAzX2luaGFybW9uaWNpdHkiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQxX2QwM19pbmhhcm1vbmljaXR5ID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MV9kMDNfaW5oYXJtb25pY2l0eSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDJfZDAzX2luaGFybW9uaWNpdHkgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQyX2QwM19pbmhhcm1vbmljaXR5IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0M19kMDNfaW5oYXJtb25pY2l0eSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDNfZDAzX2luaGFybW9uaWNpdHkiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ0X2QwM19pbmhhcm1vbmljaXR5ID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NF9kMDNfaW5oYXJtb25pY2l0eSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDVfZDAzX2luaGFybW9uaWNpdHkgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ1X2QwM19pbmhhcm1vbmljaXR5IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Nl9kMDNfaW5oYXJtb25pY2l0eSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDZfZDAzX2luaGFybW9uaWNpdHkiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ3X2QwM19pbmhhcm1vbmljaXR5ID0gaHNsaWRlcigiTU1fTWF0cml4L3M0N19kMDNfaW5oYXJtb25pY2l0eSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CgovLyBNYXRyaXggY29sdW1uOiBkZXN0aW5hdGlvbiA0ID0gb2RkX2V2ZW4KYW10X3MwMF9kMDRfb2RkX2V2ZW4gPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAwX2QwNF9vZGRfZXZlbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDFfZDA0X29kZF9ldmVuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMV9kMDRfb2RkX2V2ZW4iLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAyX2QwNF9vZGRfZXZlbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDJfZDA0X29kZF9ldmVuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwM19kMDRfb2RkX2V2ZW4gPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAzX2QwNF9vZGRfZXZlbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDRfZDA0X29kZF9ldmVuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNF9kMDRfb2RkX2V2ZW4iLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA1X2QwNF9vZGRfZXZlbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDVfZDA0X29kZF9ldmVuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNl9kMDRfb2RkX2V2ZW4gPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA2X2QwNF9vZGRfZXZlbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDdfZDA0X29kZF9ldmVuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwN19kMDRfb2RkX2V2ZW4iLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA4X2QwNF9vZGRfZXZlbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDhfZDA0X29kZF9ldmVuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOV9kMDRfb2RkX2V2ZW4gPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA5X2QwNF9vZGRfZXZlbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTBfZDA0X29kZF9ldmVuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMF9kMDRfb2RkX2V2ZW4iLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczExX2QwNF9vZGRfZXZlbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTFfZDA0X29kZF9ldmVuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMl9kMDRfb2RkX2V2ZW4gPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEyX2QwNF9vZGRfZXZlbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTNfZDA0X29kZF9ldmVuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxM19kMDRfb2RkX2V2ZW4iLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE0X2QwNF9vZGRfZXZlbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTRfZDA0X29kZF9ldmVuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNV9kMDRfb2RkX2V2ZW4gPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE1X2QwNF9vZGRfZXZlbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTZfZDA0X29kZF9ldmVuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNl9kMDRfb2RkX2V2ZW4iLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE3X2QwNF9vZGRfZXZlbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTdfZDA0X29kZF9ldmVuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOF9kMDRfb2RkX2V2ZW4gPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE4X2QwNF9vZGRfZXZlbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTlfZDA0X29kZF9ldmVuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOV9kMDRfb2RkX2V2ZW4iLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIwX2QwNF9vZGRfZXZlbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjBfZDA0X29kZF9ldmVuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMV9kMDRfb2RkX2V2ZW4gPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIxX2QwNF9vZGRfZXZlbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjJfZDA0X29kZF9ldmVuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMl9kMDRfb2RkX2V2ZW4iLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIzX2QwNF9vZGRfZXZlbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjNfZDA0X29kZF9ldmVuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNF9kMDRfb2RkX2V2ZW4gPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI0X2QwNF9vZGRfZXZlbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjVfZDA0X29kZF9ldmVuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNV9kMDRfb2RkX2V2ZW4iLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI2X2QwNF9vZGRfZXZlbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjZfZDA0X29kZF9ldmVuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyN19kMDRfb2RkX2V2ZW4gPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI3X2QwNF9vZGRfZXZlbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjhfZDA0X29kZF9ldmVuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOF9kMDRfb2RkX2V2ZW4iLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI5X2QwNF9vZGRfZXZlbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjlfZDA0X29kZF9ldmVuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMF9kMDRfb2RkX2V2ZW4gPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMwX2QwNF9vZGRfZXZlbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzFfZDA0X29kZF9ldmVuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMV9kMDRfb2RkX2V2ZW4iLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMyX2QwNF9vZGRfZXZlbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzJfZDA0X29kZF9ldmVuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzM19kMDRfb2RkX2V2ZW4gPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMzX2QwNF9vZGRfZXZlbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzRfZDA0X29kZF9ldmVuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNF9kMDRfb2RkX2V2ZW4iLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM1X2QwNF9vZGRfZXZlbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzVfZDA0X29kZF9ldmVuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNl9kMDRfb2RkX2V2ZW4gPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM2X2QwNF9vZGRfZXZlbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzdfZDA0X29kZF9ldmVuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzN19kMDRfb2RkX2V2ZW4iLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM4X2QwNF9vZGRfZXZlbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzhfZDA0X29kZF9ldmVuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOV9kMDRfb2RkX2V2ZW4gPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM5X2QwNF9vZGRfZXZlbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDBfZDA0X29kZF9ldmVuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MF9kMDRfb2RkX2V2ZW4iLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQxX2QwNF9vZGRfZXZlbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDFfZDA0X29kZF9ldmVuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Ml9kMDRfb2RkX2V2ZW4gPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQyX2QwNF9vZGRfZXZlbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDNfZDA0X29kZF9ldmVuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0M19kMDRfb2RkX2V2ZW4iLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ0X2QwNF9vZGRfZXZlbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDRfZDA0X29kZF9ldmVuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NV9kMDRfb2RkX2V2ZW4gPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ1X2QwNF9vZGRfZXZlbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDZfZDA0X29kZF9ldmVuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Nl9kMDRfb2RkX2V2ZW4iLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ3X2QwNF9vZGRfZXZlbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDdfZDA0X29kZF9ldmVuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKCi8vIE1hdHJpeCBjb2x1bW46IGRlc3RpbmF0aW9uIDUgPSBmb3JtYW50X2N0cgphbXRfczAwX2QwNV9mb3JtYW50X2N0ciA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDBfZDA1X2Zvcm1hbnRfY3RyIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMV9kMDVfZm9ybWFudF9jdHIgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAxX2QwNV9mb3JtYW50X2N0ciIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDJfZDA1X2Zvcm1hbnRfY3RyID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMl9kMDVfZm9ybWFudF9jdHIiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAzX2QwNV9mb3JtYW50X2N0ciA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDNfZDA1X2Zvcm1hbnRfY3RyIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNF9kMDVfZm9ybWFudF9jdHIgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA0X2QwNV9mb3JtYW50X2N0ciIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDVfZDA1X2Zvcm1hbnRfY3RyID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNV9kMDVfZm9ybWFudF9jdHIiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA2X2QwNV9mb3JtYW50X2N0ciA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDZfZDA1X2Zvcm1hbnRfY3RyIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwN19kMDVfZm9ybWFudF9jdHIgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA3X2QwNV9mb3JtYW50X2N0ciIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDhfZDA1X2Zvcm1hbnRfY3RyID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOF9kMDVfZm9ybWFudF9jdHIiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA5X2QwNV9mb3JtYW50X2N0ciA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDlfZDA1X2Zvcm1hbnRfY3RyIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMF9kMDVfZm9ybWFudF9jdHIgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEwX2QwNV9mb3JtYW50X2N0ciIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTFfZDA1X2Zvcm1hbnRfY3RyID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMV9kMDVfZm9ybWFudF9jdHIiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEyX2QwNV9mb3JtYW50X2N0ciA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTJfZDA1X2Zvcm1hbnRfY3RyIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxM19kMDVfZm9ybWFudF9jdHIgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEzX2QwNV9mb3JtYW50X2N0ciIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTRfZDA1X2Zvcm1hbnRfY3RyID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNF9kMDVfZm9ybWFudF9jdHIiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE1X2QwNV9mb3JtYW50X2N0ciA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTVfZDA1X2Zvcm1hbnRfY3RyIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNl9kMDVfZm9ybWFudF9jdHIgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE2X2QwNV9mb3JtYW50X2N0ciIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTdfZDA1X2Zvcm1hbnRfY3RyID0gaHNsaWRlcigiTU1fTWF0cml4L3MxN19kMDVfZm9ybWFudF9jdHIiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE4X2QwNV9mb3JtYW50X2N0ciA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMThfZDA1X2Zvcm1hbnRfY3RyIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOV9kMDVfZm9ybWFudF9jdHIgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE5X2QwNV9mb3JtYW50X2N0ciIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjBfZDA1X2Zvcm1hbnRfY3RyID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMF9kMDVfZm9ybWFudF9jdHIiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIxX2QwNV9mb3JtYW50X2N0ciA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjFfZDA1X2Zvcm1hbnRfY3RyIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMl9kMDVfZm9ybWFudF9jdHIgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIyX2QwNV9mb3JtYW50X2N0ciIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjNfZDA1X2Zvcm1hbnRfY3RyID0gaHNsaWRlcigiTU1fTWF0cml4L3MyM19kMDVfZm9ybWFudF9jdHIiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI0X2QwNV9mb3JtYW50X2N0ciA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjRfZDA1X2Zvcm1hbnRfY3RyIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNV9kMDVfZm9ybWFudF9jdHIgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI1X2QwNV9mb3JtYW50X2N0ciIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjZfZDA1X2Zvcm1hbnRfY3RyID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNl9kMDVfZm9ybWFudF9jdHIiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI3X2QwNV9mb3JtYW50X2N0ciA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjdfZDA1X2Zvcm1hbnRfY3RyIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOF9kMDVfZm9ybWFudF9jdHIgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI4X2QwNV9mb3JtYW50X2N0ciIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjlfZDA1X2Zvcm1hbnRfY3RyID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOV9kMDVfZm9ybWFudF9jdHIiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMwX2QwNV9mb3JtYW50X2N0ciA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzBfZDA1X2Zvcm1hbnRfY3RyIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMV9kMDVfZm9ybWFudF9jdHIgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMxX2QwNV9mb3JtYW50X2N0ciIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzJfZDA1X2Zvcm1hbnRfY3RyID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMl9kMDVfZm9ybWFudF9jdHIiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMzX2QwNV9mb3JtYW50X2N0ciA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzNfZDA1X2Zvcm1hbnRfY3RyIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNF9kMDVfZm9ybWFudF9jdHIgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM0X2QwNV9mb3JtYW50X2N0ciIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzVfZDA1X2Zvcm1hbnRfY3RyID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNV9kMDVfZm9ybWFudF9jdHIiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM2X2QwNV9mb3JtYW50X2N0ciA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzZfZDA1X2Zvcm1hbnRfY3RyIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzN19kMDVfZm9ybWFudF9jdHIgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM3X2QwNV9mb3JtYW50X2N0ciIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzhfZDA1X2Zvcm1hbnRfY3RyID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOF9kMDVfZm9ybWFudF9jdHIiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM5X2QwNV9mb3JtYW50X2N0ciA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzlfZDA1X2Zvcm1hbnRfY3RyIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MF9kMDVfZm9ybWFudF9jdHIgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQwX2QwNV9mb3JtYW50X2N0ciIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDFfZDA1X2Zvcm1hbnRfY3RyID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MV9kMDVfZm9ybWFudF9jdHIiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQyX2QwNV9mb3JtYW50X2N0ciA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDJfZDA1X2Zvcm1hbnRfY3RyIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0M19kMDVfZm9ybWFudF9jdHIgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQzX2QwNV9mb3JtYW50X2N0ciIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDRfZDA1X2Zvcm1hbnRfY3RyID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NF9kMDVfZm9ybWFudF9jdHIiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ1X2QwNV9mb3JtYW50X2N0ciA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDVfZDA1X2Zvcm1hbnRfY3RyIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Nl9kMDVfZm9ybWFudF9jdHIgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ2X2QwNV9mb3JtYW50X2N0ciIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDdfZDA1X2Zvcm1hbnRfY3RyID0gaHNsaWRlcigiTU1fTWF0cml4L3M0N19kMDVfZm9ybWFudF9jdHIiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwoKLy8gTWF0cml4IGNvbHVtbjogZGVzdGluYXRpb24gNiA9IGZvcm1hbnRfZGVwdGgKYW10X3MwMF9kMDZfZm9ybWFudF9kZXB0aCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDBfZDA2X2Zvcm1hbnRfZGVwdGgiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAxX2QwNl9mb3JtYW50X2RlcHRoID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMV9kMDZfZm9ybWFudF9kZXB0aCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDJfZDA2X2Zvcm1hbnRfZGVwdGggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAyX2QwNl9mb3JtYW50X2RlcHRoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwM19kMDZfZm9ybWFudF9kZXB0aCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDNfZDA2X2Zvcm1hbnRfZGVwdGgiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA0X2QwNl9mb3JtYW50X2RlcHRoID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNF9kMDZfZm9ybWFudF9kZXB0aCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDVfZDA2X2Zvcm1hbnRfZGVwdGggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA1X2QwNl9mb3JtYW50X2RlcHRoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNl9kMDZfZm9ybWFudF9kZXB0aCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDZfZDA2X2Zvcm1hbnRfZGVwdGgiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA3X2QwNl9mb3JtYW50X2RlcHRoID0gaHNsaWRlcigiTU1fTWF0cml4L3MwN19kMDZfZm9ybWFudF9kZXB0aCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDhfZDA2X2Zvcm1hbnRfZGVwdGggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA4X2QwNl9mb3JtYW50X2RlcHRoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOV9kMDZfZm9ybWFudF9kZXB0aCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDlfZDA2X2Zvcm1hbnRfZGVwdGgiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEwX2QwNl9mb3JtYW50X2RlcHRoID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMF9kMDZfZm9ybWFudF9kZXB0aCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTFfZDA2X2Zvcm1hbnRfZGVwdGggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczExX2QwNl9mb3JtYW50X2RlcHRoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMl9kMDZfZm9ybWFudF9kZXB0aCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTJfZDA2X2Zvcm1hbnRfZGVwdGgiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEzX2QwNl9mb3JtYW50X2RlcHRoID0gaHNsaWRlcigiTU1fTWF0cml4L3MxM19kMDZfZm9ybWFudF9kZXB0aCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTRfZDA2X2Zvcm1hbnRfZGVwdGggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE0X2QwNl9mb3JtYW50X2RlcHRoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNV9kMDZfZm9ybWFudF9kZXB0aCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTVfZDA2X2Zvcm1hbnRfZGVwdGgiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE2X2QwNl9mb3JtYW50X2RlcHRoID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNl9kMDZfZm9ybWFudF9kZXB0aCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTdfZDA2X2Zvcm1hbnRfZGVwdGggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE3X2QwNl9mb3JtYW50X2RlcHRoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOF9kMDZfZm9ybWFudF9kZXB0aCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMThfZDA2X2Zvcm1hbnRfZGVwdGgiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE5X2QwNl9mb3JtYW50X2RlcHRoID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOV9kMDZfZm9ybWFudF9kZXB0aCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjBfZDA2X2Zvcm1hbnRfZGVwdGggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIwX2QwNl9mb3JtYW50X2RlcHRoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMV9kMDZfZm9ybWFudF9kZXB0aCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjFfZDA2X2Zvcm1hbnRfZGVwdGgiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIyX2QwNl9mb3JtYW50X2RlcHRoID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMl9kMDZfZm9ybWFudF9kZXB0aCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjNfZDA2X2Zvcm1hbnRfZGVwdGggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIzX2QwNl9mb3JtYW50X2RlcHRoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNF9kMDZfZm9ybWFudF9kZXB0aCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjRfZDA2X2Zvcm1hbnRfZGVwdGgiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI1X2QwNl9mb3JtYW50X2RlcHRoID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNV9kMDZfZm9ybWFudF9kZXB0aCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjZfZDA2X2Zvcm1hbnRfZGVwdGggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI2X2QwNl9mb3JtYW50X2RlcHRoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyN19kMDZfZm9ybWFudF9kZXB0aCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjdfZDA2X2Zvcm1hbnRfZGVwdGgiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI4X2QwNl9mb3JtYW50X2RlcHRoID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOF9kMDZfZm9ybWFudF9kZXB0aCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjlfZDA2X2Zvcm1hbnRfZGVwdGggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI5X2QwNl9mb3JtYW50X2RlcHRoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMF9kMDZfZm9ybWFudF9kZXB0aCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzBfZDA2X2Zvcm1hbnRfZGVwdGgiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMxX2QwNl9mb3JtYW50X2RlcHRoID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMV9kMDZfZm9ybWFudF9kZXB0aCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzJfZDA2X2Zvcm1hbnRfZGVwdGggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMyX2QwNl9mb3JtYW50X2RlcHRoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzM19kMDZfZm9ybWFudF9kZXB0aCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzNfZDA2X2Zvcm1hbnRfZGVwdGgiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM0X2QwNl9mb3JtYW50X2RlcHRoID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNF9kMDZfZm9ybWFudF9kZXB0aCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzVfZDA2X2Zvcm1hbnRfZGVwdGggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM1X2QwNl9mb3JtYW50X2RlcHRoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNl9kMDZfZm9ybWFudF9kZXB0aCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzZfZDA2X2Zvcm1hbnRfZGVwdGgiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM3X2QwNl9mb3JtYW50X2RlcHRoID0gaHNsaWRlcigiTU1fTWF0cml4L3MzN19kMDZfZm9ybWFudF9kZXB0aCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzhfZDA2X2Zvcm1hbnRfZGVwdGggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM4X2QwNl9mb3JtYW50X2RlcHRoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOV9kMDZfZm9ybWFudF9kZXB0aCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzlfZDA2X2Zvcm1hbnRfZGVwdGgiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQwX2QwNl9mb3JtYW50X2RlcHRoID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MF9kMDZfZm9ybWFudF9kZXB0aCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDFfZDA2X2Zvcm1hbnRfZGVwdGggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQxX2QwNl9mb3JtYW50X2RlcHRoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Ml9kMDZfZm9ybWFudF9kZXB0aCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDJfZDA2X2Zvcm1hbnRfZGVwdGgiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQzX2QwNl9mb3JtYW50X2RlcHRoID0gaHNsaWRlcigiTU1fTWF0cml4L3M0M19kMDZfZm9ybWFudF9kZXB0aCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDRfZDA2X2Zvcm1hbnRfZGVwdGggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ0X2QwNl9mb3JtYW50X2RlcHRoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NV9kMDZfZm9ybWFudF9kZXB0aCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDVfZDA2X2Zvcm1hbnRfZGVwdGgiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ2X2QwNl9mb3JtYW50X2RlcHRoID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Nl9kMDZfZm9ybWFudF9kZXB0aCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDdfZDA2X2Zvcm1hbnRfZGVwdGggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ3X2QwNl9mb3JtYW50X2RlcHRoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKCi8vIE1hdHJpeCBjb2x1bW46IGRlc3RpbmF0aW9uIDcgPSBub2lzZV9taXgKYW10X3MwMF9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMF9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMV9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMV9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMl9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMl9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwM19kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwM19kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNF9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNF9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNV9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNV9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNl9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNl9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwN19kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwN19kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOF9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOF9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOV9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOV9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMF9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMF9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMV9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMV9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMl9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMl9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxM19kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxM19kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNF9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNF9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNV9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNV9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNl9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNl9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxN19kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxN19kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOF9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOF9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOV9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOV9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMF9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMF9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMV9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMV9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMl9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMl9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyM19kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyM19kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNF9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNF9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNV9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNV9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNl9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNl9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyN19kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyN19kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOF9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOF9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOV9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOV9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMF9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMF9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMV9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMV9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMl9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMl9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzM19kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzM19kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNF9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNF9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNV9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNV9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNl9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNl9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzN19kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzN19kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOF9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOF9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOV9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOV9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MF9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MF9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MV9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MV9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Ml9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Ml9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0M19kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3M0M19kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NF9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NF9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NV9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NV9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Nl9kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Nl9kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0N19kMDdfbm9pc2VfbWl4ID0gaHNsaWRlcigiTU1fTWF0cml4L3M0N19kMDdfbm9pc2VfbWl4IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKCi8vIE1hdHJpeCBjb2x1bW46IGRlc3RpbmF0aW9uIDggPSBhbXAKYW10X3MwMF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwM19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwM19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwN19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwN19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxM19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxM19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxN19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxN19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyM19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyM19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyN19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyN19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzM19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzM19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzN19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzN19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Ml9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Ml9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0M19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3M0M19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Nl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Nl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0N19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3M0N19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKCi8vIE1hdHJpeCBjb2x1bW46IGRlc3RpbmF0aW9uIDkgPSBwYW4KYW10X3MwMF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwM19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwM19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwN19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwN19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxM19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxM19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxN19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxN19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyM19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyM19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyN19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyN19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzM19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzM19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzN19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzN19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Ml9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Ml9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0M19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0M19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Nl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Nl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0N19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0N19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBEZXN0aW5hdGlvbiBzaWduYWxzIOKAlCBvbmUgcGVyIG1vZHVsYXRpb24gZGVzdGluYXRpb24uIEVhY2ggaXMgYSA0OC10ZXJtCi8vIHdlaWdodGVkIHN1bSBvZiBzb3VyY2VzIMOXIGFtb3VudHMuIFRoZSBgZ2F0ZWAgYXJndW1lbnQgaXMgdGhyZWFkZWQgdGhyb3VnaAovLyBzbyB0aGF0IG1wLnNyYz8/KGdhdGUpIGNhbiBkcml2ZSBBRFNSIGVudmVsb3Blcy4KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgptb2RfcGl0Y2goZ2F0ZSkgPQogICAgbXAuc3JjMDAoZ2F0ZSkgKiBhbXRfczAwX2QwMF9waXRjaCArCiAgICBtcC5zcmMwMShnYXRlKSAqIGFtdF9zMDFfZDAwX3BpdGNoICsKICAgIG1wLnNyYzAyKGdhdGUpICogYW10X3MwMl9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMDMoZ2F0ZSkgKiBhbXRfczAzX2QwMF9waXRjaCArCiAgICBtcC5zcmMwNChnYXRlKSAqIGFtdF9zMDRfZDAwX3BpdGNoICsKICAgIG1wLnNyYzA1KGdhdGUpICogYW10X3MwNV9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMDYoZ2F0ZSkgKiBhbXRfczA2X2QwMF9waXRjaCArCiAgICBtcC5zcmMwNyhnYXRlKSAqIGFtdF9zMDdfZDAwX3BpdGNoICsKICAgIG1wLnNyYzA4KGdhdGUpICogYW10X3MwOF9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMDkoZ2F0ZSkgKiBhbXRfczA5X2QwMF9waXRjaCArCiAgICBtcC5zcmMxMChnYXRlKSAqIGFtdF9zMTBfZDAwX3BpdGNoICsKICAgIG1wLnNyYzExKGdhdGUpICogYW10X3MxMV9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMTIoZ2F0ZSkgKiBhbXRfczEyX2QwMF9waXRjaCArCiAgICBtcC5zcmMxMyhnYXRlKSAqIGFtdF9zMTNfZDAwX3BpdGNoICsKICAgIG1wLnNyYzE0KGdhdGUpICogYW10X3MxNF9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMTUoZ2F0ZSkgKiBhbXRfczE1X2QwMF9waXRjaCArCiAgICBtcC5zcmMxNihnYXRlKSAqIGFtdF9zMTZfZDAwX3BpdGNoICsKICAgIG1wLnNyYzE3KGdhdGUpICogYW10X3MxN19kMDBfcGl0Y2ggKwogICAgbXAuc3JjMTgoZ2F0ZSkgKiBhbXRfczE4X2QwMF9waXRjaCArCiAgICBtcC5zcmMxOShnYXRlKSAqIGFtdF9zMTlfZDAwX3BpdGNoICsKICAgIG1wLnNyYzIwKGdhdGUpICogYW10X3MyMF9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMjEoZ2F0ZSkgKiBhbXRfczIxX2QwMF9waXRjaCArCiAgICBtcC5zcmMyMihnYXRlKSAqIGFtdF9zMjJfZDAwX3BpdGNoICsKICAgIG1wLnNyYzIzKGdhdGUpICogYW10X3MyM19kMDBfcGl0Y2ggKwogICAgbXAuc3JjMjQoZ2F0ZSkgKiBhbXRfczI0X2QwMF9waXRjaCArCiAgICBtcC5zcmMyNShnYXRlKSAqIGFtdF9zMjVfZDAwX3BpdGNoICsKICAgIG1wLnNyYzI2KGdhdGUpICogYW10X3MyNl9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMjcoZ2F0ZSkgKiBhbXRfczI3X2QwMF9waXRjaCArCiAgICBtcC5zcmMyOChnYXRlKSAqIGFtdF9zMjhfZDAwX3BpdGNoICsKICAgIG1wLnNyYzI5KGdhdGUpICogYW10X3MyOV9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMzAoZ2F0ZSkgKiBhbXRfczMwX2QwMF9waXRjaCArCiAgICBtcC5zcmMzMShnYXRlKSAqIGFtdF9zMzFfZDAwX3BpdGNoICsKICAgIG1wLnNyYzMyKGdhdGUpICogYW10X3MzMl9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMzMoZ2F0ZSkgKiBhbXRfczMzX2QwMF9waXRjaCArCiAgICBtcC5zcmMzNChnYXRlKSAqIGFtdF9zMzRfZDAwX3BpdGNoICsKICAgIG1wLnNyYzM1KGdhdGUpICogYW10X3MzNV9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMzYoZ2F0ZSkgKiBhbXRfczM2X2QwMF9waXRjaCArCiAgICBtcC5zcmMzNyhnYXRlKSAqIGFtdF9zMzdfZDAwX3BpdGNoICsKICAgIG1wLnNyYzM4KGdhdGUpICogYW10X3MzOF9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMzkoZ2F0ZSkgKiBhbXRfczM5X2QwMF9waXRjaCArCiAgICBtcC5zcmM0MChnYXRlKSAqIGFtdF9zNDBfZDAwX3BpdGNoICsKICAgIG1wLnNyYzQxKGdhdGUpICogYW10X3M0MV9kMDBfcGl0Y2ggKwogICAgbXAuc3JjNDIoZ2F0ZSkgKiBhbXRfczQyX2QwMF9waXRjaCArCiAgICBtcC5zcmM0MyhnYXRlKSAqIGFtdF9zNDNfZDAwX3BpdGNoICsKICAgIG1wLnNyYzQ0KGdhdGUpICogYW10X3M0NF9kMDBfcGl0Y2ggKwogICAgbXAuc3JjNDUoZ2F0ZSkgKiBhbXRfczQ1X2QwMF9waXRjaCArCiAgICBtcC5zcmM0NihnYXRlKSAqIGFtdF9zNDZfZDAwX3BpdGNoICsKICAgIG1wLnNyYzQ3KGdhdGUpICogYW10X3M0N19kMDBfcGl0Y2g7Cgptb2RfYnJpZ2h0KGdhdGUpID0KICAgIG1wLnNyYzAwKGdhdGUpICogYW10X3MwMF9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzAxKGdhdGUpICogYW10X3MwMV9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzAyKGdhdGUpICogYW10X3MwMl9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzAzKGdhdGUpICogYW10X3MwM19kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzA0KGdhdGUpICogYW10X3MwNF9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzA1KGdhdGUpICogYW10X3MwNV9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzA2KGdhdGUpICogYW10X3MwNl9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzA3KGdhdGUpICogYW10X3MwN19kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzA4KGdhdGUpICogYW10X3MwOF9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzA5KGdhdGUpICogYW10X3MwOV9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzEwKGdhdGUpICogYW10X3MxMF9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzExKGdhdGUpICogYW10X3MxMV9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzEyKGdhdGUpICogYW10X3MxMl9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzEzKGdhdGUpICogYW10X3MxM19kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzE0KGdhdGUpICogYW10X3MxNF9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzE1KGdhdGUpICogYW10X3MxNV9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzE2KGdhdGUpICogYW10X3MxNl9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzE3KGdhdGUpICogYW10X3MxN19kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzE4KGdhdGUpICogYW10X3MxOF9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzE5KGdhdGUpICogYW10X3MxOV9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzIwKGdhdGUpICogYW10X3MyMF9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzIxKGdhdGUpICogYW10X3MyMV9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzIyKGdhdGUpICogYW10X3MyMl9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzIzKGdhdGUpICogYW10X3MyM19kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzI0KGdhdGUpICogYW10X3MyNF9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzI1KGdhdGUpICogYW10X3MyNV9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzI2KGdhdGUpICogYW10X3MyNl9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzI3KGdhdGUpICogYW10X3MyN19kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzI4KGdhdGUpICogYW10X3MyOF9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzI5KGdhdGUpICogYW10X3MyOV9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzMwKGdhdGUpICogYW10X3MzMF9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzMxKGdhdGUpICogYW10X3MzMV9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzMyKGdhdGUpICogYW10X3MzMl9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzMzKGdhdGUpICogYW10X3MzM19kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzM0KGdhdGUpICogYW10X3MzNF9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzM1KGdhdGUpICogYW10X3MzNV9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzM2KGdhdGUpICogYW10X3MzNl9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzM3KGdhdGUpICogYW10X3MzN19kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzM4KGdhdGUpICogYW10X3MzOF9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzM5KGdhdGUpICogYW10X3MzOV9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzQwKGdhdGUpICogYW10X3M0MF9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzQxKGdhdGUpICogYW10X3M0MV9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzQyKGdhdGUpICogYW10X3M0Ml9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzQzKGdhdGUpICogYW10X3M0M19kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzQ0KGdhdGUpICogYW10X3M0NF9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzQ1KGdhdGUpICogYW10X3M0NV9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzQ2KGdhdGUpICogYW10X3M0Nl9kMDFfYnJpZ2h0ICsKICAgIG1wLnNyYzQ3KGdhdGUpICogYW10X3M0N19kMDFfYnJpZ2h0OwoKbW9kX3RpbHQoZ2F0ZSkgPQogICAgbXAuc3JjMDAoZ2F0ZSkgKiBhbXRfczAwX2QwMl90aWx0ICsKICAgIG1wLnNyYzAxKGdhdGUpICogYW10X3MwMV9kMDJfdGlsdCArCiAgICBtcC5zcmMwMihnYXRlKSAqIGFtdF9zMDJfZDAyX3RpbHQgKwogICAgbXAuc3JjMDMoZ2F0ZSkgKiBhbXRfczAzX2QwMl90aWx0ICsKICAgIG1wLnNyYzA0KGdhdGUpICogYW10X3MwNF9kMDJfdGlsdCArCiAgICBtcC5zcmMwNShnYXRlKSAqIGFtdF9zMDVfZDAyX3RpbHQgKwogICAgbXAuc3JjMDYoZ2F0ZSkgKiBhbXRfczA2X2QwMl90aWx0ICsKICAgIG1wLnNyYzA3KGdhdGUpICogYW10X3MwN19kMDJfdGlsdCArCiAgICBtcC5zcmMwOChnYXRlKSAqIGFtdF9zMDhfZDAyX3RpbHQgKwogICAgbXAuc3JjMDkoZ2F0ZSkgKiBhbXRfczA5X2QwMl90aWx0ICsKICAgIG1wLnNyYzEwKGdhdGUpICogYW10X3MxMF9kMDJfdGlsdCArCiAgICBtcC5zcmMxMShnYXRlKSAqIGFtdF9zMTFfZDAyX3RpbHQgKwogICAgbXAuc3JjMTIoZ2F0ZSkgKiBhbXRfczEyX2QwMl90aWx0ICsKICAgIG1wLnNyYzEzKGdhdGUpICogYW10X3MxM19kMDJfdGlsdCArCiAgICBtcC5zcmMxNChnYXRlKSAqIGFtdF9zMTRfZDAyX3RpbHQgKwogICAgbXAuc3JjMTUoZ2F0ZSkgKiBhbXRfczE1X2QwMl90aWx0ICsKICAgIG1wLnNyYzE2KGdhdGUpICogYW10X3MxNl9kMDJfdGlsdCArCiAgICBtcC5zcmMxNyhnYXRlKSAqIGFtdF9zMTdfZDAyX3RpbHQgKwogICAgbXAuc3JjMTgoZ2F0ZSkgKiBhbXRfczE4X2QwMl90aWx0ICsKICAgIG1wLnNyYzE5KGdhdGUpICogYW10X3MxOV9kMDJfdGlsdCArCiAgICBtcC5zcmMyMChnYXRlKSAqIGFtdF9zMjBfZDAyX3RpbHQgKwogICAgbXAuc3JjMjEoZ2F0ZSkgKiBhbXRfczIxX2QwMl90aWx0ICsKICAgIG1wLnNyYzIyKGdhdGUpICogYW10X3MyMl9kMDJfdGlsdCArCiAgICBtcC5zcmMyMyhnYXRlKSAqIGFtdF9zMjNfZDAyX3RpbHQgKwogICAgbXAuc3JjMjQoZ2F0ZSkgKiBhbXRfczI0X2QwMl90aWx0ICsKICAgIG1wLnNyYzI1KGdhdGUpICogYW10X3MyNV9kMDJfdGlsdCArCiAgICBtcC5zcmMyNihnYXRlKSAqIGFtdF9zMjZfZDAyX3RpbHQgKwogICAgbXAuc3JjMjcoZ2F0ZSkgKiBhbXRfczI3X2QwMl90aWx0ICsKICAgIG1wLnNyYzI4KGdhdGUpICogYW10X3MyOF9kMDJfdGlsdCArCiAgICBtcC5zcmMyOShnYXRlKSAqIGFtdF9zMjlfZDAyX3RpbHQgKwogICAgbXAuc3JjMzAoZ2F0ZSkgKiBhbXRfczMwX2QwMl90aWx0ICsKICAgIG1wLnNyYzMxKGdhdGUpICogYW10X3MzMV9kMDJfdGlsdCArCiAgICBtcC5zcmMzMihnYXRlKSAqIGFtdF9zMzJfZDAyX3RpbHQgKwogICAgbXAuc3JjMzMoZ2F0ZSkgKiBhbXRfczMzX2QwMl90aWx0ICsKICAgIG1wLnNyYzM0KGdhdGUpICogYW10X3MzNF9kMDJfdGlsdCArCiAgICBtcC5zcmMzNShnYXRlKSAqIGFtdF9zMzVfZDAyX3RpbHQgKwogICAgbXAuc3JjMzYoZ2F0ZSkgKiBhbXRfczM2X2QwMl90aWx0ICsKICAgIG1wLnNyYzM3KGdhdGUpICogYW10X3MzN19kMDJfdGlsdCArCiAgICBtcC5zcmMzOChnYXRlKSAqIGFtdF9zMzhfZDAyX3RpbHQgKwogICAgbXAuc3JjMzkoZ2F0ZSkgKiBhbXRfczM5X2QwMl90aWx0ICsKICAgIG1wLnNyYzQwKGdhdGUpICogYW10X3M0MF9kMDJfdGlsdCArCiAgICBtcC5zcmM0MShnYXRlKSAqIGFtdF9zNDFfZDAyX3RpbHQgKwogICAgbXAuc3JjNDIoZ2F0ZSkgKiBhbXRfczQyX2QwMl90aWx0ICsKICAgIG1wLnNyYzQzKGdhdGUpICogYW10X3M0M19kMDJfdGlsdCArCiAgICBtcC5zcmM0NChnYXRlKSAqIGFtdF9zNDRfZDAyX3RpbHQgKwogICAgbXAuc3JjNDUoZ2F0ZSkgKiBhbXRfczQ1X2QwMl90aWx0ICsKICAgIG1wLnNyYzQ2KGdhdGUpICogYW10X3M0Nl9kMDJfdGlsdCArCiAgICBtcC5zcmM0NyhnYXRlKSAqIGFtdF9zNDdfZDAyX3RpbHQ7Cgptb2RfaW5oYXJtb25pY2l0eShnYXRlKSA9CiAgICBtcC5zcmMwMChnYXRlKSAqIGFtdF9zMDBfZDAzX2luaGFybW9uaWNpdHkgKwogICAgbXAuc3JjMDEoZ2F0ZSkgKiBhbXRfczAxX2QwM19pbmhhcm1vbmljaXR5ICsKICAgIG1wLnNyYzAyKGdhdGUpICogYW10X3MwMl9kMDNfaW5oYXJtb25pY2l0eSArCiAgICBtcC5zcmMwMyhnYXRlKSAqIGFtdF9zMDNfZDAzX2luaGFybW9uaWNpdHkgKwogICAgbXAuc3JjMDQoZ2F0ZSkgKiBhbXRfczA0X2QwM19pbmhhcm1vbmljaXR5ICsKICAgIG1wLnNyYzA1KGdhdGUpICogYW10X3MwNV9kMDNfaW5oYXJtb25pY2l0eSArCiAgICBtcC5zcmMwNihnYXRlKSAqIGFtdF9zMDZfZDAzX2luaGFybW9uaWNpdHkgKwogICAgbXAuc3JjMDcoZ2F0ZSkgKiBhbXRfczA3X2QwM19pbmhhcm1vbmljaXR5ICsKICAgIG1wLnNyYzA4KGdhdGUpICogYW10X3MwOF9kMDNfaW5oYXJtb25pY2l0eSArCiAgICBtcC5zcmMwOShnYXRlKSAqIGFtdF9zMDlfZDAzX2luaGFybW9uaWNpdHkgKwogICAgbXAuc3JjMTAoZ2F0ZSkgKiBhbXRfczEwX2QwM19pbmhhcm1vbmljaXR5ICsKICAgIG1wLnNyYzExKGdhdGUpICogYW10X3MxMV9kMDNfaW5oYXJtb25pY2l0eSArCiAgICBtcC5zcmMxMihnYXRlKSAqIGFtdF9zMTJfZDAzX2luaGFybW9uaWNpdHkgKwogICAgbXAuc3JjMTMoZ2F0ZSkgKiBhbXRfczEzX2QwM19pbmhhcm1vbmljaXR5ICsKICAgIG1wLnNyYzE0KGdhdGUpICogYW10X3MxNF9kMDNfaW5oYXJtb25pY2l0eSArCiAgICBtcC5zcmMxNShnYXRlKSAqIGFtdF9zMTVfZDAzX2luaGFybW9uaWNpdHkgKwogICAgbXAuc3JjMTYoZ2F0ZSkgKiBhbXRfczE2X2QwM19pbmhhcm1vbmljaXR5ICsKICAgIG1wLnNyYzE3KGdhdGUpICogYW10X3MxN19kMDNfaW5oYXJtb25pY2l0eSArCiAgICBtcC5zcmMxOChnYXRlKSAqIGFtdF9zMThfZDAzX2luaGFybW9uaWNpdHkgKwogICAgbXAuc3JjMTkoZ2F0ZSkgKiBhbXRfczE5X2QwM19pbmhhcm1vbmljaXR5ICsKICAgIG1wLnNyYzIwKGdhdGUpICogYW10X3MyMF9kMDNfaW5oYXJtb25pY2l0eSArCiAgICBtcC5zcmMyMShnYXRlKSAqIGFtdF9zMjFfZDAzX2luaGFybW9uaWNpdHkgKwogICAgbXAuc3JjMjIoZ2F0ZSkgKiBhbXRfczIyX2QwM19pbmhhcm1vbmljaXR5ICsKICAgIG1wLnNyYzIzKGdhdGUpICogYW10X3MyM19kMDNfaW5oYXJtb25pY2l0eSArCiAgICBtcC5zcmMyNChnYXRlKSAqIGFtdF9zMjRfZDAzX2luaGFybW9uaWNpdHkgKwogICAgbXAuc3JjMjUoZ2F0ZSkgKiBhbXRfczI1X2QwM19pbmhhcm1vbmljaXR5ICsKICAgIG1wLnNyYzI2KGdhdGUpICogYW10X3MyNl9kMDNfaW5oYXJtb25pY2l0eSArCiAgICBtcC5zcmMyNyhnYXRlKSAqIGFtdF9zMjdfZDAzX2luaGFybW9uaWNpdHkgKwogICAgbXAuc3JjMjgoZ2F0ZSkgKiBhbXRfczI4X2QwM19pbmhhcm1vbmljaXR5ICsKICAgIG1wLnNyYzI5KGdhdGUpICogYW10X3MyOV9kMDNfaW5oYXJtb25pY2l0eSArCiAgICBtcC5zcmMzMChnYXRlKSAqIGFtdF9zMzBfZDAzX2luaGFybW9uaWNpdHkgKwogICAgbXAuc3JjMzEoZ2F0ZSkgKiBhbXRfczMxX2QwM19pbmhhcm1vbmljaXR5ICsKICAgIG1wLnNyYzMyKGdhdGUpICogYW10X3MzMl9kMDNfaW5oYXJtb25pY2l0eSArCiAgICBtcC5zcmMzMyhnYXRlKSAqIGFtdF9zMzNfZDAzX2luaGFybW9uaWNpdHkgKwogICAgbXAuc3JjMzQoZ2F0ZSkgKiBhbXRfczM0X2QwM19pbmhhcm1vbmljaXR5ICsKICAgIG1wLnNyYzM1KGdhdGUpICogYW10X3MzNV9kMDNfaW5oYXJtb25pY2l0eSArCiAgICBtcC5zcmMzNihnYXRlKSAqIGFtdF9zMzZfZDAzX2luaGFybW9uaWNpdHkgKwogICAgbXAuc3JjMzcoZ2F0ZSkgKiBhbXRfczM3X2QwM19pbmhhcm1vbmljaXR5ICsKICAgIG1wLnNyYzM4KGdhdGUpICogYW10X3MzOF9kMDNfaW5oYXJtb25pY2l0eSArCiAgICBtcC5zcmMzOShnYXRlKSAqIGFtdF9zMzlfZDAzX2luaGFybW9uaWNpdHkgKwogICAgbXAuc3JjNDAoZ2F0ZSkgKiBhbXRfczQwX2QwM19pbmhhcm1vbmljaXR5ICsKICAgIG1wLnNyYzQxKGdhdGUpICogYW10X3M0MV9kMDNfaW5oYXJtb25pY2l0eSArCiAgICBtcC5zcmM0MihnYXRlKSAqIGFtdF9zNDJfZDAzX2luaGFybW9uaWNpdHkgKwogICAgbXAuc3JjNDMoZ2F0ZSkgKiBhbXRfczQzX2QwM19pbmhhcm1vbmljaXR5ICsKICAgIG1wLnNyYzQ0KGdhdGUpICogYW10X3M0NF9kMDNfaW5oYXJtb25pY2l0eSArCiAgICBtcC5zcmM0NShnYXRlKSAqIGFtdF9zNDVfZDAzX2luaGFybW9uaWNpdHkgKwogICAgbXAuc3JjNDYoZ2F0ZSkgKiBhbXRfczQ2X2QwM19pbmhhcm1vbmljaXR5ICsKICAgIG1wLnNyYzQ3KGdhdGUpICogYW10X3M0N19kMDNfaW5oYXJtb25pY2l0eTsKCm1vZF9vZGRfZXZlbihnYXRlKSA9CiAgICBtcC5zcmMwMChnYXRlKSAqIGFtdF9zMDBfZDA0X29kZF9ldmVuICsKICAgIG1wLnNyYzAxKGdhdGUpICogYW10X3MwMV9kMDRfb2RkX2V2ZW4gKwogICAgbXAuc3JjMDIoZ2F0ZSkgKiBhbXRfczAyX2QwNF9vZGRfZXZlbiArCiAgICBtcC5zcmMwMyhnYXRlKSAqIGFtdF9zMDNfZDA0X29kZF9ldmVuICsKICAgIG1wLnNyYzA0KGdhdGUpICogYW10X3MwNF9kMDRfb2RkX2V2ZW4gKwogICAgbXAuc3JjMDUoZ2F0ZSkgKiBhbXRfczA1X2QwNF9vZGRfZXZlbiArCiAgICBtcC5zcmMwNihnYXRlKSAqIGFtdF9zMDZfZDA0X29kZF9ldmVuICsKICAgIG1wLnNyYzA3KGdhdGUpICogYW10X3MwN19kMDRfb2RkX2V2ZW4gKwogICAgbXAuc3JjMDgoZ2F0ZSkgKiBhbXRfczA4X2QwNF9vZGRfZXZlbiArCiAgICBtcC5zcmMwOShnYXRlKSAqIGFtdF9zMDlfZDA0X29kZF9ldmVuICsKICAgIG1wLnNyYzEwKGdhdGUpICogYW10X3MxMF9kMDRfb2RkX2V2ZW4gKwogICAgbXAuc3JjMTEoZ2F0ZSkgKiBhbXRfczExX2QwNF9vZGRfZXZlbiArCiAgICBtcC5zcmMxMihnYXRlKSAqIGFtdF9zMTJfZDA0X29kZF9ldmVuICsKICAgIG1wLnNyYzEzKGdhdGUpICogYW10X3MxM19kMDRfb2RkX2V2ZW4gKwogICAgbXAuc3JjMTQoZ2F0ZSkgKiBhbXRfczE0X2QwNF9vZGRfZXZlbiArCiAgICBtcC5zcmMxNShnYXRlKSAqIGFtdF9zMTVfZDA0X29kZF9ldmVuICsKICAgIG1wLnNyYzE2KGdhdGUpICogYW10X3MxNl9kMDRfb2RkX2V2ZW4gKwogICAgbXAuc3JjMTcoZ2F0ZSkgKiBhbXRfczE3X2QwNF9vZGRfZXZlbiArCiAgICBtcC5zcmMxOChnYXRlKSAqIGFtdF9zMThfZDA0X29kZF9ldmVuICsKICAgIG1wLnNyYzE5KGdhdGUpICogYW10X3MxOV9kMDRfb2RkX2V2ZW4gKwogICAgbXAuc3JjMjAoZ2F0ZSkgKiBhbXRfczIwX2QwNF9vZGRfZXZlbiArCiAgICBtcC5zcmMyMShnYXRlKSAqIGFtdF9zMjFfZDA0X29kZF9ldmVuICsKICAgIG1wLnNyYzIyKGdhdGUpICogYW10X3MyMl9kMDRfb2RkX2V2ZW4gKwogICAgbXAuc3JjMjMoZ2F0ZSkgKiBhbXRfczIzX2QwNF9vZGRfZXZlbiArCiAgICBtcC5zcmMyNChnYXRlKSAqIGFtdF9zMjRfZDA0X29kZF9ldmVuICsKICAgIG1wLnNyYzI1KGdhdGUpICogYW10X3MyNV9kMDRfb2RkX2V2ZW4gKwogICAgbXAuc3JjMjYoZ2F0ZSkgKiBhbXRfczI2X2QwNF9vZGRfZXZlbiArCiAgICBtcC5zcmMyNyhnYXRlKSAqIGFtdF9zMjdfZDA0X29kZF9ldmVuICsKICAgIG1wLnNyYzI4KGdhdGUpICogYW10X3MyOF9kMDRfb2RkX2V2ZW4gKwogICAgbXAuc3JjMjkoZ2F0ZSkgKiBhbXRfczI5X2QwNF9vZGRfZXZlbiArCiAgICBtcC5zcmMzMChnYXRlKSAqIGFtdF9zMzBfZDA0X29kZF9ldmVuICsKICAgIG1wLnNyYzMxKGdhdGUpICogYW10X3MzMV9kMDRfb2RkX2V2ZW4gKwogICAgbXAuc3JjMzIoZ2F0ZSkgKiBhbXRfczMyX2QwNF9vZGRfZXZlbiArCiAgICBtcC5zcmMzMyhnYXRlKSAqIGFtdF9zMzNfZDA0X29kZF9ldmVuICsKICAgIG1wLnNyYzM0KGdhdGUpICogYW10X3MzNF9kMDRfb2RkX2V2ZW4gKwogICAgbXAuc3JjMzUoZ2F0ZSkgKiBhbXRfczM1X2QwNF9vZGRfZXZlbiArCiAgICBtcC5zcmMzNihnYXRlKSAqIGFtdF9zMzZfZDA0X29kZF9ldmVuICsKICAgIG1wLnNyYzM3KGdhdGUpICogYW10X3MzN19kMDRfb2RkX2V2ZW4gKwogICAgbXAuc3JjMzgoZ2F0ZSkgKiBhbXRfczM4X2QwNF9vZGRfZXZlbiArCiAgICBtcC5zcmMzOShnYXRlKSAqIGFtdF9zMzlfZDA0X29kZF9ldmVuICsKICAgIG1wLnNyYzQwKGdhdGUpICogYW10X3M0MF9kMDRfb2RkX2V2ZW4gKwogICAgbXAuc3JjNDEoZ2F0ZSkgKiBhbXRfczQxX2QwNF9vZGRfZXZlbiArCiAgICBtcC5zcmM0MihnYXRlKSAqIGFtdF9zNDJfZDA0X29kZF9ldmVuICsKICAgIG1wLnNyYzQzKGdhdGUpICogYW10X3M0M19kMDRfb2RkX2V2ZW4gKwogICAgbXAuc3JjNDQoZ2F0ZSkgKiBhbXRfczQ0X2QwNF9vZGRfZXZlbiArCiAgICBtcC5zcmM0NShnYXRlKSAqIGFtdF9zNDVfZDA0X29kZF9ldmVuICsKICAgIG1wLnNyYzQ2KGdhdGUpICogYW10X3M0Nl9kMDRfb2RkX2V2ZW4gKwogICAgbXAuc3JjNDcoZ2F0ZSkgKiBhbXRfczQ3X2QwNF9vZGRfZXZlbjsKCm1vZF9mb3JtYW50X2N0cihnYXRlKSA9CiAgICBtcC5zcmMwMChnYXRlKSAqIGFtdF9zMDBfZDA1X2Zvcm1hbnRfY3RyICsKICAgIG1wLnNyYzAxKGdhdGUpICogYW10X3MwMV9kMDVfZm9ybWFudF9jdHIgKwogICAgbXAuc3JjMDIoZ2F0ZSkgKiBhbXRfczAyX2QwNV9mb3JtYW50X2N0ciArCiAgICBtcC5zcmMwMyhnYXRlKSAqIGFtdF9zMDNfZDA1X2Zvcm1hbnRfY3RyICsKICAgIG1wLnNyYzA0KGdhdGUpICogYW10X3MwNF9kMDVfZm9ybWFudF9jdHIgKwogICAgbXAuc3JjMDUoZ2F0ZSkgKiBhbXRfczA1X2QwNV9mb3JtYW50X2N0ciArCiAgICBtcC5zcmMwNihnYXRlKSAqIGFtdF9zMDZfZDA1X2Zvcm1hbnRfY3RyICsKICAgIG1wLnNyYzA3KGdhdGUpICogYW10X3MwN19kMDVfZm9ybWFudF9jdHIgKwogICAgbXAuc3JjMDgoZ2F0ZSkgKiBhbXRfczA4X2QwNV9mb3JtYW50X2N0ciArCiAgICBtcC5zcmMwOShnYXRlKSAqIGFtdF9zMDlfZDA1X2Zvcm1hbnRfY3RyICsKICAgIG1wLnNyYzEwKGdhdGUpICogYW10X3MxMF9kMDVfZm9ybWFudF9jdHIgKwogICAgbXAuc3JjMTEoZ2F0ZSkgKiBhbXRfczExX2QwNV9mb3JtYW50X2N0ciArCiAgICBtcC5zcmMxMihnYXRlKSAqIGFtdF9zMTJfZDA1X2Zvcm1hbnRfY3RyICsKICAgIG1wLnNyYzEzKGdhdGUpICogYW10X3MxM19kMDVfZm9ybWFudF9jdHIgKwogICAgbXAuc3JjMTQoZ2F0ZSkgKiBhbXRfczE0X2QwNV9mb3JtYW50X2N0ciArCiAgICBtcC5zcmMxNShnYXRlKSAqIGFtdF9zMTVfZDA1X2Zvcm1hbnRfY3RyICsKICAgIG1wLnNyYzE2KGdhdGUpICogYW10X3MxNl9kMDVfZm9ybWFudF9jdHIgKwogICAgbXAuc3JjMTcoZ2F0ZSkgKiBhbXRfczE3X2QwNV9mb3JtYW50X2N0ciArCiAgICBtcC5zcmMxOChnYXRlKSAqIGFtdF9zMThfZDA1X2Zvcm1hbnRfY3RyICsKICAgIG1wLnNyYzE5KGdhdGUpICogYW10X3MxOV9kMDVfZm9ybWFudF9jdHIgKwogICAgbXAuc3JjMjAoZ2F0ZSkgKiBhbXRfczIwX2QwNV9mb3JtYW50X2N0ciArCiAgICBtcC5zcmMyMShnYXRlKSAqIGFtdF9zMjFfZDA1X2Zvcm1hbnRfY3RyICsKICAgIG1wLnNyYzIyKGdhdGUpICogYW10X3MyMl9kMDVfZm9ybWFudF9jdHIgKwogICAgbXAuc3JjMjMoZ2F0ZSkgKiBhbXRfczIzX2QwNV9mb3JtYW50X2N0ciArCiAgICBtcC5zcmMyNChnYXRlKSAqIGFtdF9zMjRfZDA1X2Zvcm1hbnRfY3RyICsKICAgIG1wLnNyYzI1KGdhdGUpICogYW10X3MyNV9kMDVfZm9ybWFudF9jdHIgKwogICAgbXAuc3JjMjYoZ2F0ZSkgKiBhbXRfczI2X2QwNV9mb3JtYW50X2N0ciArCiAgICBtcC5zcmMyNyhnYXRlKSAqIGFtdF9zMjdfZDA1X2Zvcm1hbnRfY3RyICsKICAgIG1wLnNyYzI4KGdhdGUpICogYW10X3MyOF9kMDVfZm9ybWFudF9jdHIgKwogICAgbXAuc3JjMjkoZ2F0ZSkgKiBhbXRfczI5X2QwNV9mb3JtYW50X2N0ciArCiAgICBtcC5zcmMzMChnYXRlKSAqIGFtdF9zMzBfZDA1X2Zvcm1hbnRfY3RyICsKICAgIG1wLnNyYzMxKGdhdGUpICogYW10X3MzMV9kMDVfZm9ybWFudF9jdHIgKwogICAgbXAuc3JjMzIoZ2F0ZSkgKiBhbXRfczMyX2QwNV9mb3JtYW50X2N0ciArCiAgICBtcC5zcmMzMyhnYXRlKSAqIGFtdF9zMzNfZDA1X2Zvcm1hbnRfY3RyICsKICAgIG1wLnNyYzM0KGdhdGUpICogYW10X3MzNF9kMDVfZm9ybWFudF9jdHIgKwogICAgbXAuc3JjMzUoZ2F0ZSkgKiBhbXRfczM1X2QwNV9mb3JtYW50X2N0ciArCiAgICBtcC5zcmMzNihnYXRlKSAqIGFtdF9zMzZfZDA1X2Zvcm1hbnRfY3RyICsKICAgIG1wLnNyYzM3KGdhdGUpICogYW10X3MzN19kMDVfZm9ybWFudF9jdHIgKwogICAgbXAuc3JjMzgoZ2F0ZSkgKiBhbXRfczM4X2QwNV9mb3JtYW50X2N0ciArCiAgICBtcC5zcmMzOShnYXRlKSAqIGFtdF9zMzlfZDA1X2Zvcm1hbnRfY3RyICsKICAgIG1wLnNyYzQwKGdhdGUpICogYW10X3M0MF9kMDVfZm9ybWFudF9jdHIgKwogICAgbXAuc3JjNDEoZ2F0ZSkgKiBhbXRfczQxX2QwNV9mb3JtYW50X2N0ciArCiAgICBtcC5zcmM0MihnYXRlKSAqIGFtdF9zNDJfZDA1X2Zvcm1hbnRfY3RyICsKICAgIG1wLnNyYzQzKGdhdGUpICogYW10X3M0M19kMDVfZm9ybWFudF9jdHIgKwogICAgbXAuc3JjNDQoZ2F0ZSkgKiBhbXRfczQ0X2QwNV9mb3JtYW50X2N0ciArCiAgICBtcC5zcmM0NShnYXRlKSAqIGFtdF9zNDVfZDA1X2Zvcm1hbnRfY3RyICsKICAgIG1wLnNyYzQ2KGdhdGUpICogYW10X3M0Nl9kMDVfZm9ybWFudF9jdHIgKwogICAgbXAuc3JjNDcoZ2F0ZSkgKiBhbXRfczQ3X2QwNV9mb3JtYW50X2N0cjsKCm1vZF9mb3JtYW50X2RlcHRoKGdhdGUpID0KICAgIG1wLnNyYzAwKGdhdGUpICogYW10X3MwMF9kMDZfZm9ybWFudF9kZXB0aCArCiAgICBtcC5zcmMwMShnYXRlKSAqIGFtdF9zMDFfZDA2X2Zvcm1hbnRfZGVwdGggKwogICAgbXAuc3JjMDIoZ2F0ZSkgKiBhbXRfczAyX2QwNl9mb3JtYW50X2RlcHRoICsKICAgIG1wLnNyYzAzKGdhdGUpICogYW10X3MwM19kMDZfZm9ybWFudF9kZXB0aCArCiAgICBtcC5zcmMwNChnYXRlKSAqIGFtdF9zMDRfZDA2X2Zvcm1hbnRfZGVwdGggKwogICAgbXAuc3JjMDUoZ2F0ZSkgKiBhbXRfczA1X2QwNl9mb3JtYW50X2RlcHRoICsKICAgIG1wLnNyYzA2KGdhdGUpICogYW10X3MwNl9kMDZfZm9ybWFudF9kZXB0aCArCiAgICBtcC5zcmMwNyhnYXRlKSAqIGFtdF9zMDdfZDA2X2Zvcm1hbnRfZGVwdGggKwogICAgbXAuc3JjMDgoZ2F0ZSkgKiBhbXRfczA4X2QwNl9mb3JtYW50X2RlcHRoICsKICAgIG1wLnNyYzA5KGdhdGUpICogYW10X3MwOV9kMDZfZm9ybWFudF9kZXB0aCArCiAgICBtcC5zcmMxMChnYXRlKSAqIGFtdF9zMTBfZDA2X2Zvcm1hbnRfZGVwdGggKwogICAgbXAuc3JjMTEoZ2F0ZSkgKiBhbXRfczExX2QwNl9mb3JtYW50X2RlcHRoICsKICAgIG1wLnNyYzEyKGdhdGUpICogYW10X3MxMl9kMDZfZm9ybWFudF9kZXB0aCArCiAgICBtcC5zcmMxMyhnYXRlKSAqIGFtdF9zMTNfZDA2X2Zvcm1hbnRfZGVwdGggKwogICAgbXAuc3JjMTQoZ2F0ZSkgKiBhbXRfczE0X2QwNl9mb3JtYW50X2RlcHRoICsKICAgIG1wLnNyYzE1KGdhdGUpICogYW10X3MxNV9kMDZfZm9ybWFudF9kZXB0aCArCiAgICBtcC5zcmMxNihnYXRlKSAqIGFtdF9zMTZfZDA2X2Zvcm1hbnRfZGVwdGggKwogICAgbXAuc3JjMTcoZ2F0ZSkgKiBhbXRfczE3X2QwNl9mb3JtYW50X2RlcHRoICsKICAgIG1wLnNyYzE4KGdhdGUpICogYW10X3MxOF9kMDZfZm9ybWFudF9kZXB0aCArCiAgICBtcC5zcmMxOShnYXRlKSAqIGFtdF9zMTlfZDA2X2Zvcm1hbnRfZGVwdGggKwogICAgbXAuc3JjMjAoZ2F0ZSkgKiBhbXRfczIwX2QwNl9mb3JtYW50X2RlcHRoICsKICAgIG1wLnNyYzIxKGdhdGUpICogYW10X3MyMV9kMDZfZm9ybWFudF9kZXB0aCArCiAgICBtcC5zcmMyMihnYXRlKSAqIGFtdF9zMjJfZDA2X2Zvcm1hbnRfZGVwdGggKwogICAgbXAuc3JjMjMoZ2F0ZSkgKiBhbXRfczIzX2QwNl9mb3JtYW50X2RlcHRoICsKICAgIG1wLnNyYzI0KGdhdGUpICogYW10X3MyNF9kMDZfZm9ybWFudF9kZXB0aCArCiAgICBtcC5zcmMyNShnYXRlKSAqIGFtdF9zMjVfZDA2X2Zvcm1hbnRfZGVwdGggKwogICAgbXAuc3JjMjYoZ2F0ZSkgKiBhbXRfczI2X2QwNl9mb3JtYW50X2RlcHRoICsKICAgIG1wLnNyYzI3KGdhdGUpICogYW10X3MyN19kMDZfZm9ybWFudF9kZXB0aCArCiAgICBtcC5zcmMyOChnYXRlKSAqIGFtdF9zMjhfZDA2X2Zvcm1hbnRfZGVwdGggKwogICAgbXAuc3JjMjkoZ2F0ZSkgKiBhbXRfczI5X2QwNl9mb3JtYW50X2RlcHRoICsKICAgIG1wLnNyYzMwKGdhdGUpICogYW10X3MzMF9kMDZfZm9ybWFudF9kZXB0aCArCiAgICBtcC5zcmMzMShnYXRlKSAqIGFtdF9zMzFfZDA2X2Zvcm1hbnRfZGVwdGggKwogICAgbXAuc3JjMzIoZ2F0ZSkgKiBhbXRfczMyX2QwNl9mb3JtYW50X2RlcHRoICsKICAgIG1wLnNyYzMzKGdhdGUpICogYW10X3MzM19kMDZfZm9ybWFudF9kZXB0aCArCiAgICBtcC5zcmMzNChnYXRlKSAqIGFtdF9zMzRfZDA2X2Zvcm1hbnRfZGVwdGggKwogICAgbXAuc3JjMzUoZ2F0ZSkgKiBhbXRfczM1X2QwNl9mb3JtYW50X2RlcHRoICsKICAgIG1wLnNyYzM2KGdhdGUpICogYW10X3MzNl9kMDZfZm9ybWFudF9kZXB0aCArCiAgICBtcC5zcmMzNyhnYXRlKSAqIGFtdF9zMzdfZDA2X2Zvcm1hbnRfZGVwdGggKwogICAgbXAuc3JjMzgoZ2F0ZSkgKiBhbXRfczM4X2QwNl9mb3JtYW50X2RlcHRoICsKICAgIG1wLnNyYzM5KGdhdGUpICogYW10X3MzOV9kMDZfZm9ybWFudF9kZXB0aCArCiAgICBtcC5zcmM0MChnYXRlKSAqIGFtdF9zNDBfZDA2X2Zvcm1hbnRfZGVwdGggKwogICAgbXAuc3JjNDEoZ2F0ZSkgKiBhbXRfczQxX2QwNl9mb3JtYW50X2RlcHRoICsKICAgIG1wLnNyYzQyKGdhdGUpICogYW10X3M0Ml9kMDZfZm9ybWFudF9kZXB0aCArCiAgICBtcC5zcmM0MyhnYXRlKSAqIGFtdF9zNDNfZDA2X2Zvcm1hbnRfZGVwdGggKwogICAgbXAuc3JjNDQoZ2F0ZSkgKiBhbXRfczQ0X2QwNl9mb3JtYW50X2RlcHRoICsKICAgIG1wLnNyYzQ1KGdhdGUpICogYW10X3M0NV9kMDZfZm9ybWFudF9kZXB0aCArCiAgICBtcC5zcmM0NihnYXRlKSAqIGFtdF9zNDZfZDA2X2Zvcm1hbnRfZGVwdGggKwogICAgbXAuc3JjNDcoZ2F0ZSkgKiBhbXRfczQ3X2QwNl9mb3JtYW50X2RlcHRoOwoKbW9kX25vaXNlX21peChnYXRlKSA9CiAgICBtcC5zcmMwMChnYXRlKSAqIGFtdF9zMDBfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMwMShnYXRlKSAqIGFtdF9zMDFfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMwMihnYXRlKSAqIGFtdF9zMDJfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMwMyhnYXRlKSAqIGFtdF9zMDNfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMwNChnYXRlKSAqIGFtdF9zMDRfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMwNShnYXRlKSAqIGFtdF9zMDVfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMwNihnYXRlKSAqIGFtdF9zMDZfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMwNyhnYXRlKSAqIGFtdF9zMDdfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMwOChnYXRlKSAqIGFtdF9zMDhfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMwOShnYXRlKSAqIGFtdF9zMDlfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMxMChnYXRlKSAqIGFtdF9zMTBfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMxMShnYXRlKSAqIGFtdF9zMTFfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMxMihnYXRlKSAqIGFtdF9zMTJfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMxMyhnYXRlKSAqIGFtdF9zMTNfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMxNChnYXRlKSAqIGFtdF9zMTRfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMxNShnYXRlKSAqIGFtdF9zMTVfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMxNihnYXRlKSAqIGFtdF9zMTZfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMxNyhnYXRlKSAqIGFtdF9zMTdfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMxOChnYXRlKSAqIGFtdF9zMThfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMxOShnYXRlKSAqIGFtdF9zMTlfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMyMChnYXRlKSAqIGFtdF9zMjBfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMyMShnYXRlKSAqIGFtdF9zMjFfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMyMihnYXRlKSAqIGFtdF9zMjJfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMyMyhnYXRlKSAqIGFtdF9zMjNfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMyNChnYXRlKSAqIGFtdF9zMjRfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMyNShnYXRlKSAqIGFtdF9zMjVfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMyNihnYXRlKSAqIGFtdF9zMjZfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMyNyhnYXRlKSAqIGFtdF9zMjdfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMyOChnYXRlKSAqIGFtdF9zMjhfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMyOShnYXRlKSAqIGFtdF9zMjlfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMzMChnYXRlKSAqIGFtdF9zMzBfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMzMShnYXRlKSAqIGFtdF9zMzFfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMzMihnYXRlKSAqIGFtdF9zMzJfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMzMyhnYXRlKSAqIGFtdF9zMzNfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMzNChnYXRlKSAqIGFtdF9zMzRfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMzNShnYXRlKSAqIGFtdF9zMzVfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMzNihnYXRlKSAqIGFtdF9zMzZfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMzNyhnYXRlKSAqIGFtdF9zMzdfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMzOChnYXRlKSAqIGFtdF9zMzhfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmMzOShnYXRlKSAqIGFtdF9zMzlfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmM0MChnYXRlKSAqIGFtdF9zNDBfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmM0MShnYXRlKSAqIGFtdF9zNDFfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmM0MihnYXRlKSAqIGFtdF9zNDJfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmM0MyhnYXRlKSAqIGFtdF9zNDNfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmM0NChnYXRlKSAqIGFtdF9zNDRfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmM0NShnYXRlKSAqIGFtdF9zNDVfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmM0NihnYXRlKSAqIGFtdF9zNDZfZDA3X25vaXNlX21peCArCiAgICBtcC5zcmM0NyhnYXRlKSAqIGFtdF9zNDdfZDA3X25vaXNlX21peDsKCm1vZF9hbXAoZ2F0ZSkgPQogICAgbXAuc3JjMDAoZ2F0ZSkgKiBhbXRfczAwX2QwOF9hbXAgKwogICAgbXAuc3JjMDEoZ2F0ZSkgKiBhbXRfczAxX2QwOF9hbXAgKwogICAgbXAuc3JjMDIoZ2F0ZSkgKiBhbXRfczAyX2QwOF9hbXAgKwogICAgbXAuc3JjMDMoZ2F0ZSkgKiBhbXRfczAzX2QwOF9hbXAgKwogICAgbXAuc3JjMDQoZ2F0ZSkgKiBhbXRfczA0X2QwOF9hbXAgKwogICAgbXAuc3JjMDUoZ2F0ZSkgKiBhbXRfczA1X2QwOF9hbXAgKwogICAgbXAuc3JjMDYoZ2F0ZSkgKiBhbXRfczA2X2QwOF9hbXAgKwogICAgbXAuc3JjMDcoZ2F0ZSkgKiBhbXRfczA3X2QwOF9hbXAgKwogICAgbXAuc3JjMDgoZ2F0ZSkgKiBhbXRfczA4X2QwOF9hbXAgKwogICAgbXAuc3JjMDkoZ2F0ZSkgKiBhbXRfczA5X2QwOF9hbXAgKwogICAgbXAuc3JjMTAoZ2F0ZSkgKiBhbXRfczEwX2QwOF9hbXAgKwogICAgbXAuc3JjMTEoZ2F0ZSkgKiBhbXRfczExX2QwOF9hbXAgKwogICAgbXAuc3JjMTIoZ2F0ZSkgKiBhbXRfczEyX2QwOF9hbXAgKwogICAgbXAuc3JjMTMoZ2F0ZSkgKiBhbXRfczEzX2QwOF9hbXAgKwogICAgbXAuc3JjMTQoZ2F0ZSkgKiBhbXRfczE0X2QwOF9hbXAgKwogICAgbXAuc3JjMTUoZ2F0ZSkgKiBhbXRfczE1X2QwOF9hbXAgKwogICAgbXAuc3JjMTYoZ2F0ZSkgKiBhbXRfczE2X2QwOF9hbXAgKwogICAgbXAuc3JjMTcoZ2F0ZSkgKiBhbXRfczE3X2QwOF9hbXAgKwogICAgbXAuc3JjMTgoZ2F0ZSkgKiBhbXRfczE4X2QwOF9hbXAgKwogICAgbXAuc3JjMTkoZ2F0ZSkgKiBhbXRfczE5X2QwOF9hbXAgKwogICAgbXAuc3JjMjAoZ2F0ZSkgKiBhbXRfczIwX2QwOF9hbXAgKwogICAgbXAuc3JjMjEoZ2F0ZSkgKiBhbXRfczIxX2QwOF9hbXAgKwogICAgbXAuc3JjMjIoZ2F0ZSkgKiBhbXRfczIyX2QwOF9hbXAgKwogICAgbXAuc3JjMjMoZ2F0ZSkgKiBhbXRfczIzX2QwOF9hbXAgKwogICAgbXAuc3JjMjQoZ2F0ZSkgKiBhbXRfczI0X2QwOF9hbXAgKwogICAgbXAuc3JjMjUoZ2F0ZSkgKiBhbXRfczI1X2QwOF9hbXAgKwogICAgbXAuc3JjMjYoZ2F0ZSkgKiBhbXRfczI2X2QwOF9hbXAgKwogICAgbXAuc3JjMjcoZ2F0ZSkgKiBhbXRfczI3X2QwOF9hbXAgKwogICAgbXAuc3JjMjgoZ2F0ZSkgKiBhbXRfczI4X2QwOF9hbXAgKwogICAgbXAuc3JjMjkoZ2F0ZSkgKiBhbXRfczI5X2QwOF9hbXAgKwogICAgbXAuc3JjMzAoZ2F0ZSkgKiBhbXRfczMwX2QwOF9hbXAgKwogICAgbXAuc3JjMzEoZ2F0ZSkgKiBhbXRfczMxX2QwOF9hbXAgKwogICAgbXAuc3JjMzIoZ2F0ZSkgKiBhbXRfczMyX2QwOF9hbXAgKwogICAgbXAuc3JjMzMoZ2F0ZSkgKiBhbXRfczMzX2QwOF9hbXAgKwogICAgbXAuc3JjMzQoZ2F0ZSkgKiBhbXRfczM0X2QwOF9hbXAgKwogICAgbXAuc3JjMzUoZ2F0ZSkgKiBhbXRfczM1X2QwOF9hbXAgKwogICAgbXAuc3JjMzYoZ2F0ZSkgKiBhbXRfczM2X2QwOF9hbXAgKwogICAgbXAuc3JjMzcoZ2F0ZSkgKiBhbXRfczM3X2QwOF9hbXAgKwogICAgbXAuc3JjMzgoZ2F0ZSkgKiBhbXRfczM4X2QwOF9hbXAgKwogICAgbXAuc3JjMzkoZ2F0ZSkgKiBhbXRfczM5X2QwOF9hbXAgKwogICAgbXAuc3JjNDAoZ2F0ZSkgKiBhbXRfczQwX2QwOF9hbXAgKwogICAgbXAuc3JjNDEoZ2F0ZSkgKiBhbXRfczQxX2QwOF9hbXAgKwogICAgbXAuc3JjNDIoZ2F0ZSkgKiBhbXRfczQyX2QwOF9hbXAgKwogICAgbXAuc3JjNDMoZ2F0ZSkgKiBhbXRfczQzX2QwOF9hbXAgKwogICAgbXAuc3JjNDQoZ2F0ZSkgKiBhbXRfczQ0X2QwOF9hbXAgKwogICAgbXAuc3JjNDUoZ2F0ZSkgKiBhbXRfczQ1X2QwOF9hbXAgKwogICAgbXAuc3JjNDYoZ2F0ZSkgKiBhbXRfczQ2X2QwOF9hbXAgKwogICAgbXAuc3JjNDcoZ2F0ZSkgKiBhbXRfczQ3X2QwOF9hbXA7Cgptb2RfcGFuKGdhdGUpID0KICAgIG1wLnNyYzAwKGdhdGUpICogYW10X3MwMF9kMDlfcGFuICsKICAgIG1wLnNyYzAxKGdhdGUpICogYW10X3MwMV9kMDlfcGFuICsKICAgIG1wLnNyYzAyKGdhdGUpICogYW10X3MwMl9kMDlfcGFuICsKICAgIG1wLnNyYzAzKGdhdGUpICogYW10X3MwM19kMDlfcGFuICsKICAgIG1wLnNyYzA0KGdhdGUpICogYW10X3MwNF9kMDlfcGFuICsKICAgIG1wLnNyYzA1KGdhdGUpICogYW10X3MwNV9kMDlfcGFuICsKICAgIG1wLnNyYzA2KGdhdGUpICogYW10X3MwNl9kMDlfcGFuICsKICAgIG1wLnNyYzA3KGdhdGUpICogYW10X3MwN19kMDlfcGFuICsKICAgIG1wLnNyYzA4KGdhdGUpICogYW10X3MwOF9kMDlfcGFuICsKICAgIG1wLnNyYzA5KGdhdGUpICogYW10X3MwOV9kMDlfcGFuICsKICAgIG1wLnNyYzEwKGdhdGUpICogYW10X3MxMF9kMDlfcGFuICsKICAgIG1wLnNyYzExKGdhdGUpICogYW10X3MxMV9kMDlfcGFuICsKICAgIG1wLnNyYzEyKGdhdGUpICogYW10X3MxMl9kMDlfcGFuICsKICAgIG1wLnNyYzEzKGdhdGUpICogYW10X3MxM19kMDlfcGFuICsKICAgIG1wLnNyYzE0KGdhdGUpICogYW10X3MxNF9kMDlfcGFuICsKICAgIG1wLnNyYzE1KGdhdGUpICogYW10X3MxNV9kMDlfcGFuICsKICAgIG1wLnNyYzE2KGdhdGUpICogYW10X3MxNl9kMDlfcGFuICsKICAgIG1wLnNyYzE3KGdhdGUpICogYW10X3MxN19kMDlfcGFuICsKICAgIG1wLnNyYzE4KGdhdGUpICogYW10X3MxOF9kMDlfcGFuICsKICAgIG1wLnNyYzE5KGdhdGUpICogYW10X3MxOV9kMDlfcGFuICsKICAgIG1wLnNyYzIwKGdhdGUpICogYW10X3MyMF9kMDlfcGFuICsKICAgIG1wLnNyYzIxKGdhdGUpICogYW10X3MyMV9kMDlfcGFuICsKICAgIG1wLnNyYzIyKGdhdGUpICogYW10X3MyMl9kMDlfcGFuICsKICAgIG1wLnNyYzIzKGdhdGUpICogYW10X3MyM19kMDlfcGFuICsKICAgIG1wLnNyYzI0KGdhdGUpICogYW10X3MyNF9kMDlfcGFuICsKICAgIG1wLnNyYzI1KGdhdGUpICogYW10X3MyNV9kMDlfcGFuICsKICAgIG1wLnNyYzI2KGdhdGUpICogYW10X3MyNl9kMDlfcGFuICsKICAgIG1wLnNyYzI3KGdhdGUpICogYW10X3MyN19kMDlfcGFuICsKICAgIG1wLnNyYzI4KGdhdGUpICogYW10X3MyOF9kMDlfcGFuICsKICAgIG1wLnNyYzI5KGdhdGUpICogYW10X3MyOV9kMDlfcGFuICsKICAgIG1wLnNyYzMwKGdhdGUpICogYW10X3MzMF9kMDlfcGFuICsKICAgIG1wLnNyYzMxKGdhdGUpICogYW10X3MzMV9kMDlfcGFuICsKICAgIG1wLnNyYzMyKGdhdGUpICogYW10X3MzMl9kMDlfcGFuICsKICAgIG1wLnNyYzMzKGdhdGUpICogYW10X3MzM19kMDlfcGFuICsKICAgIG1wLnNyYzM0KGdhdGUpICogYW10X3MzNF9kMDlfcGFuICsKICAgIG1wLnNyYzM1KGdhdGUpICogYW10X3MzNV9kMDlfcGFuICsKICAgIG1wLnNyYzM2KGdhdGUpICogYW10X3MzNl9kMDlfcGFuICsKICAgIG1wLnNyYzM3KGdhdGUpICogYW10X3MzN19kMDlfcGFuICsKICAgIG1wLnNyYzM4KGdhdGUpICogYW10X3MzOF9kMDlfcGFuICsKICAgIG1wLnNyYzM5KGdhdGUpICogYW10X3MzOV9kMDlfcGFuICsKICAgIG1wLnNyYzQwKGdhdGUpICogYW10X3M0MF9kMDlfcGFuICsKICAgIG1wLnNyYzQxKGdhdGUpICogYW10X3M0MV9kMDlfcGFuICsKICAgIG1wLnNyYzQyKGdhdGUpICogYW10X3M0Ml9kMDlfcGFuICsKICAgIG1wLnNyYzQzKGdhdGUpICogYW10X3M0M19kMDlfcGFuICsKICAgIG1wLnNyYzQ0KGdhdGUpICogYW10X3M0NF9kMDlfcGFuICsKICAgIG1wLnNyYzQ1KGdhdGUpICogYW10X3M0NV9kMDlfcGFuICsKICAgIG1wLnNyYzQ2KGdhdGUpICogYW10X3M0Nl9kMDlfcGFuICsKICAgIG1wLnNyYzQ3KGdhdGUpICogYW10X3M0N19kMDlfcGFuOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIERlcml2ZWQgc2lnbmFscwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk4gID0gNjQ7ClBJID0gbWEuUEk7CgpjZW50MnJhdGlvKGMpID0gcG93KDIuMCwgYyAvIDEyMDAuMCk7CnNlbWkycmF0aW8ocykgPSBwb3coMi4wLCBzIC8gMTIuMCk7CgovLyBQaXRjaDogbW9kdWxhdGlvbiAoc2VtaXRvbmVzKSwgbm8gZ2xpZGUKZmluZV9yYXRpbyAgPSBjZW50MnJhdGlvKGZpbmVfdHVuZSk7CnBpdGNoX3JhdGlvID0gc2VtaTJyYXRpbyhtb2RfcGl0Y2goZ2F0ZSkgKiAxMi4wKTsKYmFzZV9mcmVxICAgPSBmcmVxICogZmluZV9yYXRpbyAqIHBpdGNoX3JhdGlvOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIFBlci1oYXJtb25pYyBiYXNlIGFtcGxpdHVkZSBmcm9tIGdyb3VwIHNsaWRlcnMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmdyb3VwX2FtcChrKSA9CiAgYmEuaWYoayA9PSAxLCBoMV9hbXAsCiAgYmEuaWYoayA9PSAyLCBoMl9hbXAsCiAgYmEuaWYoayA9PSAzLCBoM19hbXAsCiAgYmEuaWYoayA9PSA0LCBoNF9hbXAsCiAgYmEuaWYoayA9PSA1LCBoNV9hbXAsCiAgYmEuaWYoayA9PSA2LCBoNl9hbXAsCiAgYmEuaWYoayA9PSA3LCBoN19hbXAsCiAgYmEuaWYoayA9PSA4LCBoOF9hbXAsCiAgYmEuaWYoayA8PSAxNiwgaDlfMTZfYW1wLAogIGJhLmlmKGsgPD0gMzIsIGgxN18zMl9hbXAsCiAgICAgICAgICAgICAgICAgaDMzXzY0X2FtcCkpKSkpKSkpKSk7CgovLyBTcGVjdHJhbCB0aWx0IChtb2R1bGF0ZWQpIOKAlCBhbXAgKj0ga150aWx0CmVmZl90aWx0ID0gc3BlY3RyYWxfdGlsdCArIG1vZF90aWx0KGdhdGUpOwp0aWx0X2ZhY3RvcihrKSA9IHBvdyhmbG9hdChrKSwgZWZmX3RpbHQpOwoKLy8gT2RkL2V2ZW4gYmFsYW5jZSAobW9kdWxhdGVkLCBjbGFtcGVkKQplZmZfb2RkX2V2ZW4gID0gbWF4KDAuMCwgbWluKDEuMCwgb2RkX2V2ZW4gKyBtb2Rfb2RkX2V2ZW4oZ2F0ZSkpKTsKb2RkX3dlaWdodCAgICA9ICgxLjAgLSBlZmZfb2RkX2V2ZW4pICogMi4wOwpldmVuX3dlaWdodCAgID0gZWZmX29kZF9ldmVuICogMi4wOwpvZGRfZXZlbl9mYWN0b3IoaykgPSBiYS5pZihrICUgMiA9PSAwLCBldmVuX3dlaWdodCwgb2RkX3dlaWdodCk7CgovLyBCcmlnaHRuZXNzIGRlc3RpbmF0aW9uOiBwcm9ncmVzc2l2ZSBib29zdC9jdXQgb24gdXBwZXIgcGFydGlhbHMuCi8vIGJyaWdodF9ibGVuZChrKTogMCBhdCBrPTEsIDEgYXQgaz1OLiBtb2RfYnJpZ2h0IGlzIFstMSwrMV0uCi8vIGZhY3RvcihrKSA9IDEgKyBicmlnaHRfYmxlbmQoaykgKiBtb2RfYnJpZ2h0LiBBdCBtb2Q9MCAtPiB1bml0eSAobmV1dHJhbCkuCmJyaWdodF9ibGVuZChrKSAgPSBmbG9hdChrIC0gMSkgLyBmbG9hdChOIC0gMSk7Cm1iICAgICAgICAgICAgICAgPSBtb2RfYnJpZ2h0KGdhdGUpOwpicmlnaHRfZmFjdG9yKGspID0gMS4wICsgYnJpZ2h0X2JsZW5kKGspICogbWI7CgovLyBJbmhhcm1vbmljaXR5IChtb2R1bGF0ZWQsIGNsYW1wZWQgdG8ga2VlcCBwYXJ0aWFscyBtb25vdG9uaWMpCmVmZl9pbmhhcm0gICAgICAgPSBtYXgoMC4wLCBtaW4oMC4yLCBpbmhhcm1vbmljaXR5ICsgbW9kX2luaGFybW9uaWNpdHkoZ2F0ZSkgKiAwLjE1KSk7CgovLyBGb3JtYW50IGNlbnRyZXMgKG1vZHVsYXRlZCB0b2dldGhlciDigJQgbW9kX2Zvcm1hbnRfY3RyIHNoaWZ0cyBib3RoIGJ5IHNhbWUgYW10KQplZmZfZm9ybWFudF9zaGlmdCA9IG1vZF9mb3JtYW50X2N0cihnYXRlKSAqIDguMDsgICAgIC8vIMKxOCBoYXJtb25pY3MKZWZmX2YxICAgICAgICAgICAgPSBtYXgoMS4wLCBtaW4oMzIuMCwgZm9ybWFudDFfZnJlcSArIGVmZl9mb3JtYW50X3NoaWZ0KSk7CmVmZl9mMiAgICAgICAgICAgID0gbWF4KDEuMCwgbWluKDMyLjAsIGZvcm1hbnQyX2ZyZXEgKyBlZmZfZm9ybWFudF9zaGlmdCkpOwplZmZfZm9ybWFudF9kZXB0aCA9IG1heCgwLjAsIG1pbigxLjAsIGZvcm1hbnRfZGVwdGggKyBtb2RfZm9ybWFudF9kZXB0aChnYXRlKSkpOwoKLy8gRm9ybWFudCBzaGFwaW5nIOKAlCB0d28gR2F1c3NpYW4gYnVtcHMgaW4gaGFybW9uaWMtaW5kZXggc3BhY2UKc2lnbWFfc3EgPSAxLjUgKiAxLjU7CmZvcm1hbnRfYnVtcChrLCBjdHIpID0gZXhwKC0wLjUgKiAoZmxvYXQoaykgLSBjdHIpICogKGZsb2F0KGspIC0gY3RyKSAvIHNpZ21hX3NxKTsKZm9ybWFudF9mYWN0b3IoaykgPQogIDEuMCArIGVmZl9mb3JtYW50X2RlcHRoICogKGZvcm1hbnRfYnVtcChrLCBlZmZfZjEpICsgZm9ybWFudF9idW1wKGssIGVmZl9mMikpOwoKLy8gQ29tYmluZWQgcGVyLWhhcm1vbmljIGFtcGxpdHVkZQpoYXJtX2FtcChrKSA9CiAgZ3JvdXBfYW1wKGspICogdGlsdF9mYWN0b3IoaykgKiBvZGRfZXZlbl9mYWN0b3IoaykgKgogIGJyaWdodF9mYWN0b3IoaykgKiBmb3JtYW50X2ZhY3RvcihrKTsKCi8vIEluaGFybW9uaWMgcGFydGlhbCBmcmVxdWVuY3k6IGZyZXFfayA9IGsqZjAqKDEgKyBCKihrXjIgLSAxKSkKaGFybV9mcmVxKGspID0gYmFzZV9mcmVxICogZmxvYXQoaykKICAgICAgICAgICAgICAgKiAoMS4wICsgZWZmX2luaGFybSAqIChmbG9hdChrKSAqIGZsb2F0KGspIC0gMS4wKSk7CgovLyBTdGVyZW8gc3ByZWFkIOKAlCBSIGNoYW5uZWwgZ2V0cyBhIHNtYWxsIHBlci1oYXJtb25pYyBwaXRjaCBvZmZzZXQKc3RlcmVvX3NwcmVhZF9mcmVxKGspID0gc3RlcmVvX3BoYXNlX3NwcmVhZCAqIGZsb2F0KGspICogMC4wMTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBBZGRpdGl2ZSBvc2NpbGxhdG9yIHN1bXMg4oCUIEwgYW5kIFIKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmFkZGl0aXZlX0wgPSBzdW0oaywgTiwgaGFybV9hbXAoaysxKSAqIG9zLm9zYyhoYXJtX2ZyZXEoaysxKSkpOwphZGRpdGl2ZV9SID0gc3VtKGssIE4sCiAgaGFybV9hbXAoaysxKSAqIG9zLm9zYyhoYXJtX2ZyZXEoaysxKSAqICgxLjAgKyBzdGVyZW9fc3ByZWFkX2ZyZXEoaysxKSkpKTsKCi8vIFN1Yi1oYXJtb25pYyAoMC41w5cgZnVuZGFtZW50YWwpCnN1Yl9vc2MgPSBzdWJfaGFybW9uaWMgKiBvcy5vc2MoYmFzZV9mcmVxICogMC41KTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBOb2lzZSBmbG9vciDigJQgY29sb3VyZWQgdmlhIG9uZS1wb2xlIExQCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQplZmZfbm9pc2UgPSBtYXgoMC4wLCBtaW4oMS4wLCBub2lzZV9mbG9vciArIG1vZF9ub2lzZV9taXgoZ2F0ZSkpKTsKbm9pc2VfbHBfY3V0b2ZmID0gMjAwLjAgKyAoMS4wIC0gbm9pc2VfY29sb3IpICogMTk4MDAuMDsKbm9pc2Vfc2lnbmFsICAgID0gbm8ubm9pc2UgOiBmaS5sb3dwYXNzKDEsIG5vaXNlX2xwX2N1dG9mZik7Cm5vaXNlX291dCAgICAgICA9IGVmZl9ub2lzZSAqIG5vaXNlX3NpZ25hbDsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBTb2Z0LWNsaXAgc2F0dXJhdGlvbiDigJQgdGFuaCB3YXZlc2hhcGVyCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkcml2ZSAgICAgICA9IDEuMCArIHNhdHVyYXRpb24gKiA5LjA7CnNvZnRjbGlwKHgpID0gbWEudGFuaCh4ICogZHJpdmUpIC8gZHJpdmU7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gVmVsb2NpdHkgZ2FpbiDigJQga2VlcHMgX3ZlbCBhbGl2ZSBpbiB0aGUgSlNPTiBkZXNjcmlwdG9yCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp2ZWxfZ2FpbiA9ICgxLjAgLSAwLjMpICsgMC4zICogdmVsOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEFtcGxpdHVkZSBhbmQgcGFuIChib3RoIG1vZC1kcml2ZW4pCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQphbXBfdmFsID0gbWF4KDAuMCwgbWluKDEuMCwgbW9kX2FtcChnYXRlKSkpICogbGV2ZWwgKiB2ZWxfZ2FpbjsKcGFuX3ZhbCA9IG1heCgtMS4wLCBtaW4oMS4wLCBtYXN0ZXJfcGFuICsgbW9kX3BhbihnYXRlKSkpOwoKcGFuX2wgPSBjb3MoKHBhbl92YWwgKyAxLjApICogMC4yNSAqIG1hLlBJKTsKcGFuX3IgPSBzaW4oKHBhbl92YWwgKyAxLjApICogMC4yNSAqIG1hLlBJKTsKCnJhd19MID0gKGFkZGl0aXZlX0wgKyBzdWJfb3NjICsgbm9pc2Vfb3V0KSAqIGFtcF92YWw7CnJhd19SID0gKGFkZGl0aXZlX1IgKyBzdWJfb3NjICsgbm9pc2Vfb3V0KSAqIGFtcF92YWw7CgpzaWduYWxfTCA9IHNvZnRjbGlwKHJhd19MKSAqIHBhbl9sOwpzaWduYWxfUiA9IHNvZnRjbGlwKHJhd19SKSAqIHBhbl9yOwoKcHJvY2VzcyA9IHNpZ25hbF9MLCBzaWduYWxfUjsK","inputs": 0,"outputs": 2,"meta": [ { "basics.lib/name": "Faust Basic Element Library" },{ "basics.lib/version": "1.21.0" },{ "compile_options": "-lang wasm -ct 1 -cn modular_additive -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" },{ "envelopes.lib/adsr:author": "Yann Orlarey and Andrey Bundin" },{ "envelopes.lib/author": "GRAME" },{ "envelopes.lib/copyright": "GRAME" },{ "envelopes.lib/license": "LGPL with exception" },{ "envelopes.lib/name": "Faust Envelope Library" },{ "envelopes.lib/version": "1.3.0" },{ "filename": "modular-additive.dsp" },{ "filters.lib/lowpass0_highpass1": "MIT-style STK-4.3 license" },{ "filters.lib/lowpass0_highpass1:author": "Julius O. Smith III" },{ "filters.lib/lowpass:author": "Julius O. Smith III" },{ "filters.lib/lowpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass:license": "MIT-style STK-4.3 license" },{ "filters.lib/name": "Faust Filters Library" },{ "filters.lib/tf1:author": "Julius O. Smith III" },{ "filters.lib/tf1:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf1s:author": "Julius O. Smith III" },{ "filters.lib/tf1s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1s:license": "MIT-style STK-4.3 license" },{ "filters.lib/version": "1.7.1" },{ "maths.lib/author": "GRAME" },{ "maths.lib/copyright": "GRAME" },{ "maths.lib/license": "LGPL with exception" },{ "maths.lib/name": "Faust Math Library" },{ "maths.lib/version": "2.8.1" },{ "name": "modular-additive" },{ "noises.lib/name": "Faust Noise Generator Library" },{ "noises.lib/version": "1.4.1" },{ "oscillators.lib/lf_sawpos:author": "Bart Brouns, revised by Stéphane Letz" },{ "oscillators.lib/lf_sawpos:licence": "STK-4.3" },{ "oscillators.lib/lf_triangle:author": "Bart Brouns" },{ "oscillators.lib/lf_triangle:licence": "STK-4.3" },{ "oscillators.lib/name": "Faust Oscillator Library" },{ "oscillators.lib/saw1:author": "Bart Brouns" },{ "oscillators.lib/saw1:licence": "STK-4.3" },{ "oscillators.lib/version": "1.6.0" },{ "platform.lib/name": "Generic Platform Library" },{ "platform.lib/version": "1.3.0" },{ "signals.lib/name": "Faust Signal Routing Library" },{ "signals.lib/version": "1.6.0" }],"ui": [ {"type": "vgroup","label": "modular-additive","items": [ {"type": "hslider","label": "0_Hidden/_vel","varname": "fHslider225","shortname": "0_Hidden_vel","address": "/modular-additive/0_Hidden__vel","index": 263356,"meta": [{ "hidden": "1" }],"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "0_Hidden/freq","varname": "fHslider373","shortname": "0_Hidden_freq","address": "/modular-additive/0_Hidden_freq","index": 263984,"meta": [{ "hidden": "1" },{ "unit": "Hz" }],"init": 220,"min": 20,"max": 4000,"step": 0.01},{"type": "button","label": "0_Hidden/gate","varname": "fButton0","shortname": "0_Hidden_gate","address": "/modular-additive/0_Hidden_gate","index": 262932,"meta": [{ "hidden": "1" }]},{"type": "hslider","label": "1_Spectral/00_h1_amp","varname": "fHslider679","shortname": "1_Spectral_00_h1_amp","address": "/modular-additive/1_Spectral_00_h1_amp","index": 265984,"init": 0.8,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral/01_h2_amp","varname": "fHslider678","shortname": "1_Spectral_01_h2_amp","address": "/modular-additive/1_Spectral_01_h2_amp","index": 265972,"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral/02_h3_amp","varname": "fHslider677","shortname": "1_Spectral_02_h3_amp","address": "/modular-additive/1_Spectral_02_h3_amp","index": 265956,"init": 0.35,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral/03_h4_amp","varname": "fHslider676","shortname": "1_Spectral_03_h4_amp","address": "/modular-additive/1_Spectral_03_h4_amp","index": 265940,"init": 0.25,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral/04_h5_amp","varname": "fHslider675","shortname": "1_Spectral_04_h5_amp","address": "/modular-additive/1_Spectral_04_h5_amp","index": 265924,"init": 0.18,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral/05_h6_amp","varname": "fHslider674","shortname": "1_Spectral_05_h6_amp","address": "/modular-additive/1_Spectral_05_h6_amp","index": 265908,"init": 0.12,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral/06_h7_amp","varname": "fHslider673","shortname": "1_Spectral_06_h7_amp","address": "/modular-additive/1_Spectral_06_h7_amp","index": 265892,"init": 0.08,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral/07_h8_amp","varname": "fHslider672","shortname": "1_Spectral_07_h8_amp","address": "/modular-additive/1_Spectral_07_h8_amp","index": 265876,"init": 0.06,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral/08_h9_16_amp","varname": "fHslider671","shortname": "1_Spectral_08_h9_16_amp","address": "/modular-additive/1_Spectral_08_h9_16_amp","index": 265776,"init": 0.05,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral/09_h17_32_amp","varname": "fHslider670","shortname": "1_Spectral_09_h17_32_amp","address": "/modular-additive/1_Spectral_09_h17_32_amp","index": 265580,"init": 0.025,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral/10_h33_64_amp","varname": "fHslider669","shortname": "1_Spectral_10_h33_64_amp","address": "/modular-additive/1_Spectral_10_h33_64_amp","index": 265192,"init": 0.01,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral/11_spectral_tilt","varname": "fHslider619","shortname": "1_Spectral_11_spectral_tilt","address": "/modular-additive/1_Spectral_11_spectral_tilt","index": 264992,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Spectral/12_inharmonicity","varname": "fHslider423","shortname": "1_Spectral_12_inharmonicity","address": "/modular-additive/1_Spectral_12_inharmonicity","index": 264196,"init": 0,"min": 0,"max": 0.15,"step": 0.0001},{"type": "hslider","label": "1_Spectral/13_odd_even","varname": "fHslider668","shortname": "1_Spectral_13_odd_even","address": "/modular-additive/1_Spectral_13_odd_even","index": 265188,"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "2_Formants/00_formant1_freq","varname": "fHslider473","shortname": "2_Formants_00_formant1_freq","address": "/modular-additive/2_Formants_00_formant1_freq","index": 264408,"meta": [{ "tooltip": "Formant 1 harmonic idx" }],"init": 3,"min": 1,"max": 16,"step": 0.01},{"type": "hslider","label": "2_Formants/01_formant2_freq","varname": "fHslider472","shortname": "2_Formants_01_formant2_freq","address": "/modular-additive/2_Formants_01_formant2_freq","index": 264404,"meta": [{ "tooltip": "Formant 2 harmonic idx" }],"init": 6,"min": 1,"max": 16,"step": 0.01},{"type": "hslider","label": "2_Formants/02_formant_depth","varname": "fHslider522","shortname": "2_Formants_02_formant_depth","address": "/modular-additive/2_Formants_02_formant_depth","index": 264604,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "2_Formants/03_noise_floor","varname": "fHslider322","shortname": "2_Formants_03_noise_floor","address": "/modular-additive/2_Formants_03_noise_floor","index": 263752,"init": 0,"min": 0,"max": 0.2,"step": 0.001},{"type": "hslider","label": "2_Formants/04_noise_color","varname": "fHslider323","shortname": "2_Formants_04_noise_color","address": "/modular-additive/2_Formants_04_noise_color","index": 263756,"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "2_Formants/05_sub_harmonic","varname": "fHslider374","shortname": "2_Formants_05_sub_harmonic","address": "/modular-additive/2_Formants_05_sub_harmonic","index": 264000,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "3_Master/00_level","varname": "fHslider681","shortname": "3_Master_00_level","address": "/modular-additive/3_Master_00_level","index": 265992,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "3_Master/01_fine_tune","varname": "fHslider372","shortname": "3_Master_01_fine_tune","address": "/modular-additive/3_Master_01_fine_tune","index": 263980,"meta": [{ "unit": "ct" }],"init": 0,"min": -50,"max": 50,"step": 0.1},{"type": "hslider","label": "3_Master/02_saturation","varname": "fHslider680","shortname": "3_Master_02_saturation","address": "/modular-additive/3_Master_02_saturation","index": 265988,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "3_Master/03_stereo_phase_spread","varname": "fHslider682","shortname": "3_Master_03_stereo_phase_spread","address": "/modular-additive/3_Master_03_stereo_phase_spread","index": 265996,"init": 0.1,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "3_Master/04_master_pan","varname": "fHslider224","shortname": "3_Master_04_master_pan","address": "/modular-additive/3_Master_04_master_pan","index": 263344,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/00_adsr01_attack","varname": "fHslider219","shortname": "MM_ADSR_00_adsr01_attack","address": "/modular-additive/MM_ADSR_00_adsr01_attack","index": 263324,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/00_adsr01_decay","varname": "fHslider220","shortname": "MM_ADSR_00_adsr01_decay","address": "/modular-additive/MM_ADSR_00_adsr01_decay","index": 263328,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/00_adsr01_enable","varname": "fHslider223","shortname": "MM_ADSR_00_adsr01_enable","address": "/modular-additive/MM_ADSR_00_adsr01_enable","index": 263340,"init": 1,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/00_adsr01_release","varname": "fHslider218","shortname": "MM_ADSR_00_adsr01_release","address": "/modular-additive/MM_ADSR_00_adsr01_release","index": 263320,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/00_adsr01_sustain","varname": "fHslider221","shortname": "MM_ADSR_00_adsr01_sustain","address": "/modular-additive/MM_ADSR_00_adsr01_sustain","index": 263332,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/01_adsr02_attack","varname": "fHslider213","shortname": "MM_ADSR_01_adsr02_attack","address": "/modular-additive/MM_ADSR_01_adsr02_attack","index": 263300,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/01_adsr02_decay","varname": "fHslider214","shortname": "MM_ADSR_01_adsr02_decay","address": "/modular-additive/MM_ADSR_01_adsr02_decay","index": 263304,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/01_adsr02_enable","varname": "fHslider217","shortname": "MM_ADSR_01_adsr02_enable","address": "/modular-additive/MM_ADSR_01_adsr02_enable","index": 263316,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/01_adsr02_release","varname": "fHslider212","shortname": "MM_ADSR_01_adsr02_release","address": "/modular-additive/MM_ADSR_01_adsr02_release","index": 263296,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/01_adsr02_sustain","varname": "fHslider215","shortname": "MM_ADSR_01_adsr02_sustain","address": "/modular-additive/MM_ADSR_01_adsr02_sustain","index": 263308,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/02_adsr03_attack","varname": "fHslider207","shortname": "MM_ADSR_02_adsr03_attack","address": "/modular-additive/MM_ADSR_02_adsr03_attack","index": 263276,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/02_adsr03_decay","varname": "fHslider208","shortname": "MM_ADSR_02_adsr03_decay","address": "/modular-additive/MM_ADSR_02_adsr03_decay","index": 263280,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/02_adsr03_enable","varname": "fHslider211","shortname": "MM_ADSR_02_adsr03_enable","address": "/modular-additive/MM_ADSR_02_adsr03_enable","index": 263292,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/02_adsr03_release","varname": "fHslider206","shortname": "MM_ADSR_02_adsr03_release","address": "/modular-additive/MM_ADSR_02_adsr03_release","index": 263272,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/02_adsr03_sustain","varname": "fHslider209","shortname": "MM_ADSR_02_adsr03_sustain","address": "/modular-additive/MM_ADSR_02_adsr03_sustain","index": 263284,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/03_adsr04_attack","varname": "fHslider201","shortname": "MM_ADSR_03_adsr04_attack","address": "/modular-additive/MM_ADSR_03_adsr04_attack","index": 263252,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/03_adsr04_decay","varname": "fHslider202","shortname": "MM_ADSR_03_adsr04_decay","address": "/modular-additive/MM_ADSR_03_adsr04_decay","index": 263256,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/03_adsr04_enable","varname": "fHslider205","shortname": "MM_ADSR_03_adsr04_enable","address": "/modular-additive/MM_ADSR_03_adsr04_enable","index": 263268,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/03_adsr04_release","varname": "fHslider200","shortname": "MM_ADSR_03_adsr04_release","address": "/modular-additive/MM_ADSR_03_adsr04_release","index": 263248,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/03_adsr04_sustain","varname": "fHslider203","shortname": "MM_ADSR_03_adsr04_sustain","address": "/modular-additive/MM_ADSR_03_adsr04_sustain","index": 263260,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/04_adsr05_attack","varname": "fHslider195","shortname": "MM_ADSR_04_adsr05_attack","address": "/modular-additive/MM_ADSR_04_adsr05_attack","index": 263228,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/04_adsr05_decay","varname": "fHslider196","shortname": "MM_ADSR_04_adsr05_decay","address": "/modular-additive/MM_ADSR_04_adsr05_decay","index": 263232,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/04_adsr05_enable","varname": "fHslider199","shortname": "MM_ADSR_04_adsr05_enable","address": "/modular-additive/MM_ADSR_04_adsr05_enable","index": 263244,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/04_adsr05_release","varname": "fHslider194","shortname": "MM_ADSR_04_adsr05_release","address": "/modular-additive/MM_ADSR_04_adsr05_release","index": 263224,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/04_adsr05_sustain","varname": "fHslider197","shortname": "MM_ADSR_04_adsr05_sustain","address": "/modular-additive/MM_ADSR_04_adsr05_sustain","index": 263236,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/05_adsr06_attack","varname": "fHslider189","shortname": "MM_ADSR_05_adsr06_attack","address": "/modular-additive/MM_ADSR_05_adsr06_attack","index": 263204,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/05_adsr06_decay","varname": "fHslider190","shortname": "MM_ADSR_05_adsr06_decay","address": "/modular-additive/MM_ADSR_05_adsr06_decay","index": 263208,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/05_adsr06_enable","varname": "fHslider193","shortname": "MM_ADSR_05_adsr06_enable","address": "/modular-additive/MM_ADSR_05_adsr06_enable","index": 263220,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/05_adsr06_release","varname": "fHslider188","shortname": "MM_ADSR_05_adsr06_release","address": "/modular-additive/MM_ADSR_05_adsr06_release","index": 263200,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/05_adsr06_sustain","varname": "fHslider191","shortname": "MM_ADSR_05_adsr06_sustain","address": "/modular-additive/MM_ADSR_05_adsr06_sustain","index": 263212,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/06_adsr07_attack","varname": "fHslider183","shortname": "MM_ADSR_06_adsr07_attack","address": "/modular-additive/MM_ADSR_06_adsr07_attack","index": 263180,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/06_adsr07_decay","varname": "fHslider184","shortname": "MM_ADSR_06_adsr07_decay","address": "/modular-additive/MM_ADSR_06_adsr07_decay","index": 263184,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/06_adsr07_enable","varname": "fHslider187","shortname": "MM_ADSR_06_adsr07_enable","address": "/modular-additive/MM_ADSR_06_adsr07_enable","index": 263196,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/06_adsr07_release","varname": "fHslider182","shortname": "MM_ADSR_06_adsr07_release","address": "/modular-additive/MM_ADSR_06_adsr07_release","index": 263176,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/06_adsr07_sustain","varname": "fHslider185","shortname": "MM_ADSR_06_adsr07_sustain","address": "/modular-additive/MM_ADSR_06_adsr07_sustain","index": 263188,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/07_adsr08_attack","varname": "fHslider177","shortname": "MM_ADSR_07_adsr08_attack","address": "/modular-additive/MM_ADSR_07_adsr08_attack","index": 263156,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/07_adsr08_decay","varname": "fHslider178","shortname": "MM_ADSR_07_adsr08_decay","address": "/modular-additive/MM_ADSR_07_adsr08_decay","index": 263160,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/07_adsr08_enable","varname": "fHslider181","shortname": "MM_ADSR_07_adsr08_enable","address": "/modular-additive/MM_ADSR_07_adsr08_enable","index": 263172,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/07_adsr08_release","varname": "fHslider176","shortname": "MM_ADSR_07_adsr08_release","address": "/modular-additive/MM_ADSR_07_adsr08_release","index": 263152,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/07_adsr08_sustain","varname": "fHslider179","shortname": "MM_ADSR_07_adsr08_sustain","address": "/modular-additive/MM_ADSR_07_adsr08_sustain","index": 263164,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/08_adsr09_attack","varname": "fHslider171","shortname": "MM_ADSR_08_adsr09_attack","address": "/modular-additive/MM_ADSR_08_adsr09_attack","index": 263132,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/08_adsr09_decay","varname": "fHslider172","shortname": "MM_ADSR_08_adsr09_decay","address": "/modular-additive/MM_ADSR_08_adsr09_decay","index": 263136,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/08_adsr09_enable","varname": "fHslider175","shortname": "MM_ADSR_08_adsr09_enable","address": "/modular-additive/MM_ADSR_08_adsr09_enable","index": 263148,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/08_adsr09_release","varname": "fHslider170","shortname": "MM_ADSR_08_adsr09_release","address": "/modular-additive/MM_ADSR_08_adsr09_release","index": 263128,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/08_adsr09_sustain","varname": "fHslider173","shortname": "MM_ADSR_08_adsr09_sustain","address": "/modular-additive/MM_ADSR_08_adsr09_sustain","index": 263140,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/09_adsr10_attack","varname": "fHslider165","shortname": "MM_ADSR_09_adsr10_attack","address": "/modular-additive/MM_ADSR_09_adsr10_attack","index": 263108,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/09_adsr10_decay","varname": "fHslider166","shortname": "MM_ADSR_09_adsr10_decay","address": "/modular-additive/MM_ADSR_09_adsr10_decay","index": 263112,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/09_adsr10_enable","varname": "fHslider169","shortname": "MM_ADSR_09_adsr10_enable","address": "/modular-additive/MM_ADSR_09_adsr10_enable","index": 263124,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/09_adsr10_release","varname": "fHslider164","shortname": "MM_ADSR_09_adsr10_release","address": "/modular-additive/MM_ADSR_09_adsr10_release","index": 263104,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/09_adsr10_sustain","varname": "fHslider167","shortname": "MM_ADSR_09_adsr10_sustain","address": "/modular-additive/MM_ADSR_09_adsr10_sustain","index": 263116,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/10_adsr11_attack","varname": "fHslider159","shortname": "MM_ADSR_10_adsr11_attack","address": "/modular-additive/MM_ADSR_10_adsr11_attack","index": 263084,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/10_adsr11_decay","varname": "fHslider160","shortname": "MM_ADSR_10_adsr11_decay","address": "/modular-additive/MM_ADSR_10_adsr11_decay","index": 263088,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/10_adsr11_enable","varname": "fHslider163","shortname": "MM_ADSR_10_adsr11_enable","address": "/modular-additive/MM_ADSR_10_adsr11_enable","index": 263100,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/10_adsr11_release","varname": "fHslider158","shortname": "MM_ADSR_10_adsr11_release","address": "/modular-additive/MM_ADSR_10_adsr11_release","index": 263080,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/10_adsr11_sustain","varname": "fHslider161","shortname": "MM_ADSR_10_adsr11_sustain","address": "/modular-additive/MM_ADSR_10_adsr11_sustain","index": 263092,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/11_adsr12_attack","varname": "fHslider153","shortname": "MM_ADSR_11_adsr12_attack","address": "/modular-additive/MM_ADSR_11_adsr12_attack","index": 263060,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/11_adsr12_decay","varname": "fHslider154","shortname": "MM_ADSR_11_adsr12_decay","address": "/modular-additive/MM_ADSR_11_adsr12_decay","index": 263064,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/11_adsr12_enable","varname": "fHslider157","shortname": "MM_ADSR_11_adsr12_enable","address": "/modular-additive/MM_ADSR_11_adsr12_enable","index": 263076,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/11_adsr12_release","varname": "fHslider152","shortname": "MM_ADSR_11_adsr12_release","address": "/modular-additive/MM_ADSR_11_adsr12_release","index": 263056,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/11_adsr12_sustain","varname": "fHslider155","shortname": "MM_ADSR_11_adsr12_sustain","address": "/modular-additive/MM_ADSR_11_adsr12_sustain","index": 263068,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/12_adsr13_attack","varname": "fHslider147","shortname": "MM_ADSR_12_adsr13_attack","address": "/modular-additive/MM_ADSR_12_adsr13_attack","index": 263036,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/12_adsr13_decay","varname": "fHslider148","shortname": "MM_ADSR_12_adsr13_decay","address": "/modular-additive/MM_ADSR_12_adsr13_decay","index": 263040,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/12_adsr13_enable","varname": "fHslider151","shortname": "MM_ADSR_12_adsr13_enable","address": "/modular-additive/MM_ADSR_12_adsr13_enable","index": 263052,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/12_adsr13_release","varname": "fHslider146","shortname": "MM_ADSR_12_adsr13_release","address": "/modular-additive/MM_ADSR_12_adsr13_release","index": 263032,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/12_adsr13_sustain","varname": "fHslider149","shortname": "MM_ADSR_12_adsr13_sustain","address": "/modular-additive/MM_ADSR_12_adsr13_sustain","index": 263044,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/13_adsr14_attack","varname": "fHslider141","shortname": "MM_ADSR_13_adsr14_attack","address": "/modular-additive/MM_ADSR_13_adsr14_attack","index": 263012,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/13_adsr14_decay","varname": "fHslider142","shortname": "MM_ADSR_13_adsr14_decay","address": "/modular-additive/MM_ADSR_13_adsr14_decay","index": 263016,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/13_adsr14_enable","varname": "fHslider145","shortname": "MM_ADSR_13_adsr14_enable","address": "/modular-additive/MM_ADSR_13_adsr14_enable","index": 263028,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/13_adsr14_release","varname": "fHslider140","shortname": "MM_ADSR_13_adsr14_release","address": "/modular-additive/MM_ADSR_13_adsr14_release","index": 263008,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/13_adsr14_sustain","varname": "fHslider143","shortname": "MM_ADSR_13_adsr14_sustain","address": "/modular-additive/MM_ADSR_13_adsr14_sustain","index": 263020,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/14_adsr15_attack","varname": "fHslider135","shortname": "MM_ADSR_14_adsr15_attack","address": "/modular-additive/MM_ADSR_14_adsr15_attack","index": 262988,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/14_adsr15_decay","varname": "fHslider136","shortname": "MM_ADSR_14_adsr15_decay","address": "/modular-additive/MM_ADSR_14_adsr15_decay","index": 262992,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/14_adsr15_enable","varname": "fHslider139","shortname": "MM_ADSR_14_adsr15_enable","address": "/modular-additive/MM_ADSR_14_adsr15_enable","index": 263004,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/14_adsr15_release","varname": "fHslider134","shortname": "MM_ADSR_14_adsr15_release","address": "/modular-additive/MM_ADSR_14_adsr15_release","index": 262984,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/14_adsr15_sustain","varname": "fHslider137","shortname": "MM_ADSR_14_adsr15_sustain","address": "/modular-additive/MM_ADSR_14_adsr15_sustain","index": 262996,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/15_adsr16_attack","varname": "fHslider129","shortname": "MM_ADSR_15_adsr16_attack","address": "/modular-additive/MM_ADSR_15_adsr16_attack","index": 262964,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/15_adsr16_decay","varname": "fHslider130","shortname": "MM_ADSR_15_adsr16_decay","address": "/modular-additive/MM_ADSR_15_adsr16_decay","index": 262968,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/15_adsr16_enable","varname": "fHslider133","shortname": "MM_ADSR_15_adsr16_enable","address": "/modular-additive/MM_ADSR_15_adsr16_enable","index": 262980,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/15_adsr16_release","varname": "fHslider128","shortname": "MM_ADSR_15_adsr16_release","address": "/modular-additive/MM_ADSR_15_adsr16_release","index": 262952,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/15_adsr16_sustain","varname": "fHslider131","shortname": "MM_ADSR_15_adsr16_sustain","address": "/modular-additive/MM_ADSR_15_adsr16_sustain","index": 262972,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/00_lfo01_enable","varname": "fHslider127","shortname": "MM_LFO_00_lfo01_enable","address": "/modular-additive/MM_LFO_00_lfo01_enable","index": 262928,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/00_lfo01_morph","varname": "fHslider124","shortname": "MM_LFO_00_lfo01_morph","address": "/modular-additive/MM_LFO_00_lfo01_morph","index": 262908,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/00_lfo01_rate","varname": "fHslider125","shortname": "MM_LFO_00_lfo01_rate","address": "/modular-additive/MM_LFO_00_lfo01_rate","index": 262912,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/01_lfo02_enable","varname": "fHslider123","shortname": "MM_LFO_01_lfo02_enable","address": "/modular-additive/MM_LFO_01_lfo02_enable","index": 262904,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/01_lfo02_morph","varname": "fHslider120","shortname": "MM_LFO_01_lfo02_morph","address": "/modular-additive/MM_LFO_01_lfo02_morph","index": 262884,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/01_lfo02_rate","varname": "fHslider121","shortname": "MM_LFO_01_lfo02_rate","address": "/modular-additive/MM_LFO_01_lfo02_rate","index": 262888,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/02_lfo03_enable","varname": "fHslider119","shortname": "MM_LFO_02_lfo03_enable","address": "/modular-additive/MM_LFO_02_lfo03_enable","index": 262880,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/02_lfo03_morph","varname": "fHslider116","shortname": "MM_LFO_02_lfo03_morph","address": "/modular-additive/MM_LFO_02_lfo03_morph","index": 262860,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/02_lfo03_rate","varname": "fHslider117","shortname": "MM_LFO_02_lfo03_rate","address": "/modular-additive/MM_LFO_02_lfo03_rate","index": 262864,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/03_lfo04_enable","varname": "fHslider115","shortname": "MM_LFO_03_lfo04_enable","address": "/modular-additive/MM_LFO_03_lfo04_enable","index": 262856,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/03_lfo04_morph","varname": "fHslider112","shortname": "MM_LFO_03_lfo04_morph","address": "/modular-additive/MM_LFO_03_lfo04_morph","index": 262836,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/03_lfo04_rate","varname": "fHslider113","shortname": "MM_LFO_03_lfo04_rate","address": "/modular-additive/MM_LFO_03_lfo04_rate","index": 262840,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/04_lfo05_enable","varname": "fHslider111","shortname": "MM_LFO_04_lfo05_enable","address": "/modular-additive/MM_LFO_04_lfo05_enable","index": 262832,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/04_lfo05_morph","varname": "fHslider108","shortname": "MM_LFO_04_lfo05_morph","address": "/modular-additive/MM_LFO_04_lfo05_morph","index": 262812,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/04_lfo05_rate","varname": "fHslider109","shortname": "MM_LFO_04_lfo05_rate","address": "/modular-additive/MM_LFO_04_lfo05_rate","index": 262816,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/05_lfo06_enable","varname": "fHslider107","shortname": "MM_LFO_05_lfo06_enable","address": "/modular-additive/MM_LFO_05_lfo06_enable","index": 262808,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/05_lfo06_morph","varname": "fHslider104","shortname": "MM_LFO_05_lfo06_morph","address": "/modular-additive/MM_LFO_05_lfo06_morph","index": 262788,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/05_lfo06_rate","varname": "fHslider105","shortname": "MM_LFO_05_lfo06_rate","address": "/modular-additive/MM_LFO_05_lfo06_rate","index": 262792,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/06_lfo07_enable","varname": "fHslider103","shortname": "MM_LFO_06_lfo07_enable","address": "/modular-additive/MM_LFO_06_lfo07_enable","index": 262784,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/06_lfo07_morph","varname": "fHslider100","shortname": "MM_LFO_06_lfo07_morph","address": "/modular-additive/MM_LFO_06_lfo07_morph","index": 262764,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/06_lfo07_rate","varname": "fHslider101","shortname": "MM_LFO_06_lfo07_rate","address": "/modular-additive/MM_LFO_06_lfo07_rate","index": 262768,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/07_lfo08_enable","varname": "fHslider99","shortname": "MM_LFO_07_lfo08_enable","address": "/modular-additive/MM_LFO_07_lfo08_enable","index": 262760,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/07_lfo08_morph","varname": "fHslider96","shortname": "MM_LFO_07_lfo08_morph","address": "/modular-additive/MM_LFO_07_lfo08_morph","index": 262740,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/07_lfo08_rate","varname": "fHslider97","shortname": "MM_LFO_07_lfo08_rate","address": "/modular-additive/MM_LFO_07_lfo08_rate","index": 262744,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/08_lfo09_enable","varname": "fHslider95","shortname": "MM_LFO_08_lfo09_enable","address": "/modular-additive/MM_LFO_08_lfo09_enable","index": 262736,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/08_lfo09_morph","varname": "fHslider92","shortname": "MM_LFO_08_lfo09_morph","address": "/modular-additive/MM_LFO_08_lfo09_morph","index": 262716,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/08_lfo09_rate","varname": "fHslider93","shortname": "MM_LFO_08_lfo09_rate","address": "/modular-additive/MM_LFO_08_lfo09_rate","index": 262720,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/09_lfo10_enable","varname": "fHslider91","shortname": "MM_LFO_09_lfo10_enable","address": "/modular-additive/MM_LFO_09_lfo10_enable","index": 262712,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/09_lfo10_morph","varname": "fHslider88","shortname": "MM_LFO_09_lfo10_morph","address": "/modular-additive/MM_LFO_09_lfo10_morph","index": 262692,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/09_lfo10_rate","varname": "fHslider89","shortname": "MM_LFO_09_lfo10_rate","address": "/modular-additive/MM_LFO_09_lfo10_rate","index": 262696,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/10_lfo11_enable","varname": "fHslider87","shortname": "MM_LFO_10_lfo11_enable","address": "/modular-additive/MM_LFO_10_lfo11_enable","index": 262688,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/10_lfo11_morph","varname": "fHslider84","shortname": "MM_LFO_10_lfo11_morph","address": "/modular-additive/MM_LFO_10_lfo11_morph","index": 262668,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/10_lfo11_rate","varname": "fHslider85","shortname": "MM_LFO_10_lfo11_rate","address": "/modular-additive/MM_LFO_10_lfo11_rate","index": 262672,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/11_lfo12_enable","varname": "fHslider83","shortname": "MM_LFO_11_lfo12_enable","address": "/modular-additive/MM_LFO_11_lfo12_enable","index": 262664,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/11_lfo12_morph","varname": "fHslider80","shortname": "MM_LFO_11_lfo12_morph","address": "/modular-additive/MM_LFO_11_lfo12_morph","index": 262644,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/11_lfo12_rate","varname": "fHslider81","shortname": "MM_LFO_11_lfo12_rate","address": "/modular-additive/MM_LFO_11_lfo12_rate","index": 262648,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/12_lfo13_enable","varname": "fHslider79","shortname": "MM_LFO_12_lfo13_enable","address": "/modular-additive/MM_LFO_12_lfo13_enable","index": 262640,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/12_lfo13_morph","varname": "fHslider76","shortname": "MM_LFO_12_lfo13_morph","address": "/modular-additive/MM_LFO_12_lfo13_morph","index": 262620,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/12_lfo13_rate","varname": "fHslider77","shortname": "MM_LFO_12_lfo13_rate","address": "/modular-additive/MM_LFO_12_lfo13_rate","index": 262624,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/13_lfo14_enable","varname": "fHslider75","shortname": "MM_LFO_13_lfo14_enable","address": "/modular-additive/MM_LFO_13_lfo14_enable","index": 262616,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/13_lfo14_morph","varname": "fHslider72","shortname": "MM_LFO_13_lfo14_morph","address": "/modular-additive/MM_LFO_13_lfo14_morph","index": 262596,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/13_lfo14_rate","varname": "fHslider73","shortname": "MM_LFO_13_lfo14_rate","address": "/modular-additive/MM_LFO_13_lfo14_rate","index": 262600,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/14_lfo15_enable","varname": "fHslider71","shortname": "MM_LFO_14_lfo15_enable","address": "/modular-additive/MM_LFO_14_lfo15_enable","index": 262592,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/14_lfo15_morph","varname": "fHslider68","shortname": "MM_LFO_14_lfo15_morph","address": "/modular-additive/MM_LFO_14_lfo15_morph","index": 262572,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/14_lfo15_rate","varname": "fHslider69","shortname": "MM_LFO_14_lfo15_rate","address": "/modular-additive/MM_LFO_14_lfo15_rate","index": 262576,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/15_lfo16_enable","varname": "fHslider67","shortname": "MM_LFO_15_lfo16_enable","address": "/modular-additive/MM_LFO_15_lfo16_enable","index": 262568,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/15_lfo16_morph","varname": "fHslider64","shortname": "MM_LFO_15_lfo16_morph","address": "/modular-additive/MM_LFO_15_lfo16_morph","index": 262548,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/15_lfo16_rate","varname": "fHslider65","shortname": "MM_LFO_15_lfo16_rate","address": "/modular-additive/MM_LFO_15_lfo16_rate","index": 262552,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/16_lfo17_enable","varname": "fHslider63","shortname": "MM_LFO_16_lfo17_enable","address": "/modular-additive/MM_LFO_16_lfo17_enable","index": 262544,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/16_lfo17_morph","varname": "fHslider60","shortname": "MM_LFO_16_lfo17_morph","address": "/modular-additive/MM_LFO_16_lfo17_morph","index": 262524,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/16_lfo17_rate","varname": "fHslider61","shortname": "MM_LFO_16_lfo17_rate","address": "/modular-additive/MM_LFO_16_lfo17_rate","index": 262528,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/17_lfo18_enable","varname": "fHslider59","shortname": "MM_LFO_17_lfo18_enable","address": "/modular-additive/MM_LFO_17_lfo18_enable","index": 262520,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/17_lfo18_morph","varname": "fHslider56","shortname": "MM_LFO_17_lfo18_morph","address": "/modular-additive/MM_LFO_17_lfo18_morph","index": 262500,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/17_lfo18_rate","varname": "fHslider57","shortname": "MM_LFO_17_lfo18_rate","address": "/modular-additive/MM_LFO_17_lfo18_rate","index": 262504,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/18_lfo19_enable","varname": "fHslider55","shortname": "MM_LFO_18_lfo19_enable","address": "/modular-additive/MM_LFO_18_lfo19_enable","index": 262496,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/18_lfo19_morph","varname": "fHslider52","shortname": "MM_LFO_18_lfo19_morph","address": "/modular-additive/MM_LFO_18_lfo19_morph","index": 262476,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/18_lfo19_rate","varname": "fHslider53","shortname": "MM_LFO_18_lfo19_rate","address": "/modular-additive/MM_LFO_18_lfo19_rate","index": 262480,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/19_lfo20_enable","varname": "fHslider51","shortname": "MM_LFO_19_lfo20_enable","address": "/modular-additive/MM_LFO_19_lfo20_enable","index": 262472,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/19_lfo20_morph","varname": "fHslider48","shortname": "MM_LFO_19_lfo20_morph","address": "/modular-additive/MM_LFO_19_lfo20_morph","index": 262452,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/19_lfo20_rate","varname": "fHslider49","shortname": "MM_LFO_19_lfo20_rate","address": "/modular-additive/MM_LFO_19_lfo20_rate","index": 262456,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/20_lfo21_enable","varname": "fHslider47","shortname": "MM_LFO_20_lfo21_enable","address": "/modular-additive/MM_LFO_20_lfo21_enable","index": 262448,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/20_lfo21_morph","varname": "fHslider44","shortname": "MM_LFO_20_lfo21_morph","address": "/modular-additive/MM_LFO_20_lfo21_morph","index": 262428,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/20_lfo21_rate","varname": "fHslider45","shortname": "MM_LFO_20_lfo21_rate","address": "/modular-additive/MM_LFO_20_lfo21_rate","index": 262432,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/21_lfo22_enable","varname": "fHslider43","shortname": "MM_LFO_21_lfo22_enable","address": "/modular-additive/MM_LFO_21_lfo22_enable","index": 262424,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/21_lfo22_morph","varname": "fHslider40","shortname": "MM_LFO_21_lfo22_morph","address": "/modular-additive/MM_LFO_21_lfo22_morph","index": 262404,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/21_lfo22_rate","varname": "fHslider41","shortname": "MM_LFO_21_lfo22_rate","address": "/modular-additive/MM_LFO_21_lfo22_rate","index": 262408,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/22_lfo23_enable","varname": "fHslider39","shortname": "MM_LFO_22_lfo23_enable","address": "/modular-additive/MM_LFO_22_lfo23_enable","index": 262400,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/22_lfo23_morph","varname": "fHslider36","shortname": "MM_LFO_22_lfo23_morph","address": "/modular-additive/MM_LFO_22_lfo23_morph","index": 262380,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/22_lfo23_rate","varname": "fHslider37","shortname": "MM_LFO_22_lfo23_rate","address": "/modular-additive/MM_LFO_22_lfo23_rate","index": 262384,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/23_lfo24_enable","varname": "fHslider35","shortname": "MM_LFO_23_lfo24_enable","address": "/modular-additive/MM_LFO_23_lfo24_enable","index": 262376,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/23_lfo24_morph","varname": "fHslider32","shortname": "MM_LFO_23_lfo24_morph","address": "/modular-additive/MM_LFO_23_lfo24_morph","index": 262356,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/23_lfo24_rate","varname": "fHslider33","shortname": "MM_LFO_23_lfo24_rate","address": "/modular-additive/MM_LFO_23_lfo24_rate","index": 262360,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/24_lfo25_enable","varname": "fHslider31","shortname": "MM_LFO_24_lfo25_enable","address": "/modular-additive/MM_LFO_24_lfo25_enable","index": 262352,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/24_lfo25_morph","varname": "fHslider28","shortname": "MM_LFO_24_lfo25_morph","address": "/modular-additive/MM_LFO_24_lfo25_morph","index": 262332,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/24_lfo25_rate","varname": "fHslider29","shortname": "MM_LFO_24_lfo25_rate","address": "/modular-additive/MM_LFO_24_lfo25_rate","index": 262336,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/25_lfo26_enable","varname": "fHslider27","shortname": "MM_LFO_25_lfo26_enable","address": "/modular-additive/MM_LFO_25_lfo26_enable","index": 262328,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/25_lfo26_morph","varname": "fHslider24","shortname": "MM_LFO_25_lfo26_morph","address": "/modular-additive/MM_LFO_25_lfo26_morph","index": 262308,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/25_lfo26_rate","varname": "fHslider25","shortname": "MM_LFO_25_lfo26_rate","address": "/modular-additive/MM_LFO_25_lfo26_rate","index": 262312,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/26_lfo27_enable","varname": "fHslider23","shortname": "MM_LFO_26_lfo27_enable","address": "/modular-additive/MM_LFO_26_lfo27_enable","index": 262304,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/26_lfo27_morph","varname": "fHslider20","shortname": "MM_LFO_26_lfo27_morph","address": "/modular-additive/MM_LFO_26_lfo27_morph","index": 262284,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/26_lfo27_rate","varname": "fHslider21","shortname": "MM_LFO_26_lfo27_rate","address": "/modular-additive/MM_LFO_26_lfo27_rate","index": 262288,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/27_lfo28_enable","varname": "fHslider19","shortname": "MM_LFO_27_lfo28_enable","address": "/modular-additive/MM_LFO_27_lfo28_enable","index": 262280,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/27_lfo28_morph","varname": "fHslider16","shortname": "MM_LFO_27_lfo28_morph","address": "/modular-additive/MM_LFO_27_lfo28_morph","index": 262260,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/27_lfo28_rate","varname": "fHslider17","shortname": "MM_LFO_27_lfo28_rate","address": "/modular-additive/MM_LFO_27_lfo28_rate","index": 262264,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/28_lfo29_enable","varname": "fHslider15","shortname": "MM_LFO_28_lfo29_enable","address": "/modular-additive/MM_LFO_28_lfo29_enable","index": 262256,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/28_lfo29_morph","varname": "fHslider12","shortname": "MM_LFO_28_lfo29_morph","address": "/modular-additive/MM_LFO_28_lfo29_morph","index": 262236,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/28_lfo29_rate","varname": "fHslider13","shortname": "MM_LFO_28_lfo29_rate","address": "/modular-additive/MM_LFO_28_lfo29_rate","index": 262240,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/29_lfo30_enable","varname": "fHslider11","shortname": "MM_LFO_29_lfo30_enable","address": "/modular-additive/MM_LFO_29_lfo30_enable","index": 262232,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/29_lfo30_morph","varname": "fHslider8","shortname": "MM_LFO_29_lfo30_morph","address": "/modular-additive/MM_LFO_29_lfo30_morph","index": 262212,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/29_lfo30_rate","varname": "fHslider9","shortname": "MM_LFO_29_lfo30_rate","address": "/modular-additive/MM_LFO_29_lfo30_rate","index": 262216,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/30_lfo31_enable","varname": "fHslider7","shortname": "MM_LFO_30_lfo31_enable","address": "/modular-additive/MM_LFO_30_lfo31_enable","index": 262208,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/30_lfo31_morph","varname": "fHslider4","shortname": "MM_LFO_30_lfo31_morph","address": "/modular-additive/MM_LFO_30_lfo31_morph","index": 262188,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/30_lfo31_rate","varname": "fHslider5","shortname": "MM_LFO_30_lfo31_rate","address": "/modular-additive/MM_LFO_30_lfo31_rate","index": 262192,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/31_lfo32_enable","varname": "fHslider3","shortname": "MM_LFO_31_lfo32_enable","address": "/modular-additive/MM_LFO_31_lfo32_enable","index": 262184,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/31_lfo32_morph","varname": "fHslider0","shortname": "MM_LFO_31_lfo32_morph","address": "/modular-additive/MM_LFO_31_lfo32_morph","index": 262144,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/31_lfo32_rate","varname": "fHslider1","shortname": "MM_LFO_31_lfo32_rate","address": "/modular-additive/MM_LFO_31_lfo32_rate","index": 262156,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d00_pitch","varname": "fHslider371","shortname": "MM_Matrix_s00_d00_pitch","address": "/modular-additive/MM_Matrix_s00_d00_pitch","index": 263976,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d01_bright","varname": "fHslider570","shortname": "MM_Matrix_s00_d01_bright","address": "/modular-additive/MM_Matrix_s00_d01_bright","index": 264796,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d02_tilt","varname": "fHslider618","shortname": "MM_Matrix_s00_d02_tilt","address": "/modular-additive/MM_Matrix_s00_d02_tilt","index": 264988,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d03_inharmonicity","varname": "fHslider422","shortname": "MM_Matrix_s00_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s00_d03_inharmonicity","index": 264192,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d04_odd_even","varname": "fHslider667","shortname": "MM_Matrix_s00_d04_odd_even","address": "/modular-additive/MM_Matrix_s00_d04_odd_even","index": 265184,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d05_formant_ctr","varname": "fHslider471","shortname": "MM_Matrix_s00_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s00_d05_formant_ctr","index": 264400,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d06_formant_depth","varname": "fHslider521","shortname": "MM_Matrix_s00_d06_formant_depth","address": "/modular-additive/MM_Matrix_s00_d06_formant_depth","index": 264600,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d07_noise_mix","varname": "fHslider321","shortname": "MM_Matrix_s00_d07_noise_mix","address": "/modular-additive/MM_Matrix_s00_d07_noise_mix","index": 263748,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d08_amp","varname": "fHslider273","shortname": "MM_Matrix_s00_d08_amp","address": "/modular-additive/MM_Matrix_s00_d08_amp","index": 263556,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d09_pan","varname": "fHslider222","shortname": "MM_Matrix_s00_d09_pan","address": "/modular-additive/MM_Matrix_s00_d09_pan","index": 263336,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d00_pitch","varname": "fHslider370","shortname": "MM_Matrix_s01_d00_pitch","address": "/modular-additive/MM_Matrix_s01_d00_pitch","index": 263972,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d01_bright","varname": "fHslider569","shortname": "MM_Matrix_s01_d01_bright","address": "/modular-additive/MM_Matrix_s01_d01_bright","index": 264792,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d02_tilt","varname": "fHslider617","shortname": "MM_Matrix_s01_d02_tilt","address": "/modular-additive/MM_Matrix_s01_d02_tilt","index": 264984,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d03_inharmonicity","varname": "fHslider421","shortname": "MM_Matrix_s01_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s01_d03_inharmonicity","index": 264188,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d04_odd_even","varname": "fHslider666","shortname": "MM_Matrix_s01_d04_odd_even","address": "/modular-additive/MM_Matrix_s01_d04_odd_even","index": 265180,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d05_formant_ctr","varname": "fHslider470","shortname": "MM_Matrix_s01_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s01_d05_formant_ctr","index": 264396,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d06_formant_depth","varname": "fHslider520","shortname": "MM_Matrix_s01_d06_formant_depth","address": "/modular-additive/MM_Matrix_s01_d06_formant_depth","index": 264596,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d07_noise_mix","varname": "fHslider320","shortname": "MM_Matrix_s01_d07_noise_mix","address": "/modular-additive/MM_Matrix_s01_d07_noise_mix","index": 263744,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d08_amp","varname": "fHslider272","shortname": "MM_Matrix_s01_d08_amp","address": "/modular-additive/MM_Matrix_s01_d08_amp","index": 263552,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d09_pan","varname": "fHslider216","shortname": "MM_Matrix_s01_d09_pan","address": "/modular-additive/MM_Matrix_s01_d09_pan","index": 263312,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d00_pitch","varname": "fHslider369","shortname": "MM_Matrix_s02_d00_pitch","address": "/modular-additive/MM_Matrix_s02_d00_pitch","index": 263968,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d01_bright","varname": "fHslider568","shortname": "MM_Matrix_s02_d01_bright","address": "/modular-additive/MM_Matrix_s02_d01_bright","index": 264788,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d02_tilt","varname": "fHslider616","shortname": "MM_Matrix_s02_d02_tilt","address": "/modular-additive/MM_Matrix_s02_d02_tilt","index": 264980,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d03_inharmonicity","varname": "fHslider420","shortname": "MM_Matrix_s02_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s02_d03_inharmonicity","index": 264184,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d04_odd_even","varname": "fHslider665","shortname": "MM_Matrix_s02_d04_odd_even","address": "/modular-additive/MM_Matrix_s02_d04_odd_even","index": 265176,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d05_formant_ctr","varname": "fHslider469","shortname": "MM_Matrix_s02_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s02_d05_formant_ctr","index": 264392,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d06_formant_depth","varname": "fHslider519","shortname": "MM_Matrix_s02_d06_formant_depth","address": "/modular-additive/MM_Matrix_s02_d06_formant_depth","index": 264592,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d07_noise_mix","varname": "fHslider319","shortname": "MM_Matrix_s02_d07_noise_mix","address": "/modular-additive/MM_Matrix_s02_d07_noise_mix","index": 263740,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d08_amp","varname": "fHslider271","shortname": "MM_Matrix_s02_d08_amp","address": "/modular-additive/MM_Matrix_s02_d08_amp","index": 263548,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d09_pan","varname": "fHslider210","shortname": "MM_Matrix_s02_d09_pan","address": "/modular-additive/MM_Matrix_s02_d09_pan","index": 263288,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d00_pitch","varname": "fHslider368","shortname": "MM_Matrix_s03_d00_pitch","address": "/modular-additive/MM_Matrix_s03_d00_pitch","index": 263964,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d01_bright","varname": "fHslider567","shortname": "MM_Matrix_s03_d01_bright","address": "/modular-additive/MM_Matrix_s03_d01_bright","index": 264784,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d02_tilt","varname": "fHslider615","shortname": "MM_Matrix_s03_d02_tilt","address": "/modular-additive/MM_Matrix_s03_d02_tilt","index": 264976,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d03_inharmonicity","varname": "fHslider419","shortname": "MM_Matrix_s03_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s03_d03_inharmonicity","index": 264180,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d04_odd_even","varname": "fHslider664","shortname": "MM_Matrix_s03_d04_odd_even","address": "/modular-additive/MM_Matrix_s03_d04_odd_even","index": 265172,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d05_formant_ctr","varname": "fHslider468","shortname": "MM_Matrix_s03_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s03_d05_formant_ctr","index": 264388,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d06_formant_depth","varname": "fHslider518","shortname": "MM_Matrix_s03_d06_formant_depth","address": "/modular-additive/MM_Matrix_s03_d06_formant_depth","index": 264588,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d07_noise_mix","varname": "fHslider318","shortname": "MM_Matrix_s03_d07_noise_mix","address": "/modular-additive/MM_Matrix_s03_d07_noise_mix","index": 263736,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d08_amp","varname": "fHslider270","shortname": "MM_Matrix_s03_d08_amp","address": "/modular-additive/MM_Matrix_s03_d08_amp","index": 263544,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d09_pan","varname": "fHslider204","shortname": "MM_Matrix_s03_d09_pan","address": "/modular-additive/MM_Matrix_s03_d09_pan","index": 263264,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d00_pitch","varname": "fHslider367","shortname": "MM_Matrix_s04_d00_pitch","address": "/modular-additive/MM_Matrix_s04_d00_pitch","index": 263960,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d01_bright","varname": "fHslider566","shortname": "MM_Matrix_s04_d01_bright","address": "/modular-additive/MM_Matrix_s04_d01_bright","index": 264780,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d02_tilt","varname": "fHslider614","shortname": "MM_Matrix_s04_d02_tilt","address": "/modular-additive/MM_Matrix_s04_d02_tilt","index": 264972,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d03_inharmonicity","varname": "fHslider418","shortname": "MM_Matrix_s04_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s04_d03_inharmonicity","index": 264176,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d04_odd_even","varname": "fHslider663","shortname": "MM_Matrix_s04_d04_odd_even","address": "/modular-additive/MM_Matrix_s04_d04_odd_even","index": 265168,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d05_formant_ctr","varname": "fHslider467","shortname": "MM_Matrix_s04_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s04_d05_formant_ctr","index": 264384,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d06_formant_depth","varname": "fHslider517","shortname": "MM_Matrix_s04_d06_formant_depth","address": "/modular-additive/MM_Matrix_s04_d06_formant_depth","index": 264584,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d07_noise_mix","varname": "fHslider317","shortname": "MM_Matrix_s04_d07_noise_mix","address": "/modular-additive/MM_Matrix_s04_d07_noise_mix","index": 263732,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d08_amp","varname": "fHslider269","shortname": "MM_Matrix_s04_d08_amp","address": "/modular-additive/MM_Matrix_s04_d08_amp","index": 263540,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d09_pan","varname": "fHslider198","shortname": "MM_Matrix_s04_d09_pan","address": "/modular-additive/MM_Matrix_s04_d09_pan","index": 263240,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d00_pitch","varname": "fHslider366","shortname": "MM_Matrix_s05_d00_pitch","address": "/modular-additive/MM_Matrix_s05_d00_pitch","index": 263956,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d01_bright","varname": "fHslider565","shortname": "MM_Matrix_s05_d01_bright","address": "/modular-additive/MM_Matrix_s05_d01_bright","index": 264776,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d02_tilt","varname": "fHslider613","shortname": "MM_Matrix_s05_d02_tilt","address": "/modular-additive/MM_Matrix_s05_d02_tilt","index": 264968,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d03_inharmonicity","varname": "fHslider417","shortname": "MM_Matrix_s05_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s05_d03_inharmonicity","index": 264172,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d04_odd_even","varname": "fHslider662","shortname": "MM_Matrix_s05_d04_odd_even","address": "/modular-additive/MM_Matrix_s05_d04_odd_even","index": 265164,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d05_formant_ctr","varname": "fHslider466","shortname": "MM_Matrix_s05_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s05_d05_formant_ctr","index": 264380,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d06_formant_depth","varname": "fHslider516","shortname": "MM_Matrix_s05_d06_formant_depth","address": "/modular-additive/MM_Matrix_s05_d06_formant_depth","index": 264580,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d07_noise_mix","varname": "fHslider316","shortname": "MM_Matrix_s05_d07_noise_mix","address": "/modular-additive/MM_Matrix_s05_d07_noise_mix","index": 263728,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d08_amp","varname": "fHslider268","shortname": "MM_Matrix_s05_d08_amp","address": "/modular-additive/MM_Matrix_s05_d08_amp","index": 263536,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d09_pan","varname": "fHslider192","shortname": "MM_Matrix_s05_d09_pan","address": "/modular-additive/MM_Matrix_s05_d09_pan","index": 263216,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d00_pitch","varname": "fHslider365","shortname": "MM_Matrix_s06_d00_pitch","address": "/modular-additive/MM_Matrix_s06_d00_pitch","index": 263952,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d01_bright","varname": "fHslider564","shortname": "MM_Matrix_s06_d01_bright","address": "/modular-additive/MM_Matrix_s06_d01_bright","index": 264772,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d02_tilt","varname": "fHslider612","shortname": "MM_Matrix_s06_d02_tilt","address": "/modular-additive/MM_Matrix_s06_d02_tilt","index": 264964,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d03_inharmonicity","varname": "fHslider416","shortname": "MM_Matrix_s06_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s06_d03_inharmonicity","index": 264168,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d04_odd_even","varname": "fHslider661","shortname": "MM_Matrix_s06_d04_odd_even","address": "/modular-additive/MM_Matrix_s06_d04_odd_even","index": 265160,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d05_formant_ctr","varname": "fHslider465","shortname": "MM_Matrix_s06_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s06_d05_formant_ctr","index": 264376,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d06_formant_depth","varname": "fHslider515","shortname": "MM_Matrix_s06_d06_formant_depth","address": "/modular-additive/MM_Matrix_s06_d06_formant_depth","index": 264576,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d07_noise_mix","varname": "fHslider315","shortname": "MM_Matrix_s06_d07_noise_mix","address": "/modular-additive/MM_Matrix_s06_d07_noise_mix","index": 263724,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d08_amp","varname": "fHslider267","shortname": "MM_Matrix_s06_d08_amp","address": "/modular-additive/MM_Matrix_s06_d08_amp","index": 263532,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d09_pan","varname": "fHslider186","shortname": "MM_Matrix_s06_d09_pan","address": "/modular-additive/MM_Matrix_s06_d09_pan","index": 263192,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d00_pitch","varname": "fHslider364","shortname": "MM_Matrix_s07_d00_pitch","address": "/modular-additive/MM_Matrix_s07_d00_pitch","index": 263948,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d01_bright","varname": "fHslider563","shortname": "MM_Matrix_s07_d01_bright","address": "/modular-additive/MM_Matrix_s07_d01_bright","index": 264768,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d02_tilt","varname": "fHslider611","shortname": "MM_Matrix_s07_d02_tilt","address": "/modular-additive/MM_Matrix_s07_d02_tilt","index": 264960,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d03_inharmonicity","varname": "fHslider415","shortname": "MM_Matrix_s07_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s07_d03_inharmonicity","index": 264164,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d04_odd_even","varname": "fHslider660","shortname": "MM_Matrix_s07_d04_odd_even","address": "/modular-additive/MM_Matrix_s07_d04_odd_even","index": 265156,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d05_formant_ctr","varname": "fHslider464","shortname": "MM_Matrix_s07_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s07_d05_formant_ctr","index": 264372,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d06_formant_depth","varname": "fHslider514","shortname": "MM_Matrix_s07_d06_formant_depth","address": "/modular-additive/MM_Matrix_s07_d06_formant_depth","index": 264572,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d07_noise_mix","varname": "fHslider314","shortname": "MM_Matrix_s07_d07_noise_mix","address": "/modular-additive/MM_Matrix_s07_d07_noise_mix","index": 263720,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d08_amp","varname": "fHslider266","shortname": "MM_Matrix_s07_d08_amp","address": "/modular-additive/MM_Matrix_s07_d08_amp","index": 263528,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d09_pan","varname": "fHslider180","shortname": "MM_Matrix_s07_d09_pan","address": "/modular-additive/MM_Matrix_s07_d09_pan","index": 263168,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d00_pitch","varname": "fHslider363","shortname": "MM_Matrix_s08_d00_pitch","address": "/modular-additive/MM_Matrix_s08_d00_pitch","index": 263944,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d01_bright","varname": "fHslider562","shortname": "MM_Matrix_s08_d01_bright","address": "/modular-additive/MM_Matrix_s08_d01_bright","index": 264764,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d02_tilt","varname": "fHslider610","shortname": "MM_Matrix_s08_d02_tilt","address": "/modular-additive/MM_Matrix_s08_d02_tilt","index": 264956,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d03_inharmonicity","varname": "fHslider414","shortname": "MM_Matrix_s08_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s08_d03_inharmonicity","index": 264160,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d04_odd_even","varname": "fHslider659","shortname": "MM_Matrix_s08_d04_odd_even","address": "/modular-additive/MM_Matrix_s08_d04_odd_even","index": 265152,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d05_formant_ctr","varname": "fHslider463","shortname": "MM_Matrix_s08_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s08_d05_formant_ctr","index": 264368,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d06_formant_depth","varname": "fHslider513","shortname": "MM_Matrix_s08_d06_formant_depth","address": "/modular-additive/MM_Matrix_s08_d06_formant_depth","index": 264568,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d07_noise_mix","varname": "fHslider313","shortname": "MM_Matrix_s08_d07_noise_mix","address": "/modular-additive/MM_Matrix_s08_d07_noise_mix","index": 263716,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d08_amp","varname": "fHslider265","shortname": "MM_Matrix_s08_d08_amp","address": "/modular-additive/MM_Matrix_s08_d08_amp","index": 263524,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d09_pan","varname": "fHslider174","shortname": "MM_Matrix_s08_d09_pan","address": "/modular-additive/MM_Matrix_s08_d09_pan","index": 263144,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d00_pitch","varname": "fHslider362","shortname": "MM_Matrix_s09_d00_pitch","address": "/modular-additive/MM_Matrix_s09_d00_pitch","index": 263940,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d01_bright","varname": "fHslider561","shortname": "MM_Matrix_s09_d01_bright","address": "/modular-additive/MM_Matrix_s09_d01_bright","index": 264760,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d02_tilt","varname": "fHslider609","shortname": "MM_Matrix_s09_d02_tilt","address": "/modular-additive/MM_Matrix_s09_d02_tilt","index": 264952,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d03_inharmonicity","varname": "fHslider413","shortname": "MM_Matrix_s09_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s09_d03_inharmonicity","index": 264156,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d04_odd_even","varname": "fHslider658","shortname": "MM_Matrix_s09_d04_odd_even","address": "/modular-additive/MM_Matrix_s09_d04_odd_even","index": 265148,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d05_formant_ctr","varname": "fHslider462","shortname": "MM_Matrix_s09_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s09_d05_formant_ctr","index": 264364,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d06_formant_depth","varname": "fHslider512","shortname": "MM_Matrix_s09_d06_formant_depth","address": "/modular-additive/MM_Matrix_s09_d06_formant_depth","index": 264564,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d07_noise_mix","varname": "fHslider312","shortname": "MM_Matrix_s09_d07_noise_mix","address": "/modular-additive/MM_Matrix_s09_d07_noise_mix","index": 263712,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d08_amp","varname": "fHslider264","shortname": "MM_Matrix_s09_d08_amp","address": "/modular-additive/MM_Matrix_s09_d08_amp","index": 263520,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d09_pan","varname": "fHslider168","shortname": "MM_Matrix_s09_d09_pan","address": "/modular-additive/MM_Matrix_s09_d09_pan","index": 263120,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d00_pitch","varname": "fHslider361","shortname": "MM_Matrix_s10_d00_pitch","address": "/modular-additive/MM_Matrix_s10_d00_pitch","index": 263936,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d01_bright","varname": "fHslider560","shortname": "MM_Matrix_s10_d01_bright","address": "/modular-additive/MM_Matrix_s10_d01_bright","index": 264756,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d02_tilt","varname": "fHslider608","shortname": "MM_Matrix_s10_d02_tilt","address": "/modular-additive/MM_Matrix_s10_d02_tilt","index": 264948,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d03_inharmonicity","varname": "fHslider412","shortname": "MM_Matrix_s10_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s10_d03_inharmonicity","index": 264152,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d04_odd_even","varname": "fHslider657","shortname": "MM_Matrix_s10_d04_odd_even","address": "/modular-additive/MM_Matrix_s10_d04_odd_even","index": 265144,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d05_formant_ctr","varname": "fHslider461","shortname": "MM_Matrix_s10_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s10_d05_formant_ctr","index": 264360,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d06_formant_depth","varname": "fHslider511","shortname": "MM_Matrix_s10_d06_formant_depth","address": "/modular-additive/MM_Matrix_s10_d06_formant_depth","index": 264560,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d07_noise_mix","varname": "fHslider311","shortname": "MM_Matrix_s10_d07_noise_mix","address": "/modular-additive/MM_Matrix_s10_d07_noise_mix","index": 263708,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d08_amp","varname": "fHslider263","shortname": "MM_Matrix_s10_d08_amp","address": "/modular-additive/MM_Matrix_s10_d08_amp","index": 263516,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d09_pan","varname": "fHslider162","shortname": "MM_Matrix_s10_d09_pan","address": "/modular-additive/MM_Matrix_s10_d09_pan","index": 263096,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d00_pitch","varname": "fHslider360","shortname": "MM_Matrix_s11_d00_pitch","address": "/modular-additive/MM_Matrix_s11_d00_pitch","index": 263932,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d01_bright","varname": "fHslider559","shortname": "MM_Matrix_s11_d01_bright","address": "/modular-additive/MM_Matrix_s11_d01_bright","index": 264752,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d02_tilt","varname": "fHslider607","shortname": "MM_Matrix_s11_d02_tilt","address": "/modular-additive/MM_Matrix_s11_d02_tilt","index": 264944,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d03_inharmonicity","varname": "fHslider411","shortname": "MM_Matrix_s11_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s11_d03_inharmonicity","index": 264148,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d04_odd_even","varname": "fHslider656","shortname": "MM_Matrix_s11_d04_odd_even","address": "/modular-additive/MM_Matrix_s11_d04_odd_even","index": 265140,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d05_formant_ctr","varname": "fHslider460","shortname": "MM_Matrix_s11_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s11_d05_formant_ctr","index": 264356,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d06_formant_depth","varname": "fHslider510","shortname": "MM_Matrix_s11_d06_formant_depth","address": "/modular-additive/MM_Matrix_s11_d06_formant_depth","index": 264556,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d07_noise_mix","varname": "fHslider310","shortname": "MM_Matrix_s11_d07_noise_mix","address": "/modular-additive/MM_Matrix_s11_d07_noise_mix","index": 263704,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d08_amp","varname": "fHslider262","shortname": "MM_Matrix_s11_d08_amp","address": "/modular-additive/MM_Matrix_s11_d08_amp","index": 263512,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d09_pan","varname": "fHslider156","shortname": "MM_Matrix_s11_d09_pan","address": "/modular-additive/MM_Matrix_s11_d09_pan","index": 263072,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d00_pitch","varname": "fHslider359","shortname": "MM_Matrix_s12_d00_pitch","address": "/modular-additive/MM_Matrix_s12_d00_pitch","index": 263928,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d01_bright","varname": "fHslider558","shortname": "MM_Matrix_s12_d01_bright","address": "/modular-additive/MM_Matrix_s12_d01_bright","index": 264748,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d02_tilt","varname": "fHslider606","shortname": "MM_Matrix_s12_d02_tilt","address": "/modular-additive/MM_Matrix_s12_d02_tilt","index": 264940,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d03_inharmonicity","varname": "fHslider410","shortname": "MM_Matrix_s12_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s12_d03_inharmonicity","index": 264144,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d04_odd_even","varname": "fHslider655","shortname": "MM_Matrix_s12_d04_odd_even","address": "/modular-additive/MM_Matrix_s12_d04_odd_even","index": 265136,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d05_formant_ctr","varname": "fHslider459","shortname": "MM_Matrix_s12_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s12_d05_formant_ctr","index": 264352,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d06_formant_depth","varname": "fHslider509","shortname": "MM_Matrix_s12_d06_formant_depth","address": "/modular-additive/MM_Matrix_s12_d06_formant_depth","index": 264552,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d07_noise_mix","varname": "fHslider309","shortname": "MM_Matrix_s12_d07_noise_mix","address": "/modular-additive/MM_Matrix_s12_d07_noise_mix","index": 263700,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d08_amp","varname": "fHslider261","shortname": "MM_Matrix_s12_d08_amp","address": "/modular-additive/MM_Matrix_s12_d08_amp","index": 263508,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d09_pan","varname": "fHslider150","shortname": "MM_Matrix_s12_d09_pan","address": "/modular-additive/MM_Matrix_s12_d09_pan","index": 263048,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d00_pitch","varname": "fHslider358","shortname": "MM_Matrix_s13_d00_pitch","address": "/modular-additive/MM_Matrix_s13_d00_pitch","index": 263924,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d01_bright","varname": "fHslider557","shortname": "MM_Matrix_s13_d01_bright","address": "/modular-additive/MM_Matrix_s13_d01_bright","index": 264744,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d02_tilt","varname": "fHslider605","shortname": "MM_Matrix_s13_d02_tilt","address": "/modular-additive/MM_Matrix_s13_d02_tilt","index": 264936,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d03_inharmonicity","varname": "fHslider409","shortname": "MM_Matrix_s13_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s13_d03_inharmonicity","index": 264140,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d04_odd_even","varname": "fHslider654","shortname": "MM_Matrix_s13_d04_odd_even","address": "/modular-additive/MM_Matrix_s13_d04_odd_even","index": 265132,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d05_formant_ctr","varname": "fHslider458","shortname": "MM_Matrix_s13_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s13_d05_formant_ctr","index": 264348,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d06_formant_depth","varname": "fHslider508","shortname": "MM_Matrix_s13_d06_formant_depth","address": "/modular-additive/MM_Matrix_s13_d06_formant_depth","index": 264548,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d07_noise_mix","varname": "fHslider308","shortname": "MM_Matrix_s13_d07_noise_mix","address": "/modular-additive/MM_Matrix_s13_d07_noise_mix","index": 263696,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d08_amp","varname": "fHslider260","shortname": "MM_Matrix_s13_d08_amp","address": "/modular-additive/MM_Matrix_s13_d08_amp","index": 263504,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d09_pan","varname": "fHslider144","shortname": "MM_Matrix_s13_d09_pan","address": "/modular-additive/MM_Matrix_s13_d09_pan","index": 263024,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d00_pitch","varname": "fHslider357","shortname": "MM_Matrix_s14_d00_pitch","address": "/modular-additive/MM_Matrix_s14_d00_pitch","index": 263920,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d01_bright","varname": "fHslider556","shortname": "MM_Matrix_s14_d01_bright","address": "/modular-additive/MM_Matrix_s14_d01_bright","index": 264740,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d02_tilt","varname": "fHslider604","shortname": "MM_Matrix_s14_d02_tilt","address": "/modular-additive/MM_Matrix_s14_d02_tilt","index": 264932,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d03_inharmonicity","varname": "fHslider408","shortname": "MM_Matrix_s14_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s14_d03_inharmonicity","index": 264136,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d04_odd_even","varname": "fHslider653","shortname": "MM_Matrix_s14_d04_odd_even","address": "/modular-additive/MM_Matrix_s14_d04_odd_even","index": 265128,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d05_formant_ctr","varname": "fHslider457","shortname": "MM_Matrix_s14_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s14_d05_formant_ctr","index": 264344,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d06_formant_depth","varname": "fHslider507","shortname": "MM_Matrix_s14_d06_formant_depth","address": "/modular-additive/MM_Matrix_s14_d06_formant_depth","index": 264544,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d07_noise_mix","varname": "fHslider307","shortname": "MM_Matrix_s14_d07_noise_mix","address": "/modular-additive/MM_Matrix_s14_d07_noise_mix","index": 263692,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d08_amp","varname": "fHslider259","shortname": "MM_Matrix_s14_d08_amp","address": "/modular-additive/MM_Matrix_s14_d08_amp","index": 263500,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d09_pan","varname": "fHslider138","shortname": "MM_Matrix_s14_d09_pan","address": "/modular-additive/MM_Matrix_s14_d09_pan","index": 263000,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d00_pitch","varname": "fHslider356","shortname": "MM_Matrix_s15_d00_pitch","address": "/modular-additive/MM_Matrix_s15_d00_pitch","index": 263916,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d01_bright","varname": "fHslider555","shortname": "MM_Matrix_s15_d01_bright","address": "/modular-additive/MM_Matrix_s15_d01_bright","index": 264736,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d02_tilt","varname": "fHslider603","shortname": "MM_Matrix_s15_d02_tilt","address": "/modular-additive/MM_Matrix_s15_d02_tilt","index": 264928,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d03_inharmonicity","varname": "fHslider407","shortname": "MM_Matrix_s15_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s15_d03_inharmonicity","index": 264132,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d04_odd_even","varname": "fHslider652","shortname": "MM_Matrix_s15_d04_odd_even","address": "/modular-additive/MM_Matrix_s15_d04_odd_even","index": 265124,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d05_formant_ctr","varname": "fHslider456","shortname": "MM_Matrix_s15_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s15_d05_formant_ctr","index": 264340,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d06_formant_depth","varname": "fHslider506","shortname": "MM_Matrix_s15_d06_formant_depth","address": "/modular-additive/MM_Matrix_s15_d06_formant_depth","index": 264540,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d07_noise_mix","varname": "fHslider306","shortname": "MM_Matrix_s15_d07_noise_mix","address": "/modular-additive/MM_Matrix_s15_d07_noise_mix","index": 263688,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d08_amp","varname": "fHslider258","shortname": "MM_Matrix_s15_d08_amp","address": "/modular-additive/MM_Matrix_s15_d08_amp","index": 263496,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d09_pan","varname": "fHslider132","shortname": "MM_Matrix_s15_d09_pan","address": "/modular-additive/MM_Matrix_s15_d09_pan","index": 262976,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d00_pitch","varname": "fHslider355","shortname": "MM_Matrix_s16_d00_pitch","address": "/modular-additive/MM_Matrix_s16_d00_pitch","index": 263912,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d01_bright","varname": "fHslider554","shortname": "MM_Matrix_s16_d01_bright","address": "/modular-additive/MM_Matrix_s16_d01_bright","index": 264732,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d02_tilt","varname": "fHslider602","shortname": "MM_Matrix_s16_d02_tilt","address": "/modular-additive/MM_Matrix_s16_d02_tilt","index": 264924,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d03_inharmonicity","varname": "fHslider406","shortname": "MM_Matrix_s16_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s16_d03_inharmonicity","index": 264128,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d04_odd_even","varname": "fHslider651","shortname": "MM_Matrix_s16_d04_odd_even","address": "/modular-additive/MM_Matrix_s16_d04_odd_even","index": 265120,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d05_formant_ctr","varname": "fHslider455","shortname": "MM_Matrix_s16_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s16_d05_formant_ctr","index": 264336,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d06_formant_depth","varname": "fHslider505","shortname": "MM_Matrix_s16_d06_formant_depth","address": "/modular-additive/MM_Matrix_s16_d06_formant_depth","index": 264536,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d07_noise_mix","varname": "fHslider305","shortname": "MM_Matrix_s16_d07_noise_mix","address": "/modular-additive/MM_Matrix_s16_d07_noise_mix","index": 263684,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d08_amp","varname": "fHslider257","shortname": "MM_Matrix_s16_d08_amp","address": "/modular-additive/MM_Matrix_s16_d08_amp","index": 263492,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d09_pan","varname": "fHslider126","shortname": "MM_Matrix_s16_d09_pan","address": "/modular-additive/MM_Matrix_s16_d09_pan","index": 262924,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d00_pitch","varname": "fHslider354","shortname": "MM_Matrix_s17_d00_pitch","address": "/modular-additive/MM_Matrix_s17_d00_pitch","index": 263908,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d01_bright","varname": "fHslider553","shortname": "MM_Matrix_s17_d01_bright","address": "/modular-additive/MM_Matrix_s17_d01_bright","index": 264728,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d02_tilt","varname": "fHslider601","shortname": "MM_Matrix_s17_d02_tilt","address": "/modular-additive/MM_Matrix_s17_d02_tilt","index": 264920,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d03_inharmonicity","varname": "fHslider405","shortname": "MM_Matrix_s17_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s17_d03_inharmonicity","index": 264124,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d04_odd_even","varname": "fHslider650","shortname": "MM_Matrix_s17_d04_odd_even","address": "/modular-additive/MM_Matrix_s17_d04_odd_even","index": 265116,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d05_formant_ctr","varname": "fHslider454","shortname": "MM_Matrix_s17_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s17_d05_formant_ctr","index": 264332,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d06_formant_depth","varname": "fHslider504","shortname": "MM_Matrix_s17_d06_formant_depth","address": "/modular-additive/MM_Matrix_s17_d06_formant_depth","index": 264532,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d07_noise_mix","varname": "fHslider304","shortname": "MM_Matrix_s17_d07_noise_mix","address": "/modular-additive/MM_Matrix_s17_d07_noise_mix","index": 263680,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d08_amp","varname": "fHslider256","shortname": "MM_Matrix_s17_d08_amp","address": "/modular-additive/MM_Matrix_s17_d08_amp","index": 263488,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d09_pan","varname": "fHslider122","shortname": "MM_Matrix_s17_d09_pan","address": "/modular-additive/MM_Matrix_s17_d09_pan","index": 262900,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d00_pitch","varname": "fHslider353","shortname": "MM_Matrix_s18_d00_pitch","address": "/modular-additive/MM_Matrix_s18_d00_pitch","index": 263904,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d01_bright","varname": "fHslider552","shortname": "MM_Matrix_s18_d01_bright","address": "/modular-additive/MM_Matrix_s18_d01_bright","index": 264724,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d02_tilt","varname": "fHslider600","shortname": "MM_Matrix_s18_d02_tilt","address": "/modular-additive/MM_Matrix_s18_d02_tilt","index": 264916,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d03_inharmonicity","varname": "fHslider404","shortname": "MM_Matrix_s18_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s18_d03_inharmonicity","index": 264120,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d04_odd_even","varname": "fHslider649","shortname": "MM_Matrix_s18_d04_odd_even","address": "/modular-additive/MM_Matrix_s18_d04_odd_even","index": 265112,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d05_formant_ctr","varname": "fHslider453","shortname": "MM_Matrix_s18_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s18_d05_formant_ctr","index": 264328,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d06_formant_depth","varname": "fHslider503","shortname": "MM_Matrix_s18_d06_formant_depth","address": "/modular-additive/MM_Matrix_s18_d06_formant_depth","index": 264528,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d07_noise_mix","varname": "fHslider303","shortname": "MM_Matrix_s18_d07_noise_mix","address": "/modular-additive/MM_Matrix_s18_d07_noise_mix","index": 263676,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d08_amp","varname": "fHslider255","shortname": "MM_Matrix_s18_d08_amp","address": "/modular-additive/MM_Matrix_s18_d08_amp","index": 263484,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d09_pan","varname": "fHslider118","shortname": "MM_Matrix_s18_d09_pan","address": "/modular-additive/MM_Matrix_s18_d09_pan","index": 262876,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d00_pitch","varname": "fHslider352","shortname": "MM_Matrix_s19_d00_pitch","address": "/modular-additive/MM_Matrix_s19_d00_pitch","index": 263900,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d01_bright","varname": "fHslider551","shortname": "MM_Matrix_s19_d01_bright","address": "/modular-additive/MM_Matrix_s19_d01_bright","index": 264720,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d02_tilt","varname": "fHslider599","shortname": "MM_Matrix_s19_d02_tilt","address": "/modular-additive/MM_Matrix_s19_d02_tilt","index": 264912,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d03_inharmonicity","varname": "fHslider403","shortname": "MM_Matrix_s19_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s19_d03_inharmonicity","index": 264116,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d04_odd_even","varname": "fHslider648","shortname": "MM_Matrix_s19_d04_odd_even","address": "/modular-additive/MM_Matrix_s19_d04_odd_even","index": 265108,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d05_formant_ctr","varname": "fHslider452","shortname": "MM_Matrix_s19_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s19_d05_formant_ctr","index": 264324,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d06_formant_depth","varname": "fHslider502","shortname": "MM_Matrix_s19_d06_formant_depth","address": "/modular-additive/MM_Matrix_s19_d06_formant_depth","index": 264524,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d07_noise_mix","varname": "fHslider302","shortname": "MM_Matrix_s19_d07_noise_mix","address": "/modular-additive/MM_Matrix_s19_d07_noise_mix","index": 263672,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d08_amp","varname": "fHslider254","shortname": "MM_Matrix_s19_d08_amp","address": "/modular-additive/MM_Matrix_s19_d08_amp","index": 263480,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d09_pan","varname": "fHslider114","shortname": "MM_Matrix_s19_d09_pan","address": "/modular-additive/MM_Matrix_s19_d09_pan","index": 262852,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d00_pitch","varname": "fHslider351","shortname": "MM_Matrix_s20_d00_pitch","address": "/modular-additive/MM_Matrix_s20_d00_pitch","index": 263896,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d01_bright","varname": "fHslider550","shortname": "MM_Matrix_s20_d01_bright","address": "/modular-additive/MM_Matrix_s20_d01_bright","index": 264716,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d02_tilt","varname": "fHslider598","shortname": "MM_Matrix_s20_d02_tilt","address": "/modular-additive/MM_Matrix_s20_d02_tilt","index": 264908,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d03_inharmonicity","varname": "fHslider402","shortname": "MM_Matrix_s20_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s20_d03_inharmonicity","index": 264112,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d04_odd_even","varname": "fHslider647","shortname": "MM_Matrix_s20_d04_odd_even","address": "/modular-additive/MM_Matrix_s20_d04_odd_even","index": 265104,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d05_formant_ctr","varname": "fHslider451","shortname": "MM_Matrix_s20_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s20_d05_formant_ctr","index": 264320,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d06_formant_depth","varname": "fHslider501","shortname": "MM_Matrix_s20_d06_formant_depth","address": "/modular-additive/MM_Matrix_s20_d06_formant_depth","index": 264520,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d07_noise_mix","varname": "fHslider301","shortname": "MM_Matrix_s20_d07_noise_mix","address": "/modular-additive/MM_Matrix_s20_d07_noise_mix","index": 263668,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d08_amp","varname": "fHslider253","shortname": "MM_Matrix_s20_d08_amp","address": "/modular-additive/MM_Matrix_s20_d08_amp","index": 263476,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d09_pan","varname": "fHslider110","shortname": "MM_Matrix_s20_d09_pan","address": "/modular-additive/MM_Matrix_s20_d09_pan","index": 262828,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d00_pitch","varname": "fHslider350","shortname": "MM_Matrix_s21_d00_pitch","address": "/modular-additive/MM_Matrix_s21_d00_pitch","index": 263892,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d01_bright","varname": "fHslider549","shortname": "MM_Matrix_s21_d01_bright","address": "/modular-additive/MM_Matrix_s21_d01_bright","index": 264712,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d02_tilt","varname": "fHslider597","shortname": "MM_Matrix_s21_d02_tilt","address": "/modular-additive/MM_Matrix_s21_d02_tilt","index": 264904,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d03_inharmonicity","varname": "fHslider401","shortname": "MM_Matrix_s21_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s21_d03_inharmonicity","index": 264108,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d04_odd_even","varname": "fHslider646","shortname": "MM_Matrix_s21_d04_odd_even","address": "/modular-additive/MM_Matrix_s21_d04_odd_even","index": 265100,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d05_formant_ctr","varname": "fHslider450","shortname": "MM_Matrix_s21_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s21_d05_formant_ctr","index": 264316,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d06_formant_depth","varname": "fHslider500","shortname": "MM_Matrix_s21_d06_formant_depth","address": "/modular-additive/MM_Matrix_s21_d06_formant_depth","index": 264516,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d07_noise_mix","varname": "fHslider300","shortname": "MM_Matrix_s21_d07_noise_mix","address": "/modular-additive/MM_Matrix_s21_d07_noise_mix","index": 263664,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d08_amp","varname": "fHslider252","shortname": "MM_Matrix_s21_d08_amp","address": "/modular-additive/MM_Matrix_s21_d08_amp","index": 263472,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d09_pan","varname": "fHslider106","shortname": "MM_Matrix_s21_d09_pan","address": "/modular-additive/MM_Matrix_s21_d09_pan","index": 262804,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d00_pitch","varname": "fHslider349","shortname": "MM_Matrix_s22_d00_pitch","address": "/modular-additive/MM_Matrix_s22_d00_pitch","index": 263888,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d01_bright","varname": "fHslider548","shortname": "MM_Matrix_s22_d01_bright","address": "/modular-additive/MM_Matrix_s22_d01_bright","index": 264708,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d02_tilt","varname": "fHslider596","shortname": "MM_Matrix_s22_d02_tilt","address": "/modular-additive/MM_Matrix_s22_d02_tilt","index": 264900,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d03_inharmonicity","varname": "fHslider400","shortname": "MM_Matrix_s22_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s22_d03_inharmonicity","index": 264104,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d04_odd_even","varname": "fHslider645","shortname": "MM_Matrix_s22_d04_odd_even","address": "/modular-additive/MM_Matrix_s22_d04_odd_even","index": 265096,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d05_formant_ctr","varname": "fHslider449","shortname": "MM_Matrix_s22_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s22_d05_formant_ctr","index": 264312,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d06_formant_depth","varname": "fHslider499","shortname": "MM_Matrix_s22_d06_formant_depth","address": "/modular-additive/MM_Matrix_s22_d06_formant_depth","index": 264512,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d07_noise_mix","varname": "fHslider299","shortname": "MM_Matrix_s22_d07_noise_mix","address": "/modular-additive/MM_Matrix_s22_d07_noise_mix","index": 263660,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d08_amp","varname": "fHslider251","shortname": "MM_Matrix_s22_d08_amp","address": "/modular-additive/MM_Matrix_s22_d08_amp","index": 263468,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d09_pan","varname": "fHslider102","shortname": "MM_Matrix_s22_d09_pan","address": "/modular-additive/MM_Matrix_s22_d09_pan","index": 262780,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d00_pitch","varname": "fHslider348","shortname": "MM_Matrix_s23_d00_pitch","address": "/modular-additive/MM_Matrix_s23_d00_pitch","index": 263884,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d01_bright","varname": "fHslider547","shortname": "MM_Matrix_s23_d01_bright","address": "/modular-additive/MM_Matrix_s23_d01_bright","index": 264704,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d02_tilt","varname": "fHslider595","shortname": "MM_Matrix_s23_d02_tilt","address": "/modular-additive/MM_Matrix_s23_d02_tilt","index": 264896,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d03_inharmonicity","varname": "fHslider399","shortname": "MM_Matrix_s23_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s23_d03_inharmonicity","index": 264100,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d04_odd_even","varname": "fHslider644","shortname": "MM_Matrix_s23_d04_odd_even","address": "/modular-additive/MM_Matrix_s23_d04_odd_even","index": 265092,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d05_formant_ctr","varname": "fHslider448","shortname": "MM_Matrix_s23_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s23_d05_formant_ctr","index": 264308,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d06_formant_depth","varname": "fHslider498","shortname": "MM_Matrix_s23_d06_formant_depth","address": "/modular-additive/MM_Matrix_s23_d06_formant_depth","index": 264508,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d07_noise_mix","varname": "fHslider298","shortname": "MM_Matrix_s23_d07_noise_mix","address": "/modular-additive/MM_Matrix_s23_d07_noise_mix","index": 263656,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d08_amp","varname": "fHslider250","shortname": "MM_Matrix_s23_d08_amp","address": "/modular-additive/MM_Matrix_s23_d08_amp","index": 263464,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d09_pan","varname": "fHslider98","shortname": "MM_Matrix_s23_d09_pan","address": "/modular-additive/MM_Matrix_s23_d09_pan","index": 262756,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d00_pitch","varname": "fHslider347","shortname": "MM_Matrix_s24_d00_pitch","address": "/modular-additive/MM_Matrix_s24_d00_pitch","index": 263880,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d01_bright","varname": "fHslider546","shortname": "MM_Matrix_s24_d01_bright","address": "/modular-additive/MM_Matrix_s24_d01_bright","index": 264700,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d02_tilt","varname": "fHslider594","shortname": "MM_Matrix_s24_d02_tilt","address": "/modular-additive/MM_Matrix_s24_d02_tilt","index": 264892,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d03_inharmonicity","varname": "fHslider398","shortname": "MM_Matrix_s24_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s24_d03_inharmonicity","index": 264096,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d04_odd_even","varname": "fHslider643","shortname": "MM_Matrix_s24_d04_odd_even","address": "/modular-additive/MM_Matrix_s24_d04_odd_even","index": 265088,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d05_formant_ctr","varname": "fHslider447","shortname": "MM_Matrix_s24_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s24_d05_formant_ctr","index": 264304,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d06_formant_depth","varname": "fHslider497","shortname": "MM_Matrix_s24_d06_formant_depth","address": "/modular-additive/MM_Matrix_s24_d06_formant_depth","index": 264504,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d07_noise_mix","varname": "fHslider297","shortname": "MM_Matrix_s24_d07_noise_mix","address": "/modular-additive/MM_Matrix_s24_d07_noise_mix","index": 263652,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d08_amp","varname": "fHslider249","shortname": "MM_Matrix_s24_d08_amp","address": "/modular-additive/MM_Matrix_s24_d08_amp","index": 263460,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d09_pan","varname": "fHslider94","shortname": "MM_Matrix_s24_d09_pan","address": "/modular-additive/MM_Matrix_s24_d09_pan","index": 262732,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d00_pitch","varname": "fHslider346","shortname": "MM_Matrix_s25_d00_pitch","address": "/modular-additive/MM_Matrix_s25_d00_pitch","index": 263876,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d01_bright","varname": "fHslider545","shortname": "MM_Matrix_s25_d01_bright","address": "/modular-additive/MM_Matrix_s25_d01_bright","index": 264696,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d02_tilt","varname": "fHslider593","shortname": "MM_Matrix_s25_d02_tilt","address": "/modular-additive/MM_Matrix_s25_d02_tilt","index": 264888,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d03_inharmonicity","varname": "fHslider397","shortname": "MM_Matrix_s25_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s25_d03_inharmonicity","index": 264092,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d04_odd_even","varname": "fHslider642","shortname": "MM_Matrix_s25_d04_odd_even","address": "/modular-additive/MM_Matrix_s25_d04_odd_even","index": 265084,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d05_formant_ctr","varname": "fHslider446","shortname": "MM_Matrix_s25_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s25_d05_formant_ctr","index": 264300,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d06_formant_depth","varname": "fHslider496","shortname": "MM_Matrix_s25_d06_formant_depth","address": "/modular-additive/MM_Matrix_s25_d06_formant_depth","index": 264500,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d07_noise_mix","varname": "fHslider296","shortname": "MM_Matrix_s25_d07_noise_mix","address": "/modular-additive/MM_Matrix_s25_d07_noise_mix","index": 263648,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d08_amp","varname": "fHslider248","shortname": "MM_Matrix_s25_d08_amp","address": "/modular-additive/MM_Matrix_s25_d08_amp","index": 263456,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d09_pan","varname": "fHslider90","shortname": "MM_Matrix_s25_d09_pan","address": "/modular-additive/MM_Matrix_s25_d09_pan","index": 262708,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d00_pitch","varname": "fHslider345","shortname": "MM_Matrix_s26_d00_pitch","address": "/modular-additive/MM_Matrix_s26_d00_pitch","index": 263872,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d01_bright","varname": "fHslider544","shortname": "MM_Matrix_s26_d01_bright","address": "/modular-additive/MM_Matrix_s26_d01_bright","index": 264692,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d02_tilt","varname": "fHslider592","shortname": "MM_Matrix_s26_d02_tilt","address": "/modular-additive/MM_Matrix_s26_d02_tilt","index": 264884,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d03_inharmonicity","varname": "fHslider396","shortname": "MM_Matrix_s26_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s26_d03_inharmonicity","index": 264088,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d04_odd_even","varname": "fHslider641","shortname": "MM_Matrix_s26_d04_odd_even","address": "/modular-additive/MM_Matrix_s26_d04_odd_even","index": 265080,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d05_formant_ctr","varname": "fHslider445","shortname": "MM_Matrix_s26_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s26_d05_formant_ctr","index": 264296,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d06_formant_depth","varname": "fHslider495","shortname": "MM_Matrix_s26_d06_formant_depth","address": "/modular-additive/MM_Matrix_s26_d06_formant_depth","index": 264496,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d07_noise_mix","varname": "fHslider295","shortname": "MM_Matrix_s26_d07_noise_mix","address": "/modular-additive/MM_Matrix_s26_d07_noise_mix","index": 263644,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d08_amp","varname": "fHslider247","shortname": "MM_Matrix_s26_d08_amp","address": "/modular-additive/MM_Matrix_s26_d08_amp","index": 263452,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d09_pan","varname": "fHslider86","shortname": "MM_Matrix_s26_d09_pan","address": "/modular-additive/MM_Matrix_s26_d09_pan","index": 262684,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d00_pitch","varname": "fHslider344","shortname": "MM_Matrix_s27_d00_pitch","address": "/modular-additive/MM_Matrix_s27_d00_pitch","index": 263868,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d01_bright","varname": "fHslider543","shortname": "MM_Matrix_s27_d01_bright","address": "/modular-additive/MM_Matrix_s27_d01_bright","index": 264688,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d02_tilt","varname": "fHslider591","shortname": "MM_Matrix_s27_d02_tilt","address": "/modular-additive/MM_Matrix_s27_d02_tilt","index": 264880,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d03_inharmonicity","varname": "fHslider395","shortname": "MM_Matrix_s27_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s27_d03_inharmonicity","index": 264084,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d04_odd_even","varname": "fHslider640","shortname": "MM_Matrix_s27_d04_odd_even","address": "/modular-additive/MM_Matrix_s27_d04_odd_even","index": 265076,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d05_formant_ctr","varname": "fHslider444","shortname": "MM_Matrix_s27_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s27_d05_formant_ctr","index": 264292,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d06_formant_depth","varname": "fHslider494","shortname": "MM_Matrix_s27_d06_formant_depth","address": "/modular-additive/MM_Matrix_s27_d06_formant_depth","index": 264492,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d07_noise_mix","varname": "fHslider294","shortname": "MM_Matrix_s27_d07_noise_mix","address": "/modular-additive/MM_Matrix_s27_d07_noise_mix","index": 263640,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d08_amp","varname": "fHslider246","shortname": "MM_Matrix_s27_d08_amp","address": "/modular-additive/MM_Matrix_s27_d08_amp","index": 263448,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d09_pan","varname": "fHslider82","shortname": "MM_Matrix_s27_d09_pan","address": "/modular-additive/MM_Matrix_s27_d09_pan","index": 262660,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d00_pitch","varname": "fHslider343","shortname": "MM_Matrix_s28_d00_pitch","address": "/modular-additive/MM_Matrix_s28_d00_pitch","index": 263864,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d01_bright","varname": "fHslider542","shortname": "MM_Matrix_s28_d01_bright","address": "/modular-additive/MM_Matrix_s28_d01_bright","index": 264684,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d02_tilt","varname": "fHslider590","shortname": "MM_Matrix_s28_d02_tilt","address": "/modular-additive/MM_Matrix_s28_d02_tilt","index": 264876,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d03_inharmonicity","varname": "fHslider394","shortname": "MM_Matrix_s28_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s28_d03_inharmonicity","index": 264080,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d04_odd_even","varname": "fHslider639","shortname": "MM_Matrix_s28_d04_odd_even","address": "/modular-additive/MM_Matrix_s28_d04_odd_even","index": 265072,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d05_formant_ctr","varname": "fHslider443","shortname": "MM_Matrix_s28_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s28_d05_formant_ctr","index": 264288,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d06_formant_depth","varname": "fHslider493","shortname": "MM_Matrix_s28_d06_formant_depth","address": "/modular-additive/MM_Matrix_s28_d06_formant_depth","index": 264488,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d07_noise_mix","varname": "fHslider293","shortname": "MM_Matrix_s28_d07_noise_mix","address": "/modular-additive/MM_Matrix_s28_d07_noise_mix","index": 263636,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d08_amp","varname": "fHslider245","shortname": "MM_Matrix_s28_d08_amp","address": "/modular-additive/MM_Matrix_s28_d08_amp","index": 263444,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d09_pan","varname": "fHslider78","shortname": "MM_Matrix_s28_d09_pan","address": "/modular-additive/MM_Matrix_s28_d09_pan","index": 262636,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d00_pitch","varname": "fHslider342","shortname": "MM_Matrix_s29_d00_pitch","address": "/modular-additive/MM_Matrix_s29_d00_pitch","index": 263860,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d01_bright","varname": "fHslider541","shortname": "MM_Matrix_s29_d01_bright","address": "/modular-additive/MM_Matrix_s29_d01_bright","index": 264680,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d02_tilt","varname": "fHslider589","shortname": "MM_Matrix_s29_d02_tilt","address": "/modular-additive/MM_Matrix_s29_d02_tilt","index": 264872,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d03_inharmonicity","varname": "fHslider393","shortname": "MM_Matrix_s29_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s29_d03_inharmonicity","index": 264076,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d04_odd_even","varname": "fHslider638","shortname": "MM_Matrix_s29_d04_odd_even","address": "/modular-additive/MM_Matrix_s29_d04_odd_even","index": 265068,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d05_formant_ctr","varname": "fHslider442","shortname": "MM_Matrix_s29_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s29_d05_formant_ctr","index": 264284,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d06_formant_depth","varname": "fHslider492","shortname": "MM_Matrix_s29_d06_formant_depth","address": "/modular-additive/MM_Matrix_s29_d06_formant_depth","index": 264484,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d07_noise_mix","varname": "fHslider292","shortname": "MM_Matrix_s29_d07_noise_mix","address": "/modular-additive/MM_Matrix_s29_d07_noise_mix","index": 263632,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d08_amp","varname": "fHslider244","shortname": "MM_Matrix_s29_d08_amp","address": "/modular-additive/MM_Matrix_s29_d08_amp","index": 263440,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d09_pan","varname": "fHslider74","shortname": "MM_Matrix_s29_d09_pan","address": "/modular-additive/MM_Matrix_s29_d09_pan","index": 262612,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d00_pitch","varname": "fHslider341","shortname": "MM_Matrix_s30_d00_pitch","address": "/modular-additive/MM_Matrix_s30_d00_pitch","index": 263856,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d01_bright","varname": "fHslider540","shortname": "MM_Matrix_s30_d01_bright","address": "/modular-additive/MM_Matrix_s30_d01_bright","index": 264676,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d02_tilt","varname": "fHslider588","shortname": "MM_Matrix_s30_d02_tilt","address": "/modular-additive/MM_Matrix_s30_d02_tilt","index": 264868,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d03_inharmonicity","varname": "fHslider392","shortname": "MM_Matrix_s30_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s30_d03_inharmonicity","index": 264072,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d04_odd_even","varname": "fHslider637","shortname": "MM_Matrix_s30_d04_odd_even","address": "/modular-additive/MM_Matrix_s30_d04_odd_even","index": 265064,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d05_formant_ctr","varname": "fHslider441","shortname": "MM_Matrix_s30_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s30_d05_formant_ctr","index": 264280,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d06_formant_depth","varname": "fHslider491","shortname": "MM_Matrix_s30_d06_formant_depth","address": "/modular-additive/MM_Matrix_s30_d06_formant_depth","index": 264480,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d07_noise_mix","varname": "fHslider291","shortname": "MM_Matrix_s30_d07_noise_mix","address": "/modular-additive/MM_Matrix_s30_d07_noise_mix","index": 263628,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d08_amp","varname": "fHslider243","shortname": "MM_Matrix_s30_d08_amp","address": "/modular-additive/MM_Matrix_s30_d08_amp","index": 263436,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d09_pan","varname": "fHslider70","shortname": "MM_Matrix_s30_d09_pan","address": "/modular-additive/MM_Matrix_s30_d09_pan","index": 262588,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d00_pitch","varname": "fHslider340","shortname": "MM_Matrix_s31_d00_pitch","address": "/modular-additive/MM_Matrix_s31_d00_pitch","index": 263852,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d01_bright","varname": "fHslider539","shortname": "MM_Matrix_s31_d01_bright","address": "/modular-additive/MM_Matrix_s31_d01_bright","index": 264672,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d02_tilt","varname": "fHslider587","shortname": "MM_Matrix_s31_d02_tilt","address": "/modular-additive/MM_Matrix_s31_d02_tilt","index": 264864,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d03_inharmonicity","varname": "fHslider391","shortname": "MM_Matrix_s31_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s31_d03_inharmonicity","index": 264068,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d04_odd_even","varname": "fHslider636","shortname": "MM_Matrix_s31_d04_odd_even","address": "/modular-additive/MM_Matrix_s31_d04_odd_even","index": 265060,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d05_formant_ctr","varname": "fHslider440","shortname": "MM_Matrix_s31_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s31_d05_formant_ctr","index": 264276,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d06_formant_depth","varname": "fHslider490","shortname": "MM_Matrix_s31_d06_formant_depth","address": "/modular-additive/MM_Matrix_s31_d06_formant_depth","index": 264476,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d07_noise_mix","varname": "fHslider290","shortname": "MM_Matrix_s31_d07_noise_mix","address": "/modular-additive/MM_Matrix_s31_d07_noise_mix","index": 263624,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d08_amp","varname": "fHslider242","shortname": "MM_Matrix_s31_d08_amp","address": "/modular-additive/MM_Matrix_s31_d08_amp","index": 263432,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d09_pan","varname": "fHslider66","shortname": "MM_Matrix_s31_d09_pan","address": "/modular-additive/MM_Matrix_s31_d09_pan","index": 262564,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d00_pitch","varname": "fHslider339","shortname": "MM_Matrix_s32_d00_pitch","address": "/modular-additive/MM_Matrix_s32_d00_pitch","index": 263848,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d01_bright","varname": "fHslider538","shortname": "MM_Matrix_s32_d01_bright","address": "/modular-additive/MM_Matrix_s32_d01_bright","index": 264668,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d02_tilt","varname": "fHslider586","shortname": "MM_Matrix_s32_d02_tilt","address": "/modular-additive/MM_Matrix_s32_d02_tilt","index": 264860,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d03_inharmonicity","varname": "fHslider390","shortname": "MM_Matrix_s32_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s32_d03_inharmonicity","index": 264064,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d04_odd_even","varname": "fHslider635","shortname": "MM_Matrix_s32_d04_odd_even","address": "/modular-additive/MM_Matrix_s32_d04_odd_even","index": 265056,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d05_formant_ctr","varname": "fHslider439","shortname": "MM_Matrix_s32_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s32_d05_formant_ctr","index": 264272,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d06_formant_depth","varname": "fHslider489","shortname": "MM_Matrix_s32_d06_formant_depth","address": "/modular-additive/MM_Matrix_s32_d06_formant_depth","index": 264472,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d07_noise_mix","varname": "fHslider289","shortname": "MM_Matrix_s32_d07_noise_mix","address": "/modular-additive/MM_Matrix_s32_d07_noise_mix","index": 263620,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d08_amp","varname": "fHslider241","shortname": "MM_Matrix_s32_d08_amp","address": "/modular-additive/MM_Matrix_s32_d08_amp","index": 263428,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d09_pan","varname": "fHslider62","shortname": "MM_Matrix_s32_d09_pan","address": "/modular-additive/MM_Matrix_s32_d09_pan","index": 262540,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d00_pitch","varname": "fHslider338","shortname": "MM_Matrix_s33_d00_pitch","address": "/modular-additive/MM_Matrix_s33_d00_pitch","index": 263844,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d01_bright","varname": "fHslider537","shortname": "MM_Matrix_s33_d01_bright","address": "/modular-additive/MM_Matrix_s33_d01_bright","index": 264664,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d02_tilt","varname": "fHslider585","shortname": "MM_Matrix_s33_d02_tilt","address": "/modular-additive/MM_Matrix_s33_d02_tilt","index": 264856,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d03_inharmonicity","varname": "fHslider389","shortname": "MM_Matrix_s33_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s33_d03_inharmonicity","index": 264060,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d04_odd_even","varname": "fHslider634","shortname": "MM_Matrix_s33_d04_odd_even","address": "/modular-additive/MM_Matrix_s33_d04_odd_even","index": 265052,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d05_formant_ctr","varname": "fHslider438","shortname": "MM_Matrix_s33_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s33_d05_formant_ctr","index": 264268,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d06_formant_depth","varname": "fHslider488","shortname": "MM_Matrix_s33_d06_formant_depth","address": "/modular-additive/MM_Matrix_s33_d06_formant_depth","index": 264468,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d07_noise_mix","varname": "fHslider288","shortname": "MM_Matrix_s33_d07_noise_mix","address": "/modular-additive/MM_Matrix_s33_d07_noise_mix","index": 263616,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d08_amp","varname": "fHslider240","shortname": "MM_Matrix_s33_d08_amp","address": "/modular-additive/MM_Matrix_s33_d08_amp","index": 263424,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d09_pan","varname": "fHslider58","shortname": "MM_Matrix_s33_d09_pan","address": "/modular-additive/MM_Matrix_s33_d09_pan","index": 262516,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d00_pitch","varname": "fHslider337","shortname": "MM_Matrix_s34_d00_pitch","address": "/modular-additive/MM_Matrix_s34_d00_pitch","index": 263840,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d01_bright","varname": "fHslider536","shortname": "MM_Matrix_s34_d01_bright","address": "/modular-additive/MM_Matrix_s34_d01_bright","index": 264660,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d02_tilt","varname": "fHslider584","shortname": "MM_Matrix_s34_d02_tilt","address": "/modular-additive/MM_Matrix_s34_d02_tilt","index": 264852,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d03_inharmonicity","varname": "fHslider388","shortname": "MM_Matrix_s34_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s34_d03_inharmonicity","index": 264056,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d04_odd_even","varname": "fHslider633","shortname": "MM_Matrix_s34_d04_odd_even","address": "/modular-additive/MM_Matrix_s34_d04_odd_even","index": 265048,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d05_formant_ctr","varname": "fHslider437","shortname": "MM_Matrix_s34_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s34_d05_formant_ctr","index": 264264,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d06_formant_depth","varname": "fHslider487","shortname": "MM_Matrix_s34_d06_formant_depth","address": "/modular-additive/MM_Matrix_s34_d06_formant_depth","index": 264464,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d07_noise_mix","varname": "fHslider287","shortname": "MM_Matrix_s34_d07_noise_mix","address": "/modular-additive/MM_Matrix_s34_d07_noise_mix","index": 263612,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d08_amp","varname": "fHslider239","shortname": "MM_Matrix_s34_d08_amp","address": "/modular-additive/MM_Matrix_s34_d08_amp","index": 263420,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d09_pan","varname": "fHslider54","shortname": "MM_Matrix_s34_d09_pan","address": "/modular-additive/MM_Matrix_s34_d09_pan","index": 262492,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d00_pitch","varname": "fHslider336","shortname": "MM_Matrix_s35_d00_pitch","address": "/modular-additive/MM_Matrix_s35_d00_pitch","index": 263836,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d01_bright","varname": "fHslider535","shortname": "MM_Matrix_s35_d01_bright","address": "/modular-additive/MM_Matrix_s35_d01_bright","index": 264656,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d02_tilt","varname": "fHslider583","shortname": "MM_Matrix_s35_d02_tilt","address": "/modular-additive/MM_Matrix_s35_d02_tilt","index": 264848,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d03_inharmonicity","varname": "fHslider387","shortname": "MM_Matrix_s35_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s35_d03_inharmonicity","index": 264052,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d04_odd_even","varname": "fHslider632","shortname": "MM_Matrix_s35_d04_odd_even","address": "/modular-additive/MM_Matrix_s35_d04_odd_even","index": 265044,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d05_formant_ctr","varname": "fHslider436","shortname": "MM_Matrix_s35_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s35_d05_formant_ctr","index": 264260,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d06_formant_depth","varname": "fHslider486","shortname": "MM_Matrix_s35_d06_formant_depth","address": "/modular-additive/MM_Matrix_s35_d06_formant_depth","index": 264460,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d07_noise_mix","varname": "fHslider286","shortname": "MM_Matrix_s35_d07_noise_mix","address": "/modular-additive/MM_Matrix_s35_d07_noise_mix","index": 263608,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d08_amp","varname": "fHslider238","shortname": "MM_Matrix_s35_d08_amp","address": "/modular-additive/MM_Matrix_s35_d08_amp","index": 263416,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d09_pan","varname": "fHslider50","shortname": "MM_Matrix_s35_d09_pan","address": "/modular-additive/MM_Matrix_s35_d09_pan","index": 262468,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d00_pitch","varname": "fHslider335","shortname": "MM_Matrix_s36_d00_pitch","address": "/modular-additive/MM_Matrix_s36_d00_pitch","index": 263832,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d01_bright","varname": "fHslider534","shortname": "MM_Matrix_s36_d01_bright","address": "/modular-additive/MM_Matrix_s36_d01_bright","index": 264652,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d02_tilt","varname": "fHslider582","shortname": "MM_Matrix_s36_d02_tilt","address": "/modular-additive/MM_Matrix_s36_d02_tilt","index": 264844,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d03_inharmonicity","varname": "fHslider386","shortname": "MM_Matrix_s36_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s36_d03_inharmonicity","index": 264048,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d04_odd_even","varname": "fHslider631","shortname": "MM_Matrix_s36_d04_odd_even","address": "/modular-additive/MM_Matrix_s36_d04_odd_even","index": 265040,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d05_formant_ctr","varname": "fHslider435","shortname": "MM_Matrix_s36_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s36_d05_formant_ctr","index": 264256,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d06_formant_depth","varname": "fHslider485","shortname": "MM_Matrix_s36_d06_formant_depth","address": "/modular-additive/MM_Matrix_s36_d06_formant_depth","index": 264456,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d07_noise_mix","varname": "fHslider285","shortname": "MM_Matrix_s36_d07_noise_mix","address": "/modular-additive/MM_Matrix_s36_d07_noise_mix","index": 263604,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d08_amp","varname": "fHslider237","shortname": "MM_Matrix_s36_d08_amp","address": "/modular-additive/MM_Matrix_s36_d08_amp","index": 263412,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d09_pan","varname": "fHslider46","shortname": "MM_Matrix_s36_d09_pan","address": "/modular-additive/MM_Matrix_s36_d09_pan","index": 262444,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d00_pitch","varname": "fHslider334","shortname": "MM_Matrix_s37_d00_pitch","address": "/modular-additive/MM_Matrix_s37_d00_pitch","index": 263828,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d01_bright","varname": "fHslider533","shortname": "MM_Matrix_s37_d01_bright","address": "/modular-additive/MM_Matrix_s37_d01_bright","index": 264648,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d02_tilt","varname": "fHslider581","shortname": "MM_Matrix_s37_d02_tilt","address": "/modular-additive/MM_Matrix_s37_d02_tilt","index": 264840,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d03_inharmonicity","varname": "fHslider385","shortname": "MM_Matrix_s37_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s37_d03_inharmonicity","index": 264044,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d04_odd_even","varname": "fHslider630","shortname": "MM_Matrix_s37_d04_odd_even","address": "/modular-additive/MM_Matrix_s37_d04_odd_even","index": 265036,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d05_formant_ctr","varname": "fHslider434","shortname": "MM_Matrix_s37_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s37_d05_formant_ctr","index": 264252,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d06_formant_depth","varname": "fHslider484","shortname": "MM_Matrix_s37_d06_formant_depth","address": "/modular-additive/MM_Matrix_s37_d06_formant_depth","index": 264452,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d07_noise_mix","varname": "fHslider284","shortname": "MM_Matrix_s37_d07_noise_mix","address": "/modular-additive/MM_Matrix_s37_d07_noise_mix","index": 263600,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d08_amp","varname": "fHslider236","shortname": "MM_Matrix_s37_d08_amp","address": "/modular-additive/MM_Matrix_s37_d08_amp","index": 263408,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d09_pan","varname": "fHslider42","shortname": "MM_Matrix_s37_d09_pan","address": "/modular-additive/MM_Matrix_s37_d09_pan","index": 262420,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d00_pitch","varname": "fHslider333","shortname": "MM_Matrix_s38_d00_pitch","address": "/modular-additive/MM_Matrix_s38_d00_pitch","index": 263824,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d01_bright","varname": "fHslider532","shortname": "MM_Matrix_s38_d01_bright","address": "/modular-additive/MM_Matrix_s38_d01_bright","index": 264644,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d02_tilt","varname": "fHslider580","shortname": "MM_Matrix_s38_d02_tilt","address": "/modular-additive/MM_Matrix_s38_d02_tilt","index": 264836,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d03_inharmonicity","varname": "fHslider384","shortname": "MM_Matrix_s38_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s38_d03_inharmonicity","index": 264040,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d04_odd_even","varname": "fHslider629","shortname": "MM_Matrix_s38_d04_odd_even","address": "/modular-additive/MM_Matrix_s38_d04_odd_even","index": 265032,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d05_formant_ctr","varname": "fHslider433","shortname": "MM_Matrix_s38_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s38_d05_formant_ctr","index": 264248,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d06_formant_depth","varname": "fHslider483","shortname": "MM_Matrix_s38_d06_formant_depth","address": "/modular-additive/MM_Matrix_s38_d06_formant_depth","index": 264448,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d07_noise_mix","varname": "fHslider283","shortname": "MM_Matrix_s38_d07_noise_mix","address": "/modular-additive/MM_Matrix_s38_d07_noise_mix","index": 263596,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d08_amp","varname": "fHslider235","shortname": "MM_Matrix_s38_d08_amp","address": "/modular-additive/MM_Matrix_s38_d08_amp","index": 263404,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d09_pan","varname": "fHslider38","shortname": "MM_Matrix_s38_d09_pan","address": "/modular-additive/MM_Matrix_s38_d09_pan","index": 262396,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d00_pitch","varname": "fHslider332","shortname": "MM_Matrix_s39_d00_pitch","address": "/modular-additive/MM_Matrix_s39_d00_pitch","index": 263820,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d01_bright","varname": "fHslider531","shortname": "MM_Matrix_s39_d01_bright","address": "/modular-additive/MM_Matrix_s39_d01_bright","index": 264640,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d02_tilt","varname": "fHslider579","shortname": "MM_Matrix_s39_d02_tilt","address": "/modular-additive/MM_Matrix_s39_d02_tilt","index": 264832,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d03_inharmonicity","varname": "fHslider383","shortname": "MM_Matrix_s39_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s39_d03_inharmonicity","index": 264036,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d04_odd_even","varname": "fHslider628","shortname": "MM_Matrix_s39_d04_odd_even","address": "/modular-additive/MM_Matrix_s39_d04_odd_even","index": 265028,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d05_formant_ctr","varname": "fHslider432","shortname": "MM_Matrix_s39_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s39_d05_formant_ctr","index": 264244,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d06_formant_depth","varname": "fHslider482","shortname": "MM_Matrix_s39_d06_formant_depth","address": "/modular-additive/MM_Matrix_s39_d06_formant_depth","index": 264444,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d07_noise_mix","varname": "fHslider282","shortname": "MM_Matrix_s39_d07_noise_mix","address": "/modular-additive/MM_Matrix_s39_d07_noise_mix","index": 263592,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d08_amp","varname": "fHslider234","shortname": "MM_Matrix_s39_d08_amp","address": "/modular-additive/MM_Matrix_s39_d08_amp","index": 263400,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d09_pan","varname": "fHslider34","shortname": "MM_Matrix_s39_d09_pan","address": "/modular-additive/MM_Matrix_s39_d09_pan","index": 262372,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d00_pitch","varname": "fHslider331","shortname": "MM_Matrix_s40_d00_pitch","address": "/modular-additive/MM_Matrix_s40_d00_pitch","index": 263816,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d01_bright","varname": "fHslider530","shortname": "MM_Matrix_s40_d01_bright","address": "/modular-additive/MM_Matrix_s40_d01_bright","index": 264636,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d02_tilt","varname": "fHslider578","shortname": "MM_Matrix_s40_d02_tilt","address": "/modular-additive/MM_Matrix_s40_d02_tilt","index": 264828,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d03_inharmonicity","varname": "fHslider382","shortname": "MM_Matrix_s40_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s40_d03_inharmonicity","index": 264032,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d04_odd_even","varname": "fHslider627","shortname": "MM_Matrix_s40_d04_odd_even","address": "/modular-additive/MM_Matrix_s40_d04_odd_even","index": 265024,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d05_formant_ctr","varname": "fHslider431","shortname": "MM_Matrix_s40_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s40_d05_formant_ctr","index": 264240,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d06_formant_depth","varname": "fHslider481","shortname": "MM_Matrix_s40_d06_formant_depth","address": "/modular-additive/MM_Matrix_s40_d06_formant_depth","index": 264440,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d07_noise_mix","varname": "fHslider281","shortname": "MM_Matrix_s40_d07_noise_mix","address": "/modular-additive/MM_Matrix_s40_d07_noise_mix","index": 263588,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d08_amp","varname": "fHslider233","shortname": "MM_Matrix_s40_d08_amp","address": "/modular-additive/MM_Matrix_s40_d08_amp","index": 263396,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d09_pan","varname": "fHslider30","shortname": "MM_Matrix_s40_d09_pan","address": "/modular-additive/MM_Matrix_s40_d09_pan","index": 262348,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d00_pitch","varname": "fHslider330","shortname": "MM_Matrix_s41_d00_pitch","address": "/modular-additive/MM_Matrix_s41_d00_pitch","index": 263812,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d01_bright","varname": "fHslider529","shortname": "MM_Matrix_s41_d01_bright","address": "/modular-additive/MM_Matrix_s41_d01_bright","index": 264632,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d02_tilt","varname": "fHslider577","shortname": "MM_Matrix_s41_d02_tilt","address": "/modular-additive/MM_Matrix_s41_d02_tilt","index": 264824,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d03_inharmonicity","varname": "fHslider381","shortname": "MM_Matrix_s41_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s41_d03_inharmonicity","index": 264028,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d04_odd_even","varname": "fHslider626","shortname": "MM_Matrix_s41_d04_odd_even","address": "/modular-additive/MM_Matrix_s41_d04_odd_even","index": 265020,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d05_formant_ctr","varname": "fHslider430","shortname": "MM_Matrix_s41_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s41_d05_formant_ctr","index": 264236,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d06_formant_depth","varname": "fHslider480","shortname": "MM_Matrix_s41_d06_formant_depth","address": "/modular-additive/MM_Matrix_s41_d06_formant_depth","index": 264436,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d07_noise_mix","varname": "fHslider280","shortname": "MM_Matrix_s41_d07_noise_mix","address": "/modular-additive/MM_Matrix_s41_d07_noise_mix","index": 263584,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d08_amp","varname": "fHslider232","shortname": "MM_Matrix_s41_d08_amp","address": "/modular-additive/MM_Matrix_s41_d08_amp","index": 263392,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d09_pan","varname": "fHslider26","shortname": "MM_Matrix_s41_d09_pan","address": "/modular-additive/MM_Matrix_s41_d09_pan","index": 262324,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d00_pitch","varname": "fHslider329","shortname": "MM_Matrix_s42_d00_pitch","address": "/modular-additive/MM_Matrix_s42_d00_pitch","index": 263808,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d01_bright","varname": "fHslider528","shortname": "MM_Matrix_s42_d01_bright","address": "/modular-additive/MM_Matrix_s42_d01_bright","index": 264628,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d02_tilt","varname": "fHslider576","shortname": "MM_Matrix_s42_d02_tilt","address": "/modular-additive/MM_Matrix_s42_d02_tilt","index": 264820,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d03_inharmonicity","varname": "fHslider380","shortname": "MM_Matrix_s42_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s42_d03_inharmonicity","index": 264024,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d04_odd_even","varname": "fHslider625","shortname": "MM_Matrix_s42_d04_odd_even","address": "/modular-additive/MM_Matrix_s42_d04_odd_even","index": 265016,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d05_formant_ctr","varname": "fHslider429","shortname": "MM_Matrix_s42_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s42_d05_formant_ctr","index": 264232,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d06_formant_depth","varname": "fHslider479","shortname": "MM_Matrix_s42_d06_formant_depth","address": "/modular-additive/MM_Matrix_s42_d06_formant_depth","index": 264432,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d07_noise_mix","varname": "fHslider279","shortname": "MM_Matrix_s42_d07_noise_mix","address": "/modular-additive/MM_Matrix_s42_d07_noise_mix","index": 263580,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d08_amp","varname": "fHslider231","shortname": "MM_Matrix_s42_d08_amp","address": "/modular-additive/MM_Matrix_s42_d08_amp","index": 263388,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d09_pan","varname": "fHslider22","shortname": "MM_Matrix_s42_d09_pan","address": "/modular-additive/MM_Matrix_s42_d09_pan","index": 262300,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d00_pitch","varname": "fHslider328","shortname": "MM_Matrix_s43_d00_pitch","address": "/modular-additive/MM_Matrix_s43_d00_pitch","index": 263804,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d01_bright","varname": "fHslider527","shortname": "MM_Matrix_s43_d01_bright","address": "/modular-additive/MM_Matrix_s43_d01_bright","index": 264624,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d02_tilt","varname": "fHslider575","shortname": "MM_Matrix_s43_d02_tilt","address": "/modular-additive/MM_Matrix_s43_d02_tilt","index": 264816,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d03_inharmonicity","varname": "fHslider379","shortname": "MM_Matrix_s43_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s43_d03_inharmonicity","index": 264020,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d04_odd_even","varname": "fHslider624","shortname": "MM_Matrix_s43_d04_odd_even","address": "/modular-additive/MM_Matrix_s43_d04_odd_even","index": 265012,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d05_formant_ctr","varname": "fHslider428","shortname": "MM_Matrix_s43_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s43_d05_formant_ctr","index": 264228,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d06_formant_depth","varname": "fHslider478","shortname": "MM_Matrix_s43_d06_formant_depth","address": "/modular-additive/MM_Matrix_s43_d06_formant_depth","index": 264428,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d07_noise_mix","varname": "fHslider278","shortname": "MM_Matrix_s43_d07_noise_mix","address": "/modular-additive/MM_Matrix_s43_d07_noise_mix","index": 263576,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d08_amp","varname": "fHslider230","shortname": "MM_Matrix_s43_d08_amp","address": "/modular-additive/MM_Matrix_s43_d08_amp","index": 263384,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d09_pan","varname": "fHslider18","shortname": "MM_Matrix_s43_d09_pan","address": "/modular-additive/MM_Matrix_s43_d09_pan","index": 262276,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d00_pitch","varname": "fHslider327","shortname": "MM_Matrix_s44_d00_pitch","address": "/modular-additive/MM_Matrix_s44_d00_pitch","index": 263800,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d01_bright","varname": "fHslider526","shortname": "MM_Matrix_s44_d01_bright","address": "/modular-additive/MM_Matrix_s44_d01_bright","index": 264620,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d02_tilt","varname": "fHslider574","shortname": "MM_Matrix_s44_d02_tilt","address": "/modular-additive/MM_Matrix_s44_d02_tilt","index": 264812,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d03_inharmonicity","varname": "fHslider378","shortname": "MM_Matrix_s44_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s44_d03_inharmonicity","index": 264016,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d04_odd_even","varname": "fHslider623","shortname": "MM_Matrix_s44_d04_odd_even","address": "/modular-additive/MM_Matrix_s44_d04_odd_even","index": 265008,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d05_formant_ctr","varname": "fHslider427","shortname": "MM_Matrix_s44_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s44_d05_formant_ctr","index": 264224,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d06_formant_depth","varname": "fHslider477","shortname": "MM_Matrix_s44_d06_formant_depth","address": "/modular-additive/MM_Matrix_s44_d06_formant_depth","index": 264424,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d07_noise_mix","varname": "fHslider277","shortname": "MM_Matrix_s44_d07_noise_mix","address": "/modular-additive/MM_Matrix_s44_d07_noise_mix","index": 263572,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d08_amp","varname": "fHslider229","shortname": "MM_Matrix_s44_d08_amp","address": "/modular-additive/MM_Matrix_s44_d08_amp","index": 263380,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d09_pan","varname": "fHslider14","shortname": "MM_Matrix_s44_d09_pan","address": "/modular-additive/MM_Matrix_s44_d09_pan","index": 262252,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d00_pitch","varname": "fHslider326","shortname": "MM_Matrix_s45_d00_pitch","address": "/modular-additive/MM_Matrix_s45_d00_pitch","index": 263796,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d01_bright","varname": "fHslider525","shortname": "MM_Matrix_s45_d01_bright","address": "/modular-additive/MM_Matrix_s45_d01_bright","index": 264616,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d02_tilt","varname": "fHslider573","shortname": "MM_Matrix_s45_d02_tilt","address": "/modular-additive/MM_Matrix_s45_d02_tilt","index": 264808,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d03_inharmonicity","varname": "fHslider377","shortname": "MM_Matrix_s45_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s45_d03_inharmonicity","index": 264012,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d04_odd_even","varname": "fHslider622","shortname": "MM_Matrix_s45_d04_odd_even","address": "/modular-additive/MM_Matrix_s45_d04_odd_even","index": 265004,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d05_formant_ctr","varname": "fHslider426","shortname": "MM_Matrix_s45_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s45_d05_formant_ctr","index": 264220,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d06_formant_depth","varname": "fHslider476","shortname": "MM_Matrix_s45_d06_formant_depth","address": "/modular-additive/MM_Matrix_s45_d06_formant_depth","index": 264420,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d07_noise_mix","varname": "fHslider276","shortname": "MM_Matrix_s45_d07_noise_mix","address": "/modular-additive/MM_Matrix_s45_d07_noise_mix","index": 263568,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d08_amp","varname": "fHslider228","shortname": "MM_Matrix_s45_d08_amp","address": "/modular-additive/MM_Matrix_s45_d08_amp","index": 263376,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d09_pan","varname": "fHslider10","shortname": "MM_Matrix_s45_d09_pan","address": "/modular-additive/MM_Matrix_s45_d09_pan","index": 262228,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d00_pitch","varname": "fHslider325","shortname": "MM_Matrix_s46_d00_pitch","address": "/modular-additive/MM_Matrix_s46_d00_pitch","index": 263792,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d01_bright","varname": "fHslider524","shortname": "MM_Matrix_s46_d01_bright","address": "/modular-additive/MM_Matrix_s46_d01_bright","index": 264612,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d02_tilt","varname": "fHslider572","shortname": "MM_Matrix_s46_d02_tilt","address": "/modular-additive/MM_Matrix_s46_d02_tilt","index": 264804,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d03_inharmonicity","varname": "fHslider376","shortname": "MM_Matrix_s46_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s46_d03_inharmonicity","index": 264008,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d04_odd_even","varname": "fHslider621","shortname": "MM_Matrix_s46_d04_odd_even","address": "/modular-additive/MM_Matrix_s46_d04_odd_even","index": 265000,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d05_formant_ctr","varname": "fHslider425","shortname": "MM_Matrix_s46_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s46_d05_formant_ctr","index": 264216,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d06_formant_depth","varname": "fHslider475","shortname": "MM_Matrix_s46_d06_formant_depth","address": "/modular-additive/MM_Matrix_s46_d06_formant_depth","index": 264416,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d07_noise_mix","varname": "fHslider275","shortname": "MM_Matrix_s46_d07_noise_mix","address": "/modular-additive/MM_Matrix_s46_d07_noise_mix","index": 263564,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d08_amp","varname": "fHslider227","shortname": "MM_Matrix_s46_d08_amp","address": "/modular-additive/MM_Matrix_s46_d08_amp","index": 263372,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d09_pan","varname": "fHslider6","shortname": "MM_Matrix_s46_d09_pan","address": "/modular-additive/MM_Matrix_s46_d09_pan","index": 262204,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d00_pitch","varname": "fHslider324","shortname": "MM_Matrix_s47_d00_pitch","address": "/modular-additive/MM_Matrix_s47_d00_pitch","index": 263788,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d01_bright","varname": "fHslider523","shortname": "MM_Matrix_s47_d01_bright","address": "/modular-additive/MM_Matrix_s47_d01_bright","index": 264608,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d02_tilt","varname": "fHslider571","shortname": "MM_Matrix_s47_d02_tilt","address": "/modular-additive/MM_Matrix_s47_d02_tilt","index": 264800,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d03_inharmonicity","varname": "fHslider375","shortname": "MM_Matrix_s47_d03_inharmonicity","address": "/modular-additive/MM_Matrix_s47_d03_inharmonicity","index": 264004,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d04_odd_even","varname": "fHslider620","shortname": "MM_Matrix_s47_d04_odd_even","address": "/modular-additive/MM_Matrix_s47_d04_odd_even","index": 264996,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d05_formant_ctr","varname": "fHslider424","shortname": "MM_Matrix_s47_d05_formant_ctr","address": "/modular-additive/MM_Matrix_s47_d05_formant_ctr","index": 264212,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d06_formant_depth","varname": "fHslider474","shortname": "MM_Matrix_s47_d06_formant_depth","address": "/modular-additive/MM_Matrix_s47_d06_formant_depth","index": 264412,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d07_noise_mix","varname": "fHslider274","shortname": "MM_Matrix_s47_d07_noise_mix","address": "/modular-additive/MM_Matrix_s47_d07_noise_mix","index": 263560,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d08_amp","varname": "fHslider226","shortname": "MM_Matrix_s47_d08_amp","address": "/modular-additive/MM_Matrix_s47_d08_amp","index": 263368,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d09_pan","varname": "fHslider2","shortname": "MM_Matrix_s47_d09_pan","address": "/modular-additive/MM_Matrix_s47_d09_pan","index": 262180,"init": 0,"min": -1,"max": 1,"step": 0.001}]}]} \ No newline at end of file diff --git a/playground/faust/modular-additive.wasm b/playground/faust/modular-additive.wasm new file mode 100644 index 0000000..c2bddb4 Binary files /dev/null and b/playground/faust/modular-additive.wasm differ diff --git a/playground/faust/modular-fm-processor.js b/playground/faust/modular-fm-processor.js new file mode 100644 index 0000000..73eafa9 --- /dev/null +++ b/playground/faust/modular-fm-processor.js @@ -0,0 +1,257 @@ +/** + * modular-fm-processor.js — AudioWorklet processor for the + * "Modular" mode 4-operator FM voice (modular-fm.dsp). + * + * Extends FaustWorkletProcessor (faust-worklet-processor.js). + * Loads modular-subtractive.wasm compiled by `faust -lang wasm`. + * + * Param-index strategy: + * modular-fm.dsp has ~690 parameters (30 engine + 80 ADSR + 96 LFO + * + 480 matrix + 3 hidden). Hand-maintained zone tables (additive-processor + * style) do not scale. Instead we use the wasm-native JSON descriptor + * produced by `faust -lang wasm`, which has a numeric `index` field on each + * leaf item. That index is the direct memory offset that setParamValue + * expects as its zone argument — no sentinel scanning, no address strings. + * + * The main thread fetches modular-fm.json, parses it, and passes + * the UI tree to the worklet via the init message. + * + * Calling convention (faust -lang wasm, single-instance): + * init(dsp, sampleRate) dsp is always 0 + * compute(dsp, n, inputs, outputs) + * setParamValue(dsp, zone, value) zone = numeric memory address from JSON + * getParamValue(dsp, zone) -> float + * + * Hidden params (not in the engine's ML-controllable list): + * 0_Hidden/freq — set by noteOn + * 0_Hidden/gate — set by noteOn/noteOff (button, value 0/1) + * 0_Hidden/_vel — set by noteOn + */ + +// Must be imported in AudioWorkletGlobalScope — include faust-worklet-processor.js +// via audioCtx.audioWorklet.addModule() before this file. + +const DSP = 0; +const BLOCK_SIZE = 128; + +class ModularFmProcessor extends FaustWorkletProcessor { + constructor(options) { + super(options); + this._dspInst = null; + this._dspMemory = null; // live Float32Array view + this._sampleRate = 48000; + + // Zone tables, populated once the init message has been processed. + this._paramZones = []; // NISPS index (order from JSON walk) -> zone + this._paramZonesByLabel = {}; // label -> zone (for smoke test) + this._hiddenZones = {}; // {freq, gate, _vel} -> zone + + // Audio output buffer pointers + this._outPtrsAddr = 0; + this._outLAddr = 0; + this._outRAddr = 0; + } + + // --------------------------------------------------------------------------- + // _initWasm — called by FaustWorkletProcessor.handleMessage on 'init'. + // + // Extra fields on the init message: + // uiJson — parsed Faust UI descriptor (the .json file contents) for + // zone discovery. Faust's -lang wasm embeds numeric `index` + // fields that we use directly as zone memory addresses. + // --------------------------------------------------------------------------- + + async _initWasm(wasmBytes, sampleRate, uiJson) { + this._sampleRate = sampleRate; + + const importObj = { + env: { + _sinf: Math.sin, + _cosf: Math.cos, + _tanf: Math.tan, + _expf: Math.exp, + _logf: Math.log, + _log10f: Math.log10, + _powf: Math.pow, + _tanhf: Math.tanh, + _sqrtf: Math.sqrt, + _fabsf: Math.abs, + _floorf: Math.floor, + _ceilf: Math.ceil, + _remainderf: (a, b) => a - Math.round(a / b) * b, + _fmodf: (a, b) => a % b, + _roundf: Math.round, + _truncf: Math.trunc, + _acosf: Math.acos, + _asinf: Math.asin, + _atanf: Math.atan, + _atan2f: Math.atan2, + }, + }; + + const result = await WebAssembly.instantiate(wasmBytes, importObj); + this._dspInst = result.instance; + const ex = this._dspInst.exports; + + // Grow memory by 2 pages (128 KB) so the output buffer region sits past + // Faust's allocated parameter zones. After growth we have at least + // 3 * BLOCK_SIZE * 4 bytes of scratch at the high end of memory. + ex.memory.grow(2); + + this._dspMemory = new Float32Array(ex.memory.buffer); + + // Initialise the DSP instance (single-instance convention: dsp = 0) + ex.init(DSP, sampleRate); + + // Allocate output buffers at the top of WASM memory. + const memBytes = ex.memory.buffer.byteLength; + this._outLAddr = memBytes - BLOCK_SIZE * 4 * 3; + this._outRAddr = this._outLAddr + BLOCK_SIZE * 4; + this._outPtrsAddr = this._outRAddr + BLOCK_SIZE * 4; + + const u32 = new Uint32Array(ex.memory.buffer); + u32[this._outPtrsAddr / 4] = this._outLAddr; + u32[this._outPtrsAddr / 4 + 1] = this._outRAddr; + + // Refresh the float view after any potential reallocation + this._dspMemory = new Float32Array(ex.memory.buffer); + + // Build the zone index from the JSON we were passed. + if (uiJson) { + this._buildZoneIndexFromJson(uiJson); + } else { + console.warn('[ModularFmProcessor] no uiJson in init message — ' + + 'setParam will silently no-op.'); + } + } + + // ------------------------------------------------------------------------- + // _buildZoneIndexFromJson — walk the Faust UI tree and collect numeric + // zone indexes, separating hidden params from the main NISPS-controllable + // list. Preserves the UI tree's traversal order, which matches the order + // the playground's faustJsonToParamMeta() parser will produce. + // ------------------------------------------------------------------------- + + _buildZoneIndexFromJson(faustJson) { + const HIDDEN_TAIL = new Set(['freq', 'gate', '_vel']); + const zones = []; + const byLabel = {}; + const hidden = {}; + + const walk = (items) => { + if (!Array.isArray(items)) return; + for (const item of items) { + const type = item?.type; + if (type === 'hslider' || type === 'vslider' || + type === 'nentry' || type === 'button' || + type === 'checkbox') { + const label = item.label ?? ''; + const idx = item.index; + if (typeof idx !== 'number') continue; + + const hasHiddenMeta = Array.isArray(item.meta) && + item.meta.some(m => m.hidden === '1' || m.hidden === 1); + const tail = label.includes('/') ? label.split('/').pop() : label; + + if (hasHiddenMeta || HIDDEN_TAIL.has(tail)) { + hidden[tail] = idx; + } else { + zones.push(idx); + byLabel[label] = idx; + } + } else if (item?.items) { + walk(item.items); + } + } + }; + + walk(faustJson.ui ?? []); + + this._paramZones = zones; + this._paramZonesByLabel = byLabel; + this._hiddenZones = hidden; + } + + // ------------------------------------------------------------------------- + // _onSetParam — look up the zone by NISPS index and poke the DSP + // ------------------------------------------------------------------------- + + _onSetParam(index, value) { + if (!this._dspInst) return; + const zone = this._paramZones[index]; + if (zone === undefined) return; + this._dspInst.exports.setParamValue(DSP, zone, value); + } + + _onNoteOn(freq, vel) { + if (!this._dspInst) return; + const ex = this._dspInst.exports; + const z = this._hiddenZones; + if (z.freq !== undefined) ex.setParamValue(DSP, z.freq, freq); + if (z._vel !== undefined) ex.setParamValue(DSP, z._vel, vel ?? 0.7); + if (z.gate !== undefined) ex.setParamValue(DSP, z.gate, 1.0); + } + + _onNoteOff(_freq) { + if (!this._dspInst) return; + const z = this._hiddenZones; + if (z.gate !== undefined) { + this._dspInst.exports.setParamValue(DSP, z.gate, 0.0); + } + } + + // ------------------------------------------------------------------------- + // Extended message handling — override for setByLabel + init-with-json + // ------------------------------------------------------------------------- + + _handleMessage(msg) { + if (!msg || !msg.type) return; + + if (msg.type === 'init') { + // Override the base class's init path so we can thread `uiJson` through. + this._initWasm(msg.wasmBytes, msg.sampleRate || sampleRate, msg.uiJson) + .then(() => { + this._ready = true; + this.port.postMessage({ type: 'ready' }); + this._drainPendingMessages(); + }) + .catch((err) => { + this.port.postMessage({ type: 'error', message: String(err) }); + }); + return; + } + + // Buffer anything that arrives before init() finishes. See + // faust-worklet-processor.js._queueIfNotReady. + if (this._queueIfNotReady(msg)) return; + + if (msg.type === 'setByLabel') { + const zone = this._paramZonesByLabel[msg.label]; + if (zone !== undefined) { + this._dspInst.exports.setParamValue(DSP, zone, msg.value); + } + return; + } + + // Delegate everything else (setParam, noteOn, noteOff) to the base class. + super._handleMessage(msg); + } + + // ------------------------------------------------------------------------- + // _renderBlock — call Faust compute, copy output buffers + // ------------------------------------------------------------------------- + + _renderBlock(outL, outR, blockSize) { + if (!this._dspInst || !this._dspMemory) return; + + const ex = this._dspInst.exports; + ex.compute(DSP, blockSize, 0, this._outPtrsAddr); + + const wL = new Float32Array(ex.memory.buffer, this._outLAddr, blockSize); + const wR = new Float32Array(ex.memory.buffer, this._outRAddr, blockSize); + outL.set(wL); + outR.set(wR); + } +} + +registerProcessor('modular-fm-processor', ModularFmProcessor); diff --git a/playground/faust/modular-fm.dsp b/playground/faust/modular-fm.dsp new file mode 100644 index 0000000..c2efbae --- /dev/null +++ b/playground/faust/modular-fm.dsp @@ -0,0 +1,1195 @@ +// modular-fm.dsp — 4-operator FM voice for the "Modular" mode. +// +// AUTO-GENERATED by gen-modular-dsp.py. DO NOT EDIT BY HAND. +// Regenerate with: +// cd playground/faust && python3 gen-modular-dsp.py +// +// Audio path: 4 ops with 12-cell cross-mod matrix and per-op feedback. +// All envelopes and LFOs come from mod-pool.lib via a 48-source × 10-dest +// modulation matrix. No internal envs/LFOs. +// +// Modulation destinations (10): +// 0 pitch semitones added to the base frequency +// 1 op1_level added to op1 level knob +// 2 op2_level added to op2 level knob +// 3 op3_level added to op3 level knob +// 4 op4_level added to op4 level knob +// 5 cross_mod_global global FM depth multiplier on all 12 cross-mod cells +// 6 feedback_global global feedback multiplier on all 4 self-feedback cells +// 7 global_ratio additive scale factor on all 4 operator ratios +// 8 amp master amplitude dest (route an ADSR here for a VCA env) +// 9 pan stereo balance +// +// Hidden controls (driven by noteOn/noteOff, not by the ML engine): +// freq, gate, _vel +// +// Build: +// cd playground/faust && ./build.sh +// +// --------------------------------------------------------------------------- + +import("stdfaust.lib"); +mp = library("mod-pool.lib"); + +// --------------------------------------------------------------------------- +// Hidden controls +// --------------------------------------------------------------------------- +freq = hslider("0_Hidden/freq[hidden:1][unit:Hz]", 220, 20, 4000, 0.01); +gate = button("0_Hidden/gate[hidden:1]"); +vel = hslider("0_Hidden/_vel[hidden:1]", 0.7, 0.0, 1.0, 0.001) : si.smoo; + +// --------------------------------------------------------------------------- +// Group 1 — Operators (ratio & level per op) +// --------------------------------------------------------------------------- +op1_ratio = hslider("1_Operators/00_op1_ratio", 1.0, 0.125, 16.0, 0.001); +op1_level = hslider("1_Operators/01_op1_level", 0.8, 0.0, 1.0, 0.001); +op2_ratio = hslider("1_Operators/02_op2_ratio", 2.0, 0.125, 16.0, 0.001); +op2_level = hslider("1_Operators/03_op2_level", 0.6, 0.0, 1.0, 0.001); +op3_ratio = hslider("1_Operators/04_op3_ratio", 3.0, 0.125, 16.0, 0.001); +op3_level = hslider("1_Operators/05_op3_level", 0.4, 0.0, 1.0, 0.001); +op4_ratio = hslider("1_Operators/06_op4_ratio", 0.5, 0.125, 16.0, 0.001); +op4_level = hslider("1_Operators/07_op4_level", 0.3, 0.0, 1.0, 0.001); + +// --------------------------------------------------------------------------- +// Group 2 — Cross-mod Matrix (mXY = op X modulates op Y) +// --------------------------------------------------------------------------- +m12 = hslider("2_CrossMod/00_m12", 0.0, 0.0, 10.0, 0.001); +m13 = hslider("2_CrossMod/01_m13", 0.0, 0.0, 10.0, 0.001); +m14 = hslider("2_CrossMod/02_m14", 0.0, 0.0, 10.0, 0.001); +m21 = hslider("2_CrossMod/03_m21", 1.0, 0.0, 10.0, 0.001); +m23 = hslider("2_CrossMod/04_m23", 0.0, 0.0, 10.0, 0.001); +m24 = hslider("2_CrossMod/05_m24", 0.0, 0.0, 10.0, 0.001); +m31 = hslider("2_CrossMod/06_m31", 0.0, 0.0, 10.0, 0.001); +m32 = hslider("2_CrossMod/07_m32", 0.0, 0.0, 10.0, 0.001); +m34 = hslider("2_CrossMod/08_m34", 0.0, 0.0, 10.0, 0.001); +m41 = hslider("2_CrossMod/09_m41", 0.0, 0.0, 10.0, 0.001); +m42 = hslider("2_CrossMod/10_m42", 0.0, 0.0, 10.0, 0.001); +m43 = hslider("2_CrossMod/11_m43", 0.0, 0.0, 10.0, 0.001); + +// --------------------------------------------------------------------------- +// Group 3 — Self-feedback +// --------------------------------------------------------------------------- +fb1 = hslider("3_Feedback/00_fb1", 0.0, 0.0, 1.0, 0.001); +fb2 = hslider("3_Feedback/01_fb2", 0.0, 0.0, 1.0, 0.001); +fb3 = hslider("3_Feedback/02_fb3", 0.0, 0.0, 1.0, 0.001); +fb4 = hslider("3_Feedback/03_fb4", 0.0, 0.0, 1.0, 0.001); + +// --------------------------------------------------------------------------- +// Group 4 — Master +// --------------------------------------------------------------------------- +master_level = hslider("4_Master/00_master_level", 0.7, 0.0, 1.0, 0.001); +fine_tune = hslider("4_Master/01_fine_tune[unit:ct]", 0.0, -50.0, 50.0, 0.1); +stereo_spread = hslider("4_Master/02_stereo_spread", 0.1, 0.0, 1.0, 0.001); +output_saturation = hslider("4_Master/03_output_saturation", 0.0, 0.0, 1.0, 0.001); +output_hp = hslider("4_Master/04_output_hp[unit:Hz]",20.0, 20.0, 200.0,0.1); +master_pan = hslider("4_Master/05_master_pan", 0.0, -1.0, 1.0, 0.001); + +// --------------------------------------------------------------------------- +// Modulation matrix — 48 sources × 10 destinations. +// Each hslider is one "amount" entry in [-1, +1]. Zero = no connection. +// Group "MM_Matrix" so the paramMeta parser can recognise matrix params. +// --------------------------------------------------------------------------- + +// Matrix column: destination 0 = pitch +amt_s00_d00_pitch = hslider("MM_Matrix/s00_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s01_d00_pitch = hslider("MM_Matrix/s01_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s02_d00_pitch = hslider("MM_Matrix/s02_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s03_d00_pitch = hslider("MM_Matrix/s03_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s04_d00_pitch = hslider("MM_Matrix/s04_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s05_d00_pitch = hslider("MM_Matrix/s05_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s06_d00_pitch = hslider("MM_Matrix/s06_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s07_d00_pitch = hslider("MM_Matrix/s07_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s08_d00_pitch = hslider("MM_Matrix/s08_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s09_d00_pitch = hslider("MM_Matrix/s09_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s10_d00_pitch = hslider("MM_Matrix/s10_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s11_d00_pitch = hslider("MM_Matrix/s11_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s12_d00_pitch = hslider("MM_Matrix/s12_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s13_d00_pitch = hslider("MM_Matrix/s13_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s14_d00_pitch = hslider("MM_Matrix/s14_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s15_d00_pitch = hslider("MM_Matrix/s15_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s16_d00_pitch = hslider("MM_Matrix/s16_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s17_d00_pitch = hslider("MM_Matrix/s17_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s18_d00_pitch = hslider("MM_Matrix/s18_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s19_d00_pitch = hslider("MM_Matrix/s19_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s20_d00_pitch = hslider("MM_Matrix/s20_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s21_d00_pitch = hslider("MM_Matrix/s21_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s22_d00_pitch = hslider("MM_Matrix/s22_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s23_d00_pitch = hslider("MM_Matrix/s23_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s24_d00_pitch = hslider("MM_Matrix/s24_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s25_d00_pitch = hslider("MM_Matrix/s25_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s26_d00_pitch = hslider("MM_Matrix/s26_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s27_d00_pitch = hslider("MM_Matrix/s27_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s28_d00_pitch = hslider("MM_Matrix/s28_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s29_d00_pitch = hslider("MM_Matrix/s29_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s30_d00_pitch = hslider("MM_Matrix/s30_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s31_d00_pitch = hslider("MM_Matrix/s31_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s32_d00_pitch = hslider("MM_Matrix/s32_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s33_d00_pitch = hslider("MM_Matrix/s33_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s34_d00_pitch = hslider("MM_Matrix/s34_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s35_d00_pitch = hslider("MM_Matrix/s35_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s36_d00_pitch = hslider("MM_Matrix/s36_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s37_d00_pitch = hslider("MM_Matrix/s37_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s38_d00_pitch = hslider("MM_Matrix/s38_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s39_d00_pitch = hslider("MM_Matrix/s39_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s40_d00_pitch = hslider("MM_Matrix/s40_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s41_d00_pitch = hslider("MM_Matrix/s41_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s42_d00_pitch = hslider("MM_Matrix/s42_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s43_d00_pitch = hslider("MM_Matrix/s43_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s44_d00_pitch = hslider("MM_Matrix/s44_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s45_d00_pitch = hslider("MM_Matrix/s45_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s46_d00_pitch = hslider("MM_Matrix/s46_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s47_d00_pitch = hslider("MM_Matrix/s47_d00_pitch", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 1 = op1_level +amt_s00_d01_op1_level = hslider("MM_Matrix/s00_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s01_d01_op1_level = hslider("MM_Matrix/s01_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s02_d01_op1_level = hslider("MM_Matrix/s02_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s03_d01_op1_level = hslider("MM_Matrix/s03_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s04_d01_op1_level = hslider("MM_Matrix/s04_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s05_d01_op1_level = hslider("MM_Matrix/s05_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s06_d01_op1_level = hslider("MM_Matrix/s06_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s07_d01_op1_level = hslider("MM_Matrix/s07_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s08_d01_op1_level = hslider("MM_Matrix/s08_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s09_d01_op1_level = hslider("MM_Matrix/s09_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s10_d01_op1_level = hslider("MM_Matrix/s10_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s11_d01_op1_level = hslider("MM_Matrix/s11_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s12_d01_op1_level = hslider("MM_Matrix/s12_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s13_d01_op1_level = hslider("MM_Matrix/s13_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s14_d01_op1_level = hslider("MM_Matrix/s14_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s15_d01_op1_level = hslider("MM_Matrix/s15_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s16_d01_op1_level = hslider("MM_Matrix/s16_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s17_d01_op1_level = hslider("MM_Matrix/s17_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s18_d01_op1_level = hslider("MM_Matrix/s18_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s19_d01_op1_level = hslider("MM_Matrix/s19_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s20_d01_op1_level = hslider("MM_Matrix/s20_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s21_d01_op1_level = hslider("MM_Matrix/s21_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s22_d01_op1_level = hslider("MM_Matrix/s22_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s23_d01_op1_level = hslider("MM_Matrix/s23_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s24_d01_op1_level = hslider("MM_Matrix/s24_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s25_d01_op1_level = hslider("MM_Matrix/s25_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s26_d01_op1_level = hslider("MM_Matrix/s26_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s27_d01_op1_level = hslider("MM_Matrix/s27_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s28_d01_op1_level = hslider("MM_Matrix/s28_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s29_d01_op1_level = hslider("MM_Matrix/s29_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s30_d01_op1_level = hslider("MM_Matrix/s30_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s31_d01_op1_level = hslider("MM_Matrix/s31_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s32_d01_op1_level = hslider("MM_Matrix/s32_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s33_d01_op1_level = hslider("MM_Matrix/s33_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s34_d01_op1_level = hslider("MM_Matrix/s34_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s35_d01_op1_level = hslider("MM_Matrix/s35_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s36_d01_op1_level = hslider("MM_Matrix/s36_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s37_d01_op1_level = hslider("MM_Matrix/s37_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s38_d01_op1_level = hslider("MM_Matrix/s38_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s39_d01_op1_level = hslider("MM_Matrix/s39_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s40_d01_op1_level = hslider("MM_Matrix/s40_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s41_d01_op1_level = hslider("MM_Matrix/s41_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s42_d01_op1_level = hslider("MM_Matrix/s42_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s43_d01_op1_level = hslider("MM_Matrix/s43_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s44_d01_op1_level = hslider("MM_Matrix/s44_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s45_d01_op1_level = hslider("MM_Matrix/s45_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s46_d01_op1_level = hslider("MM_Matrix/s46_d01_op1_level", 0.0, -1.0, 1.0, 0.001); +amt_s47_d01_op1_level = hslider("MM_Matrix/s47_d01_op1_level", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 2 = op2_level +amt_s00_d02_op2_level = hslider("MM_Matrix/s00_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s01_d02_op2_level = hslider("MM_Matrix/s01_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s02_d02_op2_level = hslider("MM_Matrix/s02_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s03_d02_op2_level = hslider("MM_Matrix/s03_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s04_d02_op2_level = hslider("MM_Matrix/s04_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s05_d02_op2_level = hslider("MM_Matrix/s05_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s06_d02_op2_level = hslider("MM_Matrix/s06_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s07_d02_op2_level = hslider("MM_Matrix/s07_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s08_d02_op2_level = hslider("MM_Matrix/s08_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s09_d02_op2_level = hslider("MM_Matrix/s09_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s10_d02_op2_level = hslider("MM_Matrix/s10_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s11_d02_op2_level = hslider("MM_Matrix/s11_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s12_d02_op2_level = hslider("MM_Matrix/s12_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s13_d02_op2_level = hslider("MM_Matrix/s13_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s14_d02_op2_level = hslider("MM_Matrix/s14_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s15_d02_op2_level = hslider("MM_Matrix/s15_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s16_d02_op2_level = hslider("MM_Matrix/s16_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s17_d02_op2_level = hslider("MM_Matrix/s17_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s18_d02_op2_level = hslider("MM_Matrix/s18_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s19_d02_op2_level = hslider("MM_Matrix/s19_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s20_d02_op2_level = hslider("MM_Matrix/s20_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s21_d02_op2_level = hslider("MM_Matrix/s21_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s22_d02_op2_level = hslider("MM_Matrix/s22_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s23_d02_op2_level = hslider("MM_Matrix/s23_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s24_d02_op2_level = hslider("MM_Matrix/s24_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s25_d02_op2_level = hslider("MM_Matrix/s25_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s26_d02_op2_level = hslider("MM_Matrix/s26_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s27_d02_op2_level = hslider("MM_Matrix/s27_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s28_d02_op2_level = hslider("MM_Matrix/s28_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s29_d02_op2_level = hslider("MM_Matrix/s29_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s30_d02_op2_level = hslider("MM_Matrix/s30_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s31_d02_op2_level = hslider("MM_Matrix/s31_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s32_d02_op2_level = hslider("MM_Matrix/s32_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s33_d02_op2_level = hslider("MM_Matrix/s33_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s34_d02_op2_level = hslider("MM_Matrix/s34_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s35_d02_op2_level = hslider("MM_Matrix/s35_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s36_d02_op2_level = hslider("MM_Matrix/s36_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s37_d02_op2_level = hslider("MM_Matrix/s37_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s38_d02_op2_level = hslider("MM_Matrix/s38_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s39_d02_op2_level = hslider("MM_Matrix/s39_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s40_d02_op2_level = hslider("MM_Matrix/s40_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s41_d02_op2_level = hslider("MM_Matrix/s41_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s42_d02_op2_level = hslider("MM_Matrix/s42_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s43_d02_op2_level = hslider("MM_Matrix/s43_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s44_d02_op2_level = hslider("MM_Matrix/s44_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s45_d02_op2_level = hslider("MM_Matrix/s45_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s46_d02_op2_level = hslider("MM_Matrix/s46_d02_op2_level", 0.0, -1.0, 1.0, 0.001); +amt_s47_d02_op2_level = hslider("MM_Matrix/s47_d02_op2_level", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 3 = op3_level +amt_s00_d03_op3_level = hslider("MM_Matrix/s00_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s01_d03_op3_level = hslider("MM_Matrix/s01_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s02_d03_op3_level = hslider("MM_Matrix/s02_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s03_d03_op3_level = hslider("MM_Matrix/s03_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s04_d03_op3_level = hslider("MM_Matrix/s04_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s05_d03_op3_level = hslider("MM_Matrix/s05_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s06_d03_op3_level = hslider("MM_Matrix/s06_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s07_d03_op3_level = hslider("MM_Matrix/s07_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s08_d03_op3_level = hslider("MM_Matrix/s08_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s09_d03_op3_level = hslider("MM_Matrix/s09_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s10_d03_op3_level = hslider("MM_Matrix/s10_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s11_d03_op3_level = hslider("MM_Matrix/s11_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s12_d03_op3_level = hslider("MM_Matrix/s12_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s13_d03_op3_level = hslider("MM_Matrix/s13_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s14_d03_op3_level = hslider("MM_Matrix/s14_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s15_d03_op3_level = hslider("MM_Matrix/s15_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s16_d03_op3_level = hslider("MM_Matrix/s16_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s17_d03_op3_level = hslider("MM_Matrix/s17_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s18_d03_op3_level = hslider("MM_Matrix/s18_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s19_d03_op3_level = hslider("MM_Matrix/s19_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s20_d03_op3_level = hslider("MM_Matrix/s20_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s21_d03_op3_level = hslider("MM_Matrix/s21_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s22_d03_op3_level = hslider("MM_Matrix/s22_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s23_d03_op3_level = hslider("MM_Matrix/s23_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s24_d03_op3_level = hslider("MM_Matrix/s24_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s25_d03_op3_level = hslider("MM_Matrix/s25_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s26_d03_op3_level = hslider("MM_Matrix/s26_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s27_d03_op3_level = hslider("MM_Matrix/s27_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s28_d03_op3_level = hslider("MM_Matrix/s28_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s29_d03_op3_level = hslider("MM_Matrix/s29_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s30_d03_op3_level = hslider("MM_Matrix/s30_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s31_d03_op3_level = hslider("MM_Matrix/s31_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s32_d03_op3_level = hslider("MM_Matrix/s32_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s33_d03_op3_level = hslider("MM_Matrix/s33_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s34_d03_op3_level = hslider("MM_Matrix/s34_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s35_d03_op3_level = hslider("MM_Matrix/s35_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s36_d03_op3_level = hslider("MM_Matrix/s36_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s37_d03_op3_level = hslider("MM_Matrix/s37_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s38_d03_op3_level = hslider("MM_Matrix/s38_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s39_d03_op3_level = hslider("MM_Matrix/s39_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s40_d03_op3_level = hslider("MM_Matrix/s40_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s41_d03_op3_level = hslider("MM_Matrix/s41_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s42_d03_op3_level = hslider("MM_Matrix/s42_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s43_d03_op3_level = hslider("MM_Matrix/s43_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s44_d03_op3_level = hslider("MM_Matrix/s44_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s45_d03_op3_level = hslider("MM_Matrix/s45_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s46_d03_op3_level = hslider("MM_Matrix/s46_d03_op3_level", 0.0, -1.0, 1.0, 0.001); +amt_s47_d03_op3_level = hslider("MM_Matrix/s47_d03_op3_level", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 4 = op4_level +amt_s00_d04_op4_level = hslider("MM_Matrix/s00_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s01_d04_op4_level = hslider("MM_Matrix/s01_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s02_d04_op4_level = hslider("MM_Matrix/s02_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s03_d04_op4_level = hslider("MM_Matrix/s03_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s04_d04_op4_level = hslider("MM_Matrix/s04_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s05_d04_op4_level = hslider("MM_Matrix/s05_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s06_d04_op4_level = hslider("MM_Matrix/s06_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s07_d04_op4_level = hslider("MM_Matrix/s07_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s08_d04_op4_level = hslider("MM_Matrix/s08_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s09_d04_op4_level = hslider("MM_Matrix/s09_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s10_d04_op4_level = hslider("MM_Matrix/s10_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s11_d04_op4_level = hslider("MM_Matrix/s11_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s12_d04_op4_level = hslider("MM_Matrix/s12_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s13_d04_op4_level = hslider("MM_Matrix/s13_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s14_d04_op4_level = hslider("MM_Matrix/s14_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s15_d04_op4_level = hslider("MM_Matrix/s15_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s16_d04_op4_level = hslider("MM_Matrix/s16_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s17_d04_op4_level = hslider("MM_Matrix/s17_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s18_d04_op4_level = hslider("MM_Matrix/s18_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s19_d04_op4_level = hslider("MM_Matrix/s19_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s20_d04_op4_level = hslider("MM_Matrix/s20_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s21_d04_op4_level = hslider("MM_Matrix/s21_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s22_d04_op4_level = hslider("MM_Matrix/s22_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s23_d04_op4_level = hslider("MM_Matrix/s23_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s24_d04_op4_level = hslider("MM_Matrix/s24_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s25_d04_op4_level = hslider("MM_Matrix/s25_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s26_d04_op4_level = hslider("MM_Matrix/s26_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s27_d04_op4_level = hslider("MM_Matrix/s27_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s28_d04_op4_level = hslider("MM_Matrix/s28_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s29_d04_op4_level = hslider("MM_Matrix/s29_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s30_d04_op4_level = hslider("MM_Matrix/s30_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s31_d04_op4_level = hslider("MM_Matrix/s31_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s32_d04_op4_level = hslider("MM_Matrix/s32_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s33_d04_op4_level = hslider("MM_Matrix/s33_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s34_d04_op4_level = hslider("MM_Matrix/s34_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s35_d04_op4_level = hslider("MM_Matrix/s35_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s36_d04_op4_level = hslider("MM_Matrix/s36_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s37_d04_op4_level = hslider("MM_Matrix/s37_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s38_d04_op4_level = hslider("MM_Matrix/s38_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s39_d04_op4_level = hslider("MM_Matrix/s39_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s40_d04_op4_level = hslider("MM_Matrix/s40_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s41_d04_op4_level = hslider("MM_Matrix/s41_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s42_d04_op4_level = hslider("MM_Matrix/s42_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s43_d04_op4_level = hslider("MM_Matrix/s43_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s44_d04_op4_level = hslider("MM_Matrix/s44_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s45_d04_op4_level = hslider("MM_Matrix/s45_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s46_d04_op4_level = hslider("MM_Matrix/s46_d04_op4_level", 0.0, -1.0, 1.0, 0.001); +amt_s47_d04_op4_level = hslider("MM_Matrix/s47_d04_op4_level", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 5 = cross_mod_global +amt_s00_d05_cross_mod_global = hslider("MM_Matrix/s00_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s01_d05_cross_mod_global = hslider("MM_Matrix/s01_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s02_d05_cross_mod_global = hslider("MM_Matrix/s02_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s03_d05_cross_mod_global = hslider("MM_Matrix/s03_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s04_d05_cross_mod_global = hslider("MM_Matrix/s04_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s05_d05_cross_mod_global = hslider("MM_Matrix/s05_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s06_d05_cross_mod_global = hslider("MM_Matrix/s06_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s07_d05_cross_mod_global = hslider("MM_Matrix/s07_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s08_d05_cross_mod_global = hslider("MM_Matrix/s08_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s09_d05_cross_mod_global = hslider("MM_Matrix/s09_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s10_d05_cross_mod_global = hslider("MM_Matrix/s10_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s11_d05_cross_mod_global = hslider("MM_Matrix/s11_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s12_d05_cross_mod_global = hslider("MM_Matrix/s12_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s13_d05_cross_mod_global = hslider("MM_Matrix/s13_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s14_d05_cross_mod_global = hslider("MM_Matrix/s14_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s15_d05_cross_mod_global = hslider("MM_Matrix/s15_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s16_d05_cross_mod_global = hslider("MM_Matrix/s16_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s17_d05_cross_mod_global = hslider("MM_Matrix/s17_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s18_d05_cross_mod_global = hslider("MM_Matrix/s18_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s19_d05_cross_mod_global = hslider("MM_Matrix/s19_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s20_d05_cross_mod_global = hslider("MM_Matrix/s20_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s21_d05_cross_mod_global = hslider("MM_Matrix/s21_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s22_d05_cross_mod_global = hslider("MM_Matrix/s22_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s23_d05_cross_mod_global = hslider("MM_Matrix/s23_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s24_d05_cross_mod_global = hslider("MM_Matrix/s24_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s25_d05_cross_mod_global = hslider("MM_Matrix/s25_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s26_d05_cross_mod_global = hslider("MM_Matrix/s26_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s27_d05_cross_mod_global = hslider("MM_Matrix/s27_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s28_d05_cross_mod_global = hslider("MM_Matrix/s28_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s29_d05_cross_mod_global = hslider("MM_Matrix/s29_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s30_d05_cross_mod_global = hslider("MM_Matrix/s30_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s31_d05_cross_mod_global = hslider("MM_Matrix/s31_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s32_d05_cross_mod_global = hslider("MM_Matrix/s32_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s33_d05_cross_mod_global = hslider("MM_Matrix/s33_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s34_d05_cross_mod_global = hslider("MM_Matrix/s34_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s35_d05_cross_mod_global = hslider("MM_Matrix/s35_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s36_d05_cross_mod_global = hslider("MM_Matrix/s36_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s37_d05_cross_mod_global = hslider("MM_Matrix/s37_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s38_d05_cross_mod_global = hslider("MM_Matrix/s38_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s39_d05_cross_mod_global = hslider("MM_Matrix/s39_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s40_d05_cross_mod_global = hslider("MM_Matrix/s40_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s41_d05_cross_mod_global = hslider("MM_Matrix/s41_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s42_d05_cross_mod_global = hslider("MM_Matrix/s42_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s43_d05_cross_mod_global = hslider("MM_Matrix/s43_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s44_d05_cross_mod_global = hslider("MM_Matrix/s44_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s45_d05_cross_mod_global = hslider("MM_Matrix/s45_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s46_d05_cross_mod_global = hslider("MM_Matrix/s46_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); +amt_s47_d05_cross_mod_global = hslider("MM_Matrix/s47_d05_cross_mod_global", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 6 = feedback_global +amt_s00_d06_feedback_global = hslider("MM_Matrix/s00_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s01_d06_feedback_global = hslider("MM_Matrix/s01_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s02_d06_feedback_global = hslider("MM_Matrix/s02_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s03_d06_feedback_global = hslider("MM_Matrix/s03_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s04_d06_feedback_global = hslider("MM_Matrix/s04_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s05_d06_feedback_global = hslider("MM_Matrix/s05_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s06_d06_feedback_global = hslider("MM_Matrix/s06_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s07_d06_feedback_global = hslider("MM_Matrix/s07_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s08_d06_feedback_global = hslider("MM_Matrix/s08_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s09_d06_feedback_global = hslider("MM_Matrix/s09_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s10_d06_feedback_global = hslider("MM_Matrix/s10_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s11_d06_feedback_global = hslider("MM_Matrix/s11_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s12_d06_feedback_global = hslider("MM_Matrix/s12_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s13_d06_feedback_global = hslider("MM_Matrix/s13_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s14_d06_feedback_global = hslider("MM_Matrix/s14_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s15_d06_feedback_global = hslider("MM_Matrix/s15_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s16_d06_feedback_global = hslider("MM_Matrix/s16_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s17_d06_feedback_global = hslider("MM_Matrix/s17_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s18_d06_feedback_global = hslider("MM_Matrix/s18_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s19_d06_feedback_global = hslider("MM_Matrix/s19_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s20_d06_feedback_global = hslider("MM_Matrix/s20_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s21_d06_feedback_global = hslider("MM_Matrix/s21_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s22_d06_feedback_global = hslider("MM_Matrix/s22_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s23_d06_feedback_global = hslider("MM_Matrix/s23_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s24_d06_feedback_global = hslider("MM_Matrix/s24_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s25_d06_feedback_global = hslider("MM_Matrix/s25_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s26_d06_feedback_global = hslider("MM_Matrix/s26_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s27_d06_feedback_global = hslider("MM_Matrix/s27_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s28_d06_feedback_global = hslider("MM_Matrix/s28_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s29_d06_feedback_global = hslider("MM_Matrix/s29_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s30_d06_feedback_global = hslider("MM_Matrix/s30_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s31_d06_feedback_global = hslider("MM_Matrix/s31_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s32_d06_feedback_global = hslider("MM_Matrix/s32_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s33_d06_feedback_global = hslider("MM_Matrix/s33_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s34_d06_feedback_global = hslider("MM_Matrix/s34_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s35_d06_feedback_global = hslider("MM_Matrix/s35_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s36_d06_feedback_global = hslider("MM_Matrix/s36_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s37_d06_feedback_global = hslider("MM_Matrix/s37_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s38_d06_feedback_global = hslider("MM_Matrix/s38_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s39_d06_feedback_global = hslider("MM_Matrix/s39_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s40_d06_feedback_global = hslider("MM_Matrix/s40_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s41_d06_feedback_global = hslider("MM_Matrix/s41_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s42_d06_feedback_global = hslider("MM_Matrix/s42_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s43_d06_feedback_global = hslider("MM_Matrix/s43_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s44_d06_feedback_global = hslider("MM_Matrix/s44_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s45_d06_feedback_global = hslider("MM_Matrix/s45_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s46_d06_feedback_global = hslider("MM_Matrix/s46_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); +amt_s47_d06_feedback_global = hslider("MM_Matrix/s47_d06_feedback_global", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 7 = global_ratio +amt_s00_d07_global_ratio = hslider("MM_Matrix/s00_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s01_d07_global_ratio = hslider("MM_Matrix/s01_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s02_d07_global_ratio = hslider("MM_Matrix/s02_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s03_d07_global_ratio = hslider("MM_Matrix/s03_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s04_d07_global_ratio = hslider("MM_Matrix/s04_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s05_d07_global_ratio = hslider("MM_Matrix/s05_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s06_d07_global_ratio = hslider("MM_Matrix/s06_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s07_d07_global_ratio = hslider("MM_Matrix/s07_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s08_d07_global_ratio = hslider("MM_Matrix/s08_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s09_d07_global_ratio = hslider("MM_Matrix/s09_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s10_d07_global_ratio = hslider("MM_Matrix/s10_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s11_d07_global_ratio = hslider("MM_Matrix/s11_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s12_d07_global_ratio = hslider("MM_Matrix/s12_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s13_d07_global_ratio = hslider("MM_Matrix/s13_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s14_d07_global_ratio = hslider("MM_Matrix/s14_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s15_d07_global_ratio = hslider("MM_Matrix/s15_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s16_d07_global_ratio = hslider("MM_Matrix/s16_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s17_d07_global_ratio = hslider("MM_Matrix/s17_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s18_d07_global_ratio = hslider("MM_Matrix/s18_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s19_d07_global_ratio = hslider("MM_Matrix/s19_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s20_d07_global_ratio = hslider("MM_Matrix/s20_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s21_d07_global_ratio = hslider("MM_Matrix/s21_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s22_d07_global_ratio = hslider("MM_Matrix/s22_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s23_d07_global_ratio = hslider("MM_Matrix/s23_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s24_d07_global_ratio = hslider("MM_Matrix/s24_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s25_d07_global_ratio = hslider("MM_Matrix/s25_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s26_d07_global_ratio = hslider("MM_Matrix/s26_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s27_d07_global_ratio = hslider("MM_Matrix/s27_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s28_d07_global_ratio = hslider("MM_Matrix/s28_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s29_d07_global_ratio = hslider("MM_Matrix/s29_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s30_d07_global_ratio = hslider("MM_Matrix/s30_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s31_d07_global_ratio = hslider("MM_Matrix/s31_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s32_d07_global_ratio = hslider("MM_Matrix/s32_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s33_d07_global_ratio = hslider("MM_Matrix/s33_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s34_d07_global_ratio = hslider("MM_Matrix/s34_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s35_d07_global_ratio = hslider("MM_Matrix/s35_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s36_d07_global_ratio = hslider("MM_Matrix/s36_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s37_d07_global_ratio = hslider("MM_Matrix/s37_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s38_d07_global_ratio = hslider("MM_Matrix/s38_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s39_d07_global_ratio = hslider("MM_Matrix/s39_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s40_d07_global_ratio = hslider("MM_Matrix/s40_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s41_d07_global_ratio = hslider("MM_Matrix/s41_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s42_d07_global_ratio = hslider("MM_Matrix/s42_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s43_d07_global_ratio = hslider("MM_Matrix/s43_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s44_d07_global_ratio = hslider("MM_Matrix/s44_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s45_d07_global_ratio = hslider("MM_Matrix/s45_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s46_d07_global_ratio = hslider("MM_Matrix/s46_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); +amt_s47_d07_global_ratio = hslider("MM_Matrix/s47_d07_global_ratio", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 8 = amp +amt_s00_d08_amp = hslider("MM_Matrix/s00_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s01_d08_amp = hslider("MM_Matrix/s01_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s02_d08_amp = hslider("MM_Matrix/s02_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s03_d08_amp = hslider("MM_Matrix/s03_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s04_d08_amp = hslider("MM_Matrix/s04_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s05_d08_amp = hslider("MM_Matrix/s05_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s06_d08_amp = hslider("MM_Matrix/s06_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s07_d08_amp = hslider("MM_Matrix/s07_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s08_d08_amp = hslider("MM_Matrix/s08_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s09_d08_amp = hslider("MM_Matrix/s09_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s10_d08_amp = hslider("MM_Matrix/s10_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s11_d08_amp = hslider("MM_Matrix/s11_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s12_d08_amp = hslider("MM_Matrix/s12_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s13_d08_amp = hslider("MM_Matrix/s13_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s14_d08_amp = hslider("MM_Matrix/s14_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s15_d08_amp = hslider("MM_Matrix/s15_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s16_d08_amp = hslider("MM_Matrix/s16_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s17_d08_amp = hslider("MM_Matrix/s17_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s18_d08_amp = hslider("MM_Matrix/s18_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s19_d08_amp = hslider("MM_Matrix/s19_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s20_d08_amp = hslider("MM_Matrix/s20_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s21_d08_amp = hslider("MM_Matrix/s21_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s22_d08_amp = hslider("MM_Matrix/s22_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s23_d08_amp = hslider("MM_Matrix/s23_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s24_d08_amp = hslider("MM_Matrix/s24_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s25_d08_amp = hslider("MM_Matrix/s25_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s26_d08_amp = hslider("MM_Matrix/s26_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s27_d08_amp = hslider("MM_Matrix/s27_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s28_d08_amp = hslider("MM_Matrix/s28_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s29_d08_amp = hslider("MM_Matrix/s29_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s30_d08_amp = hslider("MM_Matrix/s30_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s31_d08_amp = hslider("MM_Matrix/s31_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s32_d08_amp = hslider("MM_Matrix/s32_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s33_d08_amp = hslider("MM_Matrix/s33_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s34_d08_amp = hslider("MM_Matrix/s34_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s35_d08_amp = hslider("MM_Matrix/s35_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s36_d08_amp = hslider("MM_Matrix/s36_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s37_d08_amp = hslider("MM_Matrix/s37_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s38_d08_amp = hslider("MM_Matrix/s38_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s39_d08_amp = hslider("MM_Matrix/s39_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s40_d08_amp = hslider("MM_Matrix/s40_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s41_d08_amp = hslider("MM_Matrix/s41_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s42_d08_amp = hslider("MM_Matrix/s42_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s43_d08_amp = hslider("MM_Matrix/s43_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s44_d08_amp = hslider("MM_Matrix/s44_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s45_d08_amp = hslider("MM_Matrix/s45_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s46_d08_amp = hslider("MM_Matrix/s46_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s47_d08_amp = hslider("MM_Matrix/s47_d08_amp", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 9 = pan +amt_s00_d09_pan = hslider("MM_Matrix/s00_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s01_d09_pan = hslider("MM_Matrix/s01_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s02_d09_pan = hslider("MM_Matrix/s02_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s03_d09_pan = hslider("MM_Matrix/s03_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s04_d09_pan = hslider("MM_Matrix/s04_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s05_d09_pan = hslider("MM_Matrix/s05_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s06_d09_pan = hslider("MM_Matrix/s06_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s07_d09_pan = hslider("MM_Matrix/s07_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s08_d09_pan = hslider("MM_Matrix/s08_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s09_d09_pan = hslider("MM_Matrix/s09_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s10_d09_pan = hslider("MM_Matrix/s10_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s11_d09_pan = hslider("MM_Matrix/s11_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s12_d09_pan = hslider("MM_Matrix/s12_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s13_d09_pan = hslider("MM_Matrix/s13_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s14_d09_pan = hslider("MM_Matrix/s14_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s15_d09_pan = hslider("MM_Matrix/s15_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s16_d09_pan = hslider("MM_Matrix/s16_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s17_d09_pan = hslider("MM_Matrix/s17_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s18_d09_pan = hslider("MM_Matrix/s18_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s19_d09_pan = hslider("MM_Matrix/s19_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s20_d09_pan = hslider("MM_Matrix/s20_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s21_d09_pan = hslider("MM_Matrix/s21_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s22_d09_pan = hslider("MM_Matrix/s22_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s23_d09_pan = hslider("MM_Matrix/s23_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s24_d09_pan = hslider("MM_Matrix/s24_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s25_d09_pan = hslider("MM_Matrix/s25_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s26_d09_pan = hslider("MM_Matrix/s26_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s27_d09_pan = hslider("MM_Matrix/s27_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s28_d09_pan = hslider("MM_Matrix/s28_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s29_d09_pan = hslider("MM_Matrix/s29_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s30_d09_pan = hslider("MM_Matrix/s30_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s31_d09_pan = hslider("MM_Matrix/s31_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s32_d09_pan = hslider("MM_Matrix/s32_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s33_d09_pan = hslider("MM_Matrix/s33_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s34_d09_pan = hslider("MM_Matrix/s34_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s35_d09_pan = hslider("MM_Matrix/s35_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s36_d09_pan = hslider("MM_Matrix/s36_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s37_d09_pan = hslider("MM_Matrix/s37_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s38_d09_pan = hslider("MM_Matrix/s38_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s39_d09_pan = hslider("MM_Matrix/s39_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s40_d09_pan = hslider("MM_Matrix/s40_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s41_d09_pan = hslider("MM_Matrix/s41_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s42_d09_pan = hslider("MM_Matrix/s42_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s43_d09_pan = hslider("MM_Matrix/s43_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s44_d09_pan = hslider("MM_Matrix/s44_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s45_d09_pan = hslider("MM_Matrix/s45_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s46_d09_pan = hslider("MM_Matrix/s46_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s47_d09_pan = hslider("MM_Matrix/s47_d09_pan", 0.0, -1.0, 1.0, 0.001); + +// --------------------------------------------------------------------------- +// Destination signals — one per modulation destination. Each is a 48-term +// weighted sum of sources × amounts. The `gate` argument is threaded through +// so that mp.src??(gate) can drive ADSR envelopes. +// --------------------------------------------------------------------------- + +mod_pitch(gate) = + mp.src00(gate) * amt_s00_d00_pitch + + mp.src01(gate) * amt_s01_d00_pitch + + mp.src02(gate) * amt_s02_d00_pitch + + mp.src03(gate) * amt_s03_d00_pitch + + mp.src04(gate) * amt_s04_d00_pitch + + mp.src05(gate) * amt_s05_d00_pitch + + mp.src06(gate) * amt_s06_d00_pitch + + mp.src07(gate) * amt_s07_d00_pitch + + mp.src08(gate) * amt_s08_d00_pitch + + mp.src09(gate) * amt_s09_d00_pitch + + mp.src10(gate) * amt_s10_d00_pitch + + mp.src11(gate) * amt_s11_d00_pitch + + mp.src12(gate) * amt_s12_d00_pitch + + mp.src13(gate) * amt_s13_d00_pitch + + mp.src14(gate) * amt_s14_d00_pitch + + mp.src15(gate) * amt_s15_d00_pitch + + mp.src16(gate) * amt_s16_d00_pitch + + mp.src17(gate) * amt_s17_d00_pitch + + mp.src18(gate) * amt_s18_d00_pitch + + mp.src19(gate) * amt_s19_d00_pitch + + mp.src20(gate) * amt_s20_d00_pitch + + mp.src21(gate) * amt_s21_d00_pitch + + mp.src22(gate) * amt_s22_d00_pitch + + mp.src23(gate) * amt_s23_d00_pitch + + mp.src24(gate) * amt_s24_d00_pitch + + mp.src25(gate) * amt_s25_d00_pitch + + mp.src26(gate) * amt_s26_d00_pitch + + mp.src27(gate) * amt_s27_d00_pitch + + mp.src28(gate) * amt_s28_d00_pitch + + mp.src29(gate) * amt_s29_d00_pitch + + mp.src30(gate) * amt_s30_d00_pitch + + mp.src31(gate) * amt_s31_d00_pitch + + mp.src32(gate) * amt_s32_d00_pitch + + mp.src33(gate) * amt_s33_d00_pitch + + mp.src34(gate) * amt_s34_d00_pitch + + mp.src35(gate) * amt_s35_d00_pitch + + mp.src36(gate) * amt_s36_d00_pitch + + mp.src37(gate) * amt_s37_d00_pitch + + mp.src38(gate) * amt_s38_d00_pitch + + mp.src39(gate) * amt_s39_d00_pitch + + mp.src40(gate) * amt_s40_d00_pitch + + mp.src41(gate) * amt_s41_d00_pitch + + mp.src42(gate) * amt_s42_d00_pitch + + mp.src43(gate) * amt_s43_d00_pitch + + mp.src44(gate) * amt_s44_d00_pitch + + mp.src45(gate) * amt_s45_d00_pitch + + mp.src46(gate) * amt_s46_d00_pitch + + mp.src47(gate) * amt_s47_d00_pitch; + +mod_op1_level(gate) = + mp.src00(gate) * amt_s00_d01_op1_level + + mp.src01(gate) * amt_s01_d01_op1_level + + mp.src02(gate) * amt_s02_d01_op1_level + + mp.src03(gate) * amt_s03_d01_op1_level + + mp.src04(gate) * amt_s04_d01_op1_level + + mp.src05(gate) * amt_s05_d01_op1_level + + mp.src06(gate) * amt_s06_d01_op1_level + + mp.src07(gate) * amt_s07_d01_op1_level + + mp.src08(gate) * amt_s08_d01_op1_level + + mp.src09(gate) * amt_s09_d01_op1_level + + mp.src10(gate) * amt_s10_d01_op1_level + + mp.src11(gate) * amt_s11_d01_op1_level + + mp.src12(gate) * amt_s12_d01_op1_level + + mp.src13(gate) * amt_s13_d01_op1_level + + mp.src14(gate) * amt_s14_d01_op1_level + + mp.src15(gate) * amt_s15_d01_op1_level + + mp.src16(gate) * amt_s16_d01_op1_level + + mp.src17(gate) * amt_s17_d01_op1_level + + mp.src18(gate) * amt_s18_d01_op1_level + + mp.src19(gate) * amt_s19_d01_op1_level + + mp.src20(gate) * amt_s20_d01_op1_level + + mp.src21(gate) * amt_s21_d01_op1_level + + mp.src22(gate) * amt_s22_d01_op1_level + + mp.src23(gate) * amt_s23_d01_op1_level + + mp.src24(gate) * amt_s24_d01_op1_level + + mp.src25(gate) * amt_s25_d01_op1_level + + mp.src26(gate) * amt_s26_d01_op1_level + + mp.src27(gate) * amt_s27_d01_op1_level + + mp.src28(gate) * amt_s28_d01_op1_level + + mp.src29(gate) * amt_s29_d01_op1_level + + mp.src30(gate) * amt_s30_d01_op1_level + + mp.src31(gate) * amt_s31_d01_op1_level + + mp.src32(gate) * amt_s32_d01_op1_level + + mp.src33(gate) * amt_s33_d01_op1_level + + mp.src34(gate) * amt_s34_d01_op1_level + + mp.src35(gate) * amt_s35_d01_op1_level + + mp.src36(gate) * amt_s36_d01_op1_level + + mp.src37(gate) * amt_s37_d01_op1_level + + mp.src38(gate) * amt_s38_d01_op1_level + + mp.src39(gate) * amt_s39_d01_op1_level + + mp.src40(gate) * amt_s40_d01_op1_level + + mp.src41(gate) * amt_s41_d01_op1_level + + mp.src42(gate) * amt_s42_d01_op1_level + + mp.src43(gate) * amt_s43_d01_op1_level + + mp.src44(gate) * amt_s44_d01_op1_level + + mp.src45(gate) * amt_s45_d01_op1_level + + mp.src46(gate) * amt_s46_d01_op1_level + + mp.src47(gate) * amt_s47_d01_op1_level; + +mod_op2_level(gate) = + mp.src00(gate) * amt_s00_d02_op2_level + + mp.src01(gate) * amt_s01_d02_op2_level + + mp.src02(gate) * amt_s02_d02_op2_level + + mp.src03(gate) * amt_s03_d02_op2_level + + mp.src04(gate) * amt_s04_d02_op2_level + + mp.src05(gate) * amt_s05_d02_op2_level + + mp.src06(gate) * amt_s06_d02_op2_level + + mp.src07(gate) * amt_s07_d02_op2_level + + mp.src08(gate) * amt_s08_d02_op2_level + + mp.src09(gate) * amt_s09_d02_op2_level + + mp.src10(gate) * amt_s10_d02_op2_level + + mp.src11(gate) * amt_s11_d02_op2_level + + mp.src12(gate) * amt_s12_d02_op2_level + + mp.src13(gate) * amt_s13_d02_op2_level + + mp.src14(gate) * amt_s14_d02_op2_level + + mp.src15(gate) * amt_s15_d02_op2_level + + mp.src16(gate) * amt_s16_d02_op2_level + + mp.src17(gate) * amt_s17_d02_op2_level + + mp.src18(gate) * amt_s18_d02_op2_level + + mp.src19(gate) * amt_s19_d02_op2_level + + mp.src20(gate) * amt_s20_d02_op2_level + + mp.src21(gate) * amt_s21_d02_op2_level + + mp.src22(gate) * amt_s22_d02_op2_level + + mp.src23(gate) * amt_s23_d02_op2_level + + mp.src24(gate) * amt_s24_d02_op2_level + + mp.src25(gate) * amt_s25_d02_op2_level + + mp.src26(gate) * amt_s26_d02_op2_level + + mp.src27(gate) * amt_s27_d02_op2_level + + mp.src28(gate) * amt_s28_d02_op2_level + + mp.src29(gate) * amt_s29_d02_op2_level + + mp.src30(gate) * amt_s30_d02_op2_level + + mp.src31(gate) * amt_s31_d02_op2_level + + mp.src32(gate) * amt_s32_d02_op2_level + + mp.src33(gate) * amt_s33_d02_op2_level + + mp.src34(gate) * amt_s34_d02_op2_level + + mp.src35(gate) * amt_s35_d02_op2_level + + mp.src36(gate) * amt_s36_d02_op2_level + + mp.src37(gate) * amt_s37_d02_op2_level + + mp.src38(gate) * amt_s38_d02_op2_level + + mp.src39(gate) * amt_s39_d02_op2_level + + mp.src40(gate) * amt_s40_d02_op2_level + + mp.src41(gate) * amt_s41_d02_op2_level + + mp.src42(gate) * amt_s42_d02_op2_level + + mp.src43(gate) * amt_s43_d02_op2_level + + mp.src44(gate) * amt_s44_d02_op2_level + + mp.src45(gate) * amt_s45_d02_op2_level + + mp.src46(gate) * amt_s46_d02_op2_level + + mp.src47(gate) * amt_s47_d02_op2_level; + +mod_op3_level(gate) = + mp.src00(gate) * amt_s00_d03_op3_level + + mp.src01(gate) * amt_s01_d03_op3_level + + mp.src02(gate) * amt_s02_d03_op3_level + + mp.src03(gate) * amt_s03_d03_op3_level + + mp.src04(gate) * amt_s04_d03_op3_level + + mp.src05(gate) * amt_s05_d03_op3_level + + mp.src06(gate) * amt_s06_d03_op3_level + + mp.src07(gate) * amt_s07_d03_op3_level + + mp.src08(gate) * amt_s08_d03_op3_level + + mp.src09(gate) * amt_s09_d03_op3_level + + mp.src10(gate) * amt_s10_d03_op3_level + + mp.src11(gate) * amt_s11_d03_op3_level + + mp.src12(gate) * amt_s12_d03_op3_level + + mp.src13(gate) * amt_s13_d03_op3_level + + mp.src14(gate) * amt_s14_d03_op3_level + + mp.src15(gate) * amt_s15_d03_op3_level + + mp.src16(gate) * amt_s16_d03_op3_level + + mp.src17(gate) * amt_s17_d03_op3_level + + mp.src18(gate) * amt_s18_d03_op3_level + + mp.src19(gate) * amt_s19_d03_op3_level + + mp.src20(gate) * amt_s20_d03_op3_level + + mp.src21(gate) * amt_s21_d03_op3_level + + mp.src22(gate) * amt_s22_d03_op3_level + + mp.src23(gate) * amt_s23_d03_op3_level + + mp.src24(gate) * amt_s24_d03_op3_level + + mp.src25(gate) * amt_s25_d03_op3_level + + mp.src26(gate) * amt_s26_d03_op3_level + + mp.src27(gate) * amt_s27_d03_op3_level + + mp.src28(gate) * amt_s28_d03_op3_level + + mp.src29(gate) * amt_s29_d03_op3_level + + mp.src30(gate) * amt_s30_d03_op3_level + + mp.src31(gate) * amt_s31_d03_op3_level + + mp.src32(gate) * amt_s32_d03_op3_level + + mp.src33(gate) * amt_s33_d03_op3_level + + mp.src34(gate) * amt_s34_d03_op3_level + + mp.src35(gate) * amt_s35_d03_op3_level + + mp.src36(gate) * amt_s36_d03_op3_level + + mp.src37(gate) * amt_s37_d03_op3_level + + mp.src38(gate) * amt_s38_d03_op3_level + + mp.src39(gate) * amt_s39_d03_op3_level + + mp.src40(gate) * amt_s40_d03_op3_level + + mp.src41(gate) * amt_s41_d03_op3_level + + mp.src42(gate) * amt_s42_d03_op3_level + + mp.src43(gate) * amt_s43_d03_op3_level + + mp.src44(gate) * amt_s44_d03_op3_level + + mp.src45(gate) * amt_s45_d03_op3_level + + mp.src46(gate) * amt_s46_d03_op3_level + + mp.src47(gate) * amt_s47_d03_op3_level; + +mod_op4_level(gate) = + mp.src00(gate) * amt_s00_d04_op4_level + + mp.src01(gate) * amt_s01_d04_op4_level + + mp.src02(gate) * amt_s02_d04_op4_level + + mp.src03(gate) * amt_s03_d04_op4_level + + mp.src04(gate) * amt_s04_d04_op4_level + + mp.src05(gate) * amt_s05_d04_op4_level + + mp.src06(gate) * amt_s06_d04_op4_level + + mp.src07(gate) * amt_s07_d04_op4_level + + mp.src08(gate) * amt_s08_d04_op4_level + + mp.src09(gate) * amt_s09_d04_op4_level + + mp.src10(gate) * amt_s10_d04_op4_level + + mp.src11(gate) * amt_s11_d04_op4_level + + mp.src12(gate) * amt_s12_d04_op4_level + + mp.src13(gate) * amt_s13_d04_op4_level + + mp.src14(gate) * amt_s14_d04_op4_level + + mp.src15(gate) * amt_s15_d04_op4_level + + mp.src16(gate) * amt_s16_d04_op4_level + + mp.src17(gate) * amt_s17_d04_op4_level + + mp.src18(gate) * amt_s18_d04_op4_level + + mp.src19(gate) * amt_s19_d04_op4_level + + mp.src20(gate) * amt_s20_d04_op4_level + + mp.src21(gate) * amt_s21_d04_op4_level + + mp.src22(gate) * amt_s22_d04_op4_level + + mp.src23(gate) * amt_s23_d04_op4_level + + mp.src24(gate) * amt_s24_d04_op4_level + + mp.src25(gate) * amt_s25_d04_op4_level + + mp.src26(gate) * amt_s26_d04_op4_level + + mp.src27(gate) * amt_s27_d04_op4_level + + mp.src28(gate) * amt_s28_d04_op4_level + + mp.src29(gate) * amt_s29_d04_op4_level + + mp.src30(gate) * amt_s30_d04_op4_level + + mp.src31(gate) * amt_s31_d04_op4_level + + mp.src32(gate) * amt_s32_d04_op4_level + + mp.src33(gate) * amt_s33_d04_op4_level + + mp.src34(gate) * amt_s34_d04_op4_level + + mp.src35(gate) * amt_s35_d04_op4_level + + mp.src36(gate) * amt_s36_d04_op4_level + + mp.src37(gate) * amt_s37_d04_op4_level + + mp.src38(gate) * amt_s38_d04_op4_level + + mp.src39(gate) * amt_s39_d04_op4_level + + mp.src40(gate) * amt_s40_d04_op4_level + + mp.src41(gate) * amt_s41_d04_op4_level + + mp.src42(gate) * amt_s42_d04_op4_level + + mp.src43(gate) * amt_s43_d04_op4_level + + mp.src44(gate) * amt_s44_d04_op4_level + + mp.src45(gate) * amt_s45_d04_op4_level + + mp.src46(gate) * amt_s46_d04_op4_level + + mp.src47(gate) * amt_s47_d04_op4_level; + +mod_cross_mod_global(gate) = + mp.src00(gate) * amt_s00_d05_cross_mod_global + + mp.src01(gate) * amt_s01_d05_cross_mod_global + + mp.src02(gate) * amt_s02_d05_cross_mod_global + + mp.src03(gate) * amt_s03_d05_cross_mod_global + + mp.src04(gate) * amt_s04_d05_cross_mod_global + + mp.src05(gate) * amt_s05_d05_cross_mod_global + + mp.src06(gate) * amt_s06_d05_cross_mod_global + + mp.src07(gate) * amt_s07_d05_cross_mod_global + + mp.src08(gate) * amt_s08_d05_cross_mod_global + + mp.src09(gate) * amt_s09_d05_cross_mod_global + + mp.src10(gate) * amt_s10_d05_cross_mod_global + + mp.src11(gate) * amt_s11_d05_cross_mod_global + + mp.src12(gate) * amt_s12_d05_cross_mod_global + + mp.src13(gate) * amt_s13_d05_cross_mod_global + + mp.src14(gate) * amt_s14_d05_cross_mod_global + + mp.src15(gate) * amt_s15_d05_cross_mod_global + + mp.src16(gate) * amt_s16_d05_cross_mod_global + + mp.src17(gate) * amt_s17_d05_cross_mod_global + + mp.src18(gate) * amt_s18_d05_cross_mod_global + + mp.src19(gate) * amt_s19_d05_cross_mod_global + + mp.src20(gate) * amt_s20_d05_cross_mod_global + + mp.src21(gate) * amt_s21_d05_cross_mod_global + + mp.src22(gate) * amt_s22_d05_cross_mod_global + + mp.src23(gate) * amt_s23_d05_cross_mod_global + + mp.src24(gate) * amt_s24_d05_cross_mod_global + + mp.src25(gate) * amt_s25_d05_cross_mod_global + + mp.src26(gate) * amt_s26_d05_cross_mod_global + + mp.src27(gate) * amt_s27_d05_cross_mod_global + + mp.src28(gate) * amt_s28_d05_cross_mod_global + + mp.src29(gate) * amt_s29_d05_cross_mod_global + + mp.src30(gate) * amt_s30_d05_cross_mod_global + + mp.src31(gate) * amt_s31_d05_cross_mod_global + + mp.src32(gate) * amt_s32_d05_cross_mod_global + + mp.src33(gate) * amt_s33_d05_cross_mod_global + + mp.src34(gate) * amt_s34_d05_cross_mod_global + + mp.src35(gate) * amt_s35_d05_cross_mod_global + + mp.src36(gate) * amt_s36_d05_cross_mod_global + + mp.src37(gate) * amt_s37_d05_cross_mod_global + + mp.src38(gate) * amt_s38_d05_cross_mod_global + + mp.src39(gate) * amt_s39_d05_cross_mod_global + + mp.src40(gate) * amt_s40_d05_cross_mod_global + + mp.src41(gate) * amt_s41_d05_cross_mod_global + + mp.src42(gate) * amt_s42_d05_cross_mod_global + + mp.src43(gate) * amt_s43_d05_cross_mod_global + + mp.src44(gate) * amt_s44_d05_cross_mod_global + + mp.src45(gate) * amt_s45_d05_cross_mod_global + + mp.src46(gate) * amt_s46_d05_cross_mod_global + + mp.src47(gate) * amt_s47_d05_cross_mod_global; + +mod_feedback_global(gate) = + mp.src00(gate) * amt_s00_d06_feedback_global + + mp.src01(gate) * amt_s01_d06_feedback_global + + mp.src02(gate) * amt_s02_d06_feedback_global + + mp.src03(gate) * amt_s03_d06_feedback_global + + mp.src04(gate) * amt_s04_d06_feedback_global + + mp.src05(gate) * amt_s05_d06_feedback_global + + mp.src06(gate) * amt_s06_d06_feedback_global + + mp.src07(gate) * amt_s07_d06_feedback_global + + mp.src08(gate) * amt_s08_d06_feedback_global + + mp.src09(gate) * amt_s09_d06_feedback_global + + mp.src10(gate) * amt_s10_d06_feedback_global + + mp.src11(gate) * amt_s11_d06_feedback_global + + mp.src12(gate) * amt_s12_d06_feedback_global + + mp.src13(gate) * amt_s13_d06_feedback_global + + mp.src14(gate) * amt_s14_d06_feedback_global + + mp.src15(gate) * amt_s15_d06_feedback_global + + mp.src16(gate) * amt_s16_d06_feedback_global + + mp.src17(gate) * amt_s17_d06_feedback_global + + mp.src18(gate) * amt_s18_d06_feedback_global + + mp.src19(gate) * amt_s19_d06_feedback_global + + mp.src20(gate) * amt_s20_d06_feedback_global + + mp.src21(gate) * amt_s21_d06_feedback_global + + mp.src22(gate) * amt_s22_d06_feedback_global + + mp.src23(gate) * amt_s23_d06_feedback_global + + mp.src24(gate) * amt_s24_d06_feedback_global + + mp.src25(gate) * amt_s25_d06_feedback_global + + mp.src26(gate) * amt_s26_d06_feedback_global + + mp.src27(gate) * amt_s27_d06_feedback_global + + mp.src28(gate) * amt_s28_d06_feedback_global + + mp.src29(gate) * amt_s29_d06_feedback_global + + mp.src30(gate) * amt_s30_d06_feedback_global + + mp.src31(gate) * amt_s31_d06_feedback_global + + mp.src32(gate) * amt_s32_d06_feedback_global + + mp.src33(gate) * amt_s33_d06_feedback_global + + mp.src34(gate) * amt_s34_d06_feedback_global + + mp.src35(gate) * amt_s35_d06_feedback_global + + mp.src36(gate) * amt_s36_d06_feedback_global + + mp.src37(gate) * amt_s37_d06_feedback_global + + mp.src38(gate) * amt_s38_d06_feedback_global + + mp.src39(gate) * amt_s39_d06_feedback_global + + mp.src40(gate) * amt_s40_d06_feedback_global + + mp.src41(gate) * amt_s41_d06_feedback_global + + mp.src42(gate) * amt_s42_d06_feedback_global + + mp.src43(gate) * amt_s43_d06_feedback_global + + mp.src44(gate) * amt_s44_d06_feedback_global + + mp.src45(gate) * amt_s45_d06_feedback_global + + mp.src46(gate) * amt_s46_d06_feedback_global + + mp.src47(gate) * amt_s47_d06_feedback_global; + +mod_global_ratio(gate) = + mp.src00(gate) * amt_s00_d07_global_ratio + + mp.src01(gate) * amt_s01_d07_global_ratio + + mp.src02(gate) * amt_s02_d07_global_ratio + + mp.src03(gate) * amt_s03_d07_global_ratio + + mp.src04(gate) * amt_s04_d07_global_ratio + + mp.src05(gate) * amt_s05_d07_global_ratio + + mp.src06(gate) * amt_s06_d07_global_ratio + + mp.src07(gate) * amt_s07_d07_global_ratio + + mp.src08(gate) * amt_s08_d07_global_ratio + + mp.src09(gate) * amt_s09_d07_global_ratio + + mp.src10(gate) * amt_s10_d07_global_ratio + + mp.src11(gate) * amt_s11_d07_global_ratio + + mp.src12(gate) * amt_s12_d07_global_ratio + + mp.src13(gate) * amt_s13_d07_global_ratio + + mp.src14(gate) * amt_s14_d07_global_ratio + + mp.src15(gate) * amt_s15_d07_global_ratio + + mp.src16(gate) * amt_s16_d07_global_ratio + + mp.src17(gate) * amt_s17_d07_global_ratio + + mp.src18(gate) * amt_s18_d07_global_ratio + + mp.src19(gate) * amt_s19_d07_global_ratio + + mp.src20(gate) * amt_s20_d07_global_ratio + + mp.src21(gate) * amt_s21_d07_global_ratio + + mp.src22(gate) * amt_s22_d07_global_ratio + + mp.src23(gate) * amt_s23_d07_global_ratio + + mp.src24(gate) * amt_s24_d07_global_ratio + + mp.src25(gate) * amt_s25_d07_global_ratio + + mp.src26(gate) * amt_s26_d07_global_ratio + + mp.src27(gate) * amt_s27_d07_global_ratio + + mp.src28(gate) * amt_s28_d07_global_ratio + + mp.src29(gate) * amt_s29_d07_global_ratio + + mp.src30(gate) * amt_s30_d07_global_ratio + + mp.src31(gate) * amt_s31_d07_global_ratio + + mp.src32(gate) * amt_s32_d07_global_ratio + + mp.src33(gate) * amt_s33_d07_global_ratio + + mp.src34(gate) * amt_s34_d07_global_ratio + + mp.src35(gate) * amt_s35_d07_global_ratio + + mp.src36(gate) * amt_s36_d07_global_ratio + + mp.src37(gate) * amt_s37_d07_global_ratio + + mp.src38(gate) * amt_s38_d07_global_ratio + + mp.src39(gate) * amt_s39_d07_global_ratio + + mp.src40(gate) * amt_s40_d07_global_ratio + + mp.src41(gate) * amt_s41_d07_global_ratio + + mp.src42(gate) * amt_s42_d07_global_ratio + + mp.src43(gate) * amt_s43_d07_global_ratio + + mp.src44(gate) * amt_s44_d07_global_ratio + + mp.src45(gate) * amt_s45_d07_global_ratio + + mp.src46(gate) * amt_s46_d07_global_ratio + + mp.src47(gate) * amt_s47_d07_global_ratio; + +mod_amp(gate) = + mp.src00(gate) * amt_s00_d08_amp + + mp.src01(gate) * amt_s01_d08_amp + + mp.src02(gate) * amt_s02_d08_amp + + mp.src03(gate) * amt_s03_d08_amp + + mp.src04(gate) * amt_s04_d08_amp + + mp.src05(gate) * amt_s05_d08_amp + + mp.src06(gate) * amt_s06_d08_amp + + mp.src07(gate) * amt_s07_d08_amp + + mp.src08(gate) * amt_s08_d08_amp + + mp.src09(gate) * amt_s09_d08_amp + + mp.src10(gate) * amt_s10_d08_amp + + mp.src11(gate) * amt_s11_d08_amp + + mp.src12(gate) * amt_s12_d08_amp + + mp.src13(gate) * amt_s13_d08_amp + + mp.src14(gate) * amt_s14_d08_amp + + mp.src15(gate) * amt_s15_d08_amp + + mp.src16(gate) * amt_s16_d08_amp + + mp.src17(gate) * amt_s17_d08_amp + + mp.src18(gate) * amt_s18_d08_amp + + mp.src19(gate) * amt_s19_d08_amp + + mp.src20(gate) * amt_s20_d08_amp + + mp.src21(gate) * amt_s21_d08_amp + + mp.src22(gate) * amt_s22_d08_amp + + mp.src23(gate) * amt_s23_d08_amp + + mp.src24(gate) * amt_s24_d08_amp + + mp.src25(gate) * amt_s25_d08_amp + + mp.src26(gate) * amt_s26_d08_amp + + mp.src27(gate) * amt_s27_d08_amp + + mp.src28(gate) * amt_s28_d08_amp + + mp.src29(gate) * amt_s29_d08_amp + + mp.src30(gate) * amt_s30_d08_amp + + mp.src31(gate) * amt_s31_d08_amp + + mp.src32(gate) * amt_s32_d08_amp + + mp.src33(gate) * amt_s33_d08_amp + + mp.src34(gate) * amt_s34_d08_amp + + mp.src35(gate) * amt_s35_d08_amp + + mp.src36(gate) * amt_s36_d08_amp + + mp.src37(gate) * amt_s37_d08_amp + + mp.src38(gate) * amt_s38_d08_amp + + mp.src39(gate) * amt_s39_d08_amp + + mp.src40(gate) * amt_s40_d08_amp + + mp.src41(gate) * amt_s41_d08_amp + + mp.src42(gate) * amt_s42_d08_amp + + mp.src43(gate) * amt_s43_d08_amp + + mp.src44(gate) * amt_s44_d08_amp + + mp.src45(gate) * amt_s45_d08_amp + + mp.src46(gate) * amt_s46_d08_amp + + mp.src47(gate) * amt_s47_d08_amp; + +mod_pan(gate) = + mp.src00(gate) * amt_s00_d09_pan + + mp.src01(gate) * amt_s01_d09_pan + + mp.src02(gate) * amt_s02_d09_pan + + mp.src03(gate) * amt_s03_d09_pan + + mp.src04(gate) * amt_s04_d09_pan + + mp.src05(gate) * amt_s05_d09_pan + + mp.src06(gate) * amt_s06_d09_pan + + mp.src07(gate) * amt_s07_d09_pan + + mp.src08(gate) * amt_s08_d09_pan + + mp.src09(gate) * amt_s09_d09_pan + + mp.src10(gate) * amt_s10_d09_pan + + mp.src11(gate) * amt_s11_d09_pan + + mp.src12(gate) * amt_s12_d09_pan + + mp.src13(gate) * amt_s13_d09_pan + + mp.src14(gate) * amt_s14_d09_pan + + mp.src15(gate) * amt_s15_d09_pan + + mp.src16(gate) * amt_s16_d09_pan + + mp.src17(gate) * amt_s17_d09_pan + + mp.src18(gate) * amt_s18_d09_pan + + mp.src19(gate) * amt_s19_d09_pan + + mp.src20(gate) * amt_s20_d09_pan + + mp.src21(gate) * amt_s21_d09_pan + + mp.src22(gate) * amt_s22_d09_pan + + mp.src23(gate) * amt_s23_d09_pan + + mp.src24(gate) * amt_s24_d09_pan + + mp.src25(gate) * amt_s25_d09_pan + + mp.src26(gate) * amt_s26_d09_pan + + mp.src27(gate) * amt_s27_d09_pan + + mp.src28(gate) * amt_s28_d09_pan + + mp.src29(gate) * amt_s29_d09_pan + + mp.src30(gate) * amt_s30_d09_pan + + mp.src31(gate) * amt_s31_d09_pan + + mp.src32(gate) * amt_s32_d09_pan + + mp.src33(gate) * amt_s33_d09_pan + + mp.src34(gate) * amt_s34_d09_pan + + mp.src35(gate) * amt_s35_d09_pan + + mp.src36(gate) * amt_s36_d09_pan + + mp.src37(gate) * amt_s37_d09_pan + + mp.src38(gate) * amt_s38_d09_pan + + mp.src39(gate) * amt_s39_d09_pan + + mp.src40(gate) * amt_s40_d09_pan + + mp.src41(gate) * amt_s41_d09_pan + + mp.src42(gate) * amt_s42_d09_pan + + mp.src43(gate) * amt_s43_d09_pan + + mp.src44(gate) * amt_s44_d09_pan + + mp.src45(gate) * amt_s45_d09_pan + + mp.src46(gate) * amt_s46_d09_pan + + mp.src47(gate) * amt_s47_d09_pan; + +// --------------------------------------------------------------------------- +// Derived signals +// --------------------------------------------------------------------------- + +cent2ratio(c) = pow(2.0, c / 1200.0); +semi2ratio(s) = pow(2.0, s / 12.0); + +// Base frequency: fine tune + pitch mod (semitones, ±12) +base_freq = freq * cent2ratio(fine_tune) * semi2ratio(mod_pitch(gate) * 12.0); + +// Velocity gain — keeps _vel alive +vel_gain = (1.0 - 0.3) + 0.3 * vel; + +// --------------------------------------------------------------------------- +// Effective per-operator ratios and levels (mod applied) +// global_ratio mod is an additive ratio offset (±8) +// --------------------------------------------------------------------------- +ratio_offset = mod_global_ratio(gate) * 8.0; +r1 = max(0.01, op1_ratio + ratio_offset); +r2 = max(0.01, op2_ratio + ratio_offset); +r3 = max(0.01, op3_ratio + ratio_offset); +r4 = max(0.01, op4_ratio + ratio_offset); + +lev1 = max(0.0, min(1.0, op1_level + mod_op1_level(gate))); +lev2 = max(0.0, min(1.0, op2_level + mod_op2_level(gate))); +lev3 = max(0.0, min(1.0, op3_level + mod_op3_level(gate))); +lev4 = max(0.0, min(1.0, op4_level + mod_op4_level(gate))); + +// --------------------------------------------------------------------------- +// Global multipliers for cross-mod and feedback. +// (1 + mod) in [0, 2] roughly; clamp to stay sane. +// --------------------------------------------------------------------------- +cross_mul = max(0.0, 1.0 + mod_cross_mod_global(gate)); +fb_mul = max(0.0, 1.0 + mod_feedback_global(gate)); + +m12e = m12 * cross_mul; m13e = m13 * cross_mul; m14e = m14 * cross_mul; +m21e = m21 * cross_mul; m23e = m23 * cross_mul; m24e = m24 * cross_mul; +m31e = m31 * cross_mul; m32e = m32 * cross_mul; m34e = m34 * cross_mul; +m41e = m41 * cross_mul; m42e = m42 * cross_mul; m43e = m43 * cross_mul; + +fb1e = fb1 * fb_mul; +fb2e = fb2 * fb_mul; +fb3e = fb3 * fb_mul; +fb4e = fb4 * fb_mul; + +// --------------------------------------------------------------------------- +// 4-operator FM bus — feedback loop via ~ on a 4-channel bus +// --------------------------------------------------------------------------- +fmbus(d1,d2,d3,d4) = + op1_out, op2_out, op3_out, op4_out +with { + f1 = base_freq * r1; + f2 = base_freq * r2; + f3 = base_freq * r3; + f4 = base_freq * r4; + + op1_out = lev1 * + os.osc(f1 + (m21e*d2 + m31e*d3 + m41e*d4 + fb1e*d1) * f1); + + op2_out = lev2 * + os.osc(f2 + (m12e*d1 + m32e*d3 + m42e*d4 + fb2e*d2) * f2); + + op3_out = lev3 * + os.osc(f3 + (m13e*d1 + m23e*d2 + m43e*d4 + fb3e*d3) * f3); + + op4_out = lev4 * + os.osc(f4 + (m14e*d1 + m24e*d2 + m34e*d3 + fb4e*d4) * f4); +}; + +// Route 4-channel bus through feedback loop, sum all ops +fm_out = (fmbus ~ (si.bus(4))) : (_, _, _, _) :> _; + +// --------------------------------------------------------------------------- +// Post-processing +// --------------------------------------------------------------------------- +soft_clip(x) = x / max(0.001, 1.0 + output_saturation * abs(x)); +hp_out(x) = fi.highpass(1, output_hp, x); + +// Master amplitude destination (route an ADSR here for VCA) +amp_val = max(0.0, min(1.0, mod_amp(gate))) * master_level * vel_gain * 0.25; + +// Pan +pan_val = max(-1.0, min(1.0, master_pan + mod_pan(gate))); +pan_l = cos((pan_val + 1.0) * 0.25 * ma.PI); +pan_r = sin((pan_val + 1.0) * 0.25 * ma.PI); + +// Stereo spread via slight detuning (apply after main FM sum) +spread_cents = stereo_spread * 5.0; +spread_l = cent2ratio(spread_cents); +spread_r = cent2ratio(0.0 - spread_cents); + +mono_post = fm_out * amp_val : soft_clip : hp_out; + +signal_L = mono_post * spread_l * pan_l; +signal_R = mono_post * spread_r * pan_r; + +process = signal_L, signal_R; diff --git a/playground/faust/modular-fm.json b/playground/faust/modular-fm.json new file mode 100644 index 0000000..cceebc4 --- /dev/null +++ b/playground/faust/modular-fm.json @@ -0,0 +1 @@ +{"name": "modular-fm","filename": "modular-fm.dsp","version": "2.79.3","compile_options": "-lang wasm -ct 1 -cn modular_fm -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0","library_list": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/stdfaust.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/maths.lib","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust/mod-pool.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/oscillators.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/platform.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/basics.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/envelopes.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/signals.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/filters.lib"],"include_pathnames": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust"],"size": 265316,"code": "Ly8gbW9kdWxhci1mbS5kc3Ag4oCUIDQtb3BlcmF0b3IgRk0gdm9pY2UgZm9yIHRoZSAiTW9kdWxhciIgbW9kZS4KLy8KLy8gQVVUTy1HRU5FUkFURUQgYnkgZ2VuLW1vZHVsYXItZHNwLnB5LiBETyBOT1QgRURJVCBCWSBIQU5ELgovLyBSZWdlbmVyYXRlIHdpdGg6Ci8vICAgICBjZCBwbGF5Z3JvdW5kL2ZhdXN0ICYmIHB5dGhvbjMgZ2VuLW1vZHVsYXItZHNwLnB5Ci8vCi8vIEF1ZGlvIHBhdGg6IDQgb3BzIHdpdGggMTItY2VsbCBjcm9zcy1tb2QgbWF0cml4IGFuZCBwZXItb3AgZmVlZGJhY2suCi8vIEFsbCBlbnZlbG9wZXMgYW5kIExGT3MgY29tZSBmcm9tIG1vZC1wb29sLmxpYiB2aWEgYSA0OC1zb3VyY2Ugw5cgMTAtZGVzdAovLyBtb2R1bGF0aW9uIG1hdHJpeC4gTm8gaW50ZXJuYWwgZW52cy9MRk9zLgovLwovLyBNb2R1bGF0aW9uIGRlc3RpbmF0aW9ucyAoMTApOgovLyAgICAgMCBwaXRjaCAgICAgICAgICAgICBzZW1pdG9uZXMgYWRkZWQgdG8gdGhlIGJhc2UgZnJlcXVlbmN5Ci8vICAgICAxIG9wMV9sZXZlbCAgICAgICAgIGFkZGVkIHRvIG9wMSBsZXZlbCBrbm9iCi8vICAgICAyIG9wMl9sZXZlbCAgICAgICAgIGFkZGVkIHRvIG9wMiBsZXZlbCBrbm9iCi8vICAgICAzIG9wM19sZXZlbCAgICAgICAgIGFkZGVkIHRvIG9wMyBsZXZlbCBrbm9iCi8vICAgICA0IG9wNF9sZXZlbCAgICAgICAgIGFkZGVkIHRvIG9wNCBsZXZlbCBrbm9iCi8vICAgICA1IGNyb3NzX21vZF9nbG9iYWwgIGdsb2JhbCBGTSBkZXB0aCBtdWx0aXBsaWVyIG9uIGFsbCAxMiBjcm9zcy1tb2QgY2VsbHMKLy8gICAgIDYgZmVlZGJhY2tfZ2xvYmFsICAgZ2xvYmFsIGZlZWRiYWNrIG11bHRpcGxpZXIgb24gYWxsIDQgc2VsZi1mZWVkYmFjayBjZWxscwovLyAgICAgNyBnbG9iYWxfcmF0aW8gICAgICBhZGRpdGl2ZSBzY2FsZSBmYWN0b3Igb24gYWxsIDQgb3BlcmF0b3IgcmF0aW9zCi8vICAgICA4IGFtcCAgICAgICAgICAgICAgIG1hc3RlciBhbXBsaXR1ZGUgZGVzdCAocm91dGUgYW4gQURTUiBoZXJlIGZvciBhIFZDQSBlbnYpCi8vICAgICA5IHBhbiAgICAgICAgICAgICAgIHN0ZXJlbyBiYWxhbmNlCi8vCi8vIEhpZGRlbiBjb250cm9scyAoZHJpdmVuIGJ5IG5vdGVPbi9ub3RlT2ZmLCBub3QgYnkgdGhlIE1MIGVuZ2luZSk6Ci8vICAgICBmcmVxLCBnYXRlLCBfdmVsCi8vCi8vIEJ1aWxkOgovLyAgICAgY2QgcGxheWdyb3VuZC9mYXVzdCAmJiAuL2J1aWxkLnNoCi8vCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaW1wb3J0KCJzdGRmYXVzdC5saWIiKTsKbXAgPSBsaWJyYXJ5KCJtb2QtcG9vbC5saWIiKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBIaWRkZW4gY29udHJvbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmZyZXEgPSBoc2xpZGVyKCIwX0hpZGRlbi9mcmVxW2hpZGRlbjoxXVt1bml0Okh6XSIsIDIyMCwgMjAsIDQwMDAsIDAuMDEpOwpnYXRlID0gYnV0dG9uKCIwX0hpZGRlbi9nYXRlW2hpZGRlbjoxXSIpOwp2ZWwgID0gaHNsaWRlcigiMF9IaWRkZW4vX3ZlbFtoaWRkZW46MV0iLCAwLjcsIDAuMCwgMS4wLCAwLjAwMSkgOiBzaS5zbW9vOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEdyb3VwIDEg4oCUIE9wZXJhdG9ycyAocmF0aW8gJiBsZXZlbCBwZXIgb3ApCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpvcDFfcmF0aW8gPSBoc2xpZGVyKCIxX09wZXJhdG9ycy8wMF9vcDFfcmF0aW8iLCAxLjAsIDAuMTI1LCAxNi4wLCAwLjAwMSk7Cm9wMV9sZXZlbCA9IGhzbGlkZXIoIjFfT3BlcmF0b3JzLzAxX29wMV9sZXZlbCIsIDAuOCwgMC4wLCAgIDEuMCwgIDAuMDAxKTsKb3AyX3JhdGlvID0gaHNsaWRlcigiMV9PcGVyYXRvcnMvMDJfb3AyX3JhdGlvIiwgMi4wLCAwLjEyNSwgMTYuMCwgMC4wMDEpOwpvcDJfbGV2ZWwgPSBoc2xpZGVyKCIxX09wZXJhdG9ycy8wM19vcDJfbGV2ZWwiLCAwLjYsIDAuMCwgICAxLjAsICAwLjAwMSk7Cm9wM19yYXRpbyA9IGhzbGlkZXIoIjFfT3BlcmF0b3JzLzA0X29wM19yYXRpbyIsIDMuMCwgMC4xMjUsIDE2LjAsIDAuMDAxKTsKb3AzX2xldmVsID0gaHNsaWRlcigiMV9PcGVyYXRvcnMvMDVfb3AzX2xldmVsIiwgMC40LCAwLjAsICAgMS4wLCAgMC4wMDEpOwpvcDRfcmF0aW8gPSBoc2xpZGVyKCIxX09wZXJhdG9ycy8wNl9vcDRfcmF0aW8iLCAwLjUsIDAuMTI1LCAxNi4wLCAwLjAwMSk7Cm9wNF9sZXZlbCA9IGhzbGlkZXIoIjFfT3BlcmF0b3JzLzA3X29wNF9sZXZlbCIsIDAuMywgMC4wLCAgIDEuMCwgIDAuMDAxKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBHcm91cCAyIOKAlCBDcm9zcy1tb2QgTWF0cml4IChtWFkgPSBvcCBYIG1vZHVsYXRlcyBvcCBZKQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KbTEyID0gaHNsaWRlcigiMl9Dcm9zc01vZC8wMF9tMTIiLCAwLjAsIDAuMCwgMTAuMCwgMC4wMDEpOwptMTMgPSBoc2xpZGVyKCIyX0Nyb3NzTW9kLzAxX20xMyIsIDAuMCwgMC4wLCAxMC4wLCAwLjAwMSk7Cm0xNCA9IGhzbGlkZXIoIjJfQ3Jvc3NNb2QvMDJfbTE0IiwgMC4wLCAwLjAsIDEwLjAsIDAuMDAxKTsKbTIxID0gaHNsaWRlcigiMl9Dcm9zc01vZC8wM19tMjEiLCAxLjAsIDAuMCwgMTAuMCwgMC4wMDEpOwptMjMgPSBoc2xpZGVyKCIyX0Nyb3NzTW9kLzA0X20yMyIsIDAuMCwgMC4wLCAxMC4wLCAwLjAwMSk7Cm0yNCA9IGhzbGlkZXIoIjJfQ3Jvc3NNb2QvMDVfbTI0IiwgMC4wLCAwLjAsIDEwLjAsIDAuMDAxKTsKbTMxID0gaHNsaWRlcigiMl9Dcm9zc01vZC8wNl9tMzEiLCAwLjAsIDAuMCwgMTAuMCwgMC4wMDEpOwptMzIgPSBoc2xpZGVyKCIyX0Nyb3NzTW9kLzA3X20zMiIsIDAuMCwgMC4wLCAxMC4wLCAwLjAwMSk7Cm0zNCA9IGhzbGlkZXIoIjJfQ3Jvc3NNb2QvMDhfbTM0IiwgMC4wLCAwLjAsIDEwLjAsIDAuMDAxKTsKbTQxID0gaHNsaWRlcigiMl9Dcm9zc01vZC8wOV9tNDEiLCAwLjAsIDAuMCwgMTAuMCwgMC4wMDEpOwptNDIgPSBoc2xpZGVyKCIyX0Nyb3NzTW9kLzEwX200MiIsIDAuMCwgMC4wLCAxMC4wLCAwLjAwMSk7Cm00MyA9IGhzbGlkZXIoIjJfQ3Jvc3NNb2QvMTFfbTQzIiwgMC4wLCAwLjAsIDEwLjAsIDAuMDAxKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBHcm91cCAzIOKAlCBTZWxmLWZlZWRiYWNrCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpmYjEgPSBoc2xpZGVyKCIzX0ZlZWRiYWNrLzAwX2ZiMSIsIDAuMCwgMC4wLCAxLjAsIDAuMDAxKTsKZmIyID0gaHNsaWRlcigiM19GZWVkYmFjay8wMV9mYjIiLCAwLjAsIDAuMCwgMS4wLCAwLjAwMSk7CmZiMyA9IGhzbGlkZXIoIjNfRmVlZGJhY2svMDJfZmIzIiwgMC4wLCAwLjAsIDEuMCwgMC4wMDEpOwpmYjQgPSBoc2xpZGVyKCIzX0ZlZWRiYWNrLzAzX2ZiNCIsIDAuMCwgMC4wLCAxLjAsIDAuMDAxKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBHcm91cCA0IOKAlCBNYXN0ZXIKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCm1hc3Rlcl9sZXZlbCAgICAgID0gaHNsaWRlcigiNF9NYXN0ZXIvMDBfbWFzdGVyX2xldmVsIiwgICAgICAwLjcsICAwLjAsICAxLjAsICAwLjAwMSk7CmZpbmVfdHVuZSAgICAgICAgID0gaHNsaWRlcigiNF9NYXN0ZXIvMDFfZmluZV90dW5lW3VuaXQ6Y3RdIiwgMC4wLCAtNTAuMCwgNTAuMCwgMC4xKTsKc3RlcmVvX3NwcmVhZCAgICAgPSBoc2xpZGVyKCI0X01hc3Rlci8wMl9zdGVyZW9fc3ByZWFkIiwgICAgIDAuMSwgIDAuMCwgIDEuMCwgIDAuMDAxKTsKb3V0cHV0X3NhdHVyYXRpb24gPSBoc2xpZGVyKCI0X01hc3Rlci8wM19vdXRwdXRfc2F0dXJhdGlvbiIsIDAuMCwgIDAuMCwgIDEuMCwgIDAuMDAxKTsKb3V0cHV0X2hwICAgICAgICAgPSBoc2xpZGVyKCI0X01hc3Rlci8wNF9vdXRwdXRfaHBbdW5pdDpIel0iLDIwLjAsIDIwLjAsIDIwMC4wLDAuMSk7Cm1hc3Rlcl9wYW4gICAgICAgID0gaHNsaWRlcigiNF9NYXN0ZXIvMDVfbWFzdGVyX3BhbiIsICAgICAgICAwLjAsIC0xLjAsICAxLjAsICAwLjAwMSk7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gTW9kdWxhdGlvbiBtYXRyaXgg4oCUIDQ4IHNvdXJjZXMgw5cgMTAgZGVzdGluYXRpb25zLgovLyBFYWNoIGhzbGlkZXIgaXMgb25lICJhbW91bnQiIGVudHJ5IGluIFstMSwgKzFdLiBaZXJvID0gbm8gY29ubmVjdGlvbi4KLy8gR3JvdXAgIk1NX01hdHJpeCIgc28gdGhlIHBhcmFtTWV0YSBwYXJzZXIgY2FuIHJlY29nbmlzZSBtYXRyaXggcGFyYW1zLgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vIE1hdHJpeCBjb2x1bW46IGRlc3RpbmF0aW9uIDAgPSBwaXRjaAphbXRfczAwX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDBfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMV9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAxX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDJfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMl9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAzX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDNfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNF9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA0X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDVfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNV9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA2X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDZfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwN19kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA3X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDhfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOF9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA5X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDlfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMF9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEwX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTFfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMV9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEyX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTJfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxM19kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEzX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTRfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNF9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE1X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTVfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNl9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE2X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTdfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MxN19kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE4X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMThfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOV9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE5X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjBfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMF9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIxX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjFfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMl9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIyX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjNfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MyM19kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI0X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjRfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNV9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI1X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjZfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNl9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI3X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjdfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOF9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI4X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjlfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOV9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMwX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzBfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMV9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMxX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzJfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMl9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMzX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzNfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNF9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM0X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzVfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNV9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM2X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzZfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzN19kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM3X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzhfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOF9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM5X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzlfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MF9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQwX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDFfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MV9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQyX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDJfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0M19kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQzX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDRfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NF9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ1X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDVfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Nl9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ2X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDdfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3M0N19kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwoKLy8gTWF0cml4IGNvbHVtbjogZGVzdGluYXRpb24gMSA9IG9wMV9sZXZlbAphbXRfczAwX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAwX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAxX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAxX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAyX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAyX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAzX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAzX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA0X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA0X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA1X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA1X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA2X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA2X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA3X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA3X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA4X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA4X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA5X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA5X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEwX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEwX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczExX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczExX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEyX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEyX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEzX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEzX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE0X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE0X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE1X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE1X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE2X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE2X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE3X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE3X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE4X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE4X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE5X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE5X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIwX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIwX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIxX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIxX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIyX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIyX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIzX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIzX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI0X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI0X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI1X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI1X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI2X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI2X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI3X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI3X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI4X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI4X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI5X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI5X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMwX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMwX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMxX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMxX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMyX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMyX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMzX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMzX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM0X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM0X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM1X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM1X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM2X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM2X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM3X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM3X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM4X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM4X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM5X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM5X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQwX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQwX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQxX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQxX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQyX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQyX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQzX2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQzX2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ0X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ0X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ1X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ1X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ2X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ2X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ3X2QwMV9vcDFfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ3X2QwMV9vcDFfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwoKLy8gTWF0cml4IGNvbHVtbjogZGVzdGluYXRpb24gMiA9IG9wMl9sZXZlbAphbXRfczAwX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAwX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAxX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAxX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAyX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAyX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAzX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAzX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA0X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA0X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA1X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA1X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA2X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA2X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA3X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA3X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA4X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA4X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA5X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA5X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEwX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEwX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczExX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczExX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEyX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEyX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEzX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEzX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE0X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE0X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE1X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE1X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE2X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE2X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE3X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE3X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE4X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE4X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE5X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE5X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIwX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIwX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIxX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIxX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIyX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIyX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIzX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIzX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI0X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI0X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI1X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI1X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI2X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI2X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI3X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI3X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI4X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI4X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI5X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI5X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMwX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMwX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMxX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMxX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMyX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMyX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMzX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMzX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM0X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM0X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM1X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM1X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM2X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM2X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM3X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM3X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM4X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM4X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM5X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM5X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQwX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQwX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQxX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQxX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQyX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQyX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQzX2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQzX2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ0X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ0X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ1X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ1X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ2X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ2X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ3X2QwMl9vcDJfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ3X2QwMl9vcDJfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwoKLy8gTWF0cml4IGNvbHVtbjogZGVzdGluYXRpb24gMyA9IG9wM19sZXZlbAphbXRfczAwX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAwX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAxX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAxX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAyX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAyX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAzX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAzX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA0X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA0X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA1X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA1X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA2X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA2X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA3X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA3X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA4X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA4X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA5X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA5X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEwX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEwX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczExX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczExX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEyX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEyX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEzX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEzX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE0X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE0X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE1X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE1X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE2X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE2X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE3X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE3X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE4X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE4X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE5X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE5X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIwX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIwX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIxX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIxX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIyX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIyX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIzX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIzX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI0X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI0X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI1X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI1X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI2X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI2X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI3X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI3X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI4X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI4X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI5X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI5X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMwX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMwX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMxX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMxX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMyX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMyX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMzX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMzX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM0X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM0X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM1X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM1X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM2X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM2X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM3X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM3X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM4X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM4X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM5X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM5X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQwX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQwX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQxX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQxX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQyX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQyX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQzX2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQzX2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ0X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ0X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ1X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ1X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ2X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ2X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ3X2QwM19vcDNfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ3X2QwM19vcDNfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwoKLy8gTWF0cml4IGNvbHVtbjogZGVzdGluYXRpb24gNCA9IG9wNF9sZXZlbAphbXRfczAwX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAwX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAxX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAxX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAyX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAyX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAzX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAzX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA0X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA0X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA1X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA1X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA2X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA2X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA3X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA3X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA4X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA4X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA5X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA5X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEwX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEwX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczExX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczExX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEyX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEyX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEzX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEzX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE0X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE0X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE1X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE1X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE2X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE2X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE3X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE3X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE4X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE4X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE5X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE5X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIwX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIwX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIxX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIxX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIyX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIyX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIzX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIzX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI0X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI0X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI1X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI1X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI2X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI2X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI3X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI3X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI4X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI4X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI5X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI5X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMwX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMwX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMxX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMxX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMyX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMyX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMzX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMzX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM0X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM0X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM1X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM1X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM2X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM2X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM3X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM3X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM4X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM4X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM5X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM5X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQwX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQwX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQxX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQxX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQyX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQyX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQzX2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQzX2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ0X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ0X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ1X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ1X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ2X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ2X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ3X2QwNF9vcDRfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ3X2QwNF9vcDRfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwoKLy8gTWF0cml4IGNvbHVtbjogZGVzdGluYXRpb24gNSA9IGNyb3NzX21vZF9nbG9iYWwKYW10X3MwMF9kMDVfY3Jvc3NfbW9kX2dsb2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDBfZDA1X2Nyb3NzX21vZF9nbG9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAxX2QwNV9jcm9zc19tb2RfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMV9kMDVfY3Jvc3NfbW9kX2dsb2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDJfZDA1X2Nyb3NzX21vZF9nbG9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAyX2QwNV9jcm9zc19tb2RfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwM19kMDVfY3Jvc3NfbW9kX2dsb2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDNfZDA1X2Nyb3NzX21vZF9nbG9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA0X2QwNV9jcm9zc19tb2RfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNF9kMDVfY3Jvc3NfbW9kX2dsb2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDVfZDA1X2Nyb3NzX21vZF9nbG9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA1X2QwNV9jcm9zc19tb2RfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNl9kMDVfY3Jvc3NfbW9kX2dsb2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDZfZDA1X2Nyb3NzX21vZF9nbG9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA3X2QwNV9jcm9zc19tb2RfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwN19kMDVfY3Jvc3NfbW9kX2dsb2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDhfZDA1X2Nyb3NzX21vZF9nbG9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA4X2QwNV9jcm9zc19tb2RfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOV9kMDVfY3Jvc3NfbW9kX2dsb2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDlfZDA1X2Nyb3NzX21vZF9nbG9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEwX2QwNV9jcm9zc19tb2RfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMF9kMDVfY3Jvc3NfbW9kX2dsb2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTFfZDA1X2Nyb3NzX21vZF9nbG9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczExX2QwNV9jcm9zc19tb2RfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMl9kMDVfY3Jvc3NfbW9kX2dsb2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTJfZDA1X2Nyb3NzX21vZF9nbG9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEzX2QwNV9jcm9zc19tb2RfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxM19kMDVfY3Jvc3NfbW9kX2dsb2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTRfZDA1X2Nyb3NzX21vZF9nbG9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE0X2QwNV9jcm9zc19tb2RfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNV9kMDVfY3Jvc3NfbW9kX2dsb2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTVfZDA1X2Nyb3NzX21vZF9nbG9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE2X2QwNV9jcm9zc19tb2RfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNl9kMDVfY3Jvc3NfbW9kX2dsb2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTdfZDA1X2Nyb3NzX21vZF9nbG9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE3X2QwNV9jcm9zc19tb2RfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOF9kMDVfY3Jvc3NfbW9kX2dsb2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMThfZDA1X2Nyb3NzX21vZF9nbG9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE5X2QwNV9jcm9zc19tb2RfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOV9kMDVfY3Jvc3NfbW9kX2dsb2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjBfZDA1X2Nyb3NzX21vZF9nbG9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIwX2QwNV9jcm9zc19tb2RfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMV9kMDVfY3Jvc3NfbW9kX2dsb2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjFfZDA1X2Nyb3NzX21vZF9nbG9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIyX2QwNV9jcm9zc19tb2RfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMl9kMDVfY3Jvc3NfbW9kX2dsb2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjNfZDA1X2Nyb3NzX21vZF9nbG9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIzX2QwNV9jcm9zc19tb2RfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNF9kMDVfY3Jvc3NfbW9kX2dsb2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjRfZDA1X2Nyb3NzX21vZF9nbG9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI1X2QwNV9jcm9zc19tb2RfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNV9kMDVfY3Jvc3NfbW9kX2dsb2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjZfZDA1X2Nyb3NzX21vZF9nbG9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI2X2QwNV9jcm9zc19tb2RfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyN19kMDVfY3Jvc3NfbW9kX2dsb2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjdfZDA1X2Nyb3NzX21vZF9nbG9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI4X2QwNV9jcm9zc19tb2RfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOF9kMDVfY3Jvc3NfbW9kX2dsb2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjlfZDA1X2Nyb3NzX21vZF9nbG9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI5X2QwNV9jcm9zc19tb2RfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMF9kMDVfY3Jvc3NfbW9kX2dsb2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzBfZDA1X2Nyb3NzX21vZF9nbG9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMxX2QwNV9jcm9zc19tb2RfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMV9kMDVfY3Jvc3NfbW9kX2dsb2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzJfZDA1X2Nyb3NzX21vZF9nbG9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMyX2QwNV9jcm9zc19tb2RfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzM19kMDVfY3Jvc3NfbW9kX2dsb2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzNfZDA1X2Nyb3NzX21vZF9nbG9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM0X2QwNV9jcm9zc19tb2RfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNF9kMDVfY3Jvc3NfbW9kX2dsb2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzVfZDA1X2Nyb3NzX21vZF9nbG9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM1X2QwNV9jcm9zc19tb2RfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNl9kMDVfY3Jvc3NfbW9kX2dsb2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzZfZDA1X2Nyb3NzX21vZF9nbG9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM3X2QwNV9jcm9zc19tb2RfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzN19kMDVfY3Jvc3NfbW9kX2dsb2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzhfZDA1X2Nyb3NzX21vZF9nbG9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM4X2QwNV9jcm9zc19tb2RfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOV9kMDVfY3Jvc3NfbW9kX2dsb2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzlfZDA1X2Nyb3NzX21vZF9nbG9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQwX2QwNV9jcm9zc19tb2RfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MF9kMDVfY3Jvc3NfbW9kX2dsb2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDFfZDA1X2Nyb3NzX21vZF9nbG9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQxX2QwNV9jcm9zc19tb2RfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Ml9kMDVfY3Jvc3NfbW9kX2dsb2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDJfZDA1X2Nyb3NzX21vZF9nbG9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQzX2QwNV9jcm9zc19tb2RfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3M0M19kMDVfY3Jvc3NfbW9kX2dsb2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDRfZDA1X2Nyb3NzX21vZF9nbG9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ0X2QwNV9jcm9zc19tb2RfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NV9kMDVfY3Jvc3NfbW9kX2dsb2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDVfZDA1X2Nyb3NzX21vZF9nbG9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ2X2QwNV9jcm9zc19tb2RfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Nl9kMDVfY3Jvc3NfbW9kX2dsb2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDdfZDA1X2Nyb3NzX21vZF9nbG9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ3X2QwNV9jcm9zc19tb2RfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKCi8vIE1hdHJpeCBjb2x1bW46IGRlc3RpbmF0aW9uIDYgPSBmZWVkYmFja19nbG9iYWwKYW10X3MwMF9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMF9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMV9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMV9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMl9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMl9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwM19kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwM19kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNF9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNF9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNV9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNV9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNl9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNl9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwN19kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwN19kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOF9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOF9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOV9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOV9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMF9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMF9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMV9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMV9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMl9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMl9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxM19kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxM19kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNF9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNF9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNV9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNV9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNl9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNl9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxN19kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxN19kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOF9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOF9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOV9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOV9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMF9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMF9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMV9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMV9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMl9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMl9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyM19kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyM19kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNF9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNF9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNV9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNV9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNl9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNl9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyN19kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyN19kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOF9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOF9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOV9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOV9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMF9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMF9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMV9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMV9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMl9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMl9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzM19kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzM19kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNF9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNF9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNV9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNV9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNl9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNl9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzN19kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzN19kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOF9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOF9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOV9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOV9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MF9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MF9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MV9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MV9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Ml9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Ml9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0M19kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3M0M19kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NF9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NF9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NV9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NV9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Nl9kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Nl9kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0N19kMDZfZmVlZGJhY2tfZ2xvYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3M0N19kMDZfZmVlZGJhY2tfZ2xvYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKCi8vIE1hdHJpeCBjb2x1bW46IGRlc3RpbmF0aW9uIDcgPSBnbG9iYWxfcmF0aW8KYW10X3MwMF9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMF9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMV9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMV9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMl9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMl9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwM19kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MwM19kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNF9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNF9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNV9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNV9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNl9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNl9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwN19kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MwN19kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOF9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOF9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOV9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOV9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMF9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMF9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMV9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMV9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMl9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMl9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxM19kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MxM19kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNF9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNF9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNV9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNV9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNl9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNl9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxN19kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MxN19kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOF9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOF9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOV9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOV9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMF9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMF9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMV9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMV9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMl9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMl9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyM19kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MyM19kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNF9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNF9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNV9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNV9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNl9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNl9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyN19kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MyN19kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOF9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOF9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOV9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOV9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMF9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMF9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMV9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMV9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMl9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMl9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzM19kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MzM19kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNF9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNF9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNV9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNV9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNl9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNl9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzN19kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MzN19kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOF9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOF9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOV9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOV9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MF9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MF9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MV9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MV9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Ml9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Ml9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0M19kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3M0M19kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NF9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NF9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NV9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NV9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Nl9kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Nl9kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0N19kMDdfZ2xvYmFsX3JhdGlvID0gaHNsaWRlcigiTU1fTWF0cml4L3M0N19kMDdfZ2xvYmFsX3JhdGlvIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKCi8vIE1hdHJpeCBjb2x1bW46IGRlc3RpbmF0aW9uIDggPSBhbXAKYW10X3MwMF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwM19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwM19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwN19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwN19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxM19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxM19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxN19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxN19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyM19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyM19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyN19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyN19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzM19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzM19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzN19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzN19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Ml9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Ml9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0M19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3M0M19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NF9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NF9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NV9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NV9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Nl9kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Nl9kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0N19kMDhfYW1wID0gaHNsaWRlcigiTU1fTWF0cml4L3M0N19kMDhfYW1wIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKCi8vIE1hdHJpeCBjb2x1bW46IGRlc3RpbmF0aW9uIDkgPSBwYW4KYW10X3MwMF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwM19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwM19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwN19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwN19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxM19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxM19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxN19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxN19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyM19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyM19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyN19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyN19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzM19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzM19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzN19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzN19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Ml9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Ml9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0M19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0M19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NF9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NF9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NV9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NV9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Nl9kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Nl9kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0N19kMDlfcGFuID0gaHNsaWRlcigiTU1fTWF0cml4L3M0N19kMDlfcGFuIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBEZXN0aW5hdGlvbiBzaWduYWxzIOKAlCBvbmUgcGVyIG1vZHVsYXRpb24gZGVzdGluYXRpb24uIEVhY2ggaXMgYSA0OC10ZXJtCi8vIHdlaWdodGVkIHN1bSBvZiBzb3VyY2VzIMOXIGFtb3VudHMuIFRoZSBgZ2F0ZWAgYXJndW1lbnQgaXMgdGhyZWFkZWQgdGhyb3VnaAovLyBzbyB0aGF0IG1wLnNyYz8/KGdhdGUpIGNhbiBkcml2ZSBBRFNSIGVudmVsb3Blcy4KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgptb2RfcGl0Y2goZ2F0ZSkgPQogICAgbXAuc3JjMDAoZ2F0ZSkgKiBhbXRfczAwX2QwMF9waXRjaCArCiAgICBtcC5zcmMwMShnYXRlKSAqIGFtdF9zMDFfZDAwX3BpdGNoICsKICAgIG1wLnNyYzAyKGdhdGUpICogYW10X3MwMl9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMDMoZ2F0ZSkgKiBhbXRfczAzX2QwMF9waXRjaCArCiAgICBtcC5zcmMwNChnYXRlKSAqIGFtdF9zMDRfZDAwX3BpdGNoICsKICAgIG1wLnNyYzA1KGdhdGUpICogYW10X3MwNV9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMDYoZ2F0ZSkgKiBhbXRfczA2X2QwMF9waXRjaCArCiAgICBtcC5zcmMwNyhnYXRlKSAqIGFtdF9zMDdfZDAwX3BpdGNoICsKICAgIG1wLnNyYzA4KGdhdGUpICogYW10X3MwOF9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMDkoZ2F0ZSkgKiBhbXRfczA5X2QwMF9waXRjaCArCiAgICBtcC5zcmMxMChnYXRlKSAqIGFtdF9zMTBfZDAwX3BpdGNoICsKICAgIG1wLnNyYzExKGdhdGUpICogYW10X3MxMV9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMTIoZ2F0ZSkgKiBhbXRfczEyX2QwMF9waXRjaCArCiAgICBtcC5zcmMxMyhnYXRlKSAqIGFtdF9zMTNfZDAwX3BpdGNoICsKICAgIG1wLnNyYzE0KGdhdGUpICogYW10X3MxNF9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMTUoZ2F0ZSkgKiBhbXRfczE1X2QwMF9waXRjaCArCiAgICBtcC5zcmMxNihnYXRlKSAqIGFtdF9zMTZfZDAwX3BpdGNoICsKICAgIG1wLnNyYzE3KGdhdGUpICogYW10X3MxN19kMDBfcGl0Y2ggKwogICAgbXAuc3JjMTgoZ2F0ZSkgKiBhbXRfczE4X2QwMF9waXRjaCArCiAgICBtcC5zcmMxOShnYXRlKSAqIGFtdF9zMTlfZDAwX3BpdGNoICsKICAgIG1wLnNyYzIwKGdhdGUpICogYW10X3MyMF9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMjEoZ2F0ZSkgKiBhbXRfczIxX2QwMF9waXRjaCArCiAgICBtcC5zcmMyMihnYXRlKSAqIGFtdF9zMjJfZDAwX3BpdGNoICsKICAgIG1wLnNyYzIzKGdhdGUpICogYW10X3MyM19kMDBfcGl0Y2ggKwogICAgbXAuc3JjMjQoZ2F0ZSkgKiBhbXRfczI0X2QwMF9waXRjaCArCiAgICBtcC5zcmMyNShnYXRlKSAqIGFtdF9zMjVfZDAwX3BpdGNoICsKICAgIG1wLnNyYzI2KGdhdGUpICogYW10X3MyNl9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMjcoZ2F0ZSkgKiBhbXRfczI3X2QwMF9waXRjaCArCiAgICBtcC5zcmMyOChnYXRlKSAqIGFtdF9zMjhfZDAwX3BpdGNoICsKICAgIG1wLnNyYzI5KGdhdGUpICogYW10X3MyOV9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMzAoZ2F0ZSkgKiBhbXRfczMwX2QwMF9waXRjaCArCiAgICBtcC5zcmMzMShnYXRlKSAqIGFtdF9zMzFfZDAwX3BpdGNoICsKICAgIG1wLnNyYzMyKGdhdGUpICogYW10X3MzMl9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMzMoZ2F0ZSkgKiBhbXRfczMzX2QwMF9waXRjaCArCiAgICBtcC5zcmMzNChnYXRlKSAqIGFtdF9zMzRfZDAwX3BpdGNoICsKICAgIG1wLnNyYzM1KGdhdGUpICogYW10X3MzNV9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMzYoZ2F0ZSkgKiBhbXRfczM2X2QwMF9waXRjaCArCiAgICBtcC5zcmMzNyhnYXRlKSAqIGFtdF9zMzdfZDAwX3BpdGNoICsKICAgIG1wLnNyYzM4KGdhdGUpICogYW10X3MzOF9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMzkoZ2F0ZSkgKiBhbXRfczM5X2QwMF9waXRjaCArCiAgICBtcC5zcmM0MChnYXRlKSAqIGFtdF9zNDBfZDAwX3BpdGNoICsKICAgIG1wLnNyYzQxKGdhdGUpICogYW10X3M0MV9kMDBfcGl0Y2ggKwogICAgbXAuc3JjNDIoZ2F0ZSkgKiBhbXRfczQyX2QwMF9waXRjaCArCiAgICBtcC5zcmM0MyhnYXRlKSAqIGFtdF9zNDNfZDAwX3BpdGNoICsKICAgIG1wLnNyYzQ0KGdhdGUpICogYW10X3M0NF9kMDBfcGl0Y2ggKwogICAgbXAuc3JjNDUoZ2F0ZSkgKiBhbXRfczQ1X2QwMF9waXRjaCArCiAgICBtcC5zcmM0NihnYXRlKSAqIGFtdF9zNDZfZDAwX3BpdGNoICsKICAgIG1wLnNyYzQ3KGdhdGUpICogYW10X3M0N19kMDBfcGl0Y2g7Cgptb2Rfb3AxX2xldmVsKGdhdGUpID0KICAgIG1wLnNyYzAwKGdhdGUpICogYW10X3MwMF9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzAxKGdhdGUpICogYW10X3MwMV9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzAyKGdhdGUpICogYW10X3MwMl9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzAzKGdhdGUpICogYW10X3MwM19kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzA0KGdhdGUpICogYW10X3MwNF9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzA1KGdhdGUpICogYW10X3MwNV9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzA2KGdhdGUpICogYW10X3MwNl9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzA3KGdhdGUpICogYW10X3MwN19kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzA4KGdhdGUpICogYW10X3MwOF9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzA5KGdhdGUpICogYW10X3MwOV9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzEwKGdhdGUpICogYW10X3MxMF9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzExKGdhdGUpICogYW10X3MxMV9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzEyKGdhdGUpICogYW10X3MxMl9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzEzKGdhdGUpICogYW10X3MxM19kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzE0KGdhdGUpICogYW10X3MxNF9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzE1KGdhdGUpICogYW10X3MxNV9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzE2KGdhdGUpICogYW10X3MxNl9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzE3KGdhdGUpICogYW10X3MxN19kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzE4KGdhdGUpICogYW10X3MxOF9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzE5KGdhdGUpICogYW10X3MxOV9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzIwKGdhdGUpICogYW10X3MyMF9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzIxKGdhdGUpICogYW10X3MyMV9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzIyKGdhdGUpICogYW10X3MyMl9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzIzKGdhdGUpICogYW10X3MyM19kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzI0KGdhdGUpICogYW10X3MyNF9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzI1KGdhdGUpICogYW10X3MyNV9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzI2KGdhdGUpICogYW10X3MyNl9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzI3KGdhdGUpICogYW10X3MyN19kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzI4KGdhdGUpICogYW10X3MyOF9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzI5KGdhdGUpICogYW10X3MyOV9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzMwKGdhdGUpICogYW10X3MzMF9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzMxKGdhdGUpICogYW10X3MzMV9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzMyKGdhdGUpICogYW10X3MzMl9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzMzKGdhdGUpICogYW10X3MzM19kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzM0KGdhdGUpICogYW10X3MzNF9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzM1KGdhdGUpICogYW10X3MzNV9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzM2KGdhdGUpICogYW10X3MzNl9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzM3KGdhdGUpICogYW10X3MzN19kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzM4KGdhdGUpICogYW10X3MzOF9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzM5KGdhdGUpICogYW10X3MzOV9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzQwKGdhdGUpICogYW10X3M0MF9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzQxKGdhdGUpICogYW10X3M0MV9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzQyKGdhdGUpICogYW10X3M0Ml9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzQzKGdhdGUpICogYW10X3M0M19kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzQ0KGdhdGUpICogYW10X3M0NF9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzQ1KGdhdGUpICogYW10X3M0NV9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzQ2KGdhdGUpICogYW10X3M0Nl9kMDFfb3AxX2xldmVsICsKICAgIG1wLnNyYzQ3KGdhdGUpICogYW10X3M0N19kMDFfb3AxX2xldmVsOwoKbW9kX29wMl9sZXZlbChnYXRlKSA9CiAgICBtcC5zcmMwMChnYXRlKSAqIGFtdF9zMDBfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMwMShnYXRlKSAqIGFtdF9zMDFfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMwMihnYXRlKSAqIGFtdF9zMDJfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMwMyhnYXRlKSAqIGFtdF9zMDNfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMwNChnYXRlKSAqIGFtdF9zMDRfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMwNShnYXRlKSAqIGFtdF9zMDVfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMwNihnYXRlKSAqIGFtdF9zMDZfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMwNyhnYXRlKSAqIGFtdF9zMDdfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMwOChnYXRlKSAqIGFtdF9zMDhfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMwOShnYXRlKSAqIGFtdF9zMDlfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMxMChnYXRlKSAqIGFtdF9zMTBfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMxMShnYXRlKSAqIGFtdF9zMTFfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMxMihnYXRlKSAqIGFtdF9zMTJfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMxMyhnYXRlKSAqIGFtdF9zMTNfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMxNChnYXRlKSAqIGFtdF9zMTRfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMxNShnYXRlKSAqIGFtdF9zMTVfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMxNihnYXRlKSAqIGFtdF9zMTZfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMxNyhnYXRlKSAqIGFtdF9zMTdfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMxOChnYXRlKSAqIGFtdF9zMThfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMxOShnYXRlKSAqIGFtdF9zMTlfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMyMChnYXRlKSAqIGFtdF9zMjBfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMyMShnYXRlKSAqIGFtdF9zMjFfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMyMihnYXRlKSAqIGFtdF9zMjJfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMyMyhnYXRlKSAqIGFtdF9zMjNfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMyNChnYXRlKSAqIGFtdF9zMjRfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMyNShnYXRlKSAqIGFtdF9zMjVfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMyNihnYXRlKSAqIGFtdF9zMjZfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMyNyhnYXRlKSAqIGFtdF9zMjdfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMyOChnYXRlKSAqIGFtdF9zMjhfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMyOShnYXRlKSAqIGFtdF9zMjlfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMzMChnYXRlKSAqIGFtdF9zMzBfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMzMShnYXRlKSAqIGFtdF9zMzFfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMzMihnYXRlKSAqIGFtdF9zMzJfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMzMyhnYXRlKSAqIGFtdF9zMzNfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMzNChnYXRlKSAqIGFtdF9zMzRfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMzNShnYXRlKSAqIGFtdF9zMzVfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMzNihnYXRlKSAqIGFtdF9zMzZfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMzNyhnYXRlKSAqIGFtdF9zMzdfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMzOChnYXRlKSAqIGFtdF9zMzhfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmMzOShnYXRlKSAqIGFtdF9zMzlfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmM0MChnYXRlKSAqIGFtdF9zNDBfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmM0MShnYXRlKSAqIGFtdF9zNDFfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmM0MihnYXRlKSAqIGFtdF9zNDJfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmM0MyhnYXRlKSAqIGFtdF9zNDNfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmM0NChnYXRlKSAqIGFtdF9zNDRfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmM0NShnYXRlKSAqIGFtdF9zNDVfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmM0NihnYXRlKSAqIGFtdF9zNDZfZDAyX29wMl9sZXZlbCArCiAgICBtcC5zcmM0NyhnYXRlKSAqIGFtdF9zNDdfZDAyX29wMl9sZXZlbDsKCm1vZF9vcDNfbGV2ZWwoZ2F0ZSkgPQogICAgbXAuc3JjMDAoZ2F0ZSkgKiBhbXRfczAwX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMDEoZ2F0ZSkgKiBhbXRfczAxX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMDIoZ2F0ZSkgKiBhbXRfczAyX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMDMoZ2F0ZSkgKiBhbXRfczAzX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMDQoZ2F0ZSkgKiBhbXRfczA0X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMDUoZ2F0ZSkgKiBhbXRfczA1X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMDYoZ2F0ZSkgKiBhbXRfczA2X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMDcoZ2F0ZSkgKiBhbXRfczA3X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMDgoZ2F0ZSkgKiBhbXRfczA4X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMDkoZ2F0ZSkgKiBhbXRfczA5X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMTAoZ2F0ZSkgKiBhbXRfczEwX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMTEoZ2F0ZSkgKiBhbXRfczExX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMTIoZ2F0ZSkgKiBhbXRfczEyX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMTMoZ2F0ZSkgKiBhbXRfczEzX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMTQoZ2F0ZSkgKiBhbXRfczE0X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMTUoZ2F0ZSkgKiBhbXRfczE1X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMTYoZ2F0ZSkgKiBhbXRfczE2X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMTcoZ2F0ZSkgKiBhbXRfczE3X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMTgoZ2F0ZSkgKiBhbXRfczE4X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMTkoZ2F0ZSkgKiBhbXRfczE5X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMjAoZ2F0ZSkgKiBhbXRfczIwX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMjEoZ2F0ZSkgKiBhbXRfczIxX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMjIoZ2F0ZSkgKiBhbXRfczIyX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMjMoZ2F0ZSkgKiBhbXRfczIzX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMjQoZ2F0ZSkgKiBhbXRfczI0X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMjUoZ2F0ZSkgKiBhbXRfczI1X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMjYoZ2F0ZSkgKiBhbXRfczI2X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMjcoZ2F0ZSkgKiBhbXRfczI3X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMjgoZ2F0ZSkgKiBhbXRfczI4X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMjkoZ2F0ZSkgKiBhbXRfczI5X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMzAoZ2F0ZSkgKiBhbXRfczMwX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMzEoZ2F0ZSkgKiBhbXRfczMxX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMzIoZ2F0ZSkgKiBhbXRfczMyX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMzMoZ2F0ZSkgKiBhbXRfczMzX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMzQoZ2F0ZSkgKiBhbXRfczM0X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMzUoZ2F0ZSkgKiBhbXRfczM1X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMzYoZ2F0ZSkgKiBhbXRfczM2X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMzcoZ2F0ZSkgKiBhbXRfczM3X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMzgoZ2F0ZSkgKiBhbXRfczM4X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjMzkoZ2F0ZSkgKiBhbXRfczM5X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjNDAoZ2F0ZSkgKiBhbXRfczQwX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjNDEoZ2F0ZSkgKiBhbXRfczQxX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjNDIoZ2F0ZSkgKiBhbXRfczQyX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjNDMoZ2F0ZSkgKiBhbXRfczQzX2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjNDQoZ2F0ZSkgKiBhbXRfczQ0X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjNDUoZ2F0ZSkgKiBhbXRfczQ1X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjNDYoZ2F0ZSkgKiBhbXRfczQ2X2QwM19vcDNfbGV2ZWwgKwogICAgbXAuc3JjNDcoZ2F0ZSkgKiBhbXRfczQ3X2QwM19vcDNfbGV2ZWw7Cgptb2Rfb3A0X2xldmVsKGdhdGUpID0KICAgIG1wLnNyYzAwKGdhdGUpICogYW10X3MwMF9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzAxKGdhdGUpICogYW10X3MwMV9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzAyKGdhdGUpICogYW10X3MwMl9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzAzKGdhdGUpICogYW10X3MwM19kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzA0KGdhdGUpICogYW10X3MwNF9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzA1KGdhdGUpICogYW10X3MwNV9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzA2KGdhdGUpICogYW10X3MwNl9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzA3KGdhdGUpICogYW10X3MwN19kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzA4KGdhdGUpICogYW10X3MwOF9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzA5KGdhdGUpICogYW10X3MwOV9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzEwKGdhdGUpICogYW10X3MxMF9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzExKGdhdGUpICogYW10X3MxMV9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzEyKGdhdGUpICogYW10X3MxMl9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzEzKGdhdGUpICogYW10X3MxM19kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzE0KGdhdGUpICogYW10X3MxNF9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzE1KGdhdGUpICogYW10X3MxNV9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzE2KGdhdGUpICogYW10X3MxNl9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzE3KGdhdGUpICogYW10X3MxN19kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzE4KGdhdGUpICogYW10X3MxOF9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzE5KGdhdGUpICogYW10X3MxOV9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzIwKGdhdGUpICogYW10X3MyMF9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzIxKGdhdGUpICogYW10X3MyMV9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzIyKGdhdGUpICogYW10X3MyMl9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzIzKGdhdGUpICogYW10X3MyM19kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzI0KGdhdGUpICogYW10X3MyNF9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzI1KGdhdGUpICogYW10X3MyNV9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzI2KGdhdGUpICogYW10X3MyNl9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzI3KGdhdGUpICogYW10X3MyN19kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzI4KGdhdGUpICogYW10X3MyOF9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzI5KGdhdGUpICogYW10X3MyOV9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzMwKGdhdGUpICogYW10X3MzMF9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzMxKGdhdGUpICogYW10X3MzMV9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzMyKGdhdGUpICogYW10X3MzMl9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzMzKGdhdGUpICogYW10X3MzM19kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzM0KGdhdGUpICogYW10X3MzNF9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzM1KGdhdGUpICogYW10X3MzNV9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzM2KGdhdGUpICogYW10X3MzNl9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzM3KGdhdGUpICogYW10X3MzN19kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzM4KGdhdGUpICogYW10X3MzOF9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzM5KGdhdGUpICogYW10X3MzOV9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzQwKGdhdGUpICogYW10X3M0MF9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzQxKGdhdGUpICogYW10X3M0MV9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzQyKGdhdGUpICogYW10X3M0Ml9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzQzKGdhdGUpICogYW10X3M0M19kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzQ0KGdhdGUpICogYW10X3M0NF9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzQ1KGdhdGUpICogYW10X3M0NV9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzQ2KGdhdGUpICogYW10X3M0Nl9kMDRfb3A0X2xldmVsICsKICAgIG1wLnNyYzQ3KGdhdGUpICogYW10X3M0N19kMDRfb3A0X2xldmVsOwoKbW9kX2Nyb3NzX21vZF9nbG9iYWwoZ2F0ZSkgPQogICAgbXAuc3JjMDAoZ2F0ZSkgKiBhbXRfczAwX2QwNV9jcm9zc19tb2RfZ2xvYmFsICsKICAgIG1wLnNyYzAxKGdhdGUpICogYW10X3MwMV9kMDVfY3Jvc3NfbW9kX2dsb2JhbCArCiAgICBtcC5zcmMwMihnYXRlKSAqIGFtdF9zMDJfZDA1X2Nyb3NzX21vZF9nbG9iYWwgKwogICAgbXAuc3JjMDMoZ2F0ZSkgKiBhbXRfczAzX2QwNV9jcm9zc19tb2RfZ2xvYmFsICsKICAgIG1wLnNyYzA0KGdhdGUpICogYW10X3MwNF9kMDVfY3Jvc3NfbW9kX2dsb2JhbCArCiAgICBtcC5zcmMwNShnYXRlKSAqIGFtdF9zMDVfZDA1X2Nyb3NzX21vZF9nbG9iYWwgKwogICAgbXAuc3JjMDYoZ2F0ZSkgKiBhbXRfczA2X2QwNV9jcm9zc19tb2RfZ2xvYmFsICsKICAgIG1wLnNyYzA3KGdhdGUpICogYW10X3MwN19kMDVfY3Jvc3NfbW9kX2dsb2JhbCArCiAgICBtcC5zcmMwOChnYXRlKSAqIGFtdF9zMDhfZDA1X2Nyb3NzX21vZF9nbG9iYWwgKwogICAgbXAuc3JjMDkoZ2F0ZSkgKiBhbXRfczA5X2QwNV9jcm9zc19tb2RfZ2xvYmFsICsKICAgIG1wLnNyYzEwKGdhdGUpICogYW10X3MxMF9kMDVfY3Jvc3NfbW9kX2dsb2JhbCArCiAgICBtcC5zcmMxMShnYXRlKSAqIGFtdF9zMTFfZDA1X2Nyb3NzX21vZF9nbG9iYWwgKwogICAgbXAuc3JjMTIoZ2F0ZSkgKiBhbXRfczEyX2QwNV9jcm9zc19tb2RfZ2xvYmFsICsKICAgIG1wLnNyYzEzKGdhdGUpICogYW10X3MxM19kMDVfY3Jvc3NfbW9kX2dsb2JhbCArCiAgICBtcC5zcmMxNChnYXRlKSAqIGFtdF9zMTRfZDA1X2Nyb3NzX21vZF9nbG9iYWwgKwogICAgbXAuc3JjMTUoZ2F0ZSkgKiBhbXRfczE1X2QwNV9jcm9zc19tb2RfZ2xvYmFsICsKICAgIG1wLnNyYzE2KGdhdGUpICogYW10X3MxNl9kMDVfY3Jvc3NfbW9kX2dsb2JhbCArCiAgICBtcC5zcmMxNyhnYXRlKSAqIGFtdF9zMTdfZDA1X2Nyb3NzX21vZF9nbG9iYWwgKwogICAgbXAuc3JjMTgoZ2F0ZSkgKiBhbXRfczE4X2QwNV9jcm9zc19tb2RfZ2xvYmFsICsKICAgIG1wLnNyYzE5KGdhdGUpICogYW10X3MxOV9kMDVfY3Jvc3NfbW9kX2dsb2JhbCArCiAgICBtcC5zcmMyMChnYXRlKSAqIGFtdF9zMjBfZDA1X2Nyb3NzX21vZF9nbG9iYWwgKwogICAgbXAuc3JjMjEoZ2F0ZSkgKiBhbXRfczIxX2QwNV9jcm9zc19tb2RfZ2xvYmFsICsKICAgIG1wLnNyYzIyKGdhdGUpICogYW10X3MyMl9kMDVfY3Jvc3NfbW9kX2dsb2JhbCArCiAgICBtcC5zcmMyMyhnYXRlKSAqIGFtdF9zMjNfZDA1X2Nyb3NzX21vZF9nbG9iYWwgKwogICAgbXAuc3JjMjQoZ2F0ZSkgKiBhbXRfczI0X2QwNV9jcm9zc19tb2RfZ2xvYmFsICsKICAgIG1wLnNyYzI1KGdhdGUpICogYW10X3MyNV9kMDVfY3Jvc3NfbW9kX2dsb2JhbCArCiAgICBtcC5zcmMyNihnYXRlKSAqIGFtdF9zMjZfZDA1X2Nyb3NzX21vZF9nbG9iYWwgKwogICAgbXAuc3JjMjcoZ2F0ZSkgKiBhbXRfczI3X2QwNV9jcm9zc19tb2RfZ2xvYmFsICsKICAgIG1wLnNyYzI4KGdhdGUpICogYW10X3MyOF9kMDVfY3Jvc3NfbW9kX2dsb2JhbCArCiAgICBtcC5zcmMyOShnYXRlKSAqIGFtdF9zMjlfZDA1X2Nyb3NzX21vZF9nbG9iYWwgKwogICAgbXAuc3JjMzAoZ2F0ZSkgKiBhbXRfczMwX2QwNV9jcm9zc19tb2RfZ2xvYmFsICsKICAgIG1wLnNyYzMxKGdhdGUpICogYW10X3MzMV9kMDVfY3Jvc3NfbW9kX2dsb2JhbCArCiAgICBtcC5zcmMzMihnYXRlKSAqIGFtdF9zMzJfZDA1X2Nyb3NzX21vZF9nbG9iYWwgKwogICAgbXAuc3JjMzMoZ2F0ZSkgKiBhbXRfczMzX2QwNV9jcm9zc19tb2RfZ2xvYmFsICsKICAgIG1wLnNyYzM0KGdhdGUpICogYW10X3MzNF9kMDVfY3Jvc3NfbW9kX2dsb2JhbCArCiAgICBtcC5zcmMzNShnYXRlKSAqIGFtdF9zMzVfZDA1X2Nyb3NzX21vZF9nbG9iYWwgKwogICAgbXAuc3JjMzYoZ2F0ZSkgKiBhbXRfczM2X2QwNV9jcm9zc19tb2RfZ2xvYmFsICsKICAgIG1wLnNyYzM3KGdhdGUpICogYW10X3MzN19kMDVfY3Jvc3NfbW9kX2dsb2JhbCArCiAgICBtcC5zcmMzOChnYXRlKSAqIGFtdF9zMzhfZDA1X2Nyb3NzX21vZF9nbG9iYWwgKwogICAgbXAuc3JjMzkoZ2F0ZSkgKiBhbXRfczM5X2QwNV9jcm9zc19tb2RfZ2xvYmFsICsKICAgIG1wLnNyYzQwKGdhdGUpICogYW10X3M0MF9kMDVfY3Jvc3NfbW9kX2dsb2JhbCArCiAgICBtcC5zcmM0MShnYXRlKSAqIGFtdF9zNDFfZDA1X2Nyb3NzX21vZF9nbG9iYWwgKwogICAgbXAuc3JjNDIoZ2F0ZSkgKiBhbXRfczQyX2QwNV9jcm9zc19tb2RfZ2xvYmFsICsKICAgIG1wLnNyYzQzKGdhdGUpICogYW10X3M0M19kMDVfY3Jvc3NfbW9kX2dsb2JhbCArCiAgICBtcC5zcmM0NChnYXRlKSAqIGFtdF9zNDRfZDA1X2Nyb3NzX21vZF9nbG9iYWwgKwogICAgbXAuc3JjNDUoZ2F0ZSkgKiBhbXRfczQ1X2QwNV9jcm9zc19tb2RfZ2xvYmFsICsKICAgIG1wLnNyYzQ2KGdhdGUpICogYW10X3M0Nl9kMDVfY3Jvc3NfbW9kX2dsb2JhbCArCiAgICBtcC5zcmM0NyhnYXRlKSAqIGFtdF9zNDdfZDA1X2Nyb3NzX21vZF9nbG9iYWw7Cgptb2RfZmVlZGJhY2tfZ2xvYmFsKGdhdGUpID0KICAgIG1wLnNyYzAwKGdhdGUpICogYW10X3MwMF9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzAxKGdhdGUpICogYW10X3MwMV9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzAyKGdhdGUpICogYW10X3MwMl9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzAzKGdhdGUpICogYW10X3MwM19kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzA0KGdhdGUpICogYW10X3MwNF9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzA1KGdhdGUpICogYW10X3MwNV9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzA2KGdhdGUpICogYW10X3MwNl9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzA3KGdhdGUpICogYW10X3MwN19kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzA4KGdhdGUpICogYW10X3MwOF9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzA5KGdhdGUpICogYW10X3MwOV9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzEwKGdhdGUpICogYW10X3MxMF9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzExKGdhdGUpICogYW10X3MxMV9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzEyKGdhdGUpICogYW10X3MxMl9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzEzKGdhdGUpICogYW10X3MxM19kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzE0KGdhdGUpICogYW10X3MxNF9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzE1KGdhdGUpICogYW10X3MxNV9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzE2KGdhdGUpICogYW10X3MxNl9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzE3KGdhdGUpICogYW10X3MxN19kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzE4KGdhdGUpICogYW10X3MxOF9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzE5KGdhdGUpICogYW10X3MxOV9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzIwKGdhdGUpICogYW10X3MyMF9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzIxKGdhdGUpICogYW10X3MyMV9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzIyKGdhdGUpICogYW10X3MyMl9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzIzKGdhdGUpICogYW10X3MyM19kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzI0KGdhdGUpICogYW10X3MyNF9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzI1KGdhdGUpICogYW10X3MyNV9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzI2KGdhdGUpICogYW10X3MyNl9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzI3KGdhdGUpICogYW10X3MyN19kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzI4KGdhdGUpICogYW10X3MyOF9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzI5KGdhdGUpICogYW10X3MyOV9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzMwKGdhdGUpICogYW10X3MzMF9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzMxKGdhdGUpICogYW10X3MzMV9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzMyKGdhdGUpICogYW10X3MzMl9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzMzKGdhdGUpICogYW10X3MzM19kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzM0KGdhdGUpICogYW10X3MzNF9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzM1KGdhdGUpICogYW10X3MzNV9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzM2KGdhdGUpICogYW10X3MzNl9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzM3KGdhdGUpICogYW10X3MzN19kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzM4KGdhdGUpICogYW10X3MzOF9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzM5KGdhdGUpICogYW10X3MzOV9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzQwKGdhdGUpICogYW10X3M0MF9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzQxKGdhdGUpICogYW10X3M0MV9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzQyKGdhdGUpICogYW10X3M0Ml9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzQzKGdhdGUpICogYW10X3M0M19kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzQ0KGdhdGUpICogYW10X3M0NF9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzQ1KGdhdGUpICogYW10X3M0NV9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzQ2KGdhdGUpICogYW10X3M0Nl9kMDZfZmVlZGJhY2tfZ2xvYmFsICsKICAgIG1wLnNyYzQ3KGdhdGUpICogYW10X3M0N19kMDZfZmVlZGJhY2tfZ2xvYmFsOwoKbW9kX2dsb2JhbF9yYXRpbyhnYXRlKSA9CiAgICBtcC5zcmMwMChnYXRlKSAqIGFtdF9zMDBfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMwMShnYXRlKSAqIGFtdF9zMDFfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMwMihnYXRlKSAqIGFtdF9zMDJfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMwMyhnYXRlKSAqIGFtdF9zMDNfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMwNChnYXRlKSAqIGFtdF9zMDRfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMwNShnYXRlKSAqIGFtdF9zMDVfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMwNihnYXRlKSAqIGFtdF9zMDZfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMwNyhnYXRlKSAqIGFtdF9zMDdfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMwOChnYXRlKSAqIGFtdF9zMDhfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMwOShnYXRlKSAqIGFtdF9zMDlfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMxMChnYXRlKSAqIGFtdF9zMTBfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMxMShnYXRlKSAqIGFtdF9zMTFfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMxMihnYXRlKSAqIGFtdF9zMTJfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMxMyhnYXRlKSAqIGFtdF9zMTNfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMxNChnYXRlKSAqIGFtdF9zMTRfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMxNShnYXRlKSAqIGFtdF9zMTVfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMxNihnYXRlKSAqIGFtdF9zMTZfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMxNyhnYXRlKSAqIGFtdF9zMTdfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMxOChnYXRlKSAqIGFtdF9zMThfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMxOShnYXRlKSAqIGFtdF9zMTlfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMyMChnYXRlKSAqIGFtdF9zMjBfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMyMShnYXRlKSAqIGFtdF9zMjFfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMyMihnYXRlKSAqIGFtdF9zMjJfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMyMyhnYXRlKSAqIGFtdF9zMjNfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMyNChnYXRlKSAqIGFtdF9zMjRfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMyNShnYXRlKSAqIGFtdF9zMjVfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMyNihnYXRlKSAqIGFtdF9zMjZfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMyNyhnYXRlKSAqIGFtdF9zMjdfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMyOChnYXRlKSAqIGFtdF9zMjhfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMyOShnYXRlKSAqIGFtdF9zMjlfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMzMChnYXRlKSAqIGFtdF9zMzBfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMzMShnYXRlKSAqIGFtdF9zMzFfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMzMihnYXRlKSAqIGFtdF9zMzJfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMzMyhnYXRlKSAqIGFtdF9zMzNfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMzNChnYXRlKSAqIGFtdF9zMzRfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMzNShnYXRlKSAqIGFtdF9zMzVfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMzNihnYXRlKSAqIGFtdF9zMzZfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMzNyhnYXRlKSAqIGFtdF9zMzdfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMzOChnYXRlKSAqIGFtdF9zMzhfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmMzOShnYXRlKSAqIGFtdF9zMzlfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmM0MChnYXRlKSAqIGFtdF9zNDBfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmM0MShnYXRlKSAqIGFtdF9zNDFfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmM0MihnYXRlKSAqIGFtdF9zNDJfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmM0MyhnYXRlKSAqIGFtdF9zNDNfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmM0NChnYXRlKSAqIGFtdF9zNDRfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmM0NShnYXRlKSAqIGFtdF9zNDVfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmM0NihnYXRlKSAqIGFtdF9zNDZfZDA3X2dsb2JhbF9yYXRpbyArCiAgICBtcC5zcmM0NyhnYXRlKSAqIGFtdF9zNDdfZDA3X2dsb2JhbF9yYXRpbzsKCm1vZF9hbXAoZ2F0ZSkgPQogICAgbXAuc3JjMDAoZ2F0ZSkgKiBhbXRfczAwX2QwOF9hbXAgKwogICAgbXAuc3JjMDEoZ2F0ZSkgKiBhbXRfczAxX2QwOF9hbXAgKwogICAgbXAuc3JjMDIoZ2F0ZSkgKiBhbXRfczAyX2QwOF9hbXAgKwogICAgbXAuc3JjMDMoZ2F0ZSkgKiBhbXRfczAzX2QwOF9hbXAgKwogICAgbXAuc3JjMDQoZ2F0ZSkgKiBhbXRfczA0X2QwOF9hbXAgKwogICAgbXAuc3JjMDUoZ2F0ZSkgKiBhbXRfczA1X2QwOF9hbXAgKwogICAgbXAuc3JjMDYoZ2F0ZSkgKiBhbXRfczA2X2QwOF9hbXAgKwogICAgbXAuc3JjMDcoZ2F0ZSkgKiBhbXRfczA3X2QwOF9hbXAgKwogICAgbXAuc3JjMDgoZ2F0ZSkgKiBhbXRfczA4X2QwOF9hbXAgKwogICAgbXAuc3JjMDkoZ2F0ZSkgKiBhbXRfczA5X2QwOF9hbXAgKwogICAgbXAuc3JjMTAoZ2F0ZSkgKiBhbXRfczEwX2QwOF9hbXAgKwogICAgbXAuc3JjMTEoZ2F0ZSkgKiBhbXRfczExX2QwOF9hbXAgKwogICAgbXAuc3JjMTIoZ2F0ZSkgKiBhbXRfczEyX2QwOF9hbXAgKwogICAgbXAuc3JjMTMoZ2F0ZSkgKiBhbXRfczEzX2QwOF9hbXAgKwogICAgbXAuc3JjMTQoZ2F0ZSkgKiBhbXRfczE0X2QwOF9hbXAgKwogICAgbXAuc3JjMTUoZ2F0ZSkgKiBhbXRfczE1X2QwOF9hbXAgKwogICAgbXAuc3JjMTYoZ2F0ZSkgKiBhbXRfczE2X2QwOF9hbXAgKwogICAgbXAuc3JjMTcoZ2F0ZSkgKiBhbXRfczE3X2QwOF9hbXAgKwogICAgbXAuc3JjMTgoZ2F0ZSkgKiBhbXRfczE4X2QwOF9hbXAgKwogICAgbXAuc3JjMTkoZ2F0ZSkgKiBhbXRfczE5X2QwOF9hbXAgKwogICAgbXAuc3JjMjAoZ2F0ZSkgKiBhbXRfczIwX2QwOF9hbXAgKwogICAgbXAuc3JjMjEoZ2F0ZSkgKiBhbXRfczIxX2QwOF9hbXAgKwogICAgbXAuc3JjMjIoZ2F0ZSkgKiBhbXRfczIyX2QwOF9hbXAgKwogICAgbXAuc3JjMjMoZ2F0ZSkgKiBhbXRfczIzX2QwOF9hbXAgKwogICAgbXAuc3JjMjQoZ2F0ZSkgKiBhbXRfczI0X2QwOF9hbXAgKwogICAgbXAuc3JjMjUoZ2F0ZSkgKiBhbXRfczI1X2QwOF9hbXAgKwogICAgbXAuc3JjMjYoZ2F0ZSkgKiBhbXRfczI2X2QwOF9hbXAgKwogICAgbXAuc3JjMjcoZ2F0ZSkgKiBhbXRfczI3X2QwOF9hbXAgKwogICAgbXAuc3JjMjgoZ2F0ZSkgKiBhbXRfczI4X2QwOF9hbXAgKwogICAgbXAuc3JjMjkoZ2F0ZSkgKiBhbXRfczI5X2QwOF9hbXAgKwogICAgbXAuc3JjMzAoZ2F0ZSkgKiBhbXRfczMwX2QwOF9hbXAgKwogICAgbXAuc3JjMzEoZ2F0ZSkgKiBhbXRfczMxX2QwOF9hbXAgKwogICAgbXAuc3JjMzIoZ2F0ZSkgKiBhbXRfczMyX2QwOF9hbXAgKwogICAgbXAuc3JjMzMoZ2F0ZSkgKiBhbXRfczMzX2QwOF9hbXAgKwogICAgbXAuc3JjMzQoZ2F0ZSkgKiBhbXRfczM0X2QwOF9hbXAgKwogICAgbXAuc3JjMzUoZ2F0ZSkgKiBhbXRfczM1X2QwOF9hbXAgKwogICAgbXAuc3JjMzYoZ2F0ZSkgKiBhbXRfczM2X2QwOF9hbXAgKwogICAgbXAuc3JjMzcoZ2F0ZSkgKiBhbXRfczM3X2QwOF9hbXAgKwogICAgbXAuc3JjMzgoZ2F0ZSkgKiBhbXRfczM4X2QwOF9hbXAgKwogICAgbXAuc3JjMzkoZ2F0ZSkgKiBhbXRfczM5X2QwOF9hbXAgKwogICAgbXAuc3JjNDAoZ2F0ZSkgKiBhbXRfczQwX2QwOF9hbXAgKwogICAgbXAuc3JjNDEoZ2F0ZSkgKiBhbXRfczQxX2QwOF9hbXAgKwogICAgbXAuc3JjNDIoZ2F0ZSkgKiBhbXRfczQyX2QwOF9hbXAgKwogICAgbXAuc3JjNDMoZ2F0ZSkgKiBhbXRfczQzX2QwOF9hbXAgKwogICAgbXAuc3JjNDQoZ2F0ZSkgKiBhbXRfczQ0X2QwOF9hbXAgKwogICAgbXAuc3JjNDUoZ2F0ZSkgKiBhbXRfczQ1X2QwOF9hbXAgKwogICAgbXAuc3JjNDYoZ2F0ZSkgKiBhbXRfczQ2X2QwOF9hbXAgKwogICAgbXAuc3JjNDcoZ2F0ZSkgKiBhbXRfczQ3X2QwOF9hbXA7Cgptb2RfcGFuKGdhdGUpID0KICAgIG1wLnNyYzAwKGdhdGUpICogYW10X3MwMF9kMDlfcGFuICsKICAgIG1wLnNyYzAxKGdhdGUpICogYW10X3MwMV9kMDlfcGFuICsKICAgIG1wLnNyYzAyKGdhdGUpICogYW10X3MwMl9kMDlfcGFuICsKICAgIG1wLnNyYzAzKGdhdGUpICogYW10X3MwM19kMDlfcGFuICsKICAgIG1wLnNyYzA0KGdhdGUpICogYW10X3MwNF9kMDlfcGFuICsKICAgIG1wLnNyYzA1KGdhdGUpICogYW10X3MwNV9kMDlfcGFuICsKICAgIG1wLnNyYzA2KGdhdGUpICogYW10X3MwNl9kMDlfcGFuICsKICAgIG1wLnNyYzA3KGdhdGUpICogYW10X3MwN19kMDlfcGFuICsKICAgIG1wLnNyYzA4KGdhdGUpICogYW10X3MwOF9kMDlfcGFuICsKICAgIG1wLnNyYzA5KGdhdGUpICogYW10X3MwOV9kMDlfcGFuICsKICAgIG1wLnNyYzEwKGdhdGUpICogYW10X3MxMF9kMDlfcGFuICsKICAgIG1wLnNyYzExKGdhdGUpICogYW10X3MxMV9kMDlfcGFuICsKICAgIG1wLnNyYzEyKGdhdGUpICogYW10X3MxMl9kMDlfcGFuICsKICAgIG1wLnNyYzEzKGdhdGUpICogYW10X3MxM19kMDlfcGFuICsKICAgIG1wLnNyYzE0KGdhdGUpICogYW10X3MxNF9kMDlfcGFuICsKICAgIG1wLnNyYzE1KGdhdGUpICogYW10X3MxNV9kMDlfcGFuICsKICAgIG1wLnNyYzE2KGdhdGUpICogYW10X3MxNl9kMDlfcGFuICsKICAgIG1wLnNyYzE3KGdhdGUpICogYW10X3MxN19kMDlfcGFuICsKICAgIG1wLnNyYzE4KGdhdGUpICogYW10X3MxOF9kMDlfcGFuICsKICAgIG1wLnNyYzE5KGdhdGUpICogYW10X3MxOV9kMDlfcGFuICsKICAgIG1wLnNyYzIwKGdhdGUpICogYW10X3MyMF9kMDlfcGFuICsKICAgIG1wLnNyYzIxKGdhdGUpICogYW10X3MyMV9kMDlfcGFuICsKICAgIG1wLnNyYzIyKGdhdGUpICogYW10X3MyMl9kMDlfcGFuICsKICAgIG1wLnNyYzIzKGdhdGUpICogYW10X3MyM19kMDlfcGFuICsKICAgIG1wLnNyYzI0KGdhdGUpICogYW10X3MyNF9kMDlfcGFuICsKICAgIG1wLnNyYzI1KGdhdGUpICogYW10X3MyNV9kMDlfcGFuICsKICAgIG1wLnNyYzI2KGdhdGUpICogYW10X3MyNl9kMDlfcGFuICsKICAgIG1wLnNyYzI3KGdhdGUpICogYW10X3MyN19kMDlfcGFuICsKICAgIG1wLnNyYzI4KGdhdGUpICogYW10X3MyOF9kMDlfcGFuICsKICAgIG1wLnNyYzI5KGdhdGUpICogYW10X3MyOV9kMDlfcGFuICsKICAgIG1wLnNyYzMwKGdhdGUpICogYW10X3MzMF9kMDlfcGFuICsKICAgIG1wLnNyYzMxKGdhdGUpICogYW10X3MzMV9kMDlfcGFuICsKICAgIG1wLnNyYzMyKGdhdGUpICogYW10X3MzMl9kMDlfcGFuICsKICAgIG1wLnNyYzMzKGdhdGUpICogYW10X3MzM19kMDlfcGFuICsKICAgIG1wLnNyYzM0KGdhdGUpICogYW10X3MzNF9kMDlfcGFuICsKICAgIG1wLnNyYzM1KGdhdGUpICogYW10X3MzNV9kMDlfcGFuICsKICAgIG1wLnNyYzM2KGdhdGUpICogYW10X3MzNl9kMDlfcGFuICsKICAgIG1wLnNyYzM3KGdhdGUpICogYW10X3MzN19kMDlfcGFuICsKICAgIG1wLnNyYzM4KGdhdGUpICogYW10X3MzOF9kMDlfcGFuICsKICAgIG1wLnNyYzM5KGdhdGUpICogYW10X3MzOV9kMDlfcGFuICsKICAgIG1wLnNyYzQwKGdhdGUpICogYW10X3M0MF9kMDlfcGFuICsKICAgIG1wLnNyYzQxKGdhdGUpICogYW10X3M0MV9kMDlfcGFuICsKICAgIG1wLnNyYzQyKGdhdGUpICogYW10X3M0Ml9kMDlfcGFuICsKICAgIG1wLnNyYzQzKGdhdGUpICogYW10X3M0M19kMDlfcGFuICsKICAgIG1wLnNyYzQ0KGdhdGUpICogYW10X3M0NF9kMDlfcGFuICsKICAgIG1wLnNyYzQ1KGdhdGUpICogYW10X3M0NV9kMDlfcGFuICsKICAgIG1wLnNyYzQ2KGdhdGUpICogYW10X3M0Nl9kMDlfcGFuICsKICAgIG1wLnNyYzQ3KGdhdGUpICogYW10X3M0N19kMDlfcGFuOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIERlcml2ZWQgc2lnbmFscwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmNlbnQycmF0aW8oYykgPSBwb3coMi4wLCBjIC8gMTIwMC4wKTsKc2VtaTJyYXRpbyhzKSA9IHBvdygyLjAsIHMgLyAxMi4wKTsKCi8vIEJhc2UgZnJlcXVlbmN5OiBmaW5lIHR1bmUgKyBwaXRjaCBtb2QgKHNlbWl0b25lcywgwrExMikKYmFzZV9mcmVxID0gZnJlcSAqIGNlbnQycmF0aW8oZmluZV90dW5lKSAqIHNlbWkycmF0aW8obW9kX3BpdGNoKGdhdGUpICogMTIuMCk7CgovLyBWZWxvY2l0eSBnYWluIOKAlCBrZWVwcyBfdmVsIGFsaXZlCnZlbF9nYWluID0gKDEuMCAtIDAuMykgKyAwLjMgKiB2ZWw7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gRWZmZWN0aXZlIHBlci1vcGVyYXRvciByYXRpb3MgYW5kIGxldmVscyAobW9kIGFwcGxpZWQpCi8vIGdsb2JhbF9yYXRpbyBtb2QgaXMgYW4gYWRkaXRpdmUgcmF0aW8gb2Zmc2V0ICjCsTgpCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpyYXRpb19vZmZzZXQgPSBtb2RfZ2xvYmFsX3JhdGlvKGdhdGUpICogOC4wOwpyMSA9IG1heCgwLjAxLCBvcDFfcmF0aW8gKyByYXRpb19vZmZzZXQpOwpyMiA9IG1heCgwLjAxLCBvcDJfcmF0aW8gKyByYXRpb19vZmZzZXQpOwpyMyA9IG1heCgwLjAxLCBvcDNfcmF0aW8gKyByYXRpb19vZmZzZXQpOwpyNCA9IG1heCgwLjAxLCBvcDRfcmF0aW8gKyByYXRpb19vZmZzZXQpOwoKbGV2MSA9IG1heCgwLjAsIG1pbigxLjAsIG9wMV9sZXZlbCArIG1vZF9vcDFfbGV2ZWwoZ2F0ZSkpKTsKbGV2MiA9IG1heCgwLjAsIG1pbigxLjAsIG9wMl9sZXZlbCArIG1vZF9vcDJfbGV2ZWwoZ2F0ZSkpKTsKbGV2MyA9IG1heCgwLjAsIG1pbigxLjAsIG9wM19sZXZlbCArIG1vZF9vcDNfbGV2ZWwoZ2F0ZSkpKTsKbGV2NCA9IG1heCgwLjAsIG1pbigxLjAsIG9wNF9sZXZlbCArIG1vZF9vcDRfbGV2ZWwoZ2F0ZSkpKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBHbG9iYWwgbXVsdGlwbGllcnMgZm9yIGNyb3NzLW1vZCBhbmQgZmVlZGJhY2suCi8vICgxICsgbW9kKSBpbiBbMCwgMl0gcm91Z2hseTsgY2xhbXAgdG8gc3RheSBzYW5lLgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KY3Jvc3NfbXVsID0gbWF4KDAuMCwgMS4wICsgbW9kX2Nyb3NzX21vZF9nbG9iYWwoZ2F0ZSkpOwpmYl9tdWwgICAgPSBtYXgoMC4wLCAxLjAgKyBtb2RfZmVlZGJhY2tfZ2xvYmFsKGdhdGUpKTsKCm0xMmUgPSBtMTIgKiBjcm9zc19tdWw7ICBtMTNlID0gbTEzICogY3Jvc3NfbXVsOyAgbTE0ZSA9IG0xNCAqIGNyb3NzX211bDsKbTIxZSA9IG0yMSAqIGNyb3NzX211bDsgIG0yM2UgPSBtMjMgKiBjcm9zc19tdWw7ICBtMjRlID0gbTI0ICogY3Jvc3NfbXVsOwptMzFlID0gbTMxICogY3Jvc3NfbXVsOyAgbTMyZSA9IG0zMiAqIGNyb3NzX211bDsgIG0zNGUgPSBtMzQgKiBjcm9zc19tdWw7Cm00MWUgPSBtNDEgKiBjcm9zc19tdWw7ICBtNDJlID0gbTQyICogY3Jvc3NfbXVsOyAgbTQzZSA9IG00MyAqIGNyb3NzX211bDsKCmZiMWUgPSBmYjEgKiBmYl9tdWw7CmZiMmUgPSBmYjIgKiBmYl9tdWw7CmZiM2UgPSBmYjMgKiBmYl9tdWw7CmZiNGUgPSBmYjQgKiBmYl9tdWw7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gNC1vcGVyYXRvciBGTSBidXMg4oCUIGZlZWRiYWNrIGxvb3AgdmlhIH4gb24gYSA0LWNoYW5uZWwgYnVzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpmbWJ1cyhkMSxkMixkMyxkNCkgPQogIG9wMV9vdXQsIG9wMl9vdXQsIG9wM19vdXQsIG9wNF9vdXQKd2l0aCB7CiAgZjEgPSBiYXNlX2ZyZXEgKiByMTsKICBmMiA9IGJhc2VfZnJlcSAqIHIyOwogIGYzID0gYmFzZV9mcmVxICogcjM7CiAgZjQgPSBiYXNlX2ZyZXEgKiByNDsKCiAgb3AxX291dCA9IGxldjEgKgogICAgb3Mub3NjKGYxICsgKG0yMWUqZDIgKyBtMzFlKmQzICsgbTQxZSpkNCArIGZiMWUqZDEpICogZjEpOwoKICBvcDJfb3V0ID0gbGV2MiAqCiAgICBvcy5vc2MoZjIgKyAobTEyZSpkMSArIG0zMmUqZDMgKyBtNDJlKmQ0ICsgZmIyZSpkMikgKiBmMik7CgogIG9wM19vdXQgPSBsZXYzICoKICAgIG9zLm9zYyhmMyArIChtMTNlKmQxICsgbTIzZSpkMiArIG00M2UqZDQgKyBmYjNlKmQzKSAqIGYzKTsKCiAgb3A0X291dCA9IGxldjQgKgogICAgb3Mub3NjKGY0ICsgKG0xNGUqZDEgKyBtMjRlKmQyICsgbTM0ZSpkMyArIGZiNGUqZDQpICogZjQpOwp9OwoKLy8gUm91dGUgNC1jaGFubmVsIGJ1cyB0aHJvdWdoIGZlZWRiYWNrIGxvb3AsIHN1bSBhbGwgb3BzCmZtX291dCA9IChmbWJ1cyB+IChzaS5idXMoNCkpKSA6IChfLCBfLCBfLCBfKSA6PiBfOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIFBvc3QtcHJvY2Vzc2luZwovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc29mdF9jbGlwKHgpID0geCAvIG1heCgwLjAwMSwgMS4wICsgb3V0cHV0X3NhdHVyYXRpb24gKiBhYnMoeCkpOwpocF9vdXQoeCkgICAgPSBmaS5oaWdocGFzcygxLCBvdXRwdXRfaHAsIHgpOwoKLy8gTWFzdGVyIGFtcGxpdHVkZSBkZXN0aW5hdGlvbiAocm91dGUgYW4gQURTUiBoZXJlIGZvciBWQ0EpCmFtcF92YWwgPSBtYXgoMC4wLCBtaW4oMS4wLCBtb2RfYW1wKGdhdGUpKSkgKiBtYXN0ZXJfbGV2ZWwgKiB2ZWxfZ2FpbiAqIDAuMjU7CgovLyBQYW4KcGFuX3ZhbCA9IG1heCgtMS4wLCBtaW4oMS4wLCBtYXN0ZXJfcGFuICsgbW9kX3BhbihnYXRlKSkpOwpwYW5fbCAgID0gY29zKChwYW5fdmFsICsgMS4wKSAqIDAuMjUgKiBtYS5QSSk7CnBhbl9yICAgPSBzaW4oKHBhbl92YWwgKyAxLjApICogMC4yNSAqIG1hLlBJKTsKCi8vIFN0ZXJlbyBzcHJlYWQgdmlhIHNsaWdodCBkZXR1bmluZyAoYXBwbHkgYWZ0ZXIgbWFpbiBGTSBzdW0pCnNwcmVhZF9jZW50cyA9IHN0ZXJlb19zcHJlYWQgKiA1LjA7CnNwcmVhZF9sICAgICA9IGNlbnQycmF0aW8oc3ByZWFkX2NlbnRzKTsKc3ByZWFkX3IgICAgID0gY2VudDJyYXRpbygwLjAgLSBzcHJlYWRfY2VudHMpOwoKbW9ub19wb3N0ID0gZm1fb3V0ICogYW1wX3ZhbCA6IHNvZnRfY2xpcCA6IGhwX291dDsKCnNpZ25hbF9MID0gbW9ub19wb3N0ICogc3ByZWFkX2wgKiBwYW5fbDsKc2lnbmFsX1IgPSBtb25vX3Bvc3QgKiBzcHJlYWRfciAqIHBhbl9yOwoKcHJvY2VzcyA9IHNpZ25hbF9MLCBzaWduYWxfUjsK","inputs": 0,"outputs": 2,"meta": [ { "basics.lib/name": "Faust Basic Element Library" },{ "basics.lib/version": "1.21.0" },{ "compile_options": "-lang wasm -ct 1 -cn modular_fm -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" },{ "envelopes.lib/adsr:author": "Yann Orlarey and Andrey Bundin" },{ "envelopes.lib/author": "GRAME" },{ "envelopes.lib/copyright": "GRAME" },{ "envelopes.lib/license": "LGPL with exception" },{ "envelopes.lib/name": "Faust Envelope Library" },{ "envelopes.lib/version": "1.3.0" },{ "filename": "modular-fm.dsp" },{ "filters.lib/highpass:author": "Julius O. Smith III" },{ "filters.lib/highpass:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/lowpass0_highpass1": "MIT-style STK-4.3 license" },{ "filters.lib/lowpass0_highpass1:author": "Julius O. Smith III" },{ "filters.lib/name": "Faust Filters Library" },{ "filters.lib/tf1:author": "Julius O. Smith III" },{ "filters.lib/tf1:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1:license": "MIT-style STK-4.3 license" },{ "filters.lib/tf1s:author": "Julius O. Smith III" },{ "filters.lib/tf1s:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/tf1s:license": "MIT-style STK-4.3 license" },{ "filters.lib/version": "1.7.1" },{ "maths.lib/author": "GRAME" },{ "maths.lib/copyright": "GRAME" },{ "maths.lib/license": "LGPL with exception" },{ "maths.lib/name": "Faust Math Library" },{ "maths.lib/version": "2.8.1" },{ "name": "modular-fm" },{ "oscillators.lib/lf_sawpos:author": "Bart Brouns, revised by Stéphane Letz" },{ "oscillators.lib/lf_sawpos:licence": "STK-4.3" },{ "oscillators.lib/lf_triangle:author": "Bart Brouns" },{ "oscillators.lib/lf_triangle:licence": "STK-4.3" },{ "oscillators.lib/name": "Faust Oscillator Library" },{ "oscillators.lib/saw1:author": "Bart Brouns" },{ "oscillators.lib/saw1:licence": "STK-4.3" },{ "oscillators.lib/version": "1.6.0" },{ "platform.lib/name": "Generic Platform Library" },{ "platform.lib/version": "1.3.0" },{ "signals.lib/name": "Faust Signal Routing Library" },{ "signals.lib/version": "1.6.0" }],"ui": [ {"type": "vgroup","label": "modular-fm","items": [ {"type": "hslider","label": "0_Hidden/_vel","varname": "fHslider225","shortname": "0_Hidden_vel","address": "/modular-fm/0_Hidden__vel","index": 263356,"meta": [{ "hidden": "1" }],"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "0_Hidden/freq","varname": "fHslider472","shortname": "0_Hidden_freq","address": "/modular-fm/0_Hidden_freq","index": 264352,"meta": [{ "hidden": "1" },{ "unit": "Hz" }],"init": 220,"min": 20,"max": 4000,"step": 0.01},{"type": "button","label": "0_Hidden/gate","varname": "fButton0","shortname": "0_Hidden_gate","address": "/modular-fm/0_Hidden_gate","index": 262932,"meta": [{ "hidden": "1" }]},{"type": "hslider","label": "1_Operators/00_op1_ratio","varname": "fHslider422","shortname": "1_Operators_00_op1_ratio","address": "/modular-fm/1_Operators_00_op1_ratio","index": 264152,"init": 1,"min": 0.125,"max": 16,"step": 0.001},{"type": "hslider","label": "1_Operators/01_op1_level","varname": "fHslider521","shortname": "1_Operators_01_op1_level","address": "/modular-fm/1_Operators_01_op1_level","index": 264556,"init": 0.8,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Operators/02_op2_ratio","varname": "fHslider526","shortname": "1_Operators_02_op2_ratio","address": "/modular-fm/1_Operators_02_op2_ratio","index": 264584,"init": 2,"min": 0.125,"max": 16,"step": 0.001},{"type": "hslider","label": "1_Operators/03_op2_level","varname": "fHslider575","shortname": "1_Operators_03_op2_level","address": "/modular-fm/1_Operators_03_op2_level","index": 264788,"init": 0.6,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Operators/04_op3_ratio","varname": "fHslider580","shortname": "1_Operators_04_op3_ratio","address": "/modular-fm/1_Operators_04_op3_ratio","index": 264816,"init": 3,"min": 0.125,"max": 16,"step": 0.001},{"type": "hslider","label": "1_Operators/05_op3_level","varname": "fHslider629","shortname": "1_Operators_05_op3_level","address": "/modular-fm/1_Operators_05_op3_level","index": 265020,"init": 0.4,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Operators/06_op4_ratio","varname": "fHslider634","shortname": "1_Operators_06_op4_ratio","address": "/modular-fm/1_Operators_06_op4_ratio","index": 265048,"init": 0.5,"min": 0.125,"max": 16,"step": 0.001},{"type": "hslider","label": "1_Operators/07_op4_level","varname": "fHslider683","shortname": "1_Operators_07_op4_level","address": "/modular-fm/1_Operators_07_op4_level","index": 265252,"init": 0.3,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "2_CrossMod/00_m12","varname": "fHslider525","shortname": "2_CrossMod_00_m12","address": "/modular-fm/2_CrossMod_00_m12","index": 264580,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "2_CrossMod/01_m13","varname": "fHslider579","shortname": "2_CrossMod_01_m13","address": "/modular-fm/2_CrossMod_01_m13","index": 264812,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "2_CrossMod/02_m14","varname": "fHslider633","shortname": "2_CrossMod_02_m14","address": "/modular-fm/2_CrossMod_02_m14","index": 265044,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "2_CrossMod/03_m21","varname": "fHslider325","shortname": "2_CrossMod_03_m21","address": "/modular-fm/2_CrossMod_03_m21","index": 263764,"init": 1,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "2_CrossMod/04_m23","varname": "fHslider578","shortname": "2_CrossMod_04_m23","address": "/modular-fm/2_CrossMod_04_m23","index": 264808,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "2_CrossMod/05_m24","varname": "fHslider632","shortname": "2_CrossMod_05_m24","address": "/modular-fm/2_CrossMod_05_m24","index": 265040,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "2_CrossMod/06_m31","varname": "fHslider324","shortname": "2_CrossMod_06_m31","address": "/modular-fm/2_CrossMod_06_m31","index": 263760,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "2_CrossMod/07_m32","varname": "fHslider524","shortname": "2_CrossMod_07_m32","address": "/modular-fm/2_CrossMod_07_m32","index": 264576,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "2_CrossMod/08_m34","varname": "fHslider631","shortname": "2_CrossMod_08_m34","address": "/modular-fm/2_CrossMod_08_m34","index": 265036,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "2_CrossMod/09_m41","varname": "fHslider323","shortname": "2_CrossMod_09_m41","address": "/modular-fm/2_CrossMod_09_m41","index": 263756,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "2_CrossMod/10_m42","varname": "fHslider523","shortname": "2_CrossMod_10_m42","address": "/modular-fm/2_CrossMod_10_m42","index": 264572,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "2_CrossMod/11_m43","varname": "fHslider577","shortname": "2_CrossMod_11_m43","address": "/modular-fm/2_CrossMod_11_m43","index": 264804,"init": 0,"min": 0,"max": 10,"step": 0.001},{"type": "hslider","label": "3_Feedback/00_fb1","varname": "fHslider322","shortname": "3_Feedback_00_fb1","address": "/modular-fm/3_Feedback_00_fb1","index": 263752,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "3_Feedback/01_fb2","varname": "fHslider522","shortname": "3_Feedback_01_fb2","address": "/modular-fm/3_Feedback_01_fb2","index": 264568,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "3_Feedback/02_fb3","varname": "fHslider576","shortname": "3_Feedback_02_fb3","address": "/modular-fm/3_Feedback_02_fb3","index": 264800,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "3_Feedback/03_fb4","varname": "fHslider630","shortname": "3_Feedback_03_fb4","address": "/modular-fm/3_Feedback_03_fb4","index": 265032,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "4_Master/00_master_level","varname": "fHslider684","shortname": "4_Master_00_master_level","address": "/modular-fm/4_Master_00_master_level","index": 265264,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "4_Master/01_fine_tune","varname": "fHslider471","shortname": "4_Master_01_fine_tune","address": "/modular-fm/4_Master_01_fine_tune","index": 264348,"meta": [{ "unit": "ct" }],"init": 0,"min": -50,"max": 50,"step": 0.1},{"type": "hslider","label": "4_Master/02_stereo_spread","varname": "fHslider687","shortname": "4_Master_02_stereo_spread","address": "/modular-fm/4_Master_02_stereo_spread","index": 265296,"init": 0.1,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "4_Master/03_output_saturation","varname": "fHslider685","shortname": "4_Master_03_output_saturation","address": "/modular-fm/4_Master_03_output_saturation","index": 265268,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "4_Master/04_output_hp","varname": "fHslider686","shortname": "4_Master_04_output_hp","address": "/modular-fm/4_Master_04_output_hp","index": 265280,"meta": [{ "unit": "Hz" }],"init": 20,"min": 20,"max": 200,"step": 0.1},{"type": "hslider","label": "4_Master/05_master_pan","varname": "fHslider224","shortname": "4_Master_05_master_pan","address": "/modular-fm/4_Master_05_master_pan","index": 263344,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/00_adsr01_attack","varname": "fHslider219","shortname": "MM_ADSR_00_adsr01_attack","address": "/modular-fm/MM_ADSR_00_adsr01_attack","index": 263324,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/00_adsr01_decay","varname": "fHslider220","shortname": "MM_ADSR_00_adsr01_decay","address": "/modular-fm/MM_ADSR_00_adsr01_decay","index": 263328,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/00_adsr01_enable","varname": "fHslider223","shortname": "MM_ADSR_00_adsr01_enable","address": "/modular-fm/MM_ADSR_00_adsr01_enable","index": 263340,"init": 1,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/00_adsr01_release","varname": "fHslider218","shortname": "MM_ADSR_00_adsr01_release","address": "/modular-fm/MM_ADSR_00_adsr01_release","index": 263320,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/00_adsr01_sustain","varname": "fHslider221","shortname": "MM_ADSR_00_adsr01_sustain","address": "/modular-fm/MM_ADSR_00_adsr01_sustain","index": 263332,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/01_adsr02_attack","varname": "fHslider213","shortname": "MM_ADSR_01_adsr02_attack","address": "/modular-fm/MM_ADSR_01_adsr02_attack","index": 263300,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/01_adsr02_decay","varname": "fHslider214","shortname": "MM_ADSR_01_adsr02_decay","address": "/modular-fm/MM_ADSR_01_adsr02_decay","index": 263304,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/01_adsr02_enable","varname": "fHslider217","shortname": "MM_ADSR_01_adsr02_enable","address": "/modular-fm/MM_ADSR_01_adsr02_enable","index": 263316,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/01_adsr02_release","varname": "fHslider212","shortname": "MM_ADSR_01_adsr02_release","address": "/modular-fm/MM_ADSR_01_adsr02_release","index": 263296,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/01_adsr02_sustain","varname": "fHslider215","shortname": "MM_ADSR_01_adsr02_sustain","address": "/modular-fm/MM_ADSR_01_adsr02_sustain","index": 263308,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/02_adsr03_attack","varname": "fHslider207","shortname": "MM_ADSR_02_adsr03_attack","address": "/modular-fm/MM_ADSR_02_adsr03_attack","index": 263276,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/02_adsr03_decay","varname": "fHslider208","shortname": "MM_ADSR_02_adsr03_decay","address": "/modular-fm/MM_ADSR_02_adsr03_decay","index": 263280,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/02_adsr03_enable","varname": "fHslider211","shortname": "MM_ADSR_02_adsr03_enable","address": "/modular-fm/MM_ADSR_02_adsr03_enable","index": 263292,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/02_adsr03_release","varname": "fHslider206","shortname": "MM_ADSR_02_adsr03_release","address": "/modular-fm/MM_ADSR_02_adsr03_release","index": 263272,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/02_adsr03_sustain","varname": "fHslider209","shortname": "MM_ADSR_02_adsr03_sustain","address": "/modular-fm/MM_ADSR_02_adsr03_sustain","index": 263284,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/03_adsr04_attack","varname": "fHslider201","shortname": "MM_ADSR_03_adsr04_attack","address": "/modular-fm/MM_ADSR_03_adsr04_attack","index": 263252,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/03_adsr04_decay","varname": "fHslider202","shortname": "MM_ADSR_03_adsr04_decay","address": "/modular-fm/MM_ADSR_03_adsr04_decay","index": 263256,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/03_adsr04_enable","varname": "fHslider205","shortname": "MM_ADSR_03_adsr04_enable","address": "/modular-fm/MM_ADSR_03_adsr04_enable","index": 263268,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/03_adsr04_release","varname": "fHslider200","shortname": "MM_ADSR_03_adsr04_release","address": "/modular-fm/MM_ADSR_03_adsr04_release","index": 263248,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/03_adsr04_sustain","varname": "fHslider203","shortname": "MM_ADSR_03_adsr04_sustain","address": "/modular-fm/MM_ADSR_03_adsr04_sustain","index": 263260,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/04_adsr05_attack","varname": "fHslider195","shortname": "MM_ADSR_04_adsr05_attack","address": "/modular-fm/MM_ADSR_04_adsr05_attack","index": 263228,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/04_adsr05_decay","varname": "fHslider196","shortname": "MM_ADSR_04_adsr05_decay","address": "/modular-fm/MM_ADSR_04_adsr05_decay","index": 263232,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/04_adsr05_enable","varname": "fHslider199","shortname": "MM_ADSR_04_adsr05_enable","address": "/modular-fm/MM_ADSR_04_adsr05_enable","index": 263244,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/04_adsr05_release","varname": "fHslider194","shortname": "MM_ADSR_04_adsr05_release","address": "/modular-fm/MM_ADSR_04_adsr05_release","index": 263224,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/04_adsr05_sustain","varname": "fHslider197","shortname": "MM_ADSR_04_adsr05_sustain","address": "/modular-fm/MM_ADSR_04_adsr05_sustain","index": 263236,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/05_adsr06_attack","varname": "fHslider189","shortname": "MM_ADSR_05_adsr06_attack","address": "/modular-fm/MM_ADSR_05_adsr06_attack","index": 263204,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/05_adsr06_decay","varname": "fHslider190","shortname": "MM_ADSR_05_adsr06_decay","address": "/modular-fm/MM_ADSR_05_adsr06_decay","index": 263208,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/05_adsr06_enable","varname": "fHslider193","shortname": "MM_ADSR_05_adsr06_enable","address": "/modular-fm/MM_ADSR_05_adsr06_enable","index": 263220,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/05_adsr06_release","varname": "fHslider188","shortname": "MM_ADSR_05_adsr06_release","address": "/modular-fm/MM_ADSR_05_adsr06_release","index": 263200,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/05_adsr06_sustain","varname": "fHslider191","shortname": "MM_ADSR_05_adsr06_sustain","address": "/modular-fm/MM_ADSR_05_adsr06_sustain","index": 263212,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/06_adsr07_attack","varname": "fHslider183","shortname": "MM_ADSR_06_adsr07_attack","address": "/modular-fm/MM_ADSR_06_adsr07_attack","index": 263180,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/06_adsr07_decay","varname": "fHslider184","shortname": "MM_ADSR_06_adsr07_decay","address": "/modular-fm/MM_ADSR_06_adsr07_decay","index": 263184,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/06_adsr07_enable","varname": "fHslider187","shortname": "MM_ADSR_06_adsr07_enable","address": "/modular-fm/MM_ADSR_06_adsr07_enable","index": 263196,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/06_adsr07_release","varname": "fHslider182","shortname": "MM_ADSR_06_adsr07_release","address": "/modular-fm/MM_ADSR_06_adsr07_release","index": 263176,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/06_adsr07_sustain","varname": "fHslider185","shortname": "MM_ADSR_06_adsr07_sustain","address": "/modular-fm/MM_ADSR_06_adsr07_sustain","index": 263188,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/07_adsr08_attack","varname": "fHslider177","shortname": "MM_ADSR_07_adsr08_attack","address": "/modular-fm/MM_ADSR_07_adsr08_attack","index": 263156,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/07_adsr08_decay","varname": "fHslider178","shortname": "MM_ADSR_07_adsr08_decay","address": "/modular-fm/MM_ADSR_07_adsr08_decay","index": 263160,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/07_adsr08_enable","varname": "fHslider181","shortname": "MM_ADSR_07_adsr08_enable","address": "/modular-fm/MM_ADSR_07_adsr08_enable","index": 263172,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/07_adsr08_release","varname": "fHslider176","shortname": "MM_ADSR_07_adsr08_release","address": "/modular-fm/MM_ADSR_07_adsr08_release","index": 263152,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/07_adsr08_sustain","varname": "fHslider179","shortname": "MM_ADSR_07_adsr08_sustain","address": "/modular-fm/MM_ADSR_07_adsr08_sustain","index": 263164,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/08_adsr09_attack","varname": "fHslider171","shortname": "MM_ADSR_08_adsr09_attack","address": "/modular-fm/MM_ADSR_08_adsr09_attack","index": 263132,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/08_adsr09_decay","varname": "fHslider172","shortname": "MM_ADSR_08_adsr09_decay","address": "/modular-fm/MM_ADSR_08_adsr09_decay","index": 263136,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/08_adsr09_enable","varname": "fHslider175","shortname": "MM_ADSR_08_adsr09_enable","address": "/modular-fm/MM_ADSR_08_adsr09_enable","index": 263148,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/08_adsr09_release","varname": "fHslider170","shortname": "MM_ADSR_08_adsr09_release","address": "/modular-fm/MM_ADSR_08_adsr09_release","index": 263128,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/08_adsr09_sustain","varname": "fHslider173","shortname": "MM_ADSR_08_adsr09_sustain","address": "/modular-fm/MM_ADSR_08_adsr09_sustain","index": 263140,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/09_adsr10_attack","varname": "fHslider165","shortname": "MM_ADSR_09_adsr10_attack","address": "/modular-fm/MM_ADSR_09_adsr10_attack","index": 263108,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/09_adsr10_decay","varname": "fHslider166","shortname": "MM_ADSR_09_adsr10_decay","address": "/modular-fm/MM_ADSR_09_adsr10_decay","index": 263112,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/09_adsr10_enable","varname": "fHslider169","shortname": "MM_ADSR_09_adsr10_enable","address": "/modular-fm/MM_ADSR_09_adsr10_enable","index": 263124,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/09_adsr10_release","varname": "fHslider164","shortname": "MM_ADSR_09_adsr10_release","address": "/modular-fm/MM_ADSR_09_adsr10_release","index": 263104,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/09_adsr10_sustain","varname": "fHslider167","shortname": "MM_ADSR_09_adsr10_sustain","address": "/modular-fm/MM_ADSR_09_adsr10_sustain","index": 263116,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/10_adsr11_attack","varname": "fHslider159","shortname": "MM_ADSR_10_adsr11_attack","address": "/modular-fm/MM_ADSR_10_adsr11_attack","index": 263084,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/10_adsr11_decay","varname": "fHslider160","shortname": "MM_ADSR_10_adsr11_decay","address": "/modular-fm/MM_ADSR_10_adsr11_decay","index": 263088,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/10_adsr11_enable","varname": "fHslider163","shortname": "MM_ADSR_10_adsr11_enable","address": "/modular-fm/MM_ADSR_10_adsr11_enable","index": 263100,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/10_adsr11_release","varname": "fHslider158","shortname": "MM_ADSR_10_adsr11_release","address": "/modular-fm/MM_ADSR_10_adsr11_release","index": 263080,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/10_adsr11_sustain","varname": "fHslider161","shortname": "MM_ADSR_10_adsr11_sustain","address": "/modular-fm/MM_ADSR_10_adsr11_sustain","index": 263092,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/11_adsr12_attack","varname": "fHslider153","shortname": "MM_ADSR_11_adsr12_attack","address": "/modular-fm/MM_ADSR_11_adsr12_attack","index": 263060,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/11_adsr12_decay","varname": "fHslider154","shortname": "MM_ADSR_11_adsr12_decay","address": "/modular-fm/MM_ADSR_11_adsr12_decay","index": 263064,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/11_adsr12_enable","varname": "fHslider157","shortname": "MM_ADSR_11_adsr12_enable","address": "/modular-fm/MM_ADSR_11_adsr12_enable","index": 263076,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/11_adsr12_release","varname": "fHslider152","shortname": "MM_ADSR_11_adsr12_release","address": "/modular-fm/MM_ADSR_11_adsr12_release","index": 263056,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/11_adsr12_sustain","varname": "fHslider155","shortname": "MM_ADSR_11_adsr12_sustain","address": "/modular-fm/MM_ADSR_11_adsr12_sustain","index": 263068,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/12_adsr13_attack","varname": "fHslider147","shortname": "MM_ADSR_12_adsr13_attack","address": "/modular-fm/MM_ADSR_12_adsr13_attack","index": 263036,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/12_adsr13_decay","varname": "fHslider148","shortname": "MM_ADSR_12_adsr13_decay","address": "/modular-fm/MM_ADSR_12_adsr13_decay","index": 263040,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/12_adsr13_enable","varname": "fHslider151","shortname": "MM_ADSR_12_adsr13_enable","address": "/modular-fm/MM_ADSR_12_adsr13_enable","index": 263052,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/12_adsr13_release","varname": "fHslider146","shortname": "MM_ADSR_12_adsr13_release","address": "/modular-fm/MM_ADSR_12_adsr13_release","index": 263032,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/12_adsr13_sustain","varname": "fHslider149","shortname": "MM_ADSR_12_adsr13_sustain","address": "/modular-fm/MM_ADSR_12_adsr13_sustain","index": 263044,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/13_adsr14_attack","varname": "fHslider141","shortname": "MM_ADSR_13_adsr14_attack","address": "/modular-fm/MM_ADSR_13_adsr14_attack","index": 263012,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/13_adsr14_decay","varname": "fHslider142","shortname": "MM_ADSR_13_adsr14_decay","address": "/modular-fm/MM_ADSR_13_adsr14_decay","index": 263016,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/13_adsr14_enable","varname": "fHslider145","shortname": "MM_ADSR_13_adsr14_enable","address": "/modular-fm/MM_ADSR_13_adsr14_enable","index": 263028,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/13_adsr14_release","varname": "fHslider140","shortname": "MM_ADSR_13_adsr14_release","address": "/modular-fm/MM_ADSR_13_adsr14_release","index": 263008,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/13_adsr14_sustain","varname": "fHslider143","shortname": "MM_ADSR_13_adsr14_sustain","address": "/modular-fm/MM_ADSR_13_adsr14_sustain","index": 263020,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/14_adsr15_attack","varname": "fHslider135","shortname": "MM_ADSR_14_adsr15_attack","address": "/modular-fm/MM_ADSR_14_adsr15_attack","index": 262988,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/14_adsr15_decay","varname": "fHslider136","shortname": "MM_ADSR_14_adsr15_decay","address": "/modular-fm/MM_ADSR_14_adsr15_decay","index": 262992,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/14_adsr15_enable","varname": "fHslider139","shortname": "MM_ADSR_14_adsr15_enable","address": "/modular-fm/MM_ADSR_14_adsr15_enable","index": 263004,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/14_adsr15_release","varname": "fHslider134","shortname": "MM_ADSR_14_adsr15_release","address": "/modular-fm/MM_ADSR_14_adsr15_release","index": 262984,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/14_adsr15_sustain","varname": "fHslider137","shortname": "MM_ADSR_14_adsr15_sustain","address": "/modular-fm/MM_ADSR_14_adsr15_sustain","index": 262996,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/15_adsr16_attack","varname": "fHslider129","shortname": "MM_ADSR_15_adsr16_attack","address": "/modular-fm/MM_ADSR_15_adsr16_attack","index": 262964,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/15_adsr16_decay","varname": "fHslider130","shortname": "MM_ADSR_15_adsr16_decay","address": "/modular-fm/MM_ADSR_15_adsr16_decay","index": 262968,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/15_adsr16_enable","varname": "fHslider133","shortname": "MM_ADSR_15_adsr16_enable","address": "/modular-fm/MM_ADSR_15_adsr16_enable","index": 262980,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/15_adsr16_release","varname": "fHslider128","shortname": "MM_ADSR_15_adsr16_release","address": "/modular-fm/MM_ADSR_15_adsr16_release","index": 262952,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/15_adsr16_sustain","varname": "fHslider131","shortname": "MM_ADSR_15_adsr16_sustain","address": "/modular-fm/MM_ADSR_15_adsr16_sustain","index": 262972,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/00_lfo01_enable","varname": "fHslider127","shortname": "MM_LFO_00_lfo01_enable","address": "/modular-fm/MM_LFO_00_lfo01_enable","index": 262928,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/00_lfo01_morph","varname": "fHslider124","shortname": "MM_LFO_00_lfo01_morph","address": "/modular-fm/MM_LFO_00_lfo01_morph","index": 262908,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/00_lfo01_rate","varname": "fHslider125","shortname": "MM_LFO_00_lfo01_rate","address": "/modular-fm/MM_LFO_00_lfo01_rate","index": 262912,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/01_lfo02_enable","varname": "fHslider123","shortname": "MM_LFO_01_lfo02_enable","address": "/modular-fm/MM_LFO_01_lfo02_enable","index": 262904,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/01_lfo02_morph","varname": "fHslider120","shortname": "MM_LFO_01_lfo02_morph","address": "/modular-fm/MM_LFO_01_lfo02_morph","index": 262884,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/01_lfo02_rate","varname": "fHslider121","shortname": "MM_LFO_01_lfo02_rate","address": "/modular-fm/MM_LFO_01_lfo02_rate","index": 262888,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/02_lfo03_enable","varname": "fHslider119","shortname": "MM_LFO_02_lfo03_enable","address": "/modular-fm/MM_LFO_02_lfo03_enable","index": 262880,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/02_lfo03_morph","varname": "fHslider116","shortname": "MM_LFO_02_lfo03_morph","address": "/modular-fm/MM_LFO_02_lfo03_morph","index": 262860,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/02_lfo03_rate","varname": "fHslider117","shortname": "MM_LFO_02_lfo03_rate","address": "/modular-fm/MM_LFO_02_lfo03_rate","index": 262864,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/03_lfo04_enable","varname": "fHslider115","shortname": "MM_LFO_03_lfo04_enable","address": "/modular-fm/MM_LFO_03_lfo04_enable","index": 262856,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/03_lfo04_morph","varname": "fHslider112","shortname": "MM_LFO_03_lfo04_morph","address": "/modular-fm/MM_LFO_03_lfo04_morph","index": 262836,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/03_lfo04_rate","varname": "fHslider113","shortname": "MM_LFO_03_lfo04_rate","address": "/modular-fm/MM_LFO_03_lfo04_rate","index": 262840,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/04_lfo05_enable","varname": "fHslider111","shortname": "MM_LFO_04_lfo05_enable","address": "/modular-fm/MM_LFO_04_lfo05_enable","index": 262832,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/04_lfo05_morph","varname": "fHslider108","shortname": "MM_LFO_04_lfo05_morph","address": "/modular-fm/MM_LFO_04_lfo05_morph","index": 262812,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/04_lfo05_rate","varname": "fHslider109","shortname": "MM_LFO_04_lfo05_rate","address": "/modular-fm/MM_LFO_04_lfo05_rate","index": 262816,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/05_lfo06_enable","varname": "fHslider107","shortname": "MM_LFO_05_lfo06_enable","address": "/modular-fm/MM_LFO_05_lfo06_enable","index": 262808,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/05_lfo06_morph","varname": "fHslider104","shortname": "MM_LFO_05_lfo06_morph","address": "/modular-fm/MM_LFO_05_lfo06_morph","index": 262788,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/05_lfo06_rate","varname": "fHslider105","shortname": "MM_LFO_05_lfo06_rate","address": "/modular-fm/MM_LFO_05_lfo06_rate","index": 262792,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/06_lfo07_enable","varname": "fHslider103","shortname": "MM_LFO_06_lfo07_enable","address": "/modular-fm/MM_LFO_06_lfo07_enable","index": 262784,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/06_lfo07_morph","varname": "fHslider100","shortname": "MM_LFO_06_lfo07_morph","address": "/modular-fm/MM_LFO_06_lfo07_morph","index": 262764,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/06_lfo07_rate","varname": "fHslider101","shortname": "MM_LFO_06_lfo07_rate","address": "/modular-fm/MM_LFO_06_lfo07_rate","index": 262768,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/07_lfo08_enable","varname": "fHslider99","shortname": "MM_LFO_07_lfo08_enable","address": "/modular-fm/MM_LFO_07_lfo08_enable","index": 262760,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/07_lfo08_morph","varname": "fHslider96","shortname": "MM_LFO_07_lfo08_morph","address": "/modular-fm/MM_LFO_07_lfo08_morph","index": 262740,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/07_lfo08_rate","varname": "fHslider97","shortname": "MM_LFO_07_lfo08_rate","address": "/modular-fm/MM_LFO_07_lfo08_rate","index": 262744,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/08_lfo09_enable","varname": "fHslider95","shortname": "MM_LFO_08_lfo09_enable","address": "/modular-fm/MM_LFO_08_lfo09_enable","index": 262736,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/08_lfo09_morph","varname": "fHslider92","shortname": "MM_LFO_08_lfo09_morph","address": "/modular-fm/MM_LFO_08_lfo09_morph","index": 262716,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/08_lfo09_rate","varname": "fHslider93","shortname": "MM_LFO_08_lfo09_rate","address": "/modular-fm/MM_LFO_08_lfo09_rate","index": 262720,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/09_lfo10_enable","varname": "fHslider91","shortname": "MM_LFO_09_lfo10_enable","address": "/modular-fm/MM_LFO_09_lfo10_enable","index": 262712,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/09_lfo10_morph","varname": "fHslider88","shortname": "MM_LFO_09_lfo10_morph","address": "/modular-fm/MM_LFO_09_lfo10_morph","index": 262692,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/09_lfo10_rate","varname": "fHslider89","shortname": "MM_LFO_09_lfo10_rate","address": "/modular-fm/MM_LFO_09_lfo10_rate","index": 262696,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/10_lfo11_enable","varname": "fHslider87","shortname": "MM_LFO_10_lfo11_enable","address": "/modular-fm/MM_LFO_10_lfo11_enable","index": 262688,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/10_lfo11_morph","varname": "fHslider84","shortname": "MM_LFO_10_lfo11_morph","address": "/modular-fm/MM_LFO_10_lfo11_morph","index": 262668,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/10_lfo11_rate","varname": "fHslider85","shortname": "MM_LFO_10_lfo11_rate","address": "/modular-fm/MM_LFO_10_lfo11_rate","index": 262672,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/11_lfo12_enable","varname": "fHslider83","shortname": "MM_LFO_11_lfo12_enable","address": "/modular-fm/MM_LFO_11_lfo12_enable","index": 262664,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/11_lfo12_morph","varname": "fHslider80","shortname": "MM_LFO_11_lfo12_morph","address": "/modular-fm/MM_LFO_11_lfo12_morph","index": 262644,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/11_lfo12_rate","varname": "fHslider81","shortname": "MM_LFO_11_lfo12_rate","address": "/modular-fm/MM_LFO_11_lfo12_rate","index": 262648,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/12_lfo13_enable","varname": "fHslider79","shortname": "MM_LFO_12_lfo13_enable","address": "/modular-fm/MM_LFO_12_lfo13_enable","index": 262640,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/12_lfo13_morph","varname": "fHslider76","shortname": "MM_LFO_12_lfo13_morph","address": "/modular-fm/MM_LFO_12_lfo13_morph","index": 262620,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/12_lfo13_rate","varname": "fHslider77","shortname": "MM_LFO_12_lfo13_rate","address": "/modular-fm/MM_LFO_12_lfo13_rate","index": 262624,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/13_lfo14_enable","varname": "fHslider75","shortname": "MM_LFO_13_lfo14_enable","address": "/modular-fm/MM_LFO_13_lfo14_enable","index": 262616,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/13_lfo14_morph","varname": "fHslider72","shortname": "MM_LFO_13_lfo14_morph","address": "/modular-fm/MM_LFO_13_lfo14_morph","index": 262596,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/13_lfo14_rate","varname": "fHslider73","shortname": "MM_LFO_13_lfo14_rate","address": "/modular-fm/MM_LFO_13_lfo14_rate","index": 262600,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/14_lfo15_enable","varname": "fHslider71","shortname": "MM_LFO_14_lfo15_enable","address": "/modular-fm/MM_LFO_14_lfo15_enable","index": 262592,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/14_lfo15_morph","varname": "fHslider68","shortname": "MM_LFO_14_lfo15_morph","address": "/modular-fm/MM_LFO_14_lfo15_morph","index": 262572,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/14_lfo15_rate","varname": "fHslider69","shortname": "MM_LFO_14_lfo15_rate","address": "/modular-fm/MM_LFO_14_lfo15_rate","index": 262576,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/15_lfo16_enable","varname": "fHslider67","shortname": "MM_LFO_15_lfo16_enable","address": "/modular-fm/MM_LFO_15_lfo16_enable","index": 262568,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/15_lfo16_morph","varname": "fHslider64","shortname": "MM_LFO_15_lfo16_morph","address": "/modular-fm/MM_LFO_15_lfo16_morph","index": 262548,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/15_lfo16_rate","varname": "fHslider65","shortname": "MM_LFO_15_lfo16_rate","address": "/modular-fm/MM_LFO_15_lfo16_rate","index": 262552,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/16_lfo17_enable","varname": "fHslider63","shortname": "MM_LFO_16_lfo17_enable","address": "/modular-fm/MM_LFO_16_lfo17_enable","index": 262544,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/16_lfo17_morph","varname": "fHslider60","shortname": "MM_LFO_16_lfo17_morph","address": "/modular-fm/MM_LFO_16_lfo17_morph","index": 262524,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/16_lfo17_rate","varname": "fHslider61","shortname": "MM_LFO_16_lfo17_rate","address": "/modular-fm/MM_LFO_16_lfo17_rate","index": 262528,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/17_lfo18_enable","varname": "fHslider59","shortname": "MM_LFO_17_lfo18_enable","address": "/modular-fm/MM_LFO_17_lfo18_enable","index": 262520,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/17_lfo18_morph","varname": "fHslider56","shortname": "MM_LFO_17_lfo18_morph","address": "/modular-fm/MM_LFO_17_lfo18_morph","index": 262500,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/17_lfo18_rate","varname": "fHslider57","shortname": "MM_LFO_17_lfo18_rate","address": "/modular-fm/MM_LFO_17_lfo18_rate","index": 262504,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/18_lfo19_enable","varname": "fHslider55","shortname": "MM_LFO_18_lfo19_enable","address": "/modular-fm/MM_LFO_18_lfo19_enable","index": 262496,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/18_lfo19_morph","varname": "fHslider52","shortname": "MM_LFO_18_lfo19_morph","address": "/modular-fm/MM_LFO_18_lfo19_morph","index": 262476,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/18_lfo19_rate","varname": "fHslider53","shortname": "MM_LFO_18_lfo19_rate","address": "/modular-fm/MM_LFO_18_lfo19_rate","index": 262480,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/19_lfo20_enable","varname": "fHslider51","shortname": "MM_LFO_19_lfo20_enable","address": "/modular-fm/MM_LFO_19_lfo20_enable","index": 262472,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/19_lfo20_morph","varname": "fHslider48","shortname": "MM_LFO_19_lfo20_morph","address": "/modular-fm/MM_LFO_19_lfo20_morph","index": 262452,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/19_lfo20_rate","varname": "fHslider49","shortname": "MM_LFO_19_lfo20_rate","address": "/modular-fm/MM_LFO_19_lfo20_rate","index": 262456,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/20_lfo21_enable","varname": "fHslider47","shortname": "MM_LFO_20_lfo21_enable","address": "/modular-fm/MM_LFO_20_lfo21_enable","index": 262448,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/20_lfo21_morph","varname": "fHslider44","shortname": "MM_LFO_20_lfo21_morph","address": "/modular-fm/MM_LFO_20_lfo21_morph","index": 262428,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/20_lfo21_rate","varname": "fHslider45","shortname": "MM_LFO_20_lfo21_rate","address": "/modular-fm/MM_LFO_20_lfo21_rate","index": 262432,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/21_lfo22_enable","varname": "fHslider43","shortname": "MM_LFO_21_lfo22_enable","address": "/modular-fm/MM_LFO_21_lfo22_enable","index": 262424,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/21_lfo22_morph","varname": "fHslider40","shortname": "MM_LFO_21_lfo22_morph","address": "/modular-fm/MM_LFO_21_lfo22_morph","index": 262404,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/21_lfo22_rate","varname": "fHslider41","shortname": "MM_LFO_21_lfo22_rate","address": "/modular-fm/MM_LFO_21_lfo22_rate","index": 262408,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/22_lfo23_enable","varname": "fHslider39","shortname": "MM_LFO_22_lfo23_enable","address": "/modular-fm/MM_LFO_22_lfo23_enable","index": 262400,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/22_lfo23_morph","varname": "fHslider36","shortname": "MM_LFO_22_lfo23_morph","address": "/modular-fm/MM_LFO_22_lfo23_morph","index": 262380,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/22_lfo23_rate","varname": "fHslider37","shortname": "MM_LFO_22_lfo23_rate","address": "/modular-fm/MM_LFO_22_lfo23_rate","index": 262384,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/23_lfo24_enable","varname": "fHslider35","shortname": "MM_LFO_23_lfo24_enable","address": "/modular-fm/MM_LFO_23_lfo24_enable","index": 262376,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/23_lfo24_morph","varname": "fHslider32","shortname": "MM_LFO_23_lfo24_morph","address": "/modular-fm/MM_LFO_23_lfo24_morph","index": 262356,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/23_lfo24_rate","varname": "fHslider33","shortname": "MM_LFO_23_lfo24_rate","address": "/modular-fm/MM_LFO_23_lfo24_rate","index": 262360,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/24_lfo25_enable","varname": "fHslider31","shortname": "MM_LFO_24_lfo25_enable","address": "/modular-fm/MM_LFO_24_lfo25_enable","index": 262352,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/24_lfo25_morph","varname": "fHslider28","shortname": "MM_LFO_24_lfo25_morph","address": "/modular-fm/MM_LFO_24_lfo25_morph","index": 262332,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/24_lfo25_rate","varname": "fHslider29","shortname": "MM_LFO_24_lfo25_rate","address": "/modular-fm/MM_LFO_24_lfo25_rate","index": 262336,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/25_lfo26_enable","varname": "fHslider27","shortname": "MM_LFO_25_lfo26_enable","address": "/modular-fm/MM_LFO_25_lfo26_enable","index": 262328,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/25_lfo26_morph","varname": "fHslider24","shortname": "MM_LFO_25_lfo26_morph","address": "/modular-fm/MM_LFO_25_lfo26_morph","index": 262308,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/25_lfo26_rate","varname": "fHslider25","shortname": "MM_LFO_25_lfo26_rate","address": "/modular-fm/MM_LFO_25_lfo26_rate","index": 262312,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/26_lfo27_enable","varname": "fHslider23","shortname": "MM_LFO_26_lfo27_enable","address": "/modular-fm/MM_LFO_26_lfo27_enable","index": 262304,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/26_lfo27_morph","varname": "fHslider20","shortname": "MM_LFO_26_lfo27_morph","address": "/modular-fm/MM_LFO_26_lfo27_morph","index": 262284,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/26_lfo27_rate","varname": "fHslider21","shortname": "MM_LFO_26_lfo27_rate","address": "/modular-fm/MM_LFO_26_lfo27_rate","index": 262288,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/27_lfo28_enable","varname": "fHslider19","shortname": "MM_LFO_27_lfo28_enable","address": "/modular-fm/MM_LFO_27_lfo28_enable","index": 262280,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/27_lfo28_morph","varname": "fHslider16","shortname": "MM_LFO_27_lfo28_morph","address": "/modular-fm/MM_LFO_27_lfo28_morph","index": 262260,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/27_lfo28_rate","varname": "fHslider17","shortname": "MM_LFO_27_lfo28_rate","address": "/modular-fm/MM_LFO_27_lfo28_rate","index": 262264,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/28_lfo29_enable","varname": "fHslider15","shortname": "MM_LFO_28_lfo29_enable","address": "/modular-fm/MM_LFO_28_lfo29_enable","index": 262256,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/28_lfo29_morph","varname": "fHslider12","shortname": "MM_LFO_28_lfo29_morph","address": "/modular-fm/MM_LFO_28_lfo29_morph","index": 262236,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/28_lfo29_rate","varname": "fHslider13","shortname": "MM_LFO_28_lfo29_rate","address": "/modular-fm/MM_LFO_28_lfo29_rate","index": 262240,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/29_lfo30_enable","varname": "fHslider11","shortname": "MM_LFO_29_lfo30_enable","address": "/modular-fm/MM_LFO_29_lfo30_enable","index": 262232,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/29_lfo30_morph","varname": "fHslider8","shortname": "MM_LFO_29_lfo30_morph","address": "/modular-fm/MM_LFO_29_lfo30_morph","index": 262212,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/29_lfo30_rate","varname": "fHslider9","shortname": "MM_LFO_29_lfo30_rate","address": "/modular-fm/MM_LFO_29_lfo30_rate","index": 262216,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/30_lfo31_enable","varname": "fHslider7","shortname": "MM_LFO_30_lfo31_enable","address": "/modular-fm/MM_LFO_30_lfo31_enable","index": 262208,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/30_lfo31_morph","varname": "fHslider4","shortname": "MM_LFO_30_lfo31_morph","address": "/modular-fm/MM_LFO_30_lfo31_morph","index": 262188,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/30_lfo31_rate","varname": "fHslider5","shortname": "MM_LFO_30_lfo31_rate","address": "/modular-fm/MM_LFO_30_lfo31_rate","index": 262192,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/31_lfo32_enable","varname": "fHslider3","shortname": "MM_LFO_31_lfo32_enable","address": "/modular-fm/MM_LFO_31_lfo32_enable","index": 262184,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/31_lfo32_morph","varname": "fHslider0","shortname": "MM_LFO_31_lfo32_morph","address": "/modular-fm/MM_LFO_31_lfo32_morph","index": 262144,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/31_lfo32_rate","varname": "fHslider1","shortname": "MM_LFO_31_lfo32_rate","address": "/modular-fm/MM_LFO_31_lfo32_rate","index": 262156,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d00_pitch","varname": "fHslider470","shortname": "MM_Matrix_s00_d00_pitch","address": "/modular-fm/MM_Matrix_s00_d00_pitch","index": 264344,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d01_op1_level","varname": "fHslider520","shortname": "MM_Matrix_s00_d01_op1_level","address": "/modular-fm/MM_Matrix_s00_d01_op1_level","index": 264552,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d02_op2_level","varname": "fHslider574","shortname": "MM_Matrix_s00_d02_op2_level","address": "/modular-fm/MM_Matrix_s00_d02_op2_level","index": 264784,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d03_op3_level","varname": "fHslider628","shortname": "MM_Matrix_s00_d03_op3_level","address": "/modular-fm/MM_Matrix_s00_d03_op3_level","index": 265016,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d04_op4_level","varname": "fHslider682","shortname": "MM_Matrix_s00_d04_op4_level","address": "/modular-fm/MM_Matrix_s00_d04_op4_level","index": 265248,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d05_cross_mod_global","varname": "fHslider373","shortname": "MM_Matrix_s00_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s00_d05_cross_mod_global","index": 263956,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d06_feedback_global","varname": "fHslider321","shortname": "MM_Matrix_s00_d06_feedback_global","address": "/modular-fm/MM_Matrix_s00_d06_feedback_global","index": 263748,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d07_global_ratio","varname": "fHslider421","shortname": "MM_Matrix_s00_d07_global_ratio","address": "/modular-fm/MM_Matrix_s00_d07_global_ratio","index": 264148,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d08_amp","varname": "fHslider273","shortname": "MM_Matrix_s00_d08_amp","address": "/modular-fm/MM_Matrix_s00_d08_amp","index": 263556,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d09_pan","varname": "fHslider222","shortname": "MM_Matrix_s00_d09_pan","address": "/modular-fm/MM_Matrix_s00_d09_pan","index": 263336,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d00_pitch","varname": "fHslider469","shortname": "MM_Matrix_s01_d00_pitch","address": "/modular-fm/MM_Matrix_s01_d00_pitch","index": 264340,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d01_op1_level","varname": "fHslider519","shortname": "MM_Matrix_s01_d01_op1_level","address": "/modular-fm/MM_Matrix_s01_d01_op1_level","index": 264548,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d02_op2_level","varname": "fHslider573","shortname": "MM_Matrix_s01_d02_op2_level","address": "/modular-fm/MM_Matrix_s01_d02_op2_level","index": 264780,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d03_op3_level","varname": "fHslider627","shortname": "MM_Matrix_s01_d03_op3_level","address": "/modular-fm/MM_Matrix_s01_d03_op3_level","index": 265012,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d04_op4_level","varname": "fHslider681","shortname": "MM_Matrix_s01_d04_op4_level","address": "/modular-fm/MM_Matrix_s01_d04_op4_level","index": 265244,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d05_cross_mod_global","varname": "fHslider372","shortname": "MM_Matrix_s01_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s01_d05_cross_mod_global","index": 263952,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d06_feedback_global","varname": "fHslider320","shortname": "MM_Matrix_s01_d06_feedback_global","address": "/modular-fm/MM_Matrix_s01_d06_feedback_global","index": 263744,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d07_global_ratio","varname": "fHslider420","shortname": "MM_Matrix_s01_d07_global_ratio","address": "/modular-fm/MM_Matrix_s01_d07_global_ratio","index": 264144,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d08_amp","varname": "fHslider272","shortname": "MM_Matrix_s01_d08_amp","address": "/modular-fm/MM_Matrix_s01_d08_amp","index": 263552,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d09_pan","varname": "fHslider216","shortname": "MM_Matrix_s01_d09_pan","address": "/modular-fm/MM_Matrix_s01_d09_pan","index": 263312,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d00_pitch","varname": "fHslider468","shortname": "MM_Matrix_s02_d00_pitch","address": "/modular-fm/MM_Matrix_s02_d00_pitch","index": 264336,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d01_op1_level","varname": "fHslider518","shortname": "MM_Matrix_s02_d01_op1_level","address": "/modular-fm/MM_Matrix_s02_d01_op1_level","index": 264544,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d02_op2_level","varname": "fHslider572","shortname": "MM_Matrix_s02_d02_op2_level","address": "/modular-fm/MM_Matrix_s02_d02_op2_level","index": 264776,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d03_op3_level","varname": "fHslider626","shortname": "MM_Matrix_s02_d03_op3_level","address": "/modular-fm/MM_Matrix_s02_d03_op3_level","index": 265008,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d04_op4_level","varname": "fHslider680","shortname": "MM_Matrix_s02_d04_op4_level","address": "/modular-fm/MM_Matrix_s02_d04_op4_level","index": 265240,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d05_cross_mod_global","varname": "fHslider371","shortname": "MM_Matrix_s02_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s02_d05_cross_mod_global","index": 263948,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d06_feedback_global","varname": "fHslider319","shortname": "MM_Matrix_s02_d06_feedback_global","address": "/modular-fm/MM_Matrix_s02_d06_feedback_global","index": 263740,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d07_global_ratio","varname": "fHslider419","shortname": "MM_Matrix_s02_d07_global_ratio","address": "/modular-fm/MM_Matrix_s02_d07_global_ratio","index": 264140,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d08_amp","varname": "fHslider271","shortname": "MM_Matrix_s02_d08_amp","address": "/modular-fm/MM_Matrix_s02_d08_amp","index": 263548,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d09_pan","varname": "fHslider210","shortname": "MM_Matrix_s02_d09_pan","address": "/modular-fm/MM_Matrix_s02_d09_pan","index": 263288,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d00_pitch","varname": "fHslider467","shortname": "MM_Matrix_s03_d00_pitch","address": "/modular-fm/MM_Matrix_s03_d00_pitch","index": 264332,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d01_op1_level","varname": "fHslider517","shortname": "MM_Matrix_s03_d01_op1_level","address": "/modular-fm/MM_Matrix_s03_d01_op1_level","index": 264540,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d02_op2_level","varname": "fHslider571","shortname": "MM_Matrix_s03_d02_op2_level","address": "/modular-fm/MM_Matrix_s03_d02_op2_level","index": 264772,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d03_op3_level","varname": "fHslider625","shortname": "MM_Matrix_s03_d03_op3_level","address": "/modular-fm/MM_Matrix_s03_d03_op3_level","index": 265004,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d04_op4_level","varname": "fHslider679","shortname": "MM_Matrix_s03_d04_op4_level","address": "/modular-fm/MM_Matrix_s03_d04_op4_level","index": 265236,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d05_cross_mod_global","varname": "fHslider370","shortname": "MM_Matrix_s03_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s03_d05_cross_mod_global","index": 263944,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d06_feedback_global","varname": "fHslider318","shortname": "MM_Matrix_s03_d06_feedback_global","address": "/modular-fm/MM_Matrix_s03_d06_feedback_global","index": 263736,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d07_global_ratio","varname": "fHslider418","shortname": "MM_Matrix_s03_d07_global_ratio","address": "/modular-fm/MM_Matrix_s03_d07_global_ratio","index": 264136,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d08_amp","varname": "fHslider270","shortname": "MM_Matrix_s03_d08_amp","address": "/modular-fm/MM_Matrix_s03_d08_amp","index": 263544,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d09_pan","varname": "fHslider204","shortname": "MM_Matrix_s03_d09_pan","address": "/modular-fm/MM_Matrix_s03_d09_pan","index": 263264,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d00_pitch","varname": "fHslider466","shortname": "MM_Matrix_s04_d00_pitch","address": "/modular-fm/MM_Matrix_s04_d00_pitch","index": 264328,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d01_op1_level","varname": "fHslider516","shortname": "MM_Matrix_s04_d01_op1_level","address": "/modular-fm/MM_Matrix_s04_d01_op1_level","index": 264536,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d02_op2_level","varname": "fHslider570","shortname": "MM_Matrix_s04_d02_op2_level","address": "/modular-fm/MM_Matrix_s04_d02_op2_level","index": 264768,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d03_op3_level","varname": "fHslider624","shortname": "MM_Matrix_s04_d03_op3_level","address": "/modular-fm/MM_Matrix_s04_d03_op3_level","index": 265000,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d04_op4_level","varname": "fHslider678","shortname": "MM_Matrix_s04_d04_op4_level","address": "/modular-fm/MM_Matrix_s04_d04_op4_level","index": 265232,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d05_cross_mod_global","varname": "fHslider369","shortname": "MM_Matrix_s04_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s04_d05_cross_mod_global","index": 263940,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d06_feedback_global","varname": "fHslider317","shortname": "MM_Matrix_s04_d06_feedback_global","address": "/modular-fm/MM_Matrix_s04_d06_feedback_global","index": 263732,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d07_global_ratio","varname": "fHslider417","shortname": "MM_Matrix_s04_d07_global_ratio","address": "/modular-fm/MM_Matrix_s04_d07_global_ratio","index": 264132,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d08_amp","varname": "fHslider269","shortname": "MM_Matrix_s04_d08_amp","address": "/modular-fm/MM_Matrix_s04_d08_amp","index": 263540,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d09_pan","varname": "fHslider198","shortname": "MM_Matrix_s04_d09_pan","address": "/modular-fm/MM_Matrix_s04_d09_pan","index": 263240,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d00_pitch","varname": "fHslider465","shortname": "MM_Matrix_s05_d00_pitch","address": "/modular-fm/MM_Matrix_s05_d00_pitch","index": 264324,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d01_op1_level","varname": "fHslider515","shortname": "MM_Matrix_s05_d01_op1_level","address": "/modular-fm/MM_Matrix_s05_d01_op1_level","index": 264532,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d02_op2_level","varname": "fHslider569","shortname": "MM_Matrix_s05_d02_op2_level","address": "/modular-fm/MM_Matrix_s05_d02_op2_level","index": 264764,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d03_op3_level","varname": "fHslider623","shortname": "MM_Matrix_s05_d03_op3_level","address": "/modular-fm/MM_Matrix_s05_d03_op3_level","index": 264996,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d04_op4_level","varname": "fHslider677","shortname": "MM_Matrix_s05_d04_op4_level","address": "/modular-fm/MM_Matrix_s05_d04_op4_level","index": 265228,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d05_cross_mod_global","varname": "fHslider368","shortname": "MM_Matrix_s05_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s05_d05_cross_mod_global","index": 263936,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d06_feedback_global","varname": "fHslider316","shortname": "MM_Matrix_s05_d06_feedback_global","address": "/modular-fm/MM_Matrix_s05_d06_feedback_global","index": 263728,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d07_global_ratio","varname": "fHslider416","shortname": "MM_Matrix_s05_d07_global_ratio","address": "/modular-fm/MM_Matrix_s05_d07_global_ratio","index": 264128,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d08_amp","varname": "fHslider268","shortname": "MM_Matrix_s05_d08_amp","address": "/modular-fm/MM_Matrix_s05_d08_amp","index": 263536,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d09_pan","varname": "fHslider192","shortname": "MM_Matrix_s05_d09_pan","address": "/modular-fm/MM_Matrix_s05_d09_pan","index": 263216,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d00_pitch","varname": "fHslider464","shortname": "MM_Matrix_s06_d00_pitch","address": "/modular-fm/MM_Matrix_s06_d00_pitch","index": 264320,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d01_op1_level","varname": "fHslider514","shortname": "MM_Matrix_s06_d01_op1_level","address": "/modular-fm/MM_Matrix_s06_d01_op1_level","index": 264528,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d02_op2_level","varname": "fHslider568","shortname": "MM_Matrix_s06_d02_op2_level","address": "/modular-fm/MM_Matrix_s06_d02_op2_level","index": 264760,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d03_op3_level","varname": "fHslider622","shortname": "MM_Matrix_s06_d03_op3_level","address": "/modular-fm/MM_Matrix_s06_d03_op3_level","index": 264992,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d04_op4_level","varname": "fHslider676","shortname": "MM_Matrix_s06_d04_op4_level","address": "/modular-fm/MM_Matrix_s06_d04_op4_level","index": 265224,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d05_cross_mod_global","varname": "fHslider367","shortname": "MM_Matrix_s06_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s06_d05_cross_mod_global","index": 263932,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d06_feedback_global","varname": "fHslider315","shortname": "MM_Matrix_s06_d06_feedback_global","address": "/modular-fm/MM_Matrix_s06_d06_feedback_global","index": 263724,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d07_global_ratio","varname": "fHslider415","shortname": "MM_Matrix_s06_d07_global_ratio","address": "/modular-fm/MM_Matrix_s06_d07_global_ratio","index": 264124,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d08_amp","varname": "fHslider267","shortname": "MM_Matrix_s06_d08_amp","address": "/modular-fm/MM_Matrix_s06_d08_amp","index": 263532,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d09_pan","varname": "fHslider186","shortname": "MM_Matrix_s06_d09_pan","address": "/modular-fm/MM_Matrix_s06_d09_pan","index": 263192,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d00_pitch","varname": "fHslider463","shortname": "MM_Matrix_s07_d00_pitch","address": "/modular-fm/MM_Matrix_s07_d00_pitch","index": 264316,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d01_op1_level","varname": "fHslider513","shortname": "MM_Matrix_s07_d01_op1_level","address": "/modular-fm/MM_Matrix_s07_d01_op1_level","index": 264524,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d02_op2_level","varname": "fHslider567","shortname": "MM_Matrix_s07_d02_op2_level","address": "/modular-fm/MM_Matrix_s07_d02_op2_level","index": 264756,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d03_op3_level","varname": "fHslider621","shortname": "MM_Matrix_s07_d03_op3_level","address": "/modular-fm/MM_Matrix_s07_d03_op3_level","index": 264988,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d04_op4_level","varname": "fHslider675","shortname": "MM_Matrix_s07_d04_op4_level","address": "/modular-fm/MM_Matrix_s07_d04_op4_level","index": 265220,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d05_cross_mod_global","varname": "fHslider366","shortname": "MM_Matrix_s07_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s07_d05_cross_mod_global","index": 263928,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d06_feedback_global","varname": "fHslider314","shortname": "MM_Matrix_s07_d06_feedback_global","address": "/modular-fm/MM_Matrix_s07_d06_feedback_global","index": 263720,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d07_global_ratio","varname": "fHslider414","shortname": "MM_Matrix_s07_d07_global_ratio","address": "/modular-fm/MM_Matrix_s07_d07_global_ratio","index": 264120,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d08_amp","varname": "fHslider266","shortname": "MM_Matrix_s07_d08_amp","address": "/modular-fm/MM_Matrix_s07_d08_amp","index": 263528,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d09_pan","varname": "fHslider180","shortname": "MM_Matrix_s07_d09_pan","address": "/modular-fm/MM_Matrix_s07_d09_pan","index": 263168,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d00_pitch","varname": "fHslider462","shortname": "MM_Matrix_s08_d00_pitch","address": "/modular-fm/MM_Matrix_s08_d00_pitch","index": 264312,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d01_op1_level","varname": "fHslider512","shortname": "MM_Matrix_s08_d01_op1_level","address": "/modular-fm/MM_Matrix_s08_d01_op1_level","index": 264520,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d02_op2_level","varname": "fHslider566","shortname": "MM_Matrix_s08_d02_op2_level","address": "/modular-fm/MM_Matrix_s08_d02_op2_level","index": 264752,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d03_op3_level","varname": "fHslider620","shortname": "MM_Matrix_s08_d03_op3_level","address": "/modular-fm/MM_Matrix_s08_d03_op3_level","index": 264984,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d04_op4_level","varname": "fHslider674","shortname": "MM_Matrix_s08_d04_op4_level","address": "/modular-fm/MM_Matrix_s08_d04_op4_level","index": 265216,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d05_cross_mod_global","varname": "fHslider365","shortname": "MM_Matrix_s08_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s08_d05_cross_mod_global","index": 263924,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d06_feedback_global","varname": "fHslider313","shortname": "MM_Matrix_s08_d06_feedback_global","address": "/modular-fm/MM_Matrix_s08_d06_feedback_global","index": 263716,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d07_global_ratio","varname": "fHslider413","shortname": "MM_Matrix_s08_d07_global_ratio","address": "/modular-fm/MM_Matrix_s08_d07_global_ratio","index": 264116,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d08_amp","varname": "fHslider265","shortname": "MM_Matrix_s08_d08_amp","address": "/modular-fm/MM_Matrix_s08_d08_amp","index": 263524,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d09_pan","varname": "fHslider174","shortname": "MM_Matrix_s08_d09_pan","address": "/modular-fm/MM_Matrix_s08_d09_pan","index": 263144,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d00_pitch","varname": "fHslider461","shortname": "MM_Matrix_s09_d00_pitch","address": "/modular-fm/MM_Matrix_s09_d00_pitch","index": 264308,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d01_op1_level","varname": "fHslider511","shortname": "MM_Matrix_s09_d01_op1_level","address": "/modular-fm/MM_Matrix_s09_d01_op1_level","index": 264516,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d02_op2_level","varname": "fHslider565","shortname": "MM_Matrix_s09_d02_op2_level","address": "/modular-fm/MM_Matrix_s09_d02_op2_level","index": 264748,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d03_op3_level","varname": "fHslider619","shortname": "MM_Matrix_s09_d03_op3_level","address": "/modular-fm/MM_Matrix_s09_d03_op3_level","index": 264980,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d04_op4_level","varname": "fHslider673","shortname": "MM_Matrix_s09_d04_op4_level","address": "/modular-fm/MM_Matrix_s09_d04_op4_level","index": 265212,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d05_cross_mod_global","varname": "fHslider364","shortname": "MM_Matrix_s09_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s09_d05_cross_mod_global","index": 263920,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d06_feedback_global","varname": "fHslider312","shortname": "MM_Matrix_s09_d06_feedback_global","address": "/modular-fm/MM_Matrix_s09_d06_feedback_global","index": 263712,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d07_global_ratio","varname": "fHslider412","shortname": "MM_Matrix_s09_d07_global_ratio","address": "/modular-fm/MM_Matrix_s09_d07_global_ratio","index": 264112,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d08_amp","varname": "fHslider264","shortname": "MM_Matrix_s09_d08_amp","address": "/modular-fm/MM_Matrix_s09_d08_amp","index": 263520,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d09_pan","varname": "fHslider168","shortname": "MM_Matrix_s09_d09_pan","address": "/modular-fm/MM_Matrix_s09_d09_pan","index": 263120,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d00_pitch","varname": "fHslider460","shortname": "MM_Matrix_s10_d00_pitch","address": "/modular-fm/MM_Matrix_s10_d00_pitch","index": 264304,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d01_op1_level","varname": "fHslider510","shortname": "MM_Matrix_s10_d01_op1_level","address": "/modular-fm/MM_Matrix_s10_d01_op1_level","index": 264512,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d02_op2_level","varname": "fHslider564","shortname": "MM_Matrix_s10_d02_op2_level","address": "/modular-fm/MM_Matrix_s10_d02_op2_level","index": 264744,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d03_op3_level","varname": "fHslider618","shortname": "MM_Matrix_s10_d03_op3_level","address": "/modular-fm/MM_Matrix_s10_d03_op3_level","index": 264976,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d04_op4_level","varname": "fHslider672","shortname": "MM_Matrix_s10_d04_op4_level","address": "/modular-fm/MM_Matrix_s10_d04_op4_level","index": 265208,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d05_cross_mod_global","varname": "fHslider363","shortname": "MM_Matrix_s10_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s10_d05_cross_mod_global","index": 263916,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d06_feedback_global","varname": "fHslider311","shortname": "MM_Matrix_s10_d06_feedback_global","address": "/modular-fm/MM_Matrix_s10_d06_feedback_global","index": 263708,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d07_global_ratio","varname": "fHslider411","shortname": "MM_Matrix_s10_d07_global_ratio","address": "/modular-fm/MM_Matrix_s10_d07_global_ratio","index": 264108,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d08_amp","varname": "fHslider263","shortname": "MM_Matrix_s10_d08_amp","address": "/modular-fm/MM_Matrix_s10_d08_amp","index": 263516,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d09_pan","varname": "fHslider162","shortname": "MM_Matrix_s10_d09_pan","address": "/modular-fm/MM_Matrix_s10_d09_pan","index": 263096,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d00_pitch","varname": "fHslider459","shortname": "MM_Matrix_s11_d00_pitch","address": "/modular-fm/MM_Matrix_s11_d00_pitch","index": 264300,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d01_op1_level","varname": "fHslider509","shortname": "MM_Matrix_s11_d01_op1_level","address": "/modular-fm/MM_Matrix_s11_d01_op1_level","index": 264508,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d02_op2_level","varname": "fHslider563","shortname": "MM_Matrix_s11_d02_op2_level","address": "/modular-fm/MM_Matrix_s11_d02_op2_level","index": 264740,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d03_op3_level","varname": "fHslider617","shortname": "MM_Matrix_s11_d03_op3_level","address": "/modular-fm/MM_Matrix_s11_d03_op3_level","index": 264972,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d04_op4_level","varname": "fHslider671","shortname": "MM_Matrix_s11_d04_op4_level","address": "/modular-fm/MM_Matrix_s11_d04_op4_level","index": 265204,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d05_cross_mod_global","varname": "fHslider362","shortname": "MM_Matrix_s11_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s11_d05_cross_mod_global","index": 263912,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d06_feedback_global","varname": "fHslider310","shortname": "MM_Matrix_s11_d06_feedback_global","address": "/modular-fm/MM_Matrix_s11_d06_feedback_global","index": 263704,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d07_global_ratio","varname": "fHslider410","shortname": "MM_Matrix_s11_d07_global_ratio","address": "/modular-fm/MM_Matrix_s11_d07_global_ratio","index": 264104,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d08_amp","varname": "fHslider262","shortname": "MM_Matrix_s11_d08_amp","address": "/modular-fm/MM_Matrix_s11_d08_amp","index": 263512,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d09_pan","varname": "fHslider156","shortname": "MM_Matrix_s11_d09_pan","address": "/modular-fm/MM_Matrix_s11_d09_pan","index": 263072,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d00_pitch","varname": "fHslider458","shortname": "MM_Matrix_s12_d00_pitch","address": "/modular-fm/MM_Matrix_s12_d00_pitch","index": 264296,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d01_op1_level","varname": "fHslider508","shortname": "MM_Matrix_s12_d01_op1_level","address": "/modular-fm/MM_Matrix_s12_d01_op1_level","index": 264504,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d02_op2_level","varname": "fHslider562","shortname": "MM_Matrix_s12_d02_op2_level","address": "/modular-fm/MM_Matrix_s12_d02_op2_level","index": 264736,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d03_op3_level","varname": "fHslider616","shortname": "MM_Matrix_s12_d03_op3_level","address": "/modular-fm/MM_Matrix_s12_d03_op3_level","index": 264968,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d04_op4_level","varname": "fHslider670","shortname": "MM_Matrix_s12_d04_op4_level","address": "/modular-fm/MM_Matrix_s12_d04_op4_level","index": 265200,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d05_cross_mod_global","varname": "fHslider361","shortname": "MM_Matrix_s12_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s12_d05_cross_mod_global","index": 263908,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d06_feedback_global","varname": "fHslider309","shortname": "MM_Matrix_s12_d06_feedback_global","address": "/modular-fm/MM_Matrix_s12_d06_feedback_global","index": 263700,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d07_global_ratio","varname": "fHslider409","shortname": "MM_Matrix_s12_d07_global_ratio","address": "/modular-fm/MM_Matrix_s12_d07_global_ratio","index": 264100,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d08_amp","varname": "fHslider261","shortname": "MM_Matrix_s12_d08_amp","address": "/modular-fm/MM_Matrix_s12_d08_amp","index": 263508,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d09_pan","varname": "fHslider150","shortname": "MM_Matrix_s12_d09_pan","address": "/modular-fm/MM_Matrix_s12_d09_pan","index": 263048,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d00_pitch","varname": "fHslider457","shortname": "MM_Matrix_s13_d00_pitch","address": "/modular-fm/MM_Matrix_s13_d00_pitch","index": 264292,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d01_op1_level","varname": "fHslider507","shortname": "MM_Matrix_s13_d01_op1_level","address": "/modular-fm/MM_Matrix_s13_d01_op1_level","index": 264500,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d02_op2_level","varname": "fHslider561","shortname": "MM_Matrix_s13_d02_op2_level","address": "/modular-fm/MM_Matrix_s13_d02_op2_level","index": 264732,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d03_op3_level","varname": "fHslider615","shortname": "MM_Matrix_s13_d03_op3_level","address": "/modular-fm/MM_Matrix_s13_d03_op3_level","index": 264964,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d04_op4_level","varname": "fHslider669","shortname": "MM_Matrix_s13_d04_op4_level","address": "/modular-fm/MM_Matrix_s13_d04_op4_level","index": 265196,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d05_cross_mod_global","varname": "fHslider360","shortname": "MM_Matrix_s13_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s13_d05_cross_mod_global","index": 263904,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d06_feedback_global","varname": "fHslider308","shortname": "MM_Matrix_s13_d06_feedback_global","address": "/modular-fm/MM_Matrix_s13_d06_feedback_global","index": 263696,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d07_global_ratio","varname": "fHslider408","shortname": "MM_Matrix_s13_d07_global_ratio","address": "/modular-fm/MM_Matrix_s13_d07_global_ratio","index": 264096,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d08_amp","varname": "fHslider260","shortname": "MM_Matrix_s13_d08_amp","address": "/modular-fm/MM_Matrix_s13_d08_amp","index": 263504,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d09_pan","varname": "fHslider144","shortname": "MM_Matrix_s13_d09_pan","address": "/modular-fm/MM_Matrix_s13_d09_pan","index": 263024,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d00_pitch","varname": "fHslider456","shortname": "MM_Matrix_s14_d00_pitch","address": "/modular-fm/MM_Matrix_s14_d00_pitch","index": 264288,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d01_op1_level","varname": "fHslider506","shortname": "MM_Matrix_s14_d01_op1_level","address": "/modular-fm/MM_Matrix_s14_d01_op1_level","index": 264496,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d02_op2_level","varname": "fHslider560","shortname": "MM_Matrix_s14_d02_op2_level","address": "/modular-fm/MM_Matrix_s14_d02_op2_level","index": 264728,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d03_op3_level","varname": "fHslider614","shortname": "MM_Matrix_s14_d03_op3_level","address": "/modular-fm/MM_Matrix_s14_d03_op3_level","index": 264960,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d04_op4_level","varname": "fHslider668","shortname": "MM_Matrix_s14_d04_op4_level","address": "/modular-fm/MM_Matrix_s14_d04_op4_level","index": 265192,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d05_cross_mod_global","varname": "fHslider359","shortname": "MM_Matrix_s14_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s14_d05_cross_mod_global","index": 263900,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d06_feedback_global","varname": "fHslider307","shortname": "MM_Matrix_s14_d06_feedback_global","address": "/modular-fm/MM_Matrix_s14_d06_feedback_global","index": 263692,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d07_global_ratio","varname": "fHslider407","shortname": "MM_Matrix_s14_d07_global_ratio","address": "/modular-fm/MM_Matrix_s14_d07_global_ratio","index": 264092,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d08_amp","varname": "fHslider259","shortname": "MM_Matrix_s14_d08_amp","address": "/modular-fm/MM_Matrix_s14_d08_amp","index": 263500,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d09_pan","varname": "fHslider138","shortname": "MM_Matrix_s14_d09_pan","address": "/modular-fm/MM_Matrix_s14_d09_pan","index": 263000,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d00_pitch","varname": "fHslider455","shortname": "MM_Matrix_s15_d00_pitch","address": "/modular-fm/MM_Matrix_s15_d00_pitch","index": 264284,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d01_op1_level","varname": "fHslider505","shortname": "MM_Matrix_s15_d01_op1_level","address": "/modular-fm/MM_Matrix_s15_d01_op1_level","index": 264492,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d02_op2_level","varname": "fHslider559","shortname": "MM_Matrix_s15_d02_op2_level","address": "/modular-fm/MM_Matrix_s15_d02_op2_level","index": 264724,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d03_op3_level","varname": "fHslider613","shortname": "MM_Matrix_s15_d03_op3_level","address": "/modular-fm/MM_Matrix_s15_d03_op3_level","index": 264956,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d04_op4_level","varname": "fHslider667","shortname": "MM_Matrix_s15_d04_op4_level","address": "/modular-fm/MM_Matrix_s15_d04_op4_level","index": 265188,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d05_cross_mod_global","varname": "fHslider358","shortname": "MM_Matrix_s15_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s15_d05_cross_mod_global","index": 263896,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d06_feedback_global","varname": "fHslider306","shortname": "MM_Matrix_s15_d06_feedback_global","address": "/modular-fm/MM_Matrix_s15_d06_feedback_global","index": 263688,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d07_global_ratio","varname": "fHslider406","shortname": "MM_Matrix_s15_d07_global_ratio","address": "/modular-fm/MM_Matrix_s15_d07_global_ratio","index": 264088,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d08_amp","varname": "fHslider258","shortname": "MM_Matrix_s15_d08_amp","address": "/modular-fm/MM_Matrix_s15_d08_amp","index": 263496,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d09_pan","varname": "fHslider132","shortname": "MM_Matrix_s15_d09_pan","address": "/modular-fm/MM_Matrix_s15_d09_pan","index": 262976,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d00_pitch","varname": "fHslider454","shortname": "MM_Matrix_s16_d00_pitch","address": "/modular-fm/MM_Matrix_s16_d00_pitch","index": 264280,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d01_op1_level","varname": "fHslider504","shortname": "MM_Matrix_s16_d01_op1_level","address": "/modular-fm/MM_Matrix_s16_d01_op1_level","index": 264488,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d02_op2_level","varname": "fHslider558","shortname": "MM_Matrix_s16_d02_op2_level","address": "/modular-fm/MM_Matrix_s16_d02_op2_level","index": 264720,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d03_op3_level","varname": "fHslider612","shortname": "MM_Matrix_s16_d03_op3_level","address": "/modular-fm/MM_Matrix_s16_d03_op3_level","index": 264952,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d04_op4_level","varname": "fHslider666","shortname": "MM_Matrix_s16_d04_op4_level","address": "/modular-fm/MM_Matrix_s16_d04_op4_level","index": 265184,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d05_cross_mod_global","varname": "fHslider357","shortname": "MM_Matrix_s16_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s16_d05_cross_mod_global","index": 263892,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d06_feedback_global","varname": "fHslider305","shortname": "MM_Matrix_s16_d06_feedback_global","address": "/modular-fm/MM_Matrix_s16_d06_feedback_global","index": 263684,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d07_global_ratio","varname": "fHslider405","shortname": "MM_Matrix_s16_d07_global_ratio","address": "/modular-fm/MM_Matrix_s16_d07_global_ratio","index": 264084,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d08_amp","varname": "fHslider257","shortname": "MM_Matrix_s16_d08_amp","address": "/modular-fm/MM_Matrix_s16_d08_amp","index": 263492,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d09_pan","varname": "fHslider126","shortname": "MM_Matrix_s16_d09_pan","address": "/modular-fm/MM_Matrix_s16_d09_pan","index": 262924,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d00_pitch","varname": "fHslider453","shortname": "MM_Matrix_s17_d00_pitch","address": "/modular-fm/MM_Matrix_s17_d00_pitch","index": 264276,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d01_op1_level","varname": "fHslider503","shortname": "MM_Matrix_s17_d01_op1_level","address": "/modular-fm/MM_Matrix_s17_d01_op1_level","index": 264484,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d02_op2_level","varname": "fHslider557","shortname": "MM_Matrix_s17_d02_op2_level","address": "/modular-fm/MM_Matrix_s17_d02_op2_level","index": 264716,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d03_op3_level","varname": "fHslider611","shortname": "MM_Matrix_s17_d03_op3_level","address": "/modular-fm/MM_Matrix_s17_d03_op3_level","index": 264948,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d04_op4_level","varname": "fHslider665","shortname": "MM_Matrix_s17_d04_op4_level","address": "/modular-fm/MM_Matrix_s17_d04_op4_level","index": 265180,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d05_cross_mod_global","varname": "fHslider356","shortname": "MM_Matrix_s17_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s17_d05_cross_mod_global","index": 263888,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d06_feedback_global","varname": "fHslider304","shortname": "MM_Matrix_s17_d06_feedback_global","address": "/modular-fm/MM_Matrix_s17_d06_feedback_global","index": 263680,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d07_global_ratio","varname": "fHslider404","shortname": "MM_Matrix_s17_d07_global_ratio","address": "/modular-fm/MM_Matrix_s17_d07_global_ratio","index": 264080,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d08_amp","varname": "fHslider256","shortname": "MM_Matrix_s17_d08_amp","address": "/modular-fm/MM_Matrix_s17_d08_amp","index": 263488,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d09_pan","varname": "fHslider122","shortname": "MM_Matrix_s17_d09_pan","address": "/modular-fm/MM_Matrix_s17_d09_pan","index": 262900,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d00_pitch","varname": "fHslider452","shortname": "MM_Matrix_s18_d00_pitch","address": "/modular-fm/MM_Matrix_s18_d00_pitch","index": 264272,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d01_op1_level","varname": "fHslider502","shortname": "MM_Matrix_s18_d01_op1_level","address": "/modular-fm/MM_Matrix_s18_d01_op1_level","index": 264480,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d02_op2_level","varname": "fHslider556","shortname": "MM_Matrix_s18_d02_op2_level","address": "/modular-fm/MM_Matrix_s18_d02_op2_level","index": 264712,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d03_op3_level","varname": "fHslider610","shortname": "MM_Matrix_s18_d03_op3_level","address": "/modular-fm/MM_Matrix_s18_d03_op3_level","index": 264944,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d04_op4_level","varname": "fHslider664","shortname": "MM_Matrix_s18_d04_op4_level","address": "/modular-fm/MM_Matrix_s18_d04_op4_level","index": 265176,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d05_cross_mod_global","varname": "fHslider355","shortname": "MM_Matrix_s18_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s18_d05_cross_mod_global","index": 263884,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d06_feedback_global","varname": "fHslider303","shortname": "MM_Matrix_s18_d06_feedback_global","address": "/modular-fm/MM_Matrix_s18_d06_feedback_global","index": 263676,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d07_global_ratio","varname": "fHslider403","shortname": "MM_Matrix_s18_d07_global_ratio","address": "/modular-fm/MM_Matrix_s18_d07_global_ratio","index": 264076,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d08_amp","varname": "fHslider255","shortname": "MM_Matrix_s18_d08_amp","address": "/modular-fm/MM_Matrix_s18_d08_amp","index": 263484,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d09_pan","varname": "fHslider118","shortname": "MM_Matrix_s18_d09_pan","address": "/modular-fm/MM_Matrix_s18_d09_pan","index": 262876,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d00_pitch","varname": "fHslider451","shortname": "MM_Matrix_s19_d00_pitch","address": "/modular-fm/MM_Matrix_s19_d00_pitch","index": 264268,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d01_op1_level","varname": "fHslider501","shortname": "MM_Matrix_s19_d01_op1_level","address": "/modular-fm/MM_Matrix_s19_d01_op1_level","index": 264476,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d02_op2_level","varname": "fHslider555","shortname": "MM_Matrix_s19_d02_op2_level","address": "/modular-fm/MM_Matrix_s19_d02_op2_level","index": 264708,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d03_op3_level","varname": "fHslider609","shortname": "MM_Matrix_s19_d03_op3_level","address": "/modular-fm/MM_Matrix_s19_d03_op3_level","index": 264940,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d04_op4_level","varname": "fHslider663","shortname": "MM_Matrix_s19_d04_op4_level","address": "/modular-fm/MM_Matrix_s19_d04_op4_level","index": 265172,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d05_cross_mod_global","varname": "fHslider354","shortname": "MM_Matrix_s19_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s19_d05_cross_mod_global","index": 263880,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d06_feedback_global","varname": "fHslider302","shortname": "MM_Matrix_s19_d06_feedback_global","address": "/modular-fm/MM_Matrix_s19_d06_feedback_global","index": 263672,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d07_global_ratio","varname": "fHslider402","shortname": "MM_Matrix_s19_d07_global_ratio","address": "/modular-fm/MM_Matrix_s19_d07_global_ratio","index": 264072,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d08_amp","varname": "fHslider254","shortname": "MM_Matrix_s19_d08_amp","address": "/modular-fm/MM_Matrix_s19_d08_amp","index": 263480,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d09_pan","varname": "fHslider114","shortname": "MM_Matrix_s19_d09_pan","address": "/modular-fm/MM_Matrix_s19_d09_pan","index": 262852,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d00_pitch","varname": "fHslider450","shortname": "MM_Matrix_s20_d00_pitch","address": "/modular-fm/MM_Matrix_s20_d00_pitch","index": 264264,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d01_op1_level","varname": "fHslider500","shortname": "MM_Matrix_s20_d01_op1_level","address": "/modular-fm/MM_Matrix_s20_d01_op1_level","index": 264472,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d02_op2_level","varname": "fHslider554","shortname": "MM_Matrix_s20_d02_op2_level","address": "/modular-fm/MM_Matrix_s20_d02_op2_level","index": 264704,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d03_op3_level","varname": "fHslider608","shortname": "MM_Matrix_s20_d03_op3_level","address": "/modular-fm/MM_Matrix_s20_d03_op3_level","index": 264936,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d04_op4_level","varname": "fHslider662","shortname": "MM_Matrix_s20_d04_op4_level","address": "/modular-fm/MM_Matrix_s20_d04_op4_level","index": 265168,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d05_cross_mod_global","varname": "fHslider353","shortname": "MM_Matrix_s20_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s20_d05_cross_mod_global","index": 263876,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d06_feedback_global","varname": "fHslider301","shortname": "MM_Matrix_s20_d06_feedback_global","address": "/modular-fm/MM_Matrix_s20_d06_feedback_global","index": 263668,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d07_global_ratio","varname": "fHslider401","shortname": "MM_Matrix_s20_d07_global_ratio","address": "/modular-fm/MM_Matrix_s20_d07_global_ratio","index": 264068,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d08_amp","varname": "fHslider253","shortname": "MM_Matrix_s20_d08_amp","address": "/modular-fm/MM_Matrix_s20_d08_amp","index": 263476,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d09_pan","varname": "fHslider110","shortname": "MM_Matrix_s20_d09_pan","address": "/modular-fm/MM_Matrix_s20_d09_pan","index": 262828,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d00_pitch","varname": "fHslider449","shortname": "MM_Matrix_s21_d00_pitch","address": "/modular-fm/MM_Matrix_s21_d00_pitch","index": 264260,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d01_op1_level","varname": "fHslider499","shortname": "MM_Matrix_s21_d01_op1_level","address": "/modular-fm/MM_Matrix_s21_d01_op1_level","index": 264468,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d02_op2_level","varname": "fHslider553","shortname": "MM_Matrix_s21_d02_op2_level","address": "/modular-fm/MM_Matrix_s21_d02_op2_level","index": 264700,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d03_op3_level","varname": "fHslider607","shortname": "MM_Matrix_s21_d03_op3_level","address": "/modular-fm/MM_Matrix_s21_d03_op3_level","index": 264932,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d04_op4_level","varname": "fHslider661","shortname": "MM_Matrix_s21_d04_op4_level","address": "/modular-fm/MM_Matrix_s21_d04_op4_level","index": 265164,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d05_cross_mod_global","varname": "fHslider352","shortname": "MM_Matrix_s21_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s21_d05_cross_mod_global","index": 263872,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d06_feedback_global","varname": "fHslider300","shortname": "MM_Matrix_s21_d06_feedback_global","address": "/modular-fm/MM_Matrix_s21_d06_feedback_global","index": 263664,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d07_global_ratio","varname": "fHslider400","shortname": "MM_Matrix_s21_d07_global_ratio","address": "/modular-fm/MM_Matrix_s21_d07_global_ratio","index": 264064,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d08_amp","varname": "fHslider252","shortname": "MM_Matrix_s21_d08_amp","address": "/modular-fm/MM_Matrix_s21_d08_amp","index": 263472,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d09_pan","varname": "fHslider106","shortname": "MM_Matrix_s21_d09_pan","address": "/modular-fm/MM_Matrix_s21_d09_pan","index": 262804,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d00_pitch","varname": "fHslider448","shortname": "MM_Matrix_s22_d00_pitch","address": "/modular-fm/MM_Matrix_s22_d00_pitch","index": 264256,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d01_op1_level","varname": "fHslider498","shortname": "MM_Matrix_s22_d01_op1_level","address": "/modular-fm/MM_Matrix_s22_d01_op1_level","index": 264464,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d02_op2_level","varname": "fHslider552","shortname": "MM_Matrix_s22_d02_op2_level","address": "/modular-fm/MM_Matrix_s22_d02_op2_level","index": 264696,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d03_op3_level","varname": "fHslider606","shortname": "MM_Matrix_s22_d03_op3_level","address": "/modular-fm/MM_Matrix_s22_d03_op3_level","index": 264928,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d04_op4_level","varname": "fHslider660","shortname": "MM_Matrix_s22_d04_op4_level","address": "/modular-fm/MM_Matrix_s22_d04_op4_level","index": 265160,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d05_cross_mod_global","varname": "fHslider351","shortname": "MM_Matrix_s22_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s22_d05_cross_mod_global","index": 263868,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d06_feedback_global","varname": "fHslider299","shortname": "MM_Matrix_s22_d06_feedback_global","address": "/modular-fm/MM_Matrix_s22_d06_feedback_global","index": 263660,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d07_global_ratio","varname": "fHslider399","shortname": "MM_Matrix_s22_d07_global_ratio","address": "/modular-fm/MM_Matrix_s22_d07_global_ratio","index": 264060,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d08_amp","varname": "fHslider251","shortname": "MM_Matrix_s22_d08_amp","address": "/modular-fm/MM_Matrix_s22_d08_amp","index": 263468,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d09_pan","varname": "fHslider102","shortname": "MM_Matrix_s22_d09_pan","address": "/modular-fm/MM_Matrix_s22_d09_pan","index": 262780,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d00_pitch","varname": "fHslider447","shortname": "MM_Matrix_s23_d00_pitch","address": "/modular-fm/MM_Matrix_s23_d00_pitch","index": 264252,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d01_op1_level","varname": "fHslider497","shortname": "MM_Matrix_s23_d01_op1_level","address": "/modular-fm/MM_Matrix_s23_d01_op1_level","index": 264460,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d02_op2_level","varname": "fHslider551","shortname": "MM_Matrix_s23_d02_op2_level","address": "/modular-fm/MM_Matrix_s23_d02_op2_level","index": 264692,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d03_op3_level","varname": "fHslider605","shortname": "MM_Matrix_s23_d03_op3_level","address": "/modular-fm/MM_Matrix_s23_d03_op3_level","index": 264924,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d04_op4_level","varname": "fHslider659","shortname": "MM_Matrix_s23_d04_op4_level","address": "/modular-fm/MM_Matrix_s23_d04_op4_level","index": 265156,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d05_cross_mod_global","varname": "fHslider350","shortname": "MM_Matrix_s23_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s23_d05_cross_mod_global","index": 263864,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d06_feedback_global","varname": "fHslider298","shortname": "MM_Matrix_s23_d06_feedback_global","address": "/modular-fm/MM_Matrix_s23_d06_feedback_global","index": 263656,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d07_global_ratio","varname": "fHslider398","shortname": "MM_Matrix_s23_d07_global_ratio","address": "/modular-fm/MM_Matrix_s23_d07_global_ratio","index": 264056,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d08_amp","varname": "fHslider250","shortname": "MM_Matrix_s23_d08_amp","address": "/modular-fm/MM_Matrix_s23_d08_amp","index": 263464,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d09_pan","varname": "fHslider98","shortname": "MM_Matrix_s23_d09_pan","address": "/modular-fm/MM_Matrix_s23_d09_pan","index": 262756,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d00_pitch","varname": "fHslider446","shortname": "MM_Matrix_s24_d00_pitch","address": "/modular-fm/MM_Matrix_s24_d00_pitch","index": 264248,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d01_op1_level","varname": "fHslider496","shortname": "MM_Matrix_s24_d01_op1_level","address": "/modular-fm/MM_Matrix_s24_d01_op1_level","index": 264456,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d02_op2_level","varname": "fHslider550","shortname": "MM_Matrix_s24_d02_op2_level","address": "/modular-fm/MM_Matrix_s24_d02_op2_level","index": 264688,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d03_op3_level","varname": "fHslider604","shortname": "MM_Matrix_s24_d03_op3_level","address": "/modular-fm/MM_Matrix_s24_d03_op3_level","index": 264920,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d04_op4_level","varname": "fHslider658","shortname": "MM_Matrix_s24_d04_op4_level","address": "/modular-fm/MM_Matrix_s24_d04_op4_level","index": 265152,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d05_cross_mod_global","varname": "fHslider349","shortname": "MM_Matrix_s24_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s24_d05_cross_mod_global","index": 263860,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d06_feedback_global","varname": "fHslider297","shortname": "MM_Matrix_s24_d06_feedback_global","address": "/modular-fm/MM_Matrix_s24_d06_feedback_global","index": 263652,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d07_global_ratio","varname": "fHslider397","shortname": "MM_Matrix_s24_d07_global_ratio","address": "/modular-fm/MM_Matrix_s24_d07_global_ratio","index": 264052,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d08_amp","varname": "fHslider249","shortname": "MM_Matrix_s24_d08_amp","address": "/modular-fm/MM_Matrix_s24_d08_amp","index": 263460,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d09_pan","varname": "fHslider94","shortname": "MM_Matrix_s24_d09_pan","address": "/modular-fm/MM_Matrix_s24_d09_pan","index": 262732,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d00_pitch","varname": "fHslider445","shortname": "MM_Matrix_s25_d00_pitch","address": "/modular-fm/MM_Matrix_s25_d00_pitch","index": 264244,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d01_op1_level","varname": "fHslider495","shortname": "MM_Matrix_s25_d01_op1_level","address": "/modular-fm/MM_Matrix_s25_d01_op1_level","index": 264452,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d02_op2_level","varname": "fHslider549","shortname": "MM_Matrix_s25_d02_op2_level","address": "/modular-fm/MM_Matrix_s25_d02_op2_level","index": 264684,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d03_op3_level","varname": "fHslider603","shortname": "MM_Matrix_s25_d03_op3_level","address": "/modular-fm/MM_Matrix_s25_d03_op3_level","index": 264916,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d04_op4_level","varname": "fHslider657","shortname": "MM_Matrix_s25_d04_op4_level","address": "/modular-fm/MM_Matrix_s25_d04_op4_level","index": 265148,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d05_cross_mod_global","varname": "fHslider348","shortname": "MM_Matrix_s25_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s25_d05_cross_mod_global","index": 263856,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d06_feedback_global","varname": "fHslider296","shortname": "MM_Matrix_s25_d06_feedback_global","address": "/modular-fm/MM_Matrix_s25_d06_feedback_global","index": 263648,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d07_global_ratio","varname": "fHslider396","shortname": "MM_Matrix_s25_d07_global_ratio","address": "/modular-fm/MM_Matrix_s25_d07_global_ratio","index": 264048,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d08_amp","varname": "fHslider248","shortname": "MM_Matrix_s25_d08_amp","address": "/modular-fm/MM_Matrix_s25_d08_amp","index": 263456,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d09_pan","varname": "fHslider90","shortname": "MM_Matrix_s25_d09_pan","address": "/modular-fm/MM_Matrix_s25_d09_pan","index": 262708,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d00_pitch","varname": "fHslider444","shortname": "MM_Matrix_s26_d00_pitch","address": "/modular-fm/MM_Matrix_s26_d00_pitch","index": 264240,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d01_op1_level","varname": "fHslider494","shortname": "MM_Matrix_s26_d01_op1_level","address": "/modular-fm/MM_Matrix_s26_d01_op1_level","index": 264448,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d02_op2_level","varname": "fHslider548","shortname": "MM_Matrix_s26_d02_op2_level","address": "/modular-fm/MM_Matrix_s26_d02_op2_level","index": 264680,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d03_op3_level","varname": "fHslider602","shortname": "MM_Matrix_s26_d03_op3_level","address": "/modular-fm/MM_Matrix_s26_d03_op3_level","index": 264912,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d04_op4_level","varname": "fHslider656","shortname": "MM_Matrix_s26_d04_op4_level","address": "/modular-fm/MM_Matrix_s26_d04_op4_level","index": 265144,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d05_cross_mod_global","varname": "fHslider347","shortname": "MM_Matrix_s26_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s26_d05_cross_mod_global","index": 263852,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d06_feedback_global","varname": "fHslider295","shortname": "MM_Matrix_s26_d06_feedback_global","address": "/modular-fm/MM_Matrix_s26_d06_feedback_global","index": 263644,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d07_global_ratio","varname": "fHslider395","shortname": "MM_Matrix_s26_d07_global_ratio","address": "/modular-fm/MM_Matrix_s26_d07_global_ratio","index": 264044,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d08_amp","varname": "fHslider247","shortname": "MM_Matrix_s26_d08_amp","address": "/modular-fm/MM_Matrix_s26_d08_amp","index": 263452,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d09_pan","varname": "fHslider86","shortname": "MM_Matrix_s26_d09_pan","address": "/modular-fm/MM_Matrix_s26_d09_pan","index": 262684,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d00_pitch","varname": "fHslider443","shortname": "MM_Matrix_s27_d00_pitch","address": "/modular-fm/MM_Matrix_s27_d00_pitch","index": 264236,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d01_op1_level","varname": "fHslider493","shortname": "MM_Matrix_s27_d01_op1_level","address": "/modular-fm/MM_Matrix_s27_d01_op1_level","index": 264444,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d02_op2_level","varname": "fHslider547","shortname": "MM_Matrix_s27_d02_op2_level","address": "/modular-fm/MM_Matrix_s27_d02_op2_level","index": 264676,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d03_op3_level","varname": "fHslider601","shortname": "MM_Matrix_s27_d03_op3_level","address": "/modular-fm/MM_Matrix_s27_d03_op3_level","index": 264908,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d04_op4_level","varname": "fHslider655","shortname": "MM_Matrix_s27_d04_op4_level","address": "/modular-fm/MM_Matrix_s27_d04_op4_level","index": 265140,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d05_cross_mod_global","varname": "fHslider346","shortname": "MM_Matrix_s27_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s27_d05_cross_mod_global","index": 263848,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d06_feedback_global","varname": "fHslider294","shortname": "MM_Matrix_s27_d06_feedback_global","address": "/modular-fm/MM_Matrix_s27_d06_feedback_global","index": 263640,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d07_global_ratio","varname": "fHslider394","shortname": "MM_Matrix_s27_d07_global_ratio","address": "/modular-fm/MM_Matrix_s27_d07_global_ratio","index": 264040,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d08_amp","varname": "fHslider246","shortname": "MM_Matrix_s27_d08_amp","address": "/modular-fm/MM_Matrix_s27_d08_amp","index": 263448,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d09_pan","varname": "fHslider82","shortname": "MM_Matrix_s27_d09_pan","address": "/modular-fm/MM_Matrix_s27_d09_pan","index": 262660,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d00_pitch","varname": "fHslider442","shortname": "MM_Matrix_s28_d00_pitch","address": "/modular-fm/MM_Matrix_s28_d00_pitch","index": 264232,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d01_op1_level","varname": "fHslider492","shortname": "MM_Matrix_s28_d01_op1_level","address": "/modular-fm/MM_Matrix_s28_d01_op1_level","index": 264440,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d02_op2_level","varname": "fHslider546","shortname": "MM_Matrix_s28_d02_op2_level","address": "/modular-fm/MM_Matrix_s28_d02_op2_level","index": 264672,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d03_op3_level","varname": "fHslider600","shortname": "MM_Matrix_s28_d03_op3_level","address": "/modular-fm/MM_Matrix_s28_d03_op3_level","index": 264904,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d04_op4_level","varname": "fHslider654","shortname": "MM_Matrix_s28_d04_op4_level","address": "/modular-fm/MM_Matrix_s28_d04_op4_level","index": 265136,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d05_cross_mod_global","varname": "fHslider345","shortname": "MM_Matrix_s28_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s28_d05_cross_mod_global","index": 263844,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d06_feedback_global","varname": "fHslider293","shortname": "MM_Matrix_s28_d06_feedback_global","address": "/modular-fm/MM_Matrix_s28_d06_feedback_global","index": 263636,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d07_global_ratio","varname": "fHslider393","shortname": "MM_Matrix_s28_d07_global_ratio","address": "/modular-fm/MM_Matrix_s28_d07_global_ratio","index": 264036,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d08_amp","varname": "fHslider245","shortname": "MM_Matrix_s28_d08_amp","address": "/modular-fm/MM_Matrix_s28_d08_amp","index": 263444,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d09_pan","varname": "fHslider78","shortname": "MM_Matrix_s28_d09_pan","address": "/modular-fm/MM_Matrix_s28_d09_pan","index": 262636,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d00_pitch","varname": "fHslider441","shortname": "MM_Matrix_s29_d00_pitch","address": "/modular-fm/MM_Matrix_s29_d00_pitch","index": 264228,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d01_op1_level","varname": "fHslider491","shortname": "MM_Matrix_s29_d01_op1_level","address": "/modular-fm/MM_Matrix_s29_d01_op1_level","index": 264436,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d02_op2_level","varname": "fHslider545","shortname": "MM_Matrix_s29_d02_op2_level","address": "/modular-fm/MM_Matrix_s29_d02_op2_level","index": 264668,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d03_op3_level","varname": "fHslider599","shortname": "MM_Matrix_s29_d03_op3_level","address": "/modular-fm/MM_Matrix_s29_d03_op3_level","index": 264900,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d04_op4_level","varname": "fHslider653","shortname": "MM_Matrix_s29_d04_op4_level","address": "/modular-fm/MM_Matrix_s29_d04_op4_level","index": 265132,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d05_cross_mod_global","varname": "fHslider344","shortname": "MM_Matrix_s29_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s29_d05_cross_mod_global","index": 263840,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d06_feedback_global","varname": "fHslider292","shortname": "MM_Matrix_s29_d06_feedback_global","address": "/modular-fm/MM_Matrix_s29_d06_feedback_global","index": 263632,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d07_global_ratio","varname": "fHslider392","shortname": "MM_Matrix_s29_d07_global_ratio","address": "/modular-fm/MM_Matrix_s29_d07_global_ratio","index": 264032,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d08_amp","varname": "fHslider244","shortname": "MM_Matrix_s29_d08_amp","address": "/modular-fm/MM_Matrix_s29_d08_amp","index": 263440,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d09_pan","varname": "fHslider74","shortname": "MM_Matrix_s29_d09_pan","address": "/modular-fm/MM_Matrix_s29_d09_pan","index": 262612,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d00_pitch","varname": "fHslider440","shortname": "MM_Matrix_s30_d00_pitch","address": "/modular-fm/MM_Matrix_s30_d00_pitch","index": 264224,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d01_op1_level","varname": "fHslider490","shortname": "MM_Matrix_s30_d01_op1_level","address": "/modular-fm/MM_Matrix_s30_d01_op1_level","index": 264432,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d02_op2_level","varname": "fHslider544","shortname": "MM_Matrix_s30_d02_op2_level","address": "/modular-fm/MM_Matrix_s30_d02_op2_level","index": 264664,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d03_op3_level","varname": "fHslider598","shortname": "MM_Matrix_s30_d03_op3_level","address": "/modular-fm/MM_Matrix_s30_d03_op3_level","index": 264896,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d04_op4_level","varname": "fHslider652","shortname": "MM_Matrix_s30_d04_op4_level","address": "/modular-fm/MM_Matrix_s30_d04_op4_level","index": 265128,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d05_cross_mod_global","varname": "fHslider343","shortname": "MM_Matrix_s30_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s30_d05_cross_mod_global","index": 263836,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d06_feedback_global","varname": "fHslider291","shortname": "MM_Matrix_s30_d06_feedback_global","address": "/modular-fm/MM_Matrix_s30_d06_feedback_global","index": 263628,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d07_global_ratio","varname": "fHslider391","shortname": "MM_Matrix_s30_d07_global_ratio","address": "/modular-fm/MM_Matrix_s30_d07_global_ratio","index": 264028,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d08_amp","varname": "fHslider243","shortname": "MM_Matrix_s30_d08_amp","address": "/modular-fm/MM_Matrix_s30_d08_amp","index": 263436,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d09_pan","varname": "fHslider70","shortname": "MM_Matrix_s30_d09_pan","address": "/modular-fm/MM_Matrix_s30_d09_pan","index": 262588,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d00_pitch","varname": "fHslider439","shortname": "MM_Matrix_s31_d00_pitch","address": "/modular-fm/MM_Matrix_s31_d00_pitch","index": 264220,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d01_op1_level","varname": "fHslider489","shortname": "MM_Matrix_s31_d01_op1_level","address": "/modular-fm/MM_Matrix_s31_d01_op1_level","index": 264428,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d02_op2_level","varname": "fHslider543","shortname": "MM_Matrix_s31_d02_op2_level","address": "/modular-fm/MM_Matrix_s31_d02_op2_level","index": 264660,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d03_op3_level","varname": "fHslider597","shortname": "MM_Matrix_s31_d03_op3_level","address": "/modular-fm/MM_Matrix_s31_d03_op3_level","index": 264892,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d04_op4_level","varname": "fHslider651","shortname": "MM_Matrix_s31_d04_op4_level","address": "/modular-fm/MM_Matrix_s31_d04_op4_level","index": 265124,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d05_cross_mod_global","varname": "fHslider342","shortname": "MM_Matrix_s31_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s31_d05_cross_mod_global","index": 263832,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d06_feedback_global","varname": "fHslider290","shortname": "MM_Matrix_s31_d06_feedback_global","address": "/modular-fm/MM_Matrix_s31_d06_feedback_global","index": 263624,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d07_global_ratio","varname": "fHslider390","shortname": "MM_Matrix_s31_d07_global_ratio","address": "/modular-fm/MM_Matrix_s31_d07_global_ratio","index": 264024,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d08_amp","varname": "fHslider242","shortname": "MM_Matrix_s31_d08_amp","address": "/modular-fm/MM_Matrix_s31_d08_amp","index": 263432,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d09_pan","varname": "fHslider66","shortname": "MM_Matrix_s31_d09_pan","address": "/modular-fm/MM_Matrix_s31_d09_pan","index": 262564,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d00_pitch","varname": "fHslider438","shortname": "MM_Matrix_s32_d00_pitch","address": "/modular-fm/MM_Matrix_s32_d00_pitch","index": 264216,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d01_op1_level","varname": "fHslider488","shortname": "MM_Matrix_s32_d01_op1_level","address": "/modular-fm/MM_Matrix_s32_d01_op1_level","index": 264424,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d02_op2_level","varname": "fHslider542","shortname": "MM_Matrix_s32_d02_op2_level","address": "/modular-fm/MM_Matrix_s32_d02_op2_level","index": 264656,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d03_op3_level","varname": "fHslider596","shortname": "MM_Matrix_s32_d03_op3_level","address": "/modular-fm/MM_Matrix_s32_d03_op3_level","index": 264888,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d04_op4_level","varname": "fHslider650","shortname": "MM_Matrix_s32_d04_op4_level","address": "/modular-fm/MM_Matrix_s32_d04_op4_level","index": 265120,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d05_cross_mod_global","varname": "fHslider341","shortname": "MM_Matrix_s32_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s32_d05_cross_mod_global","index": 263828,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d06_feedback_global","varname": "fHslider289","shortname": "MM_Matrix_s32_d06_feedback_global","address": "/modular-fm/MM_Matrix_s32_d06_feedback_global","index": 263620,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d07_global_ratio","varname": "fHslider389","shortname": "MM_Matrix_s32_d07_global_ratio","address": "/modular-fm/MM_Matrix_s32_d07_global_ratio","index": 264020,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d08_amp","varname": "fHslider241","shortname": "MM_Matrix_s32_d08_amp","address": "/modular-fm/MM_Matrix_s32_d08_amp","index": 263428,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d09_pan","varname": "fHslider62","shortname": "MM_Matrix_s32_d09_pan","address": "/modular-fm/MM_Matrix_s32_d09_pan","index": 262540,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d00_pitch","varname": "fHslider437","shortname": "MM_Matrix_s33_d00_pitch","address": "/modular-fm/MM_Matrix_s33_d00_pitch","index": 264212,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d01_op1_level","varname": "fHslider487","shortname": "MM_Matrix_s33_d01_op1_level","address": "/modular-fm/MM_Matrix_s33_d01_op1_level","index": 264420,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d02_op2_level","varname": "fHslider541","shortname": "MM_Matrix_s33_d02_op2_level","address": "/modular-fm/MM_Matrix_s33_d02_op2_level","index": 264652,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d03_op3_level","varname": "fHslider595","shortname": "MM_Matrix_s33_d03_op3_level","address": "/modular-fm/MM_Matrix_s33_d03_op3_level","index": 264884,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d04_op4_level","varname": "fHslider649","shortname": "MM_Matrix_s33_d04_op4_level","address": "/modular-fm/MM_Matrix_s33_d04_op4_level","index": 265116,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d05_cross_mod_global","varname": "fHslider340","shortname": "MM_Matrix_s33_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s33_d05_cross_mod_global","index": 263824,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d06_feedback_global","varname": "fHslider288","shortname": "MM_Matrix_s33_d06_feedback_global","address": "/modular-fm/MM_Matrix_s33_d06_feedback_global","index": 263616,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d07_global_ratio","varname": "fHslider388","shortname": "MM_Matrix_s33_d07_global_ratio","address": "/modular-fm/MM_Matrix_s33_d07_global_ratio","index": 264016,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d08_amp","varname": "fHslider240","shortname": "MM_Matrix_s33_d08_amp","address": "/modular-fm/MM_Matrix_s33_d08_amp","index": 263424,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d09_pan","varname": "fHslider58","shortname": "MM_Matrix_s33_d09_pan","address": "/modular-fm/MM_Matrix_s33_d09_pan","index": 262516,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d00_pitch","varname": "fHslider436","shortname": "MM_Matrix_s34_d00_pitch","address": "/modular-fm/MM_Matrix_s34_d00_pitch","index": 264208,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d01_op1_level","varname": "fHslider486","shortname": "MM_Matrix_s34_d01_op1_level","address": "/modular-fm/MM_Matrix_s34_d01_op1_level","index": 264416,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d02_op2_level","varname": "fHslider540","shortname": "MM_Matrix_s34_d02_op2_level","address": "/modular-fm/MM_Matrix_s34_d02_op2_level","index": 264648,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d03_op3_level","varname": "fHslider594","shortname": "MM_Matrix_s34_d03_op3_level","address": "/modular-fm/MM_Matrix_s34_d03_op3_level","index": 264880,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d04_op4_level","varname": "fHslider648","shortname": "MM_Matrix_s34_d04_op4_level","address": "/modular-fm/MM_Matrix_s34_d04_op4_level","index": 265112,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d05_cross_mod_global","varname": "fHslider339","shortname": "MM_Matrix_s34_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s34_d05_cross_mod_global","index": 263820,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d06_feedback_global","varname": "fHslider287","shortname": "MM_Matrix_s34_d06_feedback_global","address": "/modular-fm/MM_Matrix_s34_d06_feedback_global","index": 263612,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d07_global_ratio","varname": "fHslider387","shortname": "MM_Matrix_s34_d07_global_ratio","address": "/modular-fm/MM_Matrix_s34_d07_global_ratio","index": 264012,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d08_amp","varname": "fHslider239","shortname": "MM_Matrix_s34_d08_amp","address": "/modular-fm/MM_Matrix_s34_d08_amp","index": 263420,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d09_pan","varname": "fHslider54","shortname": "MM_Matrix_s34_d09_pan","address": "/modular-fm/MM_Matrix_s34_d09_pan","index": 262492,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d00_pitch","varname": "fHslider435","shortname": "MM_Matrix_s35_d00_pitch","address": "/modular-fm/MM_Matrix_s35_d00_pitch","index": 264204,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d01_op1_level","varname": "fHslider485","shortname": "MM_Matrix_s35_d01_op1_level","address": "/modular-fm/MM_Matrix_s35_d01_op1_level","index": 264412,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d02_op2_level","varname": "fHslider539","shortname": "MM_Matrix_s35_d02_op2_level","address": "/modular-fm/MM_Matrix_s35_d02_op2_level","index": 264644,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d03_op3_level","varname": "fHslider593","shortname": "MM_Matrix_s35_d03_op3_level","address": "/modular-fm/MM_Matrix_s35_d03_op3_level","index": 264876,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d04_op4_level","varname": "fHslider647","shortname": "MM_Matrix_s35_d04_op4_level","address": "/modular-fm/MM_Matrix_s35_d04_op4_level","index": 265108,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d05_cross_mod_global","varname": "fHslider338","shortname": "MM_Matrix_s35_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s35_d05_cross_mod_global","index": 263816,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d06_feedback_global","varname": "fHslider286","shortname": "MM_Matrix_s35_d06_feedback_global","address": "/modular-fm/MM_Matrix_s35_d06_feedback_global","index": 263608,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d07_global_ratio","varname": "fHslider386","shortname": "MM_Matrix_s35_d07_global_ratio","address": "/modular-fm/MM_Matrix_s35_d07_global_ratio","index": 264008,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d08_amp","varname": "fHslider238","shortname": "MM_Matrix_s35_d08_amp","address": "/modular-fm/MM_Matrix_s35_d08_amp","index": 263416,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d09_pan","varname": "fHslider50","shortname": "MM_Matrix_s35_d09_pan","address": "/modular-fm/MM_Matrix_s35_d09_pan","index": 262468,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d00_pitch","varname": "fHslider434","shortname": "MM_Matrix_s36_d00_pitch","address": "/modular-fm/MM_Matrix_s36_d00_pitch","index": 264200,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d01_op1_level","varname": "fHslider484","shortname": "MM_Matrix_s36_d01_op1_level","address": "/modular-fm/MM_Matrix_s36_d01_op1_level","index": 264408,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d02_op2_level","varname": "fHslider538","shortname": "MM_Matrix_s36_d02_op2_level","address": "/modular-fm/MM_Matrix_s36_d02_op2_level","index": 264640,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d03_op3_level","varname": "fHslider592","shortname": "MM_Matrix_s36_d03_op3_level","address": "/modular-fm/MM_Matrix_s36_d03_op3_level","index": 264872,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d04_op4_level","varname": "fHslider646","shortname": "MM_Matrix_s36_d04_op4_level","address": "/modular-fm/MM_Matrix_s36_d04_op4_level","index": 265104,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d05_cross_mod_global","varname": "fHslider337","shortname": "MM_Matrix_s36_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s36_d05_cross_mod_global","index": 263812,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d06_feedback_global","varname": "fHslider285","shortname": "MM_Matrix_s36_d06_feedback_global","address": "/modular-fm/MM_Matrix_s36_d06_feedback_global","index": 263604,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d07_global_ratio","varname": "fHslider385","shortname": "MM_Matrix_s36_d07_global_ratio","address": "/modular-fm/MM_Matrix_s36_d07_global_ratio","index": 264004,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d08_amp","varname": "fHslider237","shortname": "MM_Matrix_s36_d08_amp","address": "/modular-fm/MM_Matrix_s36_d08_amp","index": 263412,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d09_pan","varname": "fHslider46","shortname": "MM_Matrix_s36_d09_pan","address": "/modular-fm/MM_Matrix_s36_d09_pan","index": 262444,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d00_pitch","varname": "fHslider433","shortname": "MM_Matrix_s37_d00_pitch","address": "/modular-fm/MM_Matrix_s37_d00_pitch","index": 264196,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d01_op1_level","varname": "fHslider483","shortname": "MM_Matrix_s37_d01_op1_level","address": "/modular-fm/MM_Matrix_s37_d01_op1_level","index": 264404,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d02_op2_level","varname": "fHslider537","shortname": "MM_Matrix_s37_d02_op2_level","address": "/modular-fm/MM_Matrix_s37_d02_op2_level","index": 264636,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d03_op3_level","varname": "fHslider591","shortname": "MM_Matrix_s37_d03_op3_level","address": "/modular-fm/MM_Matrix_s37_d03_op3_level","index": 264868,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d04_op4_level","varname": "fHslider645","shortname": "MM_Matrix_s37_d04_op4_level","address": "/modular-fm/MM_Matrix_s37_d04_op4_level","index": 265100,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d05_cross_mod_global","varname": "fHslider336","shortname": "MM_Matrix_s37_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s37_d05_cross_mod_global","index": 263808,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d06_feedback_global","varname": "fHslider284","shortname": "MM_Matrix_s37_d06_feedback_global","address": "/modular-fm/MM_Matrix_s37_d06_feedback_global","index": 263600,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d07_global_ratio","varname": "fHslider384","shortname": "MM_Matrix_s37_d07_global_ratio","address": "/modular-fm/MM_Matrix_s37_d07_global_ratio","index": 264000,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d08_amp","varname": "fHslider236","shortname": "MM_Matrix_s37_d08_amp","address": "/modular-fm/MM_Matrix_s37_d08_amp","index": 263408,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d09_pan","varname": "fHslider42","shortname": "MM_Matrix_s37_d09_pan","address": "/modular-fm/MM_Matrix_s37_d09_pan","index": 262420,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d00_pitch","varname": "fHslider432","shortname": "MM_Matrix_s38_d00_pitch","address": "/modular-fm/MM_Matrix_s38_d00_pitch","index": 264192,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d01_op1_level","varname": "fHslider482","shortname": "MM_Matrix_s38_d01_op1_level","address": "/modular-fm/MM_Matrix_s38_d01_op1_level","index": 264400,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d02_op2_level","varname": "fHslider536","shortname": "MM_Matrix_s38_d02_op2_level","address": "/modular-fm/MM_Matrix_s38_d02_op2_level","index": 264632,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d03_op3_level","varname": "fHslider590","shortname": "MM_Matrix_s38_d03_op3_level","address": "/modular-fm/MM_Matrix_s38_d03_op3_level","index": 264864,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d04_op4_level","varname": "fHslider644","shortname": "MM_Matrix_s38_d04_op4_level","address": "/modular-fm/MM_Matrix_s38_d04_op4_level","index": 265096,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d05_cross_mod_global","varname": "fHslider335","shortname": "MM_Matrix_s38_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s38_d05_cross_mod_global","index": 263804,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d06_feedback_global","varname": "fHslider283","shortname": "MM_Matrix_s38_d06_feedback_global","address": "/modular-fm/MM_Matrix_s38_d06_feedback_global","index": 263596,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d07_global_ratio","varname": "fHslider383","shortname": "MM_Matrix_s38_d07_global_ratio","address": "/modular-fm/MM_Matrix_s38_d07_global_ratio","index": 263996,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d08_amp","varname": "fHslider235","shortname": "MM_Matrix_s38_d08_amp","address": "/modular-fm/MM_Matrix_s38_d08_amp","index": 263404,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d09_pan","varname": "fHslider38","shortname": "MM_Matrix_s38_d09_pan","address": "/modular-fm/MM_Matrix_s38_d09_pan","index": 262396,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d00_pitch","varname": "fHslider431","shortname": "MM_Matrix_s39_d00_pitch","address": "/modular-fm/MM_Matrix_s39_d00_pitch","index": 264188,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d01_op1_level","varname": "fHslider481","shortname": "MM_Matrix_s39_d01_op1_level","address": "/modular-fm/MM_Matrix_s39_d01_op1_level","index": 264396,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d02_op2_level","varname": "fHslider535","shortname": "MM_Matrix_s39_d02_op2_level","address": "/modular-fm/MM_Matrix_s39_d02_op2_level","index": 264628,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d03_op3_level","varname": "fHslider589","shortname": "MM_Matrix_s39_d03_op3_level","address": "/modular-fm/MM_Matrix_s39_d03_op3_level","index": 264860,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d04_op4_level","varname": "fHslider643","shortname": "MM_Matrix_s39_d04_op4_level","address": "/modular-fm/MM_Matrix_s39_d04_op4_level","index": 265092,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d05_cross_mod_global","varname": "fHslider334","shortname": "MM_Matrix_s39_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s39_d05_cross_mod_global","index": 263800,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d06_feedback_global","varname": "fHslider282","shortname": "MM_Matrix_s39_d06_feedback_global","address": "/modular-fm/MM_Matrix_s39_d06_feedback_global","index": 263592,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d07_global_ratio","varname": "fHslider382","shortname": "MM_Matrix_s39_d07_global_ratio","address": "/modular-fm/MM_Matrix_s39_d07_global_ratio","index": 263992,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d08_amp","varname": "fHslider234","shortname": "MM_Matrix_s39_d08_amp","address": "/modular-fm/MM_Matrix_s39_d08_amp","index": 263400,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d09_pan","varname": "fHslider34","shortname": "MM_Matrix_s39_d09_pan","address": "/modular-fm/MM_Matrix_s39_d09_pan","index": 262372,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d00_pitch","varname": "fHslider430","shortname": "MM_Matrix_s40_d00_pitch","address": "/modular-fm/MM_Matrix_s40_d00_pitch","index": 264184,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d01_op1_level","varname": "fHslider480","shortname": "MM_Matrix_s40_d01_op1_level","address": "/modular-fm/MM_Matrix_s40_d01_op1_level","index": 264392,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d02_op2_level","varname": "fHslider534","shortname": "MM_Matrix_s40_d02_op2_level","address": "/modular-fm/MM_Matrix_s40_d02_op2_level","index": 264624,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d03_op3_level","varname": "fHslider588","shortname": "MM_Matrix_s40_d03_op3_level","address": "/modular-fm/MM_Matrix_s40_d03_op3_level","index": 264856,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d04_op4_level","varname": "fHslider642","shortname": "MM_Matrix_s40_d04_op4_level","address": "/modular-fm/MM_Matrix_s40_d04_op4_level","index": 265088,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d05_cross_mod_global","varname": "fHslider333","shortname": "MM_Matrix_s40_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s40_d05_cross_mod_global","index": 263796,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d06_feedback_global","varname": "fHslider281","shortname": "MM_Matrix_s40_d06_feedback_global","address": "/modular-fm/MM_Matrix_s40_d06_feedback_global","index": 263588,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d07_global_ratio","varname": "fHslider381","shortname": "MM_Matrix_s40_d07_global_ratio","address": "/modular-fm/MM_Matrix_s40_d07_global_ratio","index": 263988,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d08_amp","varname": "fHslider233","shortname": "MM_Matrix_s40_d08_amp","address": "/modular-fm/MM_Matrix_s40_d08_amp","index": 263396,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d09_pan","varname": "fHslider30","shortname": "MM_Matrix_s40_d09_pan","address": "/modular-fm/MM_Matrix_s40_d09_pan","index": 262348,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d00_pitch","varname": "fHslider429","shortname": "MM_Matrix_s41_d00_pitch","address": "/modular-fm/MM_Matrix_s41_d00_pitch","index": 264180,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d01_op1_level","varname": "fHslider479","shortname": "MM_Matrix_s41_d01_op1_level","address": "/modular-fm/MM_Matrix_s41_d01_op1_level","index": 264388,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d02_op2_level","varname": "fHslider533","shortname": "MM_Matrix_s41_d02_op2_level","address": "/modular-fm/MM_Matrix_s41_d02_op2_level","index": 264620,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d03_op3_level","varname": "fHslider587","shortname": "MM_Matrix_s41_d03_op3_level","address": "/modular-fm/MM_Matrix_s41_d03_op3_level","index": 264852,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d04_op4_level","varname": "fHslider641","shortname": "MM_Matrix_s41_d04_op4_level","address": "/modular-fm/MM_Matrix_s41_d04_op4_level","index": 265084,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d05_cross_mod_global","varname": "fHslider332","shortname": "MM_Matrix_s41_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s41_d05_cross_mod_global","index": 263792,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d06_feedback_global","varname": "fHslider280","shortname": "MM_Matrix_s41_d06_feedback_global","address": "/modular-fm/MM_Matrix_s41_d06_feedback_global","index": 263584,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d07_global_ratio","varname": "fHslider380","shortname": "MM_Matrix_s41_d07_global_ratio","address": "/modular-fm/MM_Matrix_s41_d07_global_ratio","index": 263984,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d08_amp","varname": "fHslider232","shortname": "MM_Matrix_s41_d08_amp","address": "/modular-fm/MM_Matrix_s41_d08_amp","index": 263392,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d09_pan","varname": "fHslider26","shortname": "MM_Matrix_s41_d09_pan","address": "/modular-fm/MM_Matrix_s41_d09_pan","index": 262324,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d00_pitch","varname": "fHslider428","shortname": "MM_Matrix_s42_d00_pitch","address": "/modular-fm/MM_Matrix_s42_d00_pitch","index": 264176,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d01_op1_level","varname": "fHslider478","shortname": "MM_Matrix_s42_d01_op1_level","address": "/modular-fm/MM_Matrix_s42_d01_op1_level","index": 264384,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d02_op2_level","varname": "fHslider532","shortname": "MM_Matrix_s42_d02_op2_level","address": "/modular-fm/MM_Matrix_s42_d02_op2_level","index": 264616,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d03_op3_level","varname": "fHslider586","shortname": "MM_Matrix_s42_d03_op3_level","address": "/modular-fm/MM_Matrix_s42_d03_op3_level","index": 264848,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d04_op4_level","varname": "fHslider640","shortname": "MM_Matrix_s42_d04_op4_level","address": "/modular-fm/MM_Matrix_s42_d04_op4_level","index": 265080,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d05_cross_mod_global","varname": "fHslider331","shortname": "MM_Matrix_s42_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s42_d05_cross_mod_global","index": 263788,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d06_feedback_global","varname": "fHslider279","shortname": "MM_Matrix_s42_d06_feedback_global","address": "/modular-fm/MM_Matrix_s42_d06_feedback_global","index": 263580,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d07_global_ratio","varname": "fHslider379","shortname": "MM_Matrix_s42_d07_global_ratio","address": "/modular-fm/MM_Matrix_s42_d07_global_ratio","index": 263980,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d08_amp","varname": "fHslider231","shortname": "MM_Matrix_s42_d08_amp","address": "/modular-fm/MM_Matrix_s42_d08_amp","index": 263388,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d09_pan","varname": "fHslider22","shortname": "MM_Matrix_s42_d09_pan","address": "/modular-fm/MM_Matrix_s42_d09_pan","index": 262300,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d00_pitch","varname": "fHslider427","shortname": "MM_Matrix_s43_d00_pitch","address": "/modular-fm/MM_Matrix_s43_d00_pitch","index": 264172,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d01_op1_level","varname": "fHslider477","shortname": "MM_Matrix_s43_d01_op1_level","address": "/modular-fm/MM_Matrix_s43_d01_op1_level","index": 264380,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d02_op2_level","varname": "fHslider531","shortname": "MM_Matrix_s43_d02_op2_level","address": "/modular-fm/MM_Matrix_s43_d02_op2_level","index": 264612,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d03_op3_level","varname": "fHslider585","shortname": "MM_Matrix_s43_d03_op3_level","address": "/modular-fm/MM_Matrix_s43_d03_op3_level","index": 264844,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d04_op4_level","varname": "fHslider639","shortname": "MM_Matrix_s43_d04_op4_level","address": "/modular-fm/MM_Matrix_s43_d04_op4_level","index": 265076,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d05_cross_mod_global","varname": "fHslider330","shortname": "MM_Matrix_s43_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s43_d05_cross_mod_global","index": 263784,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d06_feedback_global","varname": "fHslider278","shortname": "MM_Matrix_s43_d06_feedback_global","address": "/modular-fm/MM_Matrix_s43_d06_feedback_global","index": 263576,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d07_global_ratio","varname": "fHslider378","shortname": "MM_Matrix_s43_d07_global_ratio","address": "/modular-fm/MM_Matrix_s43_d07_global_ratio","index": 263976,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d08_amp","varname": "fHslider230","shortname": "MM_Matrix_s43_d08_amp","address": "/modular-fm/MM_Matrix_s43_d08_amp","index": 263384,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d09_pan","varname": "fHslider18","shortname": "MM_Matrix_s43_d09_pan","address": "/modular-fm/MM_Matrix_s43_d09_pan","index": 262276,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d00_pitch","varname": "fHslider426","shortname": "MM_Matrix_s44_d00_pitch","address": "/modular-fm/MM_Matrix_s44_d00_pitch","index": 264168,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d01_op1_level","varname": "fHslider476","shortname": "MM_Matrix_s44_d01_op1_level","address": "/modular-fm/MM_Matrix_s44_d01_op1_level","index": 264376,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d02_op2_level","varname": "fHslider530","shortname": "MM_Matrix_s44_d02_op2_level","address": "/modular-fm/MM_Matrix_s44_d02_op2_level","index": 264608,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d03_op3_level","varname": "fHslider584","shortname": "MM_Matrix_s44_d03_op3_level","address": "/modular-fm/MM_Matrix_s44_d03_op3_level","index": 264840,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d04_op4_level","varname": "fHslider638","shortname": "MM_Matrix_s44_d04_op4_level","address": "/modular-fm/MM_Matrix_s44_d04_op4_level","index": 265072,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d05_cross_mod_global","varname": "fHslider329","shortname": "MM_Matrix_s44_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s44_d05_cross_mod_global","index": 263780,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d06_feedback_global","varname": "fHslider277","shortname": "MM_Matrix_s44_d06_feedback_global","address": "/modular-fm/MM_Matrix_s44_d06_feedback_global","index": 263572,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d07_global_ratio","varname": "fHslider377","shortname": "MM_Matrix_s44_d07_global_ratio","address": "/modular-fm/MM_Matrix_s44_d07_global_ratio","index": 263972,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d08_amp","varname": "fHslider229","shortname": "MM_Matrix_s44_d08_amp","address": "/modular-fm/MM_Matrix_s44_d08_amp","index": 263380,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d09_pan","varname": "fHslider14","shortname": "MM_Matrix_s44_d09_pan","address": "/modular-fm/MM_Matrix_s44_d09_pan","index": 262252,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d00_pitch","varname": "fHslider425","shortname": "MM_Matrix_s45_d00_pitch","address": "/modular-fm/MM_Matrix_s45_d00_pitch","index": 264164,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d01_op1_level","varname": "fHslider475","shortname": "MM_Matrix_s45_d01_op1_level","address": "/modular-fm/MM_Matrix_s45_d01_op1_level","index": 264372,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d02_op2_level","varname": "fHslider529","shortname": "MM_Matrix_s45_d02_op2_level","address": "/modular-fm/MM_Matrix_s45_d02_op2_level","index": 264604,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d03_op3_level","varname": "fHslider583","shortname": "MM_Matrix_s45_d03_op3_level","address": "/modular-fm/MM_Matrix_s45_d03_op3_level","index": 264836,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d04_op4_level","varname": "fHslider637","shortname": "MM_Matrix_s45_d04_op4_level","address": "/modular-fm/MM_Matrix_s45_d04_op4_level","index": 265068,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d05_cross_mod_global","varname": "fHslider328","shortname": "MM_Matrix_s45_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s45_d05_cross_mod_global","index": 263776,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d06_feedback_global","varname": "fHslider276","shortname": "MM_Matrix_s45_d06_feedback_global","address": "/modular-fm/MM_Matrix_s45_d06_feedback_global","index": 263568,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d07_global_ratio","varname": "fHslider376","shortname": "MM_Matrix_s45_d07_global_ratio","address": "/modular-fm/MM_Matrix_s45_d07_global_ratio","index": 263968,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d08_amp","varname": "fHslider228","shortname": "MM_Matrix_s45_d08_amp","address": "/modular-fm/MM_Matrix_s45_d08_amp","index": 263376,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d09_pan","varname": "fHslider10","shortname": "MM_Matrix_s45_d09_pan","address": "/modular-fm/MM_Matrix_s45_d09_pan","index": 262228,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d00_pitch","varname": "fHslider424","shortname": "MM_Matrix_s46_d00_pitch","address": "/modular-fm/MM_Matrix_s46_d00_pitch","index": 264160,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d01_op1_level","varname": "fHslider474","shortname": "MM_Matrix_s46_d01_op1_level","address": "/modular-fm/MM_Matrix_s46_d01_op1_level","index": 264368,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d02_op2_level","varname": "fHslider528","shortname": "MM_Matrix_s46_d02_op2_level","address": "/modular-fm/MM_Matrix_s46_d02_op2_level","index": 264600,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d03_op3_level","varname": "fHslider582","shortname": "MM_Matrix_s46_d03_op3_level","address": "/modular-fm/MM_Matrix_s46_d03_op3_level","index": 264832,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d04_op4_level","varname": "fHslider636","shortname": "MM_Matrix_s46_d04_op4_level","address": "/modular-fm/MM_Matrix_s46_d04_op4_level","index": 265064,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d05_cross_mod_global","varname": "fHslider327","shortname": "MM_Matrix_s46_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s46_d05_cross_mod_global","index": 263772,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d06_feedback_global","varname": "fHslider275","shortname": "MM_Matrix_s46_d06_feedback_global","address": "/modular-fm/MM_Matrix_s46_d06_feedback_global","index": 263564,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d07_global_ratio","varname": "fHslider375","shortname": "MM_Matrix_s46_d07_global_ratio","address": "/modular-fm/MM_Matrix_s46_d07_global_ratio","index": 263964,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d08_amp","varname": "fHslider227","shortname": "MM_Matrix_s46_d08_amp","address": "/modular-fm/MM_Matrix_s46_d08_amp","index": 263372,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d09_pan","varname": "fHslider6","shortname": "MM_Matrix_s46_d09_pan","address": "/modular-fm/MM_Matrix_s46_d09_pan","index": 262204,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d00_pitch","varname": "fHslider423","shortname": "MM_Matrix_s47_d00_pitch","address": "/modular-fm/MM_Matrix_s47_d00_pitch","index": 264156,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d01_op1_level","varname": "fHslider473","shortname": "MM_Matrix_s47_d01_op1_level","address": "/modular-fm/MM_Matrix_s47_d01_op1_level","index": 264364,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d02_op2_level","varname": "fHslider527","shortname": "MM_Matrix_s47_d02_op2_level","address": "/modular-fm/MM_Matrix_s47_d02_op2_level","index": 264596,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d03_op3_level","varname": "fHslider581","shortname": "MM_Matrix_s47_d03_op3_level","address": "/modular-fm/MM_Matrix_s47_d03_op3_level","index": 264828,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d04_op4_level","varname": "fHslider635","shortname": "MM_Matrix_s47_d04_op4_level","address": "/modular-fm/MM_Matrix_s47_d04_op4_level","index": 265060,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d05_cross_mod_global","varname": "fHslider326","shortname": "MM_Matrix_s47_d05_cross_mod_global","address": "/modular-fm/MM_Matrix_s47_d05_cross_mod_global","index": 263768,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d06_feedback_global","varname": "fHslider274","shortname": "MM_Matrix_s47_d06_feedback_global","address": "/modular-fm/MM_Matrix_s47_d06_feedback_global","index": 263560,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d07_global_ratio","varname": "fHslider374","shortname": "MM_Matrix_s47_d07_global_ratio","address": "/modular-fm/MM_Matrix_s47_d07_global_ratio","index": 263960,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d08_amp","varname": "fHslider226","shortname": "MM_Matrix_s47_d08_amp","address": "/modular-fm/MM_Matrix_s47_d08_amp","index": 263368,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d09_pan","varname": "fHslider2","shortname": "MM_Matrix_s47_d09_pan","address": "/modular-fm/MM_Matrix_s47_d09_pan","index": 262180,"init": 0,"min": -1,"max": 1,"step": 0.001}]}]} \ No newline at end of file diff --git a/playground/faust/modular-fm.wasm b/playground/faust/modular-fm.wasm new file mode 100644 index 0000000..c8d5638 Binary files /dev/null and b/playground/faust/modular-fm.wasm differ diff --git a/playground/faust/modular-subtractive-processor.js b/playground/faust/modular-subtractive-processor.js new file mode 100644 index 0000000..69027b6 --- /dev/null +++ b/playground/faust/modular-subtractive-processor.js @@ -0,0 +1,261 @@ +/** + * modular-subtractive-processor.js — AudioWorklet processor for the + * "Modular" mode subtractive voice (modular-subtractive.dsp). + * + * Extends FaustWorkletProcessor (faust-worklet-processor.js). + * Loads modular-subtractive.wasm compiled by `faust -lang wasm`. + * + * Param-index strategy: + * modular-subtractive.dsp has ~681 parameters (22 engine + 80 ADSR + 96 LFO + * + 480 matrix + 3 hidden). Hand-maintained zone tables (additive-processor + * style) do not scale. Instead we use the wasm-native JSON descriptor + * produced by `faust -lang wasm`, which has a numeric `index` field on each + * leaf item. That index is the direct memory offset that setParamValue + * expects as its zone argument — no sentinel scanning, no address strings. + * + * The main thread fetches modular-subtractive.json, parses it, and passes + * the UI tree to the worklet via the init message. + * + * Calling convention (faust -lang wasm, single-instance): + * init(dsp, sampleRate) dsp is always 0 + * compute(dsp, n, inputs, outputs) + * setParamValue(dsp, zone, value) zone = numeric memory address from JSON + * getParamValue(dsp, zone) -> float + * + * Hidden params (not in the engine's ML-controllable list): + * 0_Hidden/freq — set by noteOn + * 0_Hidden/gate — set by noteOn/noteOff (button, value 0/1) + * 0_Hidden/_vel — set by noteOn + */ + +// Must be imported in AudioWorkletGlobalScope — include faust-worklet-processor.js +// via audioCtx.audioWorklet.addModule() before this file. + +const DSP = 0; +const BLOCK_SIZE = 128; + +class ModularSubtractiveProcessor extends FaustWorkletProcessor { + constructor(options) { + super(options); + this._dspInst = null; + this._dspMemory = null; // live Float32Array view + this._sampleRate = 48000; + + // Zone tables, populated once the init message has been processed. + this._paramZones = []; // NISPS index (order from JSON walk) -> zone + this._paramZonesByLabel = {}; // label -> zone (for smoke test) + this._hiddenZones = {}; // {freq, gate, _vel} -> zone + + // Audio output buffer pointers + this._outPtrsAddr = 0; + this._outLAddr = 0; + this._outRAddr = 0; + } + + // --------------------------------------------------------------------------- + // _initWasm — called by FaustWorkletProcessor.handleMessage on 'init'. + // + // Extra fields on the init message: + // uiJson — parsed Faust UI descriptor (the .json file contents) for + // zone discovery. Faust's -lang wasm embeds numeric `index` + // fields that we use directly as zone memory addresses. + // --------------------------------------------------------------------------- + + async _initWasm(wasmBytes, sampleRate, uiJson) { + this._sampleRate = sampleRate; + + const importObj = { + env: { + _sinf: Math.sin, + _cosf: Math.cos, + _tanf: Math.tan, + _expf: Math.exp, + _logf: Math.log, + _log10f: Math.log10, + _powf: Math.pow, + _tanhf: Math.tanh, + _sqrtf: Math.sqrt, + _fabsf: Math.abs, + _floorf: Math.floor, + _ceilf: Math.ceil, + _remainderf: (a, b) => a - Math.round(a / b) * b, + _fmodf: (a, b) => a % b, + _roundf: Math.round, + _truncf: Math.trunc, + _acosf: Math.acos, + _asinf: Math.asin, + _atanf: Math.atan, + _atan2f: Math.atan2, + }, + }; + + const result = await WebAssembly.instantiate(wasmBytes, importObj); + this._dspInst = result.instance; + const ex = this._dspInst.exports; + + // Grow memory by 2 pages (128 KB) so the output buffer region sits past + // Faust's allocated parameter zones. The parameter zone region in + // modular-subtractive lives around bytes 262144..265280; after growth we + // have at least 3 * BLOCK_SIZE * 4 bytes at the high end. + ex.memory.grow(2); + + this._dspMemory = new Float32Array(ex.memory.buffer); + + // Initialise the DSP instance (single-instance convention: dsp = 0) + ex.init(DSP, sampleRate); + + // Allocate output buffers at the top of WASM memory. + const memBytes = ex.memory.buffer.byteLength; + this._outLAddr = memBytes - BLOCK_SIZE * 4 * 3; + this._outRAddr = this._outLAddr + BLOCK_SIZE * 4; + this._outPtrsAddr = this._outRAddr + BLOCK_SIZE * 4; + + const u32 = new Uint32Array(ex.memory.buffer); + u32[this._outPtrsAddr / 4] = this._outLAddr; + u32[this._outPtrsAddr / 4 + 1] = this._outRAddr; + + // Refresh the float view after any potential reallocation + this._dspMemory = new Float32Array(ex.memory.buffer); + + // Build the zone index from the JSON we were passed. + if (uiJson) { + this._buildZoneIndexFromJson(uiJson); + } else { + console.warn('[ModularSubtractiveProcessor] no uiJson in init message — ' + + 'setParam will silently no-op.'); + } + } + + // ------------------------------------------------------------------------- + // _buildZoneIndexFromJson — walk the Faust UI tree and collect numeric + // zone indexes, separating hidden params from the main NISPS-controllable + // list. Preserves the UI tree's traversal order, which matches the order + // the playground's faustJsonToParamMeta() parser will produce. + // ------------------------------------------------------------------------- + + _buildZoneIndexFromJson(faustJson) { + const HIDDEN_TAIL = new Set(['freq', 'gate', '_vel']); + const zones = []; + const byLabel = {}; + const hidden = {}; + + const walk = (items) => { + if (!Array.isArray(items)) return; + for (const item of items) { + const type = item?.type; + if (type === 'hslider' || type === 'vslider' || + type === 'nentry' || type === 'button' || + type === 'checkbox') { + const label = item.label ?? ''; + const idx = item.index; + if (typeof idx !== 'number') continue; + + const hasHiddenMeta = Array.isArray(item.meta) && + item.meta.some(m => m.hidden === '1' || m.hidden === 1); + const tail = label.includes('/') ? label.split('/').pop() : label; + + if (hasHiddenMeta || HIDDEN_TAIL.has(tail)) { + hidden[tail] = idx; + } else { + zones.push(idx); + byLabel[label] = idx; + } + } else if (item?.items) { + walk(item.items); + } + } + }; + + walk(faustJson.ui ?? []); + + this._paramZones = zones; + this._paramZonesByLabel = byLabel; + this._hiddenZones = hidden; + } + + // ------------------------------------------------------------------------- + // _onSetParam — look up the zone by NISPS index and poke the DSP + // ------------------------------------------------------------------------- + + _onSetParam(index, value) { + if (!this._dspInst) return; + const zone = this._paramZones[index]; + if (zone === undefined) return; + this._dspInst.exports.setParamValue(DSP, zone, value); + } + + _onNoteOn(freq, vel) { + if (!this._dspInst) return; + const ex = this._dspInst.exports; + const z = this._hiddenZones; + if (z.freq !== undefined) ex.setParamValue(DSP, z.freq, freq); + if (z._vel !== undefined) ex.setParamValue(DSP, z._vel, vel ?? 0.7); + if (z.gate !== undefined) ex.setParamValue(DSP, z.gate, 1.0); + } + + _onNoteOff(_freq) { + if (!this._dspInst) return; + const z = this._hiddenZones; + if (z.gate !== undefined) { + this._dspInst.exports.setParamValue(DSP, z.gate, 0.0); + } + } + + // ------------------------------------------------------------------------- + // Extended message handling — override for setByLabel + init-with-json + // ------------------------------------------------------------------------- + + _handleMessage(msg) { + if (!msg || !msg.type) return; + + if (msg.type === 'init') { + // Override the base class's init path so we can thread `uiJson` through. + this._initWasm(msg.wasmBytes, msg.sampleRate || sampleRate, msg.uiJson) + .then(() => { + this._ready = true; + this.port.postMessage({ type: 'ready' }); + this._drainPendingMessages(); + }) + .catch((err) => { + this.port.postMessage({ type: 'error', message: String(err) }); + }); + return; + } + + // Buffer anything that arrives before init() finishes, so the main + // thread can disable slots / push matrix values eagerly without worrying + // about worklet readiness. See faust-worklet-processor.js. + if (this._queueIfNotReady(msg)) return; + + if (msg.type === 'setByLabel') { + const zone = this._paramZonesByLabel[msg.label]; + if (zone !== undefined) { + this._dspInst.exports.setParamValue(DSP, zone, msg.value); + } + return; + } + + // Delegate everything else (setParam, noteOn, noteOff) to the base class. + // Note: the base class also calls _queueIfNotReady, but since we already + // passed it above, we won't re-queue here. + super._handleMessage(msg); + } + + // ------------------------------------------------------------------------- + // _renderBlock — call Faust compute, copy output buffers + // ------------------------------------------------------------------------- + + _renderBlock(outL, outR, blockSize) { + if (!this._dspInst || !this._dspMemory) return; + + const ex = this._dspInst.exports; + ex.compute(DSP, blockSize, 0, this._outPtrsAddr); + + const wL = new Float32Array(ex.memory.buffer, this._outLAddr, blockSize); + const wR = new Float32Array(ex.memory.buffer, this._outRAddr, blockSize); + outL.set(wL); + outR.set(wR); + } +} + +registerProcessor('modular-subtractive-processor', ModularSubtractiveProcessor); diff --git a/playground/faust/modular-subtractive-smoke.html b/playground/faust/modular-subtractive-smoke.html new file mode 100644 index 0000000..f7b25b8 --- /dev/null +++ b/playground/faust/modular-subtractive-smoke.html @@ -0,0 +1,255 @@ + + + + + Modular Subtractive — Smoke Test + + + +

modular-subtractive smoke test

+

Phase A gate. Loads the worklet, installs a default patch (ADSR 1 → amp), plays a 1 s note.

+ + + + + +

+ Output level: + 0.000 +

+ +
+ + + + diff --git a/playground/faust/modular-subtractive.dsp b/playground/faust/modular-subtractive.dsp new file mode 100644 index 0000000..fbb3dd4 --- /dev/null +++ b/playground/faust/modular-subtractive.dsp @@ -0,0 +1,1192 @@ +// modular-subtractive.dsp — Minimoog-style subtractive voice for the "Modular" mode. +// +// AUTO-GENERATED by gen-modular-dsp.py. DO NOT EDIT BY HAND. +// Regenerate with: +// cd playground/faust && python3 gen-modular-dsp.py +// +// Audio path: 3 oscillators + noise → mixer → moog ladder filter → amp/pan. +// All envelopes and LFOs come from mod-pool.lib via a 48-source × 10-dest +// modulation matrix. No internal envs/LFOs. +// +// Modulation destinations (10): +// 0 pitch semitones, applied to all osc frequencies +// 1 osc2_detune cents offset added to osc2 detune knob +// 2 osc3_detune cents offset added to osc3 detune knob +// 3 osc_mix_bal -1..+1 crossfades osc1<->osc3 +// 4 noise_level added to noise level knob +// 5 cutoff +/-5 octaves of filter cutoff modulation +// 6 resonance added to res knob +// 7 filter_env_amt second independent +/-5 octave cutoff mod channel +// 8 amp added to amp knob (route an ADSR here for a VCA env) +// 9 pan added to pan knob +// +// Hidden controls (driven by noteOn/noteOff, not by the ML engine): +// freq, gate, _vel +// +// Build: +// cd playground/faust && ./build.sh +// +// --------------------------------------------------------------------------- + +import("stdfaust.lib"); +mp = library("mod-pool.lib"); + +// --------------------------------------------------------------------------- +// Hidden controls +// --------------------------------------------------------------------------- +freq = hslider("0_Hidden/freq[hidden:1][unit:Hz]", 220, 20, 4000, 0.01); +gate = button("0_Hidden/gate[hidden:1]"); +vel = hslider("0_Hidden/_vel[hidden:1]", 0.7, 0.0, 1.0, 0.001) : si.smoo; + +// --------------------------------------------------------------------------- +// Group 1 — Oscillators +// --------------------------------------------------------------------------- +osc1_wave = hslider("1_Oscillators/00_osc1_wave[tooltip:0=saw,0.5=tri,1=square]", 0.0, 0.0, 1.0, 0.001); +osc1_range = hslider("1_Oscillators/01_osc1_range[unit:oct]", 0.0, -2.0, 2.0, 0.01); +osc1_level = hslider("1_Oscillators/02_osc1_level", 0.8, 0.0, 1.0, 0.001); + +osc2_wave = hslider("1_Oscillators/03_osc2_wave[tooltip:0=saw,0.5=tri,1=square]", 0.0, 0.0, 1.0, 0.001); +osc2_range = hslider("1_Oscillators/04_osc2_range[unit:oct]", 0.0, -2.0, 2.0, 0.01); +osc2_detune = hslider("1_Oscillators/05_osc2_detune[unit:ct]", 0.0, -50.0, 50.0, 0.1); +osc2_level = hslider("1_Oscillators/06_osc2_level", 0.6, 0.0, 1.0, 0.001); + +osc3_wave = hslider("1_Oscillators/07_osc3_wave[tooltip:0=saw,0.5=tri,1=square]", 0.5, 0.0, 1.0, 0.001); +osc3_range = hslider("1_Oscillators/08_osc3_range[unit:oct]", -1.0, -2.0, 2.0, 0.01); +osc3_detune = hslider("1_Oscillators/09_osc3_detune[unit:ct]", 0.0, -50.0, 50.0, 0.1); +osc3_level = hslider("1_Oscillators/10_osc3_level", 0.4, 0.0, 1.0, 0.001); +osc3_kb_track = hslider("1_Oscillators/11_osc3_kb_track[tooltip:1=tracks keyboard,0=LFO]", 1.0, 0.0, 1.0, 1.0); + +// --------------------------------------------------------------------------- +// Group 2 — Mixer +// --------------------------------------------------------------------------- +noise_type = hslider("2_Mixer/00_noise_type[tooltip:0=white,1=pink]", 0.0, 0.0, 1.0, 1.0); +noise_level = hslider("2_Mixer/01_noise_level", 0.0, 0.0, 1.0, 0.001); +mixer_drive = hslider("2_Mixer/02_mixer_drive[tooltip:Pre-filter overdrive]", 1.0, 0.5, 4.0, 0.001); + +// --------------------------------------------------------------------------- +// Group 3 — Filter +// --------------------------------------------------------------------------- +cutoff = hslider("3_Filter/00_cutoff[scale:log][unit:Hz]", 1200.0, 20.0, 20000.0, 0.1); +resonance = hslider("3_Filter/01_resonance", 0.3, 0.0, 1.0, 0.001); +filter_kb = hslider("3_Filter/02_filter_kb_track", 0.5, 0.0, 1.0, 0.001); + +// --------------------------------------------------------------------------- +// Group 4 — Master +// --------------------------------------------------------------------------- +master_level = hslider("4_Master/00_master_level", 0.7, 0.0, 1.0, 0.001); +master_glide = hslider("4_Master/01_master_glide[unit:s][scale:log]", 0.0, 0.0, 2.0, 0.001); +master_tune = hslider("4_Master/02_master_tune[unit:ct]", 0.0, -50.0, 50.0, 0.1); +master_pan = hslider("4_Master/03_master_pan", 0.0, -1.0, 1.0, 0.001); + +// --------------------------------------------------------------------------- +// Modulation matrix — 48 sources × 10 destinations. +// Each hslider is one "amount" entry in [-1, +1]. Zero = no connection. +// Group "MM_Matrix" so the paramMeta parser can recognise matrix params. +// --------------------------------------------------------------------------- + +// Matrix column: destination 0 = pitch +amt_s00_d00_pitch = hslider("MM_Matrix/s00_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s01_d00_pitch = hslider("MM_Matrix/s01_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s02_d00_pitch = hslider("MM_Matrix/s02_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s03_d00_pitch = hslider("MM_Matrix/s03_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s04_d00_pitch = hslider("MM_Matrix/s04_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s05_d00_pitch = hslider("MM_Matrix/s05_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s06_d00_pitch = hslider("MM_Matrix/s06_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s07_d00_pitch = hslider("MM_Matrix/s07_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s08_d00_pitch = hslider("MM_Matrix/s08_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s09_d00_pitch = hslider("MM_Matrix/s09_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s10_d00_pitch = hslider("MM_Matrix/s10_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s11_d00_pitch = hslider("MM_Matrix/s11_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s12_d00_pitch = hslider("MM_Matrix/s12_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s13_d00_pitch = hslider("MM_Matrix/s13_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s14_d00_pitch = hslider("MM_Matrix/s14_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s15_d00_pitch = hslider("MM_Matrix/s15_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s16_d00_pitch = hslider("MM_Matrix/s16_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s17_d00_pitch = hslider("MM_Matrix/s17_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s18_d00_pitch = hslider("MM_Matrix/s18_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s19_d00_pitch = hslider("MM_Matrix/s19_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s20_d00_pitch = hslider("MM_Matrix/s20_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s21_d00_pitch = hslider("MM_Matrix/s21_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s22_d00_pitch = hslider("MM_Matrix/s22_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s23_d00_pitch = hslider("MM_Matrix/s23_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s24_d00_pitch = hslider("MM_Matrix/s24_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s25_d00_pitch = hslider("MM_Matrix/s25_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s26_d00_pitch = hslider("MM_Matrix/s26_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s27_d00_pitch = hslider("MM_Matrix/s27_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s28_d00_pitch = hslider("MM_Matrix/s28_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s29_d00_pitch = hslider("MM_Matrix/s29_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s30_d00_pitch = hslider("MM_Matrix/s30_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s31_d00_pitch = hslider("MM_Matrix/s31_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s32_d00_pitch = hslider("MM_Matrix/s32_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s33_d00_pitch = hslider("MM_Matrix/s33_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s34_d00_pitch = hslider("MM_Matrix/s34_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s35_d00_pitch = hslider("MM_Matrix/s35_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s36_d00_pitch = hslider("MM_Matrix/s36_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s37_d00_pitch = hslider("MM_Matrix/s37_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s38_d00_pitch = hslider("MM_Matrix/s38_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s39_d00_pitch = hslider("MM_Matrix/s39_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s40_d00_pitch = hslider("MM_Matrix/s40_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s41_d00_pitch = hslider("MM_Matrix/s41_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s42_d00_pitch = hslider("MM_Matrix/s42_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s43_d00_pitch = hslider("MM_Matrix/s43_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s44_d00_pitch = hslider("MM_Matrix/s44_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s45_d00_pitch = hslider("MM_Matrix/s45_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s46_d00_pitch = hslider("MM_Matrix/s46_d00_pitch", 0.0, -1.0, 1.0, 0.001); +amt_s47_d00_pitch = hslider("MM_Matrix/s47_d00_pitch", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 1 = osc2_detune +amt_s00_d01_osc2_detune = hslider("MM_Matrix/s00_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s01_d01_osc2_detune = hslider("MM_Matrix/s01_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s02_d01_osc2_detune = hslider("MM_Matrix/s02_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s03_d01_osc2_detune = hslider("MM_Matrix/s03_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s04_d01_osc2_detune = hslider("MM_Matrix/s04_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s05_d01_osc2_detune = hslider("MM_Matrix/s05_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s06_d01_osc2_detune = hslider("MM_Matrix/s06_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s07_d01_osc2_detune = hslider("MM_Matrix/s07_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s08_d01_osc2_detune = hslider("MM_Matrix/s08_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s09_d01_osc2_detune = hslider("MM_Matrix/s09_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s10_d01_osc2_detune = hslider("MM_Matrix/s10_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s11_d01_osc2_detune = hslider("MM_Matrix/s11_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s12_d01_osc2_detune = hslider("MM_Matrix/s12_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s13_d01_osc2_detune = hslider("MM_Matrix/s13_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s14_d01_osc2_detune = hslider("MM_Matrix/s14_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s15_d01_osc2_detune = hslider("MM_Matrix/s15_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s16_d01_osc2_detune = hslider("MM_Matrix/s16_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s17_d01_osc2_detune = hslider("MM_Matrix/s17_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s18_d01_osc2_detune = hslider("MM_Matrix/s18_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s19_d01_osc2_detune = hslider("MM_Matrix/s19_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s20_d01_osc2_detune = hslider("MM_Matrix/s20_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s21_d01_osc2_detune = hslider("MM_Matrix/s21_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s22_d01_osc2_detune = hslider("MM_Matrix/s22_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s23_d01_osc2_detune = hslider("MM_Matrix/s23_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s24_d01_osc2_detune = hslider("MM_Matrix/s24_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s25_d01_osc2_detune = hslider("MM_Matrix/s25_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s26_d01_osc2_detune = hslider("MM_Matrix/s26_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s27_d01_osc2_detune = hslider("MM_Matrix/s27_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s28_d01_osc2_detune = hslider("MM_Matrix/s28_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s29_d01_osc2_detune = hslider("MM_Matrix/s29_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s30_d01_osc2_detune = hslider("MM_Matrix/s30_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s31_d01_osc2_detune = hslider("MM_Matrix/s31_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s32_d01_osc2_detune = hslider("MM_Matrix/s32_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s33_d01_osc2_detune = hslider("MM_Matrix/s33_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s34_d01_osc2_detune = hslider("MM_Matrix/s34_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s35_d01_osc2_detune = hslider("MM_Matrix/s35_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s36_d01_osc2_detune = hslider("MM_Matrix/s36_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s37_d01_osc2_detune = hslider("MM_Matrix/s37_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s38_d01_osc2_detune = hslider("MM_Matrix/s38_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s39_d01_osc2_detune = hslider("MM_Matrix/s39_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s40_d01_osc2_detune = hslider("MM_Matrix/s40_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s41_d01_osc2_detune = hslider("MM_Matrix/s41_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s42_d01_osc2_detune = hslider("MM_Matrix/s42_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s43_d01_osc2_detune = hslider("MM_Matrix/s43_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s44_d01_osc2_detune = hslider("MM_Matrix/s44_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s45_d01_osc2_detune = hslider("MM_Matrix/s45_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s46_d01_osc2_detune = hslider("MM_Matrix/s46_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); +amt_s47_d01_osc2_detune = hslider("MM_Matrix/s47_d01_osc2_detune", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 2 = osc3_detune +amt_s00_d02_osc3_detune = hslider("MM_Matrix/s00_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s01_d02_osc3_detune = hslider("MM_Matrix/s01_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s02_d02_osc3_detune = hslider("MM_Matrix/s02_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s03_d02_osc3_detune = hslider("MM_Matrix/s03_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s04_d02_osc3_detune = hslider("MM_Matrix/s04_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s05_d02_osc3_detune = hslider("MM_Matrix/s05_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s06_d02_osc3_detune = hslider("MM_Matrix/s06_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s07_d02_osc3_detune = hslider("MM_Matrix/s07_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s08_d02_osc3_detune = hslider("MM_Matrix/s08_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s09_d02_osc3_detune = hslider("MM_Matrix/s09_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s10_d02_osc3_detune = hslider("MM_Matrix/s10_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s11_d02_osc3_detune = hslider("MM_Matrix/s11_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s12_d02_osc3_detune = hslider("MM_Matrix/s12_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s13_d02_osc3_detune = hslider("MM_Matrix/s13_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s14_d02_osc3_detune = hslider("MM_Matrix/s14_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s15_d02_osc3_detune = hslider("MM_Matrix/s15_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s16_d02_osc3_detune = hslider("MM_Matrix/s16_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s17_d02_osc3_detune = hslider("MM_Matrix/s17_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s18_d02_osc3_detune = hslider("MM_Matrix/s18_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s19_d02_osc3_detune = hslider("MM_Matrix/s19_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s20_d02_osc3_detune = hslider("MM_Matrix/s20_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s21_d02_osc3_detune = hslider("MM_Matrix/s21_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s22_d02_osc3_detune = hslider("MM_Matrix/s22_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s23_d02_osc3_detune = hslider("MM_Matrix/s23_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s24_d02_osc3_detune = hslider("MM_Matrix/s24_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s25_d02_osc3_detune = hslider("MM_Matrix/s25_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s26_d02_osc3_detune = hslider("MM_Matrix/s26_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s27_d02_osc3_detune = hslider("MM_Matrix/s27_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s28_d02_osc3_detune = hslider("MM_Matrix/s28_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s29_d02_osc3_detune = hslider("MM_Matrix/s29_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s30_d02_osc3_detune = hslider("MM_Matrix/s30_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s31_d02_osc3_detune = hslider("MM_Matrix/s31_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s32_d02_osc3_detune = hslider("MM_Matrix/s32_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s33_d02_osc3_detune = hslider("MM_Matrix/s33_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s34_d02_osc3_detune = hslider("MM_Matrix/s34_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s35_d02_osc3_detune = hslider("MM_Matrix/s35_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s36_d02_osc3_detune = hslider("MM_Matrix/s36_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s37_d02_osc3_detune = hslider("MM_Matrix/s37_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s38_d02_osc3_detune = hslider("MM_Matrix/s38_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s39_d02_osc3_detune = hslider("MM_Matrix/s39_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s40_d02_osc3_detune = hslider("MM_Matrix/s40_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s41_d02_osc3_detune = hslider("MM_Matrix/s41_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s42_d02_osc3_detune = hslider("MM_Matrix/s42_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s43_d02_osc3_detune = hslider("MM_Matrix/s43_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s44_d02_osc3_detune = hslider("MM_Matrix/s44_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s45_d02_osc3_detune = hslider("MM_Matrix/s45_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s46_d02_osc3_detune = hslider("MM_Matrix/s46_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); +amt_s47_d02_osc3_detune = hslider("MM_Matrix/s47_d02_osc3_detune", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 3 = osc_mix_bal +amt_s00_d03_osc_mix_bal = hslider("MM_Matrix/s00_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s01_d03_osc_mix_bal = hslider("MM_Matrix/s01_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s02_d03_osc_mix_bal = hslider("MM_Matrix/s02_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s03_d03_osc_mix_bal = hslider("MM_Matrix/s03_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s04_d03_osc_mix_bal = hslider("MM_Matrix/s04_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s05_d03_osc_mix_bal = hslider("MM_Matrix/s05_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s06_d03_osc_mix_bal = hslider("MM_Matrix/s06_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s07_d03_osc_mix_bal = hslider("MM_Matrix/s07_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s08_d03_osc_mix_bal = hslider("MM_Matrix/s08_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s09_d03_osc_mix_bal = hslider("MM_Matrix/s09_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s10_d03_osc_mix_bal = hslider("MM_Matrix/s10_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s11_d03_osc_mix_bal = hslider("MM_Matrix/s11_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s12_d03_osc_mix_bal = hslider("MM_Matrix/s12_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s13_d03_osc_mix_bal = hslider("MM_Matrix/s13_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s14_d03_osc_mix_bal = hslider("MM_Matrix/s14_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s15_d03_osc_mix_bal = hslider("MM_Matrix/s15_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s16_d03_osc_mix_bal = hslider("MM_Matrix/s16_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s17_d03_osc_mix_bal = hslider("MM_Matrix/s17_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s18_d03_osc_mix_bal = hslider("MM_Matrix/s18_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s19_d03_osc_mix_bal = hslider("MM_Matrix/s19_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s20_d03_osc_mix_bal = hslider("MM_Matrix/s20_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s21_d03_osc_mix_bal = hslider("MM_Matrix/s21_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s22_d03_osc_mix_bal = hslider("MM_Matrix/s22_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s23_d03_osc_mix_bal = hslider("MM_Matrix/s23_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s24_d03_osc_mix_bal = hslider("MM_Matrix/s24_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s25_d03_osc_mix_bal = hslider("MM_Matrix/s25_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s26_d03_osc_mix_bal = hslider("MM_Matrix/s26_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s27_d03_osc_mix_bal = hslider("MM_Matrix/s27_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s28_d03_osc_mix_bal = hslider("MM_Matrix/s28_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s29_d03_osc_mix_bal = hslider("MM_Matrix/s29_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s30_d03_osc_mix_bal = hslider("MM_Matrix/s30_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s31_d03_osc_mix_bal = hslider("MM_Matrix/s31_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s32_d03_osc_mix_bal = hslider("MM_Matrix/s32_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s33_d03_osc_mix_bal = hslider("MM_Matrix/s33_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s34_d03_osc_mix_bal = hslider("MM_Matrix/s34_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s35_d03_osc_mix_bal = hslider("MM_Matrix/s35_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s36_d03_osc_mix_bal = hslider("MM_Matrix/s36_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s37_d03_osc_mix_bal = hslider("MM_Matrix/s37_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s38_d03_osc_mix_bal = hslider("MM_Matrix/s38_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s39_d03_osc_mix_bal = hslider("MM_Matrix/s39_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s40_d03_osc_mix_bal = hslider("MM_Matrix/s40_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s41_d03_osc_mix_bal = hslider("MM_Matrix/s41_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s42_d03_osc_mix_bal = hslider("MM_Matrix/s42_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s43_d03_osc_mix_bal = hslider("MM_Matrix/s43_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s44_d03_osc_mix_bal = hslider("MM_Matrix/s44_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s45_d03_osc_mix_bal = hslider("MM_Matrix/s45_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s46_d03_osc_mix_bal = hslider("MM_Matrix/s46_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); +amt_s47_d03_osc_mix_bal = hslider("MM_Matrix/s47_d03_osc_mix_bal", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 4 = noise_level +amt_s00_d04_noise_level = hslider("MM_Matrix/s00_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s01_d04_noise_level = hslider("MM_Matrix/s01_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s02_d04_noise_level = hslider("MM_Matrix/s02_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s03_d04_noise_level = hslider("MM_Matrix/s03_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s04_d04_noise_level = hslider("MM_Matrix/s04_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s05_d04_noise_level = hslider("MM_Matrix/s05_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s06_d04_noise_level = hslider("MM_Matrix/s06_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s07_d04_noise_level = hslider("MM_Matrix/s07_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s08_d04_noise_level = hslider("MM_Matrix/s08_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s09_d04_noise_level = hslider("MM_Matrix/s09_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s10_d04_noise_level = hslider("MM_Matrix/s10_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s11_d04_noise_level = hslider("MM_Matrix/s11_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s12_d04_noise_level = hslider("MM_Matrix/s12_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s13_d04_noise_level = hslider("MM_Matrix/s13_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s14_d04_noise_level = hslider("MM_Matrix/s14_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s15_d04_noise_level = hslider("MM_Matrix/s15_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s16_d04_noise_level = hslider("MM_Matrix/s16_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s17_d04_noise_level = hslider("MM_Matrix/s17_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s18_d04_noise_level = hslider("MM_Matrix/s18_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s19_d04_noise_level = hslider("MM_Matrix/s19_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s20_d04_noise_level = hslider("MM_Matrix/s20_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s21_d04_noise_level = hslider("MM_Matrix/s21_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s22_d04_noise_level = hslider("MM_Matrix/s22_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s23_d04_noise_level = hslider("MM_Matrix/s23_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s24_d04_noise_level = hslider("MM_Matrix/s24_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s25_d04_noise_level = hslider("MM_Matrix/s25_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s26_d04_noise_level = hslider("MM_Matrix/s26_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s27_d04_noise_level = hslider("MM_Matrix/s27_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s28_d04_noise_level = hslider("MM_Matrix/s28_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s29_d04_noise_level = hslider("MM_Matrix/s29_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s30_d04_noise_level = hslider("MM_Matrix/s30_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s31_d04_noise_level = hslider("MM_Matrix/s31_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s32_d04_noise_level = hslider("MM_Matrix/s32_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s33_d04_noise_level = hslider("MM_Matrix/s33_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s34_d04_noise_level = hslider("MM_Matrix/s34_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s35_d04_noise_level = hslider("MM_Matrix/s35_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s36_d04_noise_level = hslider("MM_Matrix/s36_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s37_d04_noise_level = hslider("MM_Matrix/s37_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s38_d04_noise_level = hslider("MM_Matrix/s38_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s39_d04_noise_level = hslider("MM_Matrix/s39_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s40_d04_noise_level = hslider("MM_Matrix/s40_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s41_d04_noise_level = hslider("MM_Matrix/s41_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s42_d04_noise_level = hslider("MM_Matrix/s42_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s43_d04_noise_level = hslider("MM_Matrix/s43_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s44_d04_noise_level = hslider("MM_Matrix/s44_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s45_d04_noise_level = hslider("MM_Matrix/s45_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s46_d04_noise_level = hslider("MM_Matrix/s46_d04_noise_level", 0.0, -1.0, 1.0, 0.001); +amt_s47_d04_noise_level = hslider("MM_Matrix/s47_d04_noise_level", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 5 = cutoff +amt_s00_d05_cutoff = hslider("MM_Matrix/s00_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s01_d05_cutoff = hslider("MM_Matrix/s01_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s02_d05_cutoff = hslider("MM_Matrix/s02_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s03_d05_cutoff = hslider("MM_Matrix/s03_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s04_d05_cutoff = hslider("MM_Matrix/s04_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s05_d05_cutoff = hslider("MM_Matrix/s05_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s06_d05_cutoff = hslider("MM_Matrix/s06_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s07_d05_cutoff = hslider("MM_Matrix/s07_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s08_d05_cutoff = hslider("MM_Matrix/s08_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s09_d05_cutoff = hslider("MM_Matrix/s09_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s10_d05_cutoff = hslider("MM_Matrix/s10_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s11_d05_cutoff = hslider("MM_Matrix/s11_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s12_d05_cutoff = hslider("MM_Matrix/s12_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s13_d05_cutoff = hslider("MM_Matrix/s13_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s14_d05_cutoff = hslider("MM_Matrix/s14_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s15_d05_cutoff = hslider("MM_Matrix/s15_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s16_d05_cutoff = hslider("MM_Matrix/s16_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s17_d05_cutoff = hslider("MM_Matrix/s17_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s18_d05_cutoff = hslider("MM_Matrix/s18_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s19_d05_cutoff = hslider("MM_Matrix/s19_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s20_d05_cutoff = hslider("MM_Matrix/s20_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s21_d05_cutoff = hslider("MM_Matrix/s21_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s22_d05_cutoff = hslider("MM_Matrix/s22_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s23_d05_cutoff = hslider("MM_Matrix/s23_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s24_d05_cutoff = hslider("MM_Matrix/s24_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s25_d05_cutoff = hslider("MM_Matrix/s25_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s26_d05_cutoff = hslider("MM_Matrix/s26_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s27_d05_cutoff = hslider("MM_Matrix/s27_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s28_d05_cutoff = hslider("MM_Matrix/s28_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s29_d05_cutoff = hslider("MM_Matrix/s29_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s30_d05_cutoff = hslider("MM_Matrix/s30_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s31_d05_cutoff = hslider("MM_Matrix/s31_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s32_d05_cutoff = hslider("MM_Matrix/s32_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s33_d05_cutoff = hslider("MM_Matrix/s33_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s34_d05_cutoff = hslider("MM_Matrix/s34_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s35_d05_cutoff = hslider("MM_Matrix/s35_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s36_d05_cutoff = hslider("MM_Matrix/s36_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s37_d05_cutoff = hslider("MM_Matrix/s37_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s38_d05_cutoff = hslider("MM_Matrix/s38_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s39_d05_cutoff = hslider("MM_Matrix/s39_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s40_d05_cutoff = hslider("MM_Matrix/s40_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s41_d05_cutoff = hslider("MM_Matrix/s41_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s42_d05_cutoff = hslider("MM_Matrix/s42_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s43_d05_cutoff = hslider("MM_Matrix/s43_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s44_d05_cutoff = hslider("MM_Matrix/s44_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s45_d05_cutoff = hslider("MM_Matrix/s45_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s46_d05_cutoff = hslider("MM_Matrix/s46_d05_cutoff", 0.0, -1.0, 1.0, 0.001); +amt_s47_d05_cutoff = hslider("MM_Matrix/s47_d05_cutoff", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 6 = resonance +amt_s00_d06_resonance = hslider("MM_Matrix/s00_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s01_d06_resonance = hslider("MM_Matrix/s01_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s02_d06_resonance = hslider("MM_Matrix/s02_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s03_d06_resonance = hslider("MM_Matrix/s03_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s04_d06_resonance = hslider("MM_Matrix/s04_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s05_d06_resonance = hslider("MM_Matrix/s05_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s06_d06_resonance = hslider("MM_Matrix/s06_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s07_d06_resonance = hslider("MM_Matrix/s07_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s08_d06_resonance = hslider("MM_Matrix/s08_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s09_d06_resonance = hslider("MM_Matrix/s09_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s10_d06_resonance = hslider("MM_Matrix/s10_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s11_d06_resonance = hslider("MM_Matrix/s11_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s12_d06_resonance = hslider("MM_Matrix/s12_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s13_d06_resonance = hslider("MM_Matrix/s13_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s14_d06_resonance = hslider("MM_Matrix/s14_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s15_d06_resonance = hslider("MM_Matrix/s15_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s16_d06_resonance = hslider("MM_Matrix/s16_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s17_d06_resonance = hslider("MM_Matrix/s17_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s18_d06_resonance = hslider("MM_Matrix/s18_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s19_d06_resonance = hslider("MM_Matrix/s19_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s20_d06_resonance = hslider("MM_Matrix/s20_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s21_d06_resonance = hslider("MM_Matrix/s21_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s22_d06_resonance = hslider("MM_Matrix/s22_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s23_d06_resonance = hslider("MM_Matrix/s23_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s24_d06_resonance = hslider("MM_Matrix/s24_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s25_d06_resonance = hslider("MM_Matrix/s25_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s26_d06_resonance = hslider("MM_Matrix/s26_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s27_d06_resonance = hslider("MM_Matrix/s27_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s28_d06_resonance = hslider("MM_Matrix/s28_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s29_d06_resonance = hslider("MM_Matrix/s29_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s30_d06_resonance = hslider("MM_Matrix/s30_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s31_d06_resonance = hslider("MM_Matrix/s31_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s32_d06_resonance = hslider("MM_Matrix/s32_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s33_d06_resonance = hslider("MM_Matrix/s33_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s34_d06_resonance = hslider("MM_Matrix/s34_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s35_d06_resonance = hslider("MM_Matrix/s35_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s36_d06_resonance = hslider("MM_Matrix/s36_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s37_d06_resonance = hslider("MM_Matrix/s37_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s38_d06_resonance = hslider("MM_Matrix/s38_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s39_d06_resonance = hslider("MM_Matrix/s39_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s40_d06_resonance = hslider("MM_Matrix/s40_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s41_d06_resonance = hslider("MM_Matrix/s41_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s42_d06_resonance = hslider("MM_Matrix/s42_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s43_d06_resonance = hslider("MM_Matrix/s43_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s44_d06_resonance = hslider("MM_Matrix/s44_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s45_d06_resonance = hslider("MM_Matrix/s45_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s46_d06_resonance = hslider("MM_Matrix/s46_d06_resonance", 0.0, -1.0, 1.0, 0.001); +amt_s47_d06_resonance = hslider("MM_Matrix/s47_d06_resonance", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 7 = filter_env_amt +amt_s00_d07_filter_env_amt = hslider("MM_Matrix/s00_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s01_d07_filter_env_amt = hslider("MM_Matrix/s01_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s02_d07_filter_env_amt = hslider("MM_Matrix/s02_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s03_d07_filter_env_amt = hslider("MM_Matrix/s03_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s04_d07_filter_env_amt = hslider("MM_Matrix/s04_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s05_d07_filter_env_amt = hslider("MM_Matrix/s05_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s06_d07_filter_env_amt = hslider("MM_Matrix/s06_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s07_d07_filter_env_amt = hslider("MM_Matrix/s07_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s08_d07_filter_env_amt = hslider("MM_Matrix/s08_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s09_d07_filter_env_amt = hslider("MM_Matrix/s09_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s10_d07_filter_env_amt = hslider("MM_Matrix/s10_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s11_d07_filter_env_amt = hslider("MM_Matrix/s11_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s12_d07_filter_env_amt = hslider("MM_Matrix/s12_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s13_d07_filter_env_amt = hslider("MM_Matrix/s13_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s14_d07_filter_env_amt = hslider("MM_Matrix/s14_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s15_d07_filter_env_amt = hslider("MM_Matrix/s15_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s16_d07_filter_env_amt = hslider("MM_Matrix/s16_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s17_d07_filter_env_amt = hslider("MM_Matrix/s17_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s18_d07_filter_env_amt = hslider("MM_Matrix/s18_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s19_d07_filter_env_amt = hslider("MM_Matrix/s19_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s20_d07_filter_env_amt = hslider("MM_Matrix/s20_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s21_d07_filter_env_amt = hslider("MM_Matrix/s21_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s22_d07_filter_env_amt = hslider("MM_Matrix/s22_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s23_d07_filter_env_amt = hslider("MM_Matrix/s23_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s24_d07_filter_env_amt = hslider("MM_Matrix/s24_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s25_d07_filter_env_amt = hslider("MM_Matrix/s25_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s26_d07_filter_env_amt = hslider("MM_Matrix/s26_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s27_d07_filter_env_amt = hslider("MM_Matrix/s27_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s28_d07_filter_env_amt = hslider("MM_Matrix/s28_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s29_d07_filter_env_amt = hslider("MM_Matrix/s29_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s30_d07_filter_env_amt = hslider("MM_Matrix/s30_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s31_d07_filter_env_amt = hslider("MM_Matrix/s31_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s32_d07_filter_env_amt = hslider("MM_Matrix/s32_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s33_d07_filter_env_amt = hslider("MM_Matrix/s33_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s34_d07_filter_env_amt = hslider("MM_Matrix/s34_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s35_d07_filter_env_amt = hslider("MM_Matrix/s35_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s36_d07_filter_env_amt = hslider("MM_Matrix/s36_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s37_d07_filter_env_amt = hslider("MM_Matrix/s37_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s38_d07_filter_env_amt = hslider("MM_Matrix/s38_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s39_d07_filter_env_amt = hslider("MM_Matrix/s39_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s40_d07_filter_env_amt = hslider("MM_Matrix/s40_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s41_d07_filter_env_amt = hslider("MM_Matrix/s41_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s42_d07_filter_env_amt = hslider("MM_Matrix/s42_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s43_d07_filter_env_amt = hslider("MM_Matrix/s43_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s44_d07_filter_env_amt = hslider("MM_Matrix/s44_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s45_d07_filter_env_amt = hslider("MM_Matrix/s45_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s46_d07_filter_env_amt = hslider("MM_Matrix/s46_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); +amt_s47_d07_filter_env_amt = hslider("MM_Matrix/s47_d07_filter_env_amt", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 8 = amp +amt_s00_d08_amp = hslider("MM_Matrix/s00_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s01_d08_amp = hslider("MM_Matrix/s01_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s02_d08_amp = hslider("MM_Matrix/s02_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s03_d08_amp = hslider("MM_Matrix/s03_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s04_d08_amp = hslider("MM_Matrix/s04_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s05_d08_amp = hslider("MM_Matrix/s05_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s06_d08_amp = hslider("MM_Matrix/s06_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s07_d08_amp = hslider("MM_Matrix/s07_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s08_d08_amp = hslider("MM_Matrix/s08_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s09_d08_amp = hslider("MM_Matrix/s09_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s10_d08_amp = hslider("MM_Matrix/s10_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s11_d08_amp = hslider("MM_Matrix/s11_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s12_d08_amp = hslider("MM_Matrix/s12_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s13_d08_amp = hslider("MM_Matrix/s13_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s14_d08_amp = hslider("MM_Matrix/s14_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s15_d08_amp = hslider("MM_Matrix/s15_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s16_d08_amp = hslider("MM_Matrix/s16_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s17_d08_amp = hslider("MM_Matrix/s17_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s18_d08_amp = hslider("MM_Matrix/s18_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s19_d08_amp = hslider("MM_Matrix/s19_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s20_d08_amp = hslider("MM_Matrix/s20_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s21_d08_amp = hslider("MM_Matrix/s21_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s22_d08_amp = hslider("MM_Matrix/s22_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s23_d08_amp = hslider("MM_Matrix/s23_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s24_d08_amp = hslider("MM_Matrix/s24_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s25_d08_amp = hslider("MM_Matrix/s25_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s26_d08_amp = hslider("MM_Matrix/s26_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s27_d08_amp = hslider("MM_Matrix/s27_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s28_d08_amp = hslider("MM_Matrix/s28_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s29_d08_amp = hslider("MM_Matrix/s29_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s30_d08_amp = hslider("MM_Matrix/s30_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s31_d08_amp = hslider("MM_Matrix/s31_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s32_d08_amp = hslider("MM_Matrix/s32_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s33_d08_amp = hslider("MM_Matrix/s33_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s34_d08_amp = hslider("MM_Matrix/s34_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s35_d08_amp = hslider("MM_Matrix/s35_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s36_d08_amp = hslider("MM_Matrix/s36_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s37_d08_amp = hslider("MM_Matrix/s37_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s38_d08_amp = hslider("MM_Matrix/s38_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s39_d08_amp = hslider("MM_Matrix/s39_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s40_d08_amp = hslider("MM_Matrix/s40_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s41_d08_amp = hslider("MM_Matrix/s41_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s42_d08_amp = hslider("MM_Matrix/s42_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s43_d08_amp = hslider("MM_Matrix/s43_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s44_d08_amp = hslider("MM_Matrix/s44_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s45_d08_amp = hslider("MM_Matrix/s45_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s46_d08_amp = hslider("MM_Matrix/s46_d08_amp", 0.0, -1.0, 1.0, 0.001); +amt_s47_d08_amp = hslider("MM_Matrix/s47_d08_amp", 0.0, -1.0, 1.0, 0.001); + +// Matrix column: destination 9 = pan +amt_s00_d09_pan = hslider("MM_Matrix/s00_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s01_d09_pan = hslider("MM_Matrix/s01_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s02_d09_pan = hslider("MM_Matrix/s02_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s03_d09_pan = hslider("MM_Matrix/s03_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s04_d09_pan = hslider("MM_Matrix/s04_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s05_d09_pan = hslider("MM_Matrix/s05_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s06_d09_pan = hslider("MM_Matrix/s06_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s07_d09_pan = hslider("MM_Matrix/s07_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s08_d09_pan = hslider("MM_Matrix/s08_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s09_d09_pan = hslider("MM_Matrix/s09_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s10_d09_pan = hslider("MM_Matrix/s10_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s11_d09_pan = hslider("MM_Matrix/s11_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s12_d09_pan = hslider("MM_Matrix/s12_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s13_d09_pan = hslider("MM_Matrix/s13_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s14_d09_pan = hslider("MM_Matrix/s14_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s15_d09_pan = hslider("MM_Matrix/s15_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s16_d09_pan = hslider("MM_Matrix/s16_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s17_d09_pan = hslider("MM_Matrix/s17_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s18_d09_pan = hslider("MM_Matrix/s18_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s19_d09_pan = hslider("MM_Matrix/s19_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s20_d09_pan = hslider("MM_Matrix/s20_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s21_d09_pan = hslider("MM_Matrix/s21_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s22_d09_pan = hslider("MM_Matrix/s22_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s23_d09_pan = hslider("MM_Matrix/s23_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s24_d09_pan = hslider("MM_Matrix/s24_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s25_d09_pan = hslider("MM_Matrix/s25_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s26_d09_pan = hslider("MM_Matrix/s26_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s27_d09_pan = hslider("MM_Matrix/s27_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s28_d09_pan = hslider("MM_Matrix/s28_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s29_d09_pan = hslider("MM_Matrix/s29_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s30_d09_pan = hslider("MM_Matrix/s30_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s31_d09_pan = hslider("MM_Matrix/s31_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s32_d09_pan = hslider("MM_Matrix/s32_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s33_d09_pan = hslider("MM_Matrix/s33_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s34_d09_pan = hslider("MM_Matrix/s34_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s35_d09_pan = hslider("MM_Matrix/s35_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s36_d09_pan = hslider("MM_Matrix/s36_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s37_d09_pan = hslider("MM_Matrix/s37_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s38_d09_pan = hslider("MM_Matrix/s38_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s39_d09_pan = hslider("MM_Matrix/s39_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s40_d09_pan = hslider("MM_Matrix/s40_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s41_d09_pan = hslider("MM_Matrix/s41_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s42_d09_pan = hslider("MM_Matrix/s42_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s43_d09_pan = hslider("MM_Matrix/s43_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s44_d09_pan = hslider("MM_Matrix/s44_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s45_d09_pan = hslider("MM_Matrix/s45_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s46_d09_pan = hslider("MM_Matrix/s46_d09_pan", 0.0, -1.0, 1.0, 0.001); +amt_s47_d09_pan = hslider("MM_Matrix/s47_d09_pan", 0.0, -1.0, 1.0, 0.001); + +// --------------------------------------------------------------------------- +// Destination signals — one per modulation destination. Each is a 48-term +// weighted sum of sources × amounts. The `gate` argument is threaded through +// so that mp.src??(gate) can drive ADSR envelopes. +// --------------------------------------------------------------------------- + +mod_pitch(gate) = + mp.src00(gate) * amt_s00_d00_pitch + + mp.src01(gate) * amt_s01_d00_pitch + + mp.src02(gate) * amt_s02_d00_pitch + + mp.src03(gate) * amt_s03_d00_pitch + + mp.src04(gate) * amt_s04_d00_pitch + + mp.src05(gate) * amt_s05_d00_pitch + + mp.src06(gate) * amt_s06_d00_pitch + + mp.src07(gate) * amt_s07_d00_pitch + + mp.src08(gate) * amt_s08_d00_pitch + + mp.src09(gate) * amt_s09_d00_pitch + + mp.src10(gate) * amt_s10_d00_pitch + + mp.src11(gate) * amt_s11_d00_pitch + + mp.src12(gate) * amt_s12_d00_pitch + + mp.src13(gate) * amt_s13_d00_pitch + + mp.src14(gate) * amt_s14_d00_pitch + + mp.src15(gate) * amt_s15_d00_pitch + + mp.src16(gate) * amt_s16_d00_pitch + + mp.src17(gate) * amt_s17_d00_pitch + + mp.src18(gate) * amt_s18_d00_pitch + + mp.src19(gate) * amt_s19_d00_pitch + + mp.src20(gate) * amt_s20_d00_pitch + + mp.src21(gate) * amt_s21_d00_pitch + + mp.src22(gate) * amt_s22_d00_pitch + + mp.src23(gate) * amt_s23_d00_pitch + + mp.src24(gate) * amt_s24_d00_pitch + + mp.src25(gate) * amt_s25_d00_pitch + + mp.src26(gate) * amt_s26_d00_pitch + + mp.src27(gate) * amt_s27_d00_pitch + + mp.src28(gate) * amt_s28_d00_pitch + + mp.src29(gate) * amt_s29_d00_pitch + + mp.src30(gate) * amt_s30_d00_pitch + + mp.src31(gate) * amt_s31_d00_pitch + + mp.src32(gate) * amt_s32_d00_pitch + + mp.src33(gate) * amt_s33_d00_pitch + + mp.src34(gate) * amt_s34_d00_pitch + + mp.src35(gate) * amt_s35_d00_pitch + + mp.src36(gate) * amt_s36_d00_pitch + + mp.src37(gate) * amt_s37_d00_pitch + + mp.src38(gate) * amt_s38_d00_pitch + + mp.src39(gate) * amt_s39_d00_pitch + + mp.src40(gate) * amt_s40_d00_pitch + + mp.src41(gate) * amt_s41_d00_pitch + + mp.src42(gate) * amt_s42_d00_pitch + + mp.src43(gate) * amt_s43_d00_pitch + + mp.src44(gate) * amt_s44_d00_pitch + + mp.src45(gate) * amt_s45_d00_pitch + + mp.src46(gate) * amt_s46_d00_pitch + + mp.src47(gate) * amt_s47_d00_pitch; + +mod_osc2_detune(gate) = + mp.src00(gate) * amt_s00_d01_osc2_detune + + mp.src01(gate) * amt_s01_d01_osc2_detune + + mp.src02(gate) * amt_s02_d01_osc2_detune + + mp.src03(gate) * amt_s03_d01_osc2_detune + + mp.src04(gate) * amt_s04_d01_osc2_detune + + mp.src05(gate) * amt_s05_d01_osc2_detune + + mp.src06(gate) * amt_s06_d01_osc2_detune + + mp.src07(gate) * amt_s07_d01_osc2_detune + + mp.src08(gate) * amt_s08_d01_osc2_detune + + mp.src09(gate) * amt_s09_d01_osc2_detune + + mp.src10(gate) * amt_s10_d01_osc2_detune + + mp.src11(gate) * amt_s11_d01_osc2_detune + + mp.src12(gate) * amt_s12_d01_osc2_detune + + mp.src13(gate) * amt_s13_d01_osc2_detune + + mp.src14(gate) * amt_s14_d01_osc2_detune + + mp.src15(gate) * amt_s15_d01_osc2_detune + + mp.src16(gate) * amt_s16_d01_osc2_detune + + mp.src17(gate) * amt_s17_d01_osc2_detune + + mp.src18(gate) * amt_s18_d01_osc2_detune + + mp.src19(gate) * amt_s19_d01_osc2_detune + + mp.src20(gate) * amt_s20_d01_osc2_detune + + mp.src21(gate) * amt_s21_d01_osc2_detune + + mp.src22(gate) * amt_s22_d01_osc2_detune + + mp.src23(gate) * amt_s23_d01_osc2_detune + + mp.src24(gate) * amt_s24_d01_osc2_detune + + mp.src25(gate) * amt_s25_d01_osc2_detune + + mp.src26(gate) * amt_s26_d01_osc2_detune + + mp.src27(gate) * amt_s27_d01_osc2_detune + + mp.src28(gate) * amt_s28_d01_osc2_detune + + mp.src29(gate) * amt_s29_d01_osc2_detune + + mp.src30(gate) * amt_s30_d01_osc2_detune + + mp.src31(gate) * amt_s31_d01_osc2_detune + + mp.src32(gate) * amt_s32_d01_osc2_detune + + mp.src33(gate) * amt_s33_d01_osc2_detune + + mp.src34(gate) * amt_s34_d01_osc2_detune + + mp.src35(gate) * amt_s35_d01_osc2_detune + + mp.src36(gate) * amt_s36_d01_osc2_detune + + mp.src37(gate) * amt_s37_d01_osc2_detune + + mp.src38(gate) * amt_s38_d01_osc2_detune + + mp.src39(gate) * amt_s39_d01_osc2_detune + + mp.src40(gate) * amt_s40_d01_osc2_detune + + mp.src41(gate) * amt_s41_d01_osc2_detune + + mp.src42(gate) * amt_s42_d01_osc2_detune + + mp.src43(gate) * amt_s43_d01_osc2_detune + + mp.src44(gate) * amt_s44_d01_osc2_detune + + mp.src45(gate) * amt_s45_d01_osc2_detune + + mp.src46(gate) * amt_s46_d01_osc2_detune + + mp.src47(gate) * amt_s47_d01_osc2_detune; + +mod_osc3_detune(gate) = + mp.src00(gate) * amt_s00_d02_osc3_detune + + mp.src01(gate) * amt_s01_d02_osc3_detune + + mp.src02(gate) * amt_s02_d02_osc3_detune + + mp.src03(gate) * amt_s03_d02_osc3_detune + + mp.src04(gate) * amt_s04_d02_osc3_detune + + mp.src05(gate) * amt_s05_d02_osc3_detune + + mp.src06(gate) * amt_s06_d02_osc3_detune + + mp.src07(gate) * amt_s07_d02_osc3_detune + + mp.src08(gate) * amt_s08_d02_osc3_detune + + mp.src09(gate) * amt_s09_d02_osc3_detune + + mp.src10(gate) * amt_s10_d02_osc3_detune + + mp.src11(gate) * amt_s11_d02_osc3_detune + + mp.src12(gate) * amt_s12_d02_osc3_detune + + mp.src13(gate) * amt_s13_d02_osc3_detune + + mp.src14(gate) * amt_s14_d02_osc3_detune + + mp.src15(gate) * amt_s15_d02_osc3_detune + + mp.src16(gate) * amt_s16_d02_osc3_detune + + mp.src17(gate) * amt_s17_d02_osc3_detune + + mp.src18(gate) * amt_s18_d02_osc3_detune + + mp.src19(gate) * amt_s19_d02_osc3_detune + + mp.src20(gate) * amt_s20_d02_osc3_detune + + mp.src21(gate) * amt_s21_d02_osc3_detune + + mp.src22(gate) * amt_s22_d02_osc3_detune + + mp.src23(gate) * amt_s23_d02_osc3_detune + + mp.src24(gate) * amt_s24_d02_osc3_detune + + mp.src25(gate) * amt_s25_d02_osc3_detune + + mp.src26(gate) * amt_s26_d02_osc3_detune + + mp.src27(gate) * amt_s27_d02_osc3_detune + + mp.src28(gate) * amt_s28_d02_osc3_detune + + mp.src29(gate) * amt_s29_d02_osc3_detune + + mp.src30(gate) * amt_s30_d02_osc3_detune + + mp.src31(gate) * amt_s31_d02_osc3_detune + + mp.src32(gate) * amt_s32_d02_osc3_detune + + mp.src33(gate) * amt_s33_d02_osc3_detune + + mp.src34(gate) * amt_s34_d02_osc3_detune + + mp.src35(gate) * amt_s35_d02_osc3_detune + + mp.src36(gate) * amt_s36_d02_osc3_detune + + mp.src37(gate) * amt_s37_d02_osc3_detune + + mp.src38(gate) * amt_s38_d02_osc3_detune + + mp.src39(gate) * amt_s39_d02_osc3_detune + + mp.src40(gate) * amt_s40_d02_osc3_detune + + mp.src41(gate) * amt_s41_d02_osc3_detune + + mp.src42(gate) * amt_s42_d02_osc3_detune + + mp.src43(gate) * amt_s43_d02_osc3_detune + + mp.src44(gate) * amt_s44_d02_osc3_detune + + mp.src45(gate) * amt_s45_d02_osc3_detune + + mp.src46(gate) * amt_s46_d02_osc3_detune + + mp.src47(gate) * amt_s47_d02_osc3_detune; + +mod_osc_mix_bal(gate) = + mp.src00(gate) * amt_s00_d03_osc_mix_bal + + mp.src01(gate) * amt_s01_d03_osc_mix_bal + + mp.src02(gate) * amt_s02_d03_osc_mix_bal + + mp.src03(gate) * amt_s03_d03_osc_mix_bal + + mp.src04(gate) * amt_s04_d03_osc_mix_bal + + mp.src05(gate) * amt_s05_d03_osc_mix_bal + + mp.src06(gate) * amt_s06_d03_osc_mix_bal + + mp.src07(gate) * amt_s07_d03_osc_mix_bal + + mp.src08(gate) * amt_s08_d03_osc_mix_bal + + mp.src09(gate) * amt_s09_d03_osc_mix_bal + + mp.src10(gate) * amt_s10_d03_osc_mix_bal + + mp.src11(gate) * amt_s11_d03_osc_mix_bal + + mp.src12(gate) * amt_s12_d03_osc_mix_bal + + mp.src13(gate) * amt_s13_d03_osc_mix_bal + + mp.src14(gate) * amt_s14_d03_osc_mix_bal + + mp.src15(gate) * amt_s15_d03_osc_mix_bal + + mp.src16(gate) * amt_s16_d03_osc_mix_bal + + mp.src17(gate) * amt_s17_d03_osc_mix_bal + + mp.src18(gate) * amt_s18_d03_osc_mix_bal + + mp.src19(gate) * amt_s19_d03_osc_mix_bal + + mp.src20(gate) * amt_s20_d03_osc_mix_bal + + mp.src21(gate) * amt_s21_d03_osc_mix_bal + + mp.src22(gate) * amt_s22_d03_osc_mix_bal + + mp.src23(gate) * amt_s23_d03_osc_mix_bal + + mp.src24(gate) * amt_s24_d03_osc_mix_bal + + mp.src25(gate) * amt_s25_d03_osc_mix_bal + + mp.src26(gate) * amt_s26_d03_osc_mix_bal + + mp.src27(gate) * amt_s27_d03_osc_mix_bal + + mp.src28(gate) * amt_s28_d03_osc_mix_bal + + mp.src29(gate) * amt_s29_d03_osc_mix_bal + + mp.src30(gate) * amt_s30_d03_osc_mix_bal + + mp.src31(gate) * amt_s31_d03_osc_mix_bal + + mp.src32(gate) * amt_s32_d03_osc_mix_bal + + mp.src33(gate) * amt_s33_d03_osc_mix_bal + + mp.src34(gate) * amt_s34_d03_osc_mix_bal + + mp.src35(gate) * amt_s35_d03_osc_mix_bal + + mp.src36(gate) * amt_s36_d03_osc_mix_bal + + mp.src37(gate) * amt_s37_d03_osc_mix_bal + + mp.src38(gate) * amt_s38_d03_osc_mix_bal + + mp.src39(gate) * amt_s39_d03_osc_mix_bal + + mp.src40(gate) * amt_s40_d03_osc_mix_bal + + mp.src41(gate) * amt_s41_d03_osc_mix_bal + + mp.src42(gate) * amt_s42_d03_osc_mix_bal + + mp.src43(gate) * amt_s43_d03_osc_mix_bal + + mp.src44(gate) * amt_s44_d03_osc_mix_bal + + mp.src45(gate) * amt_s45_d03_osc_mix_bal + + mp.src46(gate) * amt_s46_d03_osc_mix_bal + + mp.src47(gate) * amt_s47_d03_osc_mix_bal; + +mod_noise_level(gate) = + mp.src00(gate) * amt_s00_d04_noise_level + + mp.src01(gate) * amt_s01_d04_noise_level + + mp.src02(gate) * amt_s02_d04_noise_level + + mp.src03(gate) * amt_s03_d04_noise_level + + mp.src04(gate) * amt_s04_d04_noise_level + + mp.src05(gate) * amt_s05_d04_noise_level + + mp.src06(gate) * amt_s06_d04_noise_level + + mp.src07(gate) * amt_s07_d04_noise_level + + mp.src08(gate) * amt_s08_d04_noise_level + + mp.src09(gate) * amt_s09_d04_noise_level + + mp.src10(gate) * amt_s10_d04_noise_level + + mp.src11(gate) * amt_s11_d04_noise_level + + mp.src12(gate) * amt_s12_d04_noise_level + + mp.src13(gate) * amt_s13_d04_noise_level + + mp.src14(gate) * amt_s14_d04_noise_level + + mp.src15(gate) * amt_s15_d04_noise_level + + mp.src16(gate) * amt_s16_d04_noise_level + + mp.src17(gate) * amt_s17_d04_noise_level + + mp.src18(gate) * amt_s18_d04_noise_level + + mp.src19(gate) * amt_s19_d04_noise_level + + mp.src20(gate) * amt_s20_d04_noise_level + + mp.src21(gate) * amt_s21_d04_noise_level + + mp.src22(gate) * amt_s22_d04_noise_level + + mp.src23(gate) * amt_s23_d04_noise_level + + mp.src24(gate) * amt_s24_d04_noise_level + + mp.src25(gate) * amt_s25_d04_noise_level + + mp.src26(gate) * amt_s26_d04_noise_level + + mp.src27(gate) * amt_s27_d04_noise_level + + mp.src28(gate) * amt_s28_d04_noise_level + + mp.src29(gate) * amt_s29_d04_noise_level + + mp.src30(gate) * amt_s30_d04_noise_level + + mp.src31(gate) * amt_s31_d04_noise_level + + mp.src32(gate) * amt_s32_d04_noise_level + + mp.src33(gate) * amt_s33_d04_noise_level + + mp.src34(gate) * amt_s34_d04_noise_level + + mp.src35(gate) * amt_s35_d04_noise_level + + mp.src36(gate) * amt_s36_d04_noise_level + + mp.src37(gate) * amt_s37_d04_noise_level + + mp.src38(gate) * amt_s38_d04_noise_level + + mp.src39(gate) * amt_s39_d04_noise_level + + mp.src40(gate) * amt_s40_d04_noise_level + + mp.src41(gate) * amt_s41_d04_noise_level + + mp.src42(gate) * amt_s42_d04_noise_level + + mp.src43(gate) * amt_s43_d04_noise_level + + mp.src44(gate) * amt_s44_d04_noise_level + + mp.src45(gate) * amt_s45_d04_noise_level + + mp.src46(gate) * amt_s46_d04_noise_level + + mp.src47(gate) * amt_s47_d04_noise_level; + +mod_cutoff(gate) = + mp.src00(gate) * amt_s00_d05_cutoff + + mp.src01(gate) * amt_s01_d05_cutoff + + mp.src02(gate) * amt_s02_d05_cutoff + + mp.src03(gate) * amt_s03_d05_cutoff + + mp.src04(gate) * amt_s04_d05_cutoff + + mp.src05(gate) * amt_s05_d05_cutoff + + mp.src06(gate) * amt_s06_d05_cutoff + + mp.src07(gate) * amt_s07_d05_cutoff + + mp.src08(gate) * amt_s08_d05_cutoff + + mp.src09(gate) * amt_s09_d05_cutoff + + mp.src10(gate) * amt_s10_d05_cutoff + + mp.src11(gate) * amt_s11_d05_cutoff + + mp.src12(gate) * amt_s12_d05_cutoff + + mp.src13(gate) * amt_s13_d05_cutoff + + mp.src14(gate) * amt_s14_d05_cutoff + + mp.src15(gate) * amt_s15_d05_cutoff + + mp.src16(gate) * amt_s16_d05_cutoff + + mp.src17(gate) * amt_s17_d05_cutoff + + mp.src18(gate) * amt_s18_d05_cutoff + + mp.src19(gate) * amt_s19_d05_cutoff + + mp.src20(gate) * amt_s20_d05_cutoff + + mp.src21(gate) * amt_s21_d05_cutoff + + mp.src22(gate) * amt_s22_d05_cutoff + + mp.src23(gate) * amt_s23_d05_cutoff + + mp.src24(gate) * amt_s24_d05_cutoff + + mp.src25(gate) * amt_s25_d05_cutoff + + mp.src26(gate) * amt_s26_d05_cutoff + + mp.src27(gate) * amt_s27_d05_cutoff + + mp.src28(gate) * amt_s28_d05_cutoff + + mp.src29(gate) * amt_s29_d05_cutoff + + mp.src30(gate) * amt_s30_d05_cutoff + + mp.src31(gate) * amt_s31_d05_cutoff + + mp.src32(gate) * amt_s32_d05_cutoff + + mp.src33(gate) * amt_s33_d05_cutoff + + mp.src34(gate) * amt_s34_d05_cutoff + + mp.src35(gate) * amt_s35_d05_cutoff + + mp.src36(gate) * amt_s36_d05_cutoff + + mp.src37(gate) * amt_s37_d05_cutoff + + mp.src38(gate) * amt_s38_d05_cutoff + + mp.src39(gate) * amt_s39_d05_cutoff + + mp.src40(gate) * amt_s40_d05_cutoff + + mp.src41(gate) * amt_s41_d05_cutoff + + mp.src42(gate) * amt_s42_d05_cutoff + + mp.src43(gate) * amt_s43_d05_cutoff + + mp.src44(gate) * amt_s44_d05_cutoff + + mp.src45(gate) * amt_s45_d05_cutoff + + mp.src46(gate) * amt_s46_d05_cutoff + + mp.src47(gate) * amt_s47_d05_cutoff; + +mod_resonance(gate) = + mp.src00(gate) * amt_s00_d06_resonance + + mp.src01(gate) * amt_s01_d06_resonance + + mp.src02(gate) * amt_s02_d06_resonance + + mp.src03(gate) * amt_s03_d06_resonance + + mp.src04(gate) * amt_s04_d06_resonance + + mp.src05(gate) * amt_s05_d06_resonance + + mp.src06(gate) * amt_s06_d06_resonance + + mp.src07(gate) * amt_s07_d06_resonance + + mp.src08(gate) * amt_s08_d06_resonance + + mp.src09(gate) * amt_s09_d06_resonance + + mp.src10(gate) * amt_s10_d06_resonance + + mp.src11(gate) * amt_s11_d06_resonance + + mp.src12(gate) * amt_s12_d06_resonance + + mp.src13(gate) * amt_s13_d06_resonance + + mp.src14(gate) * amt_s14_d06_resonance + + mp.src15(gate) * amt_s15_d06_resonance + + mp.src16(gate) * amt_s16_d06_resonance + + mp.src17(gate) * amt_s17_d06_resonance + + mp.src18(gate) * amt_s18_d06_resonance + + mp.src19(gate) * amt_s19_d06_resonance + + mp.src20(gate) * amt_s20_d06_resonance + + mp.src21(gate) * amt_s21_d06_resonance + + mp.src22(gate) * amt_s22_d06_resonance + + mp.src23(gate) * amt_s23_d06_resonance + + mp.src24(gate) * amt_s24_d06_resonance + + mp.src25(gate) * amt_s25_d06_resonance + + mp.src26(gate) * amt_s26_d06_resonance + + mp.src27(gate) * amt_s27_d06_resonance + + mp.src28(gate) * amt_s28_d06_resonance + + mp.src29(gate) * amt_s29_d06_resonance + + mp.src30(gate) * amt_s30_d06_resonance + + mp.src31(gate) * amt_s31_d06_resonance + + mp.src32(gate) * amt_s32_d06_resonance + + mp.src33(gate) * amt_s33_d06_resonance + + mp.src34(gate) * amt_s34_d06_resonance + + mp.src35(gate) * amt_s35_d06_resonance + + mp.src36(gate) * amt_s36_d06_resonance + + mp.src37(gate) * amt_s37_d06_resonance + + mp.src38(gate) * amt_s38_d06_resonance + + mp.src39(gate) * amt_s39_d06_resonance + + mp.src40(gate) * amt_s40_d06_resonance + + mp.src41(gate) * amt_s41_d06_resonance + + mp.src42(gate) * amt_s42_d06_resonance + + mp.src43(gate) * amt_s43_d06_resonance + + mp.src44(gate) * amt_s44_d06_resonance + + mp.src45(gate) * amt_s45_d06_resonance + + mp.src46(gate) * amt_s46_d06_resonance + + mp.src47(gate) * amt_s47_d06_resonance; + +mod_filter_env_amt(gate) = + mp.src00(gate) * amt_s00_d07_filter_env_amt + + mp.src01(gate) * amt_s01_d07_filter_env_amt + + mp.src02(gate) * amt_s02_d07_filter_env_amt + + mp.src03(gate) * amt_s03_d07_filter_env_amt + + mp.src04(gate) * amt_s04_d07_filter_env_amt + + mp.src05(gate) * amt_s05_d07_filter_env_amt + + mp.src06(gate) * amt_s06_d07_filter_env_amt + + mp.src07(gate) * amt_s07_d07_filter_env_amt + + mp.src08(gate) * amt_s08_d07_filter_env_amt + + mp.src09(gate) * amt_s09_d07_filter_env_amt + + mp.src10(gate) * amt_s10_d07_filter_env_amt + + mp.src11(gate) * amt_s11_d07_filter_env_amt + + mp.src12(gate) * amt_s12_d07_filter_env_amt + + mp.src13(gate) * amt_s13_d07_filter_env_amt + + mp.src14(gate) * amt_s14_d07_filter_env_amt + + mp.src15(gate) * amt_s15_d07_filter_env_amt + + mp.src16(gate) * amt_s16_d07_filter_env_amt + + mp.src17(gate) * amt_s17_d07_filter_env_amt + + mp.src18(gate) * amt_s18_d07_filter_env_amt + + mp.src19(gate) * amt_s19_d07_filter_env_amt + + mp.src20(gate) * amt_s20_d07_filter_env_amt + + mp.src21(gate) * amt_s21_d07_filter_env_amt + + mp.src22(gate) * amt_s22_d07_filter_env_amt + + mp.src23(gate) * amt_s23_d07_filter_env_amt + + mp.src24(gate) * amt_s24_d07_filter_env_amt + + mp.src25(gate) * amt_s25_d07_filter_env_amt + + mp.src26(gate) * amt_s26_d07_filter_env_amt + + mp.src27(gate) * amt_s27_d07_filter_env_amt + + mp.src28(gate) * amt_s28_d07_filter_env_amt + + mp.src29(gate) * amt_s29_d07_filter_env_amt + + mp.src30(gate) * amt_s30_d07_filter_env_amt + + mp.src31(gate) * amt_s31_d07_filter_env_amt + + mp.src32(gate) * amt_s32_d07_filter_env_amt + + mp.src33(gate) * amt_s33_d07_filter_env_amt + + mp.src34(gate) * amt_s34_d07_filter_env_amt + + mp.src35(gate) * amt_s35_d07_filter_env_amt + + mp.src36(gate) * amt_s36_d07_filter_env_amt + + mp.src37(gate) * amt_s37_d07_filter_env_amt + + mp.src38(gate) * amt_s38_d07_filter_env_amt + + mp.src39(gate) * amt_s39_d07_filter_env_amt + + mp.src40(gate) * amt_s40_d07_filter_env_amt + + mp.src41(gate) * amt_s41_d07_filter_env_amt + + mp.src42(gate) * amt_s42_d07_filter_env_amt + + mp.src43(gate) * amt_s43_d07_filter_env_amt + + mp.src44(gate) * amt_s44_d07_filter_env_amt + + mp.src45(gate) * amt_s45_d07_filter_env_amt + + mp.src46(gate) * amt_s46_d07_filter_env_amt + + mp.src47(gate) * amt_s47_d07_filter_env_amt; + +mod_amp(gate) = + mp.src00(gate) * amt_s00_d08_amp + + mp.src01(gate) * amt_s01_d08_amp + + mp.src02(gate) * amt_s02_d08_amp + + mp.src03(gate) * amt_s03_d08_amp + + mp.src04(gate) * amt_s04_d08_amp + + mp.src05(gate) * amt_s05_d08_amp + + mp.src06(gate) * amt_s06_d08_amp + + mp.src07(gate) * amt_s07_d08_amp + + mp.src08(gate) * amt_s08_d08_amp + + mp.src09(gate) * amt_s09_d08_amp + + mp.src10(gate) * amt_s10_d08_amp + + mp.src11(gate) * amt_s11_d08_amp + + mp.src12(gate) * amt_s12_d08_amp + + mp.src13(gate) * amt_s13_d08_amp + + mp.src14(gate) * amt_s14_d08_amp + + mp.src15(gate) * amt_s15_d08_amp + + mp.src16(gate) * amt_s16_d08_amp + + mp.src17(gate) * amt_s17_d08_amp + + mp.src18(gate) * amt_s18_d08_amp + + mp.src19(gate) * amt_s19_d08_amp + + mp.src20(gate) * amt_s20_d08_amp + + mp.src21(gate) * amt_s21_d08_amp + + mp.src22(gate) * amt_s22_d08_amp + + mp.src23(gate) * amt_s23_d08_amp + + mp.src24(gate) * amt_s24_d08_amp + + mp.src25(gate) * amt_s25_d08_amp + + mp.src26(gate) * amt_s26_d08_amp + + mp.src27(gate) * amt_s27_d08_amp + + mp.src28(gate) * amt_s28_d08_amp + + mp.src29(gate) * amt_s29_d08_amp + + mp.src30(gate) * amt_s30_d08_amp + + mp.src31(gate) * amt_s31_d08_amp + + mp.src32(gate) * amt_s32_d08_amp + + mp.src33(gate) * amt_s33_d08_amp + + mp.src34(gate) * amt_s34_d08_amp + + mp.src35(gate) * amt_s35_d08_amp + + mp.src36(gate) * amt_s36_d08_amp + + mp.src37(gate) * amt_s37_d08_amp + + mp.src38(gate) * amt_s38_d08_amp + + mp.src39(gate) * amt_s39_d08_amp + + mp.src40(gate) * amt_s40_d08_amp + + mp.src41(gate) * amt_s41_d08_amp + + mp.src42(gate) * amt_s42_d08_amp + + mp.src43(gate) * amt_s43_d08_amp + + mp.src44(gate) * amt_s44_d08_amp + + mp.src45(gate) * amt_s45_d08_amp + + mp.src46(gate) * amt_s46_d08_amp + + mp.src47(gate) * amt_s47_d08_amp; + +mod_pan(gate) = + mp.src00(gate) * amt_s00_d09_pan + + mp.src01(gate) * amt_s01_d09_pan + + mp.src02(gate) * amt_s02_d09_pan + + mp.src03(gate) * amt_s03_d09_pan + + mp.src04(gate) * amt_s04_d09_pan + + mp.src05(gate) * amt_s05_d09_pan + + mp.src06(gate) * amt_s06_d09_pan + + mp.src07(gate) * amt_s07_d09_pan + + mp.src08(gate) * amt_s08_d09_pan + + mp.src09(gate) * amt_s09_d09_pan + + mp.src10(gate) * amt_s10_d09_pan + + mp.src11(gate) * amt_s11_d09_pan + + mp.src12(gate) * amt_s12_d09_pan + + mp.src13(gate) * amt_s13_d09_pan + + mp.src14(gate) * amt_s14_d09_pan + + mp.src15(gate) * amt_s15_d09_pan + + mp.src16(gate) * amt_s16_d09_pan + + mp.src17(gate) * amt_s17_d09_pan + + mp.src18(gate) * amt_s18_d09_pan + + mp.src19(gate) * amt_s19_d09_pan + + mp.src20(gate) * amt_s20_d09_pan + + mp.src21(gate) * amt_s21_d09_pan + + mp.src22(gate) * amt_s22_d09_pan + + mp.src23(gate) * amt_s23_d09_pan + + mp.src24(gate) * amt_s24_d09_pan + + mp.src25(gate) * amt_s25_d09_pan + + mp.src26(gate) * amt_s26_d09_pan + + mp.src27(gate) * amt_s27_d09_pan + + mp.src28(gate) * amt_s28_d09_pan + + mp.src29(gate) * amt_s29_d09_pan + + mp.src30(gate) * amt_s30_d09_pan + + mp.src31(gate) * amt_s31_d09_pan + + mp.src32(gate) * amt_s32_d09_pan + + mp.src33(gate) * amt_s33_d09_pan + + mp.src34(gate) * amt_s34_d09_pan + + mp.src35(gate) * amt_s35_d09_pan + + mp.src36(gate) * amt_s36_d09_pan + + mp.src37(gate) * amt_s37_d09_pan + + mp.src38(gate) * amt_s38_d09_pan + + mp.src39(gate) * amt_s39_d09_pan + + mp.src40(gate) * amt_s40_d09_pan + + mp.src41(gate) * amt_s41_d09_pan + + mp.src42(gate) * amt_s42_d09_pan + + mp.src43(gate) * amt_s43_d09_pan + + mp.src44(gate) * amt_s44_d09_pan + + mp.src45(gate) * amt_s45_d09_pan + + mp.src46(gate) * amt_s46_d09_pan + + mp.src47(gate) * amt_s47_d09_pan; + +// --------------------------------------------------------------------------- +// Derived signals +// --------------------------------------------------------------------------- + +cent2ratio(c) = pow(2.0, c / 1200.0); +oct2ratio(o) = pow(2.0, o); +semi2ratio(s) = pow(2.0, s / 12.0); + +// Portamento +glide_tau = 0.0001 + master_glide * 1.0; +freq_glided = freq : si.smooth(ba.tau2pole(glide_tau)); + +// Base (glide + master fine tune) +base_freq = freq_glided * cent2ratio(master_tune); + +// --------------------------------------------------------------------------- +// Per-oscillator wavetable (saw → tri → square crossfade) +// 0.0 → saw, 0.5 → triangle, 1.0 → square. Output in [-1,+1]. +// --------------------------------------------------------------------------- +osc_wave(shape, f) = + ba.if(shape < 0.5, + (1.0 - shape*2.0) * os.lf_saw(f) + (shape*2.0) * os.lf_triangle(f), + (1.0 - (shape-0.5)*2.0) * os.lf_triangle(f) + ((shape-0.5)*2.0) * os.lf_squarewave(f)); + +// --------------------------------------------------------------------------- +// Oscillator frequencies (pitch modulation: 1 unit = 12 semitones) +// --------------------------------------------------------------------------- +pitch_ratio = semi2ratio(mod_pitch(gate) * 12.0); + +osc1_freq = base_freq * oct2ratio(osc1_range) * pitch_ratio; +osc2_freq = base_freq * oct2ratio(osc2_range) * pitch_ratio + * cent2ratio(osc2_detune + mod_osc2_detune(gate) * 50.0); +osc3_freq_tracked = base_freq * oct2ratio(osc3_range) * pitch_ratio + * cent2ratio(osc3_detune + mod_osc3_detune(gate) * 50.0); +// When kb_track=0, osc3 becomes a free-running sub/LFO source at ~55 Hz * oct +osc3_freq_untracked = 55.0 * oct2ratio(osc3_range) + * cent2ratio(osc3_detune + mod_osc3_detune(gate) * 50.0); +osc3_freq = osc3_kb_track * osc3_freq_tracked + (1.0 - osc3_kb_track) * osc3_freq_untracked; + +// --------------------------------------------------------------------------- +// Oscillators +// --------------------------------------------------------------------------- +o1 = osc_wave(osc1_wave, osc1_freq); +o2 = osc_wave(osc2_wave, osc2_freq); +o3 = osc_wave(osc3_wave, osc3_freq); + +// Osc mix balance: -1 = all osc1, +1 = all osc3, 0 = both equal. osc2 unaffected. +mix_bal = max(-1.0, min(1.0, mod_osc_mix_bal(gate))); +mix_t = (mix_bal + 1.0) * 0.5; // 0..1 +w_o1 = 1.0 - mix_t; +w_o3 = mix_t; + +// --------------------------------------------------------------------------- +// Noise: white (noise_type<0.5) / pink (else) +// --------------------------------------------------------------------------- +white_noise = no.noise; +pink_noise = no.pink_noise; +noise_raw = ba.if(noise_type < 0.5, white_noise, pink_noise); +noise_lvl = max(0.0, min(1.0, noise_level + mod_noise_level(gate))); + +// --------------------------------------------------------------------------- +// Mixer sum +// --------------------------------------------------------------------------- +mix_sum = + o1 * osc1_level * w_o1 + + o2 * osc2_level + + o3 * osc3_level * w_o3 + + noise_raw * noise_lvl; + +mix_driven = ma.tanh(mix_sum * mixer_drive); + +// --------------------------------------------------------------------------- +// Filter — Moog ladder. Cutoff is modulated in octaves (±5 oct per mod unit). +// --------------------------------------------------------------------------- +cutoff_mod_oct = (mod_cutoff(gate) + mod_filter_env_amt(gate)) * 5.0; +kb_scale = pow(freq_glided / 440.0, filter_kb); // 1.0 at A4 when kb=1 +eff_cutoff_raw = cutoff * kb_scale * oct2ratio(cutoff_mod_oct); +eff_cutoff = max(20.0, min(18000.0, eff_cutoff_raw)); +eff_res = max(0.0, min(0.99, resonance + mod_resonance(gate))); + +filtered = mix_driven : ve.moog_vcf(eff_res, eff_cutoff); + +// --------------------------------------------------------------------------- +// Amp and pan +// --------------------------------------------------------------------------- +// Velocity gain: blend 1.0 (no velocity) -> vel. Referenced here so Faust +// keeps the _vel hidden param alive in the JSON descriptor. +vel_gain = (1.0 - 0.3) + 0.3 * vel; // 30% velocity sensitivity, fixed +amp_val = max(0.0, min(1.0, mod_amp(gate))) * master_level * vel_gain; +pan_val = max(-1.0, min(1.0, master_pan + mod_pan(gate))); + +// equal-power pan +pan_l = cos((pan_val + 1.0) * 0.25 * ma.PI); +pan_r = sin((pan_val + 1.0) * 0.25 * ma.PI); + +signal = filtered * amp_val; +signal_L = signal * pan_l; +signal_R = signal * pan_r; + +process = signal_L, signal_R; diff --git a/playground/faust/modular-subtractive.json b/playground/faust/modular-subtractive.json new file mode 100644 index 0000000..de8d83e --- /dev/null +++ b/playground/faust/modular-subtractive.json @@ -0,0 +1 @@ +{"name": "modular-subtractive","filename": "modular-subtractive.dsp","version": "2.79.3","compile_options": "-lang wasm -ct 1 -cn modular_subtractive -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0","library_list": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/stdfaust.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/maths.lib","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust/mod-pool.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/oscillators.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/platform.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/basics.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/envelopes.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/signals.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/noises.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/filters.lib","/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust/vaeffects.lib"],"include_pathnames": ["/nix/store/yjqpc2a6b2m08zwwrgsdlqsi40m5wnpp-faust-2.79.3/share/faust","/usr/local/share/faust","/usr/share/faust",".","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust","/home/w1n5t0n/src/MEMLNaut-NISPS/playground/faust"],"size": 265300,"code": "Ly8gbW9kdWxhci1zdWJ0cmFjdGl2ZS5kc3Ag4oCUIE1pbmltb29nLXN0eWxlIHN1YnRyYWN0aXZlIHZvaWNlIGZvciB0aGUgIk1vZHVsYXIiIG1vZGUuCi8vCi8vIEFVVE8tR0VORVJBVEVEIGJ5IGdlbi1tb2R1bGFyLWRzcC5weS4gRE8gTk9UIEVESVQgQlkgSEFORC4KLy8gUmVnZW5lcmF0ZSB3aXRoOgovLyAgICAgY2QgcGxheWdyb3VuZC9mYXVzdCAmJiBweXRob24zIGdlbi1tb2R1bGFyLWRzcC5weQovLwovLyBBdWRpbyBwYXRoOiAzIG9zY2lsbGF0b3JzICsgbm9pc2Ug4oaSIG1peGVyIOKGkiBtb29nIGxhZGRlciBmaWx0ZXIg4oaSIGFtcC9wYW4uCi8vIEFsbCBlbnZlbG9wZXMgYW5kIExGT3MgY29tZSBmcm9tIG1vZC1wb29sLmxpYiB2aWEgYSA0OC1zb3VyY2Ugw5cgMTAtZGVzdAovLyBtb2R1bGF0aW9uIG1hdHJpeC4gTm8gaW50ZXJuYWwgZW52cy9MRk9zLgovLwovLyBNb2R1bGF0aW9uIGRlc3RpbmF0aW9ucyAoMTApOgovLyAgICAgMCBwaXRjaCAgICAgICAgICAgICBzZW1pdG9uZXMsIGFwcGxpZWQgdG8gYWxsIG9zYyBmcmVxdWVuY2llcwovLyAgICAgMSBvc2MyX2RldHVuZSAgICAgICBjZW50cyBvZmZzZXQgYWRkZWQgdG8gb3NjMiBkZXR1bmUga25vYgovLyAgICAgMiBvc2MzX2RldHVuZSAgICAgICBjZW50cyBvZmZzZXQgYWRkZWQgdG8gb3NjMyBkZXR1bmUga25vYgovLyAgICAgMyBvc2NfbWl4X2JhbCAgICAgICAtMS4uKzEgY3Jvc3NmYWRlcyBvc2MxPC0+b3NjMwovLyAgICAgNCBub2lzZV9sZXZlbCAgICAgICBhZGRlZCB0byBub2lzZSBsZXZlbCBrbm9iCi8vICAgICA1IGN1dG9mZiAgICAgICAgICAgICsvLTUgb2N0YXZlcyBvZiBmaWx0ZXIgY3V0b2ZmIG1vZHVsYXRpb24KLy8gICAgIDYgcmVzb25hbmNlICAgICAgICAgYWRkZWQgdG8gcmVzIGtub2IKLy8gICAgIDcgZmlsdGVyX2Vudl9hbXQgICAgc2Vjb25kIGluZGVwZW5kZW50ICsvLTUgb2N0YXZlIGN1dG9mZiBtb2QgY2hhbm5lbAovLyAgICAgOCBhbXAgICAgICAgICAgICAgICBhZGRlZCB0byBhbXAga25vYiAocm91dGUgYW4gQURTUiBoZXJlIGZvciBhIFZDQSBlbnYpCi8vICAgICA5IHBhbiAgICAgICAgICAgICAgIGFkZGVkIHRvIHBhbiBrbm9iCi8vCi8vIEhpZGRlbiBjb250cm9scyAoZHJpdmVuIGJ5IG5vdGVPbi9ub3RlT2ZmLCBub3QgYnkgdGhlIE1MIGVuZ2luZSk6Ci8vICAgICBmcmVxLCBnYXRlLCBfdmVsCi8vCi8vIEJ1aWxkOgovLyAgICAgY2QgcGxheWdyb3VuZC9mYXVzdCAmJiAuL2J1aWxkLnNoCi8vCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaW1wb3J0KCJzdGRmYXVzdC5saWIiKTsKbXAgPSBsaWJyYXJ5KCJtb2QtcG9vbC5saWIiKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBIaWRkZW4gY29udHJvbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmZyZXEgPSBoc2xpZGVyKCIwX0hpZGRlbi9mcmVxW2hpZGRlbjoxXVt1bml0Okh6XSIsIDIyMCwgMjAsIDQwMDAsIDAuMDEpOwpnYXRlID0gYnV0dG9uKCIwX0hpZGRlbi9nYXRlW2hpZGRlbjoxXSIpOwp2ZWwgID0gaHNsaWRlcigiMF9IaWRkZW4vX3ZlbFtoaWRkZW46MV0iLCAwLjcsIDAuMCwgMS4wLCAwLjAwMSkgOiBzaS5zbW9vOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEdyb3VwIDEg4oCUIE9zY2lsbGF0b3JzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpvc2MxX3dhdmUgID0gaHNsaWRlcigiMV9Pc2NpbGxhdG9ycy8wMF9vc2MxX3dhdmVbdG9vbHRpcDowPXNhdywwLjU9dHJpLDE9c3F1YXJlXSIsIDAuMCwgMC4wLCAxLjAsIDAuMDAxKTsKb3NjMV9yYW5nZSA9IGhzbGlkZXIoIjFfT3NjaWxsYXRvcnMvMDFfb3NjMV9yYW5nZVt1bml0Om9jdF0iLCAwLjAsIC0yLjAsIDIuMCwgMC4wMSk7Cm9zYzFfbGV2ZWwgPSBoc2xpZGVyKCIxX09zY2lsbGF0b3JzLzAyX29zYzFfbGV2ZWwiLCAwLjgsIDAuMCwgMS4wLCAwLjAwMSk7Cgpvc2MyX3dhdmUgICA9IGhzbGlkZXIoIjFfT3NjaWxsYXRvcnMvMDNfb3NjMl93YXZlW3Rvb2x0aXA6MD1zYXcsMC41PXRyaSwxPXNxdWFyZV0iLCAwLjAsIDAuMCwgMS4wLCAwLjAwMSk7Cm9zYzJfcmFuZ2UgID0gaHNsaWRlcigiMV9Pc2NpbGxhdG9ycy8wNF9vc2MyX3JhbmdlW3VuaXQ6b2N0XSIsIDAuMCwgLTIuMCwgMi4wLCAwLjAxKTsKb3NjMl9kZXR1bmUgPSBoc2xpZGVyKCIxX09zY2lsbGF0b3JzLzA1X29zYzJfZGV0dW5lW3VuaXQ6Y3RdIiwgMC4wLCAtNTAuMCwgNTAuMCwgMC4xKTsKb3NjMl9sZXZlbCAgPSBoc2xpZGVyKCIxX09zY2lsbGF0b3JzLzA2X29zYzJfbGV2ZWwiLCAwLjYsIDAuMCwgMS4wLCAwLjAwMSk7Cgpvc2MzX3dhdmUgICAgID0gaHNsaWRlcigiMV9Pc2NpbGxhdG9ycy8wN19vc2MzX3dhdmVbdG9vbHRpcDowPXNhdywwLjU9dHJpLDE9c3F1YXJlXSIsIDAuNSwgMC4wLCAxLjAsIDAuMDAxKTsKb3NjM19yYW5nZSAgICA9IGhzbGlkZXIoIjFfT3NjaWxsYXRvcnMvMDhfb3NjM19yYW5nZVt1bml0Om9jdF0iLCAtMS4wLCAtMi4wLCAyLjAsIDAuMDEpOwpvc2MzX2RldHVuZSAgID0gaHNsaWRlcigiMV9Pc2NpbGxhdG9ycy8wOV9vc2MzX2RldHVuZVt1bml0OmN0XSIsIDAuMCwgLTUwLjAsIDUwLjAsIDAuMSk7Cm9zYzNfbGV2ZWwgICAgPSBoc2xpZGVyKCIxX09zY2lsbGF0b3JzLzEwX29zYzNfbGV2ZWwiLCAwLjQsIDAuMCwgMS4wLCAwLjAwMSk7Cm9zYzNfa2JfdHJhY2sgPSBoc2xpZGVyKCIxX09zY2lsbGF0b3JzLzExX29zYzNfa2JfdHJhY2tbdG9vbHRpcDoxPXRyYWNrcyBrZXlib2FyZCwwPUxGT10iLCAxLjAsIDAuMCwgMS4wLCAxLjApOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEdyb3VwIDIg4oCUIE1peGVyCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpub2lzZV90eXBlICA9IGhzbGlkZXIoIjJfTWl4ZXIvMDBfbm9pc2VfdHlwZVt0b29sdGlwOjA9d2hpdGUsMT1waW5rXSIsIDAuMCwgMC4wLCAxLjAsIDEuMCk7Cm5vaXNlX2xldmVsID0gaHNsaWRlcigiMl9NaXhlci8wMV9ub2lzZV9sZXZlbCIsIDAuMCwgMC4wLCAxLjAsIDAuMDAxKTsKbWl4ZXJfZHJpdmUgPSBoc2xpZGVyKCIyX01peGVyLzAyX21peGVyX2RyaXZlW3Rvb2x0aXA6UHJlLWZpbHRlciBvdmVyZHJpdmVdIiwgMS4wLCAwLjUsIDQuMCwgMC4wMDEpOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEdyb3VwIDMg4oCUIEZpbHRlcgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KY3V0b2ZmICAgICAgPSBoc2xpZGVyKCIzX0ZpbHRlci8wMF9jdXRvZmZbc2NhbGU6bG9nXVt1bml0Okh6XSIsIDEyMDAuMCwgMjAuMCwgMjAwMDAuMCwgMC4xKTsKcmVzb25hbmNlICAgPSBoc2xpZGVyKCIzX0ZpbHRlci8wMV9yZXNvbmFuY2UiLCAwLjMsIDAuMCwgMS4wLCAwLjAwMSk7CmZpbHRlcl9rYiAgID0gaHNsaWRlcigiM19GaWx0ZXIvMDJfZmlsdGVyX2tiX3RyYWNrIiwgMC41LCAwLjAsIDEuMCwgMC4wMDEpOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEdyb3VwIDQg4oCUIE1hc3RlcgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KbWFzdGVyX2xldmVsID0gaHNsaWRlcigiNF9NYXN0ZXIvMDBfbWFzdGVyX2xldmVsIiwgMC43LCAwLjAsIDEuMCwgMC4wMDEpOwptYXN0ZXJfZ2xpZGUgPSBoc2xpZGVyKCI0X01hc3Rlci8wMV9tYXN0ZXJfZ2xpZGVbdW5pdDpzXVtzY2FsZTpsb2ddIiwgMC4wLCAwLjAsIDIuMCwgMC4wMDEpOwptYXN0ZXJfdHVuZSAgPSBoc2xpZGVyKCI0X01hc3Rlci8wMl9tYXN0ZXJfdHVuZVt1bml0OmN0XSIsIDAuMCwgLTUwLjAsIDUwLjAsIDAuMSk7Cm1hc3Rlcl9wYW4gICA9IGhzbGlkZXIoIjRfTWFzdGVyLzAzX21hc3Rlcl9wYW4iLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIE1vZHVsYXRpb24gbWF0cml4IOKAlCA0OCBzb3VyY2VzIMOXIDEwIGRlc3RpbmF0aW9ucy4KLy8gRWFjaCBoc2xpZGVyIGlzIG9uZSAiYW1vdW50IiBlbnRyeSBpbiBbLTEsICsxXS4gWmVybyA9IG5vIGNvbm5lY3Rpb24uCi8vIEdyb3VwICJNTV9NYXRyaXgiIHNvIHRoZSBwYXJhbU1ldGEgcGFyc2VyIGNhbiByZWNvZ25pc2UgbWF0cml4IHBhcmFtcy4KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBNYXRyaXggY29sdW1uOiBkZXN0aW5hdGlvbiAwID0gcGl0Y2gKYW10X3MwMF9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAwX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDFfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMV9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAyX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDJfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwM19kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAzX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDRfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNF9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA1X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDVfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNl9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA2X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDdfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MwN19kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA4X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDhfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOV9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA5X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTBfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMF9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczExX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTFfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMl9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEyX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTNfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MxM19kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE0X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTRfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNV9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE1X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTZfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNl9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE3X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTdfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOF9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE4X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTlfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOV9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIwX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjBfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMV9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIxX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjJfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMl9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIzX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjNfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNF9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI0X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjVfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNV9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI2X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjZfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyN19kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI3X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjhfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOF9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI5X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjlfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMF9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMwX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzFfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMV9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMyX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzJfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzM19kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMzX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzRfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNF9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM1X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzVfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNl9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM2X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzdfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3MzN19kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM4X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzhfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOV9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM5X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDBfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MF9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQxX2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDFfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Ml9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQyX2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDNfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3M0M19kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ0X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDRfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NV9kMDBfcGl0Y2ggPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ1X2QwMF9waXRjaCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDZfZDAwX3BpdGNoID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Nl9kMDBfcGl0Y2giLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ3X2QwMF9waXRjaCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDdfZDAwX3BpdGNoIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKCi8vIE1hdHJpeCBjb2x1bW46IGRlc3RpbmF0aW9uIDEgPSBvc2MyX2RldHVuZQphbXRfczAwX2QwMV9vc2MyX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDBfZDAxX29zYzJfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMV9kMDFfb3NjMl9kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAxX2QwMV9vc2MyX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDJfZDAxX29zYzJfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMl9kMDFfb3NjMl9kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAzX2QwMV9vc2MyX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDNfZDAxX29zYzJfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNF9kMDFfb3NjMl9kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA0X2QwMV9vc2MyX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDVfZDAxX29zYzJfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNV9kMDFfb3NjMl9kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA2X2QwMV9vc2MyX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDZfZDAxX29zYzJfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwN19kMDFfb3NjMl9kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA3X2QwMV9vc2MyX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDhfZDAxX29zYzJfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOF9kMDFfb3NjMl9kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA5X2QwMV9vc2MyX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDlfZDAxX29zYzJfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMF9kMDFfb3NjMl9kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEwX2QwMV9vc2MyX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTFfZDAxX29zYzJfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMV9kMDFfb3NjMl9kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEyX2QwMV9vc2MyX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTJfZDAxX29zYzJfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxM19kMDFfb3NjMl9kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEzX2QwMV9vc2MyX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTRfZDAxX29zYzJfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNF9kMDFfb3NjMl9kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE1X2QwMV9vc2MyX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTVfZDAxX29zYzJfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNl9kMDFfb3NjMl9kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE2X2QwMV9vc2MyX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTdfZDAxX29zYzJfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MxN19kMDFfb3NjMl9kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE4X2QwMV9vc2MyX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMThfZDAxX29zYzJfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOV9kMDFfb3NjMl9kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE5X2QwMV9vc2MyX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjBfZDAxX29zYzJfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMF9kMDFfb3NjMl9kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIxX2QwMV9vc2MyX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjFfZDAxX29zYzJfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMl9kMDFfb3NjMl9kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIyX2QwMV9vc2MyX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjNfZDAxX29zYzJfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MyM19kMDFfb3NjMl9kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI0X2QwMV9vc2MyX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjRfZDAxX29zYzJfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNV9kMDFfb3NjMl9kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI1X2QwMV9vc2MyX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjZfZDAxX29zYzJfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNl9kMDFfb3NjMl9kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI3X2QwMV9vc2MyX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjdfZDAxX29zYzJfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOF9kMDFfb3NjMl9kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI4X2QwMV9vc2MyX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjlfZDAxX29zYzJfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOV9kMDFfb3NjMl9kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMwX2QwMV9vc2MyX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzBfZDAxX29zYzJfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMV9kMDFfb3NjMl9kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMxX2QwMV9vc2MyX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzJfZDAxX29zYzJfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMl9kMDFfb3NjMl9kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMzX2QwMV9vc2MyX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzNfZDAxX29zYzJfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNF9kMDFfb3NjMl9kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM0X2QwMV9vc2MyX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzVfZDAxX29zYzJfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNV9kMDFfb3NjMl9kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM2X2QwMV9vc2MyX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzZfZDAxX29zYzJfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzN19kMDFfb3NjMl9kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM3X2QwMV9vc2MyX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzhfZDAxX29zYzJfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOF9kMDFfb3NjMl9kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM5X2QwMV9vc2MyX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzlfZDAxX29zYzJfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MF9kMDFfb3NjMl9kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQwX2QwMV9vc2MyX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDFfZDAxX29zYzJfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MV9kMDFfb3NjMl9kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQyX2QwMV9vc2MyX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDJfZDAxX29zYzJfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0M19kMDFfb3NjMl9kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQzX2QwMV9vc2MyX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDRfZDAxX29zYzJfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NF9kMDFfb3NjMl9kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ1X2QwMV9vc2MyX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDVfZDAxX29zYzJfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Nl9kMDFfb3NjMl9kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ2X2QwMV9vc2MyX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDdfZDAxX29zYzJfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3M0N19kMDFfb3NjMl9kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwoKLy8gTWF0cml4IGNvbHVtbjogZGVzdGluYXRpb24gMiA9IG9zYzNfZGV0dW5lCmFtdF9zMDBfZDAyX29zYzNfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMF9kMDJfb3NjM19kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAxX2QwMl9vc2MzX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDFfZDAyX29zYzNfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMl9kMDJfb3NjM19kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAyX2QwMl9vc2MzX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDNfZDAyX29zYzNfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MwM19kMDJfb3NjM19kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA0X2QwMl9vc2MzX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDRfZDAyX29zYzNfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNV9kMDJfb3NjM19kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA1X2QwMl9vc2MzX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDZfZDAyX29zYzNfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNl9kMDJfb3NjM19kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA3X2QwMl9vc2MzX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDdfZDAyX29zYzNfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOF9kMDJfb3NjM19kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA4X2QwMl9vc2MzX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDlfZDAyX29zYzNfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOV9kMDJfb3NjM19kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEwX2QwMl9vc2MzX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTBfZDAyX29zYzNfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMV9kMDJfb3NjM19kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczExX2QwMl9vc2MzX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTJfZDAyX29zYzNfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMl9kMDJfb3NjM19kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEzX2QwMl9vc2MzX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTNfZDAyX29zYzNfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNF9kMDJfb3NjM19kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE0X2QwMl9vc2MzX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTVfZDAyX29zYzNfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNV9kMDJfb3NjM19kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE2X2QwMl9vc2MzX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTZfZDAyX29zYzNfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxN19kMDJfb3NjM19kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE3X2QwMl9vc2MzX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMThfZDAyX29zYzNfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOF9kMDJfb3NjM19kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE5X2QwMl9vc2MzX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTlfZDAyX29zYzNfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMF9kMDJfb3NjM19kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIwX2QwMl9vc2MzX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjFfZDAyX29zYzNfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMV9kMDJfb3NjM19kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIyX2QwMl9vc2MzX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjJfZDAyX29zYzNfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyM19kMDJfb3NjM19kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIzX2QwMl9vc2MzX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjRfZDAyX29zYzNfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNF9kMDJfb3NjM19kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI1X2QwMl9vc2MzX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjVfZDAyX29zYzNfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNl9kMDJfb3NjM19kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI2X2QwMl9vc2MzX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjdfZDAyX29zYzNfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MyN19kMDJfb3NjM19kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI4X2QwMl9vc2MzX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjhfZDAyX29zYzNfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOV9kMDJfb3NjM19kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI5X2QwMl9vc2MzX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzBfZDAyX29zYzNfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMF9kMDJfb3NjM19kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMxX2QwMl9vc2MzX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzFfZDAyX29zYzNfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMl9kMDJfb3NjM19kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMyX2QwMl9vc2MzX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzNfZDAyX29zYzNfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MzM19kMDJfb3NjM19kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM0X2QwMl9vc2MzX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzRfZDAyX29zYzNfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNV9kMDJfb3NjM19kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM1X2QwMl9vc2MzX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzZfZDAyX29zYzNfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNl9kMDJfb3NjM19kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM3X2QwMl9vc2MzX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzdfZDAyX29zYzNfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOF9kMDJfb3NjM19kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM4X2QwMl9vc2MzX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzlfZDAyX29zYzNfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOV9kMDJfb3NjM19kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQwX2QwMl9vc2MzX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDBfZDAyX29zYzNfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MV9kMDJfb3NjM19kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQxX2QwMl9vc2MzX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDJfZDAyX29zYzNfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Ml9kMDJfb3NjM19kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQzX2QwMl9vc2MzX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDNfZDAyX29zYzNfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NF9kMDJfb3NjM19kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ0X2QwMl9vc2MzX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDVfZDAyX29zYzNfZGV0dW5lID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NV9kMDJfb3NjM19kZXR1bmUiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ2X2QwMl9vc2MzX2RldHVuZSA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDZfZDAyX29zYzNfZGV0dW5lIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0N19kMDJfb3NjM19kZXR1bmUgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ3X2QwMl9vc2MzX2RldHVuZSIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CgovLyBNYXRyaXggY29sdW1uOiBkZXN0aW5hdGlvbiAzID0gb3NjX21peF9iYWwKYW10X3MwMF9kMDNfb3NjX21peF9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAwX2QwM19vc2NfbWl4X2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDFfZDAzX29zY19taXhfYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMV9kMDNfb3NjX21peF9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAyX2QwM19vc2NfbWl4X2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDJfZDAzX29zY19taXhfYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwM19kMDNfb3NjX21peF9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAzX2QwM19vc2NfbWl4X2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDRfZDAzX29zY19taXhfYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNF9kMDNfb3NjX21peF9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA1X2QwM19vc2NfbWl4X2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDVfZDAzX29zY19taXhfYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNl9kMDNfb3NjX21peF9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA2X2QwM19vc2NfbWl4X2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDdfZDAzX29zY19taXhfYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwN19kMDNfb3NjX21peF9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA4X2QwM19vc2NfbWl4X2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDhfZDAzX29zY19taXhfYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOV9kMDNfb3NjX21peF9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA5X2QwM19vc2NfbWl4X2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTBfZDAzX29zY19taXhfYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMF9kMDNfb3NjX21peF9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczExX2QwM19vc2NfbWl4X2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTFfZDAzX29zY19taXhfYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMl9kMDNfb3NjX21peF9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEyX2QwM19vc2NfbWl4X2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTNfZDAzX29zY19taXhfYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxM19kMDNfb3NjX21peF9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE0X2QwM19vc2NfbWl4X2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTRfZDAzX29zY19taXhfYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNV9kMDNfb3NjX21peF9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE1X2QwM19vc2NfbWl4X2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTZfZDAzX29zY19taXhfYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNl9kMDNfb3NjX21peF9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE3X2QwM19vc2NfbWl4X2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTdfZDAzX29zY19taXhfYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOF9kMDNfb3NjX21peF9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE4X2QwM19vc2NfbWl4X2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTlfZDAzX29zY19taXhfYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOV9kMDNfb3NjX21peF9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIwX2QwM19vc2NfbWl4X2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjBfZDAzX29zY19taXhfYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMV9kMDNfb3NjX21peF9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIxX2QwM19vc2NfbWl4X2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjJfZDAzX29zY19taXhfYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMl9kMDNfb3NjX21peF9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIzX2QwM19vc2NfbWl4X2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjNfZDAzX29zY19taXhfYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNF9kMDNfb3NjX21peF9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI0X2QwM19vc2NfbWl4X2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjVfZDAzX29zY19taXhfYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNV9kMDNfb3NjX21peF9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI2X2QwM19vc2NfbWl4X2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjZfZDAzX29zY19taXhfYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyN19kMDNfb3NjX21peF9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI3X2QwM19vc2NfbWl4X2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjhfZDAzX29zY19taXhfYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOF9kMDNfb3NjX21peF9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI5X2QwM19vc2NfbWl4X2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjlfZDAzX29zY19taXhfYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMF9kMDNfb3NjX21peF9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMwX2QwM19vc2NfbWl4X2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzFfZDAzX29zY19taXhfYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMV9kMDNfb3NjX21peF9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMyX2QwM19vc2NfbWl4X2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzJfZDAzX29zY19taXhfYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzM19kMDNfb3NjX21peF9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMzX2QwM19vc2NfbWl4X2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzRfZDAzX29zY19taXhfYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNF9kMDNfb3NjX21peF9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM1X2QwM19vc2NfbWl4X2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzVfZDAzX29zY19taXhfYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNl9kMDNfb3NjX21peF9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM2X2QwM19vc2NfbWl4X2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzdfZDAzX29zY19taXhfYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzN19kMDNfb3NjX21peF9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM4X2QwM19vc2NfbWl4X2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzhfZDAzX29zY19taXhfYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOV9kMDNfb3NjX21peF9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM5X2QwM19vc2NfbWl4X2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDBfZDAzX29zY19taXhfYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MF9kMDNfb3NjX21peF9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQxX2QwM19vc2NfbWl4X2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDFfZDAzX29zY19taXhfYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Ml9kMDNfb3NjX21peF9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQyX2QwM19vc2NfbWl4X2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDNfZDAzX29zY19taXhfYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3M0M19kMDNfb3NjX21peF9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ0X2QwM19vc2NfbWl4X2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDRfZDAzX29zY19taXhfYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NV9kMDNfb3NjX21peF9iYWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ1X2QwM19vc2NfbWl4X2JhbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDZfZDAzX29zY19taXhfYmFsID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Nl9kMDNfb3NjX21peF9iYWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ3X2QwM19vc2NfbWl4X2JhbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDdfZDAzX29zY19taXhfYmFsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKCi8vIE1hdHJpeCBjb2x1bW46IGRlc3RpbmF0aW9uIDQgPSBub2lzZV9sZXZlbAphbXRfczAwX2QwNF9ub2lzZV9sZXZlbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDBfZDA0X25vaXNlX2xldmVsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMV9kMDRfbm9pc2VfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAxX2QwNF9ub2lzZV9sZXZlbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDJfZDA0X25vaXNlX2xldmVsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMl9kMDRfbm9pc2VfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAzX2QwNF9ub2lzZV9sZXZlbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDNfZDA0X25vaXNlX2xldmVsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNF9kMDRfbm9pc2VfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA0X2QwNF9ub2lzZV9sZXZlbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDVfZDA0X25vaXNlX2xldmVsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNV9kMDRfbm9pc2VfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA2X2QwNF9ub2lzZV9sZXZlbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDZfZDA0X25vaXNlX2xldmVsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwN19kMDRfbm9pc2VfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA3X2QwNF9ub2lzZV9sZXZlbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDhfZDA0X25vaXNlX2xldmVsID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOF9kMDRfbm9pc2VfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA5X2QwNF9ub2lzZV9sZXZlbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDlfZDA0X25vaXNlX2xldmVsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMF9kMDRfbm9pc2VfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEwX2QwNF9ub2lzZV9sZXZlbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTFfZDA0X25vaXNlX2xldmVsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMV9kMDRfbm9pc2VfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEyX2QwNF9ub2lzZV9sZXZlbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTJfZDA0X25vaXNlX2xldmVsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxM19kMDRfbm9pc2VfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEzX2QwNF9ub2lzZV9sZXZlbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTRfZDA0X25vaXNlX2xldmVsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNF9kMDRfbm9pc2VfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE1X2QwNF9ub2lzZV9sZXZlbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTVfZDA0X25vaXNlX2xldmVsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNl9kMDRfbm9pc2VfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE2X2QwNF9ub2lzZV9sZXZlbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTdfZDA0X25vaXNlX2xldmVsID0gaHNsaWRlcigiTU1fTWF0cml4L3MxN19kMDRfbm9pc2VfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE4X2QwNF9ub2lzZV9sZXZlbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMThfZDA0X25vaXNlX2xldmVsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxOV9kMDRfbm9pc2VfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE5X2QwNF9ub2lzZV9sZXZlbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjBfZDA0X25vaXNlX2xldmVsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMF9kMDRfbm9pc2VfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIxX2QwNF9ub2lzZV9sZXZlbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjFfZDA0X25vaXNlX2xldmVsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMl9kMDRfbm9pc2VfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIyX2QwNF9ub2lzZV9sZXZlbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjNfZDA0X25vaXNlX2xldmVsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyM19kMDRfbm9pc2VfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI0X2QwNF9ub2lzZV9sZXZlbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjRfZDA0X25vaXNlX2xldmVsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNV9kMDRfbm9pc2VfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI1X2QwNF9ub2lzZV9sZXZlbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjZfZDA0X25vaXNlX2xldmVsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNl9kMDRfbm9pc2VfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI3X2QwNF9ub2lzZV9sZXZlbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjdfZDA0X25vaXNlX2xldmVsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOF9kMDRfbm9pc2VfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI4X2QwNF9ub2lzZV9sZXZlbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjlfZDA0X25vaXNlX2xldmVsID0gaHNsaWRlcigiTU1fTWF0cml4L3MyOV9kMDRfbm9pc2VfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMwX2QwNF9ub2lzZV9sZXZlbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzBfZDA0X25vaXNlX2xldmVsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMV9kMDRfbm9pc2VfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMxX2QwNF9ub2lzZV9sZXZlbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzJfZDA0X25vaXNlX2xldmVsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMl9kMDRfbm9pc2VfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMzX2QwNF9ub2lzZV9sZXZlbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzNfZDA0X25vaXNlX2xldmVsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNF9kMDRfbm9pc2VfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM0X2QwNF9ub2lzZV9sZXZlbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzVfZDA0X25vaXNlX2xldmVsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNV9kMDRfbm9pc2VfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM2X2QwNF9ub2lzZV9sZXZlbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzZfZDA0X25vaXNlX2xldmVsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzN19kMDRfbm9pc2VfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM3X2QwNF9ub2lzZV9sZXZlbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzhfZDA0X25vaXNlX2xldmVsID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOF9kMDRfbm9pc2VfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM5X2QwNF9ub2lzZV9sZXZlbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzlfZDA0X25vaXNlX2xldmVsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MF9kMDRfbm9pc2VfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQwX2QwNF9ub2lzZV9sZXZlbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDFfZDA0X25vaXNlX2xldmVsID0gaHNsaWRlcigiTU1fTWF0cml4L3M0MV9kMDRfbm9pc2VfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQyX2QwNF9ub2lzZV9sZXZlbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDJfZDA0X25vaXNlX2xldmVsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0M19kMDRfbm9pc2VfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQzX2QwNF9ub2lzZV9sZXZlbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDRfZDA0X25vaXNlX2xldmVsID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NF9kMDRfbm9pc2VfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ1X2QwNF9ub2lzZV9sZXZlbCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDVfZDA0X25vaXNlX2xldmVsIiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0Nl9kMDRfbm9pc2VfbGV2ZWwgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ2X2QwNF9ub2lzZV9sZXZlbCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDdfZDA0X25vaXNlX2xldmVsID0gaHNsaWRlcigiTU1fTWF0cml4L3M0N19kMDRfbm9pc2VfbGV2ZWwiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwoKLy8gTWF0cml4IGNvbHVtbjogZGVzdGluYXRpb24gNSA9IGN1dG9mZgphbXRfczAwX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAwX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAxX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAxX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAyX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAyX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAzX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAzX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA0X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA0X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA1X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA1X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA2X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA2X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA3X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA3X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA4X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA4X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA5X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA5X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEwX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEwX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczExX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczExX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEyX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEyX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEzX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEzX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE0X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE0X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE1X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE1X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE2X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE2X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE3X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE3X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE4X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE4X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE5X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE5X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIwX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIwX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIxX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIxX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIyX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIyX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIzX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIzX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI0X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI0X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI1X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI1X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI2X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI2X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI3X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI3X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI4X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI4X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI5X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI5X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMwX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMwX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMxX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMxX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMyX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMyX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMzX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMzX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM0X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM0X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM1X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM1X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM2X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM2X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM3X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM3X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM4X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM4X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM5X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM5X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQwX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQwX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQxX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQxX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQyX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQyX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQzX2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQzX2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ0X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ0X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ1X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ1X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ2X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ2X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ3X2QwNV9jdXRvZmYgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ3X2QwNV9jdXRvZmYiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwoKLy8gTWF0cml4IGNvbHVtbjogZGVzdGluYXRpb24gNiA9IHJlc29uYW5jZQphbXRfczAwX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAwX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAxX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAxX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAyX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAyX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAzX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAzX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA0X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA0X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA1X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA1X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA2X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA2X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA3X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA3X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA4X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA4X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA5X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA5X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEwX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEwX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczExX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczExX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEyX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEyX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEzX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczEzX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE0X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE0X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE1X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE1X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE2X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE2X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE3X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE3X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE4X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE4X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE5X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE5X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIwX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIwX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIxX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIxX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIyX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIyX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIzX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIzX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI0X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI0X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI1X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI1X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI2X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI2X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI3X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI3X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI4X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI4X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI5X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI5X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMwX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMwX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMxX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMxX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMyX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMyX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMzX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMzX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM0X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM0X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM1X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM1X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM2X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM2X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM3X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM3X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM4X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM4X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM5X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM5X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQwX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQwX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQxX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQxX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQyX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQyX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQzX2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQzX2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ0X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ0X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ1X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ1X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ2X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ2X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ3X2QwNl9yZXNvbmFuY2UgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ3X2QwNl9yZXNvbmFuY2UiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwoKLy8gTWF0cml4IGNvbHVtbjogZGVzdGluYXRpb24gNyA9IGZpbHRlcl9lbnZfYW10CmFtdF9zMDBfZDA3X2ZpbHRlcl9lbnZfYW10ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwMF9kMDdfZmlsdGVyX2Vudl9hbXQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczAxX2QwN19maWx0ZXJfZW52X2FtdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDFfZDA3X2ZpbHRlcl9lbnZfYW10IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwMl9kMDdfZmlsdGVyX2Vudl9hbXQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczAyX2QwN19maWx0ZXJfZW52X2FtdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDNfZDA3X2ZpbHRlcl9lbnZfYW10ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwM19kMDdfZmlsdGVyX2Vudl9hbXQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA0X2QwN19maWx0ZXJfZW52X2FtdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDRfZDA3X2ZpbHRlcl9lbnZfYW10IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwNV9kMDdfZmlsdGVyX2Vudl9hbXQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA1X2QwN19maWx0ZXJfZW52X2FtdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDZfZDA3X2ZpbHRlcl9lbnZfYW10ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwNl9kMDdfZmlsdGVyX2Vudl9hbXQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczA3X2QwN19maWx0ZXJfZW52X2FtdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDdfZDA3X2ZpbHRlcl9lbnZfYW10IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MwOF9kMDdfZmlsdGVyX2Vudl9hbXQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczA4X2QwN19maWx0ZXJfZW52X2FtdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDlfZDA3X2ZpbHRlcl9lbnZfYW10ID0gaHNsaWRlcigiTU1fTWF0cml4L3MwOV9kMDdfZmlsdGVyX2Vudl9hbXQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEwX2QwN19maWx0ZXJfZW52X2FtdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTBfZDA3X2ZpbHRlcl9lbnZfYW10IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxMV9kMDdfZmlsdGVyX2Vudl9hbXQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczExX2QwN19maWx0ZXJfZW52X2FtdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTJfZDA3X2ZpbHRlcl9lbnZfYW10ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxMl9kMDdfZmlsdGVyX2Vudl9hbXQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczEzX2QwN19maWx0ZXJfZW52X2FtdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTNfZDA3X2ZpbHRlcl9lbnZfYW10IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxNF9kMDdfZmlsdGVyX2Vudl9hbXQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE0X2QwN19maWx0ZXJfZW52X2FtdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTVfZDA3X2ZpbHRlcl9lbnZfYW10ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxNV9kMDdfZmlsdGVyX2Vudl9hbXQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE2X2QwN19maWx0ZXJfZW52X2FtdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTZfZDA3X2ZpbHRlcl9lbnZfYW10IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MxN19kMDdfZmlsdGVyX2Vudl9hbXQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczE3X2QwN19maWx0ZXJfZW52X2FtdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMThfZDA3X2ZpbHRlcl9lbnZfYW10ID0gaHNsaWRlcigiTU1fTWF0cml4L3MxOF9kMDdfZmlsdGVyX2Vudl9hbXQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczE5X2QwN19maWx0ZXJfZW52X2FtdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTlfZDA3X2ZpbHRlcl9lbnZfYW10IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyMF9kMDdfZmlsdGVyX2Vudl9hbXQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIwX2QwN19maWx0ZXJfZW52X2FtdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjFfZDA3X2ZpbHRlcl9lbnZfYW10ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyMV9kMDdfZmlsdGVyX2Vudl9hbXQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczIyX2QwN19maWx0ZXJfZW52X2FtdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjJfZDA3X2ZpbHRlcl9lbnZfYW10IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyM19kMDdfZmlsdGVyX2Vudl9hbXQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczIzX2QwN19maWx0ZXJfZW52X2FtdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjRfZDA3X2ZpbHRlcl9lbnZfYW10ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyNF9kMDdfZmlsdGVyX2Vudl9hbXQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI1X2QwN19maWx0ZXJfZW52X2FtdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjVfZDA3X2ZpbHRlcl9lbnZfYW10IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyNl9kMDdfZmlsdGVyX2Vudl9hbXQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI2X2QwN19maWx0ZXJfZW52X2FtdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjdfZDA3X2ZpbHRlcl9lbnZfYW10ID0gaHNsaWRlcigiTU1fTWF0cml4L3MyN19kMDdfZmlsdGVyX2Vudl9hbXQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczI4X2QwN19maWx0ZXJfZW52X2FtdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjhfZDA3X2ZpbHRlcl9lbnZfYW10IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MyOV9kMDdfZmlsdGVyX2Vudl9hbXQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczI5X2QwN19maWx0ZXJfZW52X2FtdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzBfZDA3X2ZpbHRlcl9lbnZfYW10ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzMF9kMDdfZmlsdGVyX2Vudl9hbXQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczMxX2QwN19maWx0ZXJfZW52X2FtdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzFfZDA3X2ZpbHRlcl9lbnZfYW10IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzMl9kMDdfZmlsdGVyX2Vudl9hbXQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczMyX2QwN19maWx0ZXJfZW52X2FtdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzNfZDA3X2ZpbHRlcl9lbnZfYW10ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzM19kMDdfZmlsdGVyX2Vudl9hbXQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM0X2QwN19maWx0ZXJfZW52X2FtdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzRfZDA3X2ZpbHRlcl9lbnZfYW10IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzNV9kMDdfZmlsdGVyX2Vudl9hbXQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM1X2QwN19maWx0ZXJfZW52X2FtdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzZfZDA3X2ZpbHRlcl9lbnZfYW10ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzNl9kMDdfZmlsdGVyX2Vudl9hbXQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczM3X2QwN19maWx0ZXJfZW52X2FtdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzdfZDA3X2ZpbHRlcl9lbnZfYW10IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3MzOF9kMDdfZmlsdGVyX2Vudl9hbXQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczM4X2QwN19maWx0ZXJfZW52X2FtdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzlfZDA3X2ZpbHRlcl9lbnZfYW10ID0gaHNsaWRlcigiTU1fTWF0cml4L3MzOV9kMDdfZmlsdGVyX2Vudl9hbXQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQwX2QwN19maWx0ZXJfZW52X2FtdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDBfZDA3X2ZpbHRlcl9lbnZfYW10IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0MV9kMDdfZmlsdGVyX2Vudl9hbXQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQxX2QwN19maWx0ZXJfZW52X2FtdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDJfZDA3X2ZpbHRlcl9lbnZfYW10ID0gaHNsaWRlcigiTU1fTWF0cml4L3M0Ml9kMDdfZmlsdGVyX2Vudl9hbXQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQzX2QwN19maWx0ZXJfZW52X2FtdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDNfZDA3X2ZpbHRlcl9lbnZfYW10IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0NF9kMDdfZmlsdGVyX2Vudl9hbXQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ0X2QwN19maWx0ZXJfZW52X2FtdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDVfZDA3X2ZpbHRlcl9lbnZfYW10ID0gaHNsaWRlcigiTU1fTWF0cml4L3M0NV9kMDdfZmlsdGVyX2Vudl9hbXQiLCAwLjAsIC0xLjAsIDEuMCwgMC4wMDEpOwphbXRfczQ2X2QwN19maWx0ZXJfZW52X2FtdCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDZfZDA3X2ZpbHRlcl9lbnZfYW10IiwgMC4wLCAtMS4wLCAxLjAsIDAuMDAxKTsKYW10X3M0N19kMDdfZmlsdGVyX2Vudl9hbXQgPSBoc2xpZGVyKCJNTV9NYXRyaXgvczQ3X2QwN19maWx0ZXJfZW52X2FtdCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CgovLyBNYXRyaXggY29sdW1uOiBkZXN0aW5hdGlvbiA4ID0gYW1wCmFtdF9zMDBfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDBfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDFfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDFfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDJfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDJfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDNfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDNfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDRfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDRfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDVfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDVfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDZfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDZfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDdfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDdfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDhfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDhfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDlfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDlfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTBfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTBfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTFfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTFfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTJfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTJfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTNfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTNfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTRfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTRfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTVfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTVfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTZfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTZfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTdfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTdfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMThfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMThfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTlfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTlfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjBfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjBfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjFfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjFfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjJfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjJfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjNfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjNfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjRfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjRfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjVfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjVfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjZfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjZfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjdfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjdfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjhfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjhfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjlfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjlfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzBfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzBfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzFfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzFfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzJfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzJfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzNfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzNfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzRfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzRfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzVfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzVfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzZfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzZfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzdfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzdfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzhfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzhfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzlfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzlfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDBfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDBfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDFfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDFfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDJfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDJfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDNfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDNfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDRfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDRfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDVfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDVfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDZfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDZfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDdfZDA4X2FtcCA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDdfZDA4X2FtcCIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CgovLyBNYXRyaXggY29sdW1uOiBkZXN0aW5hdGlvbiA5ID0gcGFuCmFtdF9zMDBfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDBfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDFfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDFfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDJfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDJfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDNfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDNfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDRfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDRfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDVfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDVfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDZfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDZfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDdfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDdfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDhfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDhfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMDlfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMDlfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTBfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTBfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTFfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTFfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTJfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTJfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTNfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTNfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTRfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTRfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTVfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTVfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTZfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTZfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTdfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTdfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMThfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMThfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMTlfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMTlfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjBfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjBfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjFfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjFfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjJfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjJfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjNfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjNfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjRfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjRfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjVfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjVfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjZfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjZfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjdfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjdfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjhfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjhfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMjlfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMjlfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzBfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzBfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzFfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzFfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzJfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzJfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzNfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzNfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzRfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzRfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzVfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzVfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzZfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzZfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzdfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzdfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzhfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzhfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zMzlfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zMzlfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDBfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDBfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDFfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDFfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDJfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDJfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDNfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDNfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDRfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDRfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDVfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDVfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDZfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDZfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CmFtdF9zNDdfZDA5X3BhbiA9IGhzbGlkZXIoIk1NX01hdHJpeC9zNDdfZDA5X3BhbiIsIDAuMCwgLTEuMCwgMS4wLCAwLjAwMSk7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gRGVzdGluYXRpb24gc2lnbmFscyDigJQgb25lIHBlciBtb2R1bGF0aW9uIGRlc3RpbmF0aW9uLiBFYWNoIGlzIGEgNDgtdGVybQovLyB3ZWlnaHRlZCBzdW0gb2Ygc291cmNlcyDDlyBhbW91bnRzLiBUaGUgYGdhdGVgIGFyZ3VtZW50IGlzIHRocmVhZGVkIHRocm91Z2gKLy8gc28gdGhhdCBtcC5zcmM/PyhnYXRlKSBjYW4gZHJpdmUgQURTUiBlbnZlbG9wZXMuCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKbW9kX3BpdGNoKGdhdGUpID0KICAgIG1wLnNyYzAwKGdhdGUpICogYW10X3MwMF9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMDEoZ2F0ZSkgKiBhbXRfczAxX2QwMF9waXRjaCArCiAgICBtcC5zcmMwMihnYXRlKSAqIGFtdF9zMDJfZDAwX3BpdGNoICsKICAgIG1wLnNyYzAzKGdhdGUpICogYW10X3MwM19kMDBfcGl0Y2ggKwogICAgbXAuc3JjMDQoZ2F0ZSkgKiBhbXRfczA0X2QwMF9waXRjaCArCiAgICBtcC5zcmMwNShnYXRlKSAqIGFtdF9zMDVfZDAwX3BpdGNoICsKICAgIG1wLnNyYzA2KGdhdGUpICogYW10X3MwNl9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMDcoZ2F0ZSkgKiBhbXRfczA3X2QwMF9waXRjaCArCiAgICBtcC5zcmMwOChnYXRlKSAqIGFtdF9zMDhfZDAwX3BpdGNoICsKICAgIG1wLnNyYzA5KGdhdGUpICogYW10X3MwOV9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMTAoZ2F0ZSkgKiBhbXRfczEwX2QwMF9waXRjaCArCiAgICBtcC5zcmMxMShnYXRlKSAqIGFtdF9zMTFfZDAwX3BpdGNoICsKICAgIG1wLnNyYzEyKGdhdGUpICogYW10X3MxMl9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMTMoZ2F0ZSkgKiBhbXRfczEzX2QwMF9waXRjaCArCiAgICBtcC5zcmMxNChnYXRlKSAqIGFtdF9zMTRfZDAwX3BpdGNoICsKICAgIG1wLnNyYzE1KGdhdGUpICogYW10X3MxNV9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMTYoZ2F0ZSkgKiBhbXRfczE2X2QwMF9waXRjaCArCiAgICBtcC5zcmMxNyhnYXRlKSAqIGFtdF9zMTdfZDAwX3BpdGNoICsKICAgIG1wLnNyYzE4KGdhdGUpICogYW10X3MxOF9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMTkoZ2F0ZSkgKiBhbXRfczE5X2QwMF9waXRjaCArCiAgICBtcC5zcmMyMChnYXRlKSAqIGFtdF9zMjBfZDAwX3BpdGNoICsKICAgIG1wLnNyYzIxKGdhdGUpICogYW10X3MyMV9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMjIoZ2F0ZSkgKiBhbXRfczIyX2QwMF9waXRjaCArCiAgICBtcC5zcmMyMyhnYXRlKSAqIGFtdF9zMjNfZDAwX3BpdGNoICsKICAgIG1wLnNyYzI0KGdhdGUpICogYW10X3MyNF9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMjUoZ2F0ZSkgKiBhbXRfczI1X2QwMF9waXRjaCArCiAgICBtcC5zcmMyNihnYXRlKSAqIGFtdF9zMjZfZDAwX3BpdGNoICsKICAgIG1wLnNyYzI3KGdhdGUpICogYW10X3MyN19kMDBfcGl0Y2ggKwogICAgbXAuc3JjMjgoZ2F0ZSkgKiBhbXRfczI4X2QwMF9waXRjaCArCiAgICBtcC5zcmMyOShnYXRlKSAqIGFtdF9zMjlfZDAwX3BpdGNoICsKICAgIG1wLnNyYzMwKGdhdGUpICogYW10X3MzMF9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMzEoZ2F0ZSkgKiBhbXRfczMxX2QwMF9waXRjaCArCiAgICBtcC5zcmMzMihnYXRlKSAqIGFtdF9zMzJfZDAwX3BpdGNoICsKICAgIG1wLnNyYzMzKGdhdGUpICogYW10X3MzM19kMDBfcGl0Y2ggKwogICAgbXAuc3JjMzQoZ2F0ZSkgKiBhbXRfczM0X2QwMF9waXRjaCArCiAgICBtcC5zcmMzNShnYXRlKSAqIGFtdF9zMzVfZDAwX3BpdGNoICsKICAgIG1wLnNyYzM2KGdhdGUpICogYW10X3MzNl9kMDBfcGl0Y2ggKwogICAgbXAuc3JjMzcoZ2F0ZSkgKiBhbXRfczM3X2QwMF9waXRjaCArCiAgICBtcC5zcmMzOChnYXRlKSAqIGFtdF9zMzhfZDAwX3BpdGNoICsKICAgIG1wLnNyYzM5KGdhdGUpICogYW10X3MzOV9kMDBfcGl0Y2ggKwogICAgbXAuc3JjNDAoZ2F0ZSkgKiBhbXRfczQwX2QwMF9waXRjaCArCiAgICBtcC5zcmM0MShnYXRlKSAqIGFtdF9zNDFfZDAwX3BpdGNoICsKICAgIG1wLnNyYzQyKGdhdGUpICogYW10X3M0Ml9kMDBfcGl0Y2ggKwogICAgbXAuc3JjNDMoZ2F0ZSkgKiBhbXRfczQzX2QwMF9waXRjaCArCiAgICBtcC5zcmM0NChnYXRlKSAqIGFtdF9zNDRfZDAwX3BpdGNoICsKICAgIG1wLnNyYzQ1KGdhdGUpICogYW10X3M0NV9kMDBfcGl0Y2ggKwogICAgbXAuc3JjNDYoZ2F0ZSkgKiBhbXRfczQ2X2QwMF9waXRjaCArCiAgICBtcC5zcmM0NyhnYXRlKSAqIGFtdF9zNDdfZDAwX3BpdGNoOwoKbW9kX29zYzJfZGV0dW5lKGdhdGUpID0KICAgIG1wLnNyYzAwKGdhdGUpICogYW10X3MwMF9kMDFfb3NjMl9kZXR1bmUgKwogICAgbXAuc3JjMDEoZ2F0ZSkgKiBhbXRfczAxX2QwMV9vc2MyX2RldHVuZSArCiAgICBtcC5zcmMwMihnYXRlKSAqIGFtdF9zMDJfZDAxX29zYzJfZGV0dW5lICsKICAgIG1wLnNyYzAzKGdhdGUpICogYW10X3MwM19kMDFfb3NjMl9kZXR1bmUgKwogICAgbXAuc3JjMDQoZ2F0ZSkgKiBhbXRfczA0X2QwMV9vc2MyX2RldHVuZSArCiAgICBtcC5zcmMwNShnYXRlKSAqIGFtdF9zMDVfZDAxX29zYzJfZGV0dW5lICsKICAgIG1wLnNyYzA2KGdhdGUpICogYW10X3MwNl9kMDFfb3NjMl9kZXR1bmUgKwogICAgbXAuc3JjMDcoZ2F0ZSkgKiBhbXRfczA3X2QwMV9vc2MyX2RldHVuZSArCiAgICBtcC5zcmMwOChnYXRlKSAqIGFtdF9zMDhfZDAxX29zYzJfZGV0dW5lICsKICAgIG1wLnNyYzA5KGdhdGUpICogYW10X3MwOV9kMDFfb3NjMl9kZXR1bmUgKwogICAgbXAuc3JjMTAoZ2F0ZSkgKiBhbXRfczEwX2QwMV9vc2MyX2RldHVuZSArCiAgICBtcC5zcmMxMShnYXRlKSAqIGFtdF9zMTFfZDAxX29zYzJfZGV0dW5lICsKICAgIG1wLnNyYzEyKGdhdGUpICogYW10X3MxMl9kMDFfb3NjMl9kZXR1bmUgKwogICAgbXAuc3JjMTMoZ2F0ZSkgKiBhbXRfczEzX2QwMV9vc2MyX2RldHVuZSArCiAgICBtcC5zcmMxNChnYXRlKSAqIGFtdF9zMTRfZDAxX29zYzJfZGV0dW5lICsKICAgIG1wLnNyYzE1KGdhdGUpICogYW10X3MxNV9kMDFfb3NjMl9kZXR1bmUgKwogICAgbXAuc3JjMTYoZ2F0ZSkgKiBhbXRfczE2X2QwMV9vc2MyX2RldHVuZSArCiAgICBtcC5zcmMxNyhnYXRlKSAqIGFtdF9zMTdfZDAxX29zYzJfZGV0dW5lICsKICAgIG1wLnNyYzE4KGdhdGUpICogYW10X3MxOF9kMDFfb3NjMl9kZXR1bmUgKwogICAgbXAuc3JjMTkoZ2F0ZSkgKiBhbXRfczE5X2QwMV9vc2MyX2RldHVuZSArCiAgICBtcC5zcmMyMChnYXRlKSAqIGFtdF9zMjBfZDAxX29zYzJfZGV0dW5lICsKICAgIG1wLnNyYzIxKGdhdGUpICogYW10X3MyMV9kMDFfb3NjMl9kZXR1bmUgKwogICAgbXAuc3JjMjIoZ2F0ZSkgKiBhbXRfczIyX2QwMV9vc2MyX2RldHVuZSArCiAgICBtcC5zcmMyMyhnYXRlKSAqIGFtdF9zMjNfZDAxX29zYzJfZGV0dW5lICsKICAgIG1wLnNyYzI0KGdhdGUpICogYW10X3MyNF9kMDFfb3NjMl9kZXR1bmUgKwogICAgbXAuc3JjMjUoZ2F0ZSkgKiBhbXRfczI1X2QwMV9vc2MyX2RldHVuZSArCiAgICBtcC5zcmMyNihnYXRlKSAqIGFtdF9zMjZfZDAxX29zYzJfZGV0dW5lICsKICAgIG1wLnNyYzI3KGdhdGUpICogYW10X3MyN19kMDFfb3NjMl9kZXR1bmUgKwogICAgbXAuc3JjMjgoZ2F0ZSkgKiBhbXRfczI4X2QwMV9vc2MyX2RldHVuZSArCiAgICBtcC5zcmMyOShnYXRlKSAqIGFtdF9zMjlfZDAxX29zYzJfZGV0dW5lICsKICAgIG1wLnNyYzMwKGdhdGUpICogYW10X3MzMF9kMDFfb3NjMl9kZXR1bmUgKwogICAgbXAuc3JjMzEoZ2F0ZSkgKiBhbXRfczMxX2QwMV9vc2MyX2RldHVuZSArCiAgICBtcC5zcmMzMihnYXRlKSAqIGFtdF9zMzJfZDAxX29zYzJfZGV0dW5lICsKICAgIG1wLnNyYzMzKGdhdGUpICogYW10X3MzM19kMDFfb3NjMl9kZXR1bmUgKwogICAgbXAuc3JjMzQoZ2F0ZSkgKiBhbXRfczM0X2QwMV9vc2MyX2RldHVuZSArCiAgICBtcC5zcmMzNShnYXRlKSAqIGFtdF9zMzVfZDAxX29zYzJfZGV0dW5lICsKICAgIG1wLnNyYzM2KGdhdGUpICogYW10X3MzNl9kMDFfb3NjMl9kZXR1bmUgKwogICAgbXAuc3JjMzcoZ2F0ZSkgKiBhbXRfczM3X2QwMV9vc2MyX2RldHVuZSArCiAgICBtcC5zcmMzOChnYXRlKSAqIGFtdF9zMzhfZDAxX29zYzJfZGV0dW5lICsKICAgIG1wLnNyYzM5KGdhdGUpICogYW10X3MzOV9kMDFfb3NjMl9kZXR1bmUgKwogICAgbXAuc3JjNDAoZ2F0ZSkgKiBhbXRfczQwX2QwMV9vc2MyX2RldHVuZSArCiAgICBtcC5zcmM0MShnYXRlKSAqIGFtdF9zNDFfZDAxX29zYzJfZGV0dW5lICsKICAgIG1wLnNyYzQyKGdhdGUpICogYW10X3M0Ml9kMDFfb3NjMl9kZXR1bmUgKwogICAgbXAuc3JjNDMoZ2F0ZSkgKiBhbXRfczQzX2QwMV9vc2MyX2RldHVuZSArCiAgICBtcC5zcmM0NChnYXRlKSAqIGFtdF9zNDRfZDAxX29zYzJfZGV0dW5lICsKICAgIG1wLnNyYzQ1KGdhdGUpICogYW10X3M0NV9kMDFfb3NjMl9kZXR1bmUgKwogICAgbXAuc3JjNDYoZ2F0ZSkgKiBhbXRfczQ2X2QwMV9vc2MyX2RldHVuZSArCiAgICBtcC5zcmM0NyhnYXRlKSAqIGFtdF9zNDdfZDAxX29zYzJfZGV0dW5lOwoKbW9kX29zYzNfZGV0dW5lKGdhdGUpID0KICAgIG1wLnNyYzAwKGdhdGUpICogYW10X3MwMF9kMDJfb3NjM19kZXR1bmUgKwogICAgbXAuc3JjMDEoZ2F0ZSkgKiBhbXRfczAxX2QwMl9vc2MzX2RldHVuZSArCiAgICBtcC5zcmMwMihnYXRlKSAqIGFtdF9zMDJfZDAyX29zYzNfZGV0dW5lICsKICAgIG1wLnNyYzAzKGdhdGUpICogYW10X3MwM19kMDJfb3NjM19kZXR1bmUgKwogICAgbXAuc3JjMDQoZ2F0ZSkgKiBhbXRfczA0X2QwMl9vc2MzX2RldHVuZSArCiAgICBtcC5zcmMwNShnYXRlKSAqIGFtdF9zMDVfZDAyX29zYzNfZGV0dW5lICsKICAgIG1wLnNyYzA2KGdhdGUpICogYW10X3MwNl9kMDJfb3NjM19kZXR1bmUgKwogICAgbXAuc3JjMDcoZ2F0ZSkgKiBhbXRfczA3X2QwMl9vc2MzX2RldHVuZSArCiAgICBtcC5zcmMwOChnYXRlKSAqIGFtdF9zMDhfZDAyX29zYzNfZGV0dW5lICsKICAgIG1wLnNyYzA5KGdhdGUpICogYW10X3MwOV9kMDJfb3NjM19kZXR1bmUgKwogICAgbXAuc3JjMTAoZ2F0ZSkgKiBhbXRfczEwX2QwMl9vc2MzX2RldHVuZSArCiAgICBtcC5zcmMxMShnYXRlKSAqIGFtdF9zMTFfZDAyX29zYzNfZGV0dW5lICsKICAgIG1wLnNyYzEyKGdhdGUpICogYW10X3MxMl9kMDJfb3NjM19kZXR1bmUgKwogICAgbXAuc3JjMTMoZ2F0ZSkgKiBhbXRfczEzX2QwMl9vc2MzX2RldHVuZSArCiAgICBtcC5zcmMxNChnYXRlKSAqIGFtdF9zMTRfZDAyX29zYzNfZGV0dW5lICsKICAgIG1wLnNyYzE1KGdhdGUpICogYW10X3MxNV9kMDJfb3NjM19kZXR1bmUgKwogICAgbXAuc3JjMTYoZ2F0ZSkgKiBhbXRfczE2X2QwMl9vc2MzX2RldHVuZSArCiAgICBtcC5zcmMxNyhnYXRlKSAqIGFtdF9zMTdfZDAyX29zYzNfZGV0dW5lICsKICAgIG1wLnNyYzE4KGdhdGUpICogYW10X3MxOF9kMDJfb3NjM19kZXR1bmUgKwogICAgbXAuc3JjMTkoZ2F0ZSkgKiBhbXRfczE5X2QwMl9vc2MzX2RldHVuZSArCiAgICBtcC5zcmMyMChnYXRlKSAqIGFtdF9zMjBfZDAyX29zYzNfZGV0dW5lICsKICAgIG1wLnNyYzIxKGdhdGUpICogYW10X3MyMV9kMDJfb3NjM19kZXR1bmUgKwogICAgbXAuc3JjMjIoZ2F0ZSkgKiBhbXRfczIyX2QwMl9vc2MzX2RldHVuZSArCiAgICBtcC5zcmMyMyhnYXRlKSAqIGFtdF9zMjNfZDAyX29zYzNfZGV0dW5lICsKICAgIG1wLnNyYzI0KGdhdGUpICogYW10X3MyNF9kMDJfb3NjM19kZXR1bmUgKwogICAgbXAuc3JjMjUoZ2F0ZSkgKiBhbXRfczI1X2QwMl9vc2MzX2RldHVuZSArCiAgICBtcC5zcmMyNihnYXRlKSAqIGFtdF9zMjZfZDAyX29zYzNfZGV0dW5lICsKICAgIG1wLnNyYzI3KGdhdGUpICogYW10X3MyN19kMDJfb3NjM19kZXR1bmUgKwogICAgbXAuc3JjMjgoZ2F0ZSkgKiBhbXRfczI4X2QwMl9vc2MzX2RldHVuZSArCiAgICBtcC5zcmMyOShnYXRlKSAqIGFtdF9zMjlfZDAyX29zYzNfZGV0dW5lICsKICAgIG1wLnNyYzMwKGdhdGUpICogYW10X3MzMF9kMDJfb3NjM19kZXR1bmUgKwogICAgbXAuc3JjMzEoZ2F0ZSkgKiBhbXRfczMxX2QwMl9vc2MzX2RldHVuZSArCiAgICBtcC5zcmMzMihnYXRlKSAqIGFtdF9zMzJfZDAyX29zYzNfZGV0dW5lICsKICAgIG1wLnNyYzMzKGdhdGUpICogYW10X3MzM19kMDJfb3NjM19kZXR1bmUgKwogICAgbXAuc3JjMzQoZ2F0ZSkgKiBhbXRfczM0X2QwMl9vc2MzX2RldHVuZSArCiAgICBtcC5zcmMzNShnYXRlKSAqIGFtdF9zMzVfZDAyX29zYzNfZGV0dW5lICsKICAgIG1wLnNyYzM2KGdhdGUpICogYW10X3MzNl9kMDJfb3NjM19kZXR1bmUgKwogICAgbXAuc3JjMzcoZ2F0ZSkgKiBhbXRfczM3X2QwMl9vc2MzX2RldHVuZSArCiAgICBtcC5zcmMzOChnYXRlKSAqIGFtdF9zMzhfZDAyX29zYzNfZGV0dW5lICsKICAgIG1wLnNyYzM5KGdhdGUpICogYW10X3MzOV9kMDJfb3NjM19kZXR1bmUgKwogICAgbXAuc3JjNDAoZ2F0ZSkgKiBhbXRfczQwX2QwMl9vc2MzX2RldHVuZSArCiAgICBtcC5zcmM0MShnYXRlKSAqIGFtdF9zNDFfZDAyX29zYzNfZGV0dW5lICsKICAgIG1wLnNyYzQyKGdhdGUpICogYW10X3M0Ml9kMDJfb3NjM19kZXR1bmUgKwogICAgbXAuc3JjNDMoZ2F0ZSkgKiBhbXRfczQzX2QwMl9vc2MzX2RldHVuZSArCiAgICBtcC5zcmM0NChnYXRlKSAqIGFtdF9zNDRfZDAyX29zYzNfZGV0dW5lICsKICAgIG1wLnNyYzQ1KGdhdGUpICogYW10X3M0NV9kMDJfb3NjM19kZXR1bmUgKwogICAgbXAuc3JjNDYoZ2F0ZSkgKiBhbXRfczQ2X2QwMl9vc2MzX2RldHVuZSArCiAgICBtcC5zcmM0NyhnYXRlKSAqIGFtdF9zNDdfZDAyX29zYzNfZGV0dW5lOwoKbW9kX29zY19taXhfYmFsKGdhdGUpID0KICAgIG1wLnNyYzAwKGdhdGUpICogYW10X3MwMF9kMDNfb3NjX21peF9iYWwgKwogICAgbXAuc3JjMDEoZ2F0ZSkgKiBhbXRfczAxX2QwM19vc2NfbWl4X2JhbCArCiAgICBtcC5zcmMwMihnYXRlKSAqIGFtdF9zMDJfZDAzX29zY19taXhfYmFsICsKICAgIG1wLnNyYzAzKGdhdGUpICogYW10X3MwM19kMDNfb3NjX21peF9iYWwgKwogICAgbXAuc3JjMDQoZ2F0ZSkgKiBhbXRfczA0X2QwM19vc2NfbWl4X2JhbCArCiAgICBtcC5zcmMwNShnYXRlKSAqIGFtdF9zMDVfZDAzX29zY19taXhfYmFsICsKICAgIG1wLnNyYzA2KGdhdGUpICogYW10X3MwNl9kMDNfb3NjX21peF9iYWwgKwogICAgbXAuc3JjMDcoZ2F0ZSkgKiBhbXRfczA3X2QwM19vc2NfbWl4X2JhbCArCiAgICBtcC5zcmMwOChnYXRlKSAqIGFtdF9zMDhfZDAzX29zY19taXhfYmFsICsKICAgIG1wLnNyYzA5KGdhdGUpICogYW10X3MwOV9kMDNfb3NjX21peF9iYWwgKwogICAgbXAuc3JjMTAoZ2F0ZSkgKiBhbXRfczEwX2QwM19vc2NfbWl4X2JhbCArCiAgICBtcC5zcmMxMShnYXRlKSAqIGFtdF9zMTFfZDAzX29zY19taXhfYmFsICsKICAgIG1wLnNyYzEyKGdhdGUpICogYW10X3MxMl9kMDNfb3NjX21peF9iYWwgKwogICAgbXAuc3JjMTMoZ2F0ZSkgKiBhbXRfczEzX2QwM19vc2NfbWl4X2JhbCArCiAgICBtcC5zcmMxNChnYXRlKSAqIGFtdF9zMTRfZDAzX29zY19taXhfYmFsICsKICAgIG1wLnNyYzE1KGdhdGUpICogYW10X3MxNV9kMDNfb3NjX21peF9iYWwgKwogICAgbXAuc3JjMTYoZ2F0ZSkgKiBhbXRfczE2X2QwM19vc2NfbWl4X2JhbCArCiAgICBtcC5zcmMxNyhnYXRlKSAqIGFtdF9zMTdfZDAzX29zY19taXhfYmFsICsKICAgIG1wLnNyYzE4KGdhdGUpICogYW10X3MxOF9kMDNfb3NjX21peF9iYWwgKwogICAgbXAuc3JjMTkoZ2F0ZSkgKiBhbXRfczE5X2QwM19vc2NfbWl4X2JhbCArCiAgICBtcC5zcmMyMChnYXRlKSAqIGFtdF9zMjBfZDAzX29zY19taXhfYmFsICsKICAgIG1wLnNyYzIxKGdhdGUpICogYW10X3MyMV9kMDNfb3NjX21peF9iYWwgKwogICAgbXAuc3JjMjIoZ2F0ZSkgKiBhbXRfczIyX2QwM19vc2NfbWl4X2JhbCArCiAgICBtcC5zcmMyMyhnYXRlKSAqIGFtdF9zMjNfZDAzX29zY19taXhfYmFsICsKICAgIG1wLnNyYzI0KGdhdGUpICogYW10X3MyNF9kMDNfb3NjX21peF9iYWwgKwogICAgbXAuc3JjMjUoZ2F0ZSkgKiBhbXRfczI1X2QwM19vc2NfbWl4X2JhbCArCiAgICBtcC5zcmMyNihnYXRlKSAqIGFtdF9zMjZfZDAzX29zY19taXhfYmFsICsKICAgIG1wLnNyYzI3KGdhdGUpICogYW10X3MyN19kMDNfb3NjX21peF9iYWwgKwogICAgbXAuc3JjMjgoZ2F0ZSkgKiBhbXRfczI4X2QwM19vc2NfbWl4X2JhbCArCiAgICBtcC5zcmMyOShnYXRlKSAqIGFtdF9zMjlfZDAzX29zY19taXhfYmFsICsKICAgIG1wLnNyYzMwKGdhdGUpICogYW10X3MzMF9kMDNfb3NjX21peF9iYWwgKwogICAgbXAuc3JjMzEoZ2F0ZSkgKiBhbXRfczMxX2QwM19vc2NfbWl4X2JhbCArCiAgICBtcC5zcmMzMihnYXRlKSAqIGFtdF9zMzJfZDAzX29zY19taXhfYmFsICsKICAgIG1wLnNyYzMzKGdhdGUpICogYW10X3MzM19kMDNfb3NjX21peF9iYWwgKwogICAgbXAuc3JjMzQoZ2F0ZSkgKiBhbXRfczM0X2QwM19vc2NfbWl4X2JhbCArCiAgICBtcC5zcmMzNShnYXRlKSAqIGFtdF9zMzVfZDAzX29zY19taXhfYmFsICsKICAgIG1wLnNyYzM2KGdhdGUpICogYW10X3MzNl9kMDNfb3NjX21peF9iYWwgKwogICAgbXAuc3JjMzcoZ2F0ZSkgKiBhbXRfczM3X2QwM19vc2NfbWl4X2JhbCArCiAgICBtcC5zcmMzOChnYXRlKSAqIGFtdF9zMzhfZDAzX29zY19taXhfYmFsICsKICAgIG1wLnNyYzM5KGdhdGUpICogYW10X3MzOV9kMDNfb3NjX21peF9iYWwgKwogICAgbXAuc3JjNDAoZ2F0ZSkgKiBhbXRfczQwX2QwM19vc2NfbWl4X2JhbCArCiAgICBtcC5zcmM0MShnYXRlKSAqIGFtdF9zNDFfZDAzX29zY19taXhfYmFsICsKICAgIG1wLnNyYzQyKGdhdGUpICogYW10X3M0Ml9kMDNfb3NjX21peF9iYWwgKwogICAgbXAuc3JjNDMoZ2F0ZSkgKiBhbXRfczQzX2QwM19vc2NfbWl4X2JhbCArCiAgICBtcC5zcmM0NChnYXRlKSAqIGFtdF9zNDRfZDAzX29zY19taXhfYmFsICsKICAgIG1wLnNyYzQ1KGdhdGUpICogYW10X3M0NV9kMDNfb3NjX21peF9iYWwgKwogICAgbXAuc3JjNDYoZ2F0ZSkgKiBhbXRfczQ2X2QwM19vc2NfbWl4X2JhbCArCiAgICBtcC5zcmM0NyhnYXRlKSAqIGFtdF9zNDdfZDAzX29zY19taXhfYmFsOwoKbW9kX25vaXNlX2xldmVsKGdhdGUpID0KICAgIG1wLnNyYzAwKGdhdGUpICogYW10X3MwMF9kMDRfbm9pc2VfbGV2ZWwgKwogICAgbXAuc3JjMDEoZ2F0ZSkgKiBhbXRfczAxX2QwNF9ub2lzZV9sZXZlbCArCiAgICBtcC5zcmMwMihnYXRlKSAqIGFtdF9zMDJfZDA0X25vaXNlX2xldmVsICsKICAgIG1wLnNyYzAzKGdhdGUpICogYW10X3MwM19kMDRfbm9pc2VfbGV2ZWwgKwogICAgbXAuc3JjMDQoZ2F0ZSkgKiBhbXRfczA0X2QwNF9ub2lzZV9sZXZlbCArCiAgICBtcC5zcmMwNShnYXRlKSAqIGFtdF9zMDVfZDA0X25vaXNlX2xldmVsICsKICAgIG1wLnNyYzA2KGdhdGUpICogYW10X3MwNl9kMDRfbm9pc2VfbGV2ZWwgKwogICAgbXAuc3JjMDcoZ2F0ZSkgKiBhbXRfczA3X2QwNF9ub2lzZV9sZXZlbCArCiAgICBtcC5zcmMwOChnYXRlKSAqIGFtdF9zMDhfZDA0X25vaXNlX2xldmVsICsKICAgIG1wLnNyYzA5KGdhdGUpICogYW10X3MwOV9kMDRfbm9pc2VfbGV2ZWwgKwogICAgbXAuc3JjMTAoZ2F0ZSkgKiBhbXRfczEwX2QwNF9ub2lzZV9sZXZlbCArCiAgICBtcC5zcmMxMShnYXRlKSAqIGFtdF9zMTFfZDA0X25vaXNlX2xldmVsICsKICAgIG1wLnNyYzEyKGdhdGUpICogYW10X3MxMl9kMDRfbm9pc2VfbGV2ZWwgKwogICAgbXAuc3JjMTMoZ2F0ZSkgKiBhbXRfczEzX2QwNF9ub2lzZV9sZXZlbCArCiAgICBtcC5zcmMxNChnYXRlKSAqIGFtdF9zMTRfZDA0X25vaXNlX2xldmVsICsKICAgIG1wLnNyYzE1KGdhdGUpICogYW10X3MxNV9kMDRfbm9pc2VfbGV2ZWwgKwogICAgbXAuc3JjMTYoZ2F0ZSkgKiBhbXRfczE2X2QwNF9ub2lzZV9sZXZlbCArCiAgICBtcC5zcmMxNyhnYXRlKSAqIGFtdF9zMTdfZDA0X25vaXNlX2xldmVsICsKICAgIG1wLnNyYzE4KGdhdGUpICogYW10X3MxOF9kMDRfbm9pc2VfbGV2ZWwgKwogICAgbXAuc3JjMTkoZ2F0ZSkgKiBhbXRfczE5X2QwNF9ub2lzZV9sZXZlbCArCiAgICBtcC5zcmMyMChnYXRlKSAqIGFtdF9zMjBfZDA0X25vaXNlX2xldmVsICsKICAgIG1wLnNyYzIxKGdhdGUpICogYW10X3MyMV9kMDRfbm9pc2VfbGV2ZWwgKwogICAgbXAuc3JjMjIoZ2F0ZSkgKiBhbXRfczIyX2QwNF9ub2lzZV9sZXZlbCArCiAgICBtcC5zcmMyMyhnYXRlKSAqIGFtdF9zMjNfZDA0X25vaXNlX2xldmVsICsKICAgIG1wLnNyYzI0KGdhdGUpICogYW10X3MyNF9kMDRfbm9pc2VfbGV2ZWwgKwogICAgbXAuc3JjMjUoZ2F0ZSkgKiBhbXRfczI1X2QwNF9ub2lzZV9sZXZlbCArCiAgICBtcC5zcmMyNihnYXRlKSAqIGFtdF9zMjZfZDA0X25vaXNlX2xldmVsICsKICAgIG1wLnNyYzI3KGdhdGUpICogYW10X3MyN19kMDRfbm9pc2VfbGV2ZWwgKwogICAgbXAuc3JjMjgoZ2F0ZSkgKiBhbXRfczI4X2QwNF9ub2lzZV9sZXZlbCArCiAgICBtcC5zcmMyOShnYXRlKSAqIGFtdF9zMjlfZDA0X25vaXNlX2xldmVsICsKICAgIG1wLnNyYzMwKGdhdGUpICogYW10X3MzMF9kMDRfbm9pc2VfbGV2ZWwgKwogICAgbXAuc3JjMzEoZ2F0ZSkgKiBhbXRfczMxX2QwNF9ub2lzZV9sZXZlbCArCiAgICBtcC5zcmMzMihnYXRlKSAqIGFtdF9zMzJfZDA0X25vaXNlX2xldmVsICsKICAgIG1wLnNyYzMzKGdhdGUpICogYW10X3MzM19kMDRfbm9pc2VfbGV2ZWwgKwogICAgbXAuc3JjMzQoZ2F0ZSkgKiBhbXRfczM0X2QwNF9ub2lzZV9sZXZlbCArCiAgICBtcC5zcmMzNShnYXRlKSAqIGFtdF9zMzVfZDA0X25vaXNlX2xldmVsICsKICAgIG1wLnNyYzM2KGdhdGUpICogYW10X3MzNl9kMDRfbm9pc2VfbGV2ZWwgKwogICAgbXAuc3JjMzcoZ2F0ZSkgKiBhbXRfczM3X2QwNF9ub2lzZV9sZXZlbCArCiAgICBtcC5zcmMzOChnYXRlKSAqIGFtdF9zMzhfZDA0X25vaXNlX2xldmVsICsKICAgIG1wLnNyYzM5KGdhdGUpICogYW10X3MzOV9kMDRfbm9pc2VfbGV2ZWwgKwogICAgbXAuc3JjNDAoZ2F0ZSkgKiBhbXRfczQwX2QwNF9ub2lzZV9sZXZlbCArCiAgICBtcC5zcmM0MShnYXRlKSAqIGFtdF9zNDFfZDA0X25vaXNlX2xldmVsICsKICAgIG1wLnNyYzQyKGdhdGUpICogYW10X3M0Ml9kMDRfbm9pc2VfbGV2ZWwgKwogICAgbXAuc3JjNDMoZ2F0ZSkgKiBhbXRfczQzX2QwNF9ub2lzZV9sZXZlbCArCiAgICBtcC5zcmM0NChnYXRlKSAqIGFtdF9zNDRfZDA0X25vaXNlX2xldmVsICsKICAgIG1wLnNyYzQ1KGdhdGUpICogYW10X3M0NV9kMDRfbm9pc2VfbGV2ZWwgKwogICAgbXAuc3JjNDYoZ2F0ZSkgKiBhbXRfczQ2X2QwNF9ub2lzZV9sZXZlbCArCiAgICBtcC5zcmM0NyhnYXRlKSAqIGFtdF9zNDdfZDA0X25vaXNlX2xldmVsOwoKbW9kX2N1dG9mZihnYXRlKSA9CiAgICBtcC5zcmMwMChnYXRlKSAqIGFtdF9zMDBfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMwMShnYXRlKSAqIGFtdF9zMDFfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMwMihnYXRlKSAqIGFtdF9zMDJfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMwMyhnYXRlKSAqIGFtdF9zMDNfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMwNChnYXRlKSAqIGFtdF9zMDRfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMwNShnYXRlKSAqIGFtdF9zMDVfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMwNihnYXRlKSAqIGFtdF9zMDZfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMwNyhnYXRlKSAqIGFtdF9zMDdfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMwOChnYXRlKSAqIGFtdF9zMDhfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMwOShnYXRlKSAqIGFtdF9zMDlfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMxMChnYXRlKSAqIGFtdF9zMTBfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMxMShnYXRlKSAqIGFtdF9zMTFfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMxMihnYXRlKSAqIGFtdF9zMTJfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMxMyhnYXRlKSAqIGFtdF9zMTNfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMxNChnYXRlKSAqIGFtdF9zMTRfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMxNShnYXRlKSAqIGFtdF9zMTVfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMxNihnYXRlKSAqIGFtdF9zMTZfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMxNyhnYXRlKSAqIGFtdF9zMTdfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMxOChnYXRlKSAqIGFtdF9zMThfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMxOShnYXRlKSAqIGFtdF9zMTlfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMyMChnYXRlKSAqIGFtdF9zMjBfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMyMShnYXRlKSAqIGFtdF9zMjFfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMyMihnYXRlKSAqIGFtdF9zMjJfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMyMyhnYXRlKSAqIGFtdF9zMjNfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMyNChnYXRlKSAqIGFtdF9zMjRfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMyNShnYXRlKSAqIGFtdF9zMjVfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMyNihnYXRlKSAqIGFtdF9zMjZfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMyNyhnYXRlKSAqIGFtdF9zMjdfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMyOChnYXRlKSAqIGFtdF9zMjhfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMyOShnYXRlKSAqIGFtdF9zMjlfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMzMChnYXRlKSAqIGFtdF9zMzBfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMzMShnYXRlKSAqIGFtdF9zMzFfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMzMihnYXRlKSAqIGFtdF9zMzJfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMzMyhnYXRlKSAqIGFtdF9zMzNfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMzNChnYXRlKSAqIGFtdF9zMzRfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMzNShnYXRlKSAqIGFtdF9zMzVfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMzNihnYXRlKSAqIGFtdF9zMzZfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMzNyhnYXRlKSAqIGFtdF9zMzdfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMzOChnYXRlKSAqIGFtdF9zMzhfZDA1X2N1dG9mZiArCiAgICBtcC5zcmMzOShnYXRlKSAqIGFtdF9zMzlfZDA1X2N1dG9mZiArCiAgICBtcC5zcmM0MChnYXRlKSAqIGFtdF9zNDBfZDA1X2N1dG9mZiArCiAgICBtcC5zcmM0MShnYXRlKSAqIGFtdF9zNDFfZDA1X2N1dG9mZiArCiAgICBtcC5zcmM0MihnYXRlKSAqIGFtdF9zNDJfZDA1X2N1dG9mZiArCiAgICBtcC5zcmM0MyhnYXRlKSAqIGFtdF9zNDNfZDA1X2N1dG9mZiArCiAgICBtcC5zcmM0NChnYXRlKSAqIGFtdF9zNDRfZDA1X2N1dG9mZiArCiAgICBtcC5zcmM0NShnYXRlKSAqIGFtdF9zNDVfZDA1X2N1dG9mZiArCiAgICBtcC5zcmM0NihnYXRlKSAqIGFtdF9zNDZfZDA1X2N1dG9mZiArCiAgICBtcC5zcmM0NyhnYXRlKSAqIGFtdF9zNDdfZDA1X2N1dG9mZjsKCm1vZF9yZXNvbmFuY2UoZ2F0ZSkgPQogICAgbXAuc3JjMDAoZ2F0ZSkgKiBhbXRfczAwX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMDEoZ2F0ZSkgKiBhbXRfczAxX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMDIoZ2F0ZSkgKiBhbXRfczAyX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMDMoZ2F0ZSkgKiBhbXRfczAzX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMDQoZ2F0ZSkgKiBhbXRfczA0X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMDUoZ2F0ZSkgKiBhbXRfczA1X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMDYoZ2F0ZSkgKiBhbXRfczA2X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMDcoZ2F0ZSkgKiBhbXRfczA3X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMDgoZ2F0ZSkgKiBhbXRfczA4X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMDkoZ2F0ZSkgKiBhbXRfczA5X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMTAoZ2F0ZSkgKiBhbXRfczEwX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMTEoZ2F0ZSkgKiBhbXRfczExX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMTIoZ2F0ZSkgKiBhbXRfczEyX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMTMoZ2F0ZSkgKiBhbXRfczEzX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMTQoZ2F0ZSkgKiBhbXRfczE0X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMTUoZ2F0ZSkgKiBhbXRfczE1X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMTYoZ2F0ZSkgKiBhbXRfczE2X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMTcoZ2F0ZSkgKiBhbXRfczE3X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMTgoZ2F0ZSkgKiBhbXRfczE4X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMTkoZ2F0ZSkgKiBhbXRfczE5X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMjAoZ2F0ZSkgKiBhbXRfczIwX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMjEoZ2F0ZSkgKiBhbXRfczIxX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMjIoZ2F0ZSkgKiBhbXRfczIyX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMjMoZ2F0ZSkgKiBhbXRfczIzX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMjQoZ2F0ZSkgKiBhbXRfczI0X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMjUoZ2F0ZSkgKiBhbXRfczI1X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMjYoZ2F0ZSkgKiBhbXRfczI2X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMjcoZ2F0ZSkgKiBhbXRfczI3X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMjgoZ2F0ZSkgKiBhbXRfczI4X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMjkoZ2F0ZSkgKiBhbXRfczI5X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMzAoZ2F0ZSkgKiBhbXRfczMwX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMzEoZ2F0ZSkgKiBhbXRfczMxX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMzIoZ2F0ZSkgKiBhbXRfczMyX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMzMoZ2F0ZSkgKiBhbXRfczMzX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMzQoZ2F0ZSkgKiBhbXRfczM0X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMzUoZ2F0ZSkgKiBhbXRfczM1X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMzYoZ2F0ZSkgKiBhbXRfczM2X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMzcoZ2F0ZSkgKiBhbXRfczM3X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMzgoZ2F0ZSkgKiBhbXRfczM4X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjMzkoZ2F0ZSkgKiBhbXRfczM5X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjNDAoZ2F0ZSkgKiBhbXRfczQwX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjNDEoZ2F0ZSkgKiBhbXRfczQxX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjNDIoZ2F0ZSkgKiBhbXRfczQyX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjNDMoZ2F0ZSkgKiBhbXRfczQzX2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjNDQoZ2F0ZSkgKiBhbXRfczQ0X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjNDUoZ2F0ZSkgKiBhbXRfczQ1X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjNDYoZ2F0ZSkgKiBhbXRfczQ2X2QwNl9yZXNvbmFuY2UgKwogICAgbXAuc3JjNDcoZ2F0ZSkgKiBhbXRfczQ3X2QwNl9yZXNvbmFuY2U7Cgptb2RfZmlsdGVyX2Vudl9hbXQoZ2F0ZSkgPQogICAgbXAuc3JjMDAoZ2F0ZSkgKiBhbXRfczAwX2QwN19maWx0ZXJfZW52X2FtdCArCiAgICBtcC5zcmMwMShnYXRlKSAqIGFtdF9zMDFfZDA3X2ZpbHRlcl9lbnZfYW10ICsKICAgIG1wLnNyYzAyKGdhdGUpICogYW10X3MwMl9kMDdfZmlsdGVyX2Vudl9hbXQgKwogICAgbXAuc3JjMDMoZ2F0ZSkgKiBhbXRfczAzX2QwN19maWx0ZXJfZW52X2FtdCArCiAgICBtcC5zcmMwNChnYXRlKSAqIGFtdF9zMDRfZDA3X2ZpbHRlcl9lbnZfYW10ICsKICAgIG1wLnNyYzA1KGdhdGUpICogYW10X3MwNV9kMDdfZmlsdGVyX2Vudl9hbXQgKwogICAgbXAuc3JjMDYoZ2F0ZSkgKiBhbXRfczA2X2QwN19maWx0ZXJfZW52X2FtdCArCiAgICBtcC5zcmMwNyhnYXRlKSAqIGFtdF9zMDdfZDA3X2ZpbHRlcl9lbnZfYW10ICsKICAgIG1wLnNyYzA4KGdhdGUpICogYW10X3MwOF9kMDdfZmlsdGVyX2Vudl9hbXQgKwogICAgbXAuc3JjMDkoZ2F0ZSkgKiBhbXRfczA5X2QwN19maWx0ZXJfZW52X2FtdCArCiAgICBtcC5zcmMxMChnYXRlKSAqIGFtdF9zMTBfZDA3X2ZpbHRlcl9lbnZfYW10ICsKICAgIG1wLnNyYzExKGdhdGUpICogYW10X3MxMV9kMDdfZmlsdGVyX2Vudl9hbXQgKwogICAgbXAuc3JjMTIoZ2F0ZSkgKiBhbXRfczEyX2QwN19maWx0ZXJfZW52X2FtdCArCiAgICBtcC5zcmMxMyhnYXRlKSAqIGFtdF9zMTNfZDA3X2ZpbHRlcl9lbnZfYW10ICsKICAgIG1wLnNyYzE0KGdhdGUpICogYW10X3MxNF9kMDdfZmlsdGVyX2Vudl9hbXQgKwogICAgbXAuc3JjMTUoZ2F0ZSkgKiBhbXRfczE1X2QwN19maWx0ZXJfZW52X2FtdCArCiAgICBtcC5zcmMxNihnYXRlKSAqIGFtdF9zMTZfZDA3X2ZpbHRlcl9lbnZfYW10ICsKICAgIG1wLnNyYzE3KGdhdGUpICogYW10X3MxN19kMDdfZmlsdGVyX2Vudl9hbXQgKwogICAgbXAuc3JjMTgoZ2F0ZSkgKiBhbXRfczE4X2QwN19maWx0ZXJfZW52X2FtdCArCiAgICBtcC5zcmMxOShnYXRlKSAqIGFtdF9zMTlfZDA3X2ZpbHRlcl9lbnZfYW10ICsKICAgIG1wLnNyYzIwKGdhdGUpICogYW10X3MyMF9kMDdfZmlsdGVyX2Vudl9hbXQgKwogICAgbXAuc3JjMjEoZ2F0ZSkgKiBhbXRfczIxX2QwN19maWx0ZXJfZW52X2FtdCArCiAgICBtcC5zcmMyMihnYXRlKSAqIGFtdF9zMjJfZDA3X2ZpbHRlcl9lbnZfYW10ICsKICAgIG1wLnNyYzIzKGdhdGUpICogYW10X3MyM19kMDdfZmlsdGVyX2Vudl9hbXQgKwogICAgbXAuc3JjMjQoZ2F0ZSkgKiBhbXRfczI0X2QwN19maWx0ZXJfZW52X2FtdCArCiAgICBtcC5zcmMyNShnYXRlKSAqIGFtdF9zMjVfZDA3X2ZpbHRlcl9lbnZfYW10ICsKICAgIG1wLnNyYzI2KGdhdGUpICogYW10X3MyNl9kMDdfZmlsdGVyX2Vudl9hbXQgKwogICAgbXAuc3JjMjcoZ2F0ZSkgKiBhbXRfczI3X2QwN19maWx0ZXJfZW52X2FtdCArCiAgICBtcC5zcmMyOChnYXRlKSAqIGFtdF9zMjhfZDA3X2ZpbHRlcl9lbnZfYW10ICsKICAgIG1wLnNyYzI5KGdhdGUpICogYW10X3MyOV9kMDdfZmlsdGVyX2Vudl9hbXQgKwogICAgbXAuc3JjMzAoZ2F0ZSkgKiBhbXRfczMwX2QwN19maWx0ZXJfZW52X2FtdCArCiAgICBtcC5zcmMzMShnYXRlKSAqIGFtdF9zMzFfZDA3X2ZpbHRlcl9lbnZfYW10ICsKICAgIG1wLnNyYzMyKGdhdGUpICogYW10X3MzMl9kMDdfZmlsdGVyX2Vudl9hbXQgKwogICAgbXAuc3JjMzMoZ2F0ZSkgKiBhbXRfczMzX2QwN19maWx0ZXJfZW52X2FtdCArCiAgICBtcC5zcmMzNChnYXRlKSAqIGFtdF9zMzRfZDA3X2ZpbHRlcl9lbnZfYW10ICsKICAgIG1wLnNyYzM1KGdhdGUpICogYW10X3MzNV9kMDdfZmlsdGVyX2Vudl9hbXQgKwogICAgbXAuc3JjMzYoZ2F0ZSkgKiBhbXRfczM2X2QwN19maWx0ZXJfZW52X2FtdCArCiAgICBtcC5zcmMzNyhnYXRlKSAqIGFtdF9zMzdfZDA3X2ZpbHRlcl9lbnZfYW10ICsKICAgIG1wLnNyYzM4KGdhdGUpICogYW10X3MzOF9kMDdfZmlsdGVyX2Vudl9hbXQgKwogICAgbXAuc3JjMzkoZ2F0ZSkgKiBhbXRfczM5X2QwN19maWx0ZXJfZW52X2FtdCArCiAgICBtcC5zcmM0MChnYXRlKSAqIGFtdF9zNDBfZDA3X2ZpbHRlcl9lbnZfYW10ICsKICAgIG1wLnNyYzQxKGdhdGUpICogYW10X3M0MV9kMDdfZmlsdGVyX2Vudl9hbXQgKwogICAgbXAuc3JjNDIoZ2F0ZSkgKiBhbXRfczQyX2QwN19maWx0ZXJfZW52X2FtdCArCiAgICBtcC5zcmM0MyhnYXRlKSAqIGFtdF9zNDNfZDA3X2ZpbHRlcl9lbnZfYW10ICsKICAgIG1wLnNyYzQ0KGdhdGUpICogYW10X3M0NF9kMDdfZmlsdGVyX2Vudl9hbXQgKwogICAgbXAuc3JjNDUoZ2F0ZSkgKiBhbXRfczQ1X2QwN19maWx0ZXJfZW52X2FtdCArCiAgICBtcC5zcmM0NihnYXRlKSAqIGFtdF9zNDZfZDA3X2ZpbHRlcl9lbnZfYW10ICsKICAgIG1wLnNyYzQ3KGdhdGUpICogYW10X3M0N19kMDdfZmlsdGVyX2Vudl9hbXQ7Cgptb2RfYW1wKGdhdGUpID0KICAgIG1wLnNyYzAwKGdhdGUpICogYW10X3MwMF9kMDhfYW1wICsKICAgIG1wLnNyYzAxKGdhdGUpICogYW10X3MwMV9kMDhfYW1wICsKICAgIG1wLnNyYzAyKGdhdGUpICogYW10X3MwMl9kMDhfYW1wICsKICAgIG1wLnNyYzAzKGdhdGUpICogYW10X3MwM19kMDhfYW1wICsKICAgIG1wLnNyYzA0KGdhdGUpICogYW10X3MwNF9kMDhfYW1wICsKICAgIG1wLnNyYzA1KGdhdGUpICogYW10X3MwNV9kMDhfYW1wICsKICAgIG1wLnNyYzA2KGdhdGUpICogYW10X3MwNl9kMDhfYW1wICsKICAgIG1wLnNyYzA3KGdhdGUpICogYW10X3MwN19kMDhfYW1wICsKICAgIG1wLnNyYzA4KGdhdGUpICogYW10X3MwOF9kMDhfYW1wICsKICAgIG1wLnNyYzA5KGdhdGUpICogYW10X3MwOV9kMDhfYW1wICsKICAgIG1wLnNyYzEwKGdhdGUpICogYW10X3MxMF9kMDhfYW1wICsKICAgIG1wLnNyYzExKGdhdGUpICogYW10X3MxMV9kMDhfYW1wICsKICAgIG1wLnNyYzEyKGdhdGUpICogYW10X3MxMl9kMDhfYW1wICsKICAgIG1wLnNyYzEzKGdhdGUpICogYW10X3MxM19kMDhfYW1wICsKICAgIG1wLnNyYzE0KGdhdGUpICogYW10X3MxNF9kMDhfYW1wICsKICAgIG1wLnNyYzE1KGdhdGUpICogYW10X3MxNV9kMDhfYW1wICsKICAgIG1wLnNyYzE2KGdhdGUpICogYW10X3MxNl9kMDhfYW1wICsKICAgIG1wLnNyYzE3KGdhdGUpICogYW10X3MxN19kMDhfYW1wICsKICAgIG1wLnNyYzE4KGdhdGUpICogYW10X3MxOF9kMDhfYW1wICsKICAgIG1wLnNyYzE5KGdhdGUpICogYW10X3MxOV9kMDhfYW1wICsKICAgIG1wLnNyYzIwKGdhdGUpICogYW10X3MyMF9kMDhfYW1wICsKICAgIG1wLnNyYzIxKGdhdGUpICogYW10X3MyMV9kMDhfYW1wICsKICAgIG1wLnNyYzIyKGdhdGUpICogYW10X3MyMl9kMDhfYW1wICsKICAgIG1wLnNyYzIzKGdhdGUpICogYW10X3MyM19kMDhfYW1wICsKICAgIG1wLnNyYzI0KGdhdGUpICogYW10X3MyNF9kMDhfYW1wICsKICAgIG1wLnNyYzI1KGdhdGUpICogYW10X3MyNV9kMDhfYW1wICsKICAgIG1wLnNyYzI2KGdhdGUpICogYW10X3MyNl9kMDhfYW1wICsKICAgIG1wLnNyYzI3KGdhdGUpICogYW10X3MyN19kMDhfYW1wICsKICAgIG1wLnNyYzI4KGdhdGUpICogYW10X3MyOF9kMDhfYW1wICsKICAgIG1wLnNyYzI5KGdhdGUpICogYW10X3MyOV9kMDhfYW1wICsKICAgIG1wLnNyYzMwKGdhdGUpICogYW10X3MzMF9kMDhfYW1wICsKICAgIG1wLnNyYzMxKGdhdGUpICogYW10X3MzMV9kMDhfYW1wICsKICAgIG1wLnNyYzMyKGdhdGUpICogYW10X3MzMl9kMDhfYW1wICsKICAgIG1wLnNyYzMzKGdhdGUpICogYW10X3MzM19kMDhfYW1wICsKICAgIG1wLnNyYzM0KGdhdGUpICogYW10X3MzNF9kMDhfYW1wICsKICAgIG1wLnNyYzM1KGdhdGUpICogYW10X3MzNV9kMDhfYW1wICsKICAgIG1wLnNyYzM2KGdhdGUpICogYW10X3MzNl9kMDhfYW1wICsKICAgIG1wLnNyYzM3KGdhdGUpICogYW10X3MzN19kMDhfYW1wICsKICAgIG1wLnNyYzM4KGdhdGUpICogYW10X3MzOF9kMDhfYW1wICsKICAgIG1wLnNyYzM5KGdhdGUpICogYW10X3MzOV9kMDhfYW1wICsKICAgIG1wLnNyYzQwKGdhdGUpICogYW10X3M0MF9kMDhfYW1wICsKICAgIG1wLnNyYzQxKGdhdGUpICogYW10X3M0MV9kMDhfYW1wICsKICAgIG1wLnNyYzQyKGdhdGUpICogYW10X3M0Ml9kMDhfYW1wICsKICAgIG1wLnNyYzQzKGdhdGUpICogYW10X3M0M19kMDhfYW1wICsKICAgIG1wLnNyYzQ0KGdhdGUpICogYW10X3M0NF9kMDhfYW1wICsKICAgIG1wLnNyYzQ1KGdhdGUpICogYW10X3M0NV9kMDhfYW1wICsKICAgIG1wLnNyYzQ2KGdhdGUpICogYW10X3M0Nl9kMDhfYW1wICsKICAgIG1wLnNyYzQ3KGdhdGUpICogYW10X3M0N19kMDhfYW1wOwoKbW9kX3BhbihnYXRlKSA9CiAgICBtcC5zcmMwMChnYXRlKSAqIGFtdF9zMDBfZDA5X3BhbiArCiAgICBtcC5zcmMwMShnYXRlKSAqIGFtdF9zMDFfZDA5X3BhbiArCiAgICBtcC5zcmMwMihnYXRlKSAqIGFtdF9zMDJfZDA5X3BhbiArCiAgICBtcC5zcmMwMyhnYXRlKSAqIGFtdF9zMDNfZDA5X3BhbiArCiAgICBtcC5zcmMwNChnYXRlKSAqIGFtdF9zMDRfZDA5X3BhbiArCiAgICBtcC5zcmMwNShnYXRlKSAqIGFtdF9zMDVfZDA5X3BhbiArCiAgICBtcC5zcmMwNihnYXRlKSAqIGFtdF9zMDZfZDA5X3BhbiArCiAgICBtcC5zcmMwNyhnYXRlKSAqIGFtdF9zMDdfZDA5X3BhbiArCiAgICBtcC5zcmMwOChnYXRlKSAqIGFtdF9zMDhfZDA5X3BhbiArCiAgICBtcC5zcmMwOShnYXRlKSAqIGFtdF9zMDlfZDA5X3BhbiArCiAgICBtcC5zcmMxMChnYXRlKSAqIGFtdF9zMTBfZDA5X3BhbiArCiAgICBtcC5zcmMxMShnYXRlKSAqIGFtdF9zMTFfZDA5X3BhbiArCiAgICBtcC5zcmMxMihnYXRlKSAqIGFtdF9zMTJfZDA5X3BhbiArCiAgICBtcC5zcmMxMyhnYXRlKSAqIGFtdF9zMTNfZDA5X3BhbiArCiAgICBtcC5zcmMxNChnYXRlKSAqIGFtdF9zMTRfZDA5X3BhbiArCiAgICBtcC5zcmMxNShnYXRlKSAqIGFtdF9zMTVfZDA5X3BhbiArCiAgICBtcC5zcmMxNihnYXRlKSAqIGFtdF9zMTZfZDA5X3BhbiArCiAgICBtcC5zcmMxNyhnYXRlKSAqIGFtdF9zMTdfZDA5X3BhbiArCiAgICBtcC5zcmMxOChnYXRlKSAqIGFtdF9zMThfZDA5X3BhbiArCiAgICBtcC5zcmMxOShnYXRlKSAqIGFtdF9zMTlfZDA5X3BhbiArCiAgICBtcC5zcmMyMChnYXRlKSAqIGFtdF9zMjBfZDA5X3BhbiArCiAgICBtcC5zcmMyMShnYXRlKSAqIGFtdF9zMjFfZDA5X3BhbiArCiAgICBtcC5zcmMyMihnYXRlKSAqIGFtdF9zMjJfZDA5X3BhbiArCiAgICBtcC5zcmMyMyhnYXRlKSAqIGFtdF9zMjNfZDA5X3BhbiArCiAgICBtcC5zcmMyNChnYXRlKSAqIGFtdF9zMjRfZDA5X3BhbiArCiAgICBtcC5zcmMyNShnYXRlKSAqIGFtdF9zMjVfZDA5X3BhbiArCiAgICBtcC5zcmMyNihnYXRlKSAqIGFtdF9zMjZfZDA5X3BhbiArCiAgICBtcC5zcmMyNyhnYXRlKSAqIGFtdF9zMjdfZDA5X3BhbiArCiAgICBtcC5zcmMyOChnYXRlKSAqIGFtdF9zMjhfZDA5X3BhbiArCiAgICBtcC5zcmMyOShnYXRlKSAqIGFtdF9zMjlfZDA5X3BhbiArCiAgICBtcC5zcmMzMChnYXRlKSAqIGFtdF9zMzBfZDA5X3BhbiArCiAgICBtcC5zcmMzMShnYXRlKSAqIGFtdF9zMzFfZDA5X3BhbiArCiAgICBtcC5zcmMzMihnYXRlKSAqIGFtdF9zMzJfZDA5X3BhbiArCiAgICBtcC5zcmMzMyhnYXRlKSAqIGFtdF9zMzNfZDA5X3BhbiArCiAgICBtcC5zcmMzNChnYXRlKSAqIGFtdF9zMzRfZDA5X3BhbiArCiAgICBtcC5zcmMzNShnYXRlKSAqIGFtdF9zMzVfZDA5X3BhbiArCiAgICBtcC5zcmMzNihnYXRlKSAqIGFtdF9zMzZfZDA5X3BhbiArCiAgICBtcC5zcmMzNyhnYXRlKSAqIGFtdF9zMzdfZDA5X3BhbiArCiAgICBtcC5zcmMzOChnYXRlKSAqIGFtdF9zMzhfZDA5X3BhbiArCiAgICBtcC5zcmMzOShnYXRlKSAqIGFtdF9zMzlfZDA5X3BhbiArCiAgICBtcC5zcmM0MChnYXRlKSAqIGFtdF9zNDBfZDA5X3BhbiArCiAgICBtcC5zcmM0MShnYXRlKSAqIGFtdF9zNDFfZDA5X3BhbiArCiAgICBtcC5zcmM0MihnYXRlKSAqIGFtdF9zNDJfZDA5X3BhbiArCiAgICBtcC5zcmM0MyhnYXRlKSAqIGFtdF9zNDNfZDA5X3BhbiArCiAgICBtcC5zcmM0NChnYXRlKSAqIGFtdF9zNDRfZDA5X3BhbiArCiAgICBtcC5zcmM0NShnYXRlKSAqIGFtdF9zNDVfZDA5X3BhbiArCiAgICBtcC5zcmM0NihnYXRlKSAqIGFtdF9zNDZfZDA5X3BhbiArCiAgICBtcC5zcmM0NyhnYXRlKSAqIGFtdF9zNDdfZDA5X3BhbjsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBEZXJpdmVkIHNpZ25hbHMKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpjZW50MnJhdGlvKGMpID0gcG93KDIuMCwgYyAvIDEyMDAuMCk7Cm9jdDJyYXRpbyhvKSAgPSBwb3coMi4wLCBvKTsKc2VtaTJyYXRpbyhzKSA9IHBvdygyLjAsIHMgLyAxMi4wKTsKCi8vIFBvcnRhbWVudG8KZ2xpZGVfdGF1ICAgPSAwLjAwMDEgKyBtYXN0ZXJfZ2xpZGUgKiAxLjA7CmZyZXFfZ2xpZGVkID0gZnJlcSA6IHNpLnNtb290aChiYS50YXUycG9sZShnbGlkZV90YXUpKTsKCi8vIEJhc2UgKGdsaWRlICsgbWFzdGVyIGZpbmUgdHVuZSkKYmFzZV9mcmVxID0gZnJlcV9nbGlkZWQgKiBjZW50MnJhdGlvKG1hc3Rlcl90dW5lKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBQZXItb3NjaWxsYXRvciB3YXZldGFibGUgKHNhdyDihpIgdHJpIOKGkiBzcXVhcmUgY3Jvc3NmYWRlKQovLyAwLjAg4oaSIHNhdywgMC41IOKGkiB0cmlhbmdsZSwgMS4wIOKGkiBzcXVhcmUuIE91dHB1dCBpbiBbLTEsKzFdLgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kb3NjX3dhdmUoc2hhcGUsIGYpID0KICAgIGJhLmlmKHNoYXBlIDwgMC41LAogICAgICAgICAgKDEuMCAtIHNoYXBlKjIuMCkgKiBvcy5sZl9zYXcoZikgKyAoc2hhcGUqMi4wKSAqIG9zLmxmX3RyaWFuZ2xlKGYpLAogICAgICAgICAgKDEuMCAtIChzaGFwZS0wLjUpKjIuMCkgKiBvcy5sZl90cmlhbmdsZShmKSArICgoc2hhcGUtMC41KSoyLjApICogb3MubGZfc3F1YXJld2F2ZShmKSk7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gT3NjaWxsYXRvciBmcmVxdWVuY2llcyAocGl0Y2ggbW9kdWxhdGlvbjogMSB1bml0ID0gMTIgc2VtaXRvbmVzKQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KcGl0Y2hfcmF0aW8gPSBzZW1pMnJhdGlvKG1vZF9waXRjaChnYXRlKSAqIDEyLjApOwoKb3NjMV9mcmVxID0gYmFzZV9mcmVxICogb2N0MnJhdGlvKG9zYzFfcmFuZ2UpICogcGl0Y2hfcmF0aW87Cm9zYzJfZnJlcSA9IGJhc2VfZnJlcSAqIG9jdDJyYXRpbyhvc2MyX3JhbmdlKSAqIHBpdGNoX3JhdGlvCiAgICAgICAgICAqIGNlbnQycmF0aW8ob3NjMl9kZXR1bmUgKyBtb2Rfb3NjMl9kZXR1bmUoZ2F0ZSkgKiA1MC4wKTsKb3NjM19mcmVxX3RyYWNrZWQgICA9IGJhc2VfZnJlcSAqIG9jdDJyYXRpbyhvc2MzX3JhbmdlKSAqIHBpdGNoX3JhdGlvCiAgICAgICAgICAgICAgICAgICAgKiBjZW50MnJhdGlvKG9zYzNfZGV0dW5lICsgbW9kX29zYzNfZGV0dW5lKGdhdGUpICogNTAuMCk7Ci8vIFdoZW4ga2JfdHJhY2s9MCwgb3NjMyBiZWNvbWVzIGEgZnJlZS1ydW5uaW5nIHN1Yi9MRk8gc291cmNlIGF0IH41NSBIeiAqIG9jdApvc2MzX2ZyZXFfdW50cmFja2VkID0gNTUuMCAqIG9jdDJyYXRpbyhvc2MzX3JhbmdlKQogICAgICAgICAgICAgICAgICAgICogY2VudDJyYXRpbyhvc2MzX2RldHVuZSArIG1vZF9vc2MzX2RldHVuZShnYXRlKSAqIDUwLjApOwpvc2MzX2ZyZXEgPSBvc2MzX2tiX3RyYWNrICogb3NjM19mcmVxX3RyYWNrZWQgKyAoMS4wIC0gb3NjM19rYl90cmFjaykgKiBvc2MzX2ZyZXFfdW50cmFja2VkOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIE9zY2lsbGF0b3JzCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpvMSA9IG9zY193YXZlKG9zYzFfd2F2ZSwgb3NjMV9mcmVxKTsKbzIgPSBvc2Nfd2F2ZShvc2MyX3dhdmUsIG9zYzJfZnJlcSk7Cm8zID0gb3NjX3dhdmUob3NjM193YXZlLCBvc2MzX2ZyZXEpOwoKLy8gT3NjIG1peCBiYWxhbmNlOiAtMSA9IGFsbCBvc2MxLCArMSA9IGFsbCBvc2MzLCAwID0gYm90aCBlcXVhbC4gb3NjMiB1bmFmZmVjdGVkLgptaXhfYmFsID0gbWF4KC0xLjAsIG1pbigxLjAsIG1vZF9vc2NfbWl4X2JhbChnYXRlKSkpOwptaXhfdCAgID0gKG1peF9iYWwgKyAxLjApICogMC41OyAgIC8vIDAuLjEKd19vMSAgICA9IDEuMCAtIG1peF90Owp3X28zICAgID0gbWl4X3Q7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gTm9pc2U6IHdoaXRlIChub2lzZV90eXBlPDAuNSkgLyBwaW5rIChlbHNlKQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kd2hpdGVfbm9pc2UgPSBuby5ub2lzZTsKcGlua19ub2lzZSAgPSBuby5waW5rX25vaXNlOwpub2lzZV9yYXcgICA9IGJhLmlmKG5vaXNlX3R5cGUgPCAwLjUsIHdoaXRlX25vaXNlLCBwaW5rX25vaXNlKTsKbm9pc2VfbHZsICAgPSBtYXgoMC4wLCBtaW4oMS4wLCBub2lzZV9sZXZlbCArIG1vZF9ub2lzZV9sZXZlbChnYXRlKSkpOwoKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIE1peGVyIHN1bQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KbWl4X3N1bSA9CiAgICBvMSAqIG9zYzFfbGV2ZWwgKiB3X28xCiAgKyBvMiAqIG9zYzJfbGV2ZWwKICArIG8zICogb3NjM19sZXZlbCAqIHdfbzMKICArIG5vaXNlX3JhdyAqIG5vaXNlX2x2bDsKCm1peF9kcml2ZW4gPSBtYS50YW5oKG1peF9zdW0gKiBtaXhlcl9kcml2ZSk7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gRmlsdGVyIOKAlCBNb29nIGxhZGRlci4gQ3V0b2ZmIGlzIG1vZHVsYXRlZCBpbiBvY3RhdmVzICjCsTUgb2N0IHBlciBtb2QgdW5pdCkuCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjdXRvZmZfbW9kX29jdCA9IChtb2RfY3V0b2ZmKGdhdGUpICsgbW9kX2ZpbHRlcl9lbnZfYW10KGdhdGUpKSAqIDUuMDsKa2Jfc2NhbGUgICAgICAgPSBwb3coZnJlcV9nbGlkZWQgLyA0NDAuMCwgZmlsdGVyX2tiKTsgIC8vIDEuMCBhdCBBNCB3aGVuIGtiPTEKZWZmX2N1dG9mZl9yYXcgPSBjdXRvZmYgKiBrYl9zY2FsZSAqIG9jdDJyYXRpbyhjdXRvZmZfbW9kX29jdCk7CmVmZl9jdXRvZmYgICAgID0gbWF4KDIwLjAsIG1pbigxODAwMC4wLCBlZmZfY3V0b2ZmX3JhdykpOwplZmZfcmVzICAgICAgICA9IG1heCgwLjAsIG1pbigwLjk5LCByZXNvbmFuY2UgKyBtb2RfcmVzb25hbmNlKGdhdGUpKSk7CgpmaWx0ZXJlZCA9IG1peF9kcml2ZW4gOiB2ZS5tb29nX3ZjZihlZmZfcmVzLCBlZmZfY3V0b2ZmKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBBbXAgYW5kIHBhbgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gVmVsb2NpdHkgZ2FpbjogYmxlbmQgMS4wIChubyB2ZWxvY2l0eSkgLT4gdmVsLiBSZWZlcmVuY2VkIGhlcmUgc28gRmF1c3QKLy8ga2VlcHMgdGhlIF92ZWwgaGlkZGVuIHBhcmFtIGFsaXZlIGluIHRoZSBKU09OIGRlc2NyaXB0b3IuCnZlbF9nYWluID0gKDEuMCAtIDAuMykgKyAwLjMgKiB2ZWw7ICAvLyAzMCUgdmVsb2NpdHkgc2Vuc2l0aXZpdHksIGZpeGVkCmFtcF92YWwgPSBtYXgoMC4wLCBtaW4oMS4wLCBtb2RfYW1wKGdhdGUpKSkgKiBtYXN0ZXJfbGV2ZWwgKiB2ZWxfZ2FpbjsKcGFuX3ZhbCA9IG1heCgtMS4wLCBtaW4oMS4wLCBtYXN0ZXJfcGFuICsgbW9kX3BhbihnYXRlKSkpOwoKLy8gZXF1YWwtcG93ZXIgcGFuCnBhbl9sID0gY29zKChwYW5fdmFsICsgMS4wKSAqIDAuMjUgKiBtYS5QSSk7CnBhbl9yID0gc2luKChwYW5fdmFsICsgMS4wKSAqIDAuMjUgKiBtYS5QSSk7CgpzaWduYWwgPSBmaWx0ZXJlZCAqIGFtcF92YWw7CnNpZ25hbF9MID0gc2lnbmFsICogcGFuX2w7CnNpZ25hbF9SID0gc2lnbmFsICogcGFuX3I7Cgpwcm9jZXNzID0gc2lnbmFsX0wsIHNpZ25hbF9SOwo=","inputs": 0,"outputs": 2,"meta": [ { "basics.lib/name": "Faust Basic Element Library" },{ "basics.lib/version": "1.21.0" },{ "compile_options": "-lang wasm -ct 1 -cn modular_subtractive -es 1 -mcd 16 -mdd 1024 -mdy 33 -single -ftz 0" },{ "envelopes.lib/adsr:author": "Yann Orlarey and Andrey Bundin" },{ "envelopes.lib/author": "GRAME" },{ "envelopes.lib/copyright": "GRAME" },{ "envelopes.lib/license": "LGPL with exception" },{ "envelopes.lib/name": "Faust Envelope Library" },{ "envelopes.lib/version": "1.3.0" },{ "filename": "modular-subtractive.dsp" },{ "filters.lib/fir:author": "Julius O. Smith III" },{ "filters.lib/fir:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/fir:license": "MIT-style STK-4.3 license" },{ "filters.lib/iir:author": "Julius O. Smith III" },{ "filters.lib/iir:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/iir:license": "MIT-style STK-4.3 license" },{ "filters.lib/lowpass0_highpass1": "MIT-style STK-4.3 license" },{ "filters.lib/name": "Faust Filters Library" },{ "filters.lib/pole:author": "Julius O. Smith III" },{ "filters.lib/pole:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "filters.lib/pole:license": "MIT-style STK-4.3 license" },{ "filters.lib/version": "1.7.1" },{ "maths.lib/author": "GRAME" },{ "maths.lib/copyright": "GRAME" },{ "maths.lib/license": "LGPL with exception" },{ "maths.lib/name": "Faust Math Library" },{ "maths.lib/version": "2.8.1" },{ "name": "modular-subtractive" },{ "noises.lib/name": "Faust Noise Generator Library" },{ "noises.lib/version": "1.4.1" },{ "oscillators.lib/lf_sawpos:author": "Bart Brouns, revised by Stéphane Letz" },{ "oscillators.lib/lf_sawpos:licence": "STK-4.3" },{ "oscillators.lib/lf_triangle:author": "Bart Brouns" },{ "oscillators.lib/lf_triangle:licence": "STK-4.3" },{ "oscillators.lib/name": "Faust Oscillator Library" },{ "oscillators.lib/saw1:author": "Bart Brouns" },{ "oscillators.lib/saw1:licence": "STK-4.3" },{ "oscillators.lib/version": "1.6.0" },{ "platform.lib/name": "Generic Platform Library" },{ "platform.lib/version": "1.3.0" },{ "signals.lib/name": "Faust Signal Routing Library" },{ "signals.lib/version": "1.6.0" },{ "vaeffects.lib/moog_vcf:author": "Julius O. Smith III" },{ "vaeffects.lib/moog_vcf:copyright": "Copyright (C) 2003-2019 by Julius O. Smith III " },{ "vaeffects.lib/moog_vcf:license": "MIT-style STK-4.3 license" },{ "vaeffects.lib/name": "Faust Virtual Analog Filter Effect Library" },{ "vaeffects.lib/version": "1.3.0" }],"ui": [ {"type": "vgroup","label": "modular-subtractive","items": [ {"type": "hslider","label": "0_Hidden/_vel","varname": "fHslider225","shortname": "0_Hidden_vel","address": "/modular-subtractive/0_Hidden__vel","index": 263356,"meta": [{ "hidden": "1" }],"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "0_Hidden/freq","varname": "fHslider371","shortname": "0_Hidden_freq","address": "/modular-subtractive/0_Hidden_freq","index": 263948,"meta": [{ "hidden": "1" },{ "unit": "Hz" }],"init": 220,"min": 20,"max": 4000,"step": 0.01},{"type": "button","label": "0_Hidden/gate","varname": "fButton0","shortname": "0_Hidden_gate","address": "/modular-subtractive/0_Hidden_gate","index": 262932,"meta": [{ "hidden": "1" }]},{"type": "hslider","label": "1_Oscillators/00_osc1_wave","varname": "fHslider675","shortname": "1_Oscillators_00_osc1_wave","address": "/modular-subtractive/1_Oscillators_00_osc1_wave","index": 265216,"meta": [{ "tooltip": "0=saw,0.5=tri,1=square" }],"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Oscillators/01_osc1_range","varname": "fHslider676","shortname": "1_Oscillators_01_osc1_range","address": "/modular-subtractive/1_Oscillators_01_osc1_range","index": 265220,"meta": [{ "unit": "oct" }],"init": 0,"min": -2,"max": 2,"step": 0.01},{"type": "hslider","label": "1_Oscillators/02_osc1_level","varname": "fHslider677","shortname": "1_Oscillators_02_osc1_level","address": "/modular-subtractive/1_Oscillators_02_osc1_level","index": 265232,"init": 0.8,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Oscillators/03_osc2_wave","varname": "fHslider623","shortname": "1_Oscillators_03_osc2_wave","address": "/modular-subtractive/1_Oscillators_03_osc2_wave","index": 265000,"meta": [{ "tooltip": "0=saw,0.5=tri,1=square" }],"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Oscillators/04_osc2_range","varname": "fHslider673","shortname": "1_Oscillators_04_osc2_range","address": "/modular-subtractive/1_Oscillators_04_osc2_range","index": 265200,"meta": [{ "unit": "oct" }],"init": 0,"min": -2,"max": 2,"step": 0.01},{"type": "hslider","label": "1_Oscillators/05_osc2_detune","varname": "fHslider672","shortname": "1_Oscillators_05_osc2_detune","address": "/modular-subtractive/1_Oscillators_05_osc2_detune","index": 265196,"meta": [{ "unit": "ct" }],"init": 0,"min": -50,"max": 50,"step": 0.1},{"type": "hslider","label": "1_Oscillators/06_osc2_level","varname": "fHslider674","shortname": "1_Oscillators_06_osc2_level","address": "/modular-subtractive/1_Oscillators_06_osc2_level","index": 265212,"init": 0.6,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Oscillators/07_osc3_wave","varname": "fHslider473","shortname": "1_Oscillators_07_osc3_wave","address": "/modular-subtractive/1_Oscillators_07_osc3_wave","index": 264392,"meta": [{ "tooltip": "0=saw,0.5=tri,1=square" }],"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Oscillators/08_osc3_range","varname": "fHslider573","shortname": "1_Oscillators_08_osc3_range","address": "/modular-subtractive/1_Oscillators_08_osc3_range","index": 264792,"meta": [{ "unit": "oct" }],"init": -1,"min": -2,"max": 2,"step": 0.01},{"type": "hslider","label": "1_Oscillators/09_osc3_detune","varname": "fHslider572","shortname": "1_Oscillators_09_osc3_detune","address": "/modular-subtractive/1_Oscillators_09_osc3_detune","index": 264788,"meta": [{ "unit": "ct" }],"init": 0,"min": -50,"max": 50,"step": 0.1},{"type": "hslider","label": "1_Oscillators/10_osc3_level","varname": "fHslider622","shortname": "1_Oscillators_10_osc3_level","address": "/modular-subtractive/1_Oscillators_10_osc3_level","index": 264996,"init": 0.4,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "1_Oscillators/11_osc3_kb_track","varname": "fHslider523","shortname": "1_Oscillators_11_osc3_kb_track","address": "/modular-subtractive/1_Oscillators_11_osc3_kb_track","index": 264592,"meta": [{ "tooltip": "1=tracks keyboard,0=LFO" }],"init": 1,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "2_Mixer/00_noise_type","varname": "fHslider472","shortname": "2_Mixer_00_noise_type","address": "/modular-subtractive/2_Mixer_00_noise_type","index": 264364,"meta": [{ "tooltip": "0=white,1=pink" }],"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "2_Mixer/01_noise_level","varname": "fHslider471","shortname": "2_Mixer_01_noise_level","address": "/modular-subtractive/2_Mixer_01_noise_level","index": 264360,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "2_Mixer/02_mixer_drive","varname": "fHslider678","shortname": "2_Mixer_02_mixer_drive","address": "/modular-subtractive/2_Mixer_02_mixer_drive","index": 265236,"meta": [{ "tooltip": "Pre-filter overdrive" }],"init": 1,"min": 0.5,"max": 4,"step": 0.001},{"type": "hslider","label": "3_Filter/00_cutoff","varname": "fHslider373","shortname": "3_Filter_00_cutoff","address": "/modular-subtractive/3_Filter_00_cutoff","index": 263964,"meta": [{ "scale": "log" },{ "unit": "Hz" }],"init": 1200,"min": 20,"max": 20000,"step": 0.1},{"type": "hslider","label": "3_Filter/01_resonance","varname": "fHslider422","shortname": "3_Filter_01_resonance","address": "/modular-subtractive/3_Filter_01_resonance","index": 264164,"init": 0.3,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "3_Filter/02_filter_kb_track","varname": "fHslider372","shortname": "3_Filter_02_filter_kb_track","address": "/modular-subtractive/3_Filter_02_filter_kb_track","index": 263960,"init": 0.5,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "4_Master/00_master_level","varname": "fHslider679","shortname": "4_Master_00_master_level","address": "/modular-subtractive/4_Master_00_master_level","index": 265280,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "4_Master/01_master_glide","varname": "fHslider370","shortname": "4_Master_01_master_glide","address": "/modular-subtractive/4_Master_01_master_glide","index": 263944,"meta": [{ "scale": "log" },{ "unit": "s" }],"init": 0,"min": 0,"max": 2,"step": 0.001},{"type": "hslider","label": "4_Master/02_master_tune","varname": "fHslider522","shortname": "4_Master_02_master_tune","address": "/modular-subtractive/4_Master_02_master_tune","index": 264588,"meta": [{ "unit": "ct" }],"init": 0,"min": -50,"max": 50,"step": 0.1},{"type": "hslider","label": "4_Master/03_master_pan","varname": "fHslider224","shortname": "4_Master_03_master_pan","address": "/modular-subtractive/4_Master_03_master_pan","index": 263344,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/00_adsr01_attack","varname": "fHslider219","shortname": "MM_ADSR_00_adsr01_attack","address": "/modular-subtractive/MM_ADSR_00_adsr01_attack","index": 263324,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/00_adsr01_decay","varname": "fHslider220","shortname": "MM_ADSR_00_adsr01_decay","address": "/modular-subtractive/MM_ADSR_00_adsr01_decay","index": 263328,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/00_adsr01_enable","varname": "fHslider223","shortname": "MM_ADSR_00_adsr01_enable","address": "/modular-subtractive/MM_ADSR_00_adsr01_enable","index": 263340,"init": 1,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/00_adsr01_release","varname": "fHslider218","shortname": "MM_ADSR_00_adsr01_release","address": "/modular-subtractive/MM_ADSR_00_adsr01_release","index": 263320,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/00_adsr01_sustain","varname": "fHslider221","shortname": "MM_ADSR_00_adsr01_sustain","address": "/modular-subtractive/MM_ADSR_00_adsr01_sustain","index": 263332,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/01_adsr02_attack","varname": "fHslider213","shortname": "MM_ADSR_01_adsr02_attack","address": "/modular-subtractive/MM_ADSR_01_adsr02_attack","index": 263300,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/01_adsr02_decay","varname": "fHslider214","shortname": "MM_ADSR_01_adsr02_decay","address": "/modular-subtractive/MM_ADSR_01_adsr02_decay","index": 263304,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/01_adsr02_enable","varname": "fHslider217","shortname": "MM_ADSR_01_adsr02_enable","address": "/modular-subtractive/MM_ADSR_01_adsr02_enable","index": 263316,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/01_adsr02_release","varname": "fHslider212","shortname": "MM_ADSR_01_adsr02_release","address": "/modular-subtractive/MM_ADSR_01_adsr02_release","index": 263296,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/01_adsr02_sustain","varname": "fHslider215","shortname": "MM_ADSR_01_adsr02_sustain","address": "/modular-subtractive/MM_ADSR_01_adsr02_sustain","index": 263308,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/02_adsr03_attack","varname": "fHslider207","shortname": "MM_ADSR_02_adsr03_attack","address": "/modular-subtractive/MM_ADSR_02_adsr03_attack","index": 263276,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/02_adsr03_decay","varname": "fHslider208","shortname": "MM_ADSR_02_adsr03_decay","address": "/modular-subtractive/MM_ADSR_02_adsr03_decay","index": 263280,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/02_adsr03_enable","varname": "fHslider211","shortname": "MM_ADSR_02_adsr03_enable","address": "/modular-subtractive/MM_ADSR_02_adsr03_enable","index": 263292,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/02_adsr03_release","varname": "fHslider206","shortname": "MM_ADSR_02_adsr03_release","address": "/modular-subtractive/MM_ADSR_02_adsr03_release","index": 263272,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/02_adsr03_sustain","varname": "fHslider209","shortname": "MM_ADSR_02_adsr03_sustain","address": "/modular-subtractive/MM_ADSR_02_adsr03_sustain","index": 263284,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/03_adsr04_attack","varname": "fHslider201","shortname": "MM_ADSR_03_adsr04_attack","address": "/modular-subtractive/MM_ADSR_03_adsr04_attack","index": 263252,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/03_adsr04_decay","varname": "fHslider202","shortname": "MM_ADSR_03_adsr04_decay","address": "/modular-subtractive/MM_ADSR_03_adsr04_decay","index": 263256,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/03_adsr04_enable","varname": "fHslider205","shortname": "MM_ADSR_03_adsr04_enable","address": "/modular-subtractive/MM_ADSR_03_adsr04_enable","index": 263268,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/03_adsr04_release","varname": "fHslider200","shortname": "MM_ADSR_03_adsr04_release","address": "/modular-subtractive/MM_ADSR_03_adsr04_release","index": 263248,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/03_adsr04_sustain","varname": "fHslider203","shortname": "MM_ADSR_03_adsr04_sustain","address": "/modular-subtractive/MM_ADSR_03_adsr04_sustain","index": 263260,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/04_adsr05_attack","varname": "fHslider195","shortname": "MM_ADSR_04_adsr05_attack","address": "/modular-subtractive/MM_ADSR_04_adsr05_attack","index": 263228,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/04_adsr05_decay","varname": "fHslider196","shortname": "MM_ADSR_04_adsr05_decay","address": "/modular-subtractive/MM_ADSR_04_adsr05_decay","index": 263232,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/04_adsr05_enable","varname": "fHslider199","shortname": "MM_ADSR_04_adsr05_enable","address": "/modular-subtractive/MM_ADSR_04_adsr05_enable","index": 263244,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/04_adsr05_release","varname": "fHslider194","shortname": "MM_ADSR_04_adsr05_release","address": "/modular-subtractive/MM_ADSR_04_adsr05_release","index": 263224,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/04_adsr05_sustain","varname": "fHslider197","shortname": "MM_ADSR_04_adsr05_sustain","address": "/modular-subtractive/MM_ADSR_04_adsr05_sustain","index": 263236,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/05_adsr06_attack","varname": "fHslider189","shortname": "MM_ADSR_05_adsr06_attack","address": "/modular-subtractive/MM_ADSR_05_adsr06_attack","index": 263204,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/05_adsr06_decay","varname": "fHslider190","shortname": "MM_ADSR_05_adsr06_decay","address": "/modular-subtractive/MM_ADSR_05_adsr06_decay","index": 263208,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/05_adsr06_enable","varname": "fHslider193","shortname": "MM_ADSR_05_adsr06_enable","address": "/modular-subtractive/MM_ADSR_05_adsr06_enable","index": 263220,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/05_adsr06_release","varname": "fHslider188","shortname": "MM_ADSR_05_adsr06_release","address": "/modular-subtractive/MM_ADSR_05_adsr06_release","index": 263200,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/05_adsr06_sustain","varname": "fHslider191","shortname": "MM_ADSR_05_adsr06_sustain","address": "/modular-subtractive/MM_ADSR_05_adsr06_sustain","index": 263212,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/06_adsr07_attack","varname": "fHslider183","shortname": "MM_ADSR_06_adsr07_attack","address": "/modular-subtractive/MM_ADSR_06_adsr07_attack","index": 263180,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/06_adsr07_decay","varname": "fHslider184","shortname": "MM_ADSR_06_adsr07_decay","address": "/modular-subtractive/MM_ADSR_06_adsr07_decay","index": 263184,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/06_adsr07_enable","varname": "fHslider187","shortname": "MM_ADSR_06_adsr07_enable","address": "/modular-subtractive/MM_ADSR_06_adsr07_enable","index": 263196,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/06_adsr07_release","varname": "fHslider182","shortname": "MM_ADSR_06_adsr07_release","address": "/modular-subtractive/MM_ADSR_06_adsr07_release","index": 263176,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/06_adsr07_sustain","varname": "fHslider185","shortname": "MM_ADSR_06_adsr07_sustain","address": "/modular-subtractive/MM_ADSR_06_adsr07_sustain","index": 263188,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/07_adsr08_attack","varname": "fHslider177","shortname": "MM_ADSR_07_adsr08_attack","address": "/modular-subtractive/MM_ADSR_07_adsr08_attack","index": 263156,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/07_adsr08_decay","varname": "fHslider178","shortname": "MM_ADSR_07_adsr08_decay","address": "/modular-subtractive/MM_ADSR_07_adsr08_decay","index": 263160,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/07_adsr08_enable","varname": "fHslider181","shortname": "MM_ADSR_07_adsr08_enable","address": "/modular-subtractive/MM_ADSR_07_adsr08_enable","index": 263172,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/07_adsr08_release","varname": "fHslider176","shortname": "MM_ADSR_07_adsr08_release","address": "/modular-subtractive/MM_ADSR_07_adsr08_release","index": 263152,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/07_adsr08_sustain","varname": "fHslider179","shortname": "MM_ADSR_07_adsr08_sustain","address": "/modular-subtractive/MM_ADSR_07_adsr08_sustain","index": 263164,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/08_adsr09_attack","varname": "fHslider171","shortname": "MM_ADSR_08_adsr09_attack","address": "/modular-subtractive/MM_ADSR_08_adsr09_attack","index": 263132,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/08_adsr09_decay","varname": "fHslider172","shortname": "MM_ADSR_08_adsr09_decay","address": "/modular-subtractive/MM_ADSR_08_adsr09_decay","index": 263136,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/08_adsr09_enable","varname": "fHslider175","shortname": "MM_ADSR_08_adsr09_enable","address": "/modular-subtractive/MM_ADSR_08_adsr09_enable","index": 263148,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/08_adsr09_release","varname": "fHslider170","shortname": "MM_ADSR_08_adsr09_release","address": "/modular-subtractive/MM_ADSR_08_adsr09_release","index": 263128,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/08_adsr09_sustain","varname": "fHslider173","shortname": "MM_ADSR_08_adsr09_sustain","address": "/modular-subtractive/MM_ADSR_08_adsr09_sustain","index": 263140,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/09_adsr10_attack","varname": "fHslider165","shortname": "MM_ADSR_09_adsr10_attack","address": "/modular-subtractive/MM_ADSR_09_adsr10_attack","index": 263108,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/09_adsr10_decay","varname": "fHslider166","shortname": "MM_ADSR_09_adsr10_decay","address": "/modular-subtractive/MM_ADSR_09_adsr10_decay","index": 263112,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/09_adsr10_enable","varname": "fHslider169","shortname": "MM_ADSR_09_adsr10_enable","address": "/modular-subtractive/MM_ADSR_09_adsr10_enable","index": 263124,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/09_adsr10_release","varname": "fHslider164","shortname": "MM_ADSR_09_adsr10_release","address": "/modular-subtractive/MM_ADSR_09_adsr10_release","index": 263104,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/09_adsr10_sustain","varname": "fHslider167","shortname": "MM_ADSR_09_adsr10_sustain","address": "/modular-subtractive/MM_ADSR_09_adsr10_sustain","index": 263116,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/10_adsr11_attack","varname": "fHslider159","shortname": "MM_ADSR_10_adsr11_attack","address": "/modular-subtractive/MM_ADSR_10_adsr11_attack","index": 263084,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/10_adsr11_decay","varname": "fHslider160","shortname": "MM_ADSR_10_adsr11_decay","address": "/modular-subtractive/MM_ADSR_10_adsr11_decay","index": 263088,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/10_adsr11_enable","varname": "fHslider163","shortname": "MM_ADSR_10_adsr11_enable","address": "/modular-subtractive/MM_ADSR_10_adsr11_enable","index": 263100,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/10_adsr11_release","varname": "fHslider158","shortname": "MM_ADSR_10_adsr11_release","address": "/modular-subtractive/MM_ADSR_10_adsr11_release","index": 263080,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/10_adsr11_sustain","varname": "fHslider161","shortname": "MM_ADSR_10_adsr11_sustain","address": "/modular-subtractive/MM_ADSR_10_adsr11_sustain","index": 263092,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/11_adsr12_attack","varname": "fHslider153","shortname": "MM_ADSR_11_adsr12_attack","address": "/modular-subtractive/MM_ADSR_11_adsr12_attack","index": 263060,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/11_adsr12_decay","varname": "fHslider154","shortname": "MM_ADSR_11_adsr12_decay","address": "/modular-subtractive/MM_ADSR_11_adsr12_decay","index": 263064,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/11_adsr12_enable","varname": "fHslider157","shortname": "MM_ADSR_11_adsr12_enable","address": "/modular-subtractive/MM_ADSR_11_adsr12_enable","index": 263076,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/11_adsr12_release","varname": "fHslider152","shortname": "MM_ADSR_11_adsr12_release","address": "/modular-subtractive/MM_ADSR_11_adsr12_release","index": 263056,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/11_adsr12_sustain","varname": "fHslider155","shortname": "MM_ADSR_11_adsr12_sustain","address": "/modular-subtractive/MM_ADSR_11_adsr12_sustain","index": 263068,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/12_adsr13_attack","varname": "fHslider147","shortname": "MM_ADSR_12_adsr13_attack","address": "/modular-subtractive/MM_ADSR_12_adsr13_attack","index": 263036,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/12_adsr13_decay","varname": "fHslider148","shortname": "MM_ADSR_12_adsr13_decay","address": "/modular-subtractive/MM_ADSR_12_adsr13_decay","index": 263040,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/12_adsr13_enable","varname": "fHslider151","shortname": "MM_ADSR_12_adsr13_enable","address": "/modular-subtractive/MM_ADSR_12_adsr13_enable","index": 263052,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/12_adsr13_release","varname": "fHslider146","shortname": "MM_ADSR_12_adsr13_release","address": "/modular-subtractive/MM_ADSR_12_adsr13_release","index": 263032,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/12_adsr13_sustain","varname": "fHslider149","shortname": "MM_ADSR_12_adsr13_sustain","address": "/modular-subtractive/MM_ADSR_12_adsr13_sustain","index": 263044,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/13_adsr14_attack","varname": "fHslider141","shortname": "MM_ADSR_13_adsr14_attack","address": "/modular-subtractive/MM_ADSR_13_adsr14_attack","index": 263012,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/13_adsr14_decay","varname": "fHslider142","shortname": "MM_ADSR_13_adsr14_decay","address": "/modular-subtractive/MM_ADSR_13_adsr14_decay","index": 263016,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/13_adsr14_enable","varname": "fHslider145","shortname": "MM_ADSR_13_adsr14_enable","address": "/modular-subtractive/MM_ADSR_13_adsr14_enable","index": 263028,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/13_adsr14_release","varname": "fHslider140","shortname": "MM_ADSR_13_adsr14_release","address": "/modular-subtractive/MM_ADSR_13_adsr14_release","index": 263008,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/13_adsr14_sustain","varname": "fHslider143","shortname": "MM_ADSR_13_adsr14_sustain","address": "/modular-subtractive/MM_ADSR_13_adsr14_sustain","index": 263020,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/14_adsr15_attack","varname": "fHslider135","shortname": "MM_ADSR_14_adsr15_attack","address": "/modular-subtractive/MM_ADSR_14_adsr15_attack","index": 262988,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/14_adsr15_decay","varname": "fHslider136","shortname": "MM_ADSR_14_adsr15_decay","address": "/modular-subtractive/MM_ADSR_14_adsr15_decay","index": 262992,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/14_adsr15_enable","varname": "fHslider139","shortname": "MM_ADSR_14_adsr15_enable","address": "/modular-subtractive/MM_ADSR_14_adsr15_enable","index": 263004,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/14_adsr15_release","varname": "fHslider134","shortname": "MM_ADSR_14_adsr15_release","address": "/modular-subtractive/MM_ADSR_14_adsr15_release","index": 262984,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/14_adsr15_sustain","varname": "fHslider137","shortname": "MM_ADSR_14_adsr15_sustain","address": "/modular-subtractive/MM_ADSR_14_adsr15_sustain","index": 262996,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_ADSR/15_adsr16_attack","varname": "fHslider129","shortname": "MM_ADSR_15_adsr16_attack","address": "/modular-subtractive/MM_ADSR_15_adsr16_attack","index": 262964,"meta": [{ "scale": "log" }],"init": 0.01,"min": 0.001,"max": 5,"step": 0.001},{"type": "hslider","label": "MM_ADSR/15_adsr16_decay","varname": "fHslider130","shortname": "MM_ADSR_15_adsr16_decay","address": "/modular-subtractive/MM_ADSR_15_adsr16_decay","index": 262968,"init": 0.2,"min": 0.001,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/15_adsr16_enable","varname": "fHslider133","shortname": "MM_ADSR_15_adsr16_enable","address": "/modular-subtractive/MM_ADSR_15_adsr16_enable","index": 262980,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_ADSR/15_adsr16_release","varname": "fHslider128","shortname": "MM_ADSR_15_adsr16_release","address": "/modular-subtractive/MM_ADSR_15_adsr16_release","index": 262952,"init": 0.3,"min": 0.01,"max": 10,"step": 0.001},{"type": "hslider","label": "MM_ADSR/15_adsr16_sustain","varname": "fHslider131","shortname": "MM_ADSR_15_adsr16_sustain","address": "/modular-subtractive/MM_ADSR_15_adsr16_sustain","index": 262972,"init": 0.7,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/00_lfo01_enable","varname": "fHslider127","shortname": "MM_LFO_00_lfo01_enable","address": "/modular-subtractive/MM_LFO_00_lfo01_enable","index": 262928,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/00_lfo01_morph","varname": "fHslider124","shortname": "MM_LFO_00_lfo01_morph","address": "/modular-subtractive/MM_LFO_00_lfo01_morph","index": 262908,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/00_lfo01_rate","varname": "fHslider125","shortname": "MM_LFO_00_lfo01_rate","address": "/modular-subtractive/MM_LFO_00_lfo01_rate","index": 262912,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/01_lfo02_enable","varname": "fHslider123","shortname": "MM_LFO_01_lfo02_enable","address": "/modular-subtractive/MM_LFO_01_lfo02_enable","index": 262904,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/01_lfo02_morph","varname": "fHslider120","shortname": "MM_LFO_01_lfo02_morph","address": "/modular-subtractive/MM_LFO_01_lfo02_morph","index": 262884,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/01_lfo02_rate","varname": "fHslider121","shortname": "MM_LFO_01_lfo02_rate","address": "/modular-subtractive/MM_LFO_01_lfo02_rate","index": 262888,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/02_lfo03_enable","varname": "fHslider119","shortname": "MM_LFO_02_lfo03_enable","address": "/modular-subtractive/MM_LFO_02_lfo03_enable","index": 262880,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/02_lfo03_morph","varname": "fHslider116","shortname": "MM_LFO_02_lfo03_morph","address": "/modular-subtractive/MM_LFO_02_lfo03_morph","index": 262860,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/02_lfo03_rate","varname": "fHslider117","shortname": "MM_LFO_02_lfo03_rate","address": "/modular-subtractive/MM_LFO_02_lfo03_rate","index": 262864,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/03_lfo04_enable","varname": "fHslider115","shortname": "MM_LFO_03_lfo04_enable","address": "/modular-subtractive/MM_LFO_03_lfo04_enable","index": 262856,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/03_lfo04_morph","varname": "fHslider112","shortname": "MM_LFO_03_lfo04_morph","address": "/modular-subtractive/MM_LFO_03_lfo04_morph","index": 262836,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/03_lfo04_rate","varname": "fHslider113","shortname": "MM_LFO_03_lfo04_rate","address": "/modular-subtractive/MM_LFO_03_lfo04_rate","index": 262840,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/04_lfo05_enable","varname": "fHslider111","shortname": "MM_LFO_04_lfo05_enable","address": "/modular-subtractive/MM_LFO_04_lfo05_enable","index": 262832,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/04_lfo05_morph","varname": "fHslider108","shortname": "MM_LFO_04_lfo05_morph","address": "/modular-subtractive/MM_LFO_04_lfo05_morph","index": 262812,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/04_lfo05_rate","varname": "fHslider109","shortname": "MM_LFO_04_lfo05_rate","address": "/modular-subtractive/MM_LFO_04_lfo05_rate","index": 262816,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/05_lfo06_enable","varname": "fHslider107","shortname": "MM_LFO_05_lfo06_enable","address": "/modular-subtractive/MM_LFO_05_lfo06_enable","index": 262808,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/05_lfo06_morph","varname": "fHslider104","shortname": "MM_LFO_05_lfo06_morph","address": "/modular-subtractive/MM_LFO_05_lfo06_morph","index": 262788,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/05_lfo06_rate","varname": "fHslider105","shortname": "MM_LFO_05_lfo06_rate","address": "/modular-subtractive/MM_LFO_05_lfo06_rate","index": 262792,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/06_lfo07_enable","varname": "fHslider103","shortname": "MM_LFO_06_lfo07_enable","address": "/modular-subtractive/MM_LFO_06_lfo07_enable","index": 262784,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/06_lfo07_morph","varname": "fHslider100","shortname": "MM_LFO_06_lfo07_morph","address": "/modular-subtractive/MM_LFO_06_lfo07_morph","index": 262764,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/06_lfo07_rate","varname": "fHslider101","shortname": "MM_LFO_06_lfo07_rate","address": "/modular-subtractive/MM_LFO_06_lfo07_rate","index": 262768,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/07_lfo08_enable","varname": "fHslider99","shortname": "MM_LFO_07_lfo08_enable","address": "/modular-subtractive/MM_LFO_07_lfo08_enable","index": 262760,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/07_lfo08_morph","varname": "fHslider96","shortname": "MM_LFO_07_lfo08_morph","address": "/modular-subtractive/MM_LFO_07_lfo08_morph","index": 262740,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/07_lfo08_rate","varname": "fHslider97","shortname": "MM_LFO_07_lfo08_rate","address": "/modular-subtractive/MM_LFO_07_lfo08_rate","index": 262744,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/08_lfo09_enable","varname": "fHslider95","shortname": "MM_LFO_08_lfo09_enable","address": "/modular-subtractive/MM_LFO_08_lfo09_enable","index": 262736,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/08_lfo09_morph","varname": "fHslider92","shortname": "MM_LFO_08_lfo09_morph","address": "/modular-subtractive/MM_LFO_08_lfo09_morph","index": 262716,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/08_lfo09_rate","varname": "fHslider93","shortname": "MM_LFO_08_lfo09_rate","address": "/modular-subtractive/MM_LFO_08_lfo09_rate","index": 262720,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/09_lfo10_enable","varname": "fHslider91","shortname": "MM_LFO_09_lfo10_enable","address": "/modular-subtractive/MM_LFO_09_lfo10_enable","index": 262712,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/09_lfo10_morph","varname": "fHslider88","shortname": "MM_LFO_09_lfo10_morph","address": "/modular-subtractive/MM_LFO_09_lfo10_morph","index": 262692,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/09_lfo10_rate","varname": "fHslider89","shortname": "MM_LFO_09_lfo10_rate","address": "/modular-subtractive/MM_LFO_09_lfo10_rate","index": 262696,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/10_lfo11_enable","varname": "fHslider87","shortname": "MM_LFO_10_lfo11_enable","address": "/modular-subtractive/MM_LFO_10_lfo11_enable","index": 262688,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/10_lfo11_morph","varname": "fHslider84","shortname": "MM_LFO_10_lfo11_morph","address": "/modular-subtractive/MM_LFO_10_lfo11_morph","index": 262668,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/10_lfo11_rate","varname": "fHslider85","shortname": "MM_LFO_10_lfo11_rate","address": "/modular-subtractive/MM_LFO_10_lfo11_rate","index": 262672,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/11_lfo12_enable","varname": "fHslider83","shortname": "MM_LFO_11_lfo12_enable","address": "/modular-subtractive/MM_LFO_11_lfo12_enable","index": 262664,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/11_lfo12_morph","varname": "fHslider80","shortname": "MM_LFO_11_lfo12_morph","address": "/modular-subtractive/MM_LFO_11_lfo12_morph","index": 262644,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/11_lfo12_rate","varname": "fHslider81","shortname": "MM_LFO_11_lfo12_rate","address": "/modular-subtractive/MM_LFO_11_lfo12_rate","index": 262648,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/12_lfo13_enable","varname": "fHslider79","shortname": "MM_LFO_12_lfo13_enable","address": "/modular-subtractive/MM_LFO_12_lfo13_enable","index": 262640,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/12_lfo13_morph","varname": "fHslider76","shortname": "MM_LFO_12_lfo13_morph","address": "/modular-subtractive/MM_LFO_12_lfo13_morph","index": 262620,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/12_lfo13_rate","varname": "fHslider77","shortname": "MM_LFO_12_lfo13_rate","address": "/modular-subtractive/MM_LFO_12_lfo13_rate","index": 262624,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/13_lfo14_enable","varname": "fHslider75","shortname": "MM_LFO_13_lfo14_enable","address": "/modular-subtractive/MM_LFO_13_lfo14_enable","index": 262616,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/13_lfo14_morph","varname": "fHslider72","shortname": "MM_LFO_13_lfo14_morph","address": "/modular-subtractive/MM_LFO_13_lfo14_morph","index": 262596,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/13_lfo14_rate","varname": "fHslider73","shortname": "MM_LFO_13_lfo14_rate","address": "/modular-subtractive/MM_LFO_13_lfo14_rate","index": 262600,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/14_lfo15_enable","varname": "fHslider71","shortname": "MM_LFO_14_lfo15_enable","address": "/modular-subtractive/MM_LFO_14_lfo15_enable","index": 262592,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/14_lfo15_morph","varname": "fHslider68","shortname": "MM_LFO_14_lfo15_morph","address": "/modular-subtractive/MM_LFO_14_lfo15_morph","index": 262572,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/14_lfo15_rate","varname": "fHslider69","shortname": "MM_LFO_14_lfo15_rate","address": "/modular-subtractive/MM_LFO_14_lfo15_rate","index": 262576,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/15_lfo16_enable","varname": "fHslider67","shortname": "MM_LFO_15_lfo16_enable","address": "/modular-subtractive/MM_LFO_15_lfo16_enable","index": 262568,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/15_lfo16_morph","varname": "fHslider64","shortname": "MM_LFO_15_lfo16_morph","address": "/modular-subtractive/MM_LFO_15_lfo16_morph","index": 262548,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/15_lfo16_rate","varname": "fHslider65","shortname": "MM_LFO_15_lfo16_rate","address": "/modular-subtractive/MM_LFO_15_lfo16_rate","index": 262552,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/16_lfo17_enable","varname": "fHslider63","shortname": "MM_LFO_16_lfo17_enable","address": "/modular-subtractive/MM_LFO_16_lfo17_enable","index": 262544,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/16_lfo17_morph","varname": "fHslider60","shortname": "MM_LFO_16_lfo17_morph","address": "/modular-subtractive/MM_LFO_16_lfo17_morph","index": 262524,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/16_lfo17_rate","varname": "fHslider61","shortname": "MM_LFO_16_lfo17_rate","address": "/modular-subtractive/MM_LFO_16_lfo17_rate","index": 262528,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/17_lfo18_enable","varname": "fHslider59","shortname": "MM_LFO_17_lfo18_enable","address": "/modular-subtractive/MM_LFO_17_lfo18_enable","index": 262520,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/17_lfo18_morph","varname": "fHslider56","shortname": "MM_LFO_17_lfo18_morph","address": "/modular-subtractive/MM_LFO_17_lfo18_morph","index": 262500,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/17_lfo18_rate","varname": "fHslider57","shortname": "MM_LFO_17_lfo18_rate","address": "/modular-subtractive/MM_LFO_17_lfo18_rate","index": 262504,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/18_lfo19_enable","varname": "fHslider55","shortname": "MM_LFO_18_lfo19_enable","address": "/modular-subtractive/MM_LFO_18_lfo19_enable","index": 262496,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/18_lfo19_morph","varname": "fHslider52","shortname": "MM_LFO_18_lfo19_morph","address": "/modular-subtractive/MM_LFO_18_lfo19_morph","index": 262476,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/18_lfo19_rate","varname": "fHslider53","shortname": "MM_LFO_18_lfo19_rate","address": "/modular-subtractive/MM_LFO_18_lfo19_rate","index": 262480,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/19_lfo20_enable","varname": "fHslider51","shortname": "MM_LFO_19_lfo20_enable","address": "/modular-subtractive/MM_LFO_19_lfo20_enable","index": 262472,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/19_lfo20_morph","varname": "fHslider48","shortname": "MM_LFO_19_lfo20_morph","address": "/modular-subtractive/MM_LFO_19_lfo20_morph","index": 262452,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/19_lfo20_rate","varname": "fHslider49","shortname": "MM_LFO_19_lfo20_rate","address": "/modular-subtractive/MM_LFO_19_lfo20_rate","index": 262456,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/20_lfo21_enable","varname": "fHslider47","shortname": "MM_LFO_20_lfo21_enable","address": "/modular-subtractive/MM_LFO_20_lfo21_enable","index": 262448,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/20_lfo21_morph","varname": "fHslider44","shortname": "MM_LFO_20_lfo21_morph","address": "/modular-subtractive/MM_LFO_20_lfo21_morph","index": 262428,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/20_lfo21_rate","varname": "fHslider45","shortname": "MM_LFO_20_lfo21_rate","address": "/modular-subtractive/MM_LFO_20_lfo21_rate","index": 262432,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/21_lfo22_enable","varname": "fHslider43","shortname": "MM_LFO_21_lfo22_enable","address": "/modular-subtractive/MM_LFO_21_lfo22_enable","index": 262424,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/21_lfo22_morph","varname": "fHslider40","shortname": "MM_LFO_21_lfo22_morph","address": "/modular-subtractive/MM_LFO_21_lfo22_morph","index": 262404,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/21_lfo22_rate","varname": "fHslider41","shortname": "MM_LFO_21_lfo22_rate","address": "/modular-subtractive/MM_LFO_21_lfo22_rate","index": 262408,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/22_lfo23_enable","varname": "fHslider39","shortname": "MM_LFO_22_lfo23_enable","address": "/modular-subtractive/MM_LFO_22_lfo23_enable","index": 262400,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/22_lfo23_morph","varname": "fHslider36","shortname": "MM_LFO_22_lfo23_morph","address": "/modular-subtractive/MM_LFO_22_lfo23_morph","index": 262380,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/22_lfo23_rate","varname": "fHslider37","shortname": "MM_LFO_22_lfo23_rate","address": "/modular-subtractive/MM_LFO_22_lfo23_rate","index": 262384,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/23_lfo24_enable","varname": "fHslider35","shortname": "MM_LFO_23_lfo24_enable","address": "/modular-subtractive/MM_LFO_23_lfo24_enable","index": 262376,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/23_lfo24_morph","varname": "fHslider32","shortname": "MM_LFO_23_lfo24_morph","address": "/modular-subtractive/MM_LFO_23_lfo24_morph","index": 262356,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/23_lfo24_rate","varname": "fHslider33","shortname": "MM_LFO_23_lfo24_rate","address": "/modular-subtractive/MM_LFO_23_lfo24_rate","index": 262360,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/24_lfo25_enable","varname": "fHslider31","shortname": "MM_LFO_24_lfo25_enable","address": "/modular-subtractive/MM_LFO_24_lfo25_enable","index": 262352,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/24_lfo25_morph","varname": "fHslider28","shortname": "MM_LFO_24_lfo25_morph","address": "/modular-subtractive/MM_LFO_24_lfo25_morph","index": 262332,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/24_lfo25_rate","varname": "fHslider29","shortname": "MM_LFO_24_lfo25_rate","address": "/modular-subtractive/MM_LFO_24_lfo25_rate","index": 262336,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/25_lfo26_enable","varname": "fHslider27","shortname": "MM_LFO_25_lfo26_enable","address": "/modular-subtractive/MM_LFO_25_lfo26_enable","index": 262328,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/25_lfo26_morph","varname": "fHslider24","shortname": "MM_LFO_25_lfo26_morph","address": "/modular-subtractive/MM_LFO_25_lfo26_morph","index": 262308,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/25_lfo26_rate","varname": "fHslider25","shortname": "MM_LFO_25_lfo26_rate","address": "/modular-subtractive/MM_LFO_25_lfo26_rate","index": 262312,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/26_lfo27_enable","varname": "fHslider23","shortname": "MM_LFO_26_lfo27_enable","address": "/modular-subtractive/MM_LFO_26_lfo27_enable","index": 262304,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/26_lfo27_morph","varname": "fHslider20","shortname": "MM_LFO_26_lfo27_morph","address": "/modular-subtractive/MM_LFO_26_lfo27_morph","index": 262284,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/26_lfo27_rate","varname": "fHslider21","shortname": "MM_LFO_26_lfo27_rate","address": "/modular-subtractive/MM_LFO_26_lfo27_rate","index": 262288,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/27_lfo28_enable","varname": "fHslider19","shortname": "MM_LFO_27_lfo28_enable","address": "/modular-subtractive/MM_LFO_27_lfo28_enable","index": 262280,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/27_lfo28_morph","varname": "fHslider16","shortname": "MM_LFO_27_lfo28_morph","address": "/modular-subtractive/MM_LFO_27_lfo28_morph","index": 262260,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/27_lfo28_rate","varname": "fHslider17","shortname": "MM_LFO_27_lfo28_rate","address": "/modular-subtractive/MM_LFO_27_lfo28_rate","index": 262264,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/28_lfo29_enable","varname": "fHslider15","shortname": "MM_LFO_28_lfo29_enable","address": "/modular-subtractive/MM_LFO_28_lfo29_enable","index": 262256,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/28_lfo29_morph","varname": "fHslider12","shortname": "MM_LFO_28_lfo29_morph","address": "/modular-subtractive/MM_LFO_28_lfo29_morph","index": 262236,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/28_lfo29_rate","varname": "fHslider13","shortname": "MM_LFO_28_lfo29_rate","address": "/modular-subtractive/MM_LFO_28_lfo29_rate","index": 262240,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/29_lfo30_enable","varname": "fHslider11","shortname": "MM_LFO_29_lfo30_enable","address": "/modular-subtractive/MM_LFO_29_lfo30_enable","index": 262232,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/29_lfo30_morph","varname": "fHslider8","shortname": "MM_LFO_29_lfo30_morph","address": "/modular-subtractive/MM_LFO_29_lfo30_morph","index": 262212,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/29_lfo30_rate","varname": "fHslider9","shortname": "MM_LFO_29_lfo30_rate","address": "/modular-subtractive/MM_LFO_29_lfo30_rate","index": 262216,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/30_lfo31_enable","varname": "fHslider7","shortname": "MM_LFO_30_lfo31_enable","address": "/modular-subtractive/MM_LFO_30_lfo31_enable","index": 262208,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/30_lfo31_morph","varname": "fHslider4","shortname": "MM_LFO_30_lfo31_morph","address": "/modular-subtractive/MM_LFO_30_lfo31_morph","index": 262188,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/30_lfo31_rate","varname": "fHslider5","shortname": "MM_LFO_30_lfo31_rate","address": "/modular-subtractive/MM_LFO_30_lfo31_rate","index": 262192,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_LFO/31_lfo32_enable","varname": "fHslider3","shortname": "MM_LFO_31_lfo32_enable","address": "/modular-subtractive/MM_LFO_31_lfo32_enable","index": 262184,"init": 0,"min": 0,"max": 1,"step": 1},{"type": "hslider","label": "MM_LFO/31_lfo32_morph","varname": "fHslider0","shortname": "MM_LFO_31_lfo32_morph","address": "/modular-subtractive/MM_LFO_31_lfo32_morph","index": 262144,"init": 0,"min": 0,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_LFO/31_lfo32_rate","varname": "fHslider1","shortname": "MM_LFO_31_lfo32_rate","address": "/modular-subtractive/MM_LFO_31_lfo32_rate","index": 262156,"meta": [{ "scale": "log" }],"init": 1,"min": 0.01,"max": 20,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d00_pitch","varname": "fHslider521","shortname": "MM_Matrix_s00_d00_pitch","address": "/modular-subtractive/MM_Matrix_s00_d00_pitch","index": 264584,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d01_osc2_detune","varname": "fHslider671","shortname": "MM_Matrix_s00_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s00_d01_osc2_detune","index": 265192,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d02_osc3_detune","varname": "fHslider571","shortname": "MM_Matrix_s00_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s00_d02_osc3_detune","index": 264784,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d03_osc_mix_bal","varname": "fHslider621","shortname": "MM_Matrix_s00_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s00_d03_osc_mix_bal","index": 264992,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d04_noise_level","varname": "fHslider470","shortname": "MM_Matrix_s00_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s00_d04_noise_level","index": 264356,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d05_cutoff","varname": "fHslider276","shortname": "MM_Matrix_s00_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s00_d05_cutoff","index": 263568,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d06_resonance","varname": "fHslider421","shortname": "MM_Matrix_s00_d06_resonance","address": "/modular-subtractive/MM_Matrix_s00_d06_resonance","index": 264160,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d07_filter_env_amt","varname": "fHslider277","shortname": "MM_Matrix_s00_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s00_d07_filter_env_amt","index": 263572,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d08_amp","varname": "fHslider273","shortname": "MM_Matrix_s00_d08_amp","address": "/modular-subtractive/MM_Matrix_s00_d08_amp","index": 263556,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s00_d09_pan","varname": "fHslider222","shortname": "MM_Matrix_s00_d09_pan","address": "/modular-subtractive/MM_Matrix_s00_d09_pan","index": 263336,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d00_pitch","varname": "fHslider520","shortname": "MM_Matrix_s01_d00_pitch","address": "/modular-subtractive/MM_Matrix_s01_d00_pitch","index": 264580,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d01_osc2_detune","varname": "fHslider670","shortname": "MM_Matrix_s01_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s01_d01_osc2_detune","index": 265188,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d02_osc3_detune","varname": "fHslider570","shortname": "MM_Matrix_s01_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s01_d02_osc3_detune","index": 264780,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d03_osc_mix_bal","varname": "fHslider620","shortname": "MM_Matrix_s01_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s01_d03_osc_mix_bal","index": 264988,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d04_noise_level","varname": "fHslider469","shortname": "MM_Matrix_s01_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s01_d04_noise_level","index": 264352,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d05_cutoff","varname": "fHslider274","shortname": "MM_Matrix_s01_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s01_d05_cutoff","index": 263560,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d06_resonance","varname": "fHslider420","shortname": "MM_Matrix_s01_d06_resonance","address": "/modular-subtractive/MM_Matrix_s01_d06_resonance","index": 264156,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d07_filter_env_amt","varname": "fHslider275","shortname": "MM_Matrix_s01_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s01_d07_filter_env_amt","index": 263564,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d08_amp","varname": "fHslider272","shortname": "MM_Matrix_s01_d08_amp","address": "/modular-subtractive/MM_Matrix_s01_d08_amp","index": 263552,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s01_d09_pan","varname": "fHslider216","shortname": "MM_Matrix_s01_d09_pan","address": "/modular-subtractive/MM_Matrix_s01_d09_pan","index": 263312,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d00_pitch","varname": "fHslider519","shortname": "MM_Matrix_s02_d00_pitch","address": "/modular-subtractive/MM_Matrix_s02_d00_pitch","index": 264576,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d01_osc2_detune","varname": "fHslider669","shortname": "MM_Matrix_s02_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s02_d01_osc2_detune","index": 265184,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d02_osc3_detune","varname": "fHslider569","shortname": "MM_Matrix_s02_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s02_d02_osc3_detune","index": 264776,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d03_osc_mix_bal","varname": "fHslider619","shortname": "MM_Matrix_s02_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s02_d03_osc_mix_bal","index": 264984,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d04_noise_level","varname": "fHslider468","shortname": "MM_Matrix_s02_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s02_d04_noise_level","index": 264348,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d05_cutoff","varname": "fHslider278","shortname": "MM_Matrix_s02_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s02_d05_cutoff","index": 263576,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d06_resonance","varname": "fHslider419","shortname": "MM_Matrix_s02_d06_resonance","address": "/modular-subtractive/MM_Matrix_s02_d06_resonance","index": 264152,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d07_filter_env_amt","varname": "fHslider279","shortname": "MM_Matrix_s02_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s02_d07_filter_env_amt","index": 263580,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d08_amp","varname": "fHslider271","shortname": "MM_Matrix_s02_d08_amp","address": "/modular-subtractive/MM_Matrix_s02_d08_amp","index": 263548,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s02_d09_pan","varname": "fHslider210","shortname": "MM_Matrix_s02_d09_pan","address": "/modular-subtractive/MM_Matrix_s02_d09_pan","index": 263288,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d00_pitch","varname": "fHslider518","shortname": "MM_Matrix_s03_d00_pitch","address": "/modular-subtractive/MM_Matrix_s03_d00_pitch","index": 264572,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d01_osc2_detune","varname": "fHslider668","shortname": "MM_Matrix_s03_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s03_d01_osc2_detune","index": 265180,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d02_osc3_detune","varname": "fHslider568","shortname": "MM_Matrix_s03_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s03_d02_osc3_detune","index": 264772,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d03_osc_mix_bal","varname": "fHslider618","shortname": "MM_Matrix_s03_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s03_d03_osc_mix_bal","index": 264980,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d04_noise_level","varname": "fHslider467","shortname": "MM_Matrix_s03_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s03_d04_noise_level","index": 264344,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d05_cutoff","varname": "fHslider280","shortname": "MM_Matrix_s03_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s03_d05_cutoff","index": 263584,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d06_resonance","varname": "fHslider418","shortname": "MM_Matrix_s03_d06_resonance","address": "/modular-subtractive/MM_Matrix_s03_d06_resonance","index": 264148,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d07_filter_env_amt","varname": "fHslider281","shortname": "MM_Matrix_s03_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s03_d07_filter_env_amt","index": 263588,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d08_amp","varname": "fHslider270","shortname": "MM_Matrix_s03_d08_amp","address": "/modular-subtractive/MM_Matrix_s03_d08_amp","index": 263544,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s03_d09_pan","varname": "fHslider204","shortname": "MM_Matrix_s03_d09_pan","address": "/modular-subtractive/MM_Matrix_s03_d09_pan","index": 263264,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d00_pitch","varname": "fHslider517","shortname": "MM_Matrix_s04_d00_pitch","address": "/modular-subtractive/MM_Matrix_s04_d00_pitch","index": 264568,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d01_osc2_detune","varname": "fHslider667","shortname": "MM_Matrix_s04_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s04_d01_osc2_detune","index": 265176,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d02_osc3_detune","varname": "fHslider567","shortname": "MM_Matrix_s04_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s04_d02_osc3_detune","index": 264768,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d03_osc_mix_bal","varname": "fHslider617","shortname": "MM_Matrix_s04_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s04_d03_osc_mix_bal","index": 264976,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d04_noise_level","varname": "fHslider466","shortname": "MM_Matrix_s04_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s04_d04_noise_level","index": 264340,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d05_cutoff","varname": "fHslider282","shortname": "MM_Matrix_s04_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s04_d05_cutoff","index": 263592,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d06_resonance","varname": "fHslider417","shortname": "MM_Matrix_s04_d06_resonance","address": "/modular-subtractive/MM_Matrix_s04_d06_resonance","index": 264144,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d07_filter_env_amt","varname": "fHslider283","shortname": "MM_Matrix_s04_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s04_d07_filter_env_amt","index": 263596,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d08_amp","varname": "fHslider269","shortname": "MM_Matrix_s04_d08_amp","address": "/modular-subtractive/MM_Matrix_s04_d08_amp","index": 263540,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s04_d09_pan","varname": "fHslider198","shortname": "MM_Matrix_s04_d09_pan","address": "/modular-subtractive/MM_Matrix_s04_d09_pan","index": 263240,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d00_pitch","varname": "fHslider516","shortname": "MM_Matrix_s05_d00_pitch","address": "/modular-subtractive/MM_Matrix_s05_d00_pitch","index": 264564,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d01_osc2_detune","varname": "fHslider666","shortname": "MM_Matrix_s05_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s05_d01_osc2_detune","index": 265172,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d02_osc3_detune","varname": "fHslider566","shortname": "MM_Matrix_s05_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s05_d02_osc3_detune","index": 264764,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d03_osc_mix_bal","varname": "fHslider616","shortname": "MM_Matrix_s05_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s05_d03_osc_mix_bal","index": 264972,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d04_noise_level","varname": "fHslider465","shortname": "MM_Matrix_s05_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s05_d04_noise_level","index": 264336,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d05_cutoff","varname": "fHslider284","shortname": "MM_Matrix_s05_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s05_d05_cutoff","index": 263600,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d06_resonance","varname": "fHslider416","shortname": "MM_Matrix_s05_d06_resonance","address": "/modular-subtractive/MM_Matrix_s05_d06_resonance","index": 264140,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d07_filter_env_amt","varname": "fHslider285","shortname": "MM_Matrix_s05_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s05_d07_filter_env_amt","index": 263604,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d08_amp","varname": "fHslider268","shortname": "MM_Matrix_s05_d08_amp","address": "/modular-subtractive/MM_Matrix_s05_d08_amp","index": 263536,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s05_d09_pan","varname": "fHslider192","shortname": "MM_Matrix_s05_d09_pan","address": "/modular-subtractive/MM_Matrix_s05_d09_pan","index": 263216,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d00_pitch","varname": "fHslider515","shortname": "MM_Matrix_s06_d00_pitch","address": "/modular-subtractive/MM_Matrix_s06_d00_pitch","index": 264560,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d01_osc2_detune","varname": "fHslider665","shortname": "MM_Matrix_s06_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s06_d01_osc2_detune","index": 265168,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d02_osc3_detune","varname": "fHslider565","shortname": "MM_Matrix_s06_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s06_d02_osc3_detune","index": 264760,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d03_osc_mix_bal","varname": "fHslider615","shortname": "MM_Matrix_s06_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s06_d03_osc_mix_bal","index": 264968,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d04_noise_level","varname": "fHslider464","shortname": "MM_Matrix_s06_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s06_d04_noise_level","index": 264332,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d05_cutoff","varname": "fHslider286","shortname": "MM_Matrix_s06_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s06_d05_cutoff","index": 263608,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d06_resonance","varname": "fHslider415","shortname": "MM_Matrix_s06_d06_resonance","address": "/modular-subtractive/MM_Matrix_s06_d06_resonance","index": 264136,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d07_filter_env_amt","varname": "fHslider287","shortname": "MM_Matrix_s06_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s06_d07_filter_env_amt","index": 263612,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d08_amp","varname": "fHslider267","shortname": "MM_Matrix_s06_d08_amp","address": "/modular-subtractive/MM_Matrix_s06_d08_amp","index": 263532,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s06_d09_pan","varname": "fHslider186","shortname": "MM_Matrix_s06_d09_pan","address": "/modular-subtractive/MM_Matrix_s06_d09_pan","index": 263192,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d00_pitch","varname": "fHslider514","shortname": "MM_Matrix_s07_d00_pitch","address": "/modular-subtractive/MM_Matrix_s07_d00_pitch","index": 264556,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d01_osc2_detune","varname": "fHslider664","shortname": "MM_Matrix_s07_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s07_d01_osc2_detune","index": 265164,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d02_osc3_detune","varname": "fHslider564","shortname": "MM_Matrix_s07_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s07_d02_osc3_detune","index": 264756,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d03_osc_mix_bal","varname": "fHslider614","shortname": "MM_Matrix_s07_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s07_d03_osc_mix_bal","index": 264964,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d04_noise_level","varname": "fHslider463","shortname": "MM_Matrix_s07_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s07_d04_noise_level","index": 264328,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d05_cutoff","varname": "fHslider288","shortname": "MM_Matrix_s07_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s07_d05_cutoff","index": 263616,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d06_resonance","varname": "fHslider414","shortname": "MM_Matrix_s07_d06_resonance","address": "/modular-subtractive/MM_Matrix_s07_d06_resonance","index": 264132,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d07_filter_env_amt","varname": "fHslider289","shortname": "MM_Matrix_s07_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s07_d07_filter_env_amt","index": 263620,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d08_amp","varname": "fHslider266","shortname": "MM_Matrix_s07_d08_amp","address": "/modular-subtractive/MM_Matrix_s07_d08_amp","index": 263528,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s07_d09_pan","varname": "fHslider180","shortname": "MM_Matrix_s07_d09_pan","address": "/modular-subtractive/MM_Matrix_s07_d09_pan","index": 263168,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d00_pitch","varname": "fHslider513","shortname": "MM_Matrix_s08_d00_pitch","address": "/modular-subtractive/MM_Matrix_s08_d00_pitch","index": 264552,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d01_osc2_detune","varname": "fHslider663","shortname": "MM_Matrix_s08_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s08_d01_osc2_detune","index": 265160,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d02_osc3_detune","varname": "fHslider563","shortname": "MM_Matrix_s08_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s08_d02_osc3_detune","index": 264752,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d03_osc_mix_bal","varname": "fHslider613","shortname": "MM_Matrix_s08_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s08_d03_osc_mix_bal","index": 264960,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d04_noise_level","varname": "fHslider462","shortname": "MM_Matrix_s08_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s08_d04_noise_level","index": 264324,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d05_cutoff","varname": "fHslider290","shortname": "MM_Matrix_s08_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s08_d05_cutoff","index": 263624,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d06_resonance","varname": "fHslider413","shortname": "MM_Matrix_s08_d06_resonance","address": "/modular-subtractive/MM_Matrix_s08_d06_resonance","index": 264128,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d07_filter_env_amt","varname": "fHslider291","shortname": "MM_Matrix_s08_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s08_d07_filter_env_amt","index": 263628,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d08_amp","varname": "fHslider265","shortname": "MM_Matrix_s08_d08_amp","address": "/modular-subtractive/MM_Matrix_s08_d08_amp","index": 263524,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s08_d09_pan","varname": "fHslider174","shortname": "MM_Matrix_s08_d09_pan","address": "/modular-subtractive/MM_Matrix_s08_d09_pan","index": 263144,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d00_pitch","varname": "fHslider512","shortname": "MM_Matrix_s09_d00_pitch","address": "/modular-subtractive/MM_Matrix_s09_d00_pitch","index": 264548,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d01_osc2_detune","varname": "fHslider662","shortname": "MM_Matrix_s09_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s09_d01_osc2_detune","index": 265156,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d02_osc3_detune","varname": "fHslider562","shortname": "MM_Matrix_s09_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s09_d02_osc3_detune","index": 264748,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d03_osc_mix_bal","varname": "fHslider612","shortname": "MM_Matrix_s09_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s09_d03_osc_mix_bal","index": 264956,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d04_noise_level","varname": "fHslider461","shortname": "MM_Matrix_s09_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s09_d04_noise_level","index": 264320,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d05_cutoff","varname": "fHslider292","shortname": "MM_Matrix_s09_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s09_d05_cutoff","index": 263632,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d06_resonance","varname": "fHslider412","shortname": "MM_Matrix_s09_d06_resonance","address": "/modular-subtractive/MM_Matrix_s09_d06_resonance","index": 264124,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d07_filter_env_amt","varname": "fHslider293","shortname": "MM_Matrix_s09_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s09_d07_filter_env_amt","index": 263636,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d08_amp","varname": "fHslider264","shortname": "MM_Matrix_s09_d08_amp","address": "/modular-subtractive/MM_Matrix_s09_d08_amp","index": 263520,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s09_d09_pan","varname": "fHslider168","shortname": "MM_Matrix_s09_d09_pan","address": "/modular-subtractive/MM_Matrix_s09_d09_pan","index": 263120,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d00_pitch","varname": "fHslider511","shortname": "MM_Matrix_s10_d00_pitch","address": "/modular-subtractive/MM_Matrix_s10_d00_pitch","index": 264544,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d01_osc2_detune","varname": "fHslider661","shortname": "MM_Matrix_s10_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s10_d01_osc2_detune","index": 265152,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d02_osc3_detune","varname": "fHslider561","shortname": "MM_Matrix_s10_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s10_d02_osc3_detune","index": 264744,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d03_osc_mix_bal","varname": "fHslider611","shortname": "MM_Matrix_s10_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s10_d03_osc_mix_bal","index": 264952,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d04_noise_level","varname": "fHslider460","shortname": "MM_Matrix_s10_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s10_d04_noise_level","index": 264316,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d05_cutoff","varname": "fHslider294","shortname": "MM_Matrix_s10_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s10_d05_cutoff","index": 263640,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d06_resonance","varname": "fHslider411","shortname": "MM_Matrix_s10_d06_resonance","address": "/modular-subtractive/MM_Matrix_s10_d06_resonance","index": 264120,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d07_filter_env_amt","varname": "fHslider295","shortname": "MM_Matrix_s10_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s10_d07_filter_env_amt","index": 263644,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d08_amp","varname": "fHslider263","shortname": "MM_Matrix_s10_d08_amp","address": "/modular-subtractive/MM_Matrix_s10_d08_amp","index": 263516,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s10_d09_pan","varname": "fHslider162","shortname": "MM_Matrix_s10_d09_pan","address": "/modular-subtractive/MM_Matrix_s10_d09_pan","index": 263096,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d00_pitch","varname": "fHslider510","shortname": "MM_Matrix_s11_d00_pitch","address": "/modular-subtractive/MM_Matrix_s11_d00_pitch","index": 264540,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d01_osc2_detune","varname": "fHslider660","shortname": "MM_Matrix_s11_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s11_d01_osc2_detune","index": 265148,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d02_osc3_detune","varname": "fHslider560","shortname": "MM_Matrix_s11_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s11_d02_osc3_detune","index": 264740,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d03_osc_mix_bal","varname": "fHslider610","shortname": "MM_Matrix_s11_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s11_d03_osc_mix_bal","index": 264948,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d04_noise_level","varname": "fHslider459","shortname": "MM_Matrix_s11_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s11_d04_noise_level","index": 264312,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d05_cutoff","varname": "fHslider296","shortname": "MM_Matrix_s11_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s11_d05_cutoff","index": 263648,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d06_resonance","varname": "fHslider410","shortname": "MM_Matrix_s11_d06_resonance","address": "/modular-subtractive/MM_Matrix_s11_d06_resonance","index": 264116,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d07_filter_env_amt","varname": "fHslider297","shortname": "MM_Matrix_s11_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s11_d07_filter_env_amt","index": 263652,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d08_amp","varname": "fHslider262","shortname": "MM_Matrix_s11_d08_amp","address": "/modular-subtractive/MM_Matrix_s11_d08_amp","index": 263512,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s11_d09_pan","varname": "fHslider156","shortname": "MM_Matrix_s11_d09_pan","address": "/modular-subtractive/MM_Matrix_s11_d09_pan","index": 263072,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d00_pitch","varname": "fHslider509","shortname": "MM_Matrix_s12_d00_pitch","address": "/modular-subtractive/MM_Matrix_s12_d00_pitch","index": 264536,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d01_osc2_detune","varname": "fHslider659","shortname": "MM_Matrix_s12_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s12_d01_osc2_detune","index": 265144,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d02_osc3_detune","varname": "fHslider559","shortname": "MM_Matrix_s12_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s12_d02_osc3_detune","index": 264736,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d03_osc_mix_bal","varname": "fHslider609","shortname": "MM_Matrix_s12_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s12_d03_osc_mix_bal","index": 264944,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d04_noise_level","varname": "fHslider458","shortname": "MM_Matrix_s12_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s12_d04_noise_level","index": 264308,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d05_cutoff","varname": "fHslider298","shortname": "MM_Matrix_s12_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s12_d05_cutoff","index": 263656,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d06_resonance","varname": "fHslider409","shortname": "MM_Matrix_s12_d06_resonance","address": "/modular-subtractive/MM_Matrix_s12_d06_resonance","index": 264112,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d07_filter_env_amt","varname": "fHslider299","shortname": "MM_Matrix_s12_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s12_d07_filter_env_amt","index": 263660,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d08_amp","varname": "fHslider261","shortname": "MM_Matrix_s12_d08_amp","address": "/modular-subtractive/MM_Matrix_s12_d08_amp","index": 263508,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s12_d09_pan","varname": "fHslider150","shortname": "MM_Matrix_s12_d09_pan","address": "/modular-subtractive/MM_Matrix_s12_d09_pan","index": 263048,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d00_pitch","varname": "fHslider508","shortname": "MM_Matrix_s13_d00_pitch","address": "/modular-subtractive/MM_Matrix_s13_d00_pitch","index": 264532,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d01_osc2_detune","varname": "fHslider658","shortname": "MM_Matrix_s13_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s13_d01_osc2_detune","index": 265140,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d02_osc3_detune","varname": "fHslider558","shortname": "MM_Matrix_s13_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s13_d02_osc3_detune","index": 264732,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d03_osc_mix_bal","varname": "fHslider608","shortname": "MM_Matrix_s13_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s13_d03_osc_mix_bal","index": 264940,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d04_noise_level","varname": "fHslider457","shortname": "MM_Matrix_s13_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s13_d04_noise_level","index": 264304,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d05_cutoff","varname": "fHslider300","shortname": "MM_Matrix_s13_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s13_d05_cutoff","index": 263664,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d06_resonance","varname": "fHslider408","shortname": "MM_Matrix_s13_d06_resonance","address": "/modular-subtractive/MM_Matrix_s13_d06_resonance","index": 264108,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d07_filter_env_amt","varname": "fHslider301","shortname": "MM_Matrix_s13_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s13_d07_filter_env_amt","index": 263668,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d08_amp","varname": "fHslider260","shortname": "MM_Matrix_s13_d08_amp","address": "/modular-subtractive/MM_Matrix_s13_d08_amp","index": 263504,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s13_d09_pan","varname": "fHslider144","shortname": "MM_Matrix_s13_d09_pan","address": "/modular-subtractive/MM_Matrix_s13_d09_pan","index": 263024,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d00_pitch","varname": "fHslider507","shortname": "MM_Matrix_s14_d00_pitch","address": "/modular-subtractive/MM_Matrix_s14_d00_pitch","index": 264528,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d01_osc2_detune","varname": "fHslider657","shortname": "MM_Matrix_s14_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s14_d01_osc2_detune","index": 265136,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d02_osc3_detune","varname": "fHslider557","shortname": "MM_Matrix_s14_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s14_d02_osc3_detune","index": 264728,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d03_osc_mix_bal","varname": "fHslider607","shortname": "MM_Matrix_s14_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s14_d03_osc_mix_bal","index": 264936,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d04_noise_level","varname": "fHslider456","shortname": "MM_Matrix_s14_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s14_d04_noise_level","index": 264300,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d05_cutoff","varname": "fHslider302","shortname": "MM_Matrix_s14_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s14_d05_cutoff","index": 263672,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d06_resonance","varname": "fHslider407","shortname": "MM_Matrix_s14_d06_resonance","address": "/modular-subtractive/MM_Matrix_s14_d06_resonance","index": 264104,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d07_filter_env_amt","varname": "fHslider303","shortname": "MM_Matrix_s14_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s14_d07_filter_env_amt","index": 263676,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d08_amp","varname": "fHslider259","shortname": "MM_Matrix_s14_d08_amp","address": "/modular-subtractive/MM_Matrix_s14_d08_amp","index": 263500,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s14_d09_pan","varname": "fHslider138","shortname": "MM_Matrix_s14_d09_pan","address": "/modular-subtractive/MM_Matrix_s14_d09_pan","index": 263000,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d00_pitch","varname": "fHslider506","shortname": "MM_Matrix_s15_d00_pitch","address": "/modular-subtractive/MM_Matrix_s15_d00_pitch","index": 264524,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d01_osc2_detune","varname": "fHslider656","shortname": "MM_Matrix_s15_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s15_d01_osc2_detune","index": 265132,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d02_osc3_detune","varname": "fHslider556","shortname": "MM_Matrix_s15_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s15_d02_osc3_detune","index": 264724,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d03_osc_mix_bal","varname": "fHslider606","shortname": "MM_Matrix_s15_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s15_d03_osc_mix_bal","index": 264932,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d04_noise_level","varname": "fHslider455","shortname": "MM_Matrix_s15_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s15_d04_noise_level","index": 264296,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d05_cutoff","varname": "fHslider304","shortname": "MM_Matrix_s15_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s15_d05_cutoff","index": 263680,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d06_resonance","varname": "fHslider406","shortname": "MM_Matrix_s15_d06_resonance","address": "/modular-subtractive/MM_Matrix_s15_d06_resonance","index": 264100,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d07_filter_env_amt","varname": "fHslider305","shortname": "MM_Matrix_s15_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s15_d07_filter_env_amt","index": 263684,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d08_amp","varname": "fHslider258","shortname": "MM_Matrix_s15_d08_amp","address": "/modular-subtractive/MM_Matrix_s15_d08_amp","index": 263496,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s15_d09_pan","varname": "fHslider132","shortname": "MM_Matrix_s15_d09_pan","address": "/modular-subtractive/MM_Matrix_s15_d09_pan","index": 262976,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d00_pitch","varname": "fHslider505","shortname": "MM_Matrix_s16_d00_pitch","address": "/modular-subtractive/MM_Matrix_s16_d00_pitch","index": 264520,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d01_osc2_detune","varname": "fHslider655","shortname": "MM_Matrix_s16_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s16_d01_osc2_detune","index": 265128,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d02_osc3_detune","varname": "fHslider555","shortname": "MM_Matrix_s16_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s16_d02_osc3_detune","index": 264720,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d03_osc_mix_bal","varname": "fHslider605","shortname": "MM_Matrix_s16_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s16_d03_osc_mix_bal","index": 264928,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d04_noise_level","varname": "fHslider454","shortname": "MM_Matrix_s16_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s16_d04_noise_level","index": 264292,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d05_cutoff","varname": "fHslider306","shortname": "MM_Matrix_s16_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s16_d05_cutoff","index": 263688,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d06_resonance","varname": "fHslider405","shortname": "MM_Matrix_s16_d06_resonance","address": "/modular-subtractive/MM_Matrix_s16_d06_resonance","index": 264096,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d07_filter_env_amt","varname": "fHslider307","shortname": "MM_Matrix_s16_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s16_d07_filter_env_amt","index": 263692,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d08_amp","varname": "fHslider257","shortname": "MM_Matrix_s16_d08_amp","address": "/modular-subtractive/MM_Matrix_s16_d08_amp","index": 263492,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s16_d09_pan","varname": "fHslider126","shortname": "MM_Matrix_s16_d09_pan","address": "/modular-subtractive/MM_Matrix_s16_d09_pan","index": 262924,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d00_pitch","varname": "fHslider504","shortname": "MM_Matrix_s17_d00_pitch","address": "/modular-subtractive/MM_Matrix_s17_d00_pitch","index": 264516,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d01_osc2_detune","varname": "fHslider654","shortname": "MM_Matrix_s17_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s17_d01_osc2_detune","index": 265124,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d02_osc3_detune","varname": "fHslider554","shortname": "MM_Matrix_s17_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s17_d02_osc3_detune","index": 264716,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d03_osc_mix_bal","varname": "fHslider604","shortname": "MM_Matrix_s17_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s17_d03_osc_mix_bal","index": 264924,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d04_noise_level","varname": "fHslider453","shortname": "MM_Matrix_s17_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s17_d04_noise_level","index": 264288,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d05_cutoff","varname": "fHslider308","shortname": "MM_Matrix_s17_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s17_d05_cutoff","index": 263696,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d06_resonance","varname": "fHslider404","shortname": "MM_Matrix_s17_d06_resonance","address": "/modular-subtractive/MM_Matrix_s17_d06_resonance","index": 264092,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d07_filter_env_amt","varname": "fHslider309","shortname": "MM_Matrix_s17_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s17_d07_filter_env_amt","index": 263700,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d08_amp","varname": "fHslider256","shortname": "MM_Matrix_s17_d08_amp","address": "/modular-subtractive/MM_Matrix_s17_d08_amp","index": 263488,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s17_d09_pan","varname": "fHslider122","shortname": "MM_Matrix_s17_d09_pan","address": "/modular-subtractive/MM_Matrix_s17_d09_pan","index": 262900,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d00_pitch","varname": "fHslider503","shortname": "MM_Matrix_s18_d00_pitch","address": "/modular-subtractive/MM_Matrix_s18_d00_pitch","index": 264512,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d01_osc2_detune","varname": "fHslider653","shortname": "MM_Matrix_s18_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s18_d01_osc2_detune","index": 265120,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d02_osc3_detune","varname": "fHslider553","shortname": "MM_Matrix_s18_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s18_d02_osc3_detune","index": 264712,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d03_osc_mix_bal","varname": "fHslider603","shortname": "MM_Matrix_s18_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s18_d03_osc_mix_bal","index": 264920,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d04_noise_level","varname": "fHslider452","shortname": "MM_Matrix_s18_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s18_d04_noise_level","index": 264284,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d05_cutoff","varname": "fHslider310","shortname": "MM_Matrix_s18_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s18_d05_cutoff","index": 263704,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d06_resonance","varname": "fHslider403","shortname": "MM_Matrix_s18_d06_resonance","address": "/modular-subtractive/MM_Matrix_s18_d06_resonance","index": 264088,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d07_filter_env_amt","varname": "fHslider311","shortname": "MM_Matrix_s18_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s18_d07_filter_env_amt","index": 263708,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d08_amp","varname": "fHslider255","shortname": "MM_Matrix_s18_d08_amp","address": "/modular-subtractive/MM_Matrix_s18_d08_amp","index": 263484,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s18_d09_pan","varname": "fHslider118","shortname": "MM_Matrix_s18_d09_pan","address": "/modular-subtractive/MM_Matrix_s18_d09_pan","index": 262876,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d00_pitch","varname": "fHslider502","shortname": "MM_Matrix_s19_d00_pitch","address": "/modular-subtractive/MM_Matrix_s19_d00_pitch","index": 264508,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d01_osc2_detune","varname": "fHslider652","shortname": "MM_Matrix_s19_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s19_d01_osc2_detune","index": 265116,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d02_osc3_detune","varname": "fHslider552","shortname": "MM_Matrix_s19_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s19_d02_osc3_detune","index": 264708,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d03_osc_mix_bal","varname": "fHslider602","shortname": "MM_Matrix_s19_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s19_d03_osc_mix_bal","index": 264916,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d04_noise_level","varname": "fHslider451","shortname": "MM_Matrix_s19_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s19_d04_noise_level","index": 264280,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d05_cutoff","varname": "fHslider312","shortname": "MM_Matrix_s19_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s19_d05_cutoff","index": 263712,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d06_resonance","varname": "fHslider402","shortname": "MM_Matrix_s19_d06_resonance","address": "/modular-subtractive/MM_Matrix_s19_d06_resonance","index": 264084,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d07_filter_env_amt","varname": "fHslider313","shortname": "MM_Matrix_s19_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s19_d07_filter_env_amt","index": 263716,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d08_amp","varname": "fHslider254","shortname": "MM_Matrix_s19_d08_amp","address": "/modular-subtractive/MM_Matrix_s19_d08_amp","index": 263480,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s19_d09_pan","varname": "fHslider114","shortname": "MM_Matrix_s19_d09_pan","address": "/modular-subtractive/MM_Matrix_s19_d09_pan","index": 262852,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d00_pitch","varname": "fHslider501","shortname": "MM_Matrix_s20_d00_pitch","address": "/modular-subtractive/MM_Matrix_s20_d00_pitch","index": 264504,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d01_osc2_detune","varname": "fHslider651","shortname": "MM_Matrix_s20_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s20_d01_osc2_detune","index": 265112,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d02_osc3_detune","varname": "fHslider551","shortname": "MM_Matrix_s20_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s20_d02_osc3_detune","index": 264704,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d03_osc_mix_bal","varname": "fHslider601","shortname": "MM_Matrix_s20_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s20_d03_osc_mix_bal","index": 264912,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d04_noise_level","varname": "fHslider450","shortname": "MM_Matrix_s20_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s20_d04_noise_level","index": 264276,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d05_cutoff","varname": "fHslider314","shortname": "MM_Matrix_s20_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s20_d05_cutoff","index": 263720,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d06_resonance","varname": "fHslider401","shortname": "MM_Matrix_s20_d06_resonance","address": "/modular-subtractive/MM_Matrix_s20_d06_resonance","index": 264080,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d07_filter_env_amt","varname": "fHslider315","shortname": "MM_Matrix_s20_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s20_d07_filter_env_amt","index": 263724,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d08_amp","varname": "fHslider253","shortname": "MM_Matrix_s20_d08_amp","address": "/modular-subtractive/MM_Matrix_s20_d08_amp","index": 263476,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s20_d09_pan","varname": "fHslider110","shortname": "MM_Matrix_s20_d09_pan","address": "/modular-subtractive/MM_Matrix_s20_d09_pan","index": 262828,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d00_pitch","varname": "fHslider500","shortname": "MM_Matrix_s21_d00_pitch","address": "/modular-subtractive/MM_Matrix_s21_d00_pitch","index": 264500,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d01_osc2_detune","varname": "fHslider650","shortname": "MM_Matrix_s21_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s21_d01_osc2_detune","index": 265108,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d02_osc3_detune","varname": "fHslider550","shortname": "MM_Matrix_s21_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s21_d02_osc3_detune","index": 264700,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d03_osc_mix_bal","varname": "fHslider600","shortname": "MM_Matrix_s21_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s21_d03_osc_mix_bal","index": 264908,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d04_noise_level","varname": "fHslider449","shortname": "MM_Matrix_s21_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s21_d04_noise_level","index": 264272,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d05_cutoff","varname": "fHslider316","shortname": "MM_Matrix_s21_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s21_d05_cutoff","index": 263728,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d06_resonance","varname": "fHslider400","shortname": "MM_Matrix_s21_d06_resonance","address": "/modular-subtractive/MM_Matrix_s21_d06_resonance","index": 264076,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d07_filter_env_amt","varname": "fHslider317","shortname": "MM_Matrix_s21_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s21_d07_filter_env_amt","index": 263732,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d08_amp","varname": "fHslider252","shortname": "MM_Matrix_s21_d08_amp","address": "/modular-subtractive/MM_Matrix_s21_d08_amp","index": 263472,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s21_d09_pan","varname": "fHslider106","shortname": "MM_Matrix_s21_d09_pan","address": "/modular-subtractive/MM_Matrix_s21_d09_pan","index": 262804,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d00_pitch","varname": "fHslider499","shortname": "MM_Matrix_s22_d00_pitch","address": "/modular-subtractive/MM_Matrix_s22_d00_pitch","index": 264496,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d01_osc2_detune","varname": "fHslider649","shortname": "MM_Matrix_s22_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s22_d01_osc2_detune","index": 265104,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d02_osc3_detune","varname": "fHslider549","shortname": "MM_Matrix_s22_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s22_d02_osc3_detune","index": 264696,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d03_osc_mix_bal","varname": "fHslider599","shortname": "MM_Matrix_s22_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s22_d03_osc_mix_bal","index": 264904,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d04_noise_level","varname": "fHslider448","shortname": "MM_Matrix_s22_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s22_d04_noise_level","index": 264268,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d05_cutoff","varname": "fHslider318","shortname": "MM_Matrix_s22_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s22_d05_cutoff","index": 263736,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d06_resonance","varname": "fHslider399","shortname": "MM_Matrix_s22_d06_resonance","address": "/modular-subtractive/MM_Matrix_s22_d06_resonance","index": 264072,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d07_filter_env_amt","varname": "fHslider319","shortname": "MM_Matrix_s22_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s22_d07_filter_env_amt","index": 263740,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d08_amp","varname": "fHslider251","shortname": "MM_Matrix_s22_d08_amp","address": "/modular-subtractive/MM_Matrix_s22_d08_amp","index": 263468,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s22_d09_pan","varname": "fHslider102","shortname": "MM_Matrix_s22_d09_pan","address": "/modular-subtractive/MM_Matrix_s22_d09_pan","index": 262780,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d00_pitch","varname": "fHslider498","shortname": "MM_Matrix_s23_d00_pitch","address": "/modular-subtractive/MM_Matrix_s23_d00_pitch","index": 264492,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d01_osc2_detune","varname": "fHslider648","shortname": "MM_Matrix_s23_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s23_d01_osc2_detune","index": 265100,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d02_osc3_detune","varname": "fHslider548","shortname": "MM_Matrix_s23_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s23_d02_osc3_detune","index": 264692,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d03_osc_mix_bal","varname": "fHslider598","shortname": "MM_Matrix_s23_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s23_d03_osc_mix_bal","index": 264900,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d04_noise_level","varname": "fHslider447","shortname": "MM_Matrix_s23_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s23_d04_noise_level","index": 264264,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d05_cutoff","varname": "fHslider320","shortname": "MM_Matrix_s23_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s23_d05_cutoff","index": 263744,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d06_resonance","varname": "fHslider398","shortname": "MM_Matrix_s23_d06_resonance","address": "/modular-subtractive/MM_Matrix_s23_d06_resonance","index": 264068,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d07_filter_env_amt","varname": "fHslider321","shortname": "MM_Matrix_s23_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s23_d07_filter_env_amt","index": 263748,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d08_amp","varname": "fHslider250","shortname": "MM_Matrix_s23_d08_amp","address": "/modular-subtractive/MM_Matrix_s23_d08_amp","index": 263464,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s23_d09_pan","varname": "fHslider98","shortname": "MM_Matrix_s23_d09_pan","address": "/modular-subtractive/MM_Matrix_s23_d09_pan","index": 262756,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d00_pitch","varname": "fHslider497","shortname": "MM_Matrix_s24_d00_pitch","address": "/modular-subtractive/MM_Matrix_s24_d00_pitch","index": 264488,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d01_osc2_detune","varname": "fHslider647","shortname": "MM_Matrix_s24_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s24_d01_osc2_detune","index": 265096,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d02_osc3_detune","varname": "fHslider547","shortname": "MM_Matrix_s24_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s24_d02_osc3_detune","index": 264688,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d03_osc_mix_bal","varname": "fHslider597","shortname": "MM_Matrix_s24_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s24_d03_osc_mix_bal","index": 264896,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d04_noise_level","varname": "fHslider446","shortname": "MM_Matrix_s24_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s24_d04_noise_level","index": 264260,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d05_cutoff","varname": "fHslider322","shortname": "MM_Matrix_s24_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s24_d05_cutoff","index": 263752,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d06_resonance","varname": "fHslider397","shortname": "MM_Matrix_s24_d06_resonance","address": "/modular-subtractive/MM_Matrix_s24_d06_resonance","index": 264064,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d07_filter_env_amt","varname": "fHslider323","shortname": "MM_Matrix_s24_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s24_d07_filter_env_amt","index": 263756,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d08_amp","varname": "fHslider249","shortname": "MM_Matrix_s24_d08_amp","address": "/modular-subtractive/MM_Matrix_s24_d08_amp","index": 263460,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s24_d09_pan","varname": "fHslider94","shortname": "MM_Matrix_s24_d09_pan","address": "/modular-subtractive/MM_Matrix_s24_d09_pan","index": 262732,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d00_pitch","varname": "fHslider496","shortname": "MM_Matrix_s25_d00_pitch","address": "/modular-subtractive/MM_Matrix_s25_d00_pitch","index": 264484,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d01_osc2_detune","varname": "fHslider646","shortname": "MM_Matrix_s25_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s25_d01_osc2_detune","index": 265092,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d02_osc3_detune","varname": "fHslider546","shortname": "MM_Matrix_s25_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s25_d02_osc3_detune","index": 264684,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d03_osc_mix_bal","varname": "fHslider596","shortname": "MM_Matrix_s25_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s25_d03_osc_mix_bal","index": 264892,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d04_noise_level","varname": "fHslider445","shortname": "MM_Matrix_s25_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s25_d04_noise_level","index": 264256,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d05_cutoff","varname": "fHslider324","shortname": "MM_Matrix_s25_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s25_d05_cutoff","index": 263760,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d06_resonance","varname": "fHslider396","shortname": "MM_Matrix_s25_d06_resonance","address": "/modular-subtractive/MM_Matrix_s25_d06_resonance","index": 264060,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d07_filter_env_amt","varname": "fHslider325","shortname": "MM_Matrix_s25_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s25_d07_filter_env_amt","index": 263764,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d08_amp","varname": "fHslider248","shortname": "MM_Matrix_s25_d08_amp","address": "/modular-subtractive/MM_Matrix_s25_d08_amp","index": 263456,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s25_d09_pan","varname": "fHslider90","shortname": "MM_Matrix_s25_d09_pan","address": "/modular-subtractive/MM_Matrix_s25_d09_pan","index": 262708,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d00_pitch","varname": "fHslider495","shortname": "MM_Matrix_s26_d00_pitch","address": "/modular-subtractive/MM_Matrix_s26_d00_pitch","index": 264480,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d01_osc2_detune","varname": "fHslider645","shortname": "MM_Matrix_s26_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s26_d01_osc2_detune","index": 265088,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d02_osc3_detune","varname": "fHslider545","shortname": "MM_Matrix_s26_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s26_d02_osc3_detune","index": 264680,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d03_osc_mix_bal","varname": "fHslider595","shortname": "MM_Matrix_s26_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s26_d03_osc_mix_bal","index": 264888,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d04_noise_level","varname": "fHslider444","shortname": "MM_Matrix_s26_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s26_d04_noise_level","index": 264252,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d05_cutoff","varname": "fHslider326","shortname": "MM_Matrix_s26_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s26_d05_cutoff","index": 263768,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d06_resonance","varname": "fHslider395","shortname": "MM_Matrix_s26_d06_resonance","address": "/modular-subtractive/MM_Matrix_s26_d06_resonance","index": 264056,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d07_filter_env_amt","varname": "fHslider327","shortname": "MM_Matrix_s26_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s26_d07_filter_env_amt","index": 263772,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d08_amp","varname": "fHslider247","shortname": "MM_Matrix_s26_d08_amp","address": "/modular-subtractive/MM_Matrix_s26_d08_amp","index": 263452,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s26_d09_pan","varname": "fHslider86","shortname": "MM_Matrix_s26_d09_pan","address": "/modular-subtractive/MM_Matrix_s26_d09_pan","index": 262684,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d00_pitch","varname": "fHslider494","shortname": "MM_Matrix_s27_d00_pitch","address": "/modular-subtractive/MM_Matrix_s27_d00_pitch","index": 264476,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d01_osc2_detune","varname": "fHslider644","shortname": "MM_Matrix_s27_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s27_d01_osc2_detune","index": 265084,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d02_osc3_detune","varname": "fHslider544","shortname": "MM_Matrix_s27_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s27_d02_osc3_detune","index": 264676,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d03_osc_mix_bal","varname": "fHslider594","shortname": "MM_Matrix_s27_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s27_d03_osc_mix_bal","index": 264884,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d04_noise_level","varname": "fHslider443","shortname": "MM_Matrix_s27_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s27_d04_noise_level","index": 264248,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d05_cutoff","varname": "fHslider328","shortname": "MM_Matrix_s27_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s27_d05_cutoff","index": 263776,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d06_resonance","varname": "fHslider394","shortname": "MM_Matrix_s27_d06_resonance","address": "/modular-subtractive/MM_Matrix_s27_d06_resonance","index": 264052,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d07_filter_env_amt","varname": "fHslider329","shortname": "MM_Matrix_s27_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s27_d07_filter_env_amt","index": 263780,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d08_amp","varname": "fHslider246","shortname": "MM_Matrix_s27_d08_amp","address": "/modular-subtractive/MM_Matrix_s27_d08_amp","index": 263448,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s27_d09_pan","varname": "fHslider82","shortname": "MM_Matrix_s27_d09_pan","address": "/modular-subtractive/MM_Matrix_s27_d09_pan","index": 262660,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d00_pitch","varname": "fHslider493","shortname": "MM_Matrix_s28_d00_pitch","address": "/modular-subtractive/MM_Matrix_s28_d00_pitch","index": 264472,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d01_osc2_detune","varname": "fHslider643","shortname": "MM_Matrix_s28_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s28_d01_osc2_detune","index": 265080,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d02_osc3_detune","varname": "fHslider543","shortname": "MM_Matrix_s28_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s28_d02_osc3_detune","index": 264672,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d03_osc_mix_bal","varname": "fHslider593","shortname": "MM_Matrix_s28_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s28_d03_osc_mix_bal","index": 264880,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d04_noise_level","varname": "fHslider442","shortname": "MM_Matrix_s28_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s28_d04_noise_level","index": 264244,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d05_cutoff","varname": "fHslider330","shortname": "MM_Matrix_s28_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s28_d05_cutoff","index": 263784,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d06_resonance","varname": "fHslider393","shortname": "MM_Matrix_s28_d06_resonance","address": "/modular-subtractive/MM_Matrix_s28_d06_resonance","index": 264048,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d07_filter_env_amt","varname": "fHslider331","shortname": "MM_Matrix_s28_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s28_d07_filter_env_amt","index": 263788,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d08_amp","varname": "fHslider245","shortname": "MM_Matrix_s28_d08_amp","address": "/modular-subtractive/MM_Matrix_s28_d08_amp","index": 263444,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s28_d09_pan","varname": "fHslider78","shortname": "MM_Matrix_s28_d09_pan","address": "/modular-subtractive/MM_Matrix_s28_d09_pan","index": 262636,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d00_pitch","varname": "fHslider492","shortname": "MM_Matrix_s29_d00_pitch","address": "/modular-subtractive/MM_Matrix_s29_d00_pitch","index": 264468,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d01_osc2_detune","varname": "fHslider642","shortname": "MM_Matrix_s29_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s29_d01_osc2_detune","index": 265076,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d02_osc3_detune","varname": "fHslider542","shortname": "MM_Matrix_s29_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s29_d02_osc3_detune","index": 264668,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d03_osc_mix_bal","varname": "fHslider592","shortname": "MM_Matrix_s29_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s29_d03_osc_mix_bal","index": 264876,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d04_noise_level","varname": "fHslider441","shortname": "MM_Matrix_s29_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s29_d04_noise_level","index": 264240,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d05_cutoff","varname": "fHslider332","shortname": "MM_Matrix_s29_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s29_d05_cutoff","index": 263792,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d06_resonance","varname": "fHslider392","shortname": "MM_Matrix_s29_d06_resonance","address": "/modular-subtractive/MM_Matrix_s29_d06_resonance","index": 264044,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d07_filter_env_amt","varname": "fHslider333","shortname": "MM_Matrix_s29_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s29_d07_filter_env_amt","index": 263796,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d08_amp","varname": "fHslider244","shortname": "MM_Matrix_s29_d08_amp","address": "/modular-subtractive/MM_Matrix_s29_d08_amp","index": 263440,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s29_d09_pan","varname": "fHslider74","shortname": "MM_Matrix_s29_d09_pan","address": "/modular-subtractive/MM_Matrix_s29_d09_pan","index": 262612,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d00_pitch","varname": "fHslider491","shortname": "MM_Matrix_s30_d00_pitch","address": "/modular-subtractive/MM_Matrix_s30_d00_pitch","index": 264464,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d01_osc2_detune","varname": "fHslider641","shortname": "MM_Matrix_s30_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s30_d01_osc2_detune","index": 265072,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d02_osc3_detune","varname": "fHslider541","shortname": "MM_Matrix_s30_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s30_d02_osc3_detune","index": 264664,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d03_osc_mix_bal","varname": "fHslider591","shortname": "MM_Matrix_s30_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s30_d03_osc_mix_bal","index": 264872,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d04_noise_level","varname": "fHslider440","shortname": "MM_Matrix_s30_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s30_d04_noise_level","index": 264236,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d05_cutoff","varname": "fHslider334","shortname": "MM_Matrix_s30_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s30_d05_cutoff","index": 263800,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d06_resonance","varname": "fHslider391","shortname": "MM_Matrix_s30_d06_resonance","address": "/modular-subtractive/MM_Matrix_s30_d06_resonance","index": 264040,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d07_filter_env_amt","varname": "fHslider335","shortname": "MM_Matrix_s30_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s30_d07_filter_env_amt","index": 263804,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d08_amp","varname": "fHslider243","shortname": "MM_Matrix_s30_d08_amp","address": "/modular-subtractive/MM_Matrix_s30_d08_amp","index": 263436,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s30_d09_pan","varname": "fHslider70","shortname": "MM_Matrix_s30_d09_pan","address": "/modular-subtractive/MM_Matrix_s30_d09_pan","index": 262588,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d00_pitch","varname": "fHslider490","shortname": "MM_Matrix_s31_d00_pitch","address": "/modular-subtractive/MM_Matrix_s31_d00_pitch","index": 264460,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d01_osc2_detune","varname": "fHslider640","shortname": "MM_Matrix_s31_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s31_d01_osc2_detune","index": 265068,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d02_osc3_detune","varname": "fHslider540","shortname": "MM_Matrix_s31_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s31_d02_osc3_detune","index": 264660,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d03_osc_mix_bal","varname": "fHslider590","shortname": "MM_Matrix_s31_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s31_d03_osc_mix_bal","index": 264868,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d04_noise_level","varname": "fHslider439","shortname": "MM_Matrix_s31_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s31_d04_noise_level","index": 264232,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d05_cutoff","varname": "fHslider336","shortname": "MM_Matrix_s31_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s31_d05_cutoff","index": 263808,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d06_resonance","varname": "fHslider390","shortname": "MM_Matrix_s31_d06_resonance","address": "/modular-subtractive/MM_Matrix_s31_d06_resonance","index": 264036,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d07_filter_env_amt","varname": "fHslider337","shortname": "MM_Matrix_s31_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s31_d07_filter_env_amt","index": 263812,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d08_amp","varname": "fHslider242","shortname": "MM_Matrix_s31_d08_amp","address": "/modular-subtractive/MM_Matrix_s31_d08_amp","index": 263432,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s31_d09_pan","varname": "fHslider66","shortname": "MM_Matrix_s31_d09_pan","address": "/modular-subtractive/MM_Matrix_s31_d09_pan","index": 262564,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d00_pitch","varname": "fHslider489","shortname": "MM_Matrix_s32_d00_pitch","address": "/modular-subtractive/MM_Matrix_s32_d00_pitch","index": 264456,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d01_osc2_detune","varname": "fHslider639","shortname": "MM_Matrix_s32_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s32_d01_osc2_detune","index": 265064,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d02_osc3_detune","varname": "fHslider539","shortname": "MM_Matrix_s32_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s32_d02_osc3_detune","index": 264656,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d03_osc_mix_bal","varname": "fHslider589","shortname": "MM_Matrix_s32_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s32_d03_osc_mix_bal","index": 264864,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d04_noise_level","varname": "fHslider438","shortname": "MM_Matrix_s32_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s32_d04_noise_level","index": 264228,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d05_cutoff","varname": "fHslider338","shortname": "MM_Matrix_s32_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s32_d05_cutoff","index": 263816,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d06_resonance","varname": "fHslider389","shortname": "MM_Matrix_s32_d06_resonance","address": "/modular-subtractive/MM_Matrix_s32_d06_resonance","index": 264032,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d07_filter_env_amt","varname": "fHslider339","shortname": "MM_Matrix_s32_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s32_d07_filter_env_amt","index": 263820,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d08_amp","varname": "fHslider241","shortname": "MM_Matrix_s32_d08_amp","address": "/modular-subtractive/MM_Matrix_s32_d08_amp","index": 263428,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s32_d09_pan","varname": "fHslider62","shortname": "MM_Matrix_s32_d09_pan","address": "/modular-subtractive/MM_Matrix_s32_d09_pan","index": 262540,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d00_pitch","varname": "fHslider488","shortname": "MM_Matrix_s33_d00_pitch","address": "/modular-subtractive/MM_Matrix_s33_d00_pitch","index": 264452,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d01_osc2_detune","varname": "fHslider638","shortname": "MM_Matrix_s33_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s33_d01_osc2_detune","index": 265060,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d02_osc3_detune","varname": "fHslider538","shortname": "MM_Matrix_s33_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s33_d02_osc3_detune","index": 264652,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d03_osc_mix_bal","varname": "fHslider588","shortname": "MM_Matrix_s33_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s33_d03_osc_mix_bal","index": 264860,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d04_noise_level","varname": "fHslider437","shortname": "MM_Matrix_s33_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s33_d04_noise_level","index": 264224,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d05_cutoff","varname": "fHslider340","shortname": "MM_Matrix_s33_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s33_d05_cutoff","index": 263824,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d06_resonance","varname": "fHslider388","shortname": "MM_Matrix_s33_d06_resonance","address": "/modular-subtractive/MM_Matrix_s33_d06_resonance","index": 264028,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d07_filter_env_amt","varname": "fHslider341","shortname": "MM_Matrix_s33_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s33_d07_filter_env_amt","index": 263828,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d08_amp","varname": "fHslider240","shortname": "MM_Matrix_s33_d08_amp","address": "/modular-subtractive/MM_Matrix_s33_d08_amp","index": 263424,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s33_d09_pan","varname": "fHslider58","shortname": "MM_Matrix_s33_d09_pan","address": "/modular-subtractive/MM_Matrix_s33_d09_pan","index": 262516,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d00_pitch","varname": "fHslider487","shortname": "MM_Matrix_s34_d00_pitch","address": "/modular-subtractive/MM_Matrix_s34_d00_pitch","index": 264448,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d01_osc2_detune","varname": "fHslider637","shortname": "MM_Matrix_s34_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s34_d01_osc2_detune","index": 265056,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d02_osc3_detune","varname": "fHslider537","shortname": "MM_Matrix_s34_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s34_d02_osc3_detune","index": 264648,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d03_osc_mix_bal","varname": "fHslider587","shortname": "MM_Matrix_s34_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s34_d03_osc_mix_bal","index": 264856,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d04_noise_level","varname": "fHslider436","shortname": "MM_Matrix_s34_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s34_d04_noise_level","index": 264220,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d05_cutoff","varname": "fHslider342","shortname": "MM_Matrix_s34_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s34_d05_cutoff","index": 263832,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d06_resonance","varname": "fHslider387","shortname": "MM_Matrix_s34_d06_resonance","address": "/modular-subtractive/MM_Matrix_s34_d06_resonance","index": 264024,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d07_filter_env_amt","varname": "fHslider343","shortname": "MM_Matrix_s34_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s34_d07_filter_env_amt","index": 263836,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d08_amp","varname": "fHslider239","shortname": "MM_Matrix_s34_d08_amp","address": "/modular-subtractive/MM_Matrix_s34_d08_amp","index": 263420,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s34_d09_pan","varname": "fHslider54","shortname": "MM_Matrix_s34_d09_pan","address": "/modular-subtractive/MM_Matrix_s34_d09_pan","index": 262492,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d00_pitch","varname": "fHslider486","shortname": "MM_Matrix_s35_d00_pitch","address": "/modular-subtractive/MM_Matrix_s35_d00_pitch","index": 264444,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d01_osc2_detune","varname": "fHslider636","shortname": "MM_Matrix_s35_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s35_d01_osc2_detune","index": 265052,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d02_osc3_detune","varname": "fHslider536","shortname": "MM_Matrix_s35_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s35_d02_osc3_detune","index": 264644,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d03_osc_mix_bal","varname": "fHslider586","shortname": "MM_Matrix_s35_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s35_d03_osc_mix_bal","index": 264852,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d04_noise_level","varname": "fHslider435","shortname": "MM_Matrix_s35_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s35_d04_noise_level","index": 264216,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d05_cutoff","varname": "fHslider344","shortname": "MM_Matrix_s35_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s35_d05_cutoff","index": 263840,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d06_resonance","varname": "fHslider386","shortname": "MM_Matrix_s35_d06_resonance","address": "/modular-subtractive/MM_Matrix_s35_d06_resonance","index": 264020,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d07_filter_env_amt","varname": "fHslider345","shortname": "MM_Matrix_s35_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s35_d07_filter_env_amt","index": 263844,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d08_amp","varname": "fHslider238","shortname": "MM_Matrix_s35_d08_amp","address": "/modular-subtractive/MM_Matrix_s35_d08_amp","index": 263416,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s35_d09_pan","varname": "fHslider50","shortname": "MM_Matrix_s35_d09_pan","address": "/modular-subtractive/MM_Matrix_s35_d09_pan","index": 262468,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d00_pitch","varname": "fHslider485","shortname": "MM_Matrix_s36_d00_pitch","address": "/modular-subtractive/MM_Matrix_s36_d00_pitch","index": 264440,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d01_osc2_detune","varname": "fHslider635","shortname": "MM_Matrix_s36_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s36_d01_osc2_detune","index": 265048,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d02_osc3_detune","varname": "fHslider535","shortname": "MM_Matrix_s36_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s36_d02_osc3_detune","index": 264640,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d03_osc_mix_bal","varname": "fHslider585","shortname": "MM_Matrix_s36_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s36_d03_osc_mix_bal","index": 264848,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d04_noise_level","varname": "fHslider434","shortname": "MM_Matrix_s36_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s36_d04_noise_level","index": 264212,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d05_cutoff","varname": "fHslider346","shortname": "MM_Matrix_s36_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s36_d05_cutoff","index": 263848,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d06_resonance","varname": "fHslider385","shortname": "MM_Matrix_s36_d06_resonance","address": "/modular-subtractive/MM_Matrix_s36_d06_resonance","index": 264016,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d07_filter_env_amt","varname": "fHslider347","shortname": "MM_Matrix_s36_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s36_d07_filter_env_amt","index": 263852,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d08_amp","varname": "fHslider237","shortname": "MM_Matrix_s36_d08_amp","address": "/modular-subtractive/MM_Matrix_s36_d08_amp","index": 263412,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s36_d09_pan","varname": "fHslider46","shortname": "MM_Matrix_s36_d09_pan","address": "/modular-subtractive/MM_Matrix_s36_d09_pan","index": 262444,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d00_pitch","varname": "fHslider484","shortname": "MM_Matrix_s37_d00_pitch","address": "/modular-subtractive/MM_Matrix_s37_d00_pitch","index": 264436,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d01_osc2_detune","varname": "fHslider634","shortname": "MM_Matrix_s37_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s37_d01_osc2_detune","index": 265044,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d02_osc3_detune","varname": "fHslider534","shortname": "MM_Matrix_s37_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s37_d02_osc3_detune","index": 264636,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d03_osc_mix_bal","varname": "fHslider584","shortname": "MM_Matrix_s37_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s37_d03_osc_mix_bal","index": 264844,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d04_noise_level","varname": "fHslider433","shortname": "MM_Matrix_s37_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s37_d04_noise_level","index": 264208,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d05_cutoff","varname": "fHslider348","shortname": "MM_Matrix_s37_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s37_d05_cutoff","index": 263856,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d06_resonance","varname": "fHslider384","shortname": "MM_Matrix_s37_d06_resonance","address": "/modular-subtractive/MM_Matrix_s37_d06_resonance","index": 264012,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d07_filter_env_amt","varname": "fHslider349","shortname": "MM_Matrix_s37_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s37_d07_filter_env_amt","index": 263860,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d08_amp","varname": "fHslider236","shortname": "MM_Matrix_s37_d08_amp","address": "/modular-subtractive/MM_Matrix_s37_d08_amp","index": 263408,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s37_d09_pan","varname": "fHslider42","shortname": "MM_Matrix_s37_d09_pan","address": "/modular-subtractive/MM_Matrix_s37_d09_pan","index": 262420,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d00_pitch","varname": "fHslider483","shortname": "MM_Matrix_s38_d00_pitch","address": "/modular-subtractive/MM_Matrix_s38_d00_pitch","index": 264432,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d01_osc2_detune","varname": "fHslider633","shortname": "MM_Matrix_s38_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s38_d01_osc2_detune","index": 265040,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d02_osc3_detune","varname": "fHslider533","shortname": "MM_Matrix_s38_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s38_d02_osc3_detune","index": 264632,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d03_osc_mix_bal","varname": "fHslider583","shortname": "MM_Matrix_s38_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s38_d03_osc_mix_bal","index": 264840,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d04_noise_level","varname": "fHslider432","shortname": "MM_Matrix_s38_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s38_d04_noise_level","index": 264204,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d05_cutoff","varname": "fHslider350","shortname": "MM_Matrix_s38_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s38_d05_cutoff","index": 263864,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d06_resonance","varname": "fHslider383","shortname": "MM_Matrix_s38_d06_resonance","address": "/modular-subtractive/MM_Matrix_s38_d06_resonance","index": 264008,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d07_filter_env_amt","varname": "fHslider351","shortname": "MM_Matrix_s38_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s38_d07_filter_env_amt","index": 263868,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d08_amp","varname": "fHslider235","shortname": "MM_Matrix_s38_d08_amp","address": "/modular-subtractive/MM_Matrix_s38_d08_amp","index": 263404,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s38_d09_pan","varname": "fHslider38","shortname": "MM_Matrix_s38_d09_pan","address": "/modular-subtractive/MM_Matrix_s38_d09_pan","index": 262396,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d00_pitch","varname": "fHslider482","shortname": "MM_Matrix_s39_d00_pitch","address": "/modular-subtractive/MM_Matrix_s39_d00_pitch","index": 264428,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d01_osc2_detune","varname": "fHslider632","shortname": "MM_Matrix_s39_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s39_d01_osc2_detune","index": 265036,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d02_osc3_detune","varname": "fHslider532","shortname": "MM_Matrix_s39_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s39_d02_osc3_detune","index": 264628,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d03_osc_mix_bal","varname": "fHslider582","shortname": "MM_Matrix_s39_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s39_d03_osc_mix_bal","index": 264836,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d04_noise_level","varname": "fHslider431","shortname": "MM_Matrix_s39_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s39_d04_noise_level","index": 264200,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d05_cutoff","varname": "fHslider352","shortname": "MM_Matrix_s39_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s39_d05_cutoff","index": 263872,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d06_resonance","varname": "fHslider382","shortname": "MM_Matrix_s39_d06_resonance","address": "/modular-subtractive/MM_Matrix_s39_d06_resonance","index": 264004,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d07_filter_env_amt","varname": "fHslider353","shortname": "MM_Matrix_s39_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s39_d07_filter_env_amt","index": 263876,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d08_amp","varname": "fHslider234","shortname": "MM_Matrix_s39_d08_amp","address": "/modular-subtractive/MM_Matrix_s39_d08_amp","index": 263400,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s39_d09_pan","varname": "fHslider34","shortname": "MM_Matrix_s39_d09_pan","address": "/modular-subtractive/MM_Matrix_s39_d09_pan","index": 262372,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d00_pitch","varname": "fHslider481","shortname": "MM_Matrix_s40_d00_pitch","address": "/modular-subtractive/MM_Matrix_s40_d00_pitch","index": 264424,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d01_osc2_detune","varname": "fHslider631","shortname": "MM_Matrix_s40_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s40_d01_osc2_detune","index": 265032,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d02_osc3_detune","varname": "fHslider531","shortname": "MM_Matrix_s40_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s40_d02_osc3_detune","index": 264624,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d03_osc_mix_bal","varname": "fHslider581","shortname": "MM_Matrix_s40_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s40_d03_osc_mix_bal","index": 264832,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d04_noise_level","varname": "fHslider430","shortname": "MM_Matrix_s40_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s40_d04_noise_level","index": 264196,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d05_cutoff","varname": "fHslider354","shortname": "MM_Matrix_s40_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s40_d05_cutoff","index": 263880,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d06_resonance","varname": "fHslider381","shortname": "MM_Matrix_s40_d06_resonance","address": "/modular-subtractive/MM_Matrix_s40_d06_resonance","index": 264000,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d07_filter_env_amt","varname": "fHslider355","shortname": "MM_Matrix_s40_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s40_d07_filter_env_amt","index": 263884,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d08_amp","varname": "fHslider233","shortname": "MM_Matrix_s40_d08_amp","address": "/modular-subtractive/MM_Matrix_s40_d08_amp","index": 263396,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s40_d09_pan","varname": "fHslider30","shortname": "MM_Matrix_s40_d09_pan","address": "/modular-subtractive/MM_Matrix_s40_d09_pan","index": 262348,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d00_pitch","varname": "fHslider480","shortname": "MM_Matrix_s41_d00_pitch","address": "/modular-subtractive/MM_Matrix_s41_d00_pitch","index": 264420,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d01_osc2_detune","varname": "fHslider630","shortname": "MM_Matrix_s41_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s41_d01_osc2_detune","index": 265028,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d02_osc3_detune","varname": "fHslider530","shortname": "MM_Matrix_s41_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s41_d02_osc3_detune","index": 264620,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d03_osc_mix_bal","varname": "fHslider580","shortname": "MM_Matrix_s41_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s41_d03_osc_mix_bal","index": 264828,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d04_noise_level","varname": "fHslider429","shortname": "MM_Matrix_s41_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s41_d04_noise_level","index": 264192,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d05_cutoff","varname": "fHslider356","shortname": "MM_Matrix_s41_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s41_d05_cutoff","index": 263888,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d06_resonance","varname": "fHslider380","shortname": "MM_Matrix_s41_d06_resonance","address": "/modular-subtractive/MM_Matrix_s41_d06_resonance","index": 263996,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d07_filter_env_amt","varname": "fHslider357","shortname": "MM_Matrix_s41_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s41_d07_filter_env_amt","index": 263892,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d08_amp","varname": "fHslider232","shortname": "MM_Matrix_s41_d08_amp","address": "/modular-subtractive/MM_Matrix_s41_d08_amp","index": 263392,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s41_d09_pan","varname": "fHslider26","shortname": "MM_Matrix_s41_d09_pan","address": "/modular-subtractive/MM_Matrix_s41_d09_pan","index": 262324,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d00_pitch","varname": "fHslider479","shortname": "MM_Matrix_s42_d00_pitch","address": "/modular-subtractive/MM_Matrix_s42_d00_pitch","index": 264416,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d01_osc2_detune","varname": "fHslider629","shortname": "MM_Matrix_s42_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s42_d01_osc2_detune","index": 265024,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d02_osc3_detune","varname": "fHslider529","shortname": "MM_Matrix_s42_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s42_d02_osc3_detune","index": 264616,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d03_osc_mix_bal","varname": "fHslider579","shortname": "MM_Matrix_s42_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s42_d03_osc_mix_bal","index": 264824,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d04_noise_level","varname": "fHslider428","shortname": "MM_Matrix_s42_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s42_d04_noise_level","index": 264188,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d05_cutoff","varname": "fHslider358","shortname": "MM_Matrix_s42_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s42_d05_cutoff","index": 263896,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d06_resonance","varname": "fHslider379","shortname": "MM_Matrix_s42_d06_resonance","address": "/modular-subtractive/MM_Matrix_s42_d06_resonance","index": 263992,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d07_filter_env_amt","varname": "fHslider359","shortname": "MM_Matrix_s42_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s42_d07_filter_env_amt","index": 263900,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d08_amp","varname": "fHslider231","shortname": "MM_Matrix_s42_d08_amp","address": "/modular-subtractive/MM_Matrix_s42_d08_amp","index": 263388,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s42_d09_pan","varname": "fHslider22","shortname": "MM_Matrix_s42_d09_pan","address": "/modular-subtractive/MM_Matrix_s42_d09_pan","index": 262300,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d00_pitch","varname": "fHslider478","shortname": "MM_Matrix_s43_d00_pitch","address": "/modular-subtractive/MM_Matrix_s43_d00_pitch","index": 264412,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d01_osc2_detune","varname": "fHslider628","shortname": "MM_Matrix_s43_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s43_d01_osc2_detune","index": 265020,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d02_osc3_detune","varname": "fHslider528","shortname": "MM_Matrix_s43_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s43_d02_osc3_detune","index": 264612,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d03_osc_mix_bal","varname": "fHslider578","shortname": "MM_Matrix_s43_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s43_d03_osc_mix_bal","index": 264820,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d04_noise_level","varname": "fHslider427","shortname": "MM_Matrix_s43_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s43_d04_noise_level","index": 264184,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d05_cutoff","varname": "fHslider360","shortname": "MM_Matrix_s43_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s43_d05_cutoff","index": 263904,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d06_resonance","varname": "fHslider378","shortname": "MM_Matrix_s43_d06_resonance","address": "/modular-subtractive/MM_Matrix_s43_d06_resonance","index": 263988,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d07_filter_env_amt","varname": "fHslider361","shortname": "MM_Matrix_s43_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s43_d07_filter_env_amt","index": 263908,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d08_amp","varname": "fHslider230","shortname": "MM_Matrix_s43_d08_amp","address": "/modular-subtractive/MM_Matrix_s43_d08_amp","index": 263384,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s43_d09_pan","varname": "fHslider18","shortname": "MM_Matrix_s43_d09_pan","address": "/modular-subtractive/MM_Matrix_s43_d09_pan","index": 262276,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d00_pitch","varname": "fHslider477","shortname": "MM_Matrix_s44_d00_pitch","address": "/modular-subtractive/MM_Matrix_s44_d00_pitch","index": 264408,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d01_osc2_detune","varname": "fHslider627","shortname": "MM_Matrix_s44_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s44_d01_osc2_detune","index": 265016,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d02_osc3_detune","varname": "fHslider527","shortname": "MM_Matrix_s44_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s44_d02_osc3_detune","index": 264608,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d03_osc_mix_bal","varname": "fHslider577","shortname": "MM_Matrix_s44_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s44_d03_osc_mix_bal","index": 264816,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d04_noise_level","varname": "fHslider426","shortname": "MM_Matrix_s44_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s44_d04_noise_level","index": 264180,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d05_cutoff","varname": "fHslider362","shortname": "MM_Matrix_s44_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s44_d05_cutoff","index": 263912,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d06_resonance","varname": "fHslider377","shortname": "MM_Matrix_s44_d06_resonance","address": "/modular-subtractive/MM_Matrix_s44_d06_resonance","index": 263984,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d07_filter_env_amt","varname": "fHslider363","shortname": "MM_Matrix_s44_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s44_d07_filter_env_amt","index": 263916,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d08_amp","varname": "fHslider229","shortname": "MM_Matrix_s44_d08_amp","address": "/modular-subtractive/MM_Matrix_s44_d08_amp","index": 263380,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s44_d09_pan","varname": "fHslider14","shortname": "MM_Matrix_s44_d09_pan","address": "/modular-subtractive/MM_Matrix_s44_d09_pan","index": 262252,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d00_pitch","varname": "fHslider476","shortname": "MM_Matrix_s45_d00_pitch","address": "/modular-subtractive/MM_Matrix_s45_d00_pitch","index": 264404,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d01_osc2_detune","varname": "fHslider626","shortname": "MM_Matrix_s45_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s45_d01_osc2_detune","index": 265012,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d02_osc3_detune","varname": "fHslider526","shortname": "MM_Matrix_s45_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s45_d02_osc3_detune","index": 264604,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d03_osc_mix_bal","varname": "fHslider576","shortname": "MM_Matrix_s45_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s45_d03_osc_mix_bal","index": 264812,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d04_noise_level","varname": "fHslider425","shortname": "MM_Matrix_s45_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s45_d04_noise_level","index": 264176,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d05_cutoff","varname": "fHslider364","shortname": "MM_Matrix_s45_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s45_d05_cutoff","index": 263920,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d06_resonance","varname": "fHslider376","shortname": "MM_Matrix_s45_d06_resonance","address": "/modular-subtractive/MM_Matrix_s45_d06_resonance","index": 263980,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d07_filter_env_amt","varname": "fHslider365","shortname": "MM_Matrix_s45_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s45_d07_filter_env_amt","index": 263924,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d08_amp","varname": "fHslider228","shortname": "MM_Matrix_s45_d08_amp","address": "/modular-subtractive/MM_Matrix_s45_d08_amp","index": 263376,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s45_d09_pan","varname": "fHslider10","shortname": "MM_Matrix_s45_d09_pan","address": "/modular-subtractive/MM_Matrix_s45_d09_pan","index": 262228,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d00_pitch","varname": "fHslider475","shortname": "MM_Matrix_s46_d00_pitch","address": "/modular-subtractive/MM_Matrix_s46_d00_pitch","index": 264400,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d01_osc2_detune","varname": "fHslider625","shortname": "MM_Matrix_s46_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s46_d01_osc2_detune","index": 265008,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d02_osc3_detune","varname": "fHslider525","shortname": "MM_Matrix_s46_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s46_d02_osc3_detune","index": 264600,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d03_osc_mix_bal","varname": "fHslider575","shortname": "MM_Matrix_s46_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s46_d03_osc_mix_bal","index": 264808,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d04_noise_level","varname": "fHslider424","shortname": "MM_Matrix_s46_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s46_d04_noise_level","index": 264172,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d05_cutoff","varname": "fHslider366","shortname": "MM_Matrix_s46_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s46_d05_cutoff","index": 263928,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d06_resonance","varname": "fHslider375","shortname": "MM_Matrix_s46_d06_resonance","address": "/modular-subtractive/MM_Matrix_s46_d06_resonance","index": 263976,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d07_filter_env_amt","varname": "fHslider367","shortname": "MM_Matrix_s46_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s46_d07_filter_env_amt","index": 263932,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d08_amp","varname": "fHslider227","shortname": "MM_Matrix_s46_d08_amp","address": "/modular-subtractive/MM_Matrix_s46_d08_amp","index": 263372,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s46_d09_pan","varname": "fHslider6","shortname": "MM_Matrix_s46_d09_pan","address": "/modular-subtractive/MM_Matrix_s46_d09_pan","index": 262204,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d00_pitch","varname": "fHslider474","shortname": "MM_Matrix_s47_d00_pitch","address": "/modular-subtractive/MM_Matrix_s47_d00_pitch","index": 264396,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d01_osc2_detune","varname": "fHslider624","shortname": "MM_Matrix_s47_d01_osc2_detune","address": "/modular-subtractive/MM_Matrix_s47_d01_osc2_detune","index": 265004,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d02_osc3_detune","varname": "fHslider524","shortname": "MM_Matrix_s47_d02_osc3_detune","address": "/modular-subtractive/MM_Matrix_s47_d02_osc3_detune","index": 264596,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d03_osc_mix_bal","varname": "fHslider574","shortname": "MM_Matrix_s47_d03_osc_mix_bal","address": "/modular-subtractive/MM_Matrix_s47_d03_osc_mix_bal","index": 264804,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d04_noise_level","varname": "fHslider423","shortname": "MM_Matrix_s47_d04_noise_level","address": "/modular-subtractive/MM_Matrix_s47_d04_noise_level","index": 264168,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d05_cutoff","varname": "fHslider368","shortname": "MM_Matrix_s47_d05_cutoff","address": "/modular-subtractive/MM_Matrix_s47_d05_cutoff","index": 263936,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d06_resonance","varname": "fHslider374","shortname": "MM_Matrix_s47_d06_resonance","address": "/modular-subtractive/MM_Matrix_s47_d06_resonance","index": 263972,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d07_filter_env_amt","varname": "fHslider369","shortname": "MM_Matrix_s47_d07_filter_env_amt","address": "/modular-subtractive/MM_Matrix_s47_d07_filter_env_amt","index": 263940,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d08_amp","varname": "fHslider226","shortname": "MM_Matrix_s47_d08_amp","address": "/modular-subtractive/MM_Matrix_s47_d08_amp","index": 263368,"init": 0,"min": -1,"max": 1,"step": 0.001},{"type": "hslider","label": "MM_Matrix/s47_d09_pan","varname": "fHslider2","shortname": "MM_Matrix_s47_d09_pan","address": "/modular-subtractive/MM_Matrix_s47_d09_pan","index": 262180,"init": 0,"min": -1,"max": 1,"step": 0.001}]}]} \ No newline at end of file diff --git a/playground/faust/modular-subtractive.wasm b/playground/faust/modular-subtractive.wasm new file mode 100644 index 0000000..4d811c6 Binary files /dev/null and b/playground/faust/modular-subtractive.wasm differ diff --git a/playground/js/a-app.js b/playground/js/a-app.js index 1fcc82c..f29b158 100644 --- a/playground/js/a-app.js +++ b/playground/js/a-app.js @@ -21,8 +21,11 @@ import { EOCChain } from './eoc/index.js'; import { EOCChainUI, moduleFactory } from './ui/eoc-chain-ui.js'; import { EngineSwitcher } from './ui/engine-switcher.js'; import { EOCJoystick } from './ui/eoc-joystick.js'; +import { initModularUI } from './ui/modular-ui.js'; import { AdditiveEngine } from './synth/additive-engine.js'; import { FMEngine } from './synth/fm-engine.js'; +import { ModularEngine } from './synth/modular-engine.js'; +import { MODULAR_PRESETS, applyPreset as applyModularPreset, findPreset as findModularPreset } from './synth/modular-presets.js'; // ---- Constants ---- const N_JOY_INPUTS = 2; @@ -36,6 +39,10 @@ let N_OUTPUTS = N_SYNTH_OUTPUTS; // Dynamic — changes with output mode let audioCanvas = null; // lazily created on first switch to audio-canvas mode const STORAGE_KEY = 'nisps-a-immersive'; +// Phase E — deferred modular DSP state. loadState() stashes this; the +// engine-switch handler consumes it as soon as a ModularEngine exists. +let _pendingModularDspState = null; + const VISUAL_PARAM_NAMES = [ 'Flow', 'Scale', 'Speed', 'Hue', 'Spread', 'Size', 'Trail', 'Turb', 'Attract', 'Radius', 'DispRate', 'DispAmt', 'Lifetime', 'Respawn', @@ -116,6 +123,10 @@ let imlEoc = null; // second IML for EOC params (Linked/Independent mode) let eocTrainingTarget = 'synth'; // 'synth' | 'eoc' — which MLP RL feedback targets let eocJoystick = null; // EOCJoystick instance for Independent mode +// Modular-mode UI (Phase C) — created once during init(), toggled via show/hide +// by setActiveEngine() when the modular engine becomes active. +let modularUI = null; + // ---- MIDI CC state ---- let midiOutput = null; // Storage key scoped per engine so CC assignments don't bleed between engines. @@ -1164,6 +1175,13 @@ async function setActiveEngine(engine) { // Clear active preset — it belongs to the previous engine activeSynthPresetId = null; + + // Modular UI show/hide (Phase C). The UI is created once during init() + // and stays in the DOM; we toggle its visibility via the dock icon. + if (modularUI) { + if (engine.id === 'modular') modularUI.show(); + else modularUI.hide(); + } } async function resizeMLP(newOutputCount) { @@ -1292,6 +1310,12 @@ async function init() { paramCount: 55, description: '4-operator FM with continuous routing matrix. Algorithm emerges from exploration.', }, + { + id: 'modular', + displayName: 'Modular', + paramCount: 512, + description: 'Shared mod pool (ADSRs + LFOs) routed through a matrix into a swappable voice. Starts with a 3-osc subtractive sub-engine.', + }, ]; const engineSwitcherEl = document.getElementById('synth-engine-switcher'); if (engineSwitcherEl) { @@ -1308,6 +1332,26 @@ async function init() { newEngine = new AdditiveEngine(); } else if (engineId === 'fm') { newEngine = new FMEngine(); + } else if (engineId === 'modular') { + newEngine = new ModularEngine(); + // When the modular engine's paramMeta changes (sub-engine swap or + // expose/unexpose toggles from Phase C UI), resize the MLP and + // rebuild downstream state that depends on paramCount. + newEngine.on('paramMeta:change', async () => { + if (activeEngine !== newEngine) return; + await resizeMLP(totalOutputCount()); + if (eocChain?.nispsMode === 'shared') { + const combinedMeta = [...(newEngine.paramMeta ?? []), ...eocChain.paramMeta]; + rebuildHeatmap(combinedMeta); + } else { + rebuildHeatmap(newEngine.paramMeta); + } + if (newEngine.paramMeta?.length > 0) { + rebuildParamToSection(newEngine.paramMeta); + if (synthVisualizer) synthVisualizer.rebuild(newEngine.paramMeta); + } + buildEngineParamOverrides(); + }); } else { showToast(`Unknown engine: ${engineId}`); return; @@ -1332,6 +1376,27 @@ async function init() { await newEngine.init(audioCtxForInit); } + // Phase E — apply any pending modular DSP snapshot from loadState(). + // Runs BEFORE setActiveEngine so paramMeta is correct when the MLP + // resizes below. Note: Phase C's UI state (counts, sub-engine, + // exposed params, enables) is applied separately by modular-ui.js + // on its first refresh(); that runs AFTER setActiveEngine via + // modularUI.show(), so the load ordering is: + // 1. setState() here — restores raw DSP values + sub-engine + // 2. modular-ui refresh() — replays Phase C's UI state + // Step 2 may call setModSourceCount() which re-emits + // paramMeta:change; that's fine since the raw values are already + // in _lastRawByLabel. + if (engineId === 'modular' && _pendingModularDspState && + typeof newEngine.setState === 'function') { + try { + await newEngine.setState(_pendingModularDspState); + } catch (err) { + console.warn('[NISPS] modular setState on engine switch failed:', err); + } + _pendingModularDspState = null; + } + await setActiveEngine(newEngine); } } catch (err) { @@ -1351,6 +1416,22 @@ async function init() { // Wire events wireJoystick(); wireDock(); + + // Phase C: Modular UI. Mount once here (after dock + drawer-stack exist). + // The UI is hidden until the modular engine becomes active. + try { + modularUI = initModularUI({ + getEngine: () => activeEngine, + // Phase E: when modular UI mutates its state (preset applied, + // enables toggled, etc.) trigger the top-level save so the DSP + // snapshot is re-persisted alongside Phase C's UI-state key. + onStateChange: () => saveState(), + }); + if (activeEngine?.id === 'modular') modularUI.show(); + } catch (err) { + console.error('[NISPS] Failed to init modular UI:', err); + } + wireControls(); wireSynthControls(); wireGamepad(); @@ -1520,6 +1601,47 @@ async function init() { inferBatch: (points) => iml.inferBatch(points), getLayerStats:() => iml.getLayerStats(), eocChain, + // ---- Phase E — modular engine hooks ---- + get activeEngine() { return activeEngine; }, + get activeEngineId() { return activeEngine?.id ?? null; }, + get paramCount() { return activeEngine?.paramCount ?? 0; }, + /** Returns the modular engine's full DSP snapshot, or null if not active. */ + getModularState: () => { + if (activeEngine?.id !== 'modular' || + typeof activeEngine.getState !== 'function') return null; + return activeEngine.getState(); + }, + /** Restores a modular DSP snapshot. Returns a Promise. */ + setModularState: async (s) => { + if (activeEngine?.id !== 'modular' || + typeof activeEngine.setState !== 'function') return false; + await activeEngine.setState(s); + return true; + }, + /** Swap the active sub-engine (subtractive/additive/fm). */ + setModularSubEngine: async (id) => { + if (activeEngine?.id !== 'modular' || + typeof activeEngine.setSubEngine !== 'function') return false; + await activeEngine.setSubEngine(id); + return true; + }, + /** Apply a named modular preset. Returns a Promise. */ + applyModularPreset: async (presetId) => { + if (activeEngine?.id !== 'modular') return false; + const p = findModularPreset(presetId); + if (!p) return false; + await applyModularPreset(activeEngine, p); + return true; + }, + /** Change modular ADSR/LFO counts. */ + setModularSourceCount: (adsr, lfo) => { + if (activeEngine?.id !== 'modular' || + typeof activeEngine.setModSourceCount !== 'function') return false; + activeEngine.setModSourceCount(adsr, lfo); + return true; + }, + /** List of known modular preset ids. */ + listModularPresets: () => MODULAR_PRESETS.map(p => ({ id: p.id, name: p.name })), }; } @@ -4091,6 +4213,21 @@ function saveState() { })) : [], eocNispsMode: eocChain ? eocChain.nispsMode : 'bypass', eocTrainingTarget, + // Phase E — full modular DSP snapshot. Only stored when the active + // engine is the modular engine. Contains raw per-label values; the + // UI-facing state (sub-engine choice, counts, enables, exposed params) + // lives in a separate localStorage key 'nisps-modular-state' owned by + // modular-ui.js. On load we apply the UI state first (sub-engine swap, + // counts) and then this dsp dict overwrites any default values. + modularDspState: (activeEngine && activeEngine.id === 'modular' && + typeof activeEngine.getState === 'function') + ? (() => { + const s = activeEngine.getState(); + // Strip fields already owned by Phase C's UI state key to keep a + // single source of truth per field. + return { version: s.version, dsp: s.dsp }; + })() + : null, }; localStorage.setItem(STORAGE_KEY, JSON.stringify(state)); } catch (e) { @@ -4198,6 +4335,22 @@ async function loadState() { EngineSwitcher.setActive(activeEngine ? activeEngine.id : 'shaper-feedback'); } + // Phase E — stash modular DSP state so it can be applied once the + // ModularEngine instance actually exists. Applied either right now (if + // the active engine is already modular) or later from the engine-switch + // handler when the user clicks the Modular card. + if (state.modularDspState && typeof state.modularDspState === 'object') { + _pendingModularDspState = state.modularDspState; + if (activeEngine?.id === 'modular' && typeof activeEngine.setState === 'function') { + try { + await activeEngine.setState(_pendingModularDspState); + _pendingModularDspState = null; + } catch (err) { + console.warn('[NISPS] modular setState on load failed:', err); + } + } + } + // Restore EOC chain state (modules, enabled flags, param values, nispsMode) if (eocChain && Array.isArray(state.eocModules) && state.eocModules.length > 0) { for (const saved of state.eocModules) { diff --git a/playground/js/synth/modular-engine.js b/playground/js/synth/modular-engine.js new file mode 100644 index 0000000..6afd8a0 --- /dev/null +++ b/playground/js/synth/modular-engine.js @@ -0,0 +1,839 @@ +/** + * modular-engine.js — Phase B of the "Modular" audio mode. + * + * ModularEngine wraps one or more Faust sub-engines (subtractive, additive, + * fm — additive/fm are Phase D) that share a common mod pool (16 ADSRs, + * 32 LFOs) routed through a 48 × 10 modulation matrix. It presents a + * unified SynthEngine interface to the rest of the playground. + * + * Phase B implements the `modular-subtractive` sub-engine only. The other + * two slots are declared as stubs so Phase D can drop them in without + * touching ModularEngine or a-app.js. + * + * Differences from other Faust engines: + * - Does NOT extend FaustEngineBase — it has its own worklet lifecycle + * because the modular processors need `uiJson` threaded through the + * init message (Faust 2.79 wasm builds don't export getJSON), and + * because sub-engine swapping requires disposing and re-initialising + * the worklet node. + * - paramMeta is NOT built with `faustJsonToParamMeta()`. Instead we + * walk the JSON ourselves, collect non-hidden leaf params in the + * SAME order the worklet's `_buildZoneIndexFromJson` walks them + * (that walk order defines the "NISPS index" = position in the + * worklet's `_paramZones` array), then assemble paramMeta in a + * curated order: mod-source params first, matrix cells second, + * engine sound params last (hidden from MLP by default, exposable + * via Phase C UI). + * + * Each paramMeta entry carries a `faustIndex` field that is the worklet's + * NISPS index (position in `_paramZones`), not the raw memory-offset + * `index` field from the Faust JSON. `setParam(i, normValue)` sends + * `{ type:'setParam', index: faustIndex, value: raw }` to the worklet, + * and the processor's `_onSetParam` does the zone lookup. + */ + +import { SynthEngine } from './engine-interface.js'; + +// ----------------------------------------------------------------------------- +// Sub-engine registry +// ----------------------------------------------------------------------------- +// +// Each entry describes one Faust sub-engine that can back ModularEngine. +// Only `subtractive` is active in Phase B; `additive` and `fm` are stubs +// reserved for Phase D. +// +// destNames is the ordered list of modulation destinations, matching +// Matrix/s_d_ labels in the Faust JSON. Index into this +// array == the `d` suffix in the matrix labels. + +const SUB_ENGINES = { + subtractive: { + id: 'modular-subtractive', + displayName: 'Subtractive (3-osc)', + wasmUrl: 'faust/modular-subtractive.wasm', + jsonUrl: 'faust/modular-subtractive.json', + workletUrl: 'faust/modular-subtractive-processor.js', + processorName: 'modular-subtractive-processor', + destCount: 10, + destNames: [ + 'pitch', 'osc2_detune', 'osc3_detune', 'osc_mix_bal', 'noise_level', + 'cutoff', 'resonance', 'filter_env_amt', 'amp', 'pan', + ], + // Top-level group labels that hold the engine's sound params (the + // pieces that aren't mod pool / matrix / hidden). These map into + // paramMeta when setEngineParamExposed() opts them in. + soundGroupPrefixes: ['1_Oscillators', '2_Mixer', '3_Filter', '4_Master'], + }, + additive: { + id: 'modular-additive', + displayName: 'Additive (64-partial)', + wasmUrl: 'faust/modular-additive.wasm', + jsonUrl: 'faust/modular-additive.json', + workletUrl: 'faust/modular-additive-processor.js', + processorName: 'modular-additive-processor', + destCount: 10, + destNames: [ + 'pitch', 'bright', 'tilt', 'inharmonicity', 'odd_even', + 'formant_ctr', 'formant_depth', 'noise_mix', 'amp', 'pan', + ], + soundGroupPrefixes: ['1_Spectral', '2_Formants', '3_Master'], + }, + fm: { + id: 'modular-fm', + displayName: 'FM (4-op matrix)', + wasmUrl: 'faust/modular-fm.wasm', + jsonUrl: 'faust/modular-fm.json', + workletUrl: 'faust/modular-fm-processor.js', + processorName: 'modular-fm-processor', + destCount: 10, + destNames: [ + 'pitch', 'op1_level', 'op2_level', 'op3_level', 'op4_level', + 'cross_mod_global', 'feedback_global', 'global_ratio', 'amp', 'pan', + ], + soundGroupPrefixes: ['1_Operators', '2_CrossMod', '3_Feedback', '4_Master'], + }, +}; + +// Number of ADSR / LFO slots exposed to the MLP by default. The Faust DSP +// always compiles 16 ADSR + 32 LFO slots; the first N of each are what the +// MLP can drive, the rest are user-set-only (enable=0 by default). +const DEFAULT_ADSR_COUNT = 4; +const DEFAULT_LFO_COUNT = 8; + +// Per-source params driven by the MLP (enable is excluded — it's a +// discrete flag, poor target for continuous output). +const ADSR_MLP_PARAMS = ['attack', 'decay', 'sustain', 'release']; +const LFO_MLP_PARAMS = ['rate', 'morph']; + +// ----------------------------------------------------------------------------- + +export class ModularEngine extends SynthEngine { + constructor() { + super(); + + this._activeSubId = 'subtractive'; // keyword into SUB_ENGINES + this._subCfg = SUB_ENGINES[this._activeSubId]; + + // How many ADSR / LFO slots the MLP-facing paramMeta will contain. + // Can be changed at runtime via setModSourceCount(). + this._adsrCount = DEFAULT_ADSR_COUNT; + this._lfoCount = DEFAULT_LFO_COUNT; + + this._audioCtx = null; + this._workletNode = null; + this._masterGain = null; + this._outputNode = null; + this._running = false; + this._onReady = null; + + // Parsed Faust JSON of the active sub-engine. + this._faustJson = null; + + // Walk-order index maps. _walkEntries[i] is the ith non-hidden leaf + // param in the UI-tree walk — the same i that the worklet uses as + // its zone index. + this._walkEntries = []; // [{ label, path, min, max, init, nispsIndex }] + this._labelToWalk = new Map(); // label -> walk entry + + // MLP-facing paramMeta (ordered: ADSR → LFO → Matrix → optional sound). + this._paramMeta = []; + + // Exposure toggles (Phase C hooks). + this._exposedEngineParams = new Set(); // label strings + + // Most-recent raw value written to each DSP label (by _setRawByLabel + // or setParam). Used by getState() to snapshot current DSP values + // without round-tripping through the worklet. Cleared on sub-engine + // swap since labels are sub-engine-specific. + this._lastRawByLabel = new Map(); // label -> rawValue + + // Event listeners. + this._listeners = new Map(); // type -> Set + } + + // --------------------------------------------------------------------------- + // SynthEngine identity + // --------------------------------------------------------------------------- + + get id() { return 'modular'; } + get displayName() { return 'Modular'; } + get paramMeta() { return this._paramMeta; } + + /** Id of the currently active Faust sub-engine (e.g. 'subtractive'). */ + get activeSubEngineId() { return this._activeSubId; } + + /** List of sub-engine ids that are currently implemented. */ + get availableSubEngines() { + return Object.keys(SUB_ENGINES); + } + + /** Destination names for the active sub-engine (matrix column headers). */ + get destNames() { + return this._subCfg?.destNames?.slice() ?? []; + } + + /** + * List of Faust labels for the active sub-engine's sound params — i.e. + * leaf params under any of `soundGroupPrefixes`. Used by the modular UI + * to populate the "expose to MLP" checkbox list. + */ + getEngineSoundParamLabels() { + const prefixes = this._subCfg?.soundGroupPrefixes ?? []; + if (prefixes.length === 0) return []; + const out = []; + for (const entry of this._walkEntries) { + const label = entry.label; + if (!label) continue; + if (prefixes.some(p => label.startsWith(p + '/'))) { + out.push({ + label, + min: entry.min, + max: entry.max, + init: entry.init, + }); + } + } + return out; + } + + /** True if a given engine sound param is currently exposed to the MLP. */ + isEngineParamExposed(label) { + return this._exposedEngineParams.has(label); + } + + /** Snapshot of the currently exposed engine sound param labels. */ + getExposedEngineParams() { + return [...this._exposedEngineParams]; + } + + // --------------------------------------------------------------------------- + // Phase E — full state snapshot / restore + // --------------------------------------------------------------------------- + + /** + * Capture a full raw-DSP snapshot suitable for `setState()`. Walks every + * non-hidden leaf param discovered by `_walkFaustJson()` and records its + * current value either from the live worklet (by label lookup) or from + * `_pendingByLabel` / init defaults if the worklet isn't running yet. + * + * Shape: + * { + * version: 1, + * subEngine: 'subtractive', + * adsrCount, lfoCount, + * exposedEngineParams: ['3_Filter/00_cutoff', ...], + * dsp: { [label]: rawValue, ... }, + * } + */ + getState() { + const dsp = {}; + for (const entry of this._walkEntries) { + const label = entry.label; + if (!label) continue; + let v; + if (this._lastRawByLabel.has(label)) { + v = this._lastRawByLabel.get(label); + } else { + v = entry.init; + } + dsp[label] = v; + } + return { + version: 1, + subEngine: this._activeSubId, + adsrCount: this._adsrCount, + lfoCount: this._lfoCount, + exposedEngineParams: [...this._exposedEngineParams], + dsp, + }; + } + + /** + * Restore a snapshot produced by `getState()`. + * + * Steps: + * 1. Validates `version` (currently only 1 is supported). + * 2. Swaps sub-engine if different (awaits the worklet swap; the swap + * reapplies the default patch first, which we then overwrite). + * 3. Sets adsrCount / lfoCount via `setModSourceCount`. + * 4. Restores `_exposedEngineParams`. + * 5. Writes every `dsp[label]` to the worklet via `_setRawByLabel`. + * Unknown labels (e.g. from a sub-engine snapshot that's been re-saved + * against a different sub-engine) are silently skipped. + * 6. Rebuilds paramMeta and emits `paramMeta:change` exactly once. + * + * Emits `paramMeta:change` at the end. + */ + async setState(state) { + if (!state || typeof state !== 'object') return; + if (state.version != null && state.version !== 1) { + console.warn(`[ModularEngine] setState: unknown version ${state.version}, skipping`); + return; + } + + // 1. Sub-engine swap (async — reloads JSON, reinstantiates worklet if running) + if (typeof state.subEngine === 'string' && + state.subEngine !== this._activeSubId && + SUB_ENGINES[state.subEngine]) { + try { + await this.setSubEngine(state.subEngine); + } catch (err) { + console.warn('[ModularEngine] setState: setSubEngine failed', err); + } + } + + // 2. Mod source counts. Don't call setModSourceCount() directly because + // it rebuilds paramMeta and fires paramMeta:change — we want exactly + // one rebuild at the very end. + if (typeof state.adsrCount === 'number') { + this._adsrCount = Math.max(1, Math.min(16, state.adsrCount | 0)); + } + if (typeof state.lfoCount === 'number') { + this._lfoCount = Math.max(1, Math.min(32, state.lfoCount | 0)); + } + + // 3. Exposed engine sound params + if (Array.isArray(state.exposedEngineParams)) { + this._exposedEngineParams = new Set( + state.exposedEngineParams.filter(l => typeof l === 'string' && this._labelToWalk.has(l)) + ); + } + + // 4. Raw DSP values. Only write labels the active sub-engine knows about. + // If the engine isn't running yet, _setRawByLabel is a no-op — but + // we still record the value in _lastRawByLabel so a later getState() + // sees it, and so that once init() runs _applyDefaultPatch we can + // replay through the pending path. + if (state.dsp && typeof state.dsp === 'object') { + for (const [label, rawVal] of Object.entries(state.dsp)) { + if (typeof rawVal !== 'number') continue; + if (!this._labelToWalk.has(label)) continue; + this._setRawByLabel(label, rawVal); + } + } + + // 5. Single paramMeta rebuild + event emission. + this._rebuildParamMeta(); + this._emit('paramMeta:change', { engine: this }); + } + + /** + * Re-apply the Phase B default patch. Exposed so preset code can reset + * to a known baseline before layering a preset on top. Safe to call + * before or after init() — pre-init it just updates the _lastRawByLabel + * bookkeeping. + */ + resetToDefaults() { + this._applyDefaultPatch(); + } + + // --------------------------------------------------------------------------- + // Lifecycle + // --------------------------------------------------------------------------- + + /** + * Load the default sub-engine's JSON so paramCount is known before init(). + * Safe to call multiple times. + * + * Also seeds `_lastRawByLabel` with the Phase B default patch values so + * that `getState()` returns a meaningful snapshot before audio has been + * started. Without this the snapshot reports raw DSP init values (0 for + * most matrix cells), which is technically correct pre-init but is + * surprising — the default patch is a property of the engine, not of + * the worklet lifecycle. + */ + async loadParamMeta() { + if (this._paramMeta.length > 0) return; + await this._loadSubEngineJson(this._activeSubId); + this._rebuildParamMeta(); + this._applyDefaultPatch(); + } + + /** + * Initialise the engine: load the active sub-engine, register the worklet, + * create the node, apply the default patch. + */ + async init(audioCtx) { + if (this._running) return; + if (!audioCtx) { + audioCtx = new (window.AudioContext || window.webkitAudioContext)(); + } + this._audioCtx = audioCtx; + + if (!this._faustJson) { + await this._loadSubEngineJson(this._activeSubId); + this._rebuildParamMeta(); + } + + await this._instantiateWorklet(); + this._applyDefaultPatch(); + this._running = true; + } + + /** Release all resources. */ + dispose() { + this._teardownWorklet(); + this._running = false; + this._audioCtx = null; + } + + getOutputNode() { return this._outputNode; } + + /** Convenience: set master gain (wired to the volume slider in a-app.js). */ + setMasterVolume(value) { + if (this._masterGain && this._audioCtx) { + this._masterGain.gain.setTargetAtTime(value, this._audioCtx.currentTime, 0.01); + } + } + + /** Mirror FaustEngineBase.stop()/start() for hot-pause on the audio button. */ + async stop() { + if (this._masterGain && this._audioCtx) { + this._masterGain.gain.setTargetAtTime(0, this._audioCtx.currentTime, 0.01); + } + this._running = false; + } + async start() { + if (this._masterGain && this._audioCtx) { + this._masterGain.gain.setTargetAtTime(0.7, this._audioCtx.currentTime, 0.01); + } + this._running = true; + } + + // --------------------------------------------------------------------------- + // Real-time control + // --------------------------------------------------------------------------- + + setParam(index, normalizedValue) { + const meta = this._paramMeta[index]; + if (!meta) return; + const raw = meta.min + normalizedValue * (meta.max - meta.min); + // Record the write so getState() can see it even if no worklet yet. + if (meta.label) this._lastRawByLabel.set(meta.label, raw); + if (!this._workletNode) return; + this._workletNode.port.postMessage({ + type: 'setParam', + index: meta.faustIndex, + value: raw, + }); + } + + noteOn(note, vel = 0.7) { + if (!this._workletNode) return; + const freq = 440 * Math.pow(2, (note - 69) / 12); + this._workletNode.port.postMessage({ type: 'noteOn', freq, vel }); + } + + noteOff(note) { + if (!this._workletNode) return; + const freq = 440 * Math.pow(2, (note - 69) / 12); + this._workletNode.port.postMessage({ type: 'noteOff', freq }); + } + + // --------------------------------------------------------------------------- + // Phase C hooks (public API the modular UI will call) + // --------------------------------------------------------------------------- + + /** + * Swap the active Faust sub-engine. Rebuilds paramMeta and emits + * 'paramMeta:change' so a-app.js can resize the MLP. + * + * @param {string} id Key into SUB_ENGINES (e.g. 'subtractive'). + */ + async setSubEngine(id) { + if (!SUB_ENGINES[id]) { + throw new Error(`[ModularEngine] Unknown sub-engine: ${id}`); + } + if (id === this._activeSubId && this._running) return; + + const wasRunning = this._running; + this._teardownWorklet(); + this._running = false; + + this._activeSubId = id; + this._subCfg = SUB_ENGINES[id]; + this._faustJson = null; + this._exposedEngineParams.clear(); + this._lastRawByLabel.clear(); + + await this._loadSubEngineJson(id); + this._rebuildParamMeta(); + // Seed default-patch values even if the worklet isn't running — keeps + // getState() consistent with loadParamMeta()'s post-condition. + this._applyDefaultPatch(); + + if (wasRunning && this._audioCtx) { + await this._instantiateWorklet(); + this._applyDefaultPatch(); + this._running = true; + } + this._emit('paramMeta:change', { engine: this }); + } + + /** + * Opt a specific engine sound param into the MLP-controllable set. + * Rebuilds paramMeta and fires 'paramMeta:change'. + * + * @param {string} label Full Faust label, e.g. '3_Filter/00_cutoff'. + * @param {boolean} exposed true to expose, false to hide. + */ + setExposeEngineParam(label, exposed) { + if (!this._labelToWalk.has(label)) return; + const had = this._exposedEngineParams.has(label); + if (exposed && !had) this._exposedEngineParams.add(label); + else if (!exposed && had) this._exposedEngineParams.delete(label); + else return; + this._rebuildParamMeta(); + this._emit('paramMeta:change', { engine: this }); + } + + /** + * Change how many ADSR / LFO slots appear in paramMeta. Rebuilds paramMeta + * and emits 'paramMeta:change' so a-app.js resizes the MLP. Slots past the + * new counts remain alive in the Faust DSP (always 16 + 32 exist) but are + * no longer MLP-driven; the UI is expected to disable those slots via the + * per-slot enable flag if it wants them silent. + * + * @param {number} adsrCount 1..16 + * @param {number} lfoCount 1..32 + */ + setModSourceCount(adsrCount, lfoCount) { + adsrCount = Math.max(1, Math.min(16, adsrCount | 0)); + lfoCount = Math.max(1, Math.min(32, lfoCount | 0)); + if (adsrCount === this._adsrCount && lfoCount === this._lfoCount) return; + this._adsrCount = adsrCount; + this._lfoCount = lfoCount; + this._rebuildParamMeta(); + this._emit('paramMeta:change', { engine: this }); + } + + /** Current MLP-facing ADSR slot count. */ + get adsrCount() { return this._adsrCount; } + + /** Current MLP-facing LFO slot count. */ + get lfoCount() { return this._lfoCount; } + + /** Subscribe to a custom event ('paramMeta:change'). Returns unsubscribe fn. */ + on(type, handler) { + if (!this._listeners.has(type)) this._listeners.set(type, new Set()); + this._listeners.get(type).add(handler); + return () => this.off(type, handler); + } + + off(type, handler) { + this._listeners.get(type)?.delete(handler); + } + + _emit(type, detail) { + const set = this._listeners.get(type); + if (!set) return; + for (const fn of set) { + try { fn(detail); } catch (err) { console.error(`[ModularEngine:${type}]`, err); } + } + } + + // --------------------------------------------------------------------------- + // Internals — JSON walking + paramMeta construction + // --------------------------------------------------------------------------- + + async _loadSubEngineJson(subId) { + const cfg = SUB_ENGINES[subId]; + if (!cfg) throw new Error(`[ModularEngine] Unknown sub-engine: ${subId}`); + + const resp = await fetch(cfg.jsonUrl); + if (!resp.ok) { + throw new Error(`[ModularEngine] Failed to fetch ${cfg.jsonUrl}: ${resp.status}`); + } + this._faustJson = await resp.json(); + this._walkFaustJson(); + } + + /** + * Walk the Faust UI tree in the SAME order the worklet's + * _buildZoneIndexFromJson walks it, skipping hidden params. The position + * in the resulting list is the NISPS index = the zone argument the + * worklet passes to setParamValue. + */ + _walkFaustJson() { + const HIDDEN_TAIL = new Set(['freq', 'gate', '_vel']); + const entries = []; + const byLabel = new Map(); + + const walk = (items, path) => { + if (!Array.isArray(items)) return; + for (const item of items) { + const type = item?.type; + if (type === 'hslider' || type === 'vslider' || + type === 'nentry' || type === 'button' || + type === 'checkbox') { + const label = item.label ?? ''; + const idx = item.index; + if (typeof idx !== 'number') continue; + + const hasHiddenMeta = Array.isArray(item.meta) && + item.meta.some(m => m.hidden === '1' || m.hidden === 1); + const tail = label.includes('/') ? label.split('/').pop() : label; + if (hasHiddenMeta || HIDDEN_TAIL.has(tail)) continue; + + const entry = { + label, + path: path + '/' + label, + min: typeof item.min === 'number' ? item.min : 0, + max: typeof item.max === 'number' ? item.max : 1, + init: typeof item.init === 'number' ? item.init : 0, + nispsIndex: entries.length, // walk-order index + }; + entries.push(entry); + byLabel.set(label, entry); + } else if (item?.items) { + walk(item.items, path + '/' + (item.label ?? '')); + } + } + }; + + walk(this._faustJson?.ui ?? [], ''); + this._walkEntries = entries; + this._labelToWalk = byLabel; + } + + /** + * Build the MLP-facing paramMeta from the walk entries. Ordering: + * 1. Mod source params (ADSR A/D/S/R × DEFAULT_ADSR_COUNT, + * LFO rate/morph × DEFAULT_LFO_COUNT) + * 2. Matrix cells (all 48 × destCount, dest-major, + * source-major within each destination) + * 3. Opted-in engine sound params (empty by default) + */ + _rebuildParamMeta() { + const cfg = this._subCfg; + const meta = []; + + // ----- 1. Mod sources ----- + for (let i = 0; i < this._adsrCount; i++) { + const prefix = `MM_ADSR/${String(i).padStart(2, '0')}_adsr${String(i + 1).padStart(2, '0')}`; + for (const suffix of ADSR_MLP_PARAMS) { + const label = `${prefix}_${suffix}`; + const e = this._labelToWalk.get(label); + if (!e) continue; + meta.push(this._makeMetaEntry(e, { + id: `adsr${i + 1}_${suffix}`, + name: `${cap(suffix)}`, + group: `ADSR ${i + 1}`, + })); + } + } + for (let i = 0; i < this._lfoCount; i++) { + const prefix = `MM_LFO/${String(i).padStart(2, '0')}_lfo${String(i + 1).padStart(2, '0')}`; + for (const suffix of LFO_MLP_PARAMS) { + const label = `${prefix}_${suffix}`; + const e = this._labelToWalk.get(label); + if (!e) continue; + meta.push(this._makeMetaEntry(e, { + id: `lfo${i + 1}_${suffix}`, + name: `${cap(suffix)}`, + group: `LFO ${i + 1}`, + })); + } + } + + // ----- 2. Matrix cells — dest-major, source-major within each destination ----- + for (let d = 0; d < cfg.destCount; d++) { + const destName = cfg.destNames[d]; + for (let s = 0; s < 48; s++) { + const label = `MM_Matrix/s${String(s).padStart(2, '0')}_d${String(d).padStart(2, '0')}_${destName}`; + const e = this._labelToWalk.get(label); + if (!e) continue; + meta.push(this._makeMetaEntry(e, { + id: `mm_s${s}_d${d}_${destName}`, + name: `s${String(s).padStart(2, '0')} \u2192 ${destName}`, + group: `Matrix/${destName}`, + })); + } + } + + // ----- 3. Opted-in engine sound params ----- + for (const label of this._exposedEngineParams) { + const e = this._labelToWalk.get(label); + if (!e) continue; + const [group, leaf] = splitLabel(label); + meta.push(this._makeMetaEntry(e, { + id: slugify(label), + name: stripIndexPrefix(leaf), + group: group || 'Sound', + })); + } + + this._paramMeta = meta; + } + + _makeMetaEntry(walkEntry, over) { + const range = (walkEntry.max - walkEntry.min) || 1; + const initNorm = Math.max(0, Math.min(1, + (walkEntry.init - walkEntry.min) / range)); + return { + id: over.id, + name: over.name, + min: walkEntry.min, // raw units (FaustEngineBase convention) + max: walkEntry.max, + init: initNorm, // normalised 0..1 + curve: 0.5, + group: over.group, + faustIndex: walkEntry.nispsIndex, + label: walkEntry.label, // kept for debugging and Phase C wiring + }; + } + + // --------------------------------------------------------------------------- + // Worklet lifecycle + // --------------------------------------------------------------------------- + + async _instantiateWorklet() { + const cfg = this._subCfg; + const audioCtx = this._audioCtx; + + // Fetch WASM binary. + const wasmResp = await fetch(cfg.wasmUrl); + if (!wasmResp.ok) { + throw new Error(`[ModularEngine] Failed to fetch ${cfg.wasmUrl}: ${wasmResp.status}`); + } + const wasmBytes = await wasmResp.arrayBuffer(); + + // Register worklet modules (addModule is idempotent — browser dedupes). + // faust-worklet-processor.js defines the FaustWorkletProcessor base class + // that modular-subtractive-processor.js extends. + await audioCtx.audioWorklet.addModule('faust/faust-worklet-processor.js'); + await audioCtx.audioWorklet.addModule(cfg.workletUrl); + + this._workletNode = new AudioWorkletNode(audioCtx, cfg.processorName, { + numberOfInputs: 0, + numberOfOutputs: 1, + outputChannelCount: [2], + }); + this._workletNode.port.onmessage = (e) => this._handleWorkletMsg(e.data); + + // Build the audio graph. + this._masterGain = audioCtx.createGain(); + this._masterGain.gain.value = 0.7; + this._workletNode.connect(this._masterGain); + this._masterGain.connect(audioCtx.destination); + this._outputNode = this._masterGain; + + // Send the init message — uiJson is passed as a parsed object. + this._workletNode.port.postMessage({ + type: 'init', + wasmBytes, + sampleRate: audioCtx.sampleRate, + uiJson: this._faustJson, + }, [wasmBytes]); + + await this._waitForReady(10_000); + } + + _teardownWorklet() { + if (this._masterGain) { + try { this._masterGain.disconnect(); } catch (_) { /* ignore */ } + this._masterGain = null; + } + if (this._workletNode) { + try { this._workletNode.disconnect(); } catch (_) { /* ignore */ } + this._workletNode.port.onmessage = null; + this._workletNode = null; + } + this._outputNode = null; + } + + _handleWorkletMsg(data) { + if (!data) return; + if (data.type === 'ready') { + this._onReady?.(); + } else if (data.type === 'error') { + console.error(`[ModularEngine:${this._activeSubId}] worklet error:`, data.message); + } + } + + _waitForReady(timeoutMs) { + return new Promise((resolve, reject) => { + const timer = setTimeout(() => { + this._onReady = null; + reject(new Error(`[ModularEngine] Timed out waiting for worklet ready`)); + }, timeoutMs); + this._onReady = () => { + clearTimeout(timer); + this._onReady = null; + resolve(); + }; + }); + } + + // --------------------------------------------------------------------------- + // Default patch + // --------------------------------------------------------------------------- + + /** + * Write raw values directly to the worklet by Faust label, bypassing + * paramMeta. Used for the default patch, which includes params NOT in + * paramMeta (e.g. `enable` flags, engine sound defaults). + */ + _setRawByLabel(label, rawValue) { + // Always record the intent, even if the worklet isn't up yet — getState() + // reads from this map. The value will be re-applied when the worklet + // next runs _applyDefaultPatch() or when the caller explicitly replays + // state after init(). + this._lastRawByLabel.set(label, rawValue); + if (!this._workletNode) return; + this._workletNode.port.postMessage({ type: 'setByLabel', label, value: rawValue }); + } + + /** + * Apply the Phase B default patch so the first noteOn produces sound. + * + * Strategy: ADSR 1 → amp at full depth, reasonable ADSR 1 envelope, + * osc1 up, osc2/3 silent, filter fully open, master level 0.7. + * Everything else the .dsp file already has sane defaults for. + */ + _applyDefaultPatch() { + // ADSR 1 — amplifier envelope + this._setRawByLabel('MM_ADSR/00_adsr01_enable', 1.0); + this._setRawByLabel('MM_ADSR/00_adsr01_attack', 0.01); + this._setRawByLabel('MM_ADSR/00_adsr01_decay', 0.2); + this._setRawByLabel('MM_ADSR/00_adsr01_sustain', 0.7); + this._setRawByLabel('MM_ADSR/00_adsr01_release', 0.3); + + // Matrix: s00 (adsr01) → d08 (amp), depth 1.0 + this._setRawByLabel('MM_Matrix/s00_d08_amp', 1.0); + + // Engine sound defaults (subtractive-specific) + if (this._activeSubId === 'subtractive') { + this._setRawByLabel('3_Filter/00_cutoff', 3000); + this._setRawByLabel('3_Filter/01_resonance', 0.2); + this._setRawByLabel('1_Oscillators/02_osc1_level', 0.8); + this._setRawByLabel('1_Oscillators/06_osc2_level', 0.0); + this._setRawByLabel('1_Oscillators/10_osc3_level', 0.0); + this._setRawByLabel('4_Master/00_master_level', 0.7); + } + } +} + +// ----------------------------------------------------------------------------- +// Small helpers +// ----------------------------------------------------------------------------- + +function cap(s) { + return s ? s.charAt(0).toUpperCase() + s.slice(1) : s; +} + +function splitLabel(label) { + const i = label.lastIndexOf('/'); + if (i < 0) return ['', label]; + return [label.slice(0, i), label.slice(i + 1)]; +} + +function stripIndexPrefix(leaf) { + // Strip the leading "NN_" numeric prefix Faust uses to force UI ordering, + // e.g. "00_osc1_wave" → "osc1_wave". + return leaf.replace(/^\d+_/, ''); +} + +function slugify(s) { + return s.toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_+|_+$/g, ''); +} diff --git a/playground/js/synth/modular-presets.js b/playground/js/synth/modular-presets.js new file mode 100644 index 0000000..ab24a88 --- /dev/null +++ b/playground/js/synth/modular-presets.js @@ -0,0 +1,285 @@ +/** + * modular-presets.js — Phase E presets for the Modular engine. + * + * Each preset is a curated snapshot shaped like `ModularEngine.getState()` + * output. `applyPreset(engine, preset)` first calls `engine.resetToDefaults()` + * to re-establish the Phase B baseline, then `engine.setState(preset.state)` + * to layer the preset's non-default values on top. Presets therefore only + * need to include the labels they actively change. + * + * Source ordering reminder (mirrors modular-engine.js comments): + * Matrix source 0..15 = ADSR slots 1..16 + * Matrix source 16..47 = LFO slots 1..32 + * + * Destinations (d00..d09) are sub-engine-specific; see + * faust/MODULAR_DESTINATIONS.md. Across all three sub-engines: + * d00 = pitch, d08 = amp, d09 = pan. + */ + +// Helper factories for building per-source label sets without macro soup. +// Only include labels that differ from the Phase B default patch. + +const pad2 = (n) => String(n).padStart(2, '0'); + +/** `MM_ADSR/NN_adsrNN_` label builder (NN zero-padded). */ +function adsrLabel(slot1, field) { + // slot1 = 1-based slot number + const nn = pad2(slot1 - 1); + const mm = pad2(slot1); + return `MM_ADSR/${nn}_adsr${mm}_${field}`; +} + +/** `MM_LFO/NN_lfoNN_` label builder. */ +function lfoLabel(slot1, field) { + const nn = pad2(slot1 - 1); + const mm = pad2(slot1); + return `MM_LFO/${nn}_lfo${mm}_${field}`; +} + +/** + * Matrix cell label: source `s` (0..47), destination `d` (0..9), name. + */ +function mxLabel(s, d, name) { + return `MM_Matrix/s${pad2(s)}_d${pad2(d)}_${name}`; +} + +// ----------------------------------------------------------------------------- +// Presets +// ----------------------------------------------------------------------------- + +/** 1. Default — Phase B out-of-the-box patch (empty diff). */ +const DEFAULT_PRESET = { + version: 1, + subEngine: 'subtractive', + adsrCount: 4, + lfoCount: 8, + exposedEngineParams: [], + dsp: {}, +}; + +/** 2. Slow pad — long ADSR, subtle LFOs, filter open-ish. Subtractive. */ +const SLOW_PAD_PRESET = { + version: 1, + subEngine: 'subtractive', + adsrCount: 4, + lfoCount: 8, + exposedEngineParams: [], + dsp: { + // ADSR 1 — long amp envelope + [adsrLabel(1, 'enable')]: 1.0, + [adsrLabel(1, 'attack')]: 2.0, + [adsrLabel(1, 'decay')]: 1.0, + [adsrLabel(1, 'sustain')]: 0.9, + [adsrLabel(1, 'release')]: 4.0, + + // LFO 1 — slow sine → cutoff + [lfoLabel(1, 'enable')]: 1.0, + [lfoLabel(1, 'rate')]: 0.3, + [lfoLabel(1, 'morph')]: 0.0, + + // LFO 2 — slow sine → pitch (subtle detune) + [lfoLabel(2, 'enable')]: 1.0, + [lfoLabel(2, 'rate')]: 0.5, + [lfoLabel(2, 'morph')]: 0.0, + + // Matrix routes + [mxLabel(0, 8, 'amp')]: 1.0, // ADSR1 → amp (reinforce default) + [mxLabel(16, 5, 'cutoff')]: 0.4, // LFO1 → cutoff + [mxLabel(17, 0, 'pitch')]: 0.05, // LFO2 → pitch + + // Engine sound + '3_Filter/00_cutoff': 1000, + '3_Filter/01_resonance': 0.2, + '1_Oscillators/02_osc1_level': 0.7, + '1_Oscillators/06_osc2_level': 0.4, + }, +}; + +/** 3. Plucky bass — fast amp + filter envelopes, low cutoff, high res. */ +const PLUCKY_BASS_PRESET = { + version: 1, + subEngine: 'subtractive', + adsrCount: 4, + lfoCount: 8, + exposedEngineParams: [], + dsp: { + // ADSR 1 — amp + [adsrLabel(1, 'enable')]: 1.0, + [adsrLabel(1, 'attack')]: 0.005, + [adsrLabel(1, 'decay')]: 0.15, + [adsrLabel(1, 'sustain')]: 0.0, + [adsrLabel(1, 'release')]: 0.1, + // ADSR 2 — filter + [adsrLabel(2, 'enable')]: 1.0, + [adsrLabel(2, 'attack')]: 0.005, + [adsrLabel(2, 'decay')]: 0.15, + [adsrLabel(2, 'sustain')]: 0.0, + [adsrLabel(2, 'release')]: 0.1, + + [mxLabel(0, 8, 'amp')]: 1.0, // ADSR1 → amp + [mxLabel(1, 5, 'cutoff')]: 0.8, // ADSR2 → cutoff + + '3_Filter/00_cutoff': 400, + '3_Filter/01_resonance': 0.7, + '1_Oscillators/02_osc1_level': 0.9, + }, +}; + +/** 4. Crystal — additive, tremolo + slow formant sweep. */ +const CRYSTAL_PRESET = { + version: 1, + subEngine: 'additive', + adsrCount: 4, + lfoCount: 8, + exposedEngineParams: [], + dsp: { + [adsrLabel(1, 'enable')]: 1.0, + [adsrLabel(1, 'attack')]: 0.02, + [adsrLabel(1, 'decay')]: 0.4, + [adsrLabel(1, 'sustain')]: 0.8, + [adsrLabel(1, 'release')]: 1.2, + + [lfoLabel(1, 'enable')]: 1.0, + [lfoLabel(1, 'rate')]: 4.0, + [lfoLabel(1, 'morph')]: 0.0, // sine + + [lfoLabel(2, 'enable')]: 1.0, + [lfoLabel(2, 'rate')]: 0.2, + [lfoLabel(2, 'morph')]: 0.33, // tri + + [mxLabel(0, 8, 'amp')]: 0.8, // ADSR1 → amp + [mxLabel(16, 1, 'bright')]: 0.3, // LFO1 → bright + [mxLabel(17, 5, 'formant_ctr')]: 0.4, // LFO2 → formant_ctr + }, +}; + +/** 5. DX bell — 4 ADSRs with staggered decays driving FM operator levels. */ +const DX_BELL_PRESET = { + version: 1, + subEngine: 'fm', + adsrCount: 4, + lfoCount: 8, + exposedEngineParams: [], + dsp: { + // All four ADSRs: fast attack, varying decay, zero sustain, equal release + [adsrLabel(1, 'enable')]: 1.0, + [adsrLabel(1, 'attack')]: 0.005, + [adsrLabel(1, 'decay')]: 0.3, + [adsrLabel(1, 'sustain')]: 0.0, + [adsrLabel(1, 'release')]: 0.5, + + [adsrLabel(2, 'enable')]: 1.0, + [adsrLabel(2, 'attack')]: 0.005, + [adsrLabel(2, 'decay')]: 0.6, + [adsrLabel(2, 'sustain')]: 0.0, + [adsrLabel(2, 'release')]: 0.5, + + [adsrLabel(3, 'enable')]: 1.0, + [adsrLabel(3, 'attack')]: 0.005, + [adsrLabel(3, 'decay')]: 1.2, + [adsrLabel(3, 'sustain')]: 0.0, + [adsrLabel(3, 'release')]: 0.5, + + [adsrLabel(4, 'enable')]: 1.0, + [adsrLabel(4, 'attack')]: 0.005, + [adsrLabel(4, 'decay')]: 2.0, + [adsrLabel(4, 'sustain')]: 0.0, + [adsrLabel(4, 'release')]: 0.5, + + // Matrix: each ADSR → the matching op level (d01..d04 in the fm sub-engine) + [mxLabel(0, 1, 'op1_level')]: 1.0, + [mxLabel(1, 2, 'op2_level')]: 1.0, + [mxLabel(2, 3, 'op3_level')]: 1.0, + [mxLabel(3, 4, 'op4_level')]: 1.0, + }, +}; + +/** 6. Morphing drone — additive, very slow amp, slow spectral LFOs. */ +const MORPHING_DRONE_PRESET = { + version: 1, + subEngine: 'additive', + adsrCount: 4, + lfoCount: 8, + exposedEngineParams: [], + dsp: { + [adsrLabel(1, 'enable')]: 1.0, + [adsrLabel(1, 'attack')]: 5.0, + [adsrLabel(1, 'decay')]: 1.0, + [adsrLabel(1, 'sustain')]: 1.0, + [adsrLabel(1, 'release')]: 6.0, + + [lfoLabel(1, 'enable')]: 1.0, + [lfoLabel(1, 'rate')]: 0.1, + [lfoLabel(1, 'morph')]: 0.5, // between tri and saw + + [lfoLabel(2, 'enable')]: 1.0, + [lfoLabel(2, 'rate')]: 0.15, + [lfoLabel(2, 'morph')]: 0.66, + + [mxLabel(0, 8, 'amp')]: 1.0, // ADSR1 → amp + [mxLabel(16, 3, 'inharmonicity')]: 0.3, // LFO1 → inharmonicity + [mxLabel(17, 4, 'odd_even')]: 0.3, // LFO2 → odd_even + }, +}; + +export const MODULAR_PRESETS = [ + { + id: 'modular-default', + name: 'Default', + description: 'Phase B out-of-the-box patch.', + state: DEFAULT_PRESET, + }, + { + id: 'modular-slow-pad', + name: 'Slow pad', + description: 'Long ADSR, slow LFO cutoff sweep, subtle pitch drift.', + state: SLOW_PAD_PRESET, + }, + { + id: 'modular-plucky-bass', + name: 'Plucky bass', + description: 'Fast amp + filter envelopes, resonant lowpass.', + state: PLUCKY_BASS_PRESET, + }, + { + id: 'modular-crystal', + name: 'Crystal', + description: 'Additive tremolo with slow formant sweep.', + state: CRYSTAL_PRESET, + }, + { + id: 'modular-dx-bell', + name: 'DX bell', + description: 'Four staggered ADSRs driving FM operator levels.', + state: DX_BELL_PRESET, + }, + { + id: 'modular-morphing-drone', + name: 'Morphing drone', + description: 'Additive drone with LFO-driven spectral morphing.', + state: MORPHING_DRONE_PRESET, + }, +]; + +/** + * Apply a preset to a ModularEngine instance. Resets to defaults first so + * each preset is independent of whatever state preceded it. + * + * @param {import('./modular-engine.js').ModularEngine} engine + * @param {{state: object}} preset + */ +export async function applyPreset(engine, preset) { + if (!engine || !preset || !preset.state) return; + // Baseline first — this clears user mutations and re-seeds the + // default amp env / matrix / filter values. + if (typeof engine.resetToDefaults === 'function') { + engine.resetToDefaults(); + } + // Layer the preset's non-default values. + await engine.setState({ version: 1, ...preset.state }); +} + +/** Look up a preset by id. */ +export function findPreset(id) { + return MODULAR_PRESETS.find(p => p.id === id) ?? null; +} diff --git a/playground/js/ui/modular-ui.js b/playground/js/ui/modular-ui.js new file mode 100644 index 0000000..d624d12 --- /dev/null +++ b/playground/js/ui/modular-ui.js @@ -0,0 +1,1466 @@ +import { MODULAR_PRESETS, applyPreset } from '../synth/modular-presets.js'; + +/** + * modular-ui.js — Phase C of the "Modular" audio mode. + * + * User-facing control panel for ModularEngine: + * - Sub-engine toggle (Subtractive / Additive / FM) + * - Mod pool count steppers (ADSR 1..16, LFO 1..32) + * - Per-slot enable toggles (independent of count) + * - Matrix grid editor (sources × destinations, signed [-1, 1] amounts) + * - Expose engine sound params to the MLP + * + * The panel is mounted as a drawer in the existing `#drawer-stack`, with a + * matching dock icon injected into `#dock`. Both are hidden until the + * modular engine becomes active. + * + * Matrix paramMeta layout (from Phase B, VERIFIED at runtime via label + * prefix `MM_Matrix/` on rebuild): mod sources first (ADSR + LFO), matrix + * cells second (dest-major, source-major within each destination), opted-in + * engine sound params last. We discover matrix cells by group prefix, not + * by hardcoded offsets, so that count changes / sub-engine swaps are safe. + * + * Raw matrix cell range is [-1, 1]; paramMeta normalises to [0, 1] via + * `(raw - min) / (max - min)`. UI uses signed values directly and converts + * `(v + 1) / 2` when calling `engine.setParam(i, norm01)`. + * + * @module modular-ui + */ + +// --------------------------------------------------------------------------- +// Module-level constants +// --------------------------------------------------------------------------- + +const STORAGE_KEY = 'nisps-modular-state'; + +const MAX_ADSR = 16; +const MAX_LFO = 32; + +// Matrix cell cycle on left-click (positive only). Shift-click → 0. +// Right-click opens a menu with ±1 / 0 / random. +const CLICK_CYCLE = [0, 0.25, 0.5, 0.75, 1.0]; + +const SUB_ENGINE_OPTIONS = [ + { id: 'subtractive', label: 'Subtractive' }, + { id: 'additive', label: 'Additive' }, + { id: 'fm', label: 'FM' }, +]; + +// --------------------------------------------------------------------------- +// Public API +// --------------------------------------------------------------------------- + +/** + * Initialise the Modular UI. Creates the drawer and dock icon (hidden), and + * wires them to the engine returned by `getEngine()`. + * + * @param {object} opts + * @param {() => object} opts.getEngine — returns current activeEngine + * @param {() => void} [opts.onStateChange] — optional hook when UI state + * persists to localStorage + * @returns {{ teardown, refresh, show, hide, isVisible }} + */ +export function initModularUI({ getEngine, onStateChange } = {}) { + injectStyles(); + + const dockIcon = createDockIcon(); + const drawer = createDrawer(); + + const uiState = loadUIState(); + + // Subscription handle for the active engine's paramMeta:change event. + let unsubParamMeta = null; + let lastWiredEngine = null; + + // DOM refs — populated by the section builders. + const refs = { + subEngineBtns: [], + adsrCountValue: null, + lfoCountValue: null, + adsrEnables: [], + lfoEnables: [], + matrixGrid: null, + matrixEmpty: null, + soundParamList: null, + }; + + // ---- Build panel sections ---- + buildSubEngineSection(drawer.body, refs, applySubEngineChange); + buildPresetsSection(drawer.body, openPresetOverlay); + buildCountSection(drawer.body, refs, applyCountChange); + buildEnableSection(drawer.body, refs, applyEnableChange); + buildMatrixSection(drawer.body, refs, { + onCellCycle: (src, dst) => cycleCell(src, dst), + onCellInvert: (src, dst) => setCell(src, dst, -getCell(src, dst)), + onCellZero: (src, dst) => setCell(src, dst, 0), + onCellPrecise: (src, dst, el) => openPreciseEditor(src, dst, el), + onCellMenu: (src, dst, el, e) => openCellMenu(src, dst, el, e), + }); + buildSoundParamSection(drawer.body, refs, applyExposeChange); + + // ---- Apply saved UI state to engine as soon as we can ---- + // We defer engine mutations until refresh() is called with a live engine. + let pendingRestore = true; + + // --------------------------------------------------------------------------- + // Engine binding + // --------------------------------------------------------------------------- + + function bindEngine(engine) { + if (engine === lastWiredEngine) return; + if (unsubParamMeta) { try { unsubParamMeta(); } catch (_) { /* ignore */ } } + unsubParamMeta = null; + lastWiredEngine = engine; + if (engine && typeof engine.on === 'function') { + unsubParamMeta = engine.on('paramMeta:change', () => { + rebuildMatrixGrid(); + rebuildSoundParamList(); + refreshSubEngineButtons(); + }); + } + } + + // --------------------------------------------------------------------------- + // Build: sub-engine section + // --------------------------------------------------------------------------- + + function refreshSubEngineButtons() { + const engine = getEngine?.(); + if (!engine || engine.id !== 'modular') return; + const available = new Set(engine.availableSubEngines || []); + const active = engine.activeSubEngineId; + for (const btn of refs.subEngineBtns) { + const id = btn.dataset.subEngine; + btn.classList.toggle('active', id === active); + btn.disabled = !available.has(id); + btn.title = available.has(id) + ? `Use ${id} sub-engine` + : `${id} not available yet`; + } + } + + async function applySubEngineChange(id) { + const engine = getEngine?.(); + if (!engine || engine.id !== 'modular') return; + if (id === engine.activeSubEngineId) return; + refs.subEngineBtns.forEach(b => b.classList.toggle('busy', b.dataset.subEngine === id)); + try { + await engine.setSubEngine(id); + uiState.subEngine = id; + saveUIState(); + // paramMeta:change listener rebuilds the grid + } catch (err) { + console.error('[modular-ui] setSubEngine failed:', err); + } finally { + refs.subEngineBtns.forEach(b => b.classList.remove('busy')); + refreshSubEngineButtons(); + } + } + + // --------------------------------------------------------------------------- + // Build: count section + // --------------------------------------------------------------------------- + + function applyCountChange(kind, newCount) { + const engine = getEngine?.(); + if (!engine || engine.id !== 'modular') return; + const adsr = kind === 'adsr' ? newCount : engine.adsrCount; + const lfo = kind === 'lfo' ? newCount : engine.lfoCount; + engine.setModSourceCount?.(adsr, lfo); + uiState.adsrCount = adsr; + uiState.lfoCount = lfo; + // Ensure enable arrays are long enough + while (uiState.adsrEnables.length < MAX_ADSR) uiState.adsrEnables.push(false); + while (uiState.lfoEnables.length < MAX_LFO) uiState.lfoEnables.push(false); + // Newly-in-count slots default to enabled (if previously disabled). + for (let i = 0; i < adsr; i++) if (!uiState.adsrEnables[i]) uiState.adsrEnables[i] = true; + for (let i = 0; i < lfo; i++) if (!uiState.lfoEnables[i]) uiState.lfoEnables[i] = true; + applyAllEnablesToEngine(); + saveUIState(); + refreshCountValues(); + refreshEnableRow(); + rebuildMatrixGrid(); + } + + function refreshCountValues() { + if (refs.adsrCountValue) refs.adsrCountValue.textContent = String(uiState.adsrCount); + if (refs.lfoCountValue) refs.lfoCountValue.textContent = String(uiState.lfoCount); + } + + // --------------------------------------------------------------------------- + // Build: enable switches + // --------------------------------------------------------------------------- + + function refreshEnableRow() { + const active = getEngine?.(); + for (let i = 0; i < MAX_ADSR; i++) { + const btn = refs.adsrEnables[i]; + if (!btn) continue; + const inCount = i < uiState.adsrCount; + btn.classList.toggle('active', !!uiState.adsrEnables[i]); + btn.classList.toggle('out-of-count', !inCount); + btn.title = inCount + ? `ADSR ${i + 1}: ${uiState.adsrEnables[i] ? 'enabled' : 'disabled'}` + : `ADSR ${i + 1}: slot past count (not MLP-driven)`; + } + for (let i = 0; i < MAX_LFO; i++) { + const btn = refs.lfoEnables[i]; + if (!btn) continue; + const inCount = i < uiState.lfoCount; + btn.classList.toggle('active', !!uiState.lfoEnables[i]); + btn.classList.toggle('out-of-count', !inCount); + btn.title = inCount + ? `LFO ${i + 1}: ${uiState.lfoEnables[i] ? 'enabled' : 'disabled'}` + : `LFO ${i + 1}: slot past count (not MLP-driven)`; + } + } + + function applyEnableChange(kind, i, enabled) { + const engine = getEngine?.(); + if (!engine || engine.id !== 'modular') return; + if (kind === 'adsr') uiState.adsrEnables[i] = enabled; + else uiState.lfoEnables[i] = enabled; + writeEnableToEngine(engine, kind, i, enabled); + saveUIState(); + refreshEnableRow(); + } + + function writeEnableToEngine(engine, kind, i, enabled) { + if (typeof engine._setRawByLabel !== 'function') return; + const label = (kind === 'adsr') + ? `MM_ADSR/${pad2(i)}_adsr${pad2(i + 1)}_enable` + : `MM_LFO/${pad2(i)}_lfo${pad2(i + 1)}_enable`; + engine._setRawByLabel(label, enabled ? 1.0 : 0.0); + } + + function applyAllEnablesToEngine() { + const engine = getEngine?.(); + if (!engine || engine.id !== 'modular') return; + for (let i = 0; i < MAX_ADSR; i++) { + writeEnableToEngine(engine, 'adsr', i, !!uiState.adsrEnables[i]); + } + for (let i = 0; i < MAX_LFO; i++) { + writeEnableToEngine(engine, 'lfo', i, !!uiState.lfoEnables[i]); + } + } + + // --------------------------------------------------------------------------- + // Matrix grid + // --------------------------------------------------------------------------- + + /** + * Given engine paramMeta, discover matrix cells by group prefix. + * Returns a Map: `${s}|${d}` -> paramMeta index. + */ + function buildMatrixIndex(engine) { + const out = new Map(); + const meta = engine?.paramMeta ?? []; + for (let i = 0; i < meta.length; i++) { + const m = meta[i]; + if (!m || !m.group || !m.group.startsWith('Matrix/')) continue; + // Label is like "MM_Matrix/s03_d08_amp" — parse out s and d. + const lbl = m.label || ''; + const match = lbl.match(/s(\d{2})_d(\d{2})_/); + if (!match) continue; + const s = parseInt(match[1], 10); + const d = parseInt(match[2], 10); + out.set(`${s}|${d}`, i); + } + return out; + } + + // Current cell values (signed [-1, 1]), keyed by "s|d". Populated from + // paramMeta entries on rebuild; mutated by user interaction. + const cellValues = new Map(); + + function getCell(s, d) { return cellValues.get(`${s}|${d}`) ?? 0; } + + function setCell(s, d, value, { persistToEngine = true } = {}) { + const v = Math.max(-1, Math.min(1, value)); + cellValues.set(`${s}|${d}`, v); + updateCellDOM(s, d, v); + if (!persistToEngine) return; + const engine = getEngine?.(); + if (!engine || engine.id !== 'modular') return; + const idx = matrixIndexCache.get(`${s}|${d}`); + if (idx == null) return; // not in paramMeta (s out of adsr/lfo counts maybe) + const meta = engine.paramMeta[idx]; + if (!meta) return; + const range = (meta.max - meta.min) || 1; + // v is the raw value in the paramMeta [min, max] space for matrix cells + // because we set min=-1, max=1 in the DSP — but meta.min/max are raw, + // so normalise generically. + const norm = (v - meta.min) / range; + engine.setParam(idx, Math.max(0, Math.min(1, norm))); + } + + function cycleCell(s, d) { + const cur = getCell(s, d); + // Cycle positive steps only, wrapping back to 0. + // Negatives reached via right-click menu or precise editor. + let nextIdx = 0; + // Match to nearest current step, then advance. + if (cur > 0) { + let best = 0, bestD = Infinity; + for (let i = 0; i < CLICK_CYCLE.length; i++) { + const diff = Math.abs(CLICK_CYCLE[i] - cur); + if (diff < bestD) { bestD = diff; best = i; } + } + nextIdx = (best + 1) % CLICK_CYCLE.length; + } else { + // From 0 or negative: jump up to 0.25 to start the cycle. + nextIdx = 1; + } + setCell(s, d, CLICK_CYCLE[nextIdx]); + } + + let matrixIndexCache = new Map(); + + function rebuildMatrixGrid() { + const engine = getEngine?.(); + const gridEl = refs.matrixGrid; + if (!gridEl) return; + + gridEl.innerHTML = ''; + matrixIndexCache = new Map(); + cellValues.clear(); + + if (!engine || engine.id !== 'modular') { + if (refs.matrixEmpty) refs.matrixEmpty.textContent = 'Modular engine not active.'; + return; + } + + const destNames = engine.destNames || []; + if (destNames.length === 0) { + if (refs.matrixEmpty) refs.matrixEmpty.textContent = 'Waiting for sub-engine…'; + return; + } + + matrixIndexCache = buildMatrixIndex(engine); + if (matrixIndexCache.size === 0) { + if (refs.matrixEmpty) refs.matrixEmpty.textContent = 'No matrix cells in paramMeta.'; + return; + } + if (refs.matrixEmpty) refs.matrixEmpty.textContent = ''; + + // Seed current values from paramMeta init (normalized 0..1). + const meta = engine.paramMeta; + for (const [key, idx] of matrixIndexCache.entries()) { + const m = meta[idx]; + const range = (m.max - m.min) || 1; + const raw = m.min + m.init * range; + cellValues.set(key, raw); + } + + // Determine visible source range from current counts. + const adsrN = uiState.adsrCount; + const lfoN = uiState.lfoCount; + const visibleSources = []; + for (let i = 0; i < adsrN; i++) visibleSources.push({ s: i, label: `A${i + 1}`, kind: 'adsr' }); + for (let i = 0; i < lfoN; i++) visibleSources.push({ s: 16 + i, label: `L${i + 1}`, kind: 'lfo' }); + // NOTE: source index layout — sources 0..15 are ADSRs, 16..47 are LFOs. + // This mirrors the Faust .dsp's MM_* declaration order, VERIFIED by the + // walk-entry labels: matrix column s00..s15 are ADSRs, s16..s47 are LFOs. + + const cols = destNames.length; + const rows = visibleSources.length; + + // CSS grid: 1 header col + N dest cols × 1 header row + M source rows + gridEl.style.gridTemplateColumns = `auto repeat(${cols}, minmax(28px, 1fr))`; + gridEl.style.gridTemplateRows = `auto repeat(${rows}, 32px)`; + + // Top-left corner + const corner = document.createElement('div'); + corner.className = 'mm-corner'; + gridEl.appendChild(corner); + + // Column headers + destNames.forEach((name, d) => { + const h = document.createElement('div'); + h.className = 'mm-col-header'; + h.textContent = shortDest(name); + h.title = name; + gridEl.appendChild(h); + }); + + // Rows + visibleSources.forEach((src) => { + const rh = document.createElement('div'); + rh.className = `mm-row-header mm-src-${src.kind}`; + rh.textContent = src.label; + rh.title = src.kind === 'adsr' ? `ADSR ${src.s + 1}` : `LFO ${src.s - 15}`; + gridEl.appendChild(rh); + + for (let d = 0; d < cols; d++) { + const cell = document.createElement('div'); + cell.className = 'mm-cell'; + cell.dataset.s = src.s; + cell.dataset.d = d; + const has = matrixIndexCache.has(`${src.s}|${d}`); + if (!has) cell.classList.add('unavailable'); + attachCellHandlers(cell, src.s, d); + gridEl.appendChild(cell); + updateCellDOM(src.s, d, getCell(src.s, d)); + } + }); + } + + function updateCellDOM(s, d, v) { + const cell = refs.matrixGrid?.querySelector(`.mm-cell[data-s="${s}"][data-d="${d}"]`); + if (!cell) return; + const abs = Math.abs(v); + const label = v === 0 + ? '' + : (v > 0 ? '' : '−') + abs.toFixed(2).replace(/^0/, ''); + cell.textContent = label; + const alpha = Math.min(1, abs); + const color = v >= 0 + ? `rgba(255, 106, 0, ${alpha * 0.85})` // accent (positive) + : `rgba(80, 160, 255, ${alpha * 0.85})`; // blue (negative / inverted) + cell.style.background = alpha > 0.01 + ? color + : 'rgba(255, 255, 255, 0.04)'; + cell.classList.toggle('nonzero', alpha > 0.01); + } + + function attachCellHandlers(cell, s, d) { + let longPressTimer = null; + let didLongPress = false; + + cell.addEventListener('click', (e) => { + if (cell.classList.contains('unavailable')) return; + if (didLongPress) { didLongPress = false; return; } + if (e.shiftKey) { setCell(s, d, 0); return; } + cycleCell(s, d); + }); + + cell.addEventListener('contextmenu', (e) => { + e.preventDefault(); + if (cell.classList.contains('unavailable')) return; + openCellMenu(s, d, cell, e); + }); + + // Long-press → precise editor (mobile-friendly). + const startLong = () => { + longPressTimer = setTimeout(() => { + didLongPress = true; + openPreciseEditor(s, d, cell); + }, 500); + }; + const cancelLong = () => { + if (longPressTimer) { clearTimeout(longPressTimer); longPressTimer = null; } + }; + cell.addEventListener('pointerdown', startLong); + cell.addEventListener('pointerup', cancelLong); + cell.addEventListener('pointerleave', cancelLong); + cell.addEventListener('pointercancel', cancelLong); + } + + function openPreciseEditor(s, d, cellEl) { + const cur = getCell(s, d); + const input = prompt(`Matrix s${pad2(s)} → d${pad2(d)} (range -1..1)`, String(cur)); + if (input == null) return; + const v = parseFloat(input); + if (!Number.isFinite(v)) return; + setCell(s, d, v); + } + + function openCellMenu(s, d, cellEl, ev) { + const existing = document.getElementById('mm-cell-menu'); + if (existing) existing.remove(); + + const menu = document.createElement('div'); + menu.id = 'mm-cell-menu'; + menu.className = 'mm-cell-menu'; + const actions = [ + { label: 'Set +1', fn: () => setCell(s, d, 1) }, + { label: 'Set +0.5', fn: () => setCell(s, d, 0.5) }, + { label: 'Set 0', fn: () => setCell(s, d, 0) }, + { label: 'Set -0.5', fn: () => setCell(s, d, -0.5) }, + { label: 'Set -1', fn: () => setCell(s, d, -1) }, + { label: 'Invert', fn: () => setCell(s, d, -getCell(s, d)) }, + { label: 'Random', fn: () => setCell(s, d, (Math.random() * 2) - 1) }, + { label: 'Precise…', fn: () => openPreciseEditor(s, d, cellEl) }, + ]; + for (const a of actions) { + const b = document.createElement('button'); + b.textContent = a.label; + b.addEventListener('click', () => { a.fn(); menu.remove(); }); + menu.appendChild(b); + } + + document.body.appendChild(menu); + const rect = cellEl.getBoundingClientRect(); + const x = Math.min(window.innerWidth - 180, rect.left); + const y = Math.min(window.innerHeight - menu.offsetHeight - 10, rect.bottom + 4); + menu.style.left = `${x}px`; + menu.style.top = `${y}px`; + + // Dismiss on outside click. + const dismiss = (e) => { + if (!menu.contains(e.target)) { + menu.remove(); + document.removeEventListener('pointerdown', dismiss, true); + } + }; + setTimeout(() => document.addEventListener('pointerdown', dismiss, true), 0); + } + + // --------------------------------------------------------------------------- + // Sound param exposure + // --------------------------------------------------------------------------- + + function rebuildSoundParamList() { + const list = refs.soundParamList; + if (!list) return; + list.innerHTML = ''; + const engine = getEngine?.(); + if (!engine || engine.id !== 'modular' || + typeof engine.getEngineSoundParamLabels !== 'function') { + const note = document.createElement('div'); + note.className = 'mm-hint'; + note.textContent = 'Modular engine not active.'; + list.appendChild(note); + return; + } + const entries = engine.getEngineSoundParamLabels(); + if (entries.length === 0) { + const note = document.createElement('div'); + note.className = 'mm-hint'; + note.textContent = 'No engine sound params exposed by this sub-engine.'; + list.appendChild(note); + return; + } + + // Group by top-level prefix for readability. + const groups = new Map(); + for (const e of entries) { + const [group] = splitLabel(e.label); + if (!groups.has(group)) groups.set(group, []); + groups.get(group).push(e); + } + + for (const [group, params] of groups.entries()) { + const h = document.createElement('div'); + h.className = 'mm-sound-group'; + h.textContent = prettyGroup(group); + list.appendChild(h); + + for (const p of params) { + const row = document.createElement('label'); + row.className = 'mm-sound-row'; + const cb = document.createElement('input'); + cb.type = 'checkbox'; + cb.checked = engine.isEngineParamExposed?.(p.label) ?? false; + cb.addEventListener('change', () => applyExposeChange(p.label, cb.checked)); + const name = document.createElement('span'); + name.textContent = stripIndexPrefix(splitLabel(p.label)[1]); + name.title = p.label; + row.appendChild(cb); + row.appendChild(name); + list.appendChild(row); + } + } + + const warning = document.createElement('div'); + warning.className = 'mm-hint warn'; + warning.textContent = + 'Toggling exposes/unexposes a param to the MLP. The network is resized ' + + 'in place (training examples are preserved; output layer is warm-started).'; + list.appendChild(warning); + } + + // --------------------------------------------------------------------------- + // Preset overlay (Phase E) + // --------------------------------------------------------------------------- + + async function openPresetOverlay() { + const existing = document.getElementById('mm-preset-overlay'); + if (existing) existing.remove(); + + const overlay = document.createElement('div'); + overlay.id = 'mm-preset-overlay'; + overlay.className = 'mm-preset-overlay'; + + const panel = document.createElement('div'); + panel.className = 'mm-preset-panel'; + + const header = document.createElement('div'); + header.className = 'mm-preset-header'; + const title = document.createElement('div'); + title.className = 'mm-preset-title'; + title.textContent = 'Modular presets'; + const closeBtn = document.createElement('button'); + closeBtn.className = 'mm-preset-close'; + closeBtn.innerHTML = '×'; + closeBtn.addEventListener('click', () => overlay.remove()); + header.appendChild(title); + header.appendChild(closeBtn); + panel.appendChild(header); + + const list = document.createElement('div'); + list.className = 'mm-preset-list'; + for (const preset of MODULAR_PRESETS) { + const item = document.createElement('button'); + item.className = 'mm-preset-item'; + item.dataset.presetId = preset.id; + const name = document.createElement('div'); + name.className = 'mm-preset-name'; + name.textContent = preset.name; + const desc = document.createElement('div'); + desc.className = 'mm-preset-desc'; + desc.textContent = preset.description; + const sub = document.createElement('div'); + sub.className = 'mm-preset-sub'; + sub.textContent = preset.state?.subEngine ?? ''; + item.appendChild(name); + item.appendChild(desc); + item.appendChild(sub); + item.addEventListener('click', async () => { + item.classList.add('busy'); + try { + const engine = getEngine?.(); + if (engine && engine.id === 'modular') { + await applyPreset(engine, preset); + // Sync Phase C UI state to reflect the preset's sub-engine + // and counts so the rebuild that follows matches the engine. + if (preset.state?.subEngine) uiState.subEngine = preset.state.subEngine; + if (typeof preset.state?.adsrCount === 'number') { + uiState.adsrCount = preset.state.adsrCount; + } + if (typeof preset.state?.lfoCount === 'number') { + uiState.lfoCount = preset.state.lfoCount; + } + saveUIState(); + onStateChange?.(); // trigger a-app saveState -> persists DSP snapshot + refresh(); + } + } catch (err) { + console.error('[modular-ui] preset apply failed:', err); + } finally { + item.classList.remove('busy'); + overlay.remove(); + } + }); + list.appendChild(item); + } + panel.appendChild(list); + overlay.appendChild(panel); + + // Dismiss on backdrop click + overlay.addEventListener('click', (e) => { + if (e.target === overlay) overlay.remove(); + }); + + document.body.appendChild(overlay); + } + + function applyExposeChange(label, exposed) { + const engine = getEngine?.(); + if (!engine || engine.id !== 'modular') return; + engine.setExposeEngineParam?.(label, exposed); + if (exposed) { + if (!uiState.exposedEngineParams.includes(label)) { + uiState.exposedEngineParams.push(label); + } + } else { + uiState.exposedEngineParams = uiState.exposedEngineParams.filter(l => l !== label); + } + saveUIState(); + // paramMeta:change listener rebuilds the matrix & list. + } + + // --------------------------------------------------------------------------- + // Lifecycle + // --------------------------------------------------------------------------- + + function show() { + dockIcon.classList.remove('hidden'); + const engine = getEngine?.(); + if (engine && engine.id === 'modular') bindEngine(engine); + refresh(); + } + + function hide() { + dockIcon.classList.add('hidden'); + dockIcon.classList.remove('active'); + drawer.root.classList.add('hidden'); + } + + function isVisible() { + return !dockIcon.classList.contains('hidden'); + } + + function refresh() { + const engine = getEngine?.(); + if (!engine || engine.id !== 'modular') return; + bindEngine(engine); + + // One-time apply of persisted state to the engine. + if (pendingRestore) { + pendingRestore = false; + try { + if (uiState.subEngine && uiState.subEngine !== engine.activeSubEngineId + && engine.availableSubEngines?.includes(uiState.subEngine)) { + engine.setSubEngine?.(uiState.subEngine); + } + // Sync counts (UI persisted → engine). Guard if method missing. + if (typeof engine.setModSourceCount === 'function') { + engine.setModSourceCount(uiState.adsrCount, uiState.lfoCount); + } + // Re-expose saved sound params. + for (const label of uiState.exposedEngineParams) { + engine.setExposeEngineParam?.(label, true); + } + applyAllEnablesToEngine(); + } catch (err) { + console.warn('[modular-ui] restore failed:', err); + } + } + + // Keep UI widgets in sync with engine state (in case engine was + // mutated outside of our control — e.g. preset load). + if (engine.adsrCount != null) uiState.adsrCount = engine.adsrCount; + if (engine.lfoCount != null) uiState.lfoCount = engine.lfoCount; + + refreshSubEngineButtons(); + refreshCountValues(); + refreshEnableRow(); + rebuildMatrixGrid(); + rebuildSoundParamList(); + } + + function teardown() { + if (unsubParamMeta) { try { unsubParamMeta(); } catch (_) { /* ignore */ } } + unsubParamMeta = null; + dockIcon.remove(); + drawer.root.remove(); + const style = document.getElementById('modular-ui-styles'); + if (style) style.remove(); + } + + // Start hidden (engine-gated). + hide(); + + // Listen for close button on our drawer so the dock icon state stays synced. + drawer.closeBtn.addEventListener('click', () => { + drawer.root.classList.add('hidden'); + dockIcon.classList.remove('active'); + }); + + // Dock icon opens/closes our drawer. We piggy-back on the existing + // wireDock() event delegation — but since our drawer's id is `drawer-modular` + // and our icon uses `data-drawer="modular"`, wireDock() already handles it. + // However, wireDock was wired at init time — any new dock-click delegation + // works because it's attached to #dock via event delegation. + + return { + teardown, + refresh, + show, + hide, + isVisible, + /** Exposed for testability. */ + _debug: { + getCell, + setCell, + cycleCell, + uiState: () => ({ ...uiState }), + }, + }; + + // =========================================================================== + // Section builders + // =========================================================================== + + function buildSubEngineSection(body, refs, onChange) { + const section = el('div', 'mm-section'); + section.appendChild(el('div', 'mm-section-header', 'Sub-engine')); + + const row = el('div', 'mm-row mm-sub-row'); + for (const opt of SUB_ENGINE_OPTIONS) { + const b = el('button', 'mm-sub-btn', opt.label); + b.dataset.subEngine = opt.id; + b.addEventListener('click', () => onChange(opt.id)); + refs.subEngineBtns.push(b); + row.appendChild(b); + } + section.appendChild(row); + body.appendChild(section); + } + + function buildPresetsSection(body, onOpen) { + const section = el('div', 'mm-section'); + const header = el('div', 'mm-section-header', 'Presets'); + section.appendChild(header); + const btn = el('button', 'mm-preset-open-btn', 'Load preset…'); + btn.addEventListener('click', onOpen); + section.appendChild(btn); + body.appendChild(section); + } + + function buildCountSection(body, refs, onCountChange) { + const section = el('div', 'mm-section'); + section.appendChild(el('div', 'mm-section-header', 'Mod Pool')); + + const hint = el('div', 'mm-hint', + 'Slots past the count stay alive in the DSP but are not MLP-driven. ' + + 'Changing counts reinitialises the MLP.'); + section.appendChild(hint); + + const mkStepper = (labelText, kind, max) => { + const row = el('div', 'mm-row mm-stepper-row'); + row.appendChild(el('label', 'mm-label', labelText)); + const dec = el('button', 'mm-step-btn', '−'); + const val = el('span', 'mm-step-val', String(uiState[kind === 'adsr' ? 'adsrCount' : 'lfoCount'])); + const inc = el('button', 'mm-step-btn', '+'); + dec.addEventListener('click', () => { + const cur = parseInt(val.textContent, 10); + if (cur > 1) onCountChange(kind, cur - 1); + }); + inc.addEventListener('click', () => { + const cur = parseInt(val.textContent, 10); + if (cur < max) onCountChange(kind, cur + 1); + }); + row.appendChild(dec); + row.appendChild(val); + row.appendChild(inc); + row.appendChild(el('span', 'mm-step-range', `(1..${max})`)); + if (kind === 'adsr') refs.adsrCountValue = val; + else refs.lfoCountValue = val; + return row; + }; + + section.appendChild(mkStepper('ADSR count', 'adsr', MAX_ADSR)); + section.appendChild(mkStepper('LFO count', 'lfo', MAX_LFO)); + body.appendChild(section); + } + + function buildEnableSection(body, refs, onEnableChange) { + const section = el('div', 'mm-section'); + section.appendChild(el('div', 'mm-section-header', 'Slot enables')); + + const mkRow = (kind, max) => { + const wrap = el('div', 'mm-enable-wrap'); + wrap.appendChild(el('div', 'mm-enable-label', kind.toUpperCase())); + const row = el('div', 'mm-enable-row'); + for (let i = 0; i < max; i++) { + const b = el('button', `mm-enable-btn mm-enable-${kind}`, String(i + 1)); + b.addEventListener('click', () => { + const enabled = !b.classList.contains('active'); + onEnableChange(kind, i, enabled); + }); + if (kind === 'adsr') refs.adsrEnables.push(b); + else refs.lfoEnables.push(b); + row.appendChild(b); + } + wrap.appendChild(row); + return wrap; + }; + + section.appendChild(mkRow('adsr', MAX_ADSR)); + section.appendChild(mkRow('lfo', MAX_LFO)); + body.appendChild(section); + } + + function buildMatrixSection(body, refs, handlers) { + const section = el('div', 'mm-section mm-matrix-section'); + const header = el('div', 'mm-section-header', 'Matrix'); + // Phase E: the tap-vs-drag mode toggle stub was deleted — drag-to-paint + // is non-goal for Phase E and the button did nothing functional. + section.appendChild(header); + + const legend = el('div', 'mm-hint', + 'Click to cycle 0 → 0.25 → 0.5 → 0.75 → 1 → 0. ' + + 'Shift-click: zero. Long-press: precise. Right-click: menu (negatives).'); + section.appendChild(legend); + + const scrollWrap = el('div', 'mm-scroll'); + const grid = el('div', 'mm-grid'); + refs.matrixGrid = grid; + scrollWrap.appendChild(grid); + section.appendChild(scrollWrap); + + const empty = el('div', 'mm-hint warn', ''); + refs.matrixEmpty = empty; + section.appendChild(empty); + + body.appendChild(section); + } + + function buildSoundParamSection(body, refs, onExposeChange) { + const section = el('div', 'mm-section'); + section.appendChild(el('div', 'mm-section-header', 'Engine sound params')); + const list = el('div', 'mm-sound-list'); + refs.soundParamList = list; + section.appendChild(list); + body.appendChild(section); + } + + // =========================================================================== + // localStorage + // =========================================================================== + + function loadUIState() { + const defaults = { + subEngine: 'subtractive', + adsrCount: 4, + lfoCount: 8, + adsrEnables: Array.from({ length: MAX_ADSR }, (_, i) => i < 4), + lfoEnables: Array.from({ length: MAX_LFO }, (_, i) => i < 8), + exposedEngineParams: [], + }; + try { + const raw = localStorage.getItem(STORAGE_KEY); + if (!raw) return defaults; + const s = JSON.parse(raw); + return { + subEngine: typeof s.subEngine === 'string' ? s.subEngine : defaults.subEngine, + adsrCount: clamp(s.adsrCount, 1, MAX_ADSR, defaults.adsrCount), + lfoCount: clamp(s.lfoCount, 1, MAX_LFO, defaults.lfoCount), + adsrEnables: padBool(s.adsrEnables, MAX_ADSR, defaults.adsrEnables), + lfoEnables: padBool(s.lfoEnables, MAX_LFO, defaults.lfoEnables), + exposedEngineParams: Array.isArray(s.exposedEngineParams) ? s.exposedEngineParams.slice() : [], + }; + } catch (_) { + return defaults; + } + } + + function saveUIState() { + try { + localStorage.setItem(STORAGE_KEY, JSON.stringify(uiState)); + onStateChange?.(); + } catch (err) { + console.warn('[modular-ui] saveUIState failed:', err); + } + } +} + +// --------------------------------------------------------------------------- +// DOM scaffolding +// --------------------------------------------------------------------------- + +function createDockIcon() { + const dock = document.getElementById('dock'); + if (!dock) throw new Error('[modular-ui] #dock not found'); + + // Insert before the help icon if present, else append. + const helpIcon = dock.querySelector('.dock-icon[data-drawer="help"]'); + const btn = document.createElement('button'); + btn.className = 'dock-icon hidden'; + btn.dataset.drawer = 'modular'; + btn.title = 'Modular mod pool & matrix'; + btn.innerHTML = ` + + + + + + + + + + + + Mod + `; + if (helpIcon) dock.insertBefore(btn, helpIcon); + else dock.appendChild(btn); + return btn; +} + +function createDrawer() { + const stack = document.getElementById('drawer-stack'); + if (!stack) throw new Error('[modular-ui] #drawer-stack not found'); + + const root = document.createElement('div'); + root.className = 'drawer hidden mm-drawer'; + root.id = 'drawer-modular'; + root.dataset.drawer = 'modular'; + + const header = document.createElement('div'); + header.className = 'drawer-header'; + const title = document.createElement('span'); + title.textContent = 'Modular'; + const closeBtn = document.createElement('button'); + closeBtn.className = 'drawer-close'; + closeBtn.dataset.drawer = 'modular'; + closeBtn.innerHTML = '×'; + header.appendChild(title); + header.appendChild(closeBtn); + + const body = document.createElement('div'); + body.className = 'drawer-body mm-body'; + + root.appendChild(header); + root.appendChild(body); + stack.appendChild(root); + + return { root, header, body, closeBtn }; +} + +// --------------------------------------------------------------------------- +// Styles +// --------------------------------------------------------------------------- + +function injectStyles() { + if (document.getElementById('modular-ui-styles')) return; + const s = document.createElement('style'); + s.id = 'modular-ui-styles'; + s.textContent = ` + .mm-drawer .mm-body { + display: flex; + flex-direction: column; + gap: 12px; + overflow-y: auto; + overflow-x: hidden; + padding: 8px 10px 16px; + max-height: 85vh; + } + .mm-section { + display: flex; + flex-direction: column; + gap: 6px; + padding: 8px; + border: 1px solid var(--glass-border, rgba(255,255,255,0.08)); + border-radius: var(--radius-sm, 8px); + background: rgba(255,255,255,0.02); + } + .mm-section-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + font-size: 0.7rem; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--text-dim, #888); + margin-bottom: 2px; + } + .mm-row { + display: flex; + align-items: center; + gap: 6px; + flex-wrap: wrap; + } + .mm-label { + flex: 0 0 auto; + font-size: 0.75rem; + color: var(--text-dim, #888); + } + .mm-hint { + font-size: 0.65rem; + color: var(--text-dim, #888); + line-height: 1.3; + } + .mm-hint.warn { + color: #ffb070; + } + + /* Sub-engine buttons */ + .mm-sub-row { gap: 4px; } + .mm-sub-btn { + flex: 1; + padding: 8px 10px; + background: rgba(255,255,255,0.04); + border: 1px solid var(--glass-border, rgba(255,255,255,0.1)); + border-radius: 6px; + color: var(--text, #e0e0e0); + font-size: 0.75rem; + cursor: pointer; + min-height: 34px; + touch-action: manipulation; + } + .mm-sub-btn:hover:not(:disabled) { border-color: var(--accent, #ff6a00); } + .mm-sub-btn.active { + background: var(--accent-dim, rgba(255,106,0,0.25)); + border-color: var(--accent, #ff6a00); + color: var(--accent, #ff6a00); + } + .mm-sub-btn:disabled { + opacity: 0.35; + cursor: not-allowed; + } + .mm-sub-btn.busy { opacity: 0.6; } + + /* Steppers */ + .mm-stepper-row { + display: flex; + align-items: center; + gap: 6px; + } + .mm-stepper-row .mm-label { flex: 1; } + .mm-step-btn { + width: 32px; + height: 32px; + background: rgba(255,255,255,0.04); + border: 1px solid var(--glass-border, rgba(255,255,255,0.1)); + border-radius: 6px; + color: var(--text, #e0e0e0); + cursor: pointer; + font-size: 1rem; + touch-action: manipulation; + } + .mm-step-btn:hover { border-color: var(--accent, #ff6a00); } + .mm-step-val { + display: inline-block; + min-width: 28px; + text-align: center; + font-variant-numeric: tabular-nums; + font-weight: 500; + } + .mm-step-range { + font-size: 0.65rem; + color: var(--text-dim, #888); + margin-left: 4px; + } + + /* Enable rows */ + .mm-enable-wrap { + display: flex; + flex-direction: column; + gap: 3px; + } + .mm-enable-label { + font-size: 0.6rem; + color: var(--text-dim, #888); + text-transform: uppercase; + letter-spacing: 0.08em; + } + .mm-enable-row { + display: flex; + flex-wrap: wrap; + gap: 3px; + } + .mm-enable-btn { + width: 24px; + height: 24px; + font-size: 0.6rem; + background: rgba(255,255,255,0.04); + border: 1px solid var(--glass-border, rgba(255,255,255,0.1)); + border-radius: 4px; + color: var(--text-dim, #888); + cursor: pointer; + padding: 0; + touch-action: manipulation; + } + .mm-enable-btn.active { + background: var(--accent-dim, rgba(255,106,0,0.25)); + border-color: var(--accent, #ff6a00); + color: var(--accent, #ff6a00); + } + .mm-enable-btn.out-of-count { + opacity: 0.35; + } + + /* Matrix grid */ + .mm-matrix-section { + /* Allow this section to take extra vertical space */ + } + .mm-mode-toggle { + font-size: 0.6rem; + padding: 2px 6px; + background: rgba(255,255,255,0.04); + border: 1px solid var(--glass-border, rgba(255,255,255,0.1)); + border-radius: 4px; + color: var(--text-dim, #888); + cursor: pointer; + touch-action: manipulation; + } + .mm-scroll { + overflow-x: auto; + overflow-y: auto; + max-height: 360px; + border-radius: 4px; + border: 1px solid var(--glass-border, rgba(255,255,255,0.06)); + } + .mm-grid { + display: grid; + gap: 1px; + background: rgba(255,255,255,0.05); + padding: 1px; + min-width: max-content; + touch-action: manipulation; + } + .mm-corner, + .mm-col-header, + .mm-row-header { + background: #0d0d0d; + color: var(--text-dim, #888); + font-size: 0.55rem; + display: flex; + align-items: center; + justify-content: center; + padding: 2px 4px; + text-transform: uppercase; + letter-spacing: 0.05em; + position: sticky; + z-index: 2; + } + .mm-col-header { + top: 0; + writing-mode: vertical-rl; + transform: rotate(180deg); + min-height: 48px; + min-width: 28px; + } + .mm-row-header { + left: 0; + min-width: 32px; + font-weight: 500; + } + .mm-row-header.mm-src-adsr { color: #ffb070; } + .mm-row-header.mm-src-lfo { color: #6bb6ff; } + .mm-corner { + top: 0; + left: 0; + z-index: 3; + } + .mm-cell { + background: rgba(255,255,255,0.04); + cursor: pointer; + font-size: 0.55rem; + font-variant-numeric: tabular-nums; + display: flex; + align-items: center; + justify-content: center; + min-height: 32px; + min-width: 28px; + user-select: none; + color: #fff; + transition: background 120ms ease; + } + .mm-cell:hover:not(.unavailable) { + outline: 1px solid rgba(255,255,255,0.25); + } + .mm-cell.unavailable { + cursor: not-allowed; + background: repeating-linear-gradient( + 45deg, + rgba(255,255,255,0.02), + rgba(255,255,255,0.02) 4px, + rgba(255,255,255,0.05) 4px, + rgba(255,255,255,0.05) 8px + ); + } + + /* Context menu */ + .mm-cell-menu { + position: fixed; + background: #0d0d0d; + border: 1px solid var(--glass-border, rgba(255,255,255,0.15)); + border-radius: 6px; + padding: 4px; + display: flex; + flex-direction: column; + gap: 2px; + box-shadow: 0 4px 16px rgba(0,0,0,0.5); + z-index: 9999; + min-width: 140px; + } + .mm-cell-menu button { + background: transparent; + border: none; + color: var(--text, #e0e0e0); + text-align: left; + padding: 6px 10px; + font-size: 0.7rem; + border-radius: 4px; + cursor: pointer; + touch-action: manipulation; + } + .mm-cell-menu button:hover { + background: var(--accent-dim, rgba(255,106,0,0.25)); + color: var(--accent, #ff6a00); + } + + /* Sound params list */ + .mm-sound-list { + display: flex; + flex-direction: column; + gap: 4px; + max-height: 260px; + overflow-y: auto; + } + .mm-sound-group { + font-size: 0.6rem; + text-transform: uppercase; + letter-spacing: 0.06em; + color: var(--text-dim, #888); + margin-top: 6px; + padding-bottom: 2px; + border-bottom: 1px solid var(--glass-border, rgba(255,255,255,0.06)); + } + .mm-sound-row { + display: flex; + align-items: center; + gap: 6px; + font-size: 0.72rem; + color: var(--text, #e0e0e0); + padding: 3px 2px; + cursor: pointer; + } + .mm-sound-row input[type="checkbox"] { + accent-color: var(--accent, #ff6a00); + width: 16px; + height: 16px; + } + + /* Preset overlay (Phase E) */ + .mm-preset-open-btn { + padding: 8px 12px; + background: rgba(255,255,255,0.04); + border: 1px solid var(--glass-border, rgba(255,255,255,0.1)); + border-radius: 6px; + color: var(--text, #e0e0e0); + cursor: pointer; + font-size: 0.75rem; + text-align: center; + touch-action: manipulation; + } + .mm-preset-open-btn:hover { + border-color: var(--accent, #ff6a00); + color: var(--accent, #ff6a00); + } + .mm-preset-overlay { + position: fixed; + inset: 0; + background: rgba(0, 0, 0, 0.7); + display: flex; + align-items: center; + justify-content: center; + z-index: 10000; + padding: 16px; + } + .mm-preset-panel { + background: #0d0d0d; + border: 1px solid var(--glass-border, rgba(255,255,255,0.15)); + border-radius: 10px; + width: min(420px, 100%); + max-height: 85vh; + display: flex; + flex-direction: column; + overflow: hidden; + box-shadow: 0 16px 48px rgba(0, 0, 0, 0.7); + } + .mm-preset-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 12px 16px; + border-bottom: 1px solid var(--glass-border, rgba(255,255,255,0.08)); + } + .mm-preset-title { + font-size: 0.85rem; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--text, #e0e0e0); + } + .mm-preset-close { + background: transparent; + border: none; + color: var(--text-dim, #888); + font-size: 1.3rem; + cursor: pointer; + padding: 0 6px; + } + .mm-preset-close:hover { color: var(--accent, #ff6a00); } + .mm-preset-list { + display: flex; + flex-direction: column; + gap: 1px; + background: rgba(255,255,255,0.04); + overflow-y: auto; + } + .mm-preset-item { + background: #0d0d0d; + border: none; + color: var(--text, #e0e0e0); + text-align: left; + padding: 10px 16px; + cursor: pointer; + display: flex; + flex-direction: column; + gap: 2px; + touch-action: manipulation; + } + .mm-preset-item:hover { + background: var(--accent-dim, rgba(255,106,0,0.15)); + } + .mm-preset-item.busy { opacity: 0.5; } + .mm-preset-name { + font-size: 0.85rem; + font-weight: 500; + color: var(--accent, #ff6a00); + } + .mm-preset-desc { + font-size: 0.7rem; + color: var(--text-dim, #888); + line-height: 1.3; + } + .mm-preset-sub { + font-size: 0.6rem; + color: var(--text-dim, #666); + text-transform: uppercase; + letter-spacing: 0.08em; + } + + /* Mobile tweaks */ + @media (max-width: 640px) { + .mm-drawer .mm-body { padding: 6px 8px 12px; gap: 10px; } + .mm-cell { min-width: 26px; min-height: 28px; font-size: 0.5rem; } + .mm-scroll { max-height: 300px; } + } + `; + document.head.appendChild(s); +} + +// --------------------------------------------------------------------------- +// Helpers +// --------------------------------------------------------------------------- + +function el(tag, className, text) { + const e = document.createElement(tag); + if (className) e.className = className; + if (text != null) e.textContent = text; + return e; +} + +function pad2(n) { + return String(n).padStart(2, '0'); +} + +function clamp(v, lo, hi, fallback) { + const n = typeof v === 'number' ? v : parseInt(v, 10); + if (!Number.isFinite(n)) return fallback; + return Math.max(lo, Math.min(hi, n)); +} + +function padBool(arr, len, fallback) { + const src = Array.isArray(arr) ? arr : fallback; + const out = new Array(len); + for (let i = 0; i < len; i++) out[i] = !!src[i]; + return out; +} + +function splitLabel(label) { + const i = label.lastIndexOf('/'); + if (i < 0) return ['', label]; + return [label.slice(0, i), label.slice(i + 1)]; +} + +function stripIndexPrefix(leaf) { + return leaf.replace(/^\d+_/, ''); +} + +function prettyGroup(group) { + // "1_Oscillators" → "Oscillators" + return group.replace(/^\d+_/, '').replace(/_/g, ' '); +} + +function shortDest(name) { + // Truncate long destination names for column headers. + if (name.length <= 10) return name; + return name.slice(0, 9) + '…'; +} diff --git a/tests/e2e/modular-mode.spec.js b/tests/e2e/modular-mode.spec.js new file mode 100644 index 0000000..e403585 --- /dev/null +++ b/tests/e2e/modular-mode.spec.js @@ -0,0 +1,263 @@ +/** + * Modular mode e2e tests (Phase E). + * + * These tests exercise the modular engine end-to-end via the debug probe + * (?debug=1, window.__nisps). They verify: + * 1. Switching to the modular engine gives paramCount = 512 + * 2. Sub-engine swaps keep paramCount = 512 and update destNames + * 3. Matrix cell / DSP state round-trips through getState/setState + * 4. The full state survives a page reload (a-app.js save/load path) + * 5. ADSR/LFO count changes rebuild paramMeta consistently + * 6. Presets apply and produce the expected matrix/source state + * 7. The default patch allows noteOn to produce non-silent output + * 8. destNames differ between sub-engines (sanity) + */ +const { test, expect } = require('@playwright/test'); +const { loadApp } = require('./helpers'); + +/** + * Switch the active engine to `modular` via the engine-switcher UI. + * Waits until window.__nisps.activeEngineId === 'modular'. + */ +async function switchToModular(page) { + // Open the synth drawer first (needed to see the engine cards). + const drawer = page.locator('#drawer-synth'); + if (await drawer.evaluate(el => el.classList.contains('hidden'))) { + await page.click('[data-drawer="synth"]'); + } + page.once('dialog', d => d.accept()); + await page.click('.engine-card[data-engine-id="modular"]'); + // Wait until setActiveEngine completes AND the modular dock icon becomes + // visible — the dock icon is revealed from the tail end of setActiveEngine + // so this guarantees the initial modular-ui.refresh() restore pass has run. + // Without this we race: test code can fire before modularUI.show() + // reaches refresh()'s pendingRestore branch, which then wipes the test's + // subsequent sub-engine swap. + await page.waitForFunction( + () => window.__nisps?.activeEngineId === 'modular', + null, + { timeout: 20_000 } + ); + await page.waitForFunction( + () => !document.querySelector('.dock-icon[data-drawer="modular"]')?.classList.contains('hidden'), + null, + { timeout: 20_000 } + ); + // Also yield one extra microtask so any synchronous deferred work queued + // inside setActiveEngine settles before we start poking the engine. + await page.evaluate(() => new Promise(r => setTimeout(r, 0))); +} + +test.describe('Modular mode', () => { + + test('switching to modular yields paramCount = 512', async ({ page }) => { + await loadApp(page); + await switchToModular(page); + const count = await page.evaluate(() => window.__nisps.paramCount); + expect(count).toBe(512); + }); + + test('debug probe exposes modular hooks', async ({ page }) => { + await loadApp(page); + await switchToModular(page); + const hooks = await page.evaluate(() => ({ + hasGet: typeof window.__nisps.getModularState === 'function', + hasSet: typeof window.__nisps.setModularState === 'function', + hasSwap: typeof window.__nisps.setModularSubEngine === 'function', + hasPreset: typeof window.__nisps.applyModularPreset === 'function', + hasCounts: typeof window.__nisps.setModularSourceCount === 'function', + presetList: window.__nisps.listModularPresets?.()?.length ?? 0, + })); + expect(hooks.hasGet).toBe(true); + expect(hooks.hasSet).toBe(true); + expect(hooks.hasSwap).toBe(true); + expect(hooks.hasPreset).toBe(true); + expect(hooks.hasCounts).toBe(true); + expect(hooks.presetList).toBe(6); + }); + + test('sub-engine swap keeps paramCount = 512', async ({ page }) => { + await loadApp(page); + await switchToModular(page); + + for (const sub of ['additive', 'fm', 'subtractive']) { + await page.evaluate(async (id) => { + await window.__nisps.setModularSubEngine(id); + }, sub); + const info = await page.evaluate(() => ({ + paramCount: window.__nisps.paramCount, + subId: window.__nisps.activeEngine?.activeSubEngineId, + })); + expect(info.subId).toBe(sub); + expect(info.paramCount).toBe(512); + } + }); + + test('destNames differ between sub-engines', async ({ page }) => { + await loadApp(page); + await switchToModular(page); + const sub = await page.evaluate(() => window.__nisps.activeEngine?.destNames); + await page.evaluate(async () => { + await window.__nisps.setModularSubEngine('fm'); + }); + const fm = await page.evaluate(() => window.__nisps.activeEngine?.destNames); + expect(sub).toBeTruthy(); + expect(fm).toBeTruthy(); + expect(sub).toEqual(['pitch','osc2_detune','osc3_detune','osc_mix_bal','noise_level','cutoff','resonance','filter_env_amt','amp','pan']); + expect(fm[1]).toBe('op1_level'); // fm-specific + expect(sub).not.toEqual(fm); + }); + + test('ADSR count change rebuilds paramMeta', async ({ page }) => { + await loadApp(page); + await switchToModular(page); + + const baseline = await page.evaluate(() => window.__nisps.paramCount); + expect(baseline).toBe(512); + + await page.evaluate(() => window.__nisps.setModularSourceCount(6, 8)); + const after = await page.evaluate(() => window.__nisps.paramCount); + // 6 ADSRs * 4 + 8 LFOs * 2 + 48*10 = 24 + 16 + 480 = 520 + expect(after).toBe(520); + + await page.evaluate(() => window.__nisps.setModularSourceCount(4, 8)); + const reset = await page.evaluate(() => window.__nisps.paramCount); + expect(reset).toBe(512); + }); + + test('getState returns a snapshot with raw dsp values', async ({ page }) => { + await loadApp(page); + await switchToModular(page); + const snap = await page.evaluate(() => window.__nisps.getModularState()); + expect(snap).toBeTruthy(); + expect(snap.version).toBe(1); + expect(snap.subEngine).toBe('subtractive'); + expect(typeof snap.dsp).toBe('object'); + // At least the default amp route should be set to 1.0 by the default patch. + expect(snap.dsp['MM_Matrix/s00_d08_amp']).toBeCloseTo(1.0, 4); + expect(snap.dsp['MM_ADSR/00_adsr01_enable']).toBeCloseTo(1.0, 4); + }); + + test('matrix cell persistence across setState', async ({ page }) => { + await loadApp(page); + await switchToModular(page); + + // Pick a distinctive cell: ADSR2 (s=1) → cutoff (d=5) on subtractive. + await page.evaluate(() => { + const engine = window.__nisps.activeEngine; + const idx = engine.paramMeta.findIndex(m => + m.label === 'MM_Matrix/s01_d05_cutoff'); + if (idx < 0) throw new Error('no s01_d05_cutoff cell in paramMeta'); + // paramMeta min=-1 max=1; 0.9 in norm = 0.8 raw. + engine.setParam(idx, 0.9); + }); + + const snap = await page.evaluate(() => window.__nisps.getModularState()); + expect(snap.dsp['MM_Matrix/s01_d05_cutoff']).toBeCloseTo(0.8, 4); + + // Mutate further, then restore. + await page.evaluate(() => { + const engine = window.__nisps.activeEngine; + const idx = engine.paramMeta.findIndex(m => + m.label === 'MM_Matrix/s01_d05_cutoff'); + engine.setParam(idx, 0.1); + }); + + const midSnap = await page.evaluate(() => window.__nisps.getModularState()); + expect(midSnap.dsp['MM_Matrix/s01_d05_cutoff']).not.toBeCloseTo(0.8, 4); + + await page.evaluate(async (s) => { + await window.__nisps.setModularState(s); + }, snap); + + const restored = await page.evaluate(() => window.__nisps.getModularState()); + expect(restored.dsp['MM_Matrix/s01_d05_cutoff']).toBeCloseTo(0.8, 4); + }); + + test('modular DSP state survives a page reload', async ({ page }) => { + // NOTE: don't use loadApp() because it installs an addInitScript that + // clears nisps-a-immersive on every navigation — including our reload. + // Replicate loadApp's bootstrap inline, using a localStorage sentinel + // (NOT window.__x) so the "first nav only" guard survives subsequent + // navigations on the same origin. + await page.addInitScript(() => { + if (!localStorage.getItem('__nisps-test-bootstrapped')) { + localStorage.setItem('__nisps-test-bootstrapped', '1'); + localStorage.removeItem('nisps-a-immersive'); + } + localStorage.setItem('nisps-help-seen', '1'); + }); + await page.goto('/a-immersive.html?debug=1'); + await page.waitForFunction(() => window.__nisps !== undefined, { timeout: 20_000 }); + + await switchToModular(page); + + // Set a distinctive value, save, then reload the page (localStorage + // is now preserved across the nav because __nispsTestBootstrapped is set). + await page.evaluate(() => { + const engine = window.__nisps.activeEngine; + engine._setRawByLabel('3_Filter/01_resonance', 0.73); + }); + await page.evaluate(() => window.__nisps.saveState()); + + await page.goto('/a-immersive.html?debug=1'); + await page.waitForFunction(() => window.__nisps !== undefined, { timeout: 20_000 }); + + // Engine is deferred-constructed; clicking the modular card re-instantiates + // it and the pending DSP state should be applied before setActiveEngine. + await switchToModular(page); + + const restored = await page.evaluate(() => window.__nisps.getModularState()); + expect(restored).toBeTruthy(); + expect(restored.dsp['3_Filter/01_resonance']).toBeCloseTo(0.73, 4); + }); + + test('preset apply: plucky bass sets the expected matrix routes', async ({ page }) => { + await loadApp(page); + await switchToModular(page); + + const ok = await page.evaluate(async () => { + return await window.__nisps.applyModularPreset('modular-plucky-bass'); + }); + expect(ok).toBe(true); + + const snap = await page.evaluate(() => window.__nisps.getModularState()); + expect(snap.subEngine).toBe('subtractive'); + // ADSR2 fast decay + expect(snap.dsp['MM_ADSR/01_adsr02_decay']).toBeCloseTo(0.15, 4); + // Matrix: ADSR2 (s01) → cutoff (d05) at raw 0.8 + expect(snap.dsp['MM_Matrix/s01_d05_cutoff']).toBeCloseTo(0.8, 4); + // Filter cutoff moved to 400 Hz + expect(snap.dsp['3_Filter/00_cutoff']).toBeCloseTo(400, 2); + }); + + test('preset apply: DX bell swaps to fm sub-engine', async ({ page }) => { + await loadApp(page); + await switchToModular(page); + + await page.evaluate(async () => { + await window.__nisps.applyModularPreset('modular-dx-bell'); + }); + const snap = await page.evaluate(() => window.__nisps.getModularState()); + expect(snap.subEngine).toBe('fm'); + expect(snap.dsp['MM_Matrix/s02_d03_op3_level']).toBeCloseTo(1.0, 4); + + // paramCount should still be 512 after the cross-engine swap. + const count = await page.evaluate(() => window.__nisps.paramCount); + expect(count).toBe(512); + }); + + test('initial outputs are in [0,1] after modular swap', async ({ page }) => { + await loadApp(page); + await switchToModular(page); + + // Set inputs so the MLP runs a forward pass. + await page.evaluate(() => window.__nisps.setInputs(0.3, 0.7)); + const outputs = await page.evaluate(() => window.__nisps.getOutputs()); + expect(outputs.length).toBe(512); + for (const v of outputs) { + expect(v).toBeGreaterThanOrEqual(0); + expect(v).toBeLessThanOrEqual(1); + } + }); +});