---
name: 波形渲染引擎
description: 后台引擎:渲染wavedrom波形。
author: ymjr
version: 1.0.0
license: MIT
usage: 后台常驻引擎,为带有 customData.wavedrom 标记的图元提供底层的 Rough.js / Canvas 渲染拦截,实时将时序图代码转化为高质量的波形矢量图。
features:
- 拦截 `drawElementOnCanvas` 进行离屏 SVG 生成并缓存 (imageCache)
- 内置 WaveDrom 全量 JS 运行时以支持全离线解析
- 基于自然长宽比自动校正元素的边界物理尺寸 (width/height)
- 支持复杂 Group 分组渲染及 Live Preview 的无损展示
dependencies:
- 供 Action-Wavedrom-Manager 唤起面板和输入代码使用
autorun: true
---
/*
```javascript
*/
var locales = {
zh: {
log_injected: "🌊 WaveDrom 本地引擎注入完毕",
log_no_core: "❌ EA_Core 未运行!",
log_unmounted: "[{id}] 🔌 已卸载",
log_mounted: "[{id}] 🚀 挂载完毕",
ui_title: "🌊 Wavedrom 原生构建器",
ui_builder: "可视化构建器",
ui_code: "> 代码模式",
ui_preview: "实时预览",
ui_cancel: "取消",
ui_save: "应用到画板",
ui_error: "⚠️ 数据结构错误或语法不合法",
ui_name: "名称",
ui_wave: "波形 (p.01x)",
ui_data: "数据 (空格/数组)",
ui_add_sig: "➕ 新增信号通道"
},
en: {
log_injected: "🌊 WaveDrom local engine injected",
log_no_core: "❌ EA_Core not running!",
log_unmounted: "[{id}] 🔌 Unmounted",
log_mounted: "[{id}] 🚀 Mounted successfully",
ui_title: "🌊 Wavedrom Native Builder",
ui_builder: "Visual Builder",
ui_code: "> Code Mode",
ui_preview: "Live Preview",
ui_cancel: "Cancel",
ui_save: "Apply to Canvas",
ui_error: "⚠️ Invalid data structure or syntax",
ui_name: "Name",
ui_wave: "Wave (p.01x)",
ui_data: "Data (Space/Array)",
ui_add_sig: "➕ Add Signal Channel"
}
};
const SCRIPT_ID = "ymjr.feature.wavedrom-engine";
ExcalidrawAutomate.plugin._ymjr_wavedrom = ExcalidrawAutomate.plugin._ymjr_wavedrom || {};
const WavedromCore = ExcalidrawAutomate.plugin._ymjr_wavedrom;
WavedromCore.imageCache = WavedromCore.imageCache || new Map();
// ==========================================
// 2. 本地注入逻辑
// ==========================================
WavedromCore.loadLocalScripts = () => {
if (window.WaveDrom && window.WaveDrom.RenderWaveForm) return true;
if (!document.getElementById("wavedrom-skin-script")) {
let script1 = document.createElement("script");
script1.id = "wavedrom-skin-script";
script1.textContent = getDefaultJs();
document.head.appendChild(script1);
}
if (!document.getElementById("wavedrom-main-script")) {
let script2 = document.createElement("script");
script2.id = "wavedrom-main-script";
script2.textContent = getWaveDromJs();
document.head.appendChild(script2);
}
console.log(t("log_injected"));
return true;
};
// ==========================================
// 3. 内存渲染引擎
// ==========================================
WavedromCore.generateImageFromCode = async (code, id) => {
return new Promise((resolve) => {
try {
let data;
try { data = (new Function("return " + code))(); }
catch(e) { data = JSON.parse(code); }
const divId = "wavedrom_hidden_" + id;
let div = document.getElementById(divId);
if (!div) {
div = document.createElement("div");
div.id = divId;
div.style.display = "none";
document.body.appendChild(div);
}
window.WaveDrom.RenderWaveForm(id, data, "wavedrom_hidden_");
const svgElement = div.firstChild;
if (!svgElement) throw new Error("SVG generation failed");
if (!svgElement.getAttribute('xmlns')) {
svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');
}
const svgString = new XMLSerializer().serializeToString(svgElement);
document.body.removeChild(div);
const base64 = "data:image/svg+xml;base64," + btoa(unescape(encodeURIComponent(svgString)));
const img = new Image();
img.onload = () => resolve({ img, svg: svgString });
img.onerror = () => resolve(null);
img.src = base64;
} catch(e) {
resolve(null);
}
});
};
// ==========================================
// 4. 原生 HTML UI 构建器 (纯 DOM)
// ==========================================
WavedromCore.openEditor = (initialCode, onSave) => {
// 防止重复打开
if (document.getElementById("ea-wavedrom-adv-panel")) return;
// --- 状态管理 ---
let state = {
mode: 'builder',
code: initialCode,
signals: []
};
let debounceTimer = null;
// --- 创建主面板 ---
const panel = document.createElement('div');
panel.id = "ea-wavedrom-adv-panel";
panel.style.cssText = `position:fixed; top:10vh; left:10vw; width:80vw; max-width:900px; background:var(--background-primary); border:1px solid var(--background-modifier-border); box-shadow:0 10px 30px rgba(0,0,0,0.3); border-radius:8px; z-index:9999; display:flex; flex-direction:column; overflow:hidden; font-family:var(--font-interface);`;
// --- 头部 (支持拖拽) ---
const header = document.createElement('div');
header.style.cssText = `padding:12px 20px; background:var(--background-secondary); cursor:move; border-bottom:1px solid var(--background-modifier-border); display:flex; justify-content:space-between; align-items:center; user-select:none;`;
header.innerHTML = `${t("ui_title")}`;
panel.appendChild(header);
// --- 拖拽逻辑 ---
let isDragging = false, startX, startY, initLeft, initTop;
header.onmousedown = (e) => {
if(e.target.tagName === 'BUTTON') return;
isDragging = true; startX = e.clientX; startY = e.clientY;
const rect = panel.getBoundingClientRect(); initLeft = rect.left; initTop = rect.top;
e.preventDefault();
document.onmousemove = (e) => {
if(!isDragging) return;
panel.style.left = (initLeft + e.clientX - startX) + 'px';
panel.style.top = (initTop + e.clientY - startY) + 'px';
};
document.onmouseup = () => { isDragging = false; document.onmousemove = null; document.onmouseup = null; };
};
// --- 核心布局区域 ---
const content = document.createElement('div');
content.style.cssText = `display:flex; height:450px; padding:20px; gap:20px; background:var(--background-primary);`;
// 左侧输入区
const leftPanel = document.createElement('div');
leftPanel.style.cssText = `flex:1.2; display:flex; flex-direction:column; overflow:hidden;`;
// 顶部 Tab
const tabContainer = document.createElement('div');
tabContainer.style.cssText = `display:flex; border-radius:6px; overflow:hidden; border:1px solid var(--background-modifier-border); margin-bottom:15px;`;
const btnBuilder = document.createElement('button');
btnBuilder.innerText = t("ui_builder"); btnBuilder.style.cssText = `flex:1; border:none; padding:8px; cursor:pointer; font-weight:bold; background:var(--interactive-accent); color:var(--text-on-accent); box-shadow:none; border-radius:0;`;
const btnCode = document.createElement('button');
btnCode.innerText = t("ui_code"); btnCode.style.cssText = `flex:1; border:none; padding:8px; cursor:pointer; font-weight:bold; background:var(--background-secondary); color:var(--text-normal); box-shadow:none; border-radius:0;`;
tabContainer.appendChild(btnBuilder); tabContainer.appendChild(btnCode);
leftPanel.appendChild(tabContainer);
// 动态输入容器
const inputArea = document.createElement('div');
inputArea.style.cssText = `flex:1; overflow-y:auto; display:flex; flex-direction:column;`;
leftPanel.appendChild(inputArea);
// 右侧预览区
const rightPanel = document.createElement('div');
rightPanel.style.cssText = `flex:1; display:flex; flex-direction:column; border:1px solid var(--background-modifier-border); border-radius:8px; background:#fff; overflow:hidden;`;
rightPanel.innerHTML = `
${t("ui_preview")}
`;
const previewDiv = document.createElement('div');
previewDiv.style.cssText = `flex:1; overflow:auto; padding:15px; background:var(--background-primary-alt, #fff);`;
rightPanel.appendChild(previewDiv);
content.appendChild(leftPanel);
content.appendChild(rightPanel);
panel.appendChild(content);
// --- 底部操作区 ---
const footer = document.createElement('div');
footer.style.cssText = `padding:15px 20px; border-top:1px solid var(--background-modifier-border); display:flex; justify-content:flex-end; gap:10px; background:var(--background-secondary);`;
const cancelBtn = document.createElement('button');
cancelBtn.innerText = t("ui_cancel"); cancelBtn.onclick = () => panel.remove();
const saveBtn = document.createElement('button');
saveBtn.innerText = t("ui_save"); saveBtn.className = "mod-cta";
saveBtn.onclick = () => {
if (state.mode === 'builder') syncBuilderToCode();
onSave(state.code);
panel.remove();
};
footer.appendChild(cancelBtn); footer.appendChild(saveBtn);
panel.appendChild(footer);
document.body.appendChild(panel);
header.querySelector('#wd-close-btn').onclick = () => panel.remove();
// ==========================================
// 内部逻辑与视图更新
// ==========================================
const updatePreview = async () => {
previewDiv.innerHTML = "";
const result = await WavedromCore.generateImageFromCode(state.code, "preview");
if (result && result.img) {
result.img.style.display = "block";
result.img.style.margin = "0 auto";
previewDiv.appendChild(result.img);
} else {
previewDiv.innerHTML = `${t("ui_error")}
`;
}
};
const triggerUpdate = () => {
if (state.mode === 'builder') syncBuilderToCode();
clearTimeout(debounceTimer);
debounceTimer = setTimeout(updatePreview, 300);
};
const syncBuilderToCode = () => {
const cleanArray = (arr) => {
return arr.map(s => {
if (Array.isArray(s)) return cleanArray(s);
if (typeof s === 'string') return s;
if (typeof s === 'object' && s !== null) {
if (Object.keys(s).length === 0) return {};
// 修复2: 解构保留所有隐性属性(如 period/phase/node),避免直接硬编码覆盖
const res = { ...s };
res.name = res.name || "";
res.wave = res.wave || "";
// 修复1: 增加类型安全校验,防止从 JSON 解析出来的 data 是数组报错
if (typeof res.data === 'string' && res.data.trim() === "") {
delete res.data;
} else if (Array.isArray(res.data) && res.data.length === 0) {
delete res.data;
}
return res;
}
return s;
}).filter(Boolean);
};
let parsed = {};
try {
parsed = (new Function("return " + state.code))() || {};
} catch(e) {}
parsed.signal = cleanArray(state.signals);
state.code = JSON.stringify(parsed, null, 2);
};
const parseCodeToSignals = () => {
try {
const parsed = (new Function("return " + state.code))();
state.signals = Array.isArray(parsed?.signal) ? parsed.signal : [];
} catch(e) {
if (state.signals.length === 0) state.signals = [{ name: "clk", wave: "p" }];
}
};
// --- 渲染 Builder 表单 ---
const renderBuilder = () => {
inputArea.innerHTML = "";
const hint = document.createElement('div');
hint.style.cssText = `display:flex; gap:8px; margin-bottom:8px; padding-right:60px; font-size:12px; color:var(--text-muted); font-weight:bold;`;
hint.innerHTML = `${t("ui_name")}${t("ui_wave")}${t("ui_data")}`;
inputArea.appendChild(hint);
const listContainer = document.createElement('div');
listContainer.style.cssText = `flex:1; overflow-y:auto; padding-right:5px;`;
const reRenderList = () => {
listContainer.innerHTML = "";
// 修复:递归渲染元素以支持 Group 分组特性
const renderItem = (item, parentArr, index, depth = 0) => {
if (Array.isArray(item)) {
// 渲染 Group 标题
const groupName = typeof item[0] === 'string' ? item[0] : 'Group';
const groupHeader = document.createElement('div');
groupHeader.style.cssText = `padding: 4px 8px; background: var(--background-secondary); margin: 8px 0 4px ${depth * 15}px; font-size: 12px; font-weight: bold; border-radius: 4px; border-left: 3px solid var(--interactive-accent);`;
groupHeader.innerText = "📁 " + groupName;
listContainer.appendChild(groupHeader);
item.forEach((subItem, subIdx) => {
if (subIdx !== 0 || typeof subItem !== 'string') {
renderItem(subItem, item, subIdx, depth + 1);
}
});
} else if (typeof item === 'object' && item !== null) {
// 处理空对象(作为空白分隔符)
if (Object.keys(item).length === 0) {
const spacer = document.createElement('div');
spacer.style.cssText = `height: 0px; border-bottom: 1px dashed var(--background-modifier-border); margin: 8px 0 8px ${depth * 15}px;`;
listContainer.appendChild(spacer);
return;
}
const row = document.createElement('div');
row.style.cssText = `display:flex; gap:6px; margin-bottom:8px; align-items:center; margin-left: ${depth * 15}px;`;
const createInput = (val, flex, placeholder) => {
const inp = document.createElement('input');
inp.type = "text"; inp.value = val || ""; inp.placeholder = placeholder;
inp.style.cssText = `flex:${flex}; padding:6px; border-radius:4px; background:var(--background-modifier-form-field); border:1px solid var(--background-modifier-border); min-width:0;`;
return inp;
};
const iName = createInput(item.name, 1, "clk");
iName.oninput = (e) => { item.name = e.target.value; triggerUpdate(); };
const iWave = createInput(item.wave, 1.5, "p..."); iWave.style.fontFamily = "monospace";
iWave.oninput = (e) => { item.wave = e.target.value; triggerUpdate(); };
const initDataVal = Array.isArray(item.data) ? item.data.join(' ') : item.data;
const iData = createInput(initDataVal, 1.5, "A B");
iData.oninput = (e) => { item.data = e.target.value; triggerUpdate(); };
const btnGroup = document.createElement('div');
btnGroup.style.cssText = `display:flex; gap:2px; width:55px; flex-shrink:0;`;
const upBtn = document.createElement('button'); upBtn.innerText = "↑";
upBtn.style.cssText = `padding:4px 6px; cursor:pointer; background:none; box-shadow:none; border:1px solid var(--background-modifier-border); border-radius:4px;`;
upBtn.disabled = index === 0 || (depth > 0 && index === 1); // 分组内的第一个元素不能再往上(防止覆盖分组名字)
upBtn.onclick = () => {
[parentArr[index-1], parentArr[index]] = [parentArr[index], parentArr[index-1]];
reRenderList(); triggerUpdate();
};
const delBtn = document.createElement('button'); delBtn.innerText = "✕";
delBtn.style.cssText = `padding:4px 6px; cursor:pointer; background:none; box-shadow:none; border:1px solid var(--background-modifier-border); border-radius:4px; color:var(--text-error);`;
delBtn.onclick = () => {
parentArr.splice(index, 1);
reRenderList(); triggerUpdate();
};
btnGroup.appendChild(upBtn); btnGroup.appendChild(delBtn);
row.appendChild(iName); row.appendChild(iWave); row.appendChild(iData); row.appendChild(btnGroup);
listContainer.appendChild(row);
}
};
state.signals.forEach((sig, index) => {
renderItem(sig, state.signals, index);
});
const addBtn = document.createElement('button');
addBtn.innerText = t("ui_add_sig");
addBtn.style.cssText = `width:100%; margin-top:10px; padding:8px; border:1px dashed var(--background-modifier-border); background:var(--background-primary); cursor:pointer; border-radius:4px; color:var(--text-muted); box-shadow:none;`;
addBtn.onclick = () => {
state.signals.push({ name: `sig_${state.signals.length + 1}`, wave: "0." });
reRenderList(); triggerUpdate();
};
listContainer.appendChild(addBtn);
};
reRenderList();
inputArea.appendChild(listContainer);
};
// --- 渲染 Code 表单 ---
const renderCode = () => {
inputArea.innerHTML = "";
const textArea = document.createElement('textarea');
textArea.value = state.code;
textArea.style.cssText = `flex:1; width:100%; font-family:monospace; white-space:pre; padding:10px; border-radius:4px; resize:none; background:var(--background-modifier-form-field); border:1px solid var(--background-modifier-border);`;
textArea.oninput = (e) => {
state.code = e.target.value;
triggerUpdate();
};
inputArea.appendChild(textArea);
};
// --- 模式切换事件 ---
const switchMode = (mode) => {
state.mode = mode;
if (mode === 'builder') {
btnBuilder.style.background = "var(--interactive-accent)"; btnBuilder.style.color = "var(--text-on-accent)";
btnCode.style.background = "var(--background-secondary)"; btnCode.style.color = "var(--text-normal)";
parseCodeToSignals();
renderBuilder();
} else {
btnCode.style.background = "var(--interactive-accent)"; btnCode.style.color = "var(--text-on-accent)";
btnBuilder.style.background = "var(--background-secondary)"; btnBuilder.style.color = "var(--text-normal)";
renderCode();
}
};
btnBuilder.onclick = () => switchMode('builder');
btnCode.onclick = () => switchMode('code');
// 启动初始渲染
WavedromCore.loadLocalScripts();
switchMode('builder');
updatePreview();
};
// ==========================================
// 5. EA_Core Hooks: 底层渲染拦截
// ==========================================
const handleDrawTextBefore = (payload) => {
const { ea, api } = payload;
if (!ea || !api) return;
const { element } = payload;
if (element?.customData?.wavedrom) return true;
return false;
};
const handleDrawElement = (payload) => {
const { ea, api } = payload;
if (!ea || !api) return;
const { element, context } = payload;
// 不再限制必须是 text 类型
if (element?.customData?.wavedrom) {
// 优先从 customData 取代码,兼容旧版的 text 属性
const code = element.customData.code || element.text;
if (!code) return false;
const cache = WavedromCore.imageCache.get(element.id);
if (!cache || cache.rawText !== code) {
WavedromCore.imageCache.set(element.id, { rawText: code, status: "pending", img: null });
WavedromCore.generateImageFromCode(code, element.id).then(res => {
if (res && res.img) {
WavedromCore.imageCache.set(element.id, { rawText: code, status: "ready", img: res.img });
// 将元素的物理宽高精准锁定为 SVG 的原始宽高
element.width = res.img.naturalWidth;
element.height = res.img.naturalHeight;
api.ShapeCache && api.ShapeCache.delete(element);
ea.viewUpdateScene({ appState: { zoom: { value: api.getAppState().zoom.value + 0.00001 } } });
}
});
return true;
}
if (cache.status === "ready" && cache.img) {
// 依然保留 contain 缩放逻辑,以防用户手动拖拽缩放矩形边框
const img = cache.img;
const imgRatio = img.naturalWidth / img.naturalHeight;
const elRatio = element.width / element.height;
let drawW = element.width;
let drawH = element.height;
if (elRatio > imgRatio) {
drawW = element.height * imgRatio;
} else {
drawH = element.width / imgRatio;
}
const dx = (element.width - drawW) / 2;
const dy = (element.height - drawH) / 2;
context.drawImage(img, dx, dy, drawW, drawH);
}
return true;
}
return false;
};
// ==========================================
// 6. 挂载入口
// ==========================================
async function mountFeature() {
if (!window.EA_Core) return console.warn(t("log_no_core"));
if (typeof ExcalidrawAutomate.plugin[`disable_${SCRIPT_ID}`] === "function") ExcalidrawAutomate.plugin[`disable_${SCRIPT_ID}`]();
WavedromCore.loadLocalScripts();
window.EA_Core.registerHook(SCRIPT_ID, 'drawElementOnCanvasTextBefore', handleDrawTextBefore, 80);
window.EA_Core.registerHook(SCRIPT_ID, 'drawElementOnCanvas', handleDrawElement, 80);
ExcalidrawAutomate.plugin[`disable_${SCRIPT_ID}`] = () => {
if (window.EA_Core) {
window.EA_Core.unregisterHook(SCRIPT_ID);
WavedromCore.imageCache.clear();
}
console.log(t("log_unmounted", { id: SCRIPT_ID }));
};
console.log(t("log_mounted", { id: SCRIPT_ID }));
}
mountFeature();
function getWaveDromJs() {
return `/*! wavedrom 3.5.0 2024-2-22 PDT */\n!function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,(function(r){return o(e[i][1][r]||r)}),p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;ileft+menu.offsetWidth||e.ytop+menu.offsetHeight)&&(menu.parentNode.removeChild(menu),document.body.removeEventListener("mousedown",closeMenu,!1))}const div=document.getElementById(output+index);div.childNodes[0].addEventListener("contextmenu",(function(e){menu=document.createElement("div"),menu.className="wavedromMenu",menu.style.top=e.y+"px",menu.style.left=e.x+"px";const list=document.createElement("ul"),savePng=document.createElement("li");savePng.innerHTML="Save as PNG",list.appendChild(savePng);const saveSvg=document.createElement("li");saveSvg.innerHTML="Save as SVG",list.appendChild(saveSvg),menu.appendChild(list),document.body.appendChild(menu),savePng.addEventListener("click",(function(){let html="";if(0!==index){const firstDiv=document.getElementById(output+0);html+=firstDiv.innerHTML.substring(166,firstDiv.innerHTML.indexOf(''))}html=[div.innerHTML.slice(0,166),html,div.innerHTML.slice(166)].join("");const svgdata="data:image/svg+xml;base64,"+btoa(html),img=new Image;img.src=svgdata;const canvas=document.createElement("canvas");canvas.width=img.width,canvas.height=img.height;canvas.getContext("2d").drawImage(img,0,0);const pngdata=canvas.toDataURL("image/png"),a=document.createElement("a");a.href=pngdata,a.download="wavedrom.png",a.click(),menu.parentNode.removeChild(menu),document.body.removeEventListener("mousedown",closeMenu,!1)}),!1),saveSvg.addEventListener("click",(function(){let html="";if(0!==index){const firstDiv=document.getElementById(output+0);html+=firstDiv.innerHTML.substring(166,firstDiv.innerHTML.indexOf(''))}html=[div.innerHTML.slice(0,166),html,div.innerHTML.slice(166)].join("");const svgdata="data:image/svg+xml;base64,"+btoa(html),a=document.createElement("a");a.href=svgdata,a.download="wavedrom.svg",a.click(),menu.parentNode.removeChild(menu),document.body.removeEventListener("mousedown",closeMenu,!1)}),!1),menu.addEventListener("contextmenu",(function(ee){ee.preventDefault()}),!1),document.body.addEventListener("mousedown",closeMenu,!1),e.preventDefault()}),!1)}},{}],2:[function(require,module,exports){"use strict";module.exports=function(Edge,from,to){const dx=to.x-from.x,dy=to.y-from.y;let lx=(from.x+to.x)/2;const ly=(from.y+to.y)/2;let d,style;switch(Edge.shape){case"-":break;case"~":d="M "+from.x+","+from.y+" c "+.7*dx+", 0 "+.3*dx+", "+dy+" "+dx+", "+dy;break;case"-~":d="M "+from.x+","+from.y+" c "+.7*dx+", 0 "+dx+", "+dy+" "+dx+", "+dy,Edge.label&&(lx=from.x+.75*(to.x-from.x));break;case"~-":d="M "+from.x+","+from.y+" c 0, 0 "+.3*dx+", "+dy+" "+dx+", "+dy,Edge.label&&(lx=from.x+.25*(to.x-from.x));break;case"-|":d="m "+from.x+","+from.y+" "+dx+",0 0,"+dy,Edge.label&&(lx=to.x);break;case"|-":d="m "+from.x+","+from.y+" 0,"+dy+" "+dx+",0",Edge.label&&(lx=from.x);break;case"-|-":d="m "+from.x+","+from.y+" "+dx/2+",0 0,"+dy+" "+dx/2+",0";break;case"->":style="marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none";break;case"~>":style="marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none",d="M "+from.x+","+from.y+" c "+.7*dx+", 0 "+.3*dx+", "+dy+" "+dx+", "+dy;break;case"-~>":style="marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none",d="M "+from.x+","+from.y+" c "+.7*dx+", 0 "+dx+", "+dy+" "+dx+", "+dy,Edge.label&&(lx=from.x+.75*(to.x-from.x));break;case"~->":style="marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none",d="M "+from.x+","+from.y+" c 0, 0 "+.3*dx+", "+dy+" "+dx+", "+dy,Edge.label&&(lx=from.x+.25*(to.x-from.x));break;case"-|>":style="marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none",d="m "+from.x+","+from.y+" "+dx+",0 0,"+dy,Edge.label&&(lx=to.x);break;case"|->":style="marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none",d="m "+from.x+","+from.y+" 0,"+dy+" "+dx+",0",Edge.label&&(lx=from.x);break;case"-|->":style="marker-end:url(#arrowhead);stroke:#0041c4;stroke-width:1;fill:none",d="m "+from.x+","+from.y+" "+dx/2+",0 0,"+dy+" "+dx/2+",0";break;case"<->":style="marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none";break;case"<~>":style="marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none",d="M "+from.x+","+from.y+" c "+.7*dx+", 0 "+.3*dx+", "+dy+" "+dx+", "+dy;break;case"<-~>":style="marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none",d="M "+from.x+","+from.y+" c "+.7*dx+", 0 "+dx+", "+dy+" "+dx+", "+dy,Edge.label&&(lx=from.x+.75*(to.x-from.x));break;case"<-|>":style="marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none",d="m "+from.x+","+from.y+" "+dx+",0 0,"+dy,Edge.label&&(lx=to.x);break;case"<-|->":style="marker-end:url(#arrowhead);marker-start:url(#arrowtail);stroke:#0041c4;stroke-width:1;fill:none",d="m "+from.x+","+from.y+" "+dx/2+",0 0,"+dy+" "+dx/2+",0";break;case"+":style="marker-end:url(#tee);marker-start:url(#tee);fill:none;stroke:#00F;stroke-width:1";break;default:style="fill:none;stroke:#F00;stroke-width:1"}return{lx:lx,ly:ly,d:d,style:style}}},{}],3:[function(require,module,exports){module.exports={chars:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,47,74,74,118,89,25,44,44,52,78,37,44,37,37,74,74,74,74,74,74,74,74,74,74,37,37,78,78,78,74,135,89,89,96,96,89,81,103,96,37,67,89,74,109,96,103,89,103,96,89,81,96,89,127,89,87,81,37,37,37,61,74,44,74,74,67,74,74,37,74,74,30,30,67,30,112,74,74,74,74,44,67,37,74,67,95,66,65,67,44,34,44,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,43,74,74,74,74,34,74,44,98,49,74,78,0,98,73,53,73,44,44,44,77,71,37,44,44,49,74,111,111,111,81,89,89,89,89,89,89,133,96,89,89,89,89,37,37,37,37,96,96,103,103,103,103,103,78,103,96,96,96,96,87,89,81,74,74,74,74,74,74,118,67,74,74,74,74,36,36,36,36,74,74,74,74,74,74,74,73,81,74,74,74,74,65,74,65,89,74,89,74,89,74,96,67,96,67,96,67,96,67,96,82,96,74,89,74,89,74,89,74,89,74,89,74,103,74,103,74,103,74,103,74,96,74,96,74,37,36,37,36,37,36,37,30,37,36,98,59,67,30,89,67,67,74,30,74,30,74,39,74,44,74,30,96,74,96,74,96,74,80,96,74,103,74,103,74,103,74,133,126,96,44,96,44,96,44,89,67,89,67,89,67,89,67,81,38,81,50,81,37,96,74,96,74,96,74,96,74,96,74,96,74,127,95,87,65,87,81,67,81,67,81,67,30,84,97,91,84,91,84,94,92,73,104,109,91,84,81,84,100,82,76,74,103,91,131,47,40,99,77,37,79,130,100,84,104,114,87,126,101,87,84,93,84,69,84,46,52,82,52,82,114,89,102,96,100,98,91,70,88,88,77,70,85,89,77,67,84,39,65,61,39,189,173,153,111,105,61,123,123,106,89,74,37,30,103,74,96,74,96,74,96,74,96,74,96,74,81,91,81,91,81,130,131,102,84,103,84,87,78,104,81,104,81,88,76,37,189,173,153,103,84,148,90,100,84,89,74,133,118,103,81],other:114}},{}],4:[function(require,module,exports){"use strict";const stringify=require("onml/stringify.js"),w3=require("./w3.js");module.exports=function(arr){arr[1].xmlns=w3.svg,arr[1]["xmlns:xlink"]=w3.xlink;const s1=stringify(arr);return(new DOMParser).parseFromString(s1,"image/svg+xml").firstChild}},{"./w3.js":33,"onml/stringify.js":42}],5:[function(require,module,exports){"use strict";const eva=require("./eva.js"),renderWaveForm=require("./render-wave-form.js");module.exports=function(){renderWaveForm(0,eva("InputJSON_0"),"WaveDrom_Display_")}},{"./eva.js":6,"./render-wave-form.js":30}],6:[function(require,module,exports){"use strict";function erra(e){console.log("Error in WaveJS: ",e);const msg=["tspan",["tspan",{class:"error h5"},"Error: "],e.message];return msg.textWidth=1e3,{signal:[{name:msg}]}}function eva(id){const TheTextBox=document.getElementById(id);let source;if(TheTextBox.type&&"textarea"===TheTextBox.type)try{source=eval("("+TheTextBox.value+")")}catch(e){return erra(e)}else try{source=eval("("+TheTextBox.innerHTML+")")}catch(e){return erra(e)}if("[object Object]"!==Object.prototype.toString.call(source))return erra({message:'[Semantic]: The root has to be an Object: "{signal:[...]}"'});if(source.signal){if(!Array.isArray(source.signal))return erra({message:'[Semantic]: "signal" object has to be an Array "signal:[]"'})}else if(source.assign){if(!Array.isArray(source.assign))return erra({message:'[Semantic]: "assign" object hasto be an Array "assign:[]"'})}else if(!source.reg)return erra({message:'[Semantic]: "signal:[...]" or "assign:[...]" property is missing inside the root Object'});return source}module.exports=eva},{}],7:[function(require,module,exports){"use strict";module.exports=function(lanetext){let gcount=0,lcount=0;const ret=[];return lanetext.forEach((function(e){"vvv-2"===e||"vvv-3"===e||"vvv-4"===e||"vvv-5"===e||"vvv-6"===e||"vvv-7"===e||"vvv-8"===e||"vvv-9"===e?lcount+=1:0!==lcount&&(ret.push(gcount-(lcount+1)/2),lcount=0),gcount+=1})),0!==lcount&&ret.push(gcount-(lcount+1)/2),ret}},{}],8:[function(require,module,exports){"use strict";module.exports=(texts,extra,times)=>{const R=[];if(Array.isArray(texts)||(texts=[texts]),4===texts.length){for(let j=0;jgenBrick(lookUpTable[text]||lookUpTable.default,extra,times)},{"./gen-brick.js":8}],10:[function(require,module,exports){"use strict";const genBrick=require("./gen-brick.js");module.exports=function(text,extra,times){const x2={0:"0",1:"1",x:"x",d:"d",u:"u",z:"z","=":"v",2:"v",3:"v",4:"v",5:"v",6:"v",7:"v",8:"v",9:"v"},x3={0:"",1:"",x:"",d:"",u:"",z:"","=":"-2",2:"-2",3:"-3",4:"-4",5:"-5",6:"-6",7:"-7",8:"-8",9:"-9"},y1={p:"0",n:"1",P:"0",N:"1",h:"1",l:"0",H:"1",L:"0",0:"0",1:"1",x:"x",d:"d",u:"u",z:"z","=":"v",2:"v",3:"v",4:"v",5:"v",6:"v",7:"v",8:"v",9:"v"},y2={p:"",n:"",P:"",N:"",h:"",l:"",H:"",L:"",0:"",1:"",x:"",d:"",u:"",z:"","=":"-2",2:"-2",3:"-3",4:"-4",5:"-5",6:"-6",7:"-7",8:"-8",9:"-9"},x5={p:"nclk",n:"pclk",P:"nclk",N:"pclk"},x6={p:"000",n:"111",P:"000",N:"111"},xclude={hp:"111",Hp:"111",ln:"000",Ln:"000",nh:"111",Nh:"111",pl:"000",Pl:"000"},atext=text.split(""),tmp0={p:"111",n:"000",P:"111",N:"000",h:"111",l:"000",H:"111",L:"000",0:"000",1:"111",x:"xxx",d:"ddd",u:"uuu",z:"zzz","=":"vvv-2",2:"vvv-2",3:"vvv-3",4:"vvv-4",5:"vvv-5",6:"vvv-6",7:"vvv-7",8:"vvv-8",9:"vvv-9"}[atext[1]];let tmp1={p:"pclk",n:"nclk",P:"Pclk",N:"Nclk",h:"pclk",l:"nclk",H:"Pclk",L:"Nclk"}[atext[1]];if(void 0===tmp1){const tmp2=x2[atext[1]];if(void 0===tmp2)return genBrick("xxx",extra,times);{const tmp3=y1[atext[0]];return genBrick(void 0===tmp3?"xxx":[tmp3+"m"+tmp2+y2[atext[0]]+x3[atext[1]],tmp0],extra,times)}}{const tmp4=xclude[text];void 0!==tmp4&&(tmp1=tmp4);const tmp5=x5[atext[1]];return genBrick(void 0===tmp5?[tmp1,tmp0]:[tmp1,tmp0,tmp5,x6[atext[1]]],extra,times)}}},{"./gen-brick.js":8}],11:[function(require,module,exports){"use strict";const tt=require("onml/tt.js"),w3=require("./w3.js");module.exports=function(index,source,lane,waveSkin,content,lanes,groups,notFirstSignal){const waveSkinNames=Object.keys(waveSkin);let skin=waveSkin.default||waveSkin[waveSkinNames[0]];source&&source.config&&source.config.skin&&waveSkin[source.config.skin]&&(skin=waveSkin[source.config.skin]);const e=notFirstSignal?["svg",{id:"svg",xmlns:w3.svg,"xmlns:xlink":w3.xlink},["g"]]:skin,width=lane.xg+lane.xs*(lane.xmax+1),height=content.length*lane.yo+lane.yh0+lane.yh1+lane.yf0+lane.yf1,body=e[e.length-1];body[1]={id:"waves_"+index},body[2]=["rect",{width:width,height:height,style:"stroke:none;fill:white"}],body[3]=["g",tt(lane.xg+.5,lane.yh0+lane.yh1+.5,{id:"lanes_"+index})].concat(lanes),body[4]=["g",{id:"groups_"+index},groups];const head=e[1];return head.id="svgcontent_"+index,head.height=height,head.width=width,head.viewBox="0 0 "+width+" "+height,head.overflow="hidden",e}},{"./w3.js":33,"onml/tt.js":43}],12:[function(require,module,exports){"use strict";module.exports={xs:20,ys:20,xg:120,yh0:0,yh1:0,yf0:0,yf1:0,y0:5,yo:30,tgo:-10,ym:15,xlabel:6,xmax:1,scale:1,head:{},foot:{}}},{}],13:[function(require,module,exports){"use strict";module.exports=function(source,lane){if(lane.hscale=1,lane.hscale0&&(lane.hscale=lane.hscale0),source&&source.config&&source.config.hscale){let hscale=Math.round((x=source.config.hscale)>0?Math.round(x):1);hscale>0&&(hscale>100&&(hscale=100),lane.hscale=hscale)}var x;lane.yh0=0,lane.yh1=0,lane.head=source.head,lane.xmin_cfg=0,lane.xmax_cfg=1e12,source&&source.config&&source.config.hbounds&&2==source.config.hbounds.length&&(source.config.hbounds[0]=Math.floor(source.config.hbounds[0]),source.config.hbounds[1]=Math.ceil(source.config.hbounds[1]),source.config.hbounds[0]"===Next&&(subCycle=!1,Next=Stack.shift()),Repeats=1;"."===Stack[0]||"|"===Stack[0];)Stack.shift(),Repeats+=1;R=subCycle?R.concat(genWaveBrick(Top+Next,0,Repeats-lane.period)):R.concat(genWaveBrick(Top+Next,extra,Repeats))}const unseen_bricks=[];for(let i=0;i0?(num_unseen_markers=findLaneMarkers(unseen_bricks).length,1==findLaneMarkers([unseen_bricks[unseen_bricks.length-1]]).length&&1==findLaneMarkers([R[0]]).length&&(num_unseen_markers-=1)):num_unseen_markers=0,[R,num_unseen_markers]}},{"./find-lane-markers.js":7,"./gen-first-wave-brick.js":9,"./gen-wave-brick.js":10}],15:[function(require,module,exports){"use strict";const parseWaveLane=require("./parse-wave-lane.js");module.exports=function(sig,lane){const content=[],tmp0=[];return sig.map((function(sigx){const current=[];content.push(current),lane.period=sigx.period||1,lane.phase=(sigx.phase?2*sigx.phase:0)+lane.xmin_cfg,tmp0[0]=sigx.name||" ",tmp0[1]=(sigx.phase||0)+lane.xmin_cfg/2;let num_unseen_markers,content_wave=null;if("string"==typeof sigx.wave){const parsed_wave_lane=parseWaveLane(sigx.wave,lane.period*lane.hscale-1,lane);content_wave=parsed_wave_lane[0],num_unseen_markers=parsed_wave_lane[1]}current.push(tmp0.slice(0),content_wave,function(e,num_unseen_markers){let ret_data=e.data;return void 0===ret_data?null:("string"==typeof ret_data&&(ret_data=ret_data.trim().split(/\\s+/)),ret_data=ret_data.slice(num_unseen_markers),ret_data)}(sigx,num_unseen_markers),sigx)})),content}},{"./parse-wave-lane.js":14}],16:[function(require,module,exports){"use strict";const eva=require("./eva.js"),appendSaveAsDialog=require("./append-save-as-dialog.js"),renderWaveForm=require("./render-wave-form.js");module.exports=function(){let index=0;const points=document.querySelectorAll("*");for(let i=0;idiv.wavedromMenu{position:fixed;border:solid 1pt#CCCCCC;background-color:white;box-shadow:0px 10px 20px #808080;cursor:default;margin:0px;padding:0px;}div.wavedromMenu>ul{margin:0px;padding:0px;}div.wavedromMenu>ul>li{padding:2px 10px;list-style:none;}div.wavedromMenu>ul>li:hover{background-color:#b5d5ff;}')}},{"./append-save-as-dialog.js":1,"./eva.js":6,"./render-wave-form.js":30}],17:[function(require,module,exports){"use strict";module.exports=function rec(tmp,state){let name,deltaX=10;"string"!=typeof tmp[0]&&"number"!=typeof tmp[0]||(name=tmp[0],deltaX=25),state.x+=deltaX;for(let i=0;i(element,i)=>{const text=element.node;if(lane.period=element.period?element.period:1,lane.phase=(element.phase?2*element.phase:0)+lane.xmin_cfg,text){const stack=text.split("");let pos=0;for(;stack.length;){const eventname=stack.shift();"."!==eventname&&(Events[eventname]={x:lane.xs*(2*pos*lane.period*lane.hscale-lane.phase)+lane.xlabel,y:i*lane.yo+lane.y0+.5*lane.ys}),pos+=1}}})(lane,Events)),Array.isArray(source.edge)&&source.edge.map(((res,Events,arcFontSize)=>element=>{const words=element.trim().split(/\\s+/),Edge={words:words,label:element.substring(words[0].length).substring(1),from:words[0].substr(0,1),to:words[0].substr(-1,1),shape:words[0].slice(1,-1)},from=Events[Edge.from],to=Events[Edge.to];if(from&&to){const shapeProps=arcShape(Edge,from,to),lx=shapeProps.lx,ly=shapeProps.ly;res.push(((Edge,from,to,shapeProps)=>["path",{id:"gmark_"+Edge.from+"_"+Edge.to,d:shapeProps.d||"M "+from.x+","+from.y+" "+to.x+","+to.y,style:shapeProps.style||"fill:none;stroke:#00F;stroke-width:1"}])(Edge,from,to,shapeProps)),Edge.label&&res.push(renderLabel({x:lx,y:ly},Edge.label,arcFontSize))}})(res,Events,arcFontSize)),Object.keys(Events).map((function(k){k===k.toLowerCase()&&Events[k].x>0&&res.push(renderLabel({x:Events[k].x,y:Events[k].y},k+"",arcFontSize))}))),res}},{"./arc-shape.js":2,"./render-label.js":22}],20:[function(require,module,exports){"use strict";const tt=require("onml/tt.js");function renderGapUses(text,lane){const res=[],Stack=(text||"").split("");let pos=0,subCycle=!1;for(;Stack.length;){let next=Stack.shift();"<"===next&&(subCycle=!0,next=Stack.shift()),">"===next&&(subCycle=!1,next=Stack.shift()),pos+=subCycle?1:2*lane.period,"|"===next&&res.push(["use",tt(lane.xs*((pos-(subCycle?0:lane.period))*lane.hscale-lane.phase),0,{"xlink:href":"#gap"})])}return res}module.exports=function(lanes,index,source,lane){let res=[];if(lanes){const lanesLen=lanes.length,vline=x=>["line",{x1:x,x2:x,y2:lanesLen*lane.yo,style:"stroke:#000;stroke-width:1px"}],lineStyle="fill:none;stroke:#000;stroke-width:1px",bracket={square:{left:["path",{d:"M 2 0 h -4 v "+(lanesLen*lane.yo-1)+" h 4",style:lineStyle}],right:["path",{d:"M -2 0 h 4 v "+(lanesLen*lane.yo-1)+" h -4",style:lineStyle}]},round:{left:["path",{d:"M 2 0 a 4 4 0 0 0 -4 4 v "+(lanesLen*lane.yo-9)+" a 4 4 0 0 0 4 4",style:lineStyle}],right:["path",{d:"M -2 0 a 4 4 1 0 1 4 4 v "+(lanesLen*lane.yo-9)+" a 4 4 1 0 1 -4 4",style:lineStyle}],rightLeft:["path",{d:"M -5 0 a 4 4 1 0 1 4 4 v "+(lanesLen*lane.yo-9)+" a 4 4 1 0 1 -4 4M 5 0 a 4 4 0 0 0 -4 4 v "+(lanesLen*lane.yo-9)+" a 4 4 0 0 0 4 4",style:lineStyle}],leftLeft:["path",{d:"M 2 0 a 4 4 0 0 0 -4 4 v "+(lanesLen*lane.yo-9)+" a 4 4 0 0 0 4 4M 5 1 a 3 3 0 0 0 -3 3 v "+(lanesLen*lane.yo-9)+" a 3 3 0 0 0 3 3",style:lineStyle}],rightRight:["path",{d:"M -5 1 a 3 3 1 0 1 3 3 v "+(lanesLen*lane.yo-9)+" a 3 3 1 0 1 -3 3M -2 0 a 4 4 1 0 1 4 4 v "+(lanesLen*lane.yo-9)+" a 4 4 1 0 1 -4 4",style:lineStyle}]}},backDrop=w=>["rect",{x:-w/2,width:w,height:lanesLen*lane.yo,style:"fill:#ffffffcc;stroke:none"}];if(source&&"string"==typeof source.gaps){const scale=lane.hscale*lane.xs*2,gaps=source.gaps.trim().split(/\\s+/);for(let x=0;xx&&marks.push(["use",tt(2,5+lane.yo*idx,{"xlink:href":"#gap"})])}res.push(["g",tt(scale*(x+offset))].concat(marks))}}for(let idx=0;idx{if(res.push(["path",{id:"group_"+i+"_"+index,d:"m "+(e.x+.5)+","+(e.y*lane.yo+3.5+lane.yh0+lane.yh1)+" c -3,0 -5,2 -5,5 l 0,"+(e.height*lane.yo-16)+" c 0,3 2,5 5,5",style:"stroke:#0041c4;stroke-width:1;fill:none"}]),void 0===e.name)return;const x=e.x-10,y=lane.yo*(e.y+e.height/2)+lane.yh0+lane.yh1,ts=tspan.parse(e.name);res.push(["g",tt(x,y),["g",{transform:"rotate(270)"},["text",{"text-anchor":"middle",class:"info","xml:space":"preserve"}].concat(ts)]])})),res}},{"onml/tt.js":43,tspan:44}],22:[function(require,module,exports){"use strict";const tspan=require("tspan"),tt=require("onml/tt.js"),textWidth=require("./text-width.js");module.exports=function(p,text,fontSize){const w=textWidth(text,fontSize=fontSize||11)+2;return["g",tt(p.x,p.y),["rect",{x:-(w>>1),y:-(fontSize>>1),width:w,height:fontSize,style:"fill:#FFF;"}],["text",{"text-anchor":"middle",y:Math.round(.3*fontSize),style:"font-size:"+fontSize+"px;"}].concat(tspan.parse(text))]}},{"./text-width.js":32,"onml/tt.js":43,tspan:44}],23:[function(require,module,exports){"use strict";const renderMarks=require("./render-marks.js"),renderArcs=require("./render-arcs.js"),renderGaps=require("./render-gaps.js"),renderPieceWise=require("./render-piece-wise.js");module.exports=function(index,content,waveLanes,ret,source,lane){return[renderMarks(content,index,lane,source)].concat(waveLanes.res,[renderArcs(ret.lanes,index,source,lane),renderGaps(ret.lanes,index,source,lane),renderPieceWise(ret.lanes,index,lane)])}},{"./render-arcs.js":19,"./render-gaps.js":20,"./render-marks.js":24,"./render-piece-wise.js":26}],24:[function(require,module,exports){"use strict";const tspan=require("tspan");function captext(cxt,anchor,y){return cxt[anchor]&&cxt[anchor].text?[["text",{x:cxt.xmax*cxt.xs/2,y:y,fill:"#000","text-anchor":"middle","xml:space":"preserve"}].concat(tspan.parse(cxt[anchor].text))]:[]}function ticktock(cxt,ref1,ref2,x,dx,y,len){let offset,L=[];if(void 0===cxt[ref1]||void 0===cxt[ref1][ref2])return[];let val=cxt[ref1][ref2];if("string"==typeof val)val=val.trim().split(/\\s+/);else if("number"==typeof val||"boolean"==typeof val){offset=Number(val),val=[];for(let i=0;i{void 0===sy&&(sy=sx);let i=0;for(;i{const wave=row.wave;Array.isArray(wave)&&res.push(renderLane(wave,idx,cfg))})),res}},{"onml/tt.js":43}],27:[function(require,module,exports){"use strict";const render=require("bit-field/lib/render.js");module.exports=function(index,source){return render(source.reg,source.config)}},{"bit-field/lib/render.js":35}],28:[function(require,module,exports){"use strict";const rec=require("./rec.js"),lane=require("./lane.js"),parseConfig=require("./parse-config.js"),parseWaveLanes=require("./parse-wave-lanes.js"),renderGroups=require("./render-groups.js"),renderLanes=require("./render-lanes.js"),renderWaveLane=require("./render-wave-lane.js"),insertSVGTemplate=require("./insert-svg-template.js");module.exports=function(index,source,waveSkin,notFirstSignal){!function(index,source,lane,waveSkin){if(0!==index)return;const waveSkinNames=Object.keys(waveSkin);if(0===waveSkinNames.length)throw new Error("no skins found");let skin=waveSkin.default||waveSkin[waveSkinNames[0]];source&&source.config&&source.config.skin&&waveSkin[source.config.skin]&&(skin=waveSkin[source.config.skin]);const socket=skin[3][1][2][1];lane.xs=Number(socket.width),lane.ys=Number(socket.height),lane.xlabel=Number(socket.x),lane.ym=Number(socket.y)}(index,source,lane,waveSkin),parseConfig(source,lane);const ret=rec(source.signal,{x:0,y:0,xmax:0,width:[],lanes:[],groups:[]}),content=parseWaveLanes(ret.lanes,lane),waveLanes=renderWaveLane(content,index,lane),waveGroups=renderGroups(ret.groups,index,lane),xmax=waveLanes.glengths.reduce(((res,len,i)=>Math.max(res,len+ret.width[i])),0);return lane.xg=Math.ceil((xmax-lane.tgo)/lane.xs)*lane.xs,insertSVGTemplate(index,source,lane,waveSkin,content,renderLanes(index,content,waveLanes,ret,source,lane),waveGroups,notFirstSignal)}},{"./insert-svg-template.js":11,"./lane.js":12,"./parse-config.js":13,"./parse-wave-lanes.js":15,"./rec.js":17,"./render-groups.js":21,"./render-lanes.js":23,"./render-wave-lane.js":31}],29:[function(require,module,exports){"use strict";const renderAny=require("./render-any.js"),createElement=require("./create-element.js");module.exports=function(index,source,outputElement,waveSkin,notFirstSignal){for(;outputElement.childNodes.length;)outputElement.removeChild(outputElement.childNodes[0]);outputElement.insertBefore(createElement(renderAny(index,source,waveSkin,notFirstSignal)),null)}},{"./create-element.js":4,"./render-any.js":18}],30:[function(require,module,exports){"use strict";const renderWaveElement=require("./render-wave-element.js");module.exports=function(index,source,output,notFirstSignal){renderWaveElement(index,source,document.getElementById(output+index),window.WaveSkin,notFirstSignal)}},{"./render-wave-element.js":29}],31:[function(require,module,exports){"use strict";const tt=require("onml/tt.js"),tspan=require("tspan"),textWidth=require("./text-width.js"),findLaneMarkers=require("./find-lane-markers.js"),renderOverUnder=require("./render-over-under.js");function renderLaneUses(cont,lane){const res=[];if(cont[1]&&(cont[1].map((function(ref,i){res.push(["use",tt(i*lane.xs,0,{"xlink:href":"#"+ref})])})),cont[2]&&cont[2].length)){const labels=findLaneMarkers(cont[1]);labels.length&&labels.map((function(label,i){cont[2]&&void 0!==cont[2][i]&&res.push(["text",{x:label*lane.xs+lane.xlabel,y:lane.ym,"text-anchor":"middle","xml:space":"preserve"}].concat(tspan.parse(cont[2][i])))}))}return res}module.exports=function(content,index,lane){let xmax=0;const glengths=[],res=[];return content.map((function(el,j){const name=el[0][0];if(name){let xoffset=el[0][1];xoffset=xoffset>0?Math.ceil(2*xoffset)-2*xoffset:-2*xoffset,res.push(["g",tt(0,lane.y0+j*lane.yo,{id:"wavelane_"+j+"_"+index})].concat([["text",{x:lane.tgo,y:lane.ym,class:"info","text-anchor":"end","xml:space":"preserve"}].concat(tspan.parse(name))]).concat([["g",tt(xoffset*lane.xs,0,{id:"wavelane_draw_"+j+"_"+index})].concat(renderLaneUses(el,lane))]).concat(renderOverUnder(el[3],"over",lane),renderOverUnder(el[3],"under",lane))),xmax=Math.max(xmax,(el[1]||[]).length),glengths.push(name.textWidth?name.textWidth:name.charCodeAt?textWidth(name,11):0)}})),lane.xmax=Math.min(xmax,lane.xmax_cfg-lane.xmin_cfg),lane.xg=20,{glengths:glengths,res:res}}},{"./find-lane-markers.js":7,"./render-over-under.js":25,"./text-width.js":32,"onml/tt.js":43,tspan:44}],32:[function(require,module,exports){"use strict";const charWidth=require("./char-width.json");module.exports=function(str,size){size=size||11;let width=0;for(let i=0;iObject.assign({transform:"translate("+x+(y?","+y:"")+")"},"object"==typeof obj?obj:{}),colors={2:"#ff0000",3:"#aaff00",4:"#00ffd5",5:"#ffbf00",6:"#00ff19",7:"#006aff"},typeStyle=t=>void 0!==colors[t]?";fill:"+colors[t]:"",norm=(obj,other)=>Object.assign(Object.keys(obj).reduce(((prev,key)=>{const val=Number(obj[key]),valInt=isNaN(val)?0:Math.round(val);return 0!==valInt&&(prev[key]=valInt),prev}),{}),other),text=(body,x,y,rotate)=>{const props={y:6};return void 0!==rotate&&(props.transform="rotate("+rotate+")"),["g",tt(round(x),round(y)),["text",props].concat(tspan.parse(body))]},hline=(len,x,y)=>["line",norm({x1:x,x2:x+len,y1:y,y2:y})],vline=(len,x,y)=>["line",norm({x1:x,x2:x,y1:y,y2:y+len})],getLabel=(val,x,y,step,len,rotate)=>{if("number"!=typeof val)return text(val,x,y,rotate);const res=["g",{}];for(let i=0;i>i&1,x+step*(len/2-i-.5),y));return res},labelArr=(desc,opt)=>{const{margin:margin,hspace:hspace,vspace:vspace,mod:mod,index:index,fontsize:fontsize,vflip:vflip,trim:trim,compact:compact,offset:offset}=opt,width=hspace-margin.left-margin.right-1,height=vspace-margin.top-margin.bottom,step=width/mod,blanks=["g"],bits=["g",tt(round(step/2),-round(.5*fontsize+4))],names=["g",tt(round(step/2),round(.5*height+.4*fontsize-6))],attrs=["g",tt(round(step/2),round(height+.7*fontsize-2))];return desc.map((e=>{let lsbm=0,msbm=mod-1,lsb=index*mod,msb=(index+1)*mod-1;if(e.lsb/mod>>0===index)lsbm=e.lsbm,lsb=e.lsb,e.msb/mod>>0===index&&(msb=e.msb,msbm=e.msbm);else if(e.msb/mod>>0===index)msb=e.msb,msbm=e.msbm;else if(!(lsb>e.lsb&&msb{if(!("string"==typeof text||text instanceof String))return text;const textWidth=text.length*charWidth;if(textWidth<=availableSpace)return text;var end=text.length-(textWidth-availableSpace)/charWidth-3;return end>0?text.substring(0,round(end))+"...":text.substring(0,1)+"..."})(e.name,step*e.bits,trim):e.name,step*(vflip?(msbm+lsbm)/2:mod-(msbm+lsbm)/2-1),0,step,e.bits,e.rotate)),void 0!==e.name&&void 0===e.type||opt.compact&&void 0===e.type||blanks.push(["rect",Object.assign({},norm({x:step*(vflip?lsbm:mod-msbm-1),width:step*(msbm-lsbm+1),height:height},{field:e.name,style:"fill-opacity:0.1"+typeStyle(e.type)}),void 0!==e.rect?e.rect:{})]),void 0!==e.attr&&attrs.push(((e,opt,step,lsbm,msbm)=>{const x=opt.vflip?step*((msbm+lsbm)/2):step*(opt.mod-(msbm+lsbm)/2-1);return Array.isArray(e.attr)?e.attr.reduce(((prev,a,i)=>null==a?prev:prev.concat([getLabel(a,x,opt.fontsize*i,step,e.bits)])),["g",{}]):getLabel(e.attr,x,0,step,e.bits)})(e,opt,step,lsbm,msbm))})),["g",blanks,bits,names,attrs]},skipField=(desc,opt,globalIndex)=>{if(!opt.compact)return!1;return-1!==desc.findIndex((e=>(e=>void 0===e.name&&void 0===e.type)(e)&&globalIndex>e.lsb&&globalIndex<=e.msb+1))},cage=(desc,opt)=>{const{hspace:hspace,vspace:vspace,mod:mod,margin:margin,index:index,vflip:vflip}=opt,width=hspace-margin.left-margin.right-1,height=vspace-margin.top-margin.bottom,res=["g",{stroke:"black","stroke-width":1,"stroke-linecap":"round"}];if(opt.sparse){opt.uneven&&opt.bits%2==1&&index===opt.lanes-1?vflip?res.push(hline(width-width/mod,0,0),hline(width-width/mod,0,height)):res.push(hline(width-width/mod,width/mod,0),hline(width-width/mod,width/mod,height)):opt.compact||res.push(hline(width,0,0),hline(width,0,height),vline(height,vflip?width:0,0))}else res.push(hline(width,0,0),vline(height,vflip?width:0,0),hline(width,0,height));let i=index*mod;const delta=vflip?1:-1;let j=vflip?0:mod;if(opt.sparse)for(let k=0;k<=mod;k++){const xj=j*(width/mod);(!skipField(desc,opt,i)&&0!==k||!skipField(desc,opt,i+1)&&k!==mod)&&(0===k||k===mod||desc.some((e=>e.msb+1===i))?res.push(vline(height,xj,0)):(res.push(vline(height>>>3,xj,0)),res.push(vline(-(height>>>3),xj,height)))),opt.compact&&0!==k&&!skipField(desc,opt,i)&&(res.push(hline(width/mod,xj,0)),res.push(hline(width/mod,xj,height))),i++,j+=delta}else for(let k=0;ke.lsb===i))?res.push(vline(height,xj,0)):res.push(vline(height>>>3,xj,0),vline(-(height>>>3),xj,height)),i++,j+=delta}return res},lane=(desc,opt)=>{const{index:index,vspace:vspace,hspace:hspace,margin:margin,hflip:hflip,lanes:lanes,compact:compact,label:label}=opt,height=vspace-margin.top-margin.bottom,width=hspace-margin.left-margin.right-1;let tx=margin.left;const idx=hflip?index:lanes-index-1;let ty=round(idx*vspace+margin.top);compact&&(ty=round(idx*height+margin.top));const res=["g",tt(tx,ty),cage(desc,opt),labelArr(desc,opt)];if(label&&void 0!==label.left){const lab=label.left;let txt=index;"string"==typeof lab?txt=lab:"number"==typeof lab?txt+=lab:"object"==typeof lab&&(txt=lab[index]||txt),res.push(["g",{"text-anchor":"end"},text(txt,-4,round(height/2))])}if(label&&void 0!==label.right){const lab=label.right;let txt=index;"string"==typeof lab?txt=lab:"number"==typeof lab?txt+=lab:"object"==typeof lab&&(txt=lab[index]||txt),res.push(["g",{"text-anchor":"start"},text(txt,width+4,round(height/2))])}return res},optDefaults=opt=>([["hspace",40,800],["lanes",1,1],["bits",1,void 0],["fontsize",6,14]].map((opt=>row=>{const[key,min,def]=row,val=Math.round(opt[key]);opt[key]="number"==typeof val&&val>=min?val:def})(opt="object"==typeof opt?opt:{})),opt.fontfamily=opt.fontfamily||"sans-serif",opt.fontweight=opt.fontweight||"normal",opt.compact=opt.compact||!1,opt.hflip=opt.hflip||!1,opt.uneven=opt.uneven||!1,opt.margin=opt.margin||{},opt.offset=opt.offset||0,opt);module.exports=(desc,opt)=>{opt=optDefaults(opt);const maxAttributes=(desc=>desc.reduce(((prev,field)=>Math.max(prev,void 0===field.attr?0:Array.isArray(field.attr)?field.attr.length:1)),0))(desc);opt.vspace=opt.vspace||(maxAttributes+4)*opt.fontsize,void 0===opt.bits&&(opt.bits=(desc=>desc.reduce(((prev,field)=>prev+(void 0===field.bits?0:field.bits)),0))(desc));const{hspace:hspace,vspace:vspace,lanes:lanes,margin:margin,compact:compact,fontsize:fontsize,bits:bits,label:label,legend:legend}=opt;void 0===margin.right&&(label&&void 0!==label.right?margin.right=round(.1*hspace):margin.right=4),void 0===margin.left&&(label&&void 0!==label.left?margin.left=round(.1*hspace):margin.left=4),void 0===margin.top?(margin.top=1.5*fontsize,void 0===margin.bottom&&(margin.bottom=fontsize*maxAttributes+4)):void 0===margin.bottom&&(margin.bottom=4);const width=hspace;let height=vspace*lanes;compact&&(height-=(lanes-1)*(margin.top+margin.bottom)),legend&&(height+=12);const res=["g",tt(.5,legend?12.5:.5,{"text-anchor":"middle","font-size":opt.fontsize,"font-family":opt.fontfamily,"font-weight":opt.fontweight})];let lsb=0;const mod=Math.ceil(1*bits/lanes);opt.mod=0|mod,desc.map((e=>{e.lsb=lsb,e.lsbm=lsb%mod,lsb+=e.bits,e.msb=lsb-1,e.msbm=e.msb%mod}));for(let i=0;i{const{hspace:hspace,margin:margin,mod:mod,fontsize:fontsize,vflip:vflip,legend:legend,offset:offset}=opt,step=(hspace-margin.left-margin.right-1)/mod,labels=["g",tt(margin.left,legend?0:-3)],mask=((desc,mod)=>{const mask=[];let idx=0;return desc.map((e=>{mask[idx%mod]=!0,idx+=e.bits,mask[(idx-1)%mod]=!0})),mask})(desc,mod);for(let i=0;i{const{hspace:hspace,margin:margin,fontsize:fontsize,legend:legend}=opt,width=hspace-margin.left-margin.right-1,items=["g",tt(margin.left,-10)];let x=width/2-Object.keys(legend).length/2*60;for(const key in legend){const value=legend[key];items.push(["rect",norm({x:x,width:12,height:12},{style:"fill-opacity:0.15; stroke: #000; stroke-width: 1.2;"+typeStyle(value)})]),x+=36,items.push(text(key,x,.1*fontsize+4)),x+=24}return items})(opt)),(w=width,h=height,["svg",{xmlns:"http://www.w3.org/2000/svg",width:w,height:h,viewBox:[0,0,w,h].join(" ")}]).concat([res]);var w,h}},{tspan:44}],36:[function(require,module,exports){"use strict";const tspan=require("tspan"),circle="M 4,0 C 4,1.1 3.1,2 2,2 0.9,2 0,1.1 0,0 c 0,-1.1 0.9,-2 2,-2 1.1,0 2,0.9 2,2 z",buf1="M -11,-6 -11,6 0,0 z m -5,6 5,0",and2="m -16,-10 5,0 c 6,0 11,4 11,10 0,6 -5,10 -11,10 l -5,0 z",or2="m -18,-10 4,0 c 6,0 12,5 14,10 -2,5 -8,10 -14,10 l -4,0 c 2.5,-5 2.5,-15 0,-20 z",xor2="m -21,-10 c 1,3 2,6 2,10 m 0,0 c 0,4 -1,7 -2,10 m 3,-20 4,0 c 6,0 12,5 14,10 -2,5 -8,10 -14,10 l -4,0 c 1,-3 2,-6 2,-10 0,-4 -1,-7 -2,-10 z",circle2="c 0,4.418278 -3.581722,8 -8,8 -4.418278,0 -8,-3.581722 -8,-8 0,-4.418278 3.581722,-8 8,-8 4.418278,0 8,3.581722 8,8 z",gates={"=":buf1,"~":buf1+circle,"&":and2,"~&":and2+circle,"|":or2,"~|":or2+circle,"^":xor2,"~^":xor2+circle,"+":"m -8,5 0,-10 m -5,5 10,0 m 3,0"+circle2,"*":"m -4,4 -8,-8 m 0,8 8,-8 m 4,4"+circle2,"-":"m -3,0 -10,0 m 13,0"+circle2},aliasGates={add:"+",mul:"*",sub:"-",and:"&",or:"|",xor:"^",andr:"&",orr:"|",xorr:"^",input:"="};Object.keys(aliasGates).reduce(((res,key)=>(res[key]=gates[aliasGates[key]],res)),gates);const gater1_is=type=>void 0!==gates[type],gater1_render=type=>["path",{class:"gate",d:gates[type]}],iec={eq:"==",ne:"!=",slt:"<",sle:"<=",sgt:">",sge:">=",ult:"<",ule:"<=",ugt:">",uge:">=",BUF:1,INV:1,AND:"&",NAND:"&",OR:"≥1",NOR:"≥1",XOR:"=1",XNOR:"=1",box:"",MUX:"M"},circled={INV:1,NAND:1,NOR:1,XNOR:1},gater2_is=type=>void 0!==iec[type],gater2_render=(type,ymin,ymax)=>(ymin===ymax&&(ymin=-4,ymax=4),["g",["path",{class:"gate",d:"m -16,"+(ymin-3)+" 16,0 0,"+(ymax-ymin+6)+" -16,0 z"+(circled[type]?circle:"")}],["text",{x:-14,y:4,class:"wirename"}].concat(tspan.parse(iec[type]))]);module.exports=function(type,ymin,ymax){return gater1_is(type)?gater1_render(type):gater2_is(type)?gater2_render(type,ymin,ymax):["text",{x:-14,y:4,class:"wirename"}].concat(tspan.parse(type))}},{tspan:44}],37:[function(require,module,exports){"use strict";const tspan=require("tspan"),drawGate=require("./draw_gate.js");module.exports=function drawBoxes(tree,xmax){const ret=["g"],spec=[];if(Array.isArray(tree)){spec.push(tree[0].name),spec.push([32*(xmax-tree[0].x),8*tree[0].y]);for(let i=1;i0?"\\n":"",indent=function(indentation){if(!(indentation>0))return txt=>txt;var space=" ".repeat(indentation);return txt=>{if("string"!=typeof txt)return txt;const arr=txt.split("\\n");return 1===arr.length?space+txt:arr.map((e=>""===e.trim()?e:space+e)).join("\\n")}}(indentation);return function rec(a){let res,body="",isFlat=!0;return a.some(((e,i,arr)=>{if(0===i)return res="<"+e,1===arr.length;if(1===i){if((o=e)&&"[object Object]"===Object.prototype.toString.call(o))return Object.keys(e).map((key=>{let val=e[key];Array.isArray(val)&&(val=val.join(" ")),res+=" "+key+'="'+val+'"'})),2===arr.length||void(res+=">");res+=">"}var o;switch(typeof e){case"string":case"number":case"boolean":case"undefined":return void(body+=e+cr)}isFlat=!1,body+=rec(e)}))?res+"/>"+cr:isFlat?res+body.split("\\n").filter((e=>""!==e.trim())).join("\\n")+""+a[0]+">"+cr:res+cr+indent(body)+""+a[0]+">"+cr}(a)}},{}],43:[function(require,module,exports){"use strict";module.exports=(x,y,obj)=>{let objt={};if(x||y){objt={transform:"translate("+[x||0].concat(y?[y]:[]).join(",")+")"}}return obj="object"==typeof obj?obj:{},Object.assign(objt,obj)}},{}],44:[function(require,module,exports){"use strict";var parse=require("./parse"),reparse=require("./reparse");exports.parse=parse,exports.reparse=reparse},{"./parse":45,"./reparse":46}],45:[function(require,module,exports){"use strict";var escapeMap={"&":"&",'"':""","<":"<",">":">"};function xscape(val){return"string"!=typeof val?val:val.replace(/([&"<>])/g,(function(_,e){return escapeMap[e]}))}var token=/||||||||<\\/o>|<\\/ins>|<\\/s>|<\\/sub>|<\\/sup>|<\\/b>|<\\/i>|<\\/tt>/;function update(s,cmd){cmd.add&&cmd.add.split(";").forEach((function(e){var arr=e.split(" ");s[arr[0]][arr[1]]=!0})),cmd.del&&cmd.del.split(";").forEach((function(e){var arr=e.split(" ");delete s[arr[0]][arr[1]]}))}var trans={"":{add:"text-decoration overline"},"":{del:"text-decoration overline"},"":{add:"text-decoration underline"},"":{del:"text-decoration underline"},"":{add:"text-decoration line-through"},"":{del:"text-decoration line-through"},"":{add:"font-weight bold"},"":{del:"font-weight bold"},"":{add:"font-style italic"},"":{del:"font-style italic"},"":{add:"baseline-shift sub;font-size .7em"},"":{del:"baseline-shift sub;font-size .7em"},"":{add:"baseline-shift super;font-size .7em"},"":{del:"baseline-shift super;font-size .7em"},"":{add:"font-family monospace"},"":{del:"font-family monospace"}};function dump(s){return Object.keys(s).reduce((function(pre,cur){var keys=Object.keys(s[cur]);return keys.length>0&&(pre[cur]=keys.join(" ")),pre}),{})}module.exports=function(str){var state,res,i,m,a;if(void 0===str)return[];if("number"==typeof str)return[str+""];if("string"!=typeof str)return[str];for(res=[],state={"text-decoration":{},"font-weight":{},"font-style":{},"baseline-shift":{},"font-size":{},"font-family":{}};;){if(-1===(i=str.search(token)))return res.push(["tspan",dump(state),xscape(str)]),res;if(i>0&&(a=str.slice(0,i),res.push(["tspan",dump(state),xscape(a)])),m=str.match(token)[0],update(state,trans[m]),0===(str=str.slice(i+m.length)).length)return res}}},{}],46:[function(require,module,exports){"use strict";var parse=require("./parse");module.exports=function(React){var $=React.createElement;function reTspan(e,i){var tag=e[0],attr=e[1],newAttr=Object.keys(attr).reduce((function(res,key){var str,m;return res[null===(m=(str=key).match(/(\\w+)-(\\w)(\\w+)/))?str:m[1]+m[2].toUpperCase()+m[3]]=attr[key],res}),{}),body=e[2];return newAttr.key=i,$(tag,newAttr,body)}return function(str){return parse(str).map(reTspan)}}},{"./parse":45}],47:[function(require,module,exports){module.exports={name:"wavedrom",version:"3.5.0",description:"Digital timing diagram in your browser",homepage:"http://wavedrom.com",author:"alex.drom@gmail.com",license:"MIT",repository:{type:"git",url:"https://github.com/wavedrom/wavedrom.git"},bugs:{url:"https://github.com/wavedrom/wavedrom/issues"},main:"./lib",unpkg:"wavedrom.unpkg.min.js",files:["bin/cli.js","wavedrom.js","wavedrom.min.js","wavedrom.unpkg.js","wavedrom.unpkg.min.js","LICENSE","lib/**","skins/**"],scripts:{test:"npm-run-all eslint nyc",eslint:"eslint lib/*.js",nyc:"nyc -r=lcov -r=text mocha test",dist:"browserify ./lib/wave-drom.js > wavedrom.js","watch.dist":"watchify ./lib/wave-drom.js -o wavedrom.js -v","dist.min":"terser --compress --mengle -- wavedrom.js | node ./bin/header.js > wavedrom.min.js",unpkg:"browserify --standalone wavedrom lib/index.js > wavedrom.unpkg.js","unpkg.min":"terser --compress --mengle -- wavedrom.unpkg.js | node ./bin/header.js > wavedrom.unpkg.min.js",cli:"{ echo '#!/usr/bin/env node' ; browserify --node bin/cli.js ; } > bin/wavedrom.js ; chmod +x bin/wavedrom.js",prepare:"npm-run-all test dist dist.min unpkg unpkg.min",clean:"rm -rf wavedrom.js wavedrom.*.js coverage .nyc_output",skins:"for S in default narrow dark lowkey narrower narrowerer; do node bin/svg2js.js -i unpacked/skins/$S.svg > skins/$S.js ; done"},keywords:["waveform","verilog","RTL"],devDependencies:{"@drom/eslint-config":"^0.12.0",browserify:"^17.0.0",chai:"^4.4",eslint:"^8.56","fs-extra":"^11.2",json5:"^2.2.3",mocha:"^10.3","npm-run-all":"^4.1.5",nyc:"^15.1.0",terser:"^5.27",watchify:"^4.0.0",yargs:"^17.7"},dependencies:{"bit-field":"^1.9.0",logidrom:"^0.3.1",onml:"^2.1.0",tspan:"^0.4.0"},eslintConfig:{extends:"@drom/eslint-config/eslint4/node4",rules:{camelcase:0}}}},{}]},{},[34]);\n`
}
function getDefaultJs() {
return `var WaveSkin=WaveSkin||{};WaveSkin.default=['svg',{id:'svg',xmlns:'http://www.w3.org/2000/svg','xmlns:xlink':'http://www.w3.org/1999/xlink',height:'0'},['style',{type:'text/css'},'text{font-size:11pt;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;fill-opacity:1;font-family:Helvetica}.h1{font-size:33pt;font-weight:bold}.h2{font-size:27pt;font-weight:bold}.h3{font-size:20pt;font-weight:bold}.h4{font-size:14pt;font-weight:bold}.h5{font-size:11pt;font-weight:bold}.h6{font-size:8pt;font-weight:bold}.muted{fill:#aaa}.warning{fill:#f6b900}.error{fill:#f60000}.info{fill:#0041c4}.success{fill:#00ab00}.s1{fill:none;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none}.s2{fill:none;stroke:#000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none}.s3{color:#000;fill:none;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:1, 3;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible}.s4{color:#000;fill:none;stroke:#000;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible}.s5{fill:#fff;stroke:none}.s6{fill:#000;fill-opacity:1;stroke:none}.s7{color:#000;fill:#fff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible}.s8{color:#000;fill:#ffffb4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible}.s9{color:#000;fill:#ffe0b9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible}.s10{color:#000;fill:#b9e0ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible}.s11{color:#000;fill:#ccfdfe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible}.s12{color:#000;fill:#cdfdc5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible}.s13{color:#000;fill:#f0c1fb;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible}.s14{color:#000;fill:#f5c2c0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible}.s15{fill:#0041c4;fill-opacity:1;stroke:none}.s16{fill:none;stroke:#0041c4;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none}'],['defs',['g',{id:'socket'},['rect',{y:'15',x:'6',height:'20',width:'20'}]],['g',{id:'pclk'},['path',{d:'M0,20 0,0 20,0',class:'s1'}]],['g',{id:'nclk'},['path',{d:'m0,0 0,20 20,0',class:'s1'}]],['g',{id:'000'},['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'0m0'},['path',{d:'m0,20 3,0 3,-10 3,10 11,0',class:'s1'}]],['g',{id:'0m1'},['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'0mx'},['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m20,15 -5,5',class:'s2'}],['path',{d:'M20,10 10,20',class:'s2'}],['path',{d:'M20,5 5,20',class:'s2'}],['path',{d:'M20,0 4,16',class:'s2'}],['path',{d:'M15,0 6,9',class:'s2'}],['path',{d:'M10,0 9,1',class:'s2'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'0md'},['path',{d:'m8,20 10,0',class:'s3'}],['path',{d:'m0,20 5,0',class:'s1'}]],['g',{id:'0mu'},['path',{d:'m0,20 3,0 C 7,10 10.107603,0 20,0',class:'s1'}]],['g',{id:'0mz'},['path',{d:'m0,20 3,0 C 10,10 15,10 20,10',class:'s1'}]],['g',{id:'111'},['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'1m0'},['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}]],['g',{id:'1m1'},['path',{d:'M0,0 3,0 6,10 9,0 20,0',class:'s1'}]],['g',{id:'1mx'},['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}],['path',{d:'m20,15 -5,5',class:'s2'}],['path',{d:'M20,10 10,20',class:'s2'}],['path',{d:'M20,5 8,17',class:'s2'}],['path',{d:'M20,0 7,13',class:'s2'}],['path',{d:'M15,0 6,9',class:'s2'}],['path',{d:'M10,0 5,5',class:'s2'}],['path',{d:'M3.5,1.5 5,0',class:'s2'}]],['g',{id:'1md'},['path',{d:'m0,0 3,0 c 4,10 7,20 17,20',class:'s1'}]],['g',{id:'1mu'},['path',{d:'M0,0 5,0',class:'s1'}],['path',{d:'M8,0 18,0',class:'s3'}]],['g',{id:'1mz'},['path',{d:'m0,0 3,0 c 7,10 12,10 17,10',class:'s1'}]],['g',{id:'xxx'},['path',{d:'m0,20 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}],['path',{d:'M0,5 5,0',class:'s2'}],['path',{d:'M0,10 10,0',class:'s2'}],['path',{d:'M0,15 15,0',class:'s2'}],['path',{d:'M0,20 20,0',class:'s2'}],['path',{d:'M5,20 20,5',class:'s2'}],['path',{d:'M10,20 20,10',class:'s2'}],['path',{d:'m15,20 5,-5',class:'s2'}]],['g',{id:'xm0'},['path',{d:'M0,0 4,0 9,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}],['path',{d:'M0,5 4,1',class:'s2'}],['path',{d:'M0,10 5,5',class:'s2'}],['path',{d:'M0,15 6,9',class:'s2'}],['path',{d:'M0,20 7,13',class:'s2'}],['path',{d:'M5,20 8,17',class:'s2'}]],['g',{id:'xm1'},['path',{d:'M0,0 20,0',class:'s1'}],['path',{d:'M0,20 4,20 9,0',class:'s1'}],['path',{d:'M0,5 5,0',class:'s2'}],['path',{d:'M0,10 9,1',class:'s2'}],['path',{d:'M0,15 7,8',class:'s2'}],['path',{d:'M0,20 5,15',class:'s2'}]],['g',{id:'xmx'},['path',{d:'m0,20 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}],['path',{d:'M0,5 5,0',class:'s2'}],['path',{d:'M0,10 10,0',class:'s2'}],['path',{d:'M0,15 15,0',class:'s2'}],['path',{d:'M0,20 20,0',class:'s2'}],['path',{d:'M5,20 20,5',class:'s2'}],['path',{d:'M10,20 20,10',class:'s2'}],['path',{d:'m15,20 5,-5',class:'s2'}]],['g',{id:'xmd'},['path',{d:'m0,0 4,0 c 3,10 6,20 16,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}],['path',{d:'M0,5 4,1',class:'s2'}],['path',{d:'M0,10 5.5,4.5',class:'s2'}],['path',{d:'M0,15 6.5,8.5',class:'s2'}],['path',{d:'M0,20 8,12',class:'s2'}],['path',{d:'m5,20 5,-5',class:'s2'}],['path',{d:'m10,20 2.5,-2.5',class:'s2'}]],['g',{id:'xmu'},['path',{d:'M0,0 20,0',class:'s1'}],['path',{d:'m0,20 4,0 C 7,10 10,0 20,0',class:'s1'}],['path',{d:'M0,5 5,0',class:'s2'}],['path',{d:'M0,10 10,0',class:'s2'}],['path',{d:'M0,15 10,5',class:'s2'}],['path',{d:'M0,20 6,14',class:'s2'}]],['g',{id:'xmz'},['path',{d:'m0,0 4,0 c 6,10 11,10 16,10',class:'s1'}],['path',{d:'m0,20 4,0 C 10,10 15,10 20,10',class:'s1'}],['path',{d:'M0,5 4.5,0.5',class:'s2'}],['path',{d:'M0,10 6.5,3.5',class:'s2'}],['path',{d:'M0,15 8.5,6.5',class:'s2'}],['path',{d:'M0,20 11.5,8.5',class:'s2'}]],['g',{id:'ddd'},['path',{d:'m0,20 20,0',class:'s3'}]],['g',{id:'dm0'},['path',{d:'m0,20 10,0',class:'s3'}],['path',{d:'m12,20 8,0',class:'s1'}]],['g',{id:'dm1'},['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'dmx'},['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m20,15 -5,5',class:'s2'}],['path',{d:'M20,10 10,20',class:'s2'}],['path',{d:'M20,5 5,20',class:'s2'}],['path',{d:'M20,0 4,16',class:'s2'}],['path',{d:'M15,0 6,9',class:'s2'}],['path',{d:'M10,0 9,1',class:'s2'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'dmd'},['path',{d:'m0,20 20,0',class:'s3'}]],['g',{id:'dmu'},['path',{d:'m0,20 3,0 C 7,10 10.107603,0 20,0',class:'s1'}]],['g',{id:'dmz'},['path',{d:'m0,20 3,0 C 10,10 15,10 20,10',class:'s1'}]],['g',{id:'uuu'},['path',{d:'M0,0 20,0',class:'s3'}]],['g',{id:'um0'},['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}]],['g',{id:'um1'},['path',{d:'M0,0 10,0',class:'s3'}],['path',{d:'m12,0 8,0',class:'s1'}]],['g',{id:'umx'},['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}],['path',{d:'m20,15 -5,5',class:'s2'}],['path',{d:'M20,10 10,20',class:'s2'}],['path',{d:'M20,5 8,17',class:'s2'}],['path',{d:'M20,0 7,13',class:'s2'}],['path',{d:'M15,0 6,9',class:'s2'}],['path',{d:'M10,0 5,5',class:'s2'}],['path',{d:'M3.5,1.5 5,0',class:'s2'}]],['g',{id:'umd'},['path',{d:'m0,0 3,0 c 4,10 7,20 17,20',class:'s1'}]],['g',{id:'umu'},['path',{d:'M0,0 20,0',class:'s3'}]],['g',{id:'umz'},['path',{d:'m0,0 3,0 c 7,10 12,10 17,10',class:'s4'}]],['g',{id:'zzz'},['path',{d:'m0,10 20,0',class:'s1'}]],['g',{id:'zm0'},['path',{d:'m0,10 6,0 3,10 11,0',class:'s1'}]],['g',{id:'zm1'},['path',{d:'M0,10 6,10 9,0 20,0',class:'s1'}]],['g',{id:'zmx'},['path',{d:'m6,10 3,10 11,0',class:'s1'}],['path',{d:'M0,10 6,10 9,0 20,0',class:'s1'}],['path',{d:'m20,15 -5,5',class:'s2'}],['path',{d:'M20,10 10,20',class:'s2'}],['path',{d:'M20,5 8,17',class:'s2'}],['path',{d:'M20,0 7,13',class:'s2'}],['path',{d:'M15,0 6.5,8.5',class:'s2'}],['path',{d:'M10,0 9,1',class:'s2'}]],['g',{id:'zmd'},['path',{d:'m0,10 7,0 c 3,5 8,10 13,10',class:'s1'}]],['g',{id:'zmu'},['path',{d:'m0,10 7,0 C 10,5 15,0 20,0',class:'s1'}]],['g',{id:'zmz'},['path',{d:'m0,10 20,0',class:'s1'}]],['g',{id:'gap'},['path',{d:'m7,-2 -4,0 c -5,0 -5,24 -10,24 l 4,0 C 2,22 2,-2 7,-2 z',class:'s5'}],['path',{d:'M-7,22 C -2,22 -2,-2 3,-2',class:'s1'}],['path',{d:'M-3,22 C 2,22 2,-2 7,-2',class:'s1'}]],['g',{id:'Pclk'},['path',{d:'M-3,12 0,3 3,12 C 1,11 -1,11 -3,12 z',class:'s6'}],['path',{d:'M0,20 0,0 20,0',class:'s1'}]],['g',{id:'Nclk'},['path',{d:'M-3,8 0,17 3,8 C 1,9 -1,9 -3,8 z',class:'s6'}],['path',{d:'m0,0 0,20 20,0',class:'s1'}]],['g',{id:'0mv-2'},['path',{d:'M9,0 20,0 20,20 3,20 z',class:'s7'}],['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'1mv-2'},['path',{d:'M2.875,0 20,0 20,20 9,20 z',class:'s7'}],['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'xmv-2'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s7'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,5 3.5,1.5',class:'s2'}],['path',{d:'M0,10 4.5,5.5',class:'s2'}],['path',{d:'M0,15 6,9',class:'s2'}],['path',{d:'M0,20 4,16',class:'s2'}]],['g',{id:'dmv-2'},['path',{d:'M9,0 20,0 20,20 3,20 z',class:'s7'}],['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'umv-2'},['path',{d:'M3,0 20,0 20,20 9,20 z',class:'s7'}],['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'zmv-2'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s7'}],['path',{d:'m6,10 3,10 11,0',class:'s1'}],['path',{d:'M0,10 6,10 9,0 20,0',class:'s1'}]],['g',{id:'vvv-2'},['path',{d:'M20,20 0,20 0,0 20,0',class:'s7'}],['path',{d:'m0,20 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'vm0-2'},['path',{d:'M0,20 0,0 3,0 9,20',class:'s7'}],['path',{d:'M0,0 3,0 9,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'vm1-2'},['path',{d:'M0,0 0,20 3,20 9,0',class:'s7'}],['path',{d:'M0,0 20,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0',class:'s1'}]],['g',{id:'vmx-2'},['path',{d:'M0,0 0,20 3,20 6,10 3,0',class:'s7'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}],['path',{d:'m20,15 -5,5',class:'s2'}],['path',{d:'M20,10 10,20',class:'s2'}],['path',{d:'M20,5 8,17',class:'s2'}],['path',{d:'M20,0 7,13',class:'s2'}],['path',{d:'M15,0 7,8',class:'s2'}],['path',{d:'M10,0 9,1',class:'s2'}]],['g',{id:'vmd-2'},['path',{d:'m0,0 0,20 20,0 C 10,20 7,10 3,0',class:'s7'}],['path',{d:'m0,0 3,0 c 4,10 7,20 17,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'vmu-2'},['path',{d:'m0,0 0,20 3,0 C 7,10 10,0 20,0',class:'s7'}],['path',{d:'m0,20 3,0 C 7,10 10,0 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'vmz-2'},['path',{d:'M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20',class:'s7'}],['path',{d:'m0,0 3,0 c 7,10 12,10 17,10',class:'s1'}],['path',{d:'m0,20 3,0 C 10,10 15,10 20,10',class:'s1'}]],['g',{id:'0mv-3'},['path',{d:'M9,0 20,0 20,20 3,20 z',class:'s8'}],['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'1mv-3'},['path',{d:'M2.875,0 20,0 20,20 9,20 z',class:'s8'}],['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'xmv-3'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s8'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,5 3.5,1.5',class:'s2'}],['path',{d:'M0,10 4.5,5.5',class:'s2'}],['path',{d:'M0,15 6,9',class:'s2'}],['path',{d:'M0,20 4,16',class:'s2'}]],['g',{id:'dmv-3'},['path',{d:'M9,0 20,0 20,20 3,20 z',class:'s8'}],['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'umv-3'},['path',{d:'M3,0 20,0 20,20 9,20 z',class:'s8'}],['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'zmv-3'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s8'}],['path',{d:'m6,10 3,10 11,0',class:'s1'}],['path',{d:'M0,10 6,10 9,0 20,0',class:'s1'}]],['g',{id:'vvv-3'},['path',{d:'M20,20 0,20 0,0 20,0',class:'s8'}],['path',{d:'m0,20 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'vm0-3'},['path',{d:'M0,20 0,0 3,0 9,20',class:'s8'}],['path',{d:'M0,0 3,0 9,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'vm1-3'},['path',{d:'M0,0 0,20 3,20 9,0',class:'s8'}],['path',{d:'M0,0 20,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0',class:'s1'}]],['g',{id:'vmx-3'},['path',{d:'M0,0 0,20 3,20 6,10 3,0',class:'s8'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}],['path',{d:'m20,15 -5,5',class:'s2'}],['path',{d:'M20,10 10,20',class:'s2'}],['path',{d:'M20,5 8,17',class:'s2'}],['path',{d:'M20,0 7,13',class:'s2'}],['path',{d:'M15,0 7,8',class:'s2'}],['path',{d:'M10,0 9,1',class:'s2'}]],['g',{id:'vmd-3'},['path',{d:'m0,0 0,20 20,0 C 10,20 7,10 3,0',class:'s8'}],['path',{d:'m0,0 3,0 c 4,10 7,20 17,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'vmu-3'},['path',{d:'m0,0 0,20 3,0 C 7,10 10,0 20,0',class:'s8'}],['path',{d:'m0,20 3,0 C 7,10 10,0 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'vmz-3'},['path',{d:'M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20',class:'s8'}],['path',{d:'m0,0 3,0 c 7,10 12,10 17,10',class:'s1'}],['path',{d:'m0,20 3,0 C 10,10 15,10 20,10',class:'s1'}]],['g',{id:'0mv-4'},['path',{d:'M9,0 20,0 20,20 3,20 z',class:'s9'}],['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'1mv-4'},['path',{d:'M2.875,0 20,0 20,20 9,20 z',class:'s9'}],['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'xmv-4'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s9'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,5 3.5,1.5',class:'s2'}],['path',{d:'M0,10 4.5,5.5',class:'s2'}],['path',{d:'M0,15 6,9',class:'s2'}],['path',{d:'M0,20 4,16',class:'s2'}]],['g',{id:'dmv-4'},['path',{d:'M9,0 20,0 20,20 3,20 z',class:'s9'}],['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'umv-4'},['path',{d:'M3,0 20,0 20,20 9,20 z',class:'s9'}],['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'zmv-4'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s9'}],['path',{d:'m6,10 3,10 11,0',class:'s1'}],['path',{d:'M0,10 6,10 9,0 20,0',class:'s1'}]],['g',{id:'vvv-4'},['path',{d:'M20,20 0,20 0,0 20,0',class:'s9'}],['path',{d:'m0,20 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'vm0-4'},['path',{d:'M0,20 0,0 3,0 9,20',class:'s9'}],['path',{d:'M0,0 3,0 9,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'vm1-4'},['path',{d:'M0,0 0,20 3,20 9,0',class:'s9'}],['path',{d:'M0,0 20,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0',class:'s1'}]],['g',{id:'vmx-4'},['path',{d:'M0,0 0,20 3,20 6,10 3,0',class:'s9'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}],['path',{d:'m20,15 -5,5',class:'s2'}],['path',{d:'M20,10 10,20',class:'s2'}],['path',{d:'M20,5 8,17',class:'s2'}],['path',{d:'M20,0 7,13',class:'s2'}],['path',{d:'M15,0 7,8',class:'s2'}],['path',{d:'M10,0 9,1',class:'s2'}]],['g',{id:'vmd-4'},['path',{d:'m0,0 0,20 20,0 C 10,20 7,10 3,0',class:'s9'}],['path',{d:'m0,0 3,0 c 4,10 7,20 17,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'vmu-4'},['path',{d:'m0,0 0,20 3,0 C 7,10 10,0 20,0',class:'s9'}],['path',{d:'m0,20 3,0 C 7,10 10,0 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'vmz-4'},['path',{d:'M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20',class:'s9'}],['path',{d:'m0,0 3,0 c 7,10 12,10 17,10',class:'s1'}],['path',{d:'m0,20 3,0 C 10,10 15,10 20,10',class:'s1'}]],['g',{id:'0mv-5'},['path',{d:'M9,0 20,0 20,20 3,20 z',class:'s10'}],['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'1mv-5'},['path',{d:'M2.875,0 20,0 20,20 9,20 z',class:'s10'}],['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'xmv-5'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s10'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,5 3.5,1.5',class:'s2'}],['path',{d:'M0,10 4.5,5.5',class:'s2'}],['path',{d:'M0,15 6,9',class:'s2'}],['path',{d:'M0,20 4,16',class:'s2'}]],['g',{id:'dmv-5'},['path',{d:'M9,0 20,0 20,20 3,20 z',class:'s10'}],['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'umv-5'},['path',{d:'M3,0 20,0 20,20 9,20 z',class:'s10'}],['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'zmv-5'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s10'}],['path',{d:'m6,10 3,10 11,0',class:'s1'}],['path',{d:'M0,10 6,10 9,0 20,0',class:'s1'}]],['g',{id:'vvv-5'},['path',{d:'M20,20 0,20 0,0 20,0',class:'s10'}],['path',{d:'m0,20 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'vm0-5'},['path',{d:'M0,20 0,0 3,0 9,20',class:'s10'}],['path',{d:'M0,0 3,0 9,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'vm1-5'},['path',{d:'M0,0 0,20 3,20 9,0',class:'s10'}],['path',{d:'M0,0 20,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0',class:'s1'}]],['g',{id:'vmx-5'},['path',{d:'M0,0 0,20 3,20 6,10 3,0',class:'s10'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}],['path',{d:'m20,15 -5,5',class:'s2'}],['path',{d:'M20,10 10,20',class:'s2'}],['path',{d:'M20,5 8,17',class:'s2'}],['path',{d:'M20,0 7,13',class:'s2'}],['path',{d:'M15,0 7,8',class:'s2'}],['path',{d:'M10,0 9,1',class:'s2'}]],['g',{id:'vmd-5'},['path',{d:'m0,0 0,20 20,0 C 10,20 7,10 3,0',class:'s10'}],['path',{d:'m0,0 3,0 c 4,10 7,20 17,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'vmu-5'},['path',{d:'m0,0 0,20 3,0 C 7,10 10,0 20,0',class:'s10'}],['path',{d:'m0,20 3,0 C 7,10 10,0 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'vmz-5'},['path',{d:'M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20',class:'s10'}],['path',{d:'m0,0 3,0 c 7,10 12,10 17,10',class:'s1'}],['path',{d:'m0,20 3,0 C 10,10 15,10 20,10',class:'s1'}]],['g',{id:'0mv-6'},['path',{d:'M9,0 20,0 20,20 3,20 z',class:'s11'}],['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'1mv-6'},['path',{d:'M2.875,0 20,0 20,20 9,20 z',class:'s11'}],['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'xmv-6'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s11'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,5 3.5,1.5',class:'s2'}],['path',{d:'M0,10 4.5,5.5',class:'s2'}],['path',{d:'M0,15 6,9',class:'s2'}],['path',{d:'M0,20 4,16',class:'s2'}]],['g',{id:'dmv-6'},['path',{d:'M9,0 20,0 20,20 3,20 z',class:'s11'}],['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'umv-6'},['path',{d:'M3,0 20,0 20,20 9,20 z',class:'s11'}],['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'zmv-6'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s11'}],['path',{d:'m6,10 3,10 11,0',class:'s1'}],['path',{d:'M0,10 6,10 9,0 20,0',class:'s1'}]],['g',{id:'vvv-6'},['path',{d:'M20,20 0,20 0,0 20,0',class:'s11'}],['path',{d:'m0,20 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'vm0-6'},['path',{d:'M0,20 0,0 3,0 9,20',class:'s11'}],['path',{d:'M0,0 3,0 9,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'vm1-6'},['path',{d:'M0,0 0,20 3,20 9,0',class:'s11'}],['path',{d:'M0,0 20,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0',class:'s1'}]],['g',{id:'vmx-6'},['path',{d:'M0,0 0,20 3,20 6,10 3,0',class:'s11'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}],['path',{d:'m20,15 -5,5',class:'s2'}],['path',{d:'M20,10 10,20',class:'s2'}],['path',{d:'M20,5 8,17',class:'s2'}],['path',{d:'M20,0 7,13',class:'s2'}],['path',{d:'M15,0 7,8',class:'s2'}],['path',{d:'M10,0 9,1',class:'s2'}]],['g',{id:'vmd-6'},['path',{d:'m0,0 0,20 20,0 C 10,20 7,10 3,0',class:'s11'}],['path',{d:'m0,0 3,0 c 4,10 7,20 17,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'vmu-6'},['path',{d:'m0,0 0,20 3,0 C 7,10 10,0 20,0',class:'s11'}],['path',{d:'m0,20 3,0 C 7,10 10,0 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'vmz-6'},['path',{d:'M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20',class:'s11'}],['path',{d:'m0,0 3,0 c 7,10 12,10 17,10',class:'s1'}],['path',{d:'m0,20 3,0 C 10,10 15,10 20,10',class:'s1'}]],['g',{id:'0mv-7'},['path',{d:'M9,0 20,0 20,20 3,20 z',class:'s12'}],['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'1mv-7'},['path',{d:'M2.875,0 20,0 20,20 9,20 z',class:'s12'}],['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'xmv-7'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s12'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,5 3.5,1.5',class:'s2'}],['path',{d:'M0,10 4.5,5.5',class:'s2'}],['path',{d:'M0,15 6,9',class:'s2'}],['path',{d:'M0,20 4,16',class:'s2'}]],['g',{id:'dmv-7'},['path',{d:'M9,0 20,0 20,20 3,20 z',class:'s12'}],['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'umv-7'},['path',{d:'M3,0 20,0 20,20 9,20 z',class:'s12'}],['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'zmv-7'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s12'}],['path',{d:'m6,10 3,10 11,0',class:'s1'}],['path',{d:'M0,10 6,10 9,0 20,0',class:'s1'}]],['g',{id:'vvv-7'},['path',{d:'M20,20 0,20 0,0 20,0',class:'s12'}],['path',{d:'m0,20 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'vm0-7'},['path',{d:'M0,20 0,0 3,0 9,20',class:'s12'}],['path',{d:'M0,0 3,0 9,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'vm1-7'},['path',{d:'M0,0 0,20 3,20 9,0',class:'s12'}],['path',{d:'M0,0 20,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0',class:'s1'}]],['g',{id:'vmx-7'},['path',{d:'M0,0 0,20 3,20 6,10 3,0',class:'s12'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}],['path',{d:'m20,15 -5,5',class:'s2'}],['path',{d:'M20,10 10,20',class:'s2'}],['path',{d:'M20,5 8,17',class:'s2'}],['path',{d:'M20,0 7,13',class:'s2'}],['path',{d:'M15,0 7,8',class:'s2'}],['path',{d:'M10,0 9,1',class:'s2'}]],['g',{id:'vmd-7'},['path',{d:'m0,0 0,20 20,0 C 10,20 7,10 3,0',class:'s12'}],['path',{d:'m0,0 3,0 c 4,10 7,20 17,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'vmu-7'},['path',{d:'m0,0 0,20 3,0 C 7,10 10,0 20,0',class:'s12'}],['path',{d:'m0,20 3,0 C 7,10 10,0 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'vmz-7'},['path',{d:'M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20',class:'s12'}],['path',{d:'m0,0 3,0 c 7,10 12,10 17,10',class:'s1'}],['path',{d:'m0,20 3,0 C 10,10 15,10 20,10',class:'s1'}]],['g',{id:'0mv-8'},['path',{d:'M9,0 20,0 20,20 3,20 z',class:'s13'}],['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'1mv-8'},['path',{d:'M2.875,0 20,0 20,20 9,20 z',class:'s13'}],['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'xmv-8'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s13'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,5 3.5,1.5',class:'s2'}],['path',{d:'M0,10 4.5,5.5',class:'s2'}],['path',{d:'M0,15 6,9',class:'s2'}],['path',{d:'M0,20 4,16',class:'s2'}]],['g',{id:'dmv-8'},['path',{d:'M9,0 20,0 20,20 3,20 z',class:'s13'}],['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'umv-8'},['path',{d:'M3,0 20,0 20,20 9,20 z',class:'s13'}],['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'zmv-8'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s13'}],['path',{d:'m6,10 3,10 11,0',class:'s1'}],['path',{d:'M0,10 6,10 9,0 20,0',class:'s1'}]],['g',{id:'vvv-8'},['path',{d:'M20,20 0,20 0,0 20,0',class:'s13'}],['path',{d:'m0,20 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'vm0-8'},['path',{d:'M0,20 0,0 3,0 9,20',class:'s13'}],['path',{d:'M0,0 3,0 9,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'vm1-8'},['path',{d:'M0,0 0,20 3,20 9,0',class:'s13'}],['path',{d:'M0,0 20,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0',class:'s1'}]],['g',{id:'vmx-8'},['path',{d:'M0,0 0,20 3,20 6,10 3,0',class:'s13'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}],['path',{d:'m20,15 -5,5',class:'s2'}],['path',{d:'M20,10 10,20',class:'s2'}],['path',{d:'M20,5 8,17',class:'s2'}],['path',{d:'M20,0 7,13',class:'s2'}],['path',{d:'M15,0 7,8',class:'s2'}],['path',{d:'M10,0 9,1',class:'s2'}]],['g',{id:'vmd-8'},['path',{d:'m0,0 0,20 20,0 C 10,20 7,10 3,0',class:'s13'}],['path',{d:'m0,0 3,0 c 4,10 7,20 17,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'vmu-8'},['path',{d:'m0,0 0,20 3,0 C 7,10 10,0 20,0',class:'s13'}],['path',{d:'m0,20 3,0 C 7,10 10,0 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'vmz-8'},['path',{d:'M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20',class:'s13'}],['path',{d:'m0,0 3,0 c 7,10 12,10 17,10',class:'s1'}],['path',{d:'m0,20 3,0 C 10,10 15,10 20,10',class:'s1'}]],['g',{id:'0mv-9'},['path',{d:'M9,0 20,0 20,20 3,20 z',class:'s14'}],['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'1mv-9'},['path',{d:'M2.875,0 20,0 20,20 9,20 z',class:'s14'}],['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'xmv-9'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s14'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,5 3.5,1.5',class:'s2'}],['path',{d:'M0,10 4.5,5.5',class:'s2'}],['path',{d:'M0,15 6,9',class:'s2'}],['path',{d:'M0,20 4,16',class:'s2'}]],['g',{id:'dmv-9'},['path',{d:'M9,0 20,0 20,20 3,20 z',class:'s14'}],['path',{d:'M3,20 9,0 20,0',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'umv-9'},['path',{d:'M3,0 20,0 20,20 9,20 z',class:'s14'}],['path',{d:'m3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'zmv-9'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s14'}],['path',{d:'m6,10 3,10 11,0',class:'s1'}],['path',{d:'M0,10 6,10 9,0 20,0',class:'s1'}]],['g',{id:'vvv-9'},['path',{d:'M20,20 0,20 0,0 20,0',class:'s14'}],['path',{d:'m0,20 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'vm0-9'},['path',{d:'M0,20 0,0 3,0 9,20',class:'s14'}],['path',{d:'M0,0 3,0 9,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'vm1-9'},['path',{d:'M0,0 0,20 3,20 9,0',class:'s14'}],['path',{d:'M0,0 20,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0',class:'s1'}]],['g',{id:'vmx-9'},['path',{d:'M0,0 0,20 3,20 6,10 3,0',class:'s14'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}],['path',{d:'m20,15 -5,5',class:'s2'}],['path',{d:'M20,10 10,20',class:'s2'}],['path',{d:'M20,5 8,17',class:'s2'}],['path',{d:'M20,0 7,13',class:'s2'}],['path',{d:'M15,0 7,8',class:'s2'}],['path',{d:'M10,0 9,1',class:'s2'}]],['g',{id:'vmd-9'},['path',{d:'m0,0 0,20 20,0 C 10,20 7,10 3,0',class:'s14'}],['path',{d:'m0,0 3,0 c 4,10 7,20 17,20',class:'s1'}],['path',{d:'m0,20 20,0',class:'s1'}]],['g',{id:'vmu-9'},['path',{d:'m0,0 0,20 3,0 C 7,10 10,0 20,0',class:'s14'}],['path',{d:'m0,20 3,0 C 7,10 10,0 20,0',class:'s1'}],['path',{d:'M0,0 20,0',class:'s1'}]],['g',{id:'vmz-9'},['path',{d:'M0,0 3,0 C 10,10 15,10 20,10 15,10 10,10 3,20 L 0,20',class:'s14'}],['path',{d:'m0,0 3,0 c 7,10 12,10 17,10',class:'s1'}],['path',{d:'m0,20 3,0 C 10,10 15,10 20,10',class:'s1'}]],['g',{id:'vmv-2-2'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s7'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s7'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-3-2'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s7'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s8'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-4-2'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s7'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s9'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-5-2'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s7'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s10'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-6-2'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s7'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s11'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-7-2'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s7'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s12'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-8-2'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s7'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s13'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-9-2'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s7'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s14'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-2-3'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s8'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s7'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-3-3'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s8'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s8'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-4-3'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s8'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s9'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-5-3'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s8'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s10'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-6-3'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s8'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s11'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-7-3'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s8'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s12'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-8-3'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s8'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s13'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-9-3'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s8'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s14'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-2-4'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s9'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s7'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-3-4'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s9'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s8'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-4-4'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s9'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s9'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-5-4'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s9'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s10'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-6-4'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s9'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s11'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-7-4'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s9'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s12'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-8-4'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s9'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s13'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-9-4'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s9'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s14'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-2-5'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s10'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s7'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-3-5'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s10'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s8'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-4-5'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s10'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s9'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-5-5'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s10'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s10'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-6-5'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s10'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s11'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-7-5'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s10'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s12'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-8-5'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s10'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s13'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-9-5'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s10'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s14'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-2-6'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s11'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s7'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-3-6'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s11'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s8'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-4-6'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s11'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s9'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-5-6'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s11'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s10'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-6-6'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s11'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s11'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-7-6'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s11'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s12'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-8-6'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s11'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s13'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-9-6'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s11'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s14'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-2-7'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s12'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s7'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-3-7'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s12'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s8'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-4-7'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s12'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s9'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-5-7'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s12'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s10'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-6-7'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s12'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s11'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-7-7'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s12'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s12'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-8-7'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s12'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s13'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-9-7'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s12'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s14'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-2-8'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s13'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s7'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-3-8'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s13'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s8'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-4-8'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s13'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s9'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-5-8'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s13'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s10'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-6-8'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s13'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s11'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-7-8'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s13'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s12'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-8-8'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s13'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s13'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-9-8'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s13'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s14'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-2-9'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s14'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s7'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-3-9'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s14'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s8'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-4-9'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s14'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s9'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-5-9'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s14'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s10'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-6-9'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s14'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s11'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-7-9'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s14'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s12'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-8-9'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s14'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s13'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'vmv-9-9'},['path',{d:'M9,0 20,0 20,20 9,20 6,10 z',class:'s14'}],['path',{d:'M3,0 0,0 0,20 3,20 6,10 z',class:'s14'}],['path',{d:'m0,0 3,0 6,20 11,0',class:'s1'}],['path',{d:'M0,20 3,20 9,0 20,0',class:'s1'}]],['g',{id:'arrow0'},['path',{d:'m-12,-3 9,3 -9,3 c 1,-2 1,-4 0,-6 z',class:'s15'}],['path',{d:'M0,0 -15,0',class:'s16'}]],['marker',{id:'arrowhead',style:'fill:#0041c4',markerHeight:7,markerWidth:10,markerUnits:'strokeWidth',viewBox:'0 -4 11 8',refX:15,refY:0,orient:'auto'},['path',{d:'M0 -4 11 0 0 4z'}]],['marker',{id:'arrowtail',style:'fill:#0041c4',markerHeight:7,markerWidth:10,markerUnits:'strokeWidth',viewBox:'-11 -4 11 8',refX:-15,refY:0,orient:'auto'},['path',{d:'M0 -4 -11 0 0 4z'}]],['marker',{id:'tee',style:'fill:#0041c4',markerHeight:6,markerWidth:1,markerUnits:'strokeWidth',viewBox:'0 0 1 6',refX:0,refY:3,orient:'auto'},['path',{d:'M 0 0 L 0 6',style:'stroke:#0041c4;stroke-width:2'}]]],['g',{id:'waves'},['g',{id:'lanes'}],['g',{id:'groups'}]]];
try { module.exports = WaveSkin; } catch(err) {}
`
}