by adom
0402 SMD Green LED · 3.3 V drop · 25 mA max
← Commit history
Publish IN-S42ATG characterization with datasheet-verified specs
9 files changed
+5764
IN-S42ATG-fpview.htmladded+790@@ -0,0 +1,790 @@+<!DOCTYPE html>+<html lang="en">+<head>+<meta charset="UTF-8">+<meta name="viewport" content="width=device-width, initial-scale=1.0">+<title>IN-S42ATG</title>+<style>+ * { margin: 0; padding: 0; box-sizing: border-box; }+ body {+ background: #0d1117;+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;+ overflow: hidden;+ height: 100vh;+ display: flex;+ flex-direction: column;+ color: #e6edf3;+ }++ .toolbar {+ display: flex;+ align-items: center;+ gap: 6px;+ padding: 8px 14px;+ background: #161b22;+ border-bottom: 1px solid #21262d;+ flex-shrink: 0;+ font-size: 13px;+ }+ .toolbar .title {+ font-weight: 600;+ color: #00b8b0;+ font-size: 15px;+ letter-spacing: 0.02em;+ overflow: hidden;+ text-overflow: ellipsis;+ white-space: nowrap;+ min-width: 0;+ }+ .toolbar .badge {+ font-size: 10px;+ padding: 2px 6px;+ border-radius: 4px;+ background: rgba(0, 184, 176, 0.12);+ color: #00b8b0;+ border: 1px solid rgba(0, 184, 176, 0.25);+ margin-left: 6px;+ }+ .toolbar .spacer { flex: 1; }+ .toolbar .sep {+ width: 1px;+ height: 22px;+ background: #21262d;+ margin: 0 4px;+ flex-shrink: 0;+ }+ .toolbar .btn-group {+ display: flex;+ align-items: center;+ gap: 2px;+ flex-shrink: 0;+ }+ .toolbar button {+ background: rgba(0, 184, 176, 0.12);+ border: 1px solid rgba(0, 184, 176, 0.25);+ border-radius: 4px;+ padding: 4px 10px;+ cursor: pointer;+ font-size: 12px;+ color: #8b949e;+ transition: all 0.15s;+ }+ .toolbar button:hover { background: rgba(0,184,176,0.18); color: #e6edf3; border-color: rgba(0,184,176,0.4); }+ .toolbar button:active { background: rgba(0,184,176,0.28); }+ .toolbar button.active { background: rgba(0,184,176,0.2); color: #00b8b0; border-color: rgba(0,184,176,0.4); }+ .toolbar .zoom-level {+ font-size: 11px;+ color: #8b949e;+ min-width: 44px;+ text-align: center;+ font-variant-numeric: tabular-nums;+ }++ .canvas-wrap {+ flex: 1;+ overflow: hidden;+ position: relative;+ cursor: grab;+ background-color: #0d1117;+ background-image:+ linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px),+ linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px);+ background-size: 20px 20px;+ }+ .canvas-wrap.dragging { cursor: grabbing; }+ .canvas-wrap.no-grid { background-image: none; }++ .canvas {+ position: absolute;+ transform-origin: 0 0;+ }+ .canvas svg { display: block; }++ .tooltip {+ display: none;+ position: fixed;+ background: #21262d;+ backdrop-filter: blur(12px);+ color: #e6edf3;+ padding: 10px 14px;+ border-radius: 8px;+ border: 1px solid rgba(0, 184, 176, 0.25);+ font-size: 12px;+ line-height: 1.6;+ pointer-events: none;+ z-index: 100;+ max-width: 280px;+ box-shadow: 0 8px 24px rgba(0,0,0,0.4);+ }+ .tooltip.visible { display: block; }+ .tooltip .tt-pad { font-weight: 700; font-size: 15px; color: #00e6dc; }+ .tooltip .tt-signal { color: #f0c040; font-size: 13px; margin-left: 6px; font-weight: 600; }+ .tooltip .tt-dims {+ display: inline-block;+ margin-top: 4px;+ padding: 2px 8px;+ border-radius: 4px;+ font-size: 11px;+ font-weight: 500;+ background: rgba(200,52,52,0.15);+ color: #C83434;+ border: 1px solid rgba(200,52,52,0.3);+ }+ .tooltip .tt-desc {+ margin-top: 6px;+ padding-top: 6px;+ border-top: 1px solid #21262d;+ color: #8b949e;+ font-size: 11px;+ line-height: 1.5;+ }+ .tooltip.sticky {+ pointer-events: auto;+ user-select: text;+ border-color: #00e6dc;+ }+ .tooltip .tt-hint {+ margin-top: 6px;+ font-size: 9px;+ color: #484f58;+ text-align: center;+ }+ .tooltip .tt-source {+ margin-top: 6px;+ padding-top: 4px;+ border-top: 1px solid #21262d;+ font-size: 9px;+ }+ .tooltip .tt-source-label { color: #8C6BF7; }+ .tooltip .tt-source a { color: #58a6ff; text-decoration: none; }+ .tooltip .tt-source a:hover { text-decoration: underline; }++ .edit-btn {+ position: absolute; top: 10px; right: 10px; z-index: 100;+ display: flex; align-items: center; gap: 6px;+ padding: 5px 10px;+ background: rgba(22,27,34,0.75);+ backdrop-filter: blur(8px);+ border: 1px solid rgba(140,107,247,0.2);+ border-radius: 6px;+ color: #8b949e; font-size: 11px;+ cursor: pointer; text-decoration: none;+ transition: all 0.2s; opacity: 0.7;+ }+ .edit-btn:hover {+ opacity: 1;+ background: rgba(140,107,247,0.12);+ border-color: rgba(140,107,247,0.4);+ color: #C5B3FF;+ }+ .edit-btn svg { width: 12px; height: 12px; }++ /* Regen prompt modal */+ .regen-overlay {+ display: none;+ position: fixed; inset: 0;+ background: rgba(0,0,0,0.6);+ z-index: 2000;+ align-items: center; justify-content: center;+ }+ .regen-overlay.visible { display: flex; }+ .regen-modal {+ background: #161b22;+ border: 1px solid #21262d;+ border-radius: 10px;+ padding: 20px 24px;+ max-width: 520px;+ width: 90%;+ box-shadow: 0 12px 40px rgba(0,0,0,0.5);+ }+ .regen-modal h3 {+ margin: 0 0 12px;+ font-size: 14px;+ font-weight: 600;+ color: #00b8b0;+ }+ .regen-modal .prompt-text {+ background: undefined;+ border: 1px solid #21262d;+ border-radius: 6px;+ padding: 12px 14px;+ font-size: 13px;+ line-height: 1.5;+ color: undefined;+ white-space: pre-wrap;+ word-break: break-word;+ user-select: all;+ }+ .regen-modal .modal-footer {+ display: flex;+ align-items: center;+ justify-content: space-between;+ margin-top: 14px;+ }+ .regen-modal .copy-status {+ font-size: 11px;+ color: #484f58;+ }+ .regen-modal .copy-status.copied { color: #00b8b0; }+ .regen-modal .modal-btns { display: flex; gap: 8px; }+ .regen-modal .modal-btns button {+ padding: 6px 14px;+ border-radius: 6px;+ border: 1px solid #21262d;+ background: #161b22;+ color: #8b949e;+ font-size: 12px;+ cursor: pointer;+ }+ .regen-modal .modal-btns button:hover { background: rgba(255,255,255,0.06); }+ .regen-modal .modal-btns .copy-btn {+ background: rgba(0,184,176,0.12);+ border-color: rgba(0,184,176,0.3);+ color: #00b8b0;+ }+ .regen-modal .modal-btns .copy-btn:hover { background: rgba(0,184,176,0.22); }++ /* Pad highlight */+ .pad-highlight {+ stroke: #00b8b0 !important;+ stroke-width: 0.15 !important;+ fill-opacity: 0.6 !important;+ }++ .bottom-panel {+ background: #161b22;+ border-top: 1px solid #21262d;+ flex-shrink: 0;+ }+ .info-row {+ display: flex;+ align-items: baseline;+ flex-wrap: wrap;+ gap: 1px 0;+ padding: 5px 8px;+ font-size: 10px;+ }+ .info-item {+ display: inline-flex;+ align-items: baseline;+ gap: 5px;+ padding: 1px 0;+ margin-right: 8px;+ }+ .info-item::after {+ content: '';+ display: inline-block;+ width: 1px;+ height: 10px;+ background: #21262d;+ margin-left: 8px;+ vertical-align: middle;+ }+ .info-item:last-child::after { display: none; }+ .info-item:last-child { margin-right: 0; }+ .info-label {+ color: #484f58;+ text-transform: uppercase;+ letter-spacing: 0.04em;+ font-size: 9px;+ }+ .info-value { color: #8b949e; }+ .info-value a { color: #00b8b0; text-decoration: none; }+ .info-value a:hover { text-decoration: underline; }+ .info-divider {+ height: 1px;+ background: #21262d;+ margin: 0 8px;+ }+ .coord-row {+ display: flex;+ align-items: center;+ justify-content: space-between;+ padding: 4px 8px;+ font-size: 10px;+ color: #8b949e;+ font-variant-numeric: tabular-nums;+ }+</style>+</head>+<body>++<div class="toolbar">+ <span class="title">IN-S42ATG</span>+ <span class="badge">Footprint</span>+ <span class="badge" style="background:rgba(248,81,73,0.15);color:#f85149;border-color:rgba(248,81,73,0.3);">Local Render</span>+ <div class="spacer"></div>+ <div class="btn-group">+ <button onclick="zoomOut()">−</button>+ <span class="zoom-level" id="zoom-level">100%</span>+ <button onclick="zoomIn()">+</button>+ </div>+ <div class="sep"></div>+ <button onclick="zoomFit()">Fit</button>+ <button onclick="zoomReset()">1:1</button>+ <button onclick="toggleGrid()" id="grid-btn" class="active">Grid</button>+ <button onclick="toggleSolder()" id="solder-btn" class="active" title="250µm solder jet blobs for Adom InstaPCB paste jetting. Adom uses this placement data for its jetting sequence. Blob count, position, and size (250–600µm) are adjustable. Placement accuracy: ±50µm.">Solder</button>+ <button onclick="toggleLabels()" id="labels-btn">Labels</button>+ <div class="sep"></div>+ <button onclick="showRegenPrompt()" id="regen-btn" title="Show regeneration prompt to paste into Claude Code">Regen</button>+</div>++<div class="regen-overlay" id="regen-overlay" onclick="if(event.target===this)closeRegenPrompt()">+ <div class="regen-modal">+ <h3>Regeneration Prompt</h3>+ <div class="prompt-text" id="regen-prompt-text"></div>+ <div class="modal-footer">+ <span class="copy-status" id="regen-copy-status">Copied to clipboard</span>+ <div class="modal-btns">+ <button onclick="closeRegenPrompt()">Close</button>+ <button class="copy-btn" onclick="copyRegenText()">Copy</button>+ </div>+ </div>+ </div>+</div>++<div class="canvas-wrap" id="canvas-wrap">+ <div class="canvas" id="canvas">+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10"><text x="5" y="5" text-anchor="middle" font-size="1" fill="#888">No geometry</text></svg>+ </div>+ <a class="edit-btn" href="https://coder.john-service-wiki-a054078430ce38e4.containers.adom.inc/proxy/8785/wiki/components/in-s42atg/edit?field=content" target="_blank" title="Suggest corrections on Adom Wiki">+ <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">+ <path d="M11.5 1.5l3 3L5 14H2v-3L11.5 1.5z"/>+ <path d="M9.5 3.5l3 3"/>+ </svg>+ Suggest edit+ </a>+</div>++<div class="tooltip" id="tooltip"></div>++<div class="bottom-panel">+ <div class="info-row">+ <div class="info-item"><span class="info-label">Pads</span><span class="info-value">0</span></div>+ </div>+ <div class="info-divider"></div>+ <div class="coord-row">+ <span id="cursor-pos">X: 0.00 Y: 0.00 mm</span>+ </div>+</div>++<script>+ const pads = [];+ const svgW = 10;+ const svgH = 10;+ const svgVbX = 0;+ const svgVbY = 0;+ const offsetX = 0;+ const offsetY = 0;+ const datasheetUrl = "";+ const _partName = "";+ const _fpName = "IN-S42ATG";+ const _kicadModPath = "/home/adom/project/project-content/schematics/footprints/IN-S42ATG/IN-S42ATG.kicad_mod";++ const wrap = document.getElementById('canvas-wrap');+ const canvas = document.getElementById('canvas');+ const tooltip = document.getElementById('tooltip');+ const zoomLabel = document.getElementById('zoom-level');+ const cursorPos = document.getElementById('cursor-pos');++ let scale = 1, panX = 0, panY = 0;+ let isDragging = false;+ let dragStartX, dragStartY, panStartX, panStartY;+ let gridVisible = true;++ const MM_TO_PX = 3.78;+ const svgPxW = svgW * MM_TO_PX;+ const svgPxH = svgH * MM_TO_PX;++ const svgEl = canvas.querySelector('svg');+ if (svgEl) {+ svgEl.setAttribute('width', svgPxW + 'px');+ svgEl.setAttribute('height', svgPxH + 'px');+ }++ function updateTransform() {+ canvas.style.transform = 'translate(' + panX + 'px,' + panY + 'px) scale(' + scale + ')';+ zoomLabel.textContent = Math.round(scale * 100) + '%';+ }++ function zoomFit() {+ const ww = wrap.clientWidth, wh = wrap.clientHeight;+ if (ww === 0 || wh === 0) return; // iframe not laid out yet — ResizeObserver will retry+ const margin = 24;+ // Use getBBox() to fit to visible content only (excludes hidden labels)+ let fitW = svgPxW, fitH = svgPxH, fitX = 0, fitY = 0;+ if (svgEl) {+ try {+ const bb = svgEl.getBBox();+ if (bb.width > 0 && bb.height > 0) {+ fitW = bb.width * MM_TO_PX;+ fitH = bb.height * MM_TO_PX;+ fitX = (bb.x - svgVbX) * MM_TO_PX;+ fitY = (bb.y - svgVbY) * MM_TO_PX;+ }+ } catch {}+ }+ scale = Math.min((ww - margin * 2) / fitW, (wh - margin * 2) / fitH, 100);+ panX = (ww - fitW * scale) / 2 - fitX * scale;+ panY = (wh - fitH * scale) / 2 - fitY * scale;+ updateTransform();+ }++ function zoomReset() {+ scale = 1;+ panX = (wrap.clientWidth - svgPxW) / 2;+ panY = (wrap.clientHeight - svgPxH) / 2;+ updateTransform();+ }++ function zoomIn() { zoomAt(wrap.clientWidth / 2, wrap.clientHeight / 2, 1.25); }+ function zoomOut() { zoomAt(wrap.clientWidth / 2, wrap.clientHeight / 2, 0.8); }++ function zoomAt(cx, cy, factor) {+ const ns = Math.max(0.1, Math.min(scale * factor, 40));+ const r = ns / scale;+ panX = cx - (cx - panX) * r;+ panY = cy - (cy - panY) * r;+ scale = ns;+ updateTransform();+ }++ function toggleGrid() {+ gridVisible = !gridVisible;+ wrap.classList.toggle('no-grid', !gridVisible);+ document.getElementById('grid-btn').classList.toggle('active', gridVisible);+ }++ // ── Solder blob jetting layer ──+ let solderVisible = true;+ let solderGroup = null;++ function setupSolderBlobs() {+ if (!svgEl) return;++ solderGroup = document.createElementNS('http://www.w3.org/2000/svg', 'g');+ solderGroup.setAttribute('id', 'solder-layer');+ solderGroup.style.display = '';+ solderGroup.style.pointerEvents = 'none';++ const BLOB_RADIUS = 0.125; // 250µm diameter / 2+ const BLOB_SPACING = 0.25; // center-to-center (blobs touching — fills the pad)++ pads.forEach(pad => {+ if (pad.mountType !== 'smd') return;++ const cx = pad.x + offsetX;+ const cy = pad.y + offsetY;+ const rot = (pad.rotation || 0) * Math.PI / 180;++ // Each axis computed independently: if pad is wide enough, grid; otherwise single centered blob+ const inset = BLOB_RADIUS; // blob edges align with pad edges — no overhang+ const availW = pad.width - 2 * inset;+ const availH = pad.height - 2 * inset;++ // At minimum 1 blob per axis — even narrow pads get a centered row/column+ const nCols = availW > 0 ? Math.max(1, Math.floor(availW / BLOB_SPACING) + 1) : 1;+ const nRows = availH > 0 ? Math.max(1, Math.floor(availH / BLOB_SPACING) + 1) : 1;+ const spanW = availW > 0 ? availW : 0;+ const spanH = availH > 0 ? availH : 0;+ const stepX = nCols > 1 ? spanW / (nCols - 1) : 0;+ const stepY = nRows > 1 ? spanH / (nRows - 1) : 0;+ const startX = -spanW / 2;+ const startY = -spanH / 2;+ const cosR = Math.cos(rot);+ const sinR = Math.sin(rot);++ for (let row = 0; row < nRows; row++) {+ for (let col = 0; col < nCols; col++) {+ const lx = startX + col * stepX;+ const ly = startY + row * stepY;+ const rx = lx * cosR - ly * sinR;+ const ry = lx * sinR + ly * cosR;++ const circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');+ circle.setAttribute('cx', (cx + rx).toFixed(4));+ circle.setAttribute('cy', (cy + ry).toFixed(4));+ circle.setAttribute('r', BLOB_RADIUS.toFixed(4));+ circle.setAttribute('fill', '#D4AA70');+ circle.setAttribute('fill-opacity', '0.75');+ circle.setAttribute('stroke', '#B8860B');+ circle.setAttribute('stroke-width', '0.015');+ solderGroup.appendChild(circle);+ }+ }+ });++ svgEl.appendChild(solderGroup);+ }++ function toggleSolder() {+ solderVisible = !solderVisible;+ if (solderGroup) solderGroup.style.display = solderVisible ? '' : 'none';+ document.getElementById('solder-btn').classList.toggle('active', solderVisible);+ }++ // ── Label visibility toggle ──+ let labelsVisible = false;+ let labelGroups = [];++ function setupLabelToggle() {+ if (!svgEl) return;+ // KiCad SVGs render labels as <g> containing <text> + <g class="stroked-text">+ // Find all <text> elements and collect their parent <g> groups+ svgEl.querySelectorAll('text').forEach(txt => {+ const parent = txt.parentElement;+ if (parent && parent.tagName === 'g' && !labelGroups.includes(parent)) {+ labelGroups.push(parent);+ parent.style.display = 'none'; // hidden by default+ }+ });+ }++ function toggleLabels() {+ labelsVisible = !labelsVisible;+ labelGroups.forEach(g => g.style.display = labelsVisible ? '' : 'none');+ document.getElementById('labels-btn').classList.toggle('active', labelsVisible);+ }++ // ── Regen prompt modal ──+ let _regenPrompt = '';+ function buildRegenPrompt() {+ const name = _partName || _fpName;+ const folder = _kicadModPath.replace(/\/[^/]+$/, '');+ return 'Regenerate the FpView for ' + name + '.\n\n'+ + 'Footprint: ' + _kicadModPath + '\n'+ + 'Metadata: ' + folder + '/\n\n'+ + 'Re-export the SVG via the KiCad service, regenerate the FpView HTML at the same path, '+ + 'and re-display it.';+ }+ function showRegenPrompt() {+ _regenPrompt = buildRegenPrompt();+ document.getElementById('regen-prompt-text').textContent = _regenPrompt;+ document.getElementById('regen-overlay').classList.add('visible');+ const status = document.getElementById('regen-copy-status');+ navigator.clipboard.writeText(_regenPrompt).then(() => {+ status.textContent = 'Copied to clipboard';+ status.classList.add('copied');+ }).catch(() => {+ status.textContent = 'Click Copy to copy';+ status.classList.remove('copied');+ });+ }+ function closeRegenPrompt() {+ document.getElementById('regen-overlay').classList.remove('visible');+ }+ function copyRegenText() {+ navigator.clipboard.writeText(_regenPrompt).then(() => {+ const status = document.getElementById('regen-copy-status');+ status.textContent = 'Copied to clipboard';+ status.classList.add('copied');+ });+ }++ wrap.addEventListener('wheel', (e) => {+ e.preventDefault();+ const r = wrap.getBoundingClientRect();+ zoomAt(e.clientX - r.left, e.clientY - r.top, e.deltaY < 0 ? 1.12 : 0.89);+ }, { passive: false });++ wrap.addEventListener('mousedown', (e) => {+ if (e.button !== 0) return;+ isDragging = true;+ dragStartX = e.clientX; dragStartY = e.clientY;+ panStartX = panX; panStartY = panY;+ wrap.classList.add('dragging');+ });+ window.addEventListener('mousemove', (e) => {+ const r = wrap.getBoundingClientRect();+ // Convert screen coords to kicad_mod coords+ const svgX = (e.clientX - r.left - panX) / scale / MM_TO_PX;+ const svgY = (e.clientY - r.top - panY) / scale / MM_TO_PX;+ const kicadX = svgX - offsetX;+ const kicadY = svgY - offsetY;+ cursorPos.innerHTML = 'X: ' + kicadX.toFixed(2) + ' Y: ' + kicadY.toFixed(2) + ' mm';+ if (!isDragging) return;+ panX = panStartX + (e.clientX - dragStartX);+ panY = panStartY + (e.clientY - dragStartY);+ updateTransform();+ });+ window.addEventListener('mouseup', () => { isDragging = false; wrap.classList.remove('dragging'); });++ // ── Pad hit zones ──+ let highlightedRects = [];+ let stickyPad = null;++ function setupPadHitZones() {+ if (!svgEl) return;+ pads.forEach(pad => {+ const cx = pad.x + offsetX;+ const cy = pad.y + offsetY;+ const rx = cx - pad.width / 2;+ const ry = cy - pad.height / 2;++ const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');+ rect.setAttribute('x', rx);+ rect.setAttribute('y', ry);+ rect.setAttribute('width', pad.width);+ rect.setAttribute('height', pad.height);+ rect.setAttribute('fill', 'transparent');+ rect.setAttribute('stroke', 'none');+ rect.setAttribute('data-pad', pad.number);+ rect.style.cursor = 'pointer';+ rect.style.pointerEvents = 'all';+ svgEl.appendChild(rect);++ rect.addEventListener('mouseenter', (ev) => showPadTooltip(ev.clientX, ev.clientY, pad, rect));+ rect.addEventListener('mousemove', (ev) => showPadTooltip(ev.clientX, ev.clientY, pad, rect));+ rect.addEventListener('mouseleave', () => hidePadTooltip(rect));+ rect.addEventListener('click', (ev) => { ev.stopPropagation(); handlePadClick(pad, rect); });+ });+ }++ function buildTooltipHtml(pad) {+ let html = '<div><span class="tt-pad">Pad ' + pad.number + '</span>';+ if (pad.signal) html += '<span class="tt-signal">' + pad.signal + '</span>';+ html += '</div>';+ html += '<div><span class="tt-dims">' + pad.width.toFixed(3) + ' × ' + pad.height.toFixed(3) + ' mm · ' + pad.shape + ' · ' + pad.mountType + '</span></div>';+ if (pad.desc) {+ html += '<div class="tt-desc">' + pad.desc + '</div>';+ }+ if (datasheetUrl) {+ html += '<div class="tt-source"><span class="tt-source-label">Source:</span> <a href="' + datasheetUrl + '" target="_blank">Datasheet</a></div>';+ }+ html += '<div class="tt-hint">click to pin · select text</div>';+ return html;+ }++ function positionTooltip(x, y) {+ // Render first to measure+ tooltip.style.left = '0px';+ tooltip.style.top = '0px';+ const ttRect = tooltip.getBoundingClientRect();+ const ttW = ttRect.width, ttH = ttRect.height;+ const pad = 14;+ let tx = x + 14, ty = y + 14;+ if (tx + ttW > window.innerWidth - pad) tx = x - ttW - 14;+ if (ty + ttH > window.innerHeight - pad) ty = y - ttH - 14;+ tx = Math.max(pad, Math.min(tx, window.innerWidth - ttW - pad));+ ty = Math.max(pad, Math.min(ty, window.innerHeight - ttH - pad));+ tooltip.style.left = tx + 'px';+ tooltip.style.top = ty + 'px';+ }++ function showPadTooltip(x, y, pad, rect) {+ if (stickyPad !== null) return; // suppress hover while sticky++ clearHighlight();+ rect.setAttribute('stroke', '#00b8b1');+ rect.setAttribute('stroke-width', '0.12');+ rect.setAttribute('fill', 'rgba(0,184,177,0.2)');+ highlightedRects.push(rect);++ tooltip.innerHTML = buildTooltipHtml(pad);+ tooltip.classList.add('visible');+ tooltip.classList.remove('sticky');+ positionTooltip(x, y);+ }++ function hidePadTooltip(rect) {+ if (stickyPad !== null) return; // don't hide while sticky+ tooltip.classList.remove('visible');+ clearHighlight();+ }++ function handlePadClick(pad, rect) {+ if (stickyPad === pad.number) {+ // Unpin+ stickyPad = null;+ tooltip.classList.remove('sticky', 'visible');+ clearHighlight();+ } else {+ // Pin this pad+ stickyPad = pad.number;+ clearHighlight();+ rect.setAttribute('stroke', '#00b8b1');+ rect.setAttribute('stroke-width', '0.12');+ rect.setAttribute('fill', 'rgba(0,184,177,0.2)');+ highlightedRects.push(rect);+ tooltip.innerHTML = buildTooltipHtml(pad);+ tooltip.classList.add('visible', 'sticky');+ // Remove hint when sticky+ const hint = tooltip.querySelector('.tt-hint');+ if (hint) hint.style.display = 'none';+ }+ }++ // Dismiss sticky tooltip on click outside+ document.addEventListener('click', (e) => {+ if (stickyPad !== null && !tooltip.contains(e.target)) {+ stickyPad = null;+ tooltip.classList.remove('sticky', 'visible');+ clearHighlight();+ }+ });++ function clearHighlight() {+ highlightedRects.forEach(r => {+ r.setAttribute('fill', 'transparent');+ r.setAttribute('stroke', 'none');+ });+ highlightedRects = [];+ }++ wrap.addEventListener('mouseleave', () => {+ if (stickyPad !== null) return;+ tooltip.classList.remove('visible');+ clearHighlight();+ });++ // Keyboard+ window.addEventListener('keydown', (e) => {+ if (e.key === 'Escape') closeRegenPrompt();+ else if (e.key === 'f' || e.key === 'F') zoomFit();+ else if (e.key === '1') zoomReset();+ else if (e.key === '+' || e.key === '=') zoomIn();+ else if (e.key === '-') zoomOut();+ else if (e.key === 'g' || e.key === 'G') toggleGrid();+ else if (e.key === 's' || e.key === 'S') toggleSolder();+ else if (e.key === 'l' || e.key === 'L') toggleLabels();+ });++ // Screenshot capture via postMessage (parent viewer sends mgmt_capture_request)+ window.addEventListener('message', (e) => {+ if (e.data?.type === 'mgmt_capture_request' && svgEl) {+ const xml = new XMLSerializer().serializeToString(svgEl);+ parent.postMessage({+ type: 'mgmt_canvas_capture',+ _reqId: e.data._reqId,+ svgXml: xml,+ svgWidth: svgW,+ svgHeight: svgH,+ bgColor: 'undefined',+ }, '*');+ }+ });++ // Auto-fit on window/container resize+ new ResizeObserver(() => zoomFit()).observe(wrap);+ window.addEventListener('resize', () => requestAnimationFrame(zoomFit));++ // Init — set up layers then fit. Use multiple retries because srcdoc iframes+ // may not have layout dimensions during the first requestAnimationFrame.+ let inited = false;+ function init() {+ if (inited) return;+ setupLabelToggle();+ setupSolderBlobs();+ setupPadHitZones();+ inited = true;+ }+ function initAndFit() {+ init();+ zoomFit();+ }+ requestAnimationFrame(initAndFit);+ setTimeout(initAndFit, 100);+ setTimeout(initAndFit, 500);+</script>+</body>+</html>
IN-S42ATG-symview.htmladded+1292@@ -0,0 +1,1292 @@+<!DOCTYPE html>+<html lang="en">+<head>+<meta charset="UTF-8">+<meta name="viewport" content="width=device-width, initial-scale=1.0">+<title>IN-S42ATG</title>+<style>+ * { margin: 0; padding: 0; box-sizing: border-box; }+ body {+ background: #0d1117;+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;+ overflow: hidden;+ height: 100vh;+ display: flex;+ flex-direction: column;+ color: #e6edf3;+ }++ /* ── Top toolbar ── */+ .toolbar {+ display: flex;+ align-items: center;+ gap: 6px;+ padding: 8px 14px;+ background: #161b22;+ border-bottom: 1px solid #21262d;+ flex-shrink: 0;+ font-size: 13px;+ }+ .toolbar .title {+ font-weight: 600;+ color: #00b8b0;+ font-size: 15px;+ letter-spacing: 0.02em;+ }+ .toolbar .spacer { flex: 1; }+ .toolbar .sep {+ width: 1px;+ height: 22px;+ background: #21262d;+ margin: 0 4px;+ flex-shrink: 0;+ }+ .toolbar .btn-group {+ display: flex;+ align-items: center;+ gap: 2px;+ flex-shrink: 0;+ }+ .toolbar button {+ background: rgba(0, 184, 176, 0.12);+ border: 1px solid rgba(0, 184, 176, 0.25);+ border-radius: 4px;+ padding: 4px 10px;+ cursor: pointer;+ font-size: 12px;+ color: #8b949e;+ transition: all 0.15s;+ }+ .toolbar button:hover { background: rgba(0,184,176,0.18); color: #e6edf3; border-color: rgba(0,184,176,0.4); }+ .toolbar button:active { background: rgba(0,184,176,0.28); }+ .toolbar button.active { background: rgba(0,184,176,0.2); color: #00b8b0; border-color: rgba(0,184,176,0.4); }+ .toolbar .zoom-level {+ font-size: 11px;+ color: #8b949e;+ min-width: 44px;+ text-align: center;+ font-variant-numeric: tabular-nums;+ }++ /* ── Canvas (dark background) ── */+ .canvas-wrap {+ flex: 1;+ overflow: hidden;+ position: relative;+ cursor: grab;+ background-color: #0d1117;+ background-image:+ radial-gradient(ellipse at 50% 50%, rgba(0,184,176,0.03) 0%, transparent 70%),+ linear-gradient(rgba(255,255,255,0.015) 1px, transparent 1px),+ linear-gradient(90deg, rgba(255,255,255,0.015) 1px, transparent 1px);+ background-size: 100% 100%, 20px 20px, 20px 20px;+ }+ .canvas-wrap.dragging { cursor: grabbing; }+ .canvas-wrap.no-grid {+ background-image: radial-gradient(ellipse at 50% 50%, rgba(0,184,176,0.03) 0%, transparent 70%);+ background-size: 100% 100%;+ }++ .canvas {+ position: absolute;+ transform-origin: 0 0;+ }+ .canvas svg { display: block; }++ /* ── Tooltip ── */+ .tooltip {+ display: none;+ position: fixed;+ background: #21262d;+ backdrop-filter: blur(16px);+ -webkit-backdrop-filter: blur(16px);+ color: #e6edf3;+ padding: 10px 14px;+ border-radius: 10px;+ border: 1px solid rgba(0, 184, 176, 0.25);+ font-size: 12px;+ line-height: 1.6;+ pointer-events: none;+ user-select: none;+ z-index: 100;+ max-width: 300px;+ box-shadow: 0 8px 24px rgba(0,0,0,0.4);+ transition: border-color 0.15s;+ }+ .tooltip.visible { display: block; }+ .tooltip.sticky {+ pointer-events: auto;+ user-select: text;+ border-color: #00e6dc;+ box-shadow: 0 8px 32px rgba(0,184,176,0.15), 0 8px 24px rgba(0,0,0,0.4);+ }+ .tooltip .tt-name { font-weight: 700; font-size: 15px; color: #00e6dc; }+ .tooltip .tt-pin { color: #8b949e; font-size: 11px; margin-left: 4px; }+ .tooltip .tt-type {+ display: inline-block;+ margin-top: 4px;+ padding: 2px 8px;+ border-radius: 4px;+ font-size: 11px;+ font-weight: 500;+ }+ .tooltip .tt-desc {+ margin-top: 6px;+ padding-top: 6px;+ border-top: 1px solid #21262d;+ color: #8b949e;+ font-size: 11px;+ line-height: 1.5;+ }+ .tooltip .tt-source {+ margin-top: 6px;+ padding-top: 6px;+ border-top: 1px solid #21262d;+ font-size: 10px;+ color: #484f58;+ }+ .tooltip .tt-source a { color: #00b8b0; text-decoration: none; }+ .tooltip .tt-source a:hover { text-decoration: underline; }+ .tooltip .tt-source-label { color: #E6B450; font-weight: 600; }+ .tooltip .tt-hint {+ margin-top: 6px;+ font-size: 9px;+ color: #484f58;+ font-style: italic;+ }+ .tooltip .tt-group-name { font-weight: 700; font-size: 14px; color: #E6B450; }+ .tooltip .tt-group-badge {+ display: inline-block;+ margin-top: 4px;+ padding: 2px 8px;+ border-radius: 4px;+ font-size: 11px;+ font-weight: 500;+ background: rgba(230,180,80,0.15);+ color: #FFD180;+ border: 1px solid rgba(230,180,80,0.3);+ }++ /* ── Wiki edit button ── */+ .edit-btn {+ position: absolute; top: 10px; right: 10px; z-index: 100;+ display: flex; align-items: center; gap: 6px;+ padding: 5px 10px;+ background: rgba(22,27,34,0.75);+ backdrop-filter: blur(8px);+ border: 1px solid rgba(230,180,80,0.2);+ border-radius: 6px;+ color: #8b949e; font-size: 11px;+ cursor: pointer; text-decoration: none;+ transition: all 0.2s; opacity: 0.7;+ }+ .edit-btn:hover {+ opacity: 1;+ background: rgba(230,180,80,0.12);+ border-color: rgba(230,180,80,0.4);+ color: #FFD180;+ }+ .edit-btn svg { width: 12px; height: 12px; }++ /* Regen prompt modal */+ .regen-overlay {+ display: none;+ position: fixed; inset: 0;+ background: rgba(0,0,0,0.6);+ z-index: 2000;+ align-items: center; justify-content: center;+ }+ .regen-overlay.visible { display: flex; }+ .regen-modal {+ background: undefined;+ border: 1px solid undefined;+ border-radius: 10px;+ padding: 20px 24px;+ max-width: 520px;+ width: 90%;+ box-shadow: 0 12px 40px rgba(0,0,0,0.5);+ }+ .regen-modal h3 {+ margin: 0 0 12px;+ font-size: 14px;+ font-weight: 600;+ color: undefined;+ }+ .regen-modal .prompt-text {+ background: undefined;+ border: 1px solid undefined;+ border-radius: 6px;+ padding: 12px 14px;+ font-size: 13px;+ line-height: 1.5;+ color: undefined;+ white-space: pre-wrap;+ word-break: break-word;+ user-select: all;+ }+ .regen-modal .modal-footer {+ display: flex;+ align-items: center;+ justify-content: space-between;+ margin-top: 14px;+ }+ .regen-modal .copy-status {+ font-size: 11px;+ color: undefined;+ }+ .regen-modal .copy-status.copied { color: undefined; }+ .regen-modal .modal-btns { display: flex; gap: 8px; }+ .regen-modal .modal-btns button {+ padding: 6px 14px;+ border-radius: 6px;+ border: 1px solid undefined;+ background: undefined;+ color: undefined;+ font-size: 12px;+ cursor: pointer;+ }+ .regen-modal .modal-btns button:hover { background: rgba(255,255,255,0.06); }+ .regen-modal .modal-btns .copy-btn {+ background: rgba(0,230,220,0.12);+ border-color: rgba(0,230,220,0.3);+ color: undefined;+ }+ .regen-modal .modal-btns .copy-btn:hover { background: rgba(0,230,220,0.22); }++ /* Pin highlight on hover */+ .canvas svg .pin-highlight path, .canvas svg path.pin-highlight { stroke: #00e6dc !important; }+ .canvas svg .group-highlight path { stroke: #FFD180 !important; }++ /* Discrete pin label highlight (injected <text> elements) */+ .canvas svg text.pin-label-highlight { fill: #00e6dc !important; }+ .canvas svg text.pin-num-highlight { fill: #00e6dc !important; }++ /* Discrete pin hit zone outline (visible on hover) */+ .canvas svg rect.pin-hit-zone { fill: rgba(0,230,220,0.06); stroke: #00e6dc; stroke-width: 0.12; stroke-dasharray: 0.3,0.2; stroke-opacity: 0.5; pointer-events: all; cursor: pointer; rx: 0.3; }+ .canvas svg rect.pin-hit-zone:hover { fill: rgba(0,230,220,0.12); stroke-opacity: 0.8; stroke-width: 0.15; }++ /* ── Bottom panel ── */+ .bottom-panel {+ background: #161b22;+ border-top: 1px solid #21262d;+ flex-shrink: 0;+ }+ .info-row {+ display: flex;+ align-items: baseline;+ flex-wrap: wrap;+ gap: 1px 0;+ padding: 5px 8px;+ font-size: 10px;+ }+ .info-item {+ display: inline-flex;+ align-items: baseline;+ gap: 5px;+ padding: 1px 0;+ margin-right: 8px;+ }+ .info-item::after {+ content: '';+ display: inline-block;+ width: 1px;+ height: 10px;+ background: #21262d;+ margin-left: 8px;+ vertical-align: middle;+ }+ .info-item:last-child::after { display: none; }+ .info-item:last-child { margin-right: 0; }+ .info-label {+ color: #484f58;+ text-transform: uppercase;+ letter-spacing: 0.04em;+ font-size: 9px;+ }+ .info-value { color: #8b949e; }+ .info-value a { color: #00b8b0; text-decoration: none; }+ .info-value a:hover { text-decoration: underline; }+ .info-divider { height: 1px; background: #21262d; margin: 0 8px; }+ .coord-row {+ display: flex;+ align-items: center;+ justify-content: space-between;+ padding: 4px 8px;+ font-size: 10px;+ color: #8b949e;+ font-variant-numeric: tabular-nums;+ }+</style>+</head>+<body>++<div class="toolbar">+ <span class="title">IN-S42ATG</span>+ <div class="spacer"></div>+ <div class="btn-group">+ <button onclick="zoomOut()">−</button>+ <span class="zoom-level" id="zoom-level">100%</span>+ <button onclick="zoomIn()">+</button>+ </div>+ <div class="sep"></div>+ <button onclick="zoomFit()">Fit</button>+ <button onclick="zoomReset()">1:1</button>+ <button onclick="toggleGrid()" id="grid-btn" class="active">Grid</button>+ <button onclick="toggleBBox()" id="bbox-btn" class="active">BBox</button>+ <button onclick="toggleHits()" id="hits-btn">Hits</button>+ <div class="sep"></div>+ <button onclick="showRegenPrompt()" title="Show regeneration prompt to paste into Claude Code">Regen</button>+</div>++<div class="regen-overlay" id="regen-overlay" onclick="if(event.target===this)closeRegenPrompt()">+ <div class="regen-modal">+ <h3>Regeneration Prompt</h3>+ <div class="prompt-text" id="regen-prompt-text"></div>+ <div class="modal-footer">+ <span class="copy-status" id="regen-copy-status">Copied to clipboard</span>+ <div class="modal-btns">+ <button onclick="closeRegenPrompt()">Close</button>+ <button class="copy-btn" onclick="copyRegenText()">Copy</button>+ </div>+ </div>+ </div>+</div>++<div class="canvas-wrap" id="canvas-wrap">+ <a class="edit-btn" href="https://coder.john-service-wiki-a054078430ce38e4.containers.adom.inc/proxy/8785/wiki/components/in-s42atg/edit?field=content" target="_blank" title="Suggest corrections to this symbol on the Adom Wiki">+ <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">+ <path d="M11.5 1.5l3 3L5 14H2v-3L11.5 1.5z"/>+ <path d="M9.5 3.5l3 3"/>+ </svg>+ Suggest edit+ </a>+ <div class="canvas" id="canvas">+ <svg+ xmlns:svg="http://www.w3.org/2000/svg"+ xmlns="http://www.w3.org/2000/svg"+ xmlns:xlink="http://www.w3.org/1999/xlink"+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"+ version="1.1"+ width="10.5156mm" height="8.5598mm" viewBox="-3.6617 -1.0201 18.2200 10.6000">++<defs>+ <linearGradient id="adom-body-grad" x1="0" y1="0" x2="0" y2="1">+ <stop offset="0%" stop-color="#1a2332"/>+ <stop offset="100%" stop-color="#141c27"/>+ </linearGradient>+</defs>++<style>+ /* Stroked text groups (KiCad renders text as paths in <g class="stroked-text">) */+ g.stroked-text path {+ stroke: #ffffff !important;+ fill: #ffffff !important;+ }++ /* Hidden text elements (used for hit detection) */+ text[opacity="0"] {+ fill: #ffffff !important;+ }++ /* Pin highlight state (toggled by JS) */+ .pin-highlight path {+ stroke: #00e6dc !important;+ }+ .pin-highlight g.stroked-text path {+ stroke: #00e6dc !important;+ }++ /* Group label highlight */+ .group-highlight g.stroked-text path {+ stroke: #FFD180 !important;+ }+</style>++ <desc>Image generated by Eeschema-SVG </desc>+<g style="fill:none; fill-opacity:1.0000;stroke:#000000; stroke-opacity:1.0000;+stroke-linecap:round; stroke-linejoin:round;"+ transform="translate(0 0) scale(1 1)">+<path style="fill:none; +stroke:#4a5568; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 2.4003,5.0419+0.8763,6.5659+1.6383,6.5659+0.8763,6.5659+0.8763,5.8039+" /> +<path style="fill:none; +stroke:#4a5568; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 3.6703,5.0419+2.1463,6.5659+2.9083,6.5659+2.1463,6.5659+2.1463,5.8039+" /> +<path style="fill:none; +stroke:#4a5568; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 4.1783,4.2799+6.7183,4.2799+" /> +<path style="fill:none; +stroke:#4a5568; stroke-width:0.2540; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 4.1783,5.5499+4.1783,3.0099+" /> +<path style="fill:none; +stroke:#4a5568; stroke-width:0.2540; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 6.7183,5.5499+6.7183,3.0099+4.1783,4.2799+Z" /> +</g>+<g style="fill:none; +stroke:#4a5568; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;">+<path d="M4.1783 4.2799+L1.6383 4.2799+" />+<path d="M6.7183 4.2799+L9.2583 4.2799+" />+</g>+<g style="fill:none; +stroke:#484f58; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;">++<text x="5.4483" y="7.4549"+textLength="3.6503" font-size="1.6933" lengthAdjust="spacingAndGlyphs"+text-anchor="middle" opacity="0" stroke-opacity="0">LED</text>+<g class="stroked-text"><desc>LED</desc>+<path d="M4.6319 7.3994+L4.0271 7.3994+" />+<path d="M4.0271 7.3994+L4.0271 6.1294+" />+<path d="M5.0552 6.7342+L5.4786 6.7342+" />+<path d="M5.6600 7.3994+L5.0552 7.3994+" />+<path d="M5.0552 7.3994+L5.0552 6.1294+" />+<path d="M5.0552 6.1294+L5.6600 6.1294+" />+<path d="M6.2042 7.3994+L6.2042 6.1294+" />+<path d="M6.2042 6.1294+L6.5066 6.1294+" />+<path d="M6.5066 6.1294+L6.6880 6.1899+" />+<path d="M6.6880 6.1899+L6.8090 6.3109+" />+<path d="M6.8090 6.3109+L6.8695 6.4318+" />+<path d="M6.8695 6.4318+L6.9299 6.6737+" />+<path d="M6.9299 6.6737+L6.9299 6.8551+" />+<path d="M6.9299 6.8551+L6.8695 7.0970+" />+<path d="M6.8695 7.0970+L6.8090 7.2180+" />+<path d="M6.8090 7.2180+L6.6880 7.3390+" />+<path d="M6.6880 7.3390+L6.5066 7.3994+" />+<path d="M6.5066 7.3994+L6.2042 7.3994+" />+</g></g> +<text x="0.638" y="4.665" font-size="1.1" font-family="sans-serif" fill="#ffffff" text-anchor="end" class="pin-label">K</text>+<text x="1.638" y="5.530" font-size="0.75" font-family="sans-serif" fill="#8b949e" text-anchor="middle" class="pin-num-label">1</text>+<text x="10.258" y="4.665" font-size="1.1" font-family="sans-serif" fill="#ffffff" text-anchor="start" class="pin-label">A</text>+<text x="9.258" y="5.530" font-size="0.75" font-family="sans-serif" fill="#8b949e" text-anchor="middle" class="pin-num-label">2</text>+<rect x="-3.3617000000000004" y="-0.7201000000000004" width="17.62" height="10" fill="none" stroke="#00e6dc" stroke-width="0.1" stroke-dasharray="0.3,0.3" opacity="0.4" class="debug-bbox"/></svg>+ </div>+</div>++<div class="tooltip" id="tooltip"></div>++<div class="bottom-panel">+ <div class="info-row">+ <div class="info-item"><span class="info-label">Pins</span><span class="info-value">2</span></div><div class="info-item"><span class="info-label">Datasheet</span><span class="info-value"><a href="~" target="_blank">PDF</a></span></div><div class="info-item"><span class="info-label">Desc</span><span class="info-value">Light emitting diode</span></div>+ </div>+ <div class="info-divider"></div>+ <div class="coord-row">+ <span id="cursor-pos">X: 0.00 Y: 0.00 mm</span>+ <span style="margin-left:auto;color:#00b8b0;font-weight:600;font-size:12px">SymView</span>+ </div>+</div>++<script>+ const pins = [{"name":"K","number":"1","type":"Passive","electricalType":"passive","color":"#78909c","desc":"","x":-3.81,"y":0,"angle":0,"length":2.54},{"name":"A","number":"2","type":"Passive","electricalType":"passive","color":"#78909c","desc":"","x":3.81,"y":0,"angle":180,"length":2.54}];+ const groups = [];+ const svgW = 18.22;+ const svgH = 10.6;+ const contentBounds = {"x":-3.3617000000000004,"y":-0.7201000000000004,"w":17.62,"h":10};+ const svgOffset = {"x":5.4483,"y":4.2799};+ const hidePinNames = true;+ const hidePinNumbers = true;+ const datasheetUrl = "~";+ const mfrName = "";+ const _symbolName = "IN-S42ATG";+ const _symPath = "/home/adom/project/project-content/schematics/symbols/IN-S42ATG/IN-S42ATG.kicad_sym";++ const wrap = document.getElementById('canvas-wrap');+ const canvas = document.getElementById('canvas');+ const tooltip = document.getElementById('tooltip');+ const zoomLabel = document.getElementById('zoom-level');+ const cursorPos = document.getElementById('cursor-pos');++ let scale = 1, panX = 0, panY = 0;+ let isDragging = false;+ let dragStartX, dragStartY, panStartX, panStartY;+ let gridVisible = true;+ let stickyPin = null; // currently pinned tooltip++ const MM_TO_PX = 3.78;+ const svgPxW = svgW * MM_TO_PX;+ const svgPxH = svgH * MM_TO_PX;++ const svgEl = canvas.querySelector('svg');+ if (svgEl) {+ svgEl.setAttribute('width', svgPxW + 'px');+ svgEl.setAttribute('height', svgPxH + 'px');+ }++ function updateTransform() {+ canvas.style.transform = 'translate(' + panX + 'px,' + panY + 'px) scale(' + scale + ')';+ zoomLabel.textContent = Math.round(scale * 100) + '%';+ }++ function zoomFit() {+ const ww = wrap.clientWidth, wh = wrap.clientHeight;+ const pad = 40;+ // Read the bbox rect directly from the SVG DOM — it's already positioned correctly+ const bboxRect = svgEl ? svgEl.querySelector('.debug-bbox') : null;+ if (bboxRect) {+ const bb = bboxRect.getBBox();+ const vb = svgEl.viewBox.baseVal;+ // Convert SVG user-space coords to pixel coords within the SVG element+ const pxPerUnitX = svgPxW / vb.width;+ const pxPerUnitY = svgPxH / vb.height;+ const pxX = (bb.x - vb.x) * pxPerUnitX;+ const pxY = (bb.y - vb.y) * pxPerUnitY;+ const pxW = bb.width * pxPerUnitX;+ const pxH = bb.height * pxPerUnitY;+ scale = Math.min((ww - pad * 2) / pxW, (wh - pad * 2) / pxH, 10);+ if (!isFinite(scale) || scale <= 0) scale = 1;+ panX = (ww - pxW * scale) / 2 - pxX * scale;+ panY = (wh - pxH * scale) / 2 - pxY * scale;+ } else {+ scale = Math.min((ww - pad * 2) / svgPxW, (wh - pad * 2) / svgPxH, 10);+ if (!isFinite(scale) || scale <= 0) scale = 1;+ panX = (ww - svgPxW * scale) / 2;+ panY = (wh - svgPxH * scale) / 2;+ }+ updateTransform();+ }++ function zoomReset() {+ scale = 1;+ panX = (wrap.clientWidth - svgPxW) / 2;+ panY = (wrap.clientHeight - svgPxH) / 2;+ updateTransform();+ }++ function zoomIn() { zoomAt(wrap.clientWidth / 2, wrap.clientHeight / 2, 1.25); }+ function zoomOut() { zoomAt(wrap.clientWidth / 2, wrap.clientHeight / 2, 0.8); }++ function zoomAt(cx, cy, factor) {+ const ns = Math.max(0.1, Math.min(scale * factor, 20));+ const r = ns / scale;+ panX = cx - (cx - panX) * r;+ panY = cy - (cy - panY) * r;+ scale = ns;+ updateTransform();+ }++ function toggleGrid() {+ gridVisible = !gridVisible;+ wrap.classList.toggle('no-grid', !gridVisible);+ document.getElementById('grid-btn').classList.toggle('active', gridVisible);+ }++ let bboxVisible = true;+ function toggleBBox() {+ bboxVisible = !bboxVisible;+ const el = svgEl && svgEl.querySelector('.debug-bbox');+ if (el) el.setAttribute('opacity', bboxVisible ? '0.4' : '0');+ document.getElementById('bbox-btn').classList.toggle('active', bboxVisible);+ }++ let hitsVisible = false;+ function toggleHits() {+ hitsVisible = !hitsVisible;+ if (svgEl) {+ svgEl.querySelectorAll('.pin-hit-zone').forEach(r => {+ r.style.visibility = hitsVisible ? '' : 'hidden';+ });+ }+ document.getElementById('hits-btn').classList.toggle('active', hitsVisible);+ }++ // ── Regen prompt modal ──+ let _regenPrompt = '';+ function buildRegenPrompt() {+ const folder = _symPath.substring(0, _symPath.lastIndexOf('/'));+ return 'Regenerate the SymView for ' + _symbolName + '.\n\n'+ + 'Symbol: ' + _symPath + '\n'+ + 'Metadata: ' + folder + '/' + _symbolName + '-metadata.json\n\n'+ + 'Re-export the SVG via the KiCad service, regenerate the SymView HTML at the same path, '+ + 'and re-display it in the Adom app.';+ }+ function showRegenPrompt() {+ _regenPrompt = buildRegenPrompt();+ document.getElementById('regen-prompt-text').textContent = _regenPrompt;+ document.getElementById('regen-overlay').classList.add('visible');+ const status = document.getElementById('regen-copy-status');+ navigator.clipboard.writeText(_regenPrompt).then(() => {+ status.textContent = 'Copied to clipboard';+ status.classList.add('copied');+ }).catch(() => {+ status.textContent = 'Click Copy to copy';+ status.classList.remove('copied');+ });+ }+ function closeRegenPrompt() {+ document.getElementById('regen-overlay').classList.remove('visible');+ }+ function copyRegenText() {+ navigator.clipboard.writeText(_regenPrompt).then(() => {+ const status = document.getElementById('regen-copy-status');+ status.textContent = 'Copied to clipboard';+ status.classList.add('copied');+ });+ }++ // Mouse wheel zoom+ wrap.addEventListener('wheel', (e) => {+ e.preventDefault();+ const r = wrap.getBoundingClientRect();+ zoomAt(e.clientX - r.left, e.clientY - r.top, e.deltaY < 0 ? 1.12 : 0.89);+ }, { passive: false });++ // Pan+ wrap.addEventListener('mousedown', (e) => {+ if (e.button !== 0) return;+ isDragging = true;+ dragStartX = e.clientX; dragStartY = e.clientY;+ panStartX = panX; panStartY = panY;+ wrap.classList.add('dragging');+ });+ window.addEventListener('mousemove', (e) => {+ const r = wrap.getBoundingClientRect();+ const mx = (e.clientX - r.left - panX) / scale / MM_TO_PX;+ const my = (e.clientY - r.top - panY) / scale / MM_TO_PX;+ cursorPos.innerHTML = 'X: ' + mx.toFixed(2) + ' Y: ' + my.toFixed(2) + ' mm';+ if (!isDragging) return;+ panX = panStartX + (e.clientX - dragStartX);+ panY = panStartY + (e.clientY - dragStartY);+ updateTransform();+ });+ window.addEventListener('mouseup', () => { isDragging = false; wrap.classList.remove('dragging'); });++ // ── Pin highlighting ──+ const pinTextGroups = new Map();+ const pinWireGroups = new Map();+ if (svgEl) {+ // Build text group lookup+ svgEl.querySelectorAll('g.stroked-text').forEach(g => {+ const desc = g.querySelector('desc');+ if (desc) pinTextGroups.set(desc.textContent.trim(), g);+ });++ // Build wire group lookup using coordinate matching (not sibling navigation)+ if (svgOffset) {+ const ox = svgOffset.x, oy = svgOffset.y;+ // Collect all simple 2-point line paths in the SVG+ const allPaths = svgEl.querySelectorAll('path');+ const wirePaths = [];+ allPaths.forEach(p => {+ const d = p.getAttribute('d');+ if (!d) return;+ const m = d.match(/^M([\d.]+)\s+([\d.]+)\s+L([\d.]+)\s+([\d.]+)\s*$/);+ if (m) wirePaths.push({ el: p, x1: parseFloat(m[1]), y1: parseFloat(m[2]), x2: parseFloat(m[3]), y2: parseFloat(m[4]) });+ });++ for (const pin of pins) {+ const tipX = ox + pin.x;+ const tipY = oy - pin.y;+ const wireLen = pin.length || 2.54;+ const isHoriz = (pin.angle === 0 || pin.angle === 180);++ for (const w of wirePaths) {+ const dx = Math.abs(w.x2 - w.x1), dy = Math.abs(w.y2 - w.y1);+ const len = Math.sqrt(dx * dx + dy * dy);+ if (Math.abs(len - wireLen) > 0.05) continue;+ if (isHoriz && dy > 0.01) continue;+ if (!isHoriz && dx > 0.01) continue;+ // Check if one endpoint is near the pin tip+ const d1 = Math.hypot(w.x1 - tipX, w.y1 - tipY);+ const d2 = Math.hypot(w.x2 - tipX, w.y2 - tipY);+ if (Math.min(d1, d2) < 0.1) {+ // Found the wire path element directly+ pinWireGroups.set(pin.name, w.el);+ break;+ }+ }+ }+ }+ }++ function highlightPin(pin) {+ clearHighlight();+ // IC symbols: stroked-text groups+ [pin.name, pin.number].forEach(label => {+ const g = pinTextGroups.get(label);+ if (g) g.classList.add('pin-highlight');+ });+ const wireG = pinWireGroups.get(pin.name);+ if (wireG) wireG.classList.add('pin-highlight');+ // Discrete symbols: injected <text> labels+ if (svgEl && hidePinNames) {+ svgEl.querySelectorAll('text.pin-label').forEach(t => {+ if (t.textContent.trim() === pin.name) t.classList.add('pin-label-highlight');+ });+ svgEl.querySelectorAll('text.pin-num-label').forEach(t => {+ if (t.textContent.trim() === pin.number) t.classList.add('pin-num-highlight');+ });+ }+ }+ function clearHighlight() {+ if (svgEl) {+ svgEl.querySelectorAll('.pin-highlight').forEach(g => g.classList.remove('pin-highlight'));+ svgEl.querySelectorAll('.group-highlight').forEach(g => g.classList.remove('group-highlight'));+ svgEl.querySelectorAll('.pin-label-highlight').forEach(t => t.classList.remove('pin-label-highlight'));+ svgEl.querySelectorAll('.pin-num-highlight').forEach(t => t.classList.remove('pin-num-highlight'));+ }+ }++ // ── Tooltip positioning ──+ function positionTooltip(x, y) {+ const tw = tooltip.offsetWidth || 280;+ const th = tooltip.offsetHeight || 120;+ let tx = x + 14;+ let ty = y + 14;+ if (tx + tw > window.innerWidth - 14) tx = x - tw - 14;+ if (ty + th > window.innerHeight - 14) ty = y - th - 14;+ tx = Math.max(14, tx);+ ty = Math.max(14, ty);+ tooltip.style.left = tx + 'px';+ tooltip.style.top = ty + 'px';+ }++ // ── Source attribution HTML ──+ function sourceHtml() {+ if (!datasheetUrl || !mfrName) return '';+ return '<div class="tt-source"><span class="tt-source-label">Source:</span> <a href="' + datasheetUrl + '" target="_blank">' + mfrName + ' Datasheet</a></div>';+ }++ function hintHtml() {+ return '<div class="tt-hint">click to pin · select text</div>';+ }++ function showTooltip(x, y, pin) {+ if (stickyPin) return; // don't override sticky+ highlightPin(pin);+ let html = '<div><span class="tt-name">' + pin.name + '</span><span class="tt-pin">Pin ' + pin.number + '</span></div>' ++ '<div><span class="tt-type" style="background:' + pin.color + '22; color:' + pin.color + '; border:1px solid ' + pin.color + '44">' + pin.type + '</span></div>';+ if (pin.desc) html += '<div class="tt-desc">' + pin.desc + '</div>';+ html += sourceHtml();+ html += hintHtml();+ tooltip.innerHTML = html;+ tooltip.classList.add('visible');+ tooltip.classList.remove('sticky');+ positionTooltip(x, y);+ }++ function showGroupTooltip(x, y, group) {+ if (stickyPin) return;+ clearHighlight();+ const g = pinTextGroups.get(group.name);+ if (g) g.classList.add('group-highlight');+ let html = '<div><span class="tt-group-name">' + group.name + '</span></div>' ++ '<div><span class="tt-group-badge">Function Group</span></div>';+ if (group.desc) html += '<div class="tt-desc">' + group.desc + '</div>';+ tooltip.innerHTML = html;+ tooltip.classList.add('visible');+ tooltip.classList.remove('sticky');+ positionTooltip(x, y);+ }++ function hideTooltip() {+ if (stickyPin) return;+ tooltip.classList.remove('visible');+ clearHighlight();+ }++ // ── Sticky tooltip (click-to-pin) ──+ function toggleSticky(pin, x, y) {+ if (stickyPin === pin) {+ // Unpin+ stickyPin = null;+ tooltip.classList.remove('sticky');+ hideTooltip();+ } else {+ // Pin+ stickyPin = pin;+ highlightPin(pin);+ let html = '<div><span class="tt-name">' + pin.name + '</span><span class="tt-pin">Pin ' + pin.number + '</span></div>' ++ '<div><span class="tt-type" style="background:' + pin.color + '22; color:' + pin.color + '; border:1px solid ' + pin.color + '44">' + pin.type + '</span></div>';+ if (pin.desc) html += '<div class="tt-desc">' + pin.desc + '</div>';+ html += sourceHtml();+ tooltip.innerHTML = html;+ tooltip.classList.add('visible', 'sticky');+ positionTooltip(x, y);+ }+ }++ // Dismiss sticky on click outside+ document.addEventListener('click', (e) => {+ if (!stickyPin) return;+ if (tooltip.contains(e.target)) return; // click inside tooltip+ if (e.target.closest('[data-pin]') || e.target.closest('[data-pin-num]') || e.target.closest('[data-pin-wire]')) return;+ stickyPin = null;+ tooltip.classList.remove('sticky', 'visible');+ clearHighlight();+ });++ wrap.addEventListener('mouseleave', hideTooltip);++ // ── Pin hit zones ──+ function setupPinHitZones() {+ if (!svgEl) return;++ if (hidePinNames) {+ // Discrete components (hidden pin names): compute hit zones from injected labels+ // Covers MOSFETs, resistors, etc. — standard KiCad discrete symbols hide pin names+ // but may leave pin numbers visible, so we check hidePinNames only+ setupDiscreteHitZones();+ } else {+ // Standard IC: use hidden text elements for hit detection+ setupTextHitZones();+ }+ }++ function setupTextHitZones() {+ // IC symbols: two hit zones per pin, derived from actual rendered text bounds (getBBox):+ // 1. INSIDE body — covers pin name text (bbox from stroked-text group)+ // 2. OUTSIDE body — covers pin wire + number area (bbox or coordinate-based)+ if (!svgOffset) return;+ const ox = svgOffset.x, oy = svgOffset.y;+ const pitch = 2.54;+ const zoneH = pitch * 0.95;+ const wireExt = 1.5;+ const pad = 0.3; // padding around text bbox++ // Build lookup: text content → stroked-text group bbox+ const textBBoxMap = {};+ svgEl.querySelectorAll('g.stroked-text').forEach(g => {+ const desc = g.querySelector('desc');+ if (desc) {+ try {+ const bbox = g.getBBox();+ if (bbox.width > 0 && bbox.height > 0) {+ const key = desc.textContent.trim();+ if (!textBBoxMap[key]) textBBoxMap[key] = [];+ textBBoxMap[key].push(bbox);+ }+ } catch (e) {}+ }+ });++ function addHitZone(hx, hy, hw, hh, pin) {+ const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');+ rect.setAttribute('x', hx);+ rect.setAttribute('y', hy);+ rect.setAttribute('width', hw);+ rect.setAttribute('height', hh);+ rect.setAttribute('class', 'pin-hit-zone');+ rect.setAttribute('data-pin', pin.name);+ rect.setAttribute('rx', '0.3');+ svgEl.appendChild(rect);+ rect.addEventListener('mouseenter', (ev) => showTooltip(ev.clientX, ev.clientY, pin));+ rect.addEventListener('mousemove', (ev) => { if (!stickyPin) positionTooltip(ev.clientX, ev.clientY); });+ rect.addEventListener('mouseleave', hideTooltip);+ rect.addEventListener('click', (ev) => { ev.stopPropagation(); toggleSticky(pin, ev.clientX, ev.clientY); });+ }++ for (const pin of pins) {+ const tipSvgX = ox + pin.x;+ const tipSvgY = oy - pin.y;+ const wireLen = pin.length || 2.54;+ const isHoriz = (pin.angle === 0 || pin.angle === 180);++ // Pin name hitbox: use actual text bbox if available+ const nameBBoxes = textBBoxMap[pin.name];+ if (nameBBoxes && nameBBoxes.length > 0) {+ // Pick the bbox closest to this pin's body-edge position+ const bodyEdgeX = isHoriz+ ? (pin.angle === 0 ? tipSvgX + wireLen : tipSvgX - wireLen)+ : tipSvgX;+ const bodyEdgeY = isHoriz+ ? tipSvgY+ : (pin.angle === 90 ? tipSvgY - wireLen : tipSvgY + wireLen);+ let best = nameBBoxes[0];+ let bestDist = Infinity;+ for (const bb of nameBBoxes) {+ const cx = bb.x + bb.width / 2, cy = bb.y + bb.height / 2;+ const d = Math.hypot(cx - bodyEdgeX, cy - bodyEdgeY);+ if (d < bestDist) { bestDist = d; best = bb; }+ }+ addHitZone(best.x - pad, best.y - pad, best.width + pad * 2, best.height + pad * 2, pin);+ } else {+ // Fallback: fixed-width zone inside body+ const bodyDepth = 8;+ if (isHoriz) {+ const cy = tipSvgY - zoneH / 2;+ if (pin.angle === 0) addHitZone(tipSvgX + wireLen, cy, bodyDepth, zoneH, pin);+ else addHitZone(tipSvgX - wireLen - bodyDepth, cy, bodyDepth, zoneH, pin);+ } else {+ const cx = tipSvgX - zoneH / 2;+ if (pin.angle === 90) addHitZone(cx, tipSvgY - wireLen - bodyDepth, zoneH, bodyDepth, pin);+ else addHitZone(cx, tipSvgY + wireLen, zoneH, bodyDepth, pin);+ }+ }++ // Pin number hitbox: use actual text bbox if available+ const numBBoxes = textBBoxMap[pin.number];+ if (numBBoxes && numBBoxes.length > 0) {+ const tipDist = (bb) => Math.hypot(bb.x + bb.width / 2 - tipSvgX, bb.y + bb.height / 2 - tipSvgY);+ let best = numBBoxes[0], bestD = tipDist(best);+ for (const bb of numBBoxes) { const d = tipDist(bb); if (d < bestD) { bestD = d; best = bb; } }+ addHitZone(best.x - pad, best.y - pad, best.width + pad * 2, best.height + pad * 2, pin);+ } else {+ // Fallback: wire area+ if (isHoriz) {+ const cy = tipSvgY - zoneH / 2;+ if (pin.angle === 0) addHitZone(tipSvgX - wireExt, cy, wireLen + wireExt, zoneH, pin);+ else addHitZone(tipSvgX, cy, wireLen + wireExt, zoneH, pin);+ } else {+ const cx = tipSvgX - zoneH / 2;+ if (pin.angle === 90) addHitZone(cx, tipSvgY, zoneH, wireLen + wireExt, pin);+ else addHitZone(cx, tipSvgY - wireExt, zoneH, wireLen + wireExt, pin);+ }+ }+ }+ }++ function setupDiscreteHitZones() {+ // For discrete components (hidden pin names/numbers), create hit zones+ // using getBBox() on injected text labels for precise alignment.+ // Falls back to coordinate-based zones if text elements aren't found.+ if (!svgOffset) return;+ const ox = svgOffset.x, oy = svgOffset.y;+ const pad = 0.5; // generous padding for easy hover on small labels++ // Build lookup: text content → getBBox for injected labels+ const labelBBoxMap = {};+ const allTextEls = svgEl.querySelectorAll('text.pin-label, text.pin-num-label');+ allTextEls.forEach(t => {+ try {+ const bbox = t.getBBox();+ if (bbox.width > 0 && bbox.height > 0) {+ const key = t.textContent.trim();+ if (!labelBBoxMap[key]) labelBBoxMap[key] = [];+ labelBBoxMap[key].push(bbox);+ }+ } catch (e) {}+ });++ for (const pin of pins) {+ const tipSvgX = ox + pin.x;+ const tipSvgY = oy - pin.y;+ const wireLen = pin.length || 2.54;++ // Collect bounding boxes of this pin's name and number labels+ const bboxes = [];++ // Find name label bbox (closest to pin tip)+ const nameBBs = labelBBoxMap[pin.name];+ if (nameBBs) {+ let best = nameBBs[0], bestD = Infinity;+ for (const bb of nameBBs) {+ const d = Math.hypot(bb.x + bb.width / 2 - tipSvgX, bb.y + bb.height / 2 - tipSvgY);+ if (d < bestD) { bestD = d; best = bb; }+ }+ bboxes.push(best);+ }++ // Find number label bbox (closest to pin tip)+ const numBBs = labelBBoxMap[pin.number];+ if (numBBs) {+ let best = numBBs[0], bestD = Infinity;+ for (const bb of numBBs) {+ const d = Math.hypot(bb.x + bb.width / 2 - tipSvgX, bb.y + bb.height / 2 - tipSvgY);+ if (d < bestD) { bestD = d; best = bb; }+ }+ bboxes.push(best);+ }++ if (bboxes.length > 0) {+ // Union text bboxes into a single hit zone (just covers labels near the tip)+ let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;+ for (const bb of bboxes) {+ minX = Math.min(minX, bb.x);+ minY = Math.min(minY, bb.y);+ maxX = Math.max(maxX, bb.x + bb.width);+ maxY = Math.max(maxY, bb.y + bb.height);+ }++ const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');+ rect.setAttribute('x', minX - pad);+ rect.setAttribute('y', minY - pad);+ rect.setAttribute('width', maxX - minX + pad * 2);+ rect.setAttribute('height', maxY - minY + pad * 2);+ rect.setAttribute('class', 'pin-hit-zone');+ rect.setAttribute('data-pin-wire', pin.name);+ rect.setAttribute('rx', '0.3');+ svgEl.appendChild(rect);++ rect.addEventListener('mouseenter', (ev) => showTooltip(ev.clientX, ev.clientY, pin));+ rect.addEventListener('mousemove', (ev) => { if (!stickyPin) positionTooltip(ev.clientX, ev.clientY); });+ rect.addEventListener('mouseleave', hideTooltip);+ rect.addEventListener('click', (ev) => { ev.stopPropagation(); toggleSticky(pin, ev.clientX, ev.clientY); });+ } else {+ // Fallback: coordinate-based zone around wire area+ const perpHalf = 1.5;+ let hitX, hitY, hitW, hitH;+ switch (pin.angle) {+ case 0: hitX = tipSvgX - 1; hitY = tipSvgY - perpHalf; hitW = wireLen + 1; hitH = perpHalf * 2; break;+ case 180: hitX = tipSvgX - wireLen; hitY = tipSvgY - perpHalf; hitW = wireLen + 1; hitH = perpHalf * 2; break;+ case 270: hitX = tipSvgX - perpHalf; hitY = tipSvgY; hitW = perpHalf * 2; hitH = wireLen + 1; break;+ case 90: hitX = tipSvgX - perpHalf; hitY = tipSvgY - wireLen; hitW = perpHalf * 2; hitH = wireLen + 1; break;+ default: hitX = tipSvgX - 2; hitY = tipSvgY - 2; hitW = 4; hitH = 4;+ }+ const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');+ rect.setAttribute('x', hitX);+ rect.setAttribute('y', hitY);+ rect.setAttribute('width', hitW);+ rect.setAttribute('height', hitH);+ rect.setAttribute('class', 'pin-hit-zone');+ rect.setAttribute('data-pin-wire', pin.name);+ rect.setAttribute('rx', '0.3');+ svgEl.appendChild(rect);+ rect.addEventListener('mouseenter', (ev) => showTooltip(ev.clientX, ev.clientY, pin));+ rect.addEventListener('mousemove', (ev) => { if (!stickyPin) positionTooltip(ev.clientX, ev.clientY); });+ rect.addEventListener('mouseleave', hideTooltip);+ rect.addEventListener('click', (ev) => { ev.stopPropagation(); toggleSticky(pin, ev.clientX, ev.clientY); });+ }+ }+ }++ // ── Group label hit zones ──+ function setupGroupHitZones() {+ if (!svgEl) return;+ const texts = svgEl.querySelectorAll('text');+ texts.forEach(textEl => {+ const label = textEl.textContent.trim();+ const group = groups.find(g => g.name === label);+ if (!group) return;+ const fSize = parseFloat(textEl.getAttribute('font-size')) || 1;+ if (Math.abs(fSize - 1.016) > 0.1) return;++ const x = parseFloat(textEl.getAttribute('x')) || 0;+ const y = parseFloat(textEl.getAttribute('y')) || 0;+ const tLen = parseFloat(textEl.getAttribute('textLength')) || 6;+ const anchor = textEl.getAttribute('text-anchor') || 'start';++ const padX = fSize * 0.4;+ const padY = fSize * 0.15; // tight vertical padding to avoid spilling into pin zones+ let rx, rw = tLen + padX * 2, rh = fSize + padY * 2;+ if (anchor === 'end') rx = x - tLen - padX;+ else if (anchor === 'middle') rx = x - tLen / 2 - padX;+ else rx = x - padX;+ const ry = y - fSize - padY;++ const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');+ rect.setAttribute('x', rx);+ rect.setAttribute('y', ry);+ rect.setAttribute('width', rw);+ rect.setAttribute('height', rh);+ rect.setAttribute('class', 'pin-hit-zone');+ rect.setAttribute('data-group', group.name);+ rect.setAttribute('rx', '0.3');+ svgEl.appendChild(rect);++ rect.addEventListener('mouseenter', (ev) => showGroupTooltip(ev.clientX, ev.clientY, group));+ rect.addEventListener('mousemove', (ev) => { if (!stickyPin) positionTooltip(ev.clientX, ev.clientY); });+ rect.addEventListener('mouseleave', hideTooltip);+ });+ }++ // Keyboard shortcuts+ window.addEventListener('keydown', (e) => {+ if (e.key === 'f' || e.key === 'F') zoomFit();+ else if (e.key === '1') zoomReset();+ else if (e.key === '+' || e.key === '=') zoomIn();+ else if (e.key === '-') zoomOut();+ else if (e.key === 'g' || e.key === 'G') toggleGrid();+ else if (e.key === 'Escape') {+ closeRegenPrompt();+ stickyPin = null;+ tooltip.classList.remove('sticky', 'visible');+ clearHighlight();+ }+ });++ // Auto-fit on window/container resize (e.g. iframe becoming visible)+ new ResizeObserver(() => zoomFit()).observe(wrap);++ // Init+ requestAnimationFrame(() => {+ zoomFit();+ setupPinHitZones();+ setupGroupHitZones();+ // Hide hit zones by default (user can toggle with Hits button)+ if (!hitsVisible && svgEl) {+ svgEl.querySelectorAll('.pin-hit-zone').forEach(r => { r.style.visibility = 'hidden'; });+ }+ });++ // Zoom to a named region of the symbol (for AI screenshot verification)+ // Regions: 'top', 'bottom', 'left', 'right', 'fit' (full symbol)+ function zoomToRegion(region) {+ if (!contentBounds) { zoomFit(); return; }+ const ww = wrap.clientWidth, wh = wrap.clientHeight;+ const svgEl = document.querySelector('#canvas svg');+ if (!svgEl) return;+ const vb = svgEl.viewBox.baseVal;+ const svgPxW = svgEl.clientWidth || svgEl.getBoundingClientRect().width;+ const svgPxH = svgEl.clientHeight || svgEl.getBoundingClientRect().height;+ const pxPerUnitX = svgPxW / vb.width;+ const pxPerUnitY = svgPxH / vb.height;++ // Content bounds in SVG user-space+ const cb = contentBounds;+ const cx = cb.x, cy = cb.y, cw = cb.w || cb.width, ch = cb.h || cb.height;+ // Region crop (SVG user-space coordinates)+ let rx, ry, rw, rh;+ const margin = 2; // mm padding+ if (region === 'top') {+ rx = cx - margin; ry = cy - margin; rw = cw + margin * 2; rh = Math.min(ch * 0.12, 50) + margin;+ } else if (region === 'bottom') {+ const cropH = Math.min(ch * 0.12, 50);+ ry = cy + ch - cropH - margin; rx = cx - margin; rw = cw + margin * 2; rh = cropH + margin * 2;+ } else if (region === 'top-left') {+ rx = cx - margin; ry = cy - margin; rw = cw * 0.4 + margin; rh = Math.min(ch * 0.12, 50) + margin;+ } else if (region === 'top-right') {+ rx = cx + cw * 0.6 - margin; ry = cy - margin; rw = cw * 0.4 + margin * 2; rh = Math.min(ch * 0.12, 50) + margin;+ } else if (region === 'bottom-left') {+ const cropH = Math.min(ch * 0.12, 50);+ ry = cy + ch - cropH - margin; rx = cx - margin; rw = cw * 0.4 + margin; rh = cropH + margin * 2;+ } else if (region === 'bottom-right') {+ const cropH = Math.min(ch * 0.12, 50);+ ry = cy + ch - cropH - margin; rx = cx + cw * 0.6 - margin; rw = cw * 0.4 + margin * 2; rh = cropH + margin * 2;+ } else if (region === 'left') {+ rx = cx - margin; ry = cy - margin; rw = cw * 0.35 + margin; rh = ch + margin * 2;+ } else if (region === 'right') {+ rx = cx + cw * 0.65 - margin; ry = cy - margin; rw = cw * 0.35 + margin * 2; rh = ch + margin * 2;+ } else {+ zoomFit(); return;+ }+ // Convert to pixel coords+ const pxX = (rx - vb.x) * pxPerUnitX;+ const pxY = (ry - vb.y) * pxPerUnitY;+ const pxW = rw * pxPerUnitX;+ const pxH = rh * pxPerUnitY;+ // Compute scale to fit region in viewport+ const ns = Math.min(ww / pxW, wh / pxH) * 0.92;+ scale = Math.max(0.1, Math.min(ns, 20));+ panX = ww / 2 - (pxX + pxW / 2) * scale;+ panY = wh / 2 - (pxY + pxH / 2) * scale;+ updateTransform();+ }++ // Screenshot capture handler for Adom Viewer mgmt relay+ // Send SVG data back to parent for rendering (avoids sandbox restrictions on Image loading)+ window.addEventListener('message', (e) => {+ // Zoom-to-region command (from AI via mgmt relay)+ if (e.data?.type === 'sym_zoom_region') {+ zoomToRegion(e.data.region || 'fit');+ return;+ }+ if (e.data?.type === 'mgmt_capture_request') {+ const reqId = e.data._reqId;+ try {+ const svg = document.querySelector('#canvas svg');+ if (!svg) { window.parent.postMessage({ type: 'mgmt_canvas_capture', _reqId: reqId, data: null }, '*'); return; }+ const clone = svg.cloneNode(true);+ // Inline pin-hit-zone styles so they're visible in standalone SVG+ clone.querySelectorAll('.pin-hit-zone').forEach(el => {+ el.setAttribute('fill', 'rgba(0,230,220,0.06)');+ el.setAttribute('stroke', '#00e6dc');+ el.setAttribute('stroke-width', '0.12');+ el.setAttribute('stroke-dasharray', '0.3,0.2');+ el.setAttribute('stroke-opacity', '0.5');+ el.setAttribute('rx', '0.3');+ });+ const vb = svg.getAttribute('viewBox');+ const parts = vb ? vb.split(/\s+/).map(Number) : [0, 0, 100, 100];+ let vbX = parts[0], vbY = parts[1], vbW = parts[2] || 100, vbH = parts[3] || 100;++ // Crop to visible viewport when zoomed/panned+ const svgPxW = svg.clientWidth || svg.getBoundingClientRect().width;+ const svgPxH = svg.clientHeight || svg.getBoundingClientRect().height;+ const ww = wrap.clientWidth, wh = wrap.clientHeight;+ if (scale !== 1 || panX !== (ww - svgPxW) / 2 || panY !== (wh - svgPxH) / 2) {+ const pxPerUnitX = svgPxW / vbW;+ const pxPerUnitY = svgPxH / vbH;+ // Visible viewport in pixel space of the SVG element+ const visLeft = -panX / scale;+ const visTop = -panY / scale;+ const visW = ww / scale;+ const visH = wh / scale;+ // Convert to SVG user-space+ vbX = vbX + visLeft / pxPerUnitX;+ vbY = vbY + visTop / pxPerUnitY;+ vbW = visW / pxPerUnitX;+ vbH = visH / pxPerUnitY;+ }++ clone.setAttribute('viewBox', vbX + ' ' + vbY + ' ' + vbW + ' ' + vbH);+ clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg');+ const xml = new XMLSerializer().serializeToString(clone);+ // Send SVG XML + dimensions to parent for canvas rendering+ window.parent.postMessage({+ type: 'mgmt_canvas_capture',+ _reqId: reqId,+ svgXml: xml,+ svgWidth: vbW,+ svgHeight: vbH,+ bgColor: '#0d1117'+ }, '*');+ } catch (err) {+ window.parent.postMessage({ type: 'mgmt_canvas_capture', _reqId: reqId, data: null }, '*');+ }+ }+ });+</script>+</body>+</html>
IN-S42ATG.htmladded+1259@@ -0,0 +1,1259 @@+<!DOCTYPE html>+<html lang="en">+<head>+<meta charset="UTF-8">+<meta name="viewport" content="width=device-width, initial-scale=1.0">+<title>IN-S42ATG — Component Characterization</title>+<style>+ @font-face { font-family: 'Familjen Grotesk'; src: url('https://adom.inc/fonts/familjen-grotesk/familjen-grotesk-latin-700-normal.woff2') format('woff2'); font-weight: 700; }+ @font-face { font-family: 'Familjen Grotesk'; src: url('https://adom.inc/fonts/familjen-grotesk/familjen-grotesk-latin-500-normal.woff2') format('woff2'); font-weight: 500; }+ @font-face { font-family: 'Satoshi'; src: url('https://adom.inc/fonts/satoshi/satoshi-400-normal.woff2') format('woff2'); font-weight: 400; }+ @font-face { font-family: 'Satoshi'; src: url('https://adom.inc/fonts/satoshi/satoshi-500-normal.woff2') format('woff2'); font-weight: 500; }+ @font-face { font-family: 'JetBrains Mono'; src: url('https://fonts.gstatic.com/s/jetbrainsmono/v24/tDbv2o-flEEny0FZhsfKu5WU4zr3E_BX0PnT8RD8yKwBNntkaToggR7BYRbKPx3cwhsk.woff2') format('woff2'); font-weight: 400; }++ :root {+ --bg: #0d1117; --surface: #161b22; --elevated: #1c2128; --border: #30363d; --border-muted: #21262d;+ --text: #e6edf3; --text-muted: #8b949e; --text-dim: #484f58;+ --accent: #00b8b0; --accent-bright: #00e6dc; --accent-dim: rgba(0,184,176,0.12); --accent-border: rgba(0,184,176,0.25);+ --green: #3fb950; --orange: #d29922; --red: #f85149; --purple: #8C6BF7; --blue: #58a6ff;+ --led-color: #32CD32; --led-color-dim: #32CD321e; --led-color-border: #32CD3259;+ }+ * { margin: 0; padding: 0; box-sizing: border-box; }+ body { font-family: 'Satoshi', sans-serif; background: var(--bg); color: var(--text); font-size: 13px; line-height: 1.6; overflow-y: auto; }+ h1,h2,h3 { font-family: 'Familjen Grotesk', sans-serif; font-weight: 700; }+ code { font-family: 'JetBrains Mono', monospace; font-size: 12px; }+ a { color: var(--accent); text-decoration: none; }+ a:hover { color: var(--accent-bright); text-decoration: underline; }++ .header { background: var(--surface); border-bottom: 1px solid var(--border-muted); padding: 20px 24px; }+ .header-top { display: flex; align-items: center; gap: 12px; margin-bottom: 4px; }+ .header .brand { color: var(--accent); font-family: 'Familjen Grotesk', sans-serif; font-size: 12px; font-weight: 600; }+ .header .vsep { width: 1px; height: 16px; background: var(--border); }+ .header .crumb { color: var(--text-dim); font-size: 12px; }+ .header h1 { font-size: 22px; margin-bottom: 2px; }+ .header h1 .val { color: var(--led-color); }+ .header .subtitle { color: var(--text-muted); font-size: 13px; }+ .header .tags { display: flex; gap: 6px; margin-top: 10px; flex-wrap: wrap; }+ .tag { display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px; border-radius: 12px; font-size: 11px; font-weight: 500; }+ .tag.pkg { background: rgba(0,184,176,0.12); color: var(--accent); }+ .tag.mfr { background: rgba(88,166,255,0.12); color: var(--blue); }+ .tag.series { background: rgba(140,107,247,0.12); color: var(--purple); }+ .tag.rohs { background: rgba(63,185,80,0.12); color: var(--green); }+ .tag.app { background: var(--led-color-dim); color: var(--led-color); }++ .container { max-width: 1100px; margin: 0 auto; padding: 24px; }+ .grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }+ .grid-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }+ @media (max-width: 800px) { .grid-2, .grid-3 { grid-template-columns: 1fr; } }++ .section { margin-bottom: 28px; }+ .section-title { font-size: 14px; color: var(--text); margin-bottom: 12px; padding-bottom: 6px; border-bottom: 1px solid var(--border-muted); display: flex; align-items: center; gap: 8px; }+ .section-title .icon { color: var(--accent); font-size: 16px; }++ .card { background: var(--surface); border: 1px solid var(--border-muted); border-radius: 8px; padding: 16px; }+ .card:hover { border-color: var(--accent-border); }++ .spec-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; }+ .spec-card { background: var(--surface); border: 1px solid var(--border-muted); border-radius: 8px; padding: 12px 14px; text-align: center; }+ .spec-card .sc-label { font-size: 10px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text-dim); margin-bottom: 4px; }+ .spec-card .sc-value { font-size: 22px; font-weight: 700; font-family: 'Familjen Grotesk', sans-serif; }+ .spec-card .sc-detail { font-size: 11px; color: var(--text-muted); margin-top: 2px; }+ .spec-card.highlight { border-color: var(--led-color-border); background: linear-gradient(180deg, #32CD320f, var(--surface)); }+ .spec-card.highlight .sc-value { color: var(--led-color); }++ .detail-table { width: 100%; border-collapse: collapse; }+ .detail-table tr { border-bottom: 1px solid var(--border-muted); }+ .detail-table tr:last-child { border-bottom: none; }+ .detail-table td { padding: 8px 0; }+ .detail-table td:first-child { color: var(--text-muted); font-size: 12px; width: 45%; }+ .detail-table td:last-child { font-family: 'JetBrains Mono', monospace; font-size: 13px; text-align: right; }++ .chart-wrap { background: var(--surface); border: 1px solid var(--border-muted); border-radius: 8px; padding: 16px; }+ .chart-wrap h3 { font-size: 13px; color: var(--text); margin-bottom: 12px; }+ .chart-wrap .chart-note { font-size: 11px; color: var(--text-dim); margin-top: 8px; }+ svg text { font-family: 'JetBrains Mono', monospace; }++ .pkg-drawing { display: flex; align-items: center; justify-content: center; padding: 20px; }++ .env-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }+ @media (max-width: 700px) { .env-grid { grid-template-columns: 1fr; } }+ .env-card { background: var(--surface); border: 1px solid var(--border-muted); border-radius: 8px; padding: 12px 14px; }+ .env-card .env-name { font-size: 12px; font-weight: 600; margin-bottom: 4px; }+ .env-card .env-spec { font-size: 11px; color: var(--text-muted); }+ .env-card .env-detail { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--text); margin-top: 4px; }++ .vendor-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }+ @media (max-width: 700px) { .vendor-cards { grid-template-columns: 1fr; } }+ .vendor-card { background: var(--surface); border: 1px solid var(--border-muted); border-radius: 8px; padding: 14px; }+ .vendor-card .vc-name { font-size: 12px; font-weight: 600; margin-bottom: 6px; }+ .vendor-card .vc-name.mouser { color: var(--blue); }+ .vendor-card .vc-name.digikey { color: var(--red); }+ .vendor-card .vc-name.jlcpcb { color: var(--green); }+ .vendor-card .vc-price { font-size: 20px; font-weight: 700; font-family: 'Familjen Grotesk', sans-serif; }+ .vendor-card .vc-detail { font-size: 11px; color: var(--text-muted); margin-top: 4px; }+ .vendor-card .vc-link { display: inline-block; margin-top: 8px; font-size: 11px; color: var(--accent); }+ .vendor-card.recommended { border-color: var(--accent-border); }+ .vendor-card.recommended::before { content: 'RECOMMENDED'; display: block; font-size: 9px; letter-spacing: 1px; color: var(--accent); margin-bottom: 6px; font-weight: 600; }++ .copy-btn { background: none; border: 1px solid var(--border); color: var(--text-muted); border-radius: 4px; padding: 2px 6px; font-size: 13px; cursor: pointer; font-family: 'JetBrains Mono', monospace; vertical-align: middle; transition: border-color 0.15s, color 0.15s; }+ .copy-btn:hover { border-color: var(--accent); color: var(--accent); }++ .dl-btn { display: inline-block; margin-top: 10px; padding: 6px 14px; background: var(--accent-dim); border: 1px solid var(--accent-border); border-radius: 6px; color: var(--accent); font-size: 11px; font-weight: 500; font-family: 'Satoshi', sans-serif; text-decoration: none; transition: background 0.15s, border-color 0.15s; }+ .dl-btn:hover { background: rgba(0,184,176,0.2); border-color: var(--accent); text-decoration: none; color: var(--accent-bright); }++ .open-full-banner { display: flex; align-items: center; justify-content: center; padding: 12px 24px; background: linear-gradient(90deg, rgba(0,184,176,0.12), rgba(0,184,176,0.06)); border-bottom: 1px solid var(--accent-border); }+ .open-full-btn { display: inline-flex; align-items: center; gap: 8px; padding: 8px 20px; background: var(--accent); color: var(--bg); font-family: 'Familjen Grotesk', sans-serif; font-size: 13px; font-weight: 600; border-radius: 6px; text-decoration: none; transition: background 0.15s; cursor: pointer; border: none; }+ .open-full-btn:hover { background: var(--accent-bright); text-decoration: none; color: var(--bg); }++ .source { text-align: center; color: var(--text-dim); font-size: 11px; padding: 24px 0 12px; border-top: 1px solid var(--border-muted); margin-top: 20px; }++ .color-swatch { border-radius: 8px; padding: 20px; text-align: center; position: relative; overflow: hidden; }+ .color-swatch .swatch-block { width: 100%; height: 80px; border-radius: 6px; margin-bottom: 12px; position: relative; }+ .color-swatch .swatch-label { font-size: 14px; font-weight: 600; font-family: 'Familjen Grotesk', sans-serif; }+ .color-swatch .swatch-detail { font-size: 11px; color: var(--text-muted); margin-top: 4px; }++ .calc-card { background: var(--surface); border: 1px solid var(--led-color-border); border-radius: 8px; padding: 20px; }+ .calc-card h3 { font-size: 14px; color: var(--led-color); margin-bottom: 16px; font-family: 'Familjen Grotesk', sans-serif; }+ .calc-inputs { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 16px; }+ .calc-field label { display: block; font-size: 11px; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px; }+ .calc-field input { width: 100%; background: var(--bg); border: 1px solid var(--border); color: var(--text); border-radius: 6px; padding: 8px 12px; font-family: 'JetBrains Mono', monospace; font-size: 14px; outline: none; transition: border-color 0.15s; }+ .calc-field input:focus { border-color: var(--led-color); }+ .calc-field .unit { font-size: 11px; color: var(--text-dim); margin-top: 2px; }+ .calc-results { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }+ .calc-result { background: var(--bg); border: 1px solid var(--border-muted); border-radius: 6px; padding: 10px 12px; }+ .calc-result .cr-label { font-size: 10px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text-dim); margin-bottom: 2px; }+ .calc-result .cr-value { font-size: 18px; font-weight: 700; font-family: 'Familjen Grotesk', sans-serif; color: var(--led-color); }+ .calc-result .cr-detail { font-size: 11px; color: var(--text-muted); margin-top: 2px; }+ .calc-schematic { margin-top: 16px; text-align: center; }+</style>+</head>+<body>++<div class="open-full-banner" id="fullPageBanner" style="display:none">+ <span style="color:var(--text-muted);font-size:12px;margin-right:8px">Full page:</span>+ <code style="color:var(--accent);font-size:11px;background:var(--elevated);padding:4px 8px;border-radius:4px;user-select:all">https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s42atg/IN-S42ATG.html</code>+ <button class="open-full-btn" id="copyFullUrl" style="margin-left:8px">Copy Link</button>+</div>+<script>+if(window.self!==window.top){document.getElementById('fullPageBanner').style.display='flex'}+document.getElementById('copyFullUrl').addEventListener('click',function(){var t=document.createElement('textarea');t.value='https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s42atg/IN-S42ATG.html';document.body.appendChild(t);t.select();document.execCommand('copy');document.body.removeChild(t);this.textContent='Copied!';var b=this;setTimeout(function(){b.textContent='Copy Link'},1500)});+</script>++<div class="header">+ <div class="header-top">+ <div class="brand">Adom</div>+ <div class="vsep"></div>+ <div class="crumb">Components › LEDs › 0402</div>+ </div>+ <h1>IN-S42ATG — <span class="val">Green</span></h1>+ <div class="subtitle">Inolux Corporation · Top View SMD LED · 0402 (1.0 × 0.5mm) · InGaN</div>+ <div class="tags">+ <span class="tag pkg">0402</span>+ <span class="tag mfr">Inolux</span>+ <span class="tag series">IN-S42AT</span>+ <span class="tag rohs">RoHS</span>+ <span class="tag app">Green LED</span>+ </div>+</div>++<div class="container">++ <!-- Key Specs -->+ <div class="section">+ <div class="spec-cards">+ <div class="spec-card highlight">+ <div class="sc-label">Wavelength</div>+ <div class="sc-value">525nm</div>+ <div class="sc-detail">523nm peak</div>+ </div>+ <div class="spec-card">+ <div class="sc-label">Luminous Intensity</div>+ <div class="sc-value">450mcd</div>+ <div class="sc-detail">@ 20mA</div>+ </div>+ <div class="spec-card">+ <div class="sc-label">Forward Voltage</div>+ <div class="sc-value">3.3V</div>+ <div class="sc-detail">max 4.0V</div>+ </div>+ <div class="spec-card">+ <div class="sc-label">Forward Current</div>+ <div class="sc-value">25mA</div>+ <div class="sc-detail">20mA typical</div>+ </div>+ <div class="spec-card">+ <div class="sc-label">Viewing Angle</div>+ <div class="sc-value">130°</div>+ <div class="sc-detail">2θ½</div>+ </div>+ <div class="spec-card">+ <div class="sc-label">Power Dissipation</div>+ <div class="sc-value">100mW</div>+ <div class="sc-detail">max rated</div>+ </div>+ </div>+ </div>++ <div class="grid-2">+ <!-- Left column -->+ <div>+ <!-- Electrical Characteristics -->+ <div class="section">+ <h2 class="section-title">Electrical Characteristics</h2>+ <div class="card">+ <table class="detail-table">+ <tr><td>Forward Voltage (typ)</td><td>3.3V @ 20mA</td></tr>+ <tr><td>Forward Voltage (max)</td><td>4.0V @ 20mA</td></tr>+ <tr><td>Reverse Voltage (max)</td><td>5V</td></tr>+ <tr><td>Forward Current (max)</td><td>25mA</td></tr>+ <tr><td>Peak Forward Current</td><td>100mA (1/10, 0.1ms)</td></tr>+ <tr><td>Power Dissipation</td><td>100mW</td></tr>+ <tr><td>Dominant Wavelength</td><td>525nm</td></tr>+ <tr><td>Peak Wavelength</td><td>523nm</td></tr>+ <tr><td>Luminous Intensity</td><td>450 mcd @ 20mA</td></tr>+ <tr><td>Viewing Angle (2θ½)</td><td>130°</td></tr>+ <tr><td>Material</td><td>InGaN</td></tr>+ <tr><td>Lens Type</td><td>Clear</td></tr>+ </table>+ </div>+ </div>++ <!-- Operating Conditions -->+ <div class="section">+ <h2 class="section-title">Operating Conditions</h2>+ <div class="card">+ <table class="detail-table">+ <tr><td>Operating Temp</td><td>−30°C to +80°C</td></tr>+ <tr><td>Storage Temp</td><td>−40°C to +85°C</td></tr>+ <tr><td>ESD Sensitivity</td><td>InGaN — ESD precautions required</td></tr>+ <tr><td>Polarity</td><td>Cathode marked on package</td></tr>+ </table>+ <div style="margin-top:10px;padding:8px 12px;background:rgba(248,81,73,0.08);border:1px solid rgba(248,81,73,0.2);border-radius:6px;font-size:11px;color:var(--red)">+ ⚠ ESD Sensitive Device — InGaN LEDs require proper ESD precautions during handling and assembly. Use grounded wrist straps and ESD-safe workstations.+ </div>+ </div>+ </div>+ </div>++ <!-- Right column -->+ <div>+ <!-- Package Drawing -->+ <div class="section">+ <h2 class="section-title">Package & Dimensions</h2>+ <div class="card">+ <div class="pkg-drawing">+ <svg width="100%" height="200" viewBox="0 0 500 200">+ <!-- Top view -->+ <text x="120" y="14" fill="#8b949e" font-size="10" text-anchor="middle">Top View</text>+ <rect x="55" y="24" width="130" height="65" rx="2" fill="#1c2128" stroke="#30363d" stroke-width="1.5"/>+ <rect x="55" y="24" width="25" height="65" rx="1" fill="#32CD3226" stroke="#32CD32" stroke-width="1"/>+ <rect x="160" y="24" width="25" height="65" rx="1" fill="#32CD3226" stroke="#32CD32" stroke-width="1"/>+ <line x1="155" y1="28" x2="155" y2="85" stroke="#32CD32" stroke-width="1.5" stroke-dasharray="3,2"/>+ <rect x="92" y="38" width="36" height="37" rx="1" fill="#32CD3240" stroke="#32CD3280" stroke-width="0.8"/>+ <path d="M110,47 Q125,35 135,47" stroke="#32CD3299" stroke-width="0.6" fill="none"/>+ <text x="168" y="18" fill="#32CD32" font-size="9" text-anchor="middle">K (cathode)</text>+ <text x="68" y="18" fill="#8b949e" font-size="9" text-anchor="middle">A</text>++ <line x1="55" y1="102" x2="185" y2="102" stroke="#484f58" stroke-width="0.5"/>+ <line x1="55" y1="98" x2="55" y2="106" stroke="#484f58" stroke-width="0.5"/>+ <line x1="185" y1="98" x2="185" y2="106" stroke="#484f58" stroke-width="0.5"/>+ <text x="120" y="118" fill="#e6edf3" font-size="10" text-anchor="middle">1.0 ± 0.1</text>++ <line x1="195" y1="24" x2="195" y2="89" stroke="#484f58" stroke-width="0.5"/>+ <line x1="191" y1="24" x2="199" y2="24" stroke="#484f58" stroke-width="0.5"/>+ <line x1="191" y1="89" x2="199" y2="89" stroke="#484f58" stroke-width="0.5"/>+ <text x="215" y="60" fill="#e6edf3" font-size="10">0.5 ± 0.1</text>++ <!-- Side view -->+ <text x="380" y="14" fill="#8b949e" font-size="10" text-anchor="middle">Side View</text>+ <rect x="315" y="40" width="130" height="38" rx="2" fill="#1c2128" stroke="#30363d" stroke-width="1.5"/>+ <path d="M320,40 Q380,30 445,40" stroke="#32CD3280" stroke-width="1.5" fill="#32CD3214"/>+ <rect x="315" y="40" width="20" height="38" rx="1" fill="#32CD3226" stroke="#32CD32" stroke-width="1"/>+ <rect x="425" y="40" width="20" height="38" rx="1" fill="#32CD3226" stroke="#32CD32" stroke-width="1"/>+ <line x1="455" y1="30" x2="455" y2="78" stroke="#484f58" stroke-width="0.5"/>+ <line x1="451" y1="30" x2="459" y2="30" stroke="#484f58" stroke-width="0.5"/>+ <line x1="451" y1="78" x2="459" y2="78" stroke="#484f58" stroke-width="0.5"/>+ <text x="465" y="58" fill="#e6edf3" font-size="10">0.45 ± 0.1</text>++ <text x="120" y="145" fill="#8b949e" font-size="10" text-anchor="middle">0402 (1005 metric)</text>+ <text x="380" y="100" fill="#8b949e" font-size="10" text-anchor="middle">Clear lens · InGaN</text>++ <rect x="55" y="158" width="390" height="28" rx="4" fill="#32CD320f" stroke="#32CD3233" stroke-width="0.5"/>+ <text x="250" y="176" fill="#32CD32" font-size="10" text-anchor="middle">⚠ Polarized — cathode mark on package indicates negative terminal</text>+ </svg>+ </div>+ </div>+ </div>++ <!-- Land Pattern -->+ <div class="section">+ <h2 class="section-title">Recommended Land Pattern</h2>+ <div class="card">+ <table class="detail-table">+ <tr><td>Pad Width</td><td>0.4 ± 0.1mm</td></tr>+ <tr><td>Pad Height</td><td>0.6 ± 0.1mm</td></tr>+ <tr><td>Pad Spacing (center-to-center)</td><td>0.6 ± 0.1mm</td></tr>+ <tr><td>Polarity</td><td>Cathode marked on PCB</td></tr>+ </table>+ </div>+ </div>+ </div>+ </div>++ <!-- Color Swatch -->+ <div class="section">+ <h2 class="section-title">Emission Color</h2>+ <div class="card color-swatch">+ <div class="swatch-block" style="background: linear-gradient(135deg, #32CD32, #00CC00); box-shadow: 0 4px 24px #32CD3250; display:flex; align-items:center; justify-content:center;">+ <span style="font-size:28px;font-weight:700;font-family:'Familjen Grotesk',sans-serif;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,0.5)">Green</span>+ </div>+ <div class="swatch-label" style="color:#32CD32">525nm Dominant Wavelength</div>+ <div class="swatch-detail">Peak wavelength 523nm · InGaN semiconductor · CSS approximation: #32CD32</div>+ </div>+ </div>++ <!-- Spectral Distribution -->+ <div class="section">+ <h2 class="section-title">Spectral Distribution</h2>+ <div class="chart-wrap">+ <h3>Emission Spectrum — Relative Intensity vs. Wavelength</h3>+ <svg id="spectral-chart" width="100%" height="280" viewBox="0 0 700 280">+ <rect x="60" y="20" width="600" height="200" fill="#0d1117" rx="4"/>+ <line x1="60" y1="220" x2="660" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="20" x2="60" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="170" x2="660" y2="170" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="120" x2="660" y2="120" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="70" x2="660" y2="70" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="20" x2="660" y2="20" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="180" y1="20" x2="180" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="300" y1="20" x2="300" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="420" y1="20" x2="420" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="540" y1="20" x2="540" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>++ <path d="M60,220 L60,191 L63,186 L66,181 L69,175 L72,169 L75,162 L78,154 L81,146 L84,138 L87,129 L90,120 L93,111 L96,101 L99,92 L102,82 L105,73 L108,64 L111,56 L114,48 L117,41 L120,35 L123,30 L126,25 L129,22 L132,21 L135,20 L138,21 L141,22 L144,25 L147,30 L150,35 L153,41 L156,48 L159,56 L162,64 L165,73 L168,82 L171,92 L174,101 L177,111 L180,120 L183,129 L186,138 L189,146 L192,154 L195,162 L198,169 L201,175 L204,181 L207,186 L210,191 L213,195 L216,199 L219,202 L222,205 L225,208 L228,210 L231,211 L234,213 L237,214 L240,215 L243,216 L246,217 L249,218 L252,218 L255,219 L258,219 L261,219 L264,219 L660,220 L660,220 Z" fill="url(#INS42ATGGrad)" opacity="0.3"/>+ <defs>+ <linearGradient id="INS42ATGGrad" x1="0" y1="0" x2="0" y2="1">+ <stop offset="0%" stop-color="#32CD32" stop-opacity="0.6"/>+ <stop offset="100%" stop-color="#32CD32" stop-opacity="0.05"/>+ </linearGradient>+ </defs>+ <path d="M60,220 L60,191 L63,186 L66,181 L69,175 L72,169 L75,162 L78,154 L81,146 L84,138 L87,129 L90,120 L93,111 L96,101 L99,92 L102,82 L105,73 L108,64 L111,56 L114,48 L117,41 L120,35 L123,30 L126,25 L129,22 L132,21 L135,20 L138,21 L141,22 L144,25 L147,30 L150,35 L153,41 L156,48 L159,56 L162,64 L165,73 L168,82 L171,92 L174,101 L177,111 L180,120 L183,129 L186,138 L189,146 L192,154 L195,162 L198,169 L201,175 L204,181 L207,186 L210,191 L213,195 L216,199 L219,202 L222,205 L225,208 L228,210 L231,211 L234,213 L237,214 L240,215 L243,216 L246,217 L249,218 L252,218 L255,219 L258,219 L261,219 L264,219 L660,220 L660,220" stroke="#32CD32" stroke-width="2.5" fill="none"/>+++ <!-- Peak annotation -->+ <circle cx="135" cy="22" r="4" fill="#32CD32" opacity="0.9"/>+ <line x1="135" y1="22" x2="135" y2="220" stroke="#32CD32" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.4"/>+ <text x="135" y="238" fill="#32CD32" font-size="10" text-anchor="middle">525nm</text>++ <!-- FWHM indicator -->+ <line x1="90" y1="120" x2="180" y2="120" stroke="#32CD32" stroke-width="1" stroke-dasharray="4,2" opacity="0.6"/>+ <text x="204" y="116" fill="#8b949e" font-size="9">FWHM ~30nm</text>+++ <text x="55" y="224" fill="#484f58" font-size="9" text-anchor="end">0%</text>+ <text x="55" y="174" fill="#484f58" font-size="9" text-anchor="end">25%</text>+ <text x="55" y="124" fill="#484f58" font-size="9" text-anchor="end">50%</text>+ <text x="55" y="74" fill="#484f58" font-size="9" text-anchor="end">75%</text>+ <text x="55" y="24" fill="#484f58" font-size="9" text-anchor="end">100%</text>+ <text x="12" y="124" fill="#484f58" font-size="9" text-anchor="middle" transform="rotate(-90,12,124)">Relative Intensity</text>++ <text x="60" y="255" fill="#484f58" font-size="9" text-anchor="middle">500</text>+ <text x="180" y="255" fill="#484f58" font-size="9" text-anchor="middle">540</text>+ <text x="300" y="255" fill="#484f58" font-size="9" text-anchor="middle">580</text>+ <text x="420" y="255" fill="#484f58" font-size="9" text-anchor="middle">620</text>+ <text x="540" y="255" fill="#484f58" font-size="9" text-anchor="middle">660</text>+ <text x="660" y="255" fill="#484f58" font-size="9" text-anchor="middle">700</text>+ <text x="360" y="272" fill="#484f58" font-size="9" text-anchor="middle">Wavelength (nm)</text>+ </svg>+ <div class="chart-note">Green emission centered at 525nm dominant wavelength (523nm peak). The narrow spectral width (~30nm FWHM) indicates a well-defined color output typical of InGaN LEDs.</div>+ </div>+ </div>++ <!-- IV Curve -->+ <div class="section">+ <h2 class="section-title">Forward Current vs. Forward Voltage</h2>+ <div class="chart-wrap">+ <h3>IV Characteristic — the essential curve for circuit design</h3>+ <svg id="iv-chart" width="100%" height="280" viewBox="0 0 700 280">+ <rect x="60" y="20" width="600" height="200" fill="#0d1117" rx="4"/>+ <line x1="60" y1="220" x2="660" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="20" x2="60" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="170" x2="660" y2="170" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="120" x2="660" y2="120" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="70" x2="660" y2="70" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="20" x2="660" y2="20" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="180" y1="20" x2="180" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="300" y1="20" x2="300" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="420" y1="20" x2="420" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="540" y1="20" x2="540" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+++ <path d="M60,220 L228,220 L312,220 L362,219 L379,218 L396,216 L411,212 L426,200 L441,180 L456,140 L477,120 L498,100 L519,70 L540,20" stroke="#32CD32" stroke-width="2.5" fill="none"/>+ <path d="M60,220 L228,220 L312,220 L362,219 L379,218 L396,216 L411,212 L426,200 L441,180 L456,140 L477,120 L498,100 L519,70 L540,20 L540,220 L60,220 Z" fill="url(#INS42ATGGrad)" opacity="0.15"/>++ <!-- Operating point -->+ <circle cx="456" cy="140" r="5" fill="#32CD32" opacity="0.9"/>+ <line x1="456" y1="140" x2="456" y2="220" stroke="#32CD32" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>+ <line x1="60" y1="140" x2="456" y2="140" stroke="#32CD32" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>+ <rect x="461" y="126" width="108" height="28" rx="4" fill="#32CD321e"/>+ <text x="515" y="139" fill="#32CD32" font-size="10" text-anchor="middle">Typ: 3.3V, 20mA</text>+ <text x="515" y="149" fill="#8b949e" font-size="8" text-anchor="middle">Operating point</text>++ <!-- Max Vf -->+ <line x1="540" y1="20" x2="540" y2="220" stroke="#f85149" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.5"/>+ <text x="540" y="248" fill="#f85149" font-size="9" text-anchor="middle">4.0V max</text>++ <!-- Max If -->+ <line x1="60" y1="120" x2="660" y2="120" stroke="#f85149" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.3"/>+ <text x="100" y="114" fill="#f85149" font-size="9">25mA max</text>++ <text x="55" y="224" fill="#484f58" font-size="9" text-anchor="end">0</text>+ <text x="55" y="174" fill="#484f58" font-size="9" text-anchor="end">12.5</text>+ <text x="55" y="124" fill="#484f58" font-size="9" text-anchor="end">25</text>+ <text x="55" y="74" fill="#484f58" font-size="9" text-anchor="end">37.5</text>+ <text x="55" y="24" fill="#484f58" font-size="9" text-anchor="end">50</text>+ <text x="12" y="124" fill="#484f58" font-size="9" text-anchor="middle" transform="rotate(-90,12,124)">Forward Current (mA)</text>++ <text x="60" y="255" fill="#484f58" font-size="9" text-anchor="middle">0.0</text>+ <text x="180" y="255" fill="#484f58" font-size="9" text-anchor="middle">1.0</text>+ <text x="300" y="255" fill="#484f58" font-size="9" text-anchor="middle">2.0</text>+ <text x="420" y="255" fill="#484f58" font-size="9" text-anchor="middle">3.0</text>+ <text x="540" y="255" fill="#484f58" font-size="9" text-anchor="middle">4.0</text>+ <text x="660" y="255" fill="#484f58" font-size="9" text-anchor="middle">5.0</text>++ <text x="360" y="272" fill="#484f58" font-size="9" text-anchor="middle">Forward Voltage (V)</text>+ </svg>+ <div class="chart-note">Characteristic exponential IV curve for an InGaN green LED. Near-zero current until threshold (~2.8V), then steep rise. Design point: 3.3V typical at 20mA. Never exceed 4.0V forward or 25mA continuous.</div>+ </div>+ </div>++ <!-- Current Derating -->+ <div class="section">+ <h2 class="section-title">Forward Current Derating</h2>+ <div class="chart-wrap">+ <h3>Maximum Forward Current vs. Ambient Temperature</h3>+ <svg id="derating-chart" width="100%" height="280" viewBox="0 0 700 280">+ <rect x="60" y="20" width="600" height="200" fill="#0d1117" rx="4"/>+ <line x1="60" y1="220" x2="660" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="20" x2="60" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="170" x2="660" y2="170" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="120" x2="660" y2="120" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="70" x2="660" y2="70" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="180" y1="20" x2="180" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="300" y1="20" x2="300" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="420" y1="20" x2="420" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="540" y1="20" x2="540" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>++ <path d="M60,20 L210,20" stroke="#32CD32" stroke-width="2.5" fill="none"/>+ <path d="M210,20 L540,153" stroke="#32CD32" stroke-width="2.5" fill="none"/>+ <path d="M540,153 L705,220" stroke="#32CD32" stroke-width="2.5" fill="none" stroke-dasharray="4,3"/>+ <path d="M60,20 L210,20 L540,153 L705,220 L60,220 Z" fill="url(#INS42ATGGrad)" opacity="0.12"/>++ <circle cx="210" cy="20" r="4" fill="#32CD32" opacity="0.9"/>+ <text x="210" y="40" fill="#32CD32" font-size="10" text-anchor="middle">30mA @ 25°C</text>+ <circle cx="540" cy="153" r="4" fill="#32CD32" opacity="0.9"/>+ <text x="540" y="144" fill="#32CD32" font-size="10" text-anchor="middle">10mA @ 80°C</text>++ <rect x="200" y="100" width="110" height="20" rx="4" fill="rgba(63,185,80,0.12)"/>+ <text x="255" y="114" fill="#3fb950" font-size="10" text-anchor="middle">Safe operating</text>++ <text x="55" y="224" fill="#484f58" font-size="9" text-anchor="end">0</text>+ <text x="55" y="174" fill="#484f58" font-size="9" text-anchor="end">7.5</text>+ <text x="55" y="124" fill="#484f58" font-size="9" text-anchor="end">15</text>+ <text x="55" y="74" fill="#484f58" font-size="9" text-anchor="end">22.5</text>+ <text x="55" y="24" fill="#484f58" font-size="9" text-anchor="end">30</text>+ <text x="12" y="124" fill="#484f58" font-size="9" text-anchor="middle" transform="rotate(-90,12,124)">Max If (mA)</text>++ <text x="60" y="255" fill="#484f58" font-size="9" text-anchor="middle">0</text>+ <text x="210" y="255" fill="#484f58" font-size="9" text-anchor="middle">25</text>+ <text x="360" y="255" fill="#484f58" font-size="9" text-anchor="middle">50</text>+ <text x="540" y="255" fill="#484f58" font-size="9" text-anchor="middle">80</text>+ <text x="660" y="255" fill="#484f58" font-size="9" text-anchor="middle">100</text>+ <text x="360" y="272" fill="#484f58" font-size="9" text-anchor="middle">Ambient Temperature (°C)</text>+ </svg>+ <div class="chart-note">InGaN LEDs are more thermally stable than AlInGaP types. At 80°C ambient, derate to 10mA. Still requires thermal management in enclosed or high-temperature applications.</div>+ </div>+ </div>++ <!-- Luminous Intensity vs Current -->+ <div class="section">+ <h2 class="section-title">Luminous Intensity vs. Forward Current</h2>+ <div class="chart-wrap">+ <h3>Relative Brightness (normalized at 20mA)</h3>+ <svg id="brightness-current-chart" width="100%" height="280" viewBox="0 0 700 280">+ <rect x="60" y="20" width="600" height="200" fill="#0d1117" rx="4"/>+ <line x1="60" y1="220" x2="660" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="20" x2="60" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="170" x2="660" y2="170" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="120" x2="660" y2="120" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="70" x2="660" y2="70" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="180" y1="20" x2="180" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="300" y1="20" x2="300" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="420" y1="20" x2="420" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="540" y1="20" x2="540" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>++ <path d="M60,220 Q120,168 180,155 Q240,135 300,120 Q360,106 420,95 Q480,78 540,64 Q600,52 660,40"+ stroke="#32CD32" stroke-width="2.5" fill="none"/>++ <path d="M60,220 L660,20" stroke="#484f58" stroke-width="1" stroke-dasharray="5,4" opacity="0.4"/>+ <text x="600" y="50" fill="#484f58" font-size="9">Linear</text>++ <circle cx="300" cy="120" r="5" fill="#32CD32" opacity="0.9"/>+ <line x1="60" y1="120" x2="300" y2="120" stroke="#32CD32" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.4"/>+ <line x1="300" y1="120" x2="300" y2="220" stroke="#32CD32" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.4"/>+ <text x="310" y="114" fill="#32CD32" font-size="10">1.0 @ 20mA</text>++ <text x="55" y="224" fill="#484f58" font-size="9" text-anchor="end">0</text>+ <text x="55" y="174" fill="#484f58" font-size="9" text-anchor="end">0.5</text>+ <text x="55" y="124" fill="#484f58" font-size="9" text-anchor="end">1.0</text>+ <text x="55" y="74" fill="#484f58" font-size="9" text-anchor="end">1.5</text>+ <text x="55" y="24" fill="#484f58" font-size="9" text-anchor="end">2.0</text>+ <text x="12" y="124" fill="#484f58" font-size="9" text-anchor="middle" transform="rotate(-90,12,124)">Relative Brightness</text>++ <text x="60" y="255" fill="#484f58" font-size="9" text-anchor="middle">0</text>+ <text x="180" y="255" fill="#484f58" font-size="9" text-anchor="middle">10</text>+ <text x="300" y="255" fill="#484f58" font-size="9" text-anchor="middle">20</text>+ <text x="420" y="255" fill="#484f58" font-size="9" text-anchor="middle">30</text>+ <text x="540" y="255" fill="#484f58" font-size="9" text-anchor="middle">40</text>+ <text x="660" y="255" fill="#484f58" font-size="9" text-anchor="middle">50</text>+ <text x="360" y="272" fill="#484f58" font-size="9" text-anchor="middle">Forward Current (mA)</text>+ </svg>+ <div class="chart-note">Brightness increases sublinearly with current. Doubling the current from 20mA to 40mA yields only ~55% more light, not 100%. This means diminishing returns at higher drive currents — optimize for efficiency at or below 20mA.</div>+ </div>+ </div>++ <!-- Brightness vs Temperature -->+ <div class="section">+ <h2 class="section-title">Luminous Intensity vs. Temperature</h2>+ <div class="chart-wrap">+ <h3>Relative Brightness vs. Ambient Temperature (normalized at 25°C)</h3>+ <svg id="brightness-temp-chart" width="100%" height="280" viewBox="0 0 700 280">+ <rect x="60" y="20" width="600" height="200" fill="#0d1117" rx="4"/>+ <line x1="60" y1="220" x2="660" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="20" x2="60" y2="220" stroke="#21262d" stroke-width="1"/>+ <line x1="60" y1="170" x2="660" y2="170" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="120" x2="660" y2="120" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="60" y1="70" x2="660" y2="70" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="180" y1="20" x2="180" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="300" y1="20" x2="300" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="420" y1="20" x2="420" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>+ <line x1="540" y1="20" x2="540" y2="220" stroke="#21262d" stroke-width="0.5" stroke-dasharray="4,4"/>++ <path d="M60,95 L120,100 L180,104 L240,109 L300,113 L390,120 L450,123 L510,127 L570,130 L630,133 L660,135" stroke="#32CD32" stroke-width="2.5" fill="none"/>++ <circle cx="390" cy="120" r="5" fill="#32CD32" opacity="0.9"/>+ <line x1="60" y1="120" x2="390" y2="120" stroke="#32CD32" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.4"/>+ <line x1="390" y1="120" x2="390" y2="220" stroke="#32CD32" stroke-width="0.5" stroke-dasharray="3,3" opacity="0.4"/>+ <text x="400" y="114" fill="#32CD32" font-size="10">1.0 @ 25°C</text>++ <text x="100" y="62" fill="#58a6ff" font-size="9">Brighter when cold</text>+ <text x="570" y="165" fill="#f85149" font-size="9">Dimmer when hot</text>++ <text x="55" y="224" fill="#484f58" font-size="9" text-anchor="end">0</text>+ <text x="55" y="174" fill="#484f58" font-size="9" text-anchor="end">0.5</text>+ <text x="55" y="124" fill="#484f58" font-size="9" text-anchor="end">1.0</text>+ <text x="55" y="74" fill="#484f58" font-size="9" text-anchor="end">1.5</text>+ <text x="55" y="24" fill="#484f58" font-size="9" text-anchor="end">2.0</text>+ <text x="12" y="124" fill="#484f58" font-size="9" text-anchor="middle" transform="rotate(-90,12,124)">Relative Brightness</text>++ <text x="60" y="255" fill="#484f58" font-size="9" text-anchor="middle">-30</text>+ <text x="180" y="255" fill="#484f58" font-size="9" text-anchor="middle">-10</text>+ <text x="300" y="255" fill="#484f58" font-size="9" text-anchor="middle">10</text>+ <text x="390" y="255" fill="#484f58" font-size="9" text-anchor="middle">25</text>+ <text x="540" y="255" fill="#484f58" font-size="9" text-anchor="middle">50</text>+ <text x="660" y="255" fill="#484f58" font-size="9" text-anchor="middle">70</text>+ <text x="360" y="272" fill="#484f58" font-size="9" text-anchor="middle">Ambient Temperature (°C)</text>+ </svg>+ <div class="chart-note">InGaN LEDs are more thermally stable than AlInGaP types. At 70°C, expect only ~15% reduction in luminous intensity, compared to ~30% for AlInGaP (red/amber). Still brighter when cold (125% at -30°C).</div>+ </div>+ </div>++ <!-- Resistor Calculator -->+ <div class="section">+ <h2 class="section-title">LED Resistor Calculator</h2>+ <div class="calc-card">+ <h3>⚡ Series Resistor Selection</h3>+ <div class="calc-inputs">+ <div class="calc-field">+ <label>Supply Voltage</label>+ <input type="number" id="calc-vsupply" value="5.0" step="0.1" min="0">+ <div class="unit">Volts</div>+ </div>+ <div class="calc-field">+ <label>Desired Current</label>+ <input type="number" id="calc-iled" value="20" step="1" min="0">+ <div class="unit">Milliamps</div>+ </div>+ </div>+ <div class="calc-results">+ <div class="calc-result">+ <div class="cr-label">Calculated Resistor</div>+ <div class="cr-value" id="calc-r-exact">85.0 Ω</div>+ <div class="cr-detail" id="calc-r-formula">R = (5.0V - 3.3V) / 20mA</div>+ </div>+ <div class="calc-result">+ <div class="cr-label">Nearest E24 Value</div>+ <div class="cr-value" id="calc-r-e24">82.0 Ω</div>+ <div class="cr-detail" id="calc-r-actual">Actual If = 20.7mA</div>+ </div>+ <div class="calc-result">+ <div class="cr-label">Resistor Power</div>+ <div class="cr-value" id="calc-p-resistor">35.2 mW</div>+ <div class="cr-detail" id="calc-p-r-detail">P = (V<sub>supply</sub> - V<sub>f</sub>) × I<sub>f</sub></div>+ </div>+ <div class="calc-result">+ <div class="cr-label">LED Power</div>+ <div class="cr-value" id="calc-p-led">68.4 mW</div>+ <div class="cr-detail" id="calc-p-led-detail">P = V<sub>f</sub> × I<sub>f</sub> (max 100mW)</div>+ </div>+ </div>+ <div class="calc-schematic">+ <svg width="400" height="80" viewBox="0 0 400 80" style="max-width:100%">+ <text x="20" y="38" fill="#e6edf3" font-size="11" font-family="JetBrains Mono,monospace" id="calc-svg-vsupply">5.0V</text>+ <line x1="50" y1="35" x2="90" y2="35" stroke="#e6edf3" stroke-width="1.5"/>+ <path d="M90,35 L100,25 L110,45 L120,25 L130,45 L140,25 L150,45 L160,35" stroke="#00b8b0" stroke-width="2" fill="none"/>+ <text x="125" y="60" fill="#00b8b0" font-size="10" text-anchor="middle" font-family="JetBrains Mono,monospace" id="calc-svg-r">82.0Ω</text>+ <line x1="160" y1="35" x2="210" y2="35" stroke="#e6edf3" stroke-width="1.5"/>+ <polygon points="210,22 210,48 240,35" fill="none" stroke="#32CD32" stroke-width="2"/>+ <line x1="240" y1="22" x2="240" y2="48" stroke="#32CD32" stroke-width="2"/>+ <line x1="230" y1="18" x2="238" y2="10" stroke="#32CD32" stroke-width="1"/>+ <line x1="235" y1="22" x2="243" y2="14" stroke="#32CD32" stroke-width="1"/>+ <polygon points="238,10 234,13 237,14" fill="#32CD32"/>+ <polygon points="243,14 239,17 242,18" fill="#32CD32"/>+ <text x="225" y="65" fill="#32CD32" font-size="10" text-anchor="middle" font-family="JetBrains Mono,monospace">LED</text>+ <line x1="240" y1="35" x2="300" y2="35" stroke="#e6edf3" stroke-width="1.5"/>+ <line x1="300" y1="28" x2="300" y2="42" stroke="#e6edf3" stroke-width="1.5"/>+ <line x1="290" y1="42" x2="310" y2="42" stroke="#e6edf3" stroke-width="1.5"/>+ <line x1="294" y1="47" x2="306" y2="47" stroke="#e6edf3" stroke-width="1.2"/>+ <line x1="297" y1="52" x2="303" y2="52" stroke="#e6edf3" stroke-width="0.8"/>+ <text x="320" y="42" fill="#8b949e" font-size="10" font-family="JetBrains Mono,monospace">GND</text>+ <text x="180" y="26" fill="#8b949e" font-size="9" text-anchor="middle" font-family="JetBrains Mono,monospace" id="calc-svg-if">20mA</text>+ <line x1="168" y1="30" x2="192" y2="30" stroke="#8b949e" stroke-width="0.5"/>+ <polygon points="192,30 187,27 187,33" fill="#8b949e"/>+ </svg>+ </div>+ </div>+ </div>++ <!-- Environmental -->+ <div class="section">+ <h2 class="section-title">Environmental & Handling</h2>+ <div class="env-grid">+ <div class="env-card">+ <div class="env-name">ESD Sensitivity</div>+ <div class="env-spec">InGaN — ESD precautions required</div>+ <div class="env-detail">Use grounded wrist straps & ESD-safe tools</div>+ </div>+ <div class="env-card">+ <div class="env-name">Operating Temperature</div>+ <div class="env-spec">Continuous operation range</div>+ <div class="env-detail">−30°C to +80°C</div>+ </div>+ <div class="env-card">+ <div class="env-name">Storage Temperature</div>+ <div class="env-spec">Unbiased storage</div>+ <div class="env-detail">−40°C to +85°C</div>+ </div>+ <div class="env-card">+ <div class="env-name">Moisture Sensitivity</div>+ <div class="env-spec">MSL noted in packaging</div>+ <div class="env-detail">Follow J-STD-020 bake requirements</div>+ </div>+ </div>+ </div>++ <!-- Symbol, Footprint & 3D --> <!-- Symbol, Footprint & 3D View -->+ <div class="section">+ <h2 class="section-title">Symbol, Footprint & 3D Model</h2>+ <div class="grid-2" style="margin-bottom:12px">+ <!-- Interactive SymView -->+ <div class="card" style="padding:0;overflow:hidden">+ <div style="font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-dim);padding:12px 16px 0">Schematic Symbol</div>+ <iframe src="IN-S42ATG-symview.html" style="width:100%;height:340px;border:none;display:block" allow="fullscreen"></iframe>+ </div>+ <!-- Interactive FpView -->+ <div class="card" style="padding:0;overflow:hidden">+ <div style="font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-dim);padding:12px 16px 0">Footprint (0402)</div>+ <iframe src="IN-S42ATG-fpview.html" style="width:100%;height:340px;border:none;display:block" allow="fullscreen"></iframe>+ </div>+ </div>+ <!-- 3D Model -->+ <div class="card" style="text-align:center;margin-bottom:12px">+ <div style="font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-dim);margin-bottom:12px">3D Model (interactive)</div>+ <canvas id="viewer3d" width="600" height="300" style="width:100%;height:300px;border-radius:4px;cursor:grab"></canvas>+ <div style="font-size:10px;color:var(--text-dim);margin-top:6px">Click & drag to rotate · Scroll to zoom</div>+ </div>+ <!-- Download / Export Bar -->+ <div class="card" style="display:flex;align-items:center;gap:10px;flex-wrap:wrap">+ <span style="font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.5px">Export:</span>+ <a class="dl-btn" href="https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s42atg/IN-S42ATG.kicad_sym" download>KiCad Symbol (.kicad_sym)</a>+ <a class="dl-btn" href="https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s42atg/IN-S42ATG.kicad_mod" download>KiCad Footprint (.kicad_mod)</a>+ <a class="dl-btn" href="https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s42atg/IN-S42ATG.lbr" download>Fusion 360 (.lbr)</a>+ <a class="dl-btn" href="https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s42atg/IN-S42ATG.step" download>3D Model (.step)</a>+ </div>+ </div>++ <!-- Pricing -->+ <div class="section">+ <h2 class="section-title">Pricing & Availability</h2>+ <div class="vendor-cards">+ <div class="vendor-card recommended">+ <div class="vc-name mouser">Mouser Electronics</div>+ <div class="vc-price">—</div>+ <div class="vc-detail">Check availability</div>+ <a class="vc-link" href="https://www.mouser.com/Search/Refine?Keyword=IN-S42ATG" target="_blank">Search on Mouser →</a>+ </div>+ <div class="vendor-card">+ <div class="vc-name digikey">DigiKey</div>+ <div class="vc-price">—</div>+ <div class="vc-detail">Check availability</div>+ <a class="vc-link" href="https://www.digikey.com/en/products/result?keywords=IN-S42ATG" target="_blank">Search on DigiKey →</a>+ </div>+ <div class="vendor-card">+ <div class="vc-name jlcpcb">JLCPCB / LCSC</div>+ <div class="vc-price">—</div>+ <div class="vc-detail">Check availability</div>+ </div>+ </div>+ </div>++ <!-- Documents -->+ <div class="section">+ <h2 class="section-title">Documents</h2>+ <div class="card">+ <table class="detail-table">+ <tr><td>Datasheet</td><td><a href="http://www.inolux-corp.com/datasheet/SMDLED/Mono%20Color%20Top%20View/IN-S42AT%20Series_V1.1.pdf" target="_blank">IN-S42AT Series V1.1 (PDF) →</a></td></tr>+ <tr><td>Series</td><td>IN-S42AT</td></tr>+ <tr><td>Manufacturer</td><td>Inolux Corporation</td></tr>+ </table>+ </div>+ </div>++ <!-- Molecule -->+ <div class="section">+ <h2 class="section-title">Molecule — Single-Passive Board</h2>+ <div class="card" style="padding:0;overflow:hidden;border-radius:8px">+ <div style="font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-dim);padding:12px 16px 0">Interactive 3D Board Viewer</div>+ <iframe src="https://wiki-ufypy5dpx93o.adom.cloud/static/libraries/in-s42atg/tsci-viewer/molecule-viewer/index.html"+ style="width:100%;height:500px;border:none;border-radius:0 0 8px 8px;display:block"+ allow="fullscreen"></iframe>+ </div>+ <div style="font-size:11px;color:var(--text-dim);margin-top:8px;text-align:center">+ Orbit: click & drag · Zoom: scroll · Inspect: click a component · X-ray: toggle in toolbar+ </div>+ </div>++ <div class="source">+ IN-S42ATG characterization · Data from Inolux IN-S42AT Series V1.1 datasheet + adom-parts-search · 2026-06-03+ </div>++</div>++<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>+<script src="https://cdn.jsdelivr.net/npm/[email protected]/examples/js/pmrem/PMREMGenerator.js"></script>+<script>+(function() {+ // ==================== 3D Viewer — IN-S42ATG (0402 LED, green) ====================+ var canvas = document.getElementById('viewer3d');+ if (canvas && window.THREE) {+ var scene = new THREE.Scene();++ var renderer = new THREE.WebGLRenderer({ canvas: canvas, antialias: true, alpha: true, logarithmicDepthBuffer: true });+ renderer.setSize(canvas.width, canvas.height);+ renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));+ renderer.outputEncoding = THREE.sRGBEncoding;+ renderer.toneMapping = THREE.ACESFilmicToneMapping;+ renderer.toneMappingExposure = 1.2;+ renderer.physicallyCorrectLights = true;++ canvas.style.background = 'linear-gradient(180deg, #5a6b7e 0%, #2a3340 100%)';++ var camera = new THREE.PerspectiveCamera(35, canvas.width / canvas.height, 0.01, 1000);++ var pmremGen = new THREE.PMREMGenerator(renderer);+ pmremGen.compileEquirectangularShader();+ var envScene = new THREE.Scene();+ envScene.background = new THREE.Color(0x3a4550);+ var envLight1 = new THREE.DirectionalLight(0xffffff, 2);+ envLight1.position.set(1, 3, 2);+ envScene.add(envLight1);+ var envLight2 = new THREE.DirectionalLight(0x8899bb, 1);+ envLight2.position.set(-2, 1, -1);+ envScene.add(envLight2);+ var envRT = pmremGen.fromScene(envScene, 0.04);+ scene.environment = envRT.texture;++ var hemi = new THREE.HemisphereLight(0xe6edf3, 0xb3a699, 0.5);+ scene.add(hemi);+ var keyLight = new THREE.DirectionalLight(0xffffff, 1.5);+ keyLight.position.set(2, 5, 3);+ scene.add(keyLight);+ var fillLight = new THREE.DirectionalLight(0x8899aa, 0.5);+ fillLight.position.set(-3, 2, -2);+ scene.add(fillLight);+ var rimLight = new THREE.DirectionalLight(0x32cd32, 0.4);+ rimLight.position.set(0, -1, 3);+ scene.add(rimLight);++ var S = 2.5;++ var bodyMat = new THREE.MeshStandardMaterial({+ color: 0x2a2018, metalness: 0.0, roughness: 0.4+ });+ var lensMat = new THREE.MeshStandardMaterial({+ color: 0x32CD32, metalness: 0.0, roughness: 0.15,+ transparent: true, opacity: 0.55,+ emissive: 0x00CC00, emissiveIntensity: 0.3+ });+ var termMat = new THREE.MeshStandardMaterial({+ color: 0xc8ccd1, metalness: 1.0, roughness: 0.25,+ polygonOffset: true, polygonOffsetFactor: -1, polygonOffsetUnits: -1+ });+ var padMat = new THREE.MeshStandardMaterial({ color: 0xc9a04c, metalness: 1.0, roughness: 0.22 });+ var pcbMat = new THREE.MeshStandardMaterial({ color: 0x0a2a0a, metalness: 0.0, roughness: 0.6 });+ var cathodeMat = new THREE.MeshStandardMaterial({ color: 0x32CD32, emissive: 0x00CC00, emissiveIntensity: 0.5, metalness: 0.0, roughness: 0.5 });++ var bodyW = 1.0, bodyD = 0.5, bodyH = 0.30;+ var lensH = 0.15;+ var termW = 0.20;++ var innerW = bodyW - termW * 2 + 0.02;+ var body = new THREE.Mesh(new THREE.BoxGeometry(innerW*S, bodyH*S, bodyD*S), bodyMat);+ body.position.y = bodyH*S/2;+ scene.add(body);++ var lens = new THREE.Mesh(new THREE.BoxGeometry(bodyW*0.85*S, lensH*S, bodyD*0.85*S), lensMat);+ lens.position.y = (bodyH + lensH/2)*S;+ scene.add(lens);++ function makeTerminal(xSign) {+ var group = new THREE.Group();+ var front = new THREE.Mesh(new THREE.BoxGeometry(termW*S, bodyH*S, bodyD*S*0.99), termMat);+ front.position.set(xSign*(bodyW/2 - termW/2)*S, bodyH*S/2, 0);+ group.add(front);+ var bot = new THREE.Mesh(new THREE.BoxGeometry((termW+0.03)*S, 0.04*S, bodyD*S*0.99), termMat);+ bot.position.set(xSign*(bodyW/2 - termW/2)*S, 0.02*S, 0);+ group.add(bot);+ return group;+ }+ scene.add(makeTerminal(-1));+ scene.add(makeTerminal(1));++ var cathMark = new THREE.Mesh(new THREE.BoxGeometry(0.02*S, 0.02*S, bodyD*0.7*S), cathodeMat);+ cathMark.position.set(0.25*S, (bodyH + lensH + 0.02)*S, 0);+ scene.add(cathMark);++ var pcb = new THREE.Mesh(new THREE.BoxGeometry(10*S, 0.08*S, 8*S), pcbMat);+ pcb.position.y = -0.04*S;+ scene.add(pcb);++ var pad1 = new THREE.Mesh(new THREE.BoxGeometry(0.4*S, 0.025*S, 0.6*S), padMat);+ pad1.position.set(-0.3*S, 0.005*S, 0);+ scene.add(pad1);+ var pad2 = new THREE.Mesh(new THREE.BoxGeometry(0.4*S, 0.025*S, 0.6*S), padMat);+ pad2.position.set(0.3*S, 0.005*S, 0);+ scene.add(pad2);++ var gridMat2 = new THREE.LineBasicMaterial({ color: 0x0d3d0d, transparent: true, opacity: 0.3 });+ for (var i = -8; i <= 8; i++) {+ var pts1 = [new THREE.Vector3(i*0.4*S, 0.045*S, -4*S), new THREE.Vector3(i*0.4*S, 0.045*S, 4*S)];+ scene.add(new THREE.Line(new THREE.BufferGeometry().setFromPoints(pts1), gridMat2));+ var pts2 = [new THREE.Vector3(-4*S, 0.045*S, i*0.4*S), new THREE.Vector3(4*S, 0.045*S, i*0.4*S)];+ scene.add(new THREE.Line(new THREE.BufferGeometry().setFromPoints(pts2), gridMat2));+ }++ var isDragging = false, prevX = 0, prevY = 0;+ var theta = Math.PI/4, phi = Math.PI/5.5, radius = 5.0;+ var target = new THREE.Vector3(0, 0.4, 0);++ function updateCamera() {+ camera.position.x = radius * Math.sin(theta) * Math.cos(phi);+ camera.position.y = radius * Math.sin(phi) + target.y;+ camera.position.z = radius * Math.cos(theta) * Math.cos(phi);+ camera.lookAt(target);+ }+ updateCamera();++ canvas.addEventListener('mousedown', function(e) { isDragging = true; prevX = e.clientX; prevY = e.clientY; canvas.style.cursor = 'grabbing'; });+ window.addEventListener('mouseup', function() { isDragging = false; canvas.style.cursor = 'grab'; });+ canvas.addEventListener('mousemove', function(e) {+ if (!isDragging) return;+ theta -= (e.clientX - prevX) * 0.008;+ phi = Math.max(0.05, Math.min(Math.PI/2.2, phi + (e.clientY - prevY) * 0.008));+ prevX = e.clientX; prevY = e.clientY;+ updateCamera();+ });+ canvas.addEventListener('wheel', function(e) {+ e.preventDefault();+ radius = Math.max(2, Math.min(12, radius + e.deltaY * 0.004));+ updateCamera();+ }, { passive: false });++ function animate() { requestAnimationFrame(animate); renderer.render(scene, camera); }+ animate();+ }++ // ==================== Chart Tooltip System ====================+ function setupChartTooltip(svgId, dataPoints, color, formatX, formatY) {+ var svg = document.getElementById(svgId);+ if (!svg) return;++ var ns = 'http://www.w3.org/2000/svg';++ var dot = document.createElementNS(ns, 'circle');+ dot.setAttribute('r', '5');+ dot.setAttribute('fill', color);+ dot.setAttribute('stroke', '#0d1117');+ dot.setAttribute('stroke-width', '2');+ dot.style.display = 'none';+ dot.style.pointerEvents = 'none';+ svg.appendChild(dot);++ var tipGroup = document.createElementNS(ns, 'g');+ tipGroup.style.display = 'none';+ tipGroup.style.pointerEvents = 'none';++ var tipBg = document.createElementNS(ns, 'rect');+ tipBg.setAttribute('rx', '4');+ tipBg.setAttribute('fill', '#161b22');+ tipBg.setAttribute('stroke', '#30363d');+ tipBg.setAttribute('stroke-width', '1');++ var tipLine1 = document.createElementNS(ns, 'text');+ tipLine1.setAttribute('font-family', 'JetBrains Mono, monospace');+ tipLine1.setAttribute('font-size', '10');+ tipLine1.setAttribute('fill', '#e6edf3');++ var tipLine2 = document.createElementNS(ns, 'text');+ tipLine2.setAttribute('font-family', 'JetBrains Mono, monospace');+ tipLine2.setAttribute('font-size', '10');+ tipLine2.setAttribute('fill', color);++ tipGroup.appendChild(tipBg);+ tipGroup.appendChild(tipLine1);+ tipGroup.appendChild(tipLine2);+ svg.appendChild(tipGroup);++ var vLine = document.createElementNS(ns, 'line');+ vLine.setAttribute('stroke', color);+ vLine.setAttribute('stroke-width', '0.5');+ vLine.setAttribute('stroke-dasharray', '3,3');+ vLine.setAttribute('opacity', '0.5');+ vLine.style.display = 'none';+ vLine.style.pointerEvents = 'none';+ svg.appendChild(vLine);++ function lerp(pts, svgX) {+ if (svgX <= pts[0].sx) return pts[0];+ if (svgX >= pts[pts.length-1].sx) return pts[pts.length-1];+ for (var i = 0; i < pts.length - 1; i++) {+ if (svgX >= pts[i].sx && svgX <= pts[i+1].sx) {+ var t = (svgX - pts[i].sx) / (pts[i+1].sx - pts[i].sx);+ return {+ sx: svgX,+ sy: pts[i].sy + t * (pts[i+1].sy - pts[i].sy),+ vx: pts[i].vx + t * (pts[i+1].vx - pts[i].vx),+ vy: pts[i].vy + t * (pts[i+1].vy - pts[i].vy),+ };+ }+ }+ return pts[0];+ }++ svg.addEventListener('mousemove', function(e) {+ var pt = svg.createSVGPoint();+ pt.x = e.clientX;+ pt.y = e.clientY;+ var svgPt = pt.matrixTransform(svg.getScreenCTM().inverse());++ var minX = dataPoints[0].sx;+ var maxX = dataPoints[dataPoints.length-1].sx;+ if (svgPt.x < minX - 10 || svgPt.x > maxX + 10) {+ dot.style.display = 'none';+ tipGroup.style.display = 'none';+ vLine.style.display = 'none';+ return;+ }++ var p = lerp(dataPoints, svgPt.x);++ dot.setAttribute('cx', p.sx);+ dot.setAttribute('cy', p.sy);+ dot.style.display = '';++ vLine.setAttribute('x1', p.sx);+ vLine.setAttribute('y1', p.sy);+ vLine.setAttribute('x2', p.sx);+ vLine.setAttribute('y2', 220);+ vLine.style.display = '';++ var xLabel = formatX(p.vx);+ var yLabel = formatY(p.vy);+ tipLine1.textContent = xLabel;+ tipLine2.textContent = yLabel;++ var tipX = p.sx + 12;+ var tipY = p.sy - 28;+ var boxW = Math.max(xLabel.length, yLabel.length) * 7 + 16;+ var boxH = 32;++ var adjustedX = tipX + boxW > 660 ? p.sx - boxW - 12 : tipX;+ var adjustedY = tipY < 10 ? p.sy + 12 : tipY;++ tipBg.setAttribute('x', adjustedX);+ tipBg.setAttribute('y', adjustedY);+ tipBg.setAttribute('width', boxW);+ tipBg.setAttribute('height', boxH);++ tipLine1.setAttribute('x', adjustedX + 8);+ tipLine1.setAttribute('y', adjustedY + 13);+ tipLine2.setAttribute('x', adjustedX + 8);+ tipLine2.setAttribute('y', adjustedY + 26);++ tipGroup.style.display = '';+ });++ svg.addEventListener('mouseleave', function() {+ dot.style.display = 'none';+ tipGroup.style.display = 'none';+ vLine.style.display = 'none';+ });+ }++ // ==================== Spectral Chart ====================+ var spectralData = [+ {sx:60, sy:191, vx:500, vy:14.6},+ {sx:63, sy:186, vx:501, vy:17.0},+ {sx:66, sy:181, vx:502, vy:19.6},+ {sx:69, sy:175, vx:503, vy:22.5},+ {sx:72, sy:169, vx:504, vy:25.7},+ {sx:75, sy:162, vx:505, vy:29.2},+ {sx:78, sy:154, vx:506, vy:32.9},+ {sx:81, sy:146, vx:507, vy:36.9},+ {sx:84, sy:138, vx:508, vy:41.0},+ {sx:87, sy:129, vx:509, vy:45.4},+ {sx:90, sy:120, vx:510, vy:50.0},+ {sx:93, sy:111, vx:511, vy:54.7},+ {sx:96, sy:101, vx:512, vy:59.4},+ {sx:99, sy:92, vx:513, vy:64.2},+ {sx:102, sy:82, vx:514, vy:68.9},+ {sx:105, sy:73, vx:515, vy:73.5},+ {sx:108, sy:64, vx:516, vy:77.9},+ {sx:111, sy:56, vx:517, vy:82.1},+ {sx:114, sy:48, vx:518, vy:86.0},+ {sx:117, sy:41, vx:519, vy:89.5},+ {sx:120, sy:35, vx:520, vy:92.6},+ {sx:123, sy:30, vx:521, vy:95.2},+ {sx:126, sy:25, vx:522, vy:97.3},+ {sx:129, sy:22, vx:523, vy:98.8},+ {sx:132, sy:21, vx:524, vy:99.7},+ {sx:135, sy:20, vx:525, vy:100.0},+ {sx:138, sy:21, vx:526, vy:99.7},+ {sx:141, sy:22, vx:527, vy:98.8},+ {sx:144, sy:25, vx:528, vy:97.3},+ {sx:147, sy:30, vx:529, vy:95.2},+ {sx:150, sy:35, vx:530, vy:92.6},+ {sx:153, sy:41, vx:531, vy:89.5},+ {sx:156, sy:48, vx:532, vy:86.0},+ {sx:159, sy:56, vx:533, vy:82.1},+ {sx:162, sy:64, vx:534, vy:77.9},+ {sx:165, sy:73, vx:535, vy:73.5},+ {sx:168, sy:82, vx:536, vy:68.9},+ {sx:171, sy:92, vx:537, vy:64.2},+ {sx:174, sy:101, vx:538, vy:59.4},+ {sx:177, sy:111, vx:539, vy:54.7},+ {sx:180, sy:120, vx:540, vy:50.0},+ {sx:183, sy:129, vx:541, vy:45.4},+ {sx:186, sy:138, vx:542, vy:41.0},+ {sx:189, sy:146, vx:543, vy:36.9},+ {sx:192, sy:154, vx:544, vy:32.9},+ {sx:195, sy:162, vx:545, vy:29.2},+ {sx:198, sy:169, vx:546, vy:25.7},+ {sx:201, sy:175, vx:547, vy:22.5},+ {sx:204, sy:181, vx:548, vy:19.6},+ {sx:207, sy:186, vx:549, vy:17.0},+ {sx:210, sy:191, vx:550, vy:14.6},+ {sx:213, sy:195, vx:551, vy:12.5},+ {sx:216, sy:199, vx:552, vy:10.6},+ {sx:219, sy:202, vx:553, vy:8.9},+ {sx:222, sy:205, vx:554, vy:7.5},+ {sx:225, sy:208, vx:555, vy:6.2},+ {sx:228, sy:210, vx:556, vy:5.2},+ {sx:231, sy:211, vx:557, vy:4.3},+ {sx:234, sy:213, vx:558, vy:3.5},+ {sx:237, sy:214, vx:559, vy:2.8},+ {sx:240, sy:215, vx:560, vy:2.3},+ {sx:243, sy:216, vx:561, vy:1.8},+ {sx:246, sy:217, vx:562, vy:1.5},+ {sx:249, sy:218, vx:563, vy:1.2},+ {sx:252, sy:218, vx:564, vy:0.9},+ {sx:255, sy:219, vx:565, vy:0.7},+ {sx:258, sy:219, vx:566, vy:0.6},+ {sx:261, sy:219, vx:567, vy:0.4},+ {sx:264, sy:219, vx:568, vy:0.3},+ {sx:660, sy:220, vx:700, vy:0.0},+ ];++ setupChartTooltip('spectral-chart', spectralData, '#32CD32',+ function(x) { return x.toFixed(0) + ' nm'; },+ function(y) { return 'Intensity: ' + y.toFixed(1) + '%'; }+ );++ // ==================== IV Chart ====================+ var ivData = [+ {sx:60, sy:220, vx:0.00, vy:0.0},+ {sx:228, sy:220, vx:1.40, vy:0.0},+ {sx:312, sy:220, vx:2.10, vy:0.1},+ {sx:362, sy:219, vx:2.52, vy:0.3},+ {sx:379, sy:218, vx:2.66, vy:0.5},+ {sx:396, sy:216, vx:2.80, vy:1.0},+ {sx:411, sy:212, vx:2.92, vy:2.0},+ {sx:426, sy:200, vx:3.05, vy:5.0},+ {sx:441, sy:180, vx:3.17, vy:10.0},+ {sx:456, sy:140, vx:3.30, vy:20.0},+ {sx:477, sy:120, vx:3.47, vy:25.0},+ {sx:498, sy:100, vx:3.65, vy:30.0},+ {sx:519, sy:70, vx:3.83, vy:37.5},+ {sx:540, sy:20, vx:4.00, vy:50.0},+ ];++ setupChartTooltip('iv-chart', ivData, '#32CD32',+ function(x) { return 'Vf = ' + x.toFixed(2) + ' V'; },+ function(y) { return 'If = ' + y.toFixed(1) + ' mA'; }+ );++ // ==================== Derating Chart ====================+ var deratingData = [+ {sx:60, sy:20, vx:0, vy:30.0},+ {sx:210, sy:20, vx:25, vy:30.0},+ {sx:240, sy:32, vx:30, vy:28.2},+ {sx:270, sy:44, vx:35, vy:26.4},+ {sx:300, sy:56, vx:40, vy:24.5},+ {sx:330, sy:68, vx:45, vy:22.7},+ {sx:360, sy:81, vx:50, vy:20.9},+ {sx:390, sy:93, vx:55, vy:19.1},+ {sx:420, sy:105, vx:60, vy:17.3},+ {sx:450, sy:117, vx:65, vy:15.5},+ {sx:480, sy:129, vx:70, vy:13.6},+ {sx:510, sy:141, vx:75, vy:11.8},+ {sx:540, sy:153, vx:80, vy:10.0},+ {sx:705, sy:220, vx:108, vy:0.0},+ ];++ setupChartTooltip('derating-chart', deratingData, '#32CD32',+ function(x) { return x.toFixed(0) + '\u00b0C'; },+ function(y) { return 'Max If = ' + y.toFixed(1) + ' mA'; }+ );++ // ==================== Brightness vs Current ====================+ var brightCurrentData = [+ {sx:60, sy:220, vx:0, vy:0},+ {sx:120, sy:168, vx:5, vy:0.52},+ {sx:180, sy:148, vx:10, vy:0.72},+ {sx:240, sy:135, vx:15, vy:0.85},+ {sx:300, sy:120, vx:20, vy:1.0},+ {sx:360, sy:108, vx:25, vy:1.12},+ {sx:420, sy:95, vx:30, vy:1.25},+ {sx:540, sy:69, vx:40, vy:1.51},+ {sx:660, sy:40, vx:50, vy:1.80},+ ];++ setupChartTooltip('brightness-current-chart', brightCurrentData, '#32CD32',+ function(x) { return 'If = ' + x.toFixed(0) + ' mA'; },+ function(y) { return 'Brightness: ' + y.toFixed(2) + 'x'; }+ );++ // ==================== Brightness vs Temperature ====================+ var brightTempData = [+ {sx:60, sy:95, vx:-30, vy:1.25},+ {sx:120, sy:100, vx:-20, vy:1.20},+ {sx:180, sy:104, vx:-10, vy:1.16},+ {sx:240, sy:109, vx:0, vy:1.11},+ {sx:300, sy:113, vx:10, vy:1.07},+ {sx:390, sy:120, vx:25, vy:1.00},+ {sx:450, sy:123, vx:35, vy:0.97},+ {sx:510, sy:127, vx:45, vy:0.93},+ {sx:570, sy:130, vx:55, vy:0.90},+ {sx:630, sy:133, vx:65, vy:0.87},+ {sx:660, sy:135, vx:70, vy:0.85},+ ];++ setupChartTooltip('brightness-temp-chart', brightTempData, '#32CD32',+ function(x) { return x.toFixed(0) + '\u00b0C'; },+ function(y) { return 'Brightness: ' + y.toFixed(2) + 'x'; }+ );++ // ==================== Resistor Calculator ====================+ var VF_TYP = 3.3;++ var E24 = [10,11,12,13,15,16,18,20,22,24,27,30,33,36,39,43,47,51,56,62,68,75,82,91];++ function nearestE24(val) {+ if (val <= 0) return 0;+ var decade = 1;+ while (val >= 100) { val /= 10; decade *= 10; }+ while (val < 10) { val *= 10; decade /= 10; }+ var best = E24[0], bestDist = Math.abs(val - E24[0]);+ for (var i = 1; i < E24.length; i++) {+ var d = Math.abs(val - E24[i]);+ if (d < bestDist) { bestDist = d; best = E24[i]; }+ }+ return best * decade;+ }++ function formatResistance(r) {+ if (r >= 1e6) return (r/1e6).toFixed(1) + ' M\u03a9';+ if (r >= 1e3) return (r/1e3).toFixed(0) + ' k\u03a9';+ if (r >= 100) return r.toFixed(0) + ' \u03a9';+ if (r >= 10) return r.toFixed(1) + ' \u03a9';+ return r.toFixed(2) + ' \u03a9';+ }++ function updateCalculator() {+ var vSupply = parseFloat(document.getElementById('calc-vsupply').value) || 0;+ var iLed = parseFloat(document.getElementById('calc-iled').value) || 0;+ var iLedA = iLed / 1000;++ var vDrop = vSupply - VF_TYP;+ var rExact = vDrop > 0 && iLedA > 0 ? vDrop / iLedA : 0;+ var rE24 = nearestE24(rExact);+ var iActual = rE24 > 0 ? vDrop / rE24 : 0;+ var pResistor = vDrop * iActual;+ var pLed = VF_TYP * iActual;++ document.getElementById('calc-r-exact').innerHTML = rExact > 0 ? formatResistance(rExact) : '—';+ document.getElementById('calc-r-formula').textContent = 'R = (' + vSupply.toFixed(1) + 'V - ' + VF_TYP + 'V) / ' + iLed.toFixed(0) + 'mA';+ document.getElementById('calc-r-e24').innerHTML = rE24 > 0 ? formatResistance(rE24) : '—';+ document.getElementById('calc-r-actual').textContent = iActual > 0 ? 'Actual If = ' + (iActual * 1000).toFixed(1) + 'mA' : '';+ document.getElementById('calc-p-resistor').textContent = pResistor > 0 ? (pResistor * 1000).toFixed(1) + ' mW' : '\u2014';+ document.getElementById('calc-p-led').textContent = pLed > 0 ? (pLed * 1000).toFixed(1) + ' mW' : '\u2014';++ var svgVs = document.getElementById('calc-svg-vsupply');+ if (svgVs) svgVs.textContent = vSupply.toFixed(1) + 'V';+ var svgR = document.getElementById('calc-svg-r');+ if (svgR) svgR.textContent = rE24 > 0 ? formatResistance(rE24) : '\u2014';+ var svgIf = document.getElementById('calc-svg-if');+ if (svgIf) svgIf.textContent = iActual > 0 ? (iActual * 1000).toFixed(1) + 'mA' : '';++ var pLedEl = document.getElementById('calc-p-led');+ if (pLed * 1000 > 100) {+ pLedEl.style.color = '#f85149';+ } else {+ pLedEl.style.color = '';+ }++ var rExactEl = document.getElementById('calc-r-exact');+ if (vDrop <= 0) {+ rExactEl.innerHTML = '<span style="color:#f85149">V<sub>supply</sub> too low</span>';+ }+ }++ document.getElementById('calc-vsupply').addEventListener('input', updateCalculator);+ document.getElementById('calc-iled').addEventListener('input', updateCalculator);++ updateCalculator();+})();+</script>+</div>+</body>+</html>
IN-S42ATG.kicad_modadded+15@@ -0,0 +1,15 @@+(footprint "IN-S42ATG"+ (version 20240108)+ (generator "adom-footprint")+ (layer "F.Cu")+ (descr "Inolux Corporation · Top View SMD LED · 0402 (1.0 × 0.5mm) · InGaN")+ (attr smd)+ (fp_text reference "REF**" (at 0 -2.8)+ (layer "F.SilkS") (effects (font (size 1 1) (thickness 0.15))))+ (fp_text value "IN-S42ATG" (at 0 2.8)+ (layer "F.Fab") (effects (font (size 1 1) (thickness 0.15))))+ (pad "1" smd roundrect (at -0.5 0) (size 0.6 0.5)+ (layers F.Cu,F.Paste,F.Mask) (roundrect_rratio 0.25))+ (pad "2" smd roundrect (at 0.5 0) (size 0.6 0.5)+ (layers F.Cu,F.Paste,F.Mask) (roundrect_rratio 0.25))+)
IN-S42ATG.kicad_symadded+139@@ -0,0 +1,139 @@+(kicad_symbol_lib+ (version 20231120)+ (generator "adom")+ (symbol "IN-S42ATG"+ (pin_numbers (hide yes))+ (pin_names (offset 1.016) (hide yes))+ (exclude_from_sim no)+ (in_bom yes)+ (on_board yes)+ (property "Reference" "D"+ (at 0 2.54 0)+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ (property "Value" "IN-S42ATG"+ (at 0 -2.54 0)+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ (property "Footprint" ""+ (at 0 0 0)+ (effects (font (size 1.27 1.27)) (hide yes))+ )+ (property "Datasheet" "~"+ (at 0 0 0)+ (effects (font (size 1.27 1.27)) (hide yes))+ )+ (property "Description" "Light emitting diode"+ (at 0 0 0)+ (effects (font (size 1.27 1.27)) (hide yes))+ )+ (symbol "IN-S42ATG_0_1"+ (polyline+ (pts+ (xy -3.048 -0.762) (xy -4.572 -2.286) (xy -3.81 -2.286) (xy -4.572 -2.286) (xy -4.572 -1.524)+ )+ (stroke+ (width 0)+ (type default)+ )+ (fill+ (type none)+ )+ )+ (polyline+ (pts+ (xy -1.778 -0.762) (xy -3.302 -2.286) (xy -2.54 -2.286) (xy -3.302 -2.286) (xy -3.302 -1.524)+ )+ (stroke+ (width 0)+ (type default)+ )+ (fill+ (type none)+ )+ )+ (polyline+ (pts+ (xy -1.27 0) (xy 1.27 0)+ )+ (stroke+ (width 0)+ (type default)+ )+ (fill+ (type none)+ )+ )+ (polyline+ (pts+ (xy -1.27 -1.27) (xy -1.27 1.27)+ )+ (stroke+ (width 0.254)+ (type default)+ )+ (fill+ (type none)+ )+ )+ (polyline+ (pts+ (xy 1.27 -1.27) (xy 1.27 1.27) (xy -1.27 0) (xy 1.27 -1.27)+ )+ (stroke+ (width 0.254)+ (type default)+ )+ (fill+ (type none)+ )+ )+ )+ (symbol "IN-S42ATG_1_1"+ (pin passive line+ (at -3.81 0 0)+ (length 2.54)+ (name "K"+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ (number "1"+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ )+ (pin passive line+ (at 3.81 0 180)+ (length 2.54)+ (name "A"+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ (number "2"+ (effects+ (font+ (size 1.27 1.27)+ )+ )+ )+ )+ )+ )+)
IN-S42ATG.lbradded+83@@ -0,0 +1,83 @@+<?xml version="1.0" encoding="utf-8"?>+<!DOCTYPE eagle SYSTEM "eagle.dtd">+<eagle version="9.6.2">+<drawing>+<settings><setting alwaysvectorfont="no"/></settings>+<grid distance="0.1" unitdist="inch" unit="inch" style="lines" multiple="1" display="no" altdistance="0.01" altunitdist="inch" altunit="inch"/>+<layers>+<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>+<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>+<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>+<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>+<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="yes"/>+<layer number="20" name="Dimension" color="15" fill="1" visible="yes" active="yes"/>+<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>+<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="yes"/>+<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="yes"/>+<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="yes"/>+<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="yes"/>+<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="yes"/>+<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="yes"/>+<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="yes"/>+<layer number="29" name="tStop" color="7" fill="3" visible="no" active="yes"/>+<layer number="30" name="bStop" color="7" fill="6" visible="no" active="yes"/>+<layer number="31" name="tCream" color="7" fill="4" visible="no" active="yes"/>+<layer number="32" name="bCream" color="7" fill="5" visible="no" active="yes"/>+<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="yes"/>+<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="yes"/>+<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="yes"/>+<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="yes"/>+<layer number="37" name="tTest" color="7" fill="1" visible="no" active="yes"/>+<layer number="38" name="bTest" color="7" fill="1" visible="no" active="yes"/>+<layer number="39" name="tKeepout" color="4" fill="11" visible="no" active="yes"/>+<layer number="40" name="bKeepout" color="1" fill="11" visible="no" active="yes"/>+<layer number="41" name="tRestrict" color="4" fill="10" visible="no" active="yes"/>+<layer number="42" name="bRestrict" color="1" fill="10" visible="no" active="yes"/>+<layer number="43" name="vRestrict" color="2" fill="10" visible="no" active="yes"/>+<layer number="44" name="Drills" color="7" fill="1" visible="no" active="yes"/>+<layer number="45" name="Holes" color="7" fill="1" visible="no" active="yes"/>+<layer number="46" name="Milling" color="3" fill="1" visible="no" active="yes"/>+<layer number="47" name="Measures" color="7" fill="1" visible="no" active="yes"/>+<layer number="48" name="Document" color="7" fill="1" visible="yes" active="yes"/>+<layer number="49" name="Reference" color="7" fill="1" visible="yes" active="yes"/>+<layer number="91" name="Nets" color="2" fill="1" visible="yes" active="yes"/>+<layer number="92" name="Busses" color="1" fill="1" visible="yes" active="yes"/>+<layer number="93" name="Pins" color="2" fill="1" visible="no" active="yes"/>+<layer number="94" name="Symbols" color="4" fill="1" visible="yes" active="yes"/>+<layer number="95" name="Names" color="7" fill="1" visible="yes" active="yes"/>+<layer number="96" name="Values" color="7" fill="1" visible="yes" active="yes"/>+<layer number="97" name="Info" color="7" fill="1" visible="yes" active="yes"/>+<layer number="98" name="Guide" color="6" fill="1" visible="yes" active="yes"/>+</layers>+<library>+<description>IN-S42ATG — Green 0402 — Inolux Corporation</description>+<packages></packages>+<symbols>+<symbol name="IN-S42ATG">+ <wire x1="-1.016" y1="2.54" x2="1.016" y2="2.54" width="0.254" layer="94"/>+ <wire x1="1.016" y1="2.54" x2="1.016" y2="-2.54" width="0.254" layer="94"/>+ <wire x1="1.016" y1="-2.54" x2="-1.016" y2="-2.54" width="0.254" layer="94"/>+ <wire x1="-1.016" y1="-2.54" x2="-1.016" y2="2.54" width="0.254" layer="94"/>+ <text x="0" y="5.08" size="1.27" layer="95" align="bottom-center">>NAME</text>+ <text x="0" y="-5.08" size="1.27" layer="96" align="top-center">>VALUE</text>+ <pin name="1" x="0" y="3.81" length="middle" direction="pas" rot="R270"/>+ <pin name="2" x="0" y="-3.81" length="middle" direction="pas" rot="R90"/>+</symbol>+</symbols>+<devicesets>+<deviceset name="IN-S42ATG" prefix="D">+ <description>Green 0402 — Inolux Corporation</description>+ <gates>+ <gate name="G$1" symbol="IN-S42ATG" x="0" y="0"/>+ </gates>+ <devices>+ <device name="">+ <connects/>+ <technologies><technology name=""/></technologies>+ </device>+ </devices>+</deviceset>+</devicesets>+</library>+</drawing>+</eagle>
IN-S42ATG.stepadded+1958@@ -0,0 +1,1958 @@+ISO-10303-21;+HEADER;+/* LED_0402_1005Metric.step 3D STEP model for use in ECAD systems+ * Copyright (C) 2018, kicad StepUp+ * + * This work is licensed under the [Creative Commons CC-BY-SA 4.0 License](https://creativecommons.org/licenses/by-sa/4.0/legalcode), + * with the following exception:+ * To the extent that the creation of electronic designs that use 'Licensed Material' can be considered to be 'Adapted Material', + * then the copyright holder waives article 3 of the license with respect to these designs and any generated files which use data provided + * as part of the 'Licensed Material'.+ * You are free to use the library data in your own projects without the obligation to share your project files under this or any other license agreement.+ * However, if you wish to redistribute these libraries, or parts thereof (including in modified form) as a collection then the exception above does not apply. + * Please refer to https://github.com/KiCad/kicad-packages3D/blob/master/LICENSE.md for further clarification of the exception.+ * Disclaimer of Warranties and Limitation of Liability.+ * These libraries are provided in the hope that they will be useful, but are provided without warranty of any kind, express or implied.+ * *USE 3D CAD DATA AT YOUR OWN RISK*+ * *DO NOT RELY UPON ANY INFORMATION FOUND HERE WITHOUT INDEPENDENT VERIFICATION.*+ * + */++FILE_DESCRIPTION(+/* description */ ('model of LED_0402_1005Metric'),+/* implementation_level */ '2;1');++FILE_NAME(+/* name */ 'LED_0402_1005Metric.step',+/* time_stamp */ '2018-03-14T23:51:39',+/* author */ ('kicad StepUp','ksu'),+/* organization */ ('FreeCAD'),+/* preprocessor_version */ 'OCC',+/* originating_system */ 'kicad StepUp',+/* authorisation */ '');++FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));+ENDSEC;++DATA;+#1 = APPLICATION_PROTOCOL_DEFINITION('international standard',+'automotive_design',2000,#2);+#2 = APPLICATION_CONTEXT(+'core data for automotive mechanical design processes');+#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10);+#4 = PRODUCT_DEFINITION_SHAPE('','',#5);+#5 = PRODUCT_DEFINITION('design','',#6,#9);+#6 = PRODUCT_DEFINITION_FORMATION('','',#7);+#7 = PRODUCT('LED_0402_1005Metric','LED_0402_1005Metric','',(#8));+#8 = PRODUCT_CONTEXT('',#2,'mechanical');+#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');+#10 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#15),#1538);+#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14);+#12 = CARTESIAN_POINT('',(0.,0.,0.));+#13 = DIRECTION('',(0.,0.,1.));+#14 = DIRECTION('',(1.,0.,-0.));+#15 = MANIFOLD_SOLID_BREP('',#16);+#16 = CLOSED_SHELL('',(#17,#57,#104,#183,#207,#247,#278,#295,#328,#352,+#419,#540,#607,#631,#662,#695,#751,#775,#799,#823,#856,#868,#931,+#956,#973,#997,#1015,#1033,#1051,#1068,#1085,#1116,#1141,#1166,#1190+,#1207,#1238,#1262,#1279,#1307,#1332,#1356,#1381,#1428,#1445,#1457,+#1479,#1491,#1509,#1527));+#17 = ADVANCED_FACE('',(#18),#52,.F.);+#18 = FACE_BOUND('',#19,.F.);+#19 = EDGE_LOOP('',(#20,#30,#38,#46));+#20 = ORIENTED_EDGE('',*,*,#21,.T.);+#21 = EDGE_CURVE('',#22,#24,#26,.T.);+#22 = VERTEX_POINT('',#23);+#23 = CARTESIAN_POINT('',(-0.35,-0.25,0.185));+#24 = VERTEX_POINT('',#25);+#25 = CARTESIAN_POINT('',(-0.315,-0.25,0.5));+#26 = LINE('',#27,#28);+#27 = CARTESIAN_POINT('',(-0.35,-0.25,0.185));+#28 = VECTOR('',#29,1.);+#29 = DIRECTION('',(0.110431526075,0.,0.993883734674));+#30 = ORIENTED_EDGE('',*,*,#31,.T.);+#31 = EDGE_CURVE('',#24,#32,#34,.T.);+#32 = VERTEX_POINT('',#33);+#33 = CARTESIAN_POINT('',(0.315,-0.25,0.5));+#34 = LINE('',#35,#36);+#35 = CARTESIAN_POINT('',(-0.315,-0.25,0.5));+#36 = VECTOR('',#37,1.);+#37 = DIRECTION('',(1.,0.,0.));+#38 = ORIENTED_EDGE('',*,*,#39,.T.);+#39 = EDGE_CURVE('',#32,#40,#42,.T.);+#40 = VERTEX_POINT('',#41);+#41 = CARTESIAN_POINT('',(0.35,-0.25,0.185));+#42 = LINE('',#43,#44);+#43 = CARTESIAN_POINT('',(0.315,-0.25,0.5));+#44 = VECTOR('',#45,1.);+#45 = DIRECTION('',(0.110431526075,0.,-0.993883734674));+#46 = ORIENTED_EDGE('',*,*,#47,.T.);+#47 = EDGE_CURVE('',#40,#22,#48,.T.);+#48 = LINE('',#49,#50);+#49 = CARTESIAN_POINT('',(0.35,-0.25,0.185));+#50 = VECTOR('',#51,1.);+#51 = DIRECTION('',(-1.,0.,0.));+#52 = PLANE('',#53);+#53 = AXIS2_PLACEMENT_3D('',#54,#55,#56);+#54 = CARTESIAN_POINT('',(0.,-0.25,0.336886104513));+#55 = DIRECTION('',(0.,1.,0.));+#56 = DIRECTION('',(0.,0.,1.));+#57 = ADVANCED_FACE('',(#58),#99,.T.);+#58 = FACE_BOUND('',#59,.T.);+#59 = EDGE_LOOP('',(#60,#70,#78,#84,#85,#93));+#60 = ORIENTED_EDGE('',*,*,#61,.T.);+#61 = EDGE_CURVE('',#62,#64,#66,.T.);+#62 = VERTEX_POINT('',#63);+#63 = CARTESIAN_POINT('',(-0.35,0.25,0.185));+#64 = VERTEX_POINT('',#65);+#65 = CARTESIAN_POINT('',(-0.35,0.1875,0.185));+#66 = LINE('',#67,#68);+#67 = CARTESIAN_POINT('',(-0.35,0.25,0.185));+#68 = VECTOR('',#69,1.);+#69 = DIRECTION('',(0.,-1.,0.));+#70 = ORIENTED_EDGE('',*,*,#71,.F.);+#71 = EDGE_CURVE('',#72,#64,#74,.T.);+#72 = VERTEX_POINT('',#73);+#73 = CARTESIAN_POINT('',(-0.35,-0.1875,0.185));+#74 = LINE('',#75,#76);+#75 = CARTESIAN_POINT('',(-0.35,-0.25,0.185));+#76 = VECTOR('',#77,1.);+#77 = DIRECTION('',(0.,1.,0.));+#78 = ORIENTED_EDGE('',*,*,#79,.T.);+#79 = EDGE_CURVE('',#72,#22,#80,.T.);+#80 = LINE('',#81,#82);+#81 = CARTESIAN_POINT('',(-0.35,0.25,0.185));+#82 = VECTOR('',#83,1.);+#83 = DIRECTION('',(0.,-1.,0.));+#84 = ORIENTED_EDGE('',*,*,#21,.T.);+#85 = ORIENTED_EDGE('',*,*,#86,.F.);+#86 = EDGE_CURVE('',#87,#24,#89,.T.);+#87 = VERTEX_POINT('',#88);+#88 = CARTESIAN_POINT('',(-0.315,0.25,0.5));+#89 = LINE('',#90,#91);+#90 = CARTESIAN_POINT('',(-0.315,0.25,0.5));+#91 = VECTOR('',#92,1.);+#92 = DIRECTION('',(0.,-1.,0.));+#93 = ORIENTED_EDGE('',*,*,#94,.F.);+#94 = EDGE_CURVE('',#62,#87,#95,.T.);+#95 = LINE('',#96,#97);+#96 = CARTESIAN_POINT('',(-0.35,0.25,0.185));+#97 = VECTOR('',#98,1.);+#98 = DIRECTION('',(0.110431526075,0.,0.993883734674));+#99 = PLANE('',#100);+#100 = AXIS2_PLACEMENT_3D('',#101,#102,#103);+#101 = CARTESIAN_POINT('',(-0.35,0.25,0.185));+#102 = DIRECTION('',(-0.993883734674,0.,0.110431526075));+#103 = DIRECTION('',(0.110431526075,0.,0.993883734674));+#104 = ADVANCED_FACE('',(#105),#178,.F.);+#105 = FACE_BOUND('',#106,.F.);+#106 = EDGE_LOOP('',(#107,#117,#125,#133,#139,#140,#148,#156,#164,#172)+);+#107 = ORIENTED_EDGE('',*,*,#108,.F.);+#108 = EDGE_CURVE('',#109,#111,#113,.T.);+#109 = VERTEX_POINT('',#110);+#110 = CARTESIAN_POINT('',(-0.485,-0.25,1.5E-02));+#111 = VERTEX_POINT('',#112);+#112 = CARTESIAN_POINT('',(-0.4625,-0.25,1.5E-02));+#113 = LINE('',#114,#115);+#114 = CARTESIAN_POINT('',(-0.485,-0.25,1.5E-02));+#115 = VECTOR('',#116,1.);+#116 = DIRECTION('',(1.,0.,0.));+#117 = ORIENTED_EDGE('',*,*,#118,.T.);+#118 = EDGE_CURVE('',#109,#119,#121,.T.);+#119 = VERTEX_POINT('',#120);+#120 = CARTESIAN_POINT('',(-0.485,-0.25,0.185));+#121 = LINE('',#122,#123);+#122 = CARTESIAN_POINT('',(-0.485,-0.25,1.5E-02));+#123 = VECTOR('',#124,1.);+#124 = DIRECTION('',(0.,0.,1.));+#125 = ORIENTED_EDGE('',*,*,#126,.T.);+#126 = EDGE_CURVE('',#119,#127,#129,.T.);+#127 = VERTEX_POINT('',#128);+#128 = CARTESIAN_POINT('',(-0.4625,-0.25,0.185));+#129 = LINE('',#130,#131);+#130 = CARTESIAN_POINT('',(-0.485,-0.25,0.185));+#131 = VECTOR('',#132,1.);+#132 = DIRECTION('',(1.,0.,0.));+#133 = ORIENTED_EDGE('',*,*,#134,.T.);+#134 = EDGE_CURVE('',#127,#22,#135,.T.);+#135 = LINE('',#136,#137);+#136 = CARTESIAN_POINT('',(-0.485,-0.25,0.185));+#137 = VECTOR('',#138,1.);+#138 = DIRECTION('',(1.,0.,0.));+#139 = ORIENTED_EDGE('',*,*,#47,.F.);+#140 = ORIENTED_EDGE('',*,*,#141,.T.);+#141 = EDGE_CURVE('',#40,#142,#144,.T.);+#142 = VERTEX_POINT('',#143);+#143 = CARTESIAN_POINT('',(0.4625,-0.25,0.185));+#144 = LINE('',#145,#146);+#145 = CARTESIAN_POINT('',(-0.485,-0.25,0.185));+#146 = VECTOR('',#147,1.);+#147 = DIRECTION('',(1.,0.,0.));+#148 = ORIENTED_EDGE('',*,*,#149,.T.);+#149 = EDGE_CURVE('',#142,#150,#152,.T.);+#150 = VERTEX_POINT('',#151);+#151 = CARTESIAN_POINT('',(0.485,-0.25,0.185));+#152 = LINE('',#153,#154);+#153 = CARTESIAN_POINT('',(-0.485,-0.25,0.185));+#154 = VECTOR('',#155,1.);+#155 = DIRECTION('',(1.,0.,0.));+#156 = ORIENTED_EDGE('',*,*,#157,.F.);+#157 = EDGE_CURVE('',#158,#150,#160,.T.);+#158 = VERTEX_POINT('',#159);+#159 = CARTESIAN_POINT('',(0.485,-0.25,1.5E-02));+#160 = LINE('',#161,#162);+#161 = CARTESIAN_POINT('',(0.485,-0.25,1.5E-02));+#162 = VECTOR('',#163,1.);+#163 = DIRECTION('',(0.,0.,1.));+#164 = ORIENTED_EDGE('',*,*,#165,.F.);+#165 = EDGE_CURVE('',#166,#158,#168,.T.);+#166 = VERTEX_POINT('',#167);+#167 = CARTESIAN_POINT('',(0.4625,-0.25,1.5E-02));+#168 = LINE('',#169,#170);+#169 = CARTESIAN_POINT('',(-0.485,-0.25,1.5E-02));+#170 = VECTOR('',#171,1.);+#171 = DIRECTION('',(1.,0.,0.));+#172 = ORIENTED_EDGE('',*,*,#173,.F.);+#173 = EDGE_CURVE('',#111,#166,#174,.T.);+#174 = LINE('',#175,#176);+#175 = CARTESIAN_POINT('',(-0.485,-0.25,1.5E-02));+#176 = VECTOR('',#177,1.);+#177 = DIRECTION('',(1.,0.,0.));+#178 = PLANE('',#179);+#179 = AXIS2_PLACEMENT_3D('',#180,#181,#182);+#180 = CARTESIAN_POINT('',(-0.485,-0.25,1.5E-02));+#181 = DIRECTION('',(0.,1.,0.));+#182 = DIRECTION('',(0.,0.,1.));+#183 = ADVANCED_FACE('',(#184),#202,.T.);+#184 = FACE_BOUND('',#185,.T.);+#185 = EDGE_LOOP('',(#186,#187,#188,#196));+#186 = ORIENTED_EDGE('',*,*,#86,.T.);+#187 = ORIENTED_EDGE('',*,*,#31,.T.);+#188 = ORIENTED_EDGE('',*,*,#189,.F.);+#189 = EDGE_CURVE('',#190,#32,#192,.T.);+#190 = VERTEX_POINT('',#191);+#191 = CARTESIAN_POINT('',(0.315,0.25,0.5));+#192 = LINE('',#193,#194);+#193 = CARTESIAN_POINT('',(0.315,0.25,0.5));+#194 = VECTOR('',#195,1.);+#195 = DIRECTION('',(0.,-1.,0.));+#196 = ORIENTED_EDGE('',*,*,#197,.F.);+#197 = EDGE_CURVE('',#87,#190,#198,.T.);+#198 = LINE('',#199,#200);+#199 = CARTESIAN_POINT('',(-0.315,0.25,0.5));+#200 = VECTOR('',#201,1.);+#201 = DIRECTION('',(1.,0.,0.));+#202 = PLANE('',#203);+#203 = AXIS2_PLACEMENT_3D('',#204,#205,#206);+#204 = CARTESIAN_POINT('',(-0.315,0.25,0.5));+#205 = DIRECTION('',(0.,0.,1.));+#206 = DIRECTION('',(1.,0.,0.));+#207 = ADVANCED_FACE('',(#208),#242,.T.);+#208 = FACE_BOUND('',#209,.T.);+#209 = EDGE_LOOP('',(#210,#211,#212,#220,#228,#236));+#210 = ORIENTED_EDGE('',*,*,#189,.T.);+#211 = ORIENTED_EDGE('',*,*,#39,.T.);+#212 = ORIENTED_EDGE('',*,*,#213,.F.);+#213 = EDGE_CURVE('',#214,#40,#216,.T.);+#214 = VERTEX_POINT('',#215);+#215 = CARTESIAN_POINT('',(0.35,-0.1875,0.185));+#216 = LINE('',#217,#218);+#217 = CARTESIAN_POINT('',(0.35,0.25,0.185));+#218 = VECTOR('',#219,1.);+#219 = DIRECTION('',(0.,-1.,0.));+#220 = ORIENTED_EDGE('',*,*,#221,.T.);+#221 = EDGE_CURVE('',#214,#222,#224,.T.);+#222 = VERTEX_POINT('',#223);+#223 = CARTESIAN_POINT('',(0.35,0.1875,0.185));+#224 = LINE('',#225,#226);+#225 = CARTESIAN_POINT('',(0.35,-0.25,0.185));+#226 = VECTOR('',#227,1.);+#227 = DIRECTION('',(0.,1.,0.));+#228 = ORIENTED_EDGE('',*,*,#229,.F.);+#229 = EDGE_CURVE('',#230,#222,#232,.T.);+#230 = VERTEX_POINT('',#231);+#231 = CARTESIAN_POINT('',(0.35,0.25,0.185));+#232 = LINE('',#233,#234);+#233 = CARTESIAN_POINT('',(0.35,0.25,0.185));+#234 = VECTOR('',#235,1.);+#235 = DIRECTION('',(0.,-1.,0.));+#236 = ORIENTED_EDGE('',*,*,#237,.F.);+#237 = EDGE_CURVE('',#190,#230,#238,.T.);+#238 = LINE('',#239,#240);+#239 = CARTESIAN_POINT('',(0.315,0.25,0.5));+#240 = VECTOR('',#241,1.);+#241 = DIRECTION('',(0.110431526075,0.,-0.993883734674));+#242 = PLANE('',#243);+#243 = AXIS2_PLACEMENT_3D('',#244,#245,#246);+#244 = CARTESIAN_POINT('',(0.315,0.25,0.5));+#245 = DIRECTION('',(0.993883734674,0.,0.110431526075));+#246 = DIRECTION('',(0.110431526075,0.,-0.993883734674));+#247 = ADVANCED_FACE('',(#248),#273,.T.);+#248 = FACE_BOUND('',#249,.T.);+#249 = EDGE_LOOP('',(#250,#258,#266,#272));+#250 = ORIENTED_EDGE('',*,*,#251,.F.);+#251 = EDGE_CURVE('',#252,#62,#254,.T.);+#252 = VERTEX_POINT('',#253);+#253 = CARTESIAN_POINT('',(-0.4625,0.25,0.185));+#254 = LINE('',#255,#256);+#255 = CARTESIAN_POINT('',(-0.485,0.25,0.185));+#256 = VECTOR('',#257,1.);+#257 = DIRECTION('',(1.,0.,0.));+#258 = ORIENTED_EDGE('',*,*,#259,.F.);+#259 = EDGE_CURVE('',#260,#252,#262,.T.);+#260 = VERTEX_POINT('',#261);+#261 = CARTESIAN_POINT('',(-0.4625,0.1875,0.185));+#262 = LINE('',#263,#264);+#263 = CARTESIAN_POINT('',(-0.4625,3.125E-02,0.185));+#264 = VECTOR('',#265,1.);+#265 = DIRECTION('',(0.,1.,0.));+#266 = ORIENTED_EDGE('',*,*,#267,.F.);+#267 = EDGE_CURVE('',#64,#260,#268,.T.);+#268 = LINE('',#269,#270);+#269 = CARTESIAN_POINT('',(-0.47375,0.1875,0.185));+#270 = VECTOR('',#271,1.);+#271 = DIRECTION('',(-1.,0.,0.));+#272 = ORIENTED_EDGE('',*,*,#61,.F.);+#273 = PLANE('',#274);+#274 = AXIS2_PLACEMENT_3D('',#275,#276,#277);+#275 = CARTESIAN_POINT('',(-0.485,-0.25,0.185));+#276 = DIRECTION('',(0.,0.,1.));+#277 = DIRECTION('',(1.,0.,0.));+#278 = ADVANCED_FACE('',(#279),#290,.T.);+#279 = FACE_BOUND('',#280,.T.);+#280 = EDGE_LOOP('',(#281,#282,#283,#284));+#281 = ORIENTED_EDGE('',*,*,#94,.T.);+#282 = ORIENTED_EDGE('',*,*,#197,.T.);+#283 = ORIENTED_EDGE('',*,*,#237,.T.);+#284 = ORIENTED_EDGE('',*,*,#285,.T.);+#285 = EDGE_CURVE('',#230,#62,#286,.T.);+#286 = LINE('',#287,#288);+#287 = CARTESIAN_POINT('',(0.35,0.25,0.185));+#288 = VECTOR('',#289,1.);+#289 = DIRECTION('',(-1.,0.,0.));+#290 = PLANE('',#291);+#291 = AXIS2_PLACEMENT_3D('',#292,#293,#294);+#292 = CARTESIAN_POINT('',(0.,0.25,0.336886104513));+#293 = DIRECTION('',(0.,1.,0.));+#294 = DIRECTION('',(0.,0.,1.));+#295 = ADVANCED_FACE('',(#296),#323,.T.);+#296 = FACE_BOUND('',#297,.F.);+#297 = EDGE_LOOP('',(#298,#299,#308,#316));+#298 = ORIENTED_EDGE('',*,*,#71,.F.);+#299 = ORIENTED_EDGE('',*,*,#300,.F.);+#300 = EDGE_CURVE('',#301,#72,#303,.T.);+#301 = VERTEX_POINT('',#302);+#302 = CARTESIAN_POINT('',(-0.365,-0.1875,0.2));+#303 = CIRCLE('',#304,1.5E-02);+#304 = AXIS2_PLACEMENT_3D('',#305,#306,#307);+#305 = CARTESIAN_POINT('',(-0.365,-0.1875,0.185));+#306 = DIRECTION('',(-0.,1.,0.));+#307 = DIRECTION('',(1.,0.,0.));+#308 = ORIENTED_EDGE('',*,*,#309,.T.);+#309 = EDGE_CURVE('',#301,#310,#312,.T.);+#310 = VERTEX_POINT('',#311);+#311 = CARTESIAN_POINT('',(-0.365,0.1875,0.2));+#312 = LINE('',#313,#314);+#313 = CARTESIAN_POINT('',(-0.365,-0.25,0.2));+#314 = VECTOR('',#315,1.);+#315 = DIRECTION('',(0.,1.,0.));+#316 = ORIENTED_EDGE('',*,*,#317,.T.);+#317 = EDGE_CURVE('',#310,#64,#318,.T.);+#318 = CIRCLE('',#319,1.5E-02);+#319 = AXIS2_PLACEMENT_3D('',#320,#321,#322);+#320 = CARTESIAN_POINT('',(-0.365,0.1875,0.185));+#321 = DIRECTION('',(-0.,1.,0.));+#322 = DIRECTION('',(1.,0.,0.));+#323 = CYLINDRICAL_SURFACE('',#324,1.5E-02);+#324 = AXIS2_PLACEMENT_3D('',#325,#326,#327);+#325 = CARTESIAN_POINT('',(-0.365,-0.25,0.185));+#326 = DIRECTION('',(0.,1.,0.));+#327 = DIRECTION('',(1.,0.,0.));+#328 = ADVANCED_FACE('',(#329),#347,.T.);+#329 = FACE_BOUND('',#330,.T.);+#330 = EDGE_LOOP('',(#331,#339,#340,#341));+#331 = ORIENTED_EDGE('',*,*,#332,.F.);+#332 = EDGE_CURVE('',#127,#333,#335,.T.);+#333 = VERTEX_POINT('',#334);+#334 = CARTESIAN_POINT('',(-0.4625,-0.1875,0.185));+#335 = LINE('',#336,#337);+#336 = CARTESIAN_POINT('',(-0.4625,-0.21875,0.185));+#337 = VECTOR('',#338,1.);+#338 = DIRECTION('',(0.,1.,0.));+#339 = ORIENTED_EDGE('',*,*,#134,.T.);+#340 = ORIENTED_EDGE('',*,*,#79,.F.);+#341 = ORIENTED_EDGE('',*,*,#342,.F.);+#342 = EDGE_CURVE('',#333,#72,#343,.T.);+#343 = LINE('',#344,#345);+#344 = CARTESIAN_POINT('',(-1.125E-02,-0.1875,0.185));+#345 = VECTOR('',#346,1.);+#346 = DIRECTION('',(1.,0.,0.));+#347 = PLANE('',#348);+#348 = AXIS2_PLACEMENT_3D('',#349,#350,#351);+#349 = CARTESIAN_POINT('',(-0.485,-0.25,0.185));+#350 = DIRECTION('',(0.,0.,1.));+#351 = DIRECTION('',(1.,0.,0.));+#352 = ADVANCED_FACE('',(#353),#414,.F.);+#353 = FACE_BOUND('',#354,.F.);+#354 = EDGE_LOOP('',(#355,#365,#374,#382,#391,#399,#405,#406,#407,#408)+);+#355 = ORIENTED_EDGE('',*,*,#356,.F.);+#356 = EDGE_CURVE('',#357,#359,#361,.T.);+#357 = VERTEX_POINT('',#358);+#358 = CARTESIAN_POINT('',(-0.485,-0.25,-1.734723475977E-18));+#359 = VERTEX_POINT('',#360);+#360 = CARTESIAN_POINT('',(-0.4625,-0.25,0.));+#361 = LINE('',#362,#363);+#362 = CARTESIAN_POINT('',(-0.5,-0.25,0.));+#363 = VECTOR('',#364,1.);+#364 = DIRECTION('',(1.,0.,0.));+#365 = ORIENTED_EDGE('',*,*,#366,.F.);+#366 = EDGE_CURVE('',#367,#357,#369,.T.);+#367 = VERTEX_POINT('',#368);+#368 = CARTESIAN_POINT('',(-0.5,-0.25,1.5E-02));+#369 = CIRCLE('',#370,1.5E-02);+#370 = AXIS2_PLACEMENT_3D('',#371,#372,#373);+#371 = CARTESIAN_POINT('',(-0.485,-0.25,1.5E-02));+#372 = DIRECTION('',(0.,-1.,0.));+#373 = DIRECTION('',(0.,0.,1.));+#374 = ORIENTED_EDGE('',*,*,#375,.T.);+#375 = EDGE_CURVE('',#367,#376,#378,.T.);+#376 = VERTEX_POINT('',#377);+#377 = CARTESIAN_POINT('',(-0.5,-0.25,0.185));+#378 = LINE('',#379,#380);+#379 = CARTESIAN_POINT('',(-0.5,-0.25,0.));+#380 = VECTOR('',#381,1.);+#381 = DIRECTION('',(0.,0.,1.));+#382 = ORIENTED_EDGE('',*,*,#383,.T.);+#383 = EDGE_CURVE('',#376,#384,#386,.T.);+#384 = VERTEX_POINT('',#385);+#385 = CARTESIAN_POINT('',(-0.485,-0.25,0.2));+#386 = CIRCLE('',#387,1.5E-02);+#387 = AXIS2_PLACEMENT_3D('',#388,#389,#390);+#388 = CARTESIAN_POINT('',(-0.485,-0.25,0.185));+#389 = DIRECTION('',(0.,1.,0.));+#390 = DIRECTION('',(0.,0.,1.));+#391 = ORIENTED_EDGE('',*,*,#392,.T.);+#392 = EDGE_CURVE('',#384,#393,#395,.T.);+#393 = VERTEX_POINT('',#394);+#394 = CARTESIAN_POINT('',(-0.4625,-0.25,0.2));+#395 = LINE('',#396,#397);+#396 = CARTESIAN_POINT('',(-0.5,-0.25,0.2));+#397 = VECTOR('',#398,1.);+#398 = DIRECTION('',(1.,0.,0.));+#399 = ORIENTED_EDGE('',*,*,#400,.F.);+#400 = EDGE_CURVE('',#127,#393,#401,.T.);+#401 = LINE('',#402,#403);+#402 = CARTESIAN_POINT('',(-0.4625,-0.25,0.15));+#403 = VECTOR('',#404,1.);+#404 = DIRECTION('',(0.,0.,1.));+#405 = ORIENTED_EDGE('',*,*,#126,.F.);+#406 = ORIENTED_EDGE('',*,*,#118,.F.);+#407 = ORIENTED_EDGE('',*,*,#108,.T.);+#408 = ORIENTED_EDGE('',*,*,#409,.F.);+#409 = EDGE_CURVE('',#359,#111,#410,.T.);+#410 = LINE('',#411,#412);+#411 = CARTESIAN_POINT('',(-0.4625,-0.25,0.15));+#412 = VECTOR('',#413,1.);+#413 = DIRECTION('',(0.,0.,1.));+#414 = PLANE('',#415);+#415 = AXIS2_PLACEMENT_3D('',#416,#417,#418);+#416 = CARTESIAN_POINT('',(-0.5,-0.25,0.));+#417 = DIRECTION('',(0.,1.,0.));+#418 = DIRECTION('',(0.,0.,1.));+#419 = ADVANCED_FACE('',(#420,#509),#535,.F.);+#420 = FACE_BOUND('',#421,.F.);+#421 = EDGE_LOOP('',(#422,#430,#431,#439,#447,#455,#463,#471,#479,#487,+#495,#503));+#422 = ORIENTED_EDGE('',*,*,#423,.F.);+#423 = EDGE_CURVE('',#111,#424,#426,.T.);+#424 = VERTEX_POINT('',#425);+#425 = CARTESIAN_POINT('',(-0.4625,-0.1875,1.5E-02));+#426 = LINE('',#427,#428);+#427 = CARTESIAN_POINT('',(-0.4625,-0.21875,1.5E-02));+#428 = VECTOR('',#429,1.);+#429 = DIRECTION('',(0.,1.,0.));+#430 = ORIENTED_EDGE('',*,*,#173,.T.);+#431 = ORIENTED_EDGE('',*,*,#432,.F.);+#432 = EDGE_CURVE('',#433,#166,#435,.T.);+#433 = VERTEX_POINT('',#434);+#434 = CARTESIAN_POINT('',(0.4625,-0.1875,1.5E-02));+#435 = LINE('',#436,#437);+#436 = CARTESIAN_POINT('',(0.4625,-0.28125,1.5E-02));+#437 = VECTOR('',#438,1.);+#438 = DIRECTION('',(0.,-1.,0.));+#439 = ORIENTED_EDGE('',*,*,#440,.F.);+#440 = EDGE_CURVE('',#441,#433,#443,.T.);+#441 = VERTEX_POINT('',#442);+#442 = CARTESIAN_POINT('',(0.35,-0.1875,1.5E-02));+#443 = LINE('',#444,#445);+#444 = CARTESIAN_POINT('',(-1.125E-02,-0.1875,1.5E-02));+#445 = VECTOR('',#446,1.);+#446 = DIRECTION('',(1.,0.,0.));+#447 = ORIENTED_EDGE('',*,*,#448,.T.);+#448 = EDGE_CURVE('',#441,#449,#451,.T.);+#449 = VERTEX_POINT('',#450);+#450 = CARTESIAN_POINT('',(0.35,0.1875,1.5E-02));+#451 = LINE('',#452,#453);+#452 = CARTESIAN_POINT('',(0.35,-0.25,1.5E-02));+#453 = VECTOR('',#454,1.);+#454 = DIRECTION('',(0.,1.,0.));+#455 = ORIENTED_EDGE('',*,*,#456,.F.);+#456 = EDGE_CURVE('',#457,#449,#459,.T.);+#457 = VERTEX_POINT('',#458);+#458 = CARTESIAN_POINT('',(0.4625,0.1875,1.5E-02));+#459 = LINE('',#460,#461);+#460 = CARTESIAN_POINT('',(-0.47375,0.1875,1.5E-02));+#461 = VECTOR('',#462,1.);+#462 = DIRECTION('',(-1.,0.,0.));+#463 = ORIENTED_EDGE('',*,*,#464,.F.);+#464 = EDGE_CURVE('',#465,#457,#467,.T.);+#465 = VERTEX_POINT('',#466);+#466 = CARTESIAN_POINT('',(0.4625,0.25,1.5E-02));+#467 = LINE('',#468,#469);+#468 = CARTESIAN_POINT('',(0.4625,-3.125E-02,1.5E-02));+#469 = VECTOR('',#470,1.);+#470 = DIRECTION('',(0.,-1.,0.));+#471 = ORIENTED_EDGE('',*,*,#472,.F.);+#472 = EDGE_CURVE('',#473,#465,#475,.T.);+#473 = VERTEX_POINT('',#474);+#474 = CARTESIAN_POINT('',(-0.4625,0.25,1.5E-02));+#475 = LINE('',#476,#477);+#476 = CARTESIAN_POINT('',(-0.485,0.25,1.5E-02));+#477 = VECTOR('',#478,1.);+#478 = DIRECTION('',(1.,0.,0.));+#479 = ORIENTED_EDGE('',*,*,#480,.F.);+#480 = EDGE_CURVE('',#481,#473,#483,.T.);+#481 = VERTEX_POINT('',#482);+#482 = CARTESIAN_POINT('',(-0.4625,0.1875,1.5E-02));+#483 = LINE('',#484,#485);+#484 = CARTESIAN_POINT('',(-0.4625,3.125E-02,1.5E-02));+#485 = VECTOR('',#486,1.);+#486 = DIRECTION('',(0.,1.,0.));+#487 = ORIENTED_EDGE('',*,*,#488,.F.);+#488 = EDGE_CURVE('',#489,#481,#491,.T.);+#489 = VERTEX_POINT('',#490);+#490 = CARTESIAN_POINT('',(-0.35,0.1875,1.5E-02));+#491 = LINE('',#492,#493);+#492 = CARTESIAN_POINT('',(-0.47375,0.1875,1.5E-02));+#493 = VECTOR('',#494,1.);+#494 = DIRECTION('',(-1.,0.,0.));+#495 = ORIENTED_EDGE('',*,*,#496,.F.);+#496 = EDGE_CURVE('',#497,#489,#499,.T.);+#497 = VERTEX_POINT('',#498);+#498 = CARTESIAN_POINT('',(-0.35,-0.1875,1.5E-02));+#499 = LINE('',#500,#501);+#500 = CARTESIAN_POINT('',(-0.35,-0.25,1.5E-02));+#501 = VECTOR('',#502,1.);+#502 = DIRECTION('',(0.,1.,0.));+#503 = ORIENTED_EDGE('',*,*,#504,.F.);+#504 = EDGE_CURVE('',#424,#497,#505,.T.);+#505 = LINE('',#506,#507);+#506 = CARTESIAN_POINT('',(-1.125E-02,-0.1875,1.5E-02));+#507 = VECTOR('',#508,1.);+#508 = DIRECTION('',(1.,0.,0.));+#509 = FACE_BOUND('',#510,.F.);+#510 = EDGE_LOOP('',(#511,#521,#529));+#511 = ORIENTED_EDGE('',*,*,#512,.T.);+#512 = EDGE_CURVE('',#513,#515,#517,.T.);+#513 = VERTEX_POINT('',#514);+#514 = CARTESIAN_POINT('',(0.173205080757,0.2,1.5E-02));+#515 = VERTEX_POINT('',#516);+#516 = CARTESIAN_POINT('',(0.173205080757,-0.2,1.5E-02));+#517 = LINE('',#518,#519);+#518 = CARTESIAN_POINT('',(0.173205080757,0.2,1.5E-02));+#519 = VECTOR('',#520,1.);+#520 = DIRECTION('',(0.,-1.,0.));+#521 = ORIENTED_EDGE('',*,*,#522,.T.);+#522 = EDGE_CURVE('',#515,#523,#525,.T.);+#523 = VERTEX_POINT('',#524);+#524 = CARTESIAN_POINT('',(-0.173205080757,0.,1.5E-02));+#525 = LINE('',#526,#527);+#526 = CARTESIAN_POINT('',(0.173205080757,-0.2,1.5E-02));+#527 = VECTOR('',#528,1.);+#528 = DIRECTION('',(-0.866025403784,0.5,0.));+#529 = ORIENTED_EDGE('',*,*,#530,.T.);+#530 = EDGE_CURVE('',#523,#513,#531,.T.);+#531 = LINE('',#532,#533);+#532 = CARTESIAN_POINT('',(-0.173205080757,0.,1.5E-02));+#533 = VECTOR('',#534,1.);+#534 = DIRECTION('',(0.866025403784,0.5,0.));+#535 = PLANE('',#536);+#536 = AXIS2_PLACEMENT_3D('',#537,#538,#539);+#537 = CARTESIAN_POINT('',(-0.485,-0.25,1.5E-02));+#538 = DIRECTION('',(0.,0.,1.));+#539 = DIRECTION('',(1.,0.,0.));+#540 = ADVANCED_FACE('',(#541),#602,.F.);+#541 = FACE_BOUND('',#542,.F.);+#542 = EDGE_LOOP('',(#543,#553,#559,#560,#561,#562,#570,#578,#587,#595)+);+#543 = ORIENTED_EDGE('',*,*,#544,.F.);+#544 = EDGE_CURVE('',#545,#547,#549,.T.);+#545 = VERTEX_POINT('',#546);+#546 = CARTESIAN_POINT('',(0.4625,-0.25,0.));+#547 = VERTEX_POINT('',#548);+#548 = CARTESIAN_POINT('',(0.485,-0.25,-1.734723475977E-18));+#549 = LINE('',#550,#551);+#550 = CARTESIAN_POINT('',(0.35,-0.25,0.));+#551 = VECTOR('',#552,1.);+#552 = DIRECTION('',(1.,0.,0.));+#553 = ORIENTED_EDGE('',*,*,#554,.F.);+#554 = EDGE_CURVE('',#166,#545,#555,.T.);+#555 = LINE('',#556,#557);+#556 = CARTESIAN_POINT('',(0.4625,-0.25,0.15));+#557 = VECTOR('',#558,1.);+#558 = DIRECTION('',(0.,0.,-1.));+#559 = ORIENTED_EDGE('',*,*,#165,.T.);+#560 = ORIENTED_EDGE('',*,*,#157,.T.);+#561 = ORIENTED_EDGE('',*,*,#149,.F.);+#562 = ORIENTED_EDGE('',*,*,#563,.F.);+#563 = EDGE_CURVE('',#564,#142,#566,.T.);+#564 = VERTEX_POINT('',#565);+#565 = CARTESIAN_POINT('',(0.4625,-0.25,0.2));+#566 = LINE('',#567,#568);+#567 = CARTESIAN_POINT('',(0.4625,-0.25,0.15));+#568 = VECTOR('',#569,1.);+#569 = DIRECTION('',(0.,0.,-1.));+#570 = ORIENTED_EDGE('',*,*,#571,.T.);+#571 = EDGE_CURVE('',#564,#572,#574,.T.);+#572 = VERTEX_POINT('',#573);+#573 = CARTESIAN_POINT('',(0.485,-0.25,0.2));+#574 = LINE('',#575,#576);+#575 = CARTESIAN_POINT('',(0.35,-0.25,0.2));+#576 = VECTOR('',#577,1.);+#577 = DIRECTION('',(1.,0.,0.));+#578 = ORIENTED_EDGE('',*,*,#579,.F.);+#579 = EDGE_CURVE('',#580,#572,#582,.T.);+#580 = VERTEX_POINT('',#581);+#581 = CARTESIAN_POINT('',(0.5,-0.25,0.185));+#582 = CIRCLE('',#583,1.5E-02);+#583 = AXIS2_PLACEMENT_3D('',#584,#585,#586);+#584 = CARTESIAN_POINT('',(0.485,-0.25,0.185));+#585 = DIRECTION('',(0.,-1.,0.));+#586 = DIRECTION('',(0.,0.,1.));+#587 = ORIENTED_EDGE('',*,*,#588,.F.);+#588 = EDGE_CURVE('',#589,#580,#591,.T.);+#589 = VERTEX_POINT('',#590);+#590 = CARTESIAN_POINT('',(0.5,-0.25,1.5E-02));+#591 = LINE('',#592,#593);+#592 = CARTESIAN_POINT('',(0.5,-0.25,0.));+#593 = VECTOR('',#594,1.);+#594 = DIRECTION('',(0.,0.,1.));+#595 = ORIENTED_EDGE('',*,*,#596,.T.);+#596 = EDGE_CURVE('',#589,#547,#597,.T.);+#597 = CIRCLE('',#598,1.5E-02);+#598 = AXIS2_PLACEMENT_3D('',#599,#600,#601);+#599 = CARTESIAN_POINT('',(0.485,-0.25,1.5E-02));+#600 = DIRECTION('',(0.,1.,0.));+#601 = DIRECTION('',(0.,0.,1.));+#602 = PLANE('',#603);+#603 = AXIS2_PLACEMENT_3D('',#604,#605,#606);+#604 = CARTESIAN_POINT('',(0.35,-0.25,0.));+#605 = DIRECTION('',(0.,1.,0.));+#606 = DIRECTION('',(0.,0.,1.));+#607 = ADVANCED_FACE('',(#608),#626,.T.);+#608 = FACE_BOUND('',#609,.T.);+#609 = EDGE_LOOP('',(#610,#618,#619,#620));+#610 = ORIENTED_EDGE('',*,*,#611,.F.);+#611 = EDGE_CURVE('',#214,#612,#614,.T.);+#612 = VERTEX_POINT('',#613);+#613 = CARTESIAN_POINT('',(0.4625,-0.1875,0.185));+#614 = LINE('',#615,#616);+#615 = CARTESIAN_POINT('',(-1.125E-02,-0.1875,0.185));+#616 = VECTOR('',#617,1.);+#617 = DIRECTION('',(1.,0.,0.));+#618 = ORIENTED_EDGE('',*,*,#213,.T.);+#619 = ORIENTED_EDGE('',*,*,#141,.T.);+#620 = ORIENTED_EDGE('',*,*,#621,.F.);+#621 = EDGE_CURVE('',#612,#142,#622,.T.);+#622 = LINE('',#623,#624);+#623 = CARTESIAN_POINT('',(0.4625,-0.28125,0.185));+#624 = VECTOR('',#625,1.);+#625 = DIRECTION('',(0.,-1.,0.));+#626 = PLANE('',#627);+#627 = AXIS2_PLACEMENT_3D('',#628,#629,#630);+#628 = CARTESIAN_POINT('',(-0.485,-0.25,0.185));+#629 = DIRECTION('',(0.,0.,1.));+#630 = DIRECTION('',(1.,0.,0.));+#631 = ADVANCED_FACE('',(#632),#657,.T.);+#632 = FACE_BOUND('',#633,.T.);+#633 = EDGE_LOOP('',(#634,#642,#643,#651));+#634 = ORIENTED_EDGE('',*,*,#635,.F.);+#635 = EDGE_CURVE('',#230,#636,#638,.T.);+#636 = VERTEX_POINT('',#637);+#637 = CARTESIAN_POINT('',(0.4625,0.25,0.185));+#638 = LINE('',#639,#640);+#639 = CARTESIAN_POINT('',(-0.485,0.25,0.185));+#640 = VECTOR('',#641,1.);+#641 = DIRECTION('',(1.,0.,0.));+#642 = ORIENTED_EDGE('',*,*,#229,.T.);+#643 = ORIENTED_EDGE('',*,*,#644,.F.);+#644 = EDGE_CURVE('',#645,#222,#647,.T.);+#645 = VERTEX_POINT('',#646);+#646 = CARTESIAN_POINT('',(0.4625,0.1875,0.185));+#647 = LINE('',#648,#649);+#648 = CARTESIAN_POINT('',(-0.47375,0.1875,0.185));+#649 = VECTOR('',#650,1.);+#650 = DIRECTION('',(-1.,0.,0.));+#651 = ORIENTED_EDGE('',*,*,#652,.F.);+#652 = EDGE_CURVE('',#636,#645,#653,.T.);+#653 = LINE('',#654,#655);+#654 = CARTESIAN_POINT('',(0.4625,-3.125E-02,0.185));+#655 = VECTOR('',#656,1.);+#656 = DIRECTION('',(0.,-1.,0.));+#657 = PLANE('',#658);+#658 = AXIS2_PLACEMENT_3D('',#659,#660,#661);+#659 = CARTESIAN_POINT('',(-0.485,-0.25,0.185));+#660 = DIRECTION('',(0.,0.,1.));+#661 = DIRECTION('',(1.,0.,0.));+#662 = ADVANCED_FACE('',(#663),#690,.T.);+#663 = FACE_BOUND('',#664,.T.);+#664 = EDGE_LOOP('',(#665,#666,#675,#683));+#665 = ORIENTED_EDGE('',*,*,#221,.F.);+#666 = ORIENTED_EDGE('',*,*,#667,.T.);+#667 = EDGE_CURVE('',#214,#668,#670,.T.);+#668 = VERTEX_POINT('',#669);+#669 = CARTESIAN_POINT('',(0.365,-0.1875,0.2));+#670 = CIRCLE('',#671,1.5E-02);+#671 = AXIS2_PLACEMENT_3D('',#672,#673,#674);+#672 = CARTESIAN_POINT('',(0.365,-0.1875,0.185));+#673 = DIRECTION('',(0.,1.,-0.));+#674 = DIRECTION('',(-1.,0.,0.));+#675 = ORIENTED_EDGE('',*,*,#676,.T.);+#676 = EDGE_CURVE('',#668,#677,#679,.T.);+#677 = VERTEX_POINT('',#678);+#678 = CARTESIAN_POINT('',(0.365,0.1875,0.2));+#679 = LINE('',#680,#681);+#680 = CARTESIAN_POINT('',(0.365,-0.25,0.2));+#681 = VECTOR('',#682,1.);+#682 = DIRECTION('',(0.,1.,0.));+#683 = ORIENTED_EDGE('',*,*,#684,.F.);+#684 = EDGE_CURVE('',#222,#677,#685,.T.);+#685 = CIRCLE('',#686,1.5E-02);+#686 = AXIS2_PLACEMENT_3D('',#687,#688,#689);+#687 = CARTESIAN_POINT('',(0.365,0.1875,0.185));+#688 = DIRECTION('',(0.,1.,-0.));+#689 = DIRECTION('',(-1.,0.,0.));+#690 = CYLINDRICAL_SURFACE('',#691,1.5E-02);+#691 = AXIS2_PLACEMENT_3D('',#692,#693,#694);+#692 = CARTESIAN_POINT('',(0.365,-0.25,0.185));+#693 = DIRECTION('',(0.,1.,0.));+#694 = DIRECTION('',(-1.,0.,0.));+#695 = ADVANCED_FACE('',(#696),#746,.T.);+#696 = FACE_BOUND('',#697,.T.);+#697 = EDGE_LOOP('',(#698,#706,#714,#720,#721,#722,#723,#731,#739,#745)+);+#698 = ORIENTED_EDGE('',*,*,#699,.F.);+#699 = EDGE_CURVE('',#700,#473,#702,.T.);+#700 = VERTEX_POINT('',#701);+#701 = CARTESIAN_POINT('',(-0.485,0.25,1.5E-02));+#702 = LINE('',#703,#704);+#703 = CARTESIAN_POINT('',(-0.485,0.25,1.5E-02));+#704 = VECTOR('',#705,1.);+#705 = DIRECTION('',(1.,0.,0.));+#706 = ORIENTED_EDGE('',*,*,#707,.T.);+#707 = EDGE_CURVE('',#700,#708,#710,.T.);+#708 = VERTEX_POINT('',#709);+#709 = CARTESIAN_POINT('',(-0.485,0.25,0.185));+#710 = LINE('',#711,#712);+#711 = CARTESIAN_POINT('',(-0.485,0.25,1.5E-02));+#712 = VECTOR('',#713,1.);+#713 = DIRECTION('',(0.,0.,1.));+#714 = ORIENTED_EDGE('',*,*,#715,.T.);+#715 = EDGE_CURVE('',#708,#252,#716,.T.);+#716 = LINE('',#717,#718);+#717 = CARTESIAN_POINT('',(-0.485,0.25,0.185));+#718 = VECTOR('',#719,1.);+#719 = DIRECTION('',(1.,0.,0.));+#720 = ORIENTED_EDGE('',*,*,#251,.T.);+#721 = ORIENTED_EDGE('',*,*,#285,.F.);+#722 = ORIENTED_EDGE('',*,*,#635,.T.);+#723 = ORIENTED_EDGE('',*,*,#724,.T.);+#724 = EDGE_CURVE('',#636,#725,#727,.T.);+#725 = VERTEX_POINT('',#726);+#726 = CARTESIAN_POINT('',(0.485,0.25,0.185));+#727 = LINE('',#728,#729);+#728 = CARTESIAN_POINT('',(-0.485,0.25,0.185));+#729 = VECTOR('',#730,1.);+#730 = DIRECTION('',(1.,0.,0.));+#731 = ORIENTED_EDGE('',*,*,#732,.F.);+#732 = EDGE_CURVE('',#733,#725,#735,.T.);+#733 = VERTEX_POINT('',#734);+#734 = CARTESIAN_POINT('',(0.485,0.25,1.5E-02));+#735 = LINE('',#736,#737);+#736 = CARTESIAN_POINT('',(0.485,0.25,1.5E-02));+#737 = VECTOR('',#738,1.);+#738 = DIRECTION('',(0.,0.,1.));+#739 = ORIENTED_EDGE('',*,*,#740,.F.);+#740 = EDGE_CURVE('',#465,#733,#741,.T.);+#741 = LINE('',#742,#743);+#742 = CARTESIAN_POINT('',(-0.485,0.25,1.5E-02));+#743 = VECTOR('',#744,1.);+#744 = DIRECTION('',(1.,0.,0.));+#745 = ORIENTED_EDGE('',*,*,#472,.F.);+#746 = PLANE('',#747);+#747 = AXIS2_PLACEMENT_3D('',#748,#749,#750);+#748 = CARTESIAN_POINT('',(-0.485,0.25,1.5E-02));+#749 = DIRECTION('',(0.,1.,0.));+#750 = DIRECTION('',(0.,0.,1.));+#751 = ADVANCED_FACE('',(#752),#770,.F.);+#752 = FACE_BOUND('',#753,.F.);+#753 = EDGE_LOOP('',(#754,#762,#768,#769));+#754 = ORIENTED_EDGE('',*,*,#755,.F.);+#755 = EDGE_CURVE('',#756,#310,#758,.T.);+#756 = VERTEX_POINT('',#757);+#757 = CARTESIAN_POINT('',(-0.4625,0.1875,0.2));+#758 = LINE('',#759,#760);+#759 = CARTESIAN_POINT('',(-0.48125,0.1875,0.2));+#760 = VECTOR('',#761,1.);+#761 = DIRECTION('',(1.,0.,0.));+#762 = ORIENTED_EDGE('',*,*,#763,.T.);+#763 = EDGE_CURVE('',#756,#260,#764,.T.);+#764 = LINE('',#765,#766);+#765 = CARTESIAN_POINT('',(-0.4625,0.1875,0.3));+#766 = VECTOR('',#767,1.);+#767 = DIRECTION('',(-0.,-0.,-1.));+#768 = ORIENTED_EDGE('',*,*,#267,.F.);+#769 = ORIENTED_EDGE('',*,*,#317,.F.);+#770 = PLANE('',#771);+#771 = AXIS2_PLACEMENT_3D('',#772,#773,#774);+#772 = CARTESIAN_POINT('',(-0.4625,0.1875,0.3));+#773 = DIRECTION('',(0.,-1.,0.));+#774 = DIRECTION('',(1.,0.,0.));+#775 = ADVANCED_FACE('',(#776),#794,.F.);+#776 = FACE_BOUND('',#777,.F.);+#777 = EDGE_LOOP('',(#778,#779,#787,#793));+#778 = ORIENTED_EDGE('',*,*,#763,.F.);+#779 = ORIENTED_EDGE('',*,*,#780,.F.);+#780 = EDGE_CURVE('',#781,#756,#783,.T.);+#781 = VERTEX_POINT('',#782);+#782 = CARTESIAN_POINT('',(-0.4625,0.25,0.2));+#783 = LINE('',#784,#785);+#784 = CARTESIAN_POINT('',(-0.4625,3.125E-02,0.2));+#785 = VECTOR('',#786,1.);+#786 = DIRECTION('',(0.,-1.,0.));+#787 = ORIENTED_EDGE('',*,*,#788,.F.);+#788 = EDGE_CURVE('',#252,#781,#789,.T.);+#789 = LINE('',#790,#791);+#790 = CARTESIAN_POINT('',(-0.4625,0.25,0.15));+#791 = VECTOR('',#792,1.);+#792 = DIRECTION('',(0.,0.,1.));+#793 = ORIENTED_EDGE('',*,*,#259,.F.);+#794 = PLANE('',#795);+#795 = AXIS2_PLACEMENT_3D('',#796,#797,#798);+#796 = CARTESIAN_POINT('',(-0.4625,0.3125,0.3));+#797 = DIRECTION('',(-1.,0.,0.));+#798 = DIRECTION('',(0.,-1.,0.));+#799 = ADVANCED_FACE('',(#800),#818,.F.);+#800 = FACE_BOUND('',#801,.F.);+#801 = EDGE_LOOP('',(#802,#810,#816,#817));+#802 = ORIENTED_EDGE('',*,*,#803,.F.);+#803 = EDGE_CURVE('',#804,#333,#806,.T.);+#804 = VERTEX_POINT('',#805);+#805 = CARTESIAN_POINT('',(-0.4625,-0.1875,0.2));+#806 = LINE('',#807,#808);+#807 = CARTESIAN_POINT('',(-0.4625,-0.1875,0.3));+#808 = VECTOR('',#809,1.);+#809 = DIRECTION('',(-0.,-0.,-1.));+#810 = ORIENTED_EDGE('',*,*,#811,.F.);+#811 = EDGE_CURVE('',#301,#804,#812,.T.);+#812 = LINE('',#813,#814);+#813 = CARTESIAN_POINT('',(-1.875E-02,-0.1875,0.2));+#814 = VECTOR('',#815,1.);+#815 = DIRECTION('',(-1.,0.,0.));+#816 = ORIENTED_EDGE('',*,*,#300,.T.);+#817 = ORIENTED_EDGE('',*,*,#342,.F.);+#818 = PLANE('',#819);+#819 = AXIS2_PLACEMENT_3D('',#820,#821,#822);+#820 = CARTESIAN_POINT('',(0.4625,-0.1875,0.3));+#821 = DIRECTION('',(0.,1.,0.));+#822 = DIRECTION('',(-1.,0.,0.));+#823 = ADVANCED_FACE('',(#824),#851,.T.);+#824 = FACE_BOUND('',#825,.T.);+#825 = EDGE_LOOP('',(#826,#834,#840,#841,#847,#848,#849,#850));+#826 = ORIENTED_EDGE('',*,*,#827,.F.);+#827 = EDGE_CURVE('',#828,#781,#830,.T.);+#828 = VERTEX_POINT('',#829);+#829 = CARTESIAN_POINT('',(-0.485,0.25,0.2));+#830 = LINE('',#831,#832);+#831 = CARTESIAN_POINT('',(-0.5,0.25,0.2));+#832 = VECTOR('',#833,1.);+#833 = DIRECTION('',(1.,0.,0.));+#834 = ORIENTED_EDGE('',*,*,#835,.F.);+#835 = EDGE_CURVE('',#384,#828,#836,.T.);+#836 = LINE('',#837,#838);+#837 = CARTESIAN_POINT('',(-0.485,-0.25,0.2));+#838 = VECTOR('',#839,1.);+#839 = DIRECTION('',(0.,1.,0.));+#840 = ORIENTED_EDGE('',*,*,#392,.T.);+#841 = ORIENTED_EDGE('',*,*,#842,.F.);+#842 = EDGE_CURVE('',#804,#393,#843,.T.);+#843 = LINE('',#844,#845);+#844 = CARTESIAN_POINT('',(-0.4625,-0.21875,0.2));+#845 = VECTOR('',#846,1.);+#846 = DIRECTION('',(0.,-1.,0.));+#847 = ORIENTED_EDGE('',*,*,#811,.F.);+#848 = ORIENTED_EDGE('',*,*,#309,.T.);+#849 = ORIENTED_EDGE('',*,*,#755,.F.);+#850 = ORIENTED_EDGE('',*,*,#780,.F.);+#851 = PLANE('',#852);+#852 = AXIS2_PLACEMENT_3D('',#853,#854,#855);+#853 = CARTESIAN_POINT('',(-0.5,-0.25,0.2));+#854 = DIRECTION('',(0.,0.,1.));+#855 = DIRECTION('',(1.,0.,0.));+#856 = ADVANCED_FACE('',(#857),#863,.F.);+#857 = FACE_BOUND('',#858,.F.);+#858 = EDGE_LOOP('',(#859,#860,#861,#862));+#859 = ORIENTED_EDGE('',*,*,#842,.F.);+#860 = ORIENTED_EDGE('',*,*,#803,.T.);+#861 = ORIENTED_EDGE('',*,*,#332,.F.);+#862 = ORIENTED_EDGE('',*,*,#400,.T.);+#863 = PLANE('',#864);+#864 = AXIS2_PLACEMENT_3D('',#865,#866,#867);+#865 = CARTESIAN_POINT('',(-0.4625,-0.1875,0.3));+#866 = DIRECTION('',(-1.,0.,0.));+#867 = DIRECTION('',(0.,-1.,0.));+#868 = ADVANCED_FACE('',(#869),#926,.F.);+#869 = FACE_BOUND('',#870,.F.);+#870 = EDGE_LOOP('',(#871,#881,#887,#888,#896,#904,#912,#920));+#871 = ORIENTED_EDGE('',*,*,#872,.F.);+#872 = EDGE_CURVE('',#873,#875,#877,.T.);+#873 = VERTEX_POINT('',#874);+#874 = CARTESIAN_POINT('',(-0.485,0.25,-1.734723475977E-18));+#875 = VERTEX_POINT('',#876);+#876 = CARTESIAN_POINT('',(-0.4625,0.25,0.));+#877 = LINE('',#878,#879);+#878 = CARTESIAN_POINT('',(-0.5,0.25,0.));+#879 = VECTOR('',#880,1.);+#880 = DIRECTION('',(1.,0.,0.));+#881 = ORIENTED_EDGE('',*,*,#882,.F.);+#882 = EDGE_CURVE('',#357,#873,#883,.T.);+#883 = LINE('',#884,#885);+#884 = CARTESIAN_POINT('',(-0.485,-0.25,-1.734723475977E-18));+#885 = VECTOR('',#886,1.);+#886 = DIRECTION('',(0.,1.,0.));+#887 = ORIENTED_EDGE('',*,*,#356,.T.);+#888 = ORIENTED_EDGE('',*,*,#889,.F.);+#889 = EDGE_CURVE('',#890,#359,#892,.T.);+#890 = VERTEX_POINT('',#891);+#891 = CARTESIAN_POINT('',(-0.4625,-0.1875,0.));+#892 = LINE('',#893,#894);+#893 = CARTESIAN_POINT('',(-0.4625,-0.21875,0.));+#894 = VECTOR('',#895,1.);+#895 = DIRECTION('',(0.,-1.,0.));+#896 = ORIENTED_EDGE('',*,*,#897,.F.);+#897 = EDGE_CURVE('',#898,#890,#900,.T.);+#898 = VERTEX_POINT('',#899);+#899 = CARTESIAN_POINT('',(-0.365,-0.1875,-1.734723475977E-18));+#900 = LINE('',#901,#902);+#901 = CARTESIAN_POINT('',(-1.875E-02,-0.1875,0.));+#902 = VECTOR('',#903,1.);+#903 = DIRECTION('',(-1.,0.,0.));+#904 = ORIENTED_EDGE('',*,*,#905,.T.);+#905 = EDGE_CURVE('',#898,#906,#908,.T.);+#906 = VERTEX_POINT('',#907);+#907 = CARTESIAN_POINT('',(-0.365,0.1875,-1.734723475977E-18));+#908 = LINE('',#909,#910);+#909 = CARTESIAN_POINT('',(-0.365,-0.25,-1.734723475977E-18));+#910 = VECTOR('',#911,1.);+#911 = DIRECTION('',(0.,1.,0.));+#912 = ORIENTED_EDGE('',*,*,#913,.F.);+#913 = EDGE_CURVE('',#914,#906,#916,.T.);+#914 = VERTEX_POINT('',#915);+#915 = CARTESIAN_POINT('',(-0.4625,0.1875,0.));+#916 = LINE('',#917,#918);+#917 = CARTESIAN_POINT('',(-0.48125,0.1875,0.));+#918 = VECTOR('',#919,1.);+#919 = DIRECTION('',(1.,0.,0.));+#920 = ORIENTED_EDGE('',*,*,#921,.F.);+#921 = EDGE_CURVE('',#875,#914,#922,.T.);+#922 = LINE('',#923,#924);+#923 = CARTESIAN_POINT('',(-0.4625,3.125E-02,0.));+#924 = VECTOR('',#925,1.);+#925 = DIRECTION('',(0.,-1.,0.));+#926 = PLANE('',#927);+#927 = AXIS2_PLACEMENT_3D('',#928,#929,#930);+#928 = CARTESIAN_POINT('',(-0.5,-0.25,0.));+#929 = DIRECTION('',(0.,0.,1.));+#930 = DIRECTION('',(1.,0.,0.));+#931 = ADVANCED_FACE('',(#932),#951,.T.);+#932 = FACE_BOUND('',#933,.F.);+#933 = EDGE_LOOP('',(#934,#935,#936,#945));+#934 = ORIENTED_EDGE('',*,*,#366,.T.);+#935 = ORIENTED_EDGE('',*,*,#882,.T.);+#936 = ORIENTED_EDGE('',*,*,#937,.F.);+#937 = EDGE_CURVE('',#938,#873,#940,.T.);+#938 = VERTEX_POINT('',#939);+#939 = CARTESIAN_POINT('',(-0.5,0.25,1.5E-02));+#940 = CIRCLE('',#941,1.5E-02);+#941 = AXIS2_PLACEMENT_3D('',#942,#943,#944);+#942 = CARTESIAN_POINT('',(-0.485,0.25,1.5E-02));+#943 = DIRECTION('',(0.,-1.,0.));+#944 = DIRECTION('',(0.,0.,1.));+#945 = ORIENTED_EDGE('',*,*,#946,.F.);+#946 = EDGE_CURVE('',#367,#938,#947,.T.);+#947 = LINE('',#948,#949);+#948 = CARTESIAN_POINT('',(-0.5,-0.25,1.5E-02));+#949 = VECTOR('',#950,1.);+#950 = DIRECTION('',(0.,1.,0.));+#951 = CYLINDRICAL_SURFACE('',#952,1.5E-02);+#952 = AXIS2_PLACEMENT_3D('',#953,#954,#955);+#953 = CARTESIAN_POINT('',(-0.485,-0.25,1.5E-02));+#954 = DIRECTION('',(0.,1.,0.));+#955 = DIRECTION('',(-1.,0.,0.));+#956 = ADVANCED_FACE('',(#957),#968,.F.);+#957 = FACE_BOUND('',#958,.F.);+#958 = EDGE_LOOP('',(#959,#960,#966,#967));+#959 = ORIENTED_EDGE('',*,*,#423,.T.);+#960 = ORIENTED_EDGE('',*,*,#961,.T.);+#961 = EDGE_CURVE('',#424,#890,#962,.T.);+#962 = LINE('',#963,#964);+#963 = CARTESIAN_POINT('',(-0.4625,-0.1875,0.3));+#964 = VECTOR('',#965,1.);+#965 = DIRECTION('',(-0.,-0.,-1.));+#966 = ORIENTED_EDGE('',*,*,#889,.T.);+#967 = ORIENTED_EDGE('',*,*,#409,.T.);+#968 = PLANE('',#969);+#969 = AXIS2_PLACEMENT_3D('',#970,#971,#972);+#970 = CARTESIAN_POINT('',(-0.4625,-0.1875,0.3));+#971 = DIRECTION('',(-1.,0.,0.));+#972 = DIRECTION('',(0.,-1.,0.));+#973 = ADVANCED_FACE('',(#974),#992,.F.);+#974 = FACE_BOUND('',#975,.F.);+#975 = EDGE_LOOP('',(#976,#977,#978,#986));+#976 = ORIENTED_EDGE('',*,*,#375,.F.);+#977 = ORIENTED_EDGE('',*,*,#946,.T.);+#978 = ORIENTED_EDGE('',*,*,#979,.T.);+#979 = EDGE_CURVE('',#938,#980,#982,.T.);+#980 = VERTEX_POINT('',#981);+#981 = CARTESIAN_POINT('',(-0.5,0.25,0.185));+#982 = LINE('',#983,#984);+#983 = CARTESIAN_POINT('',(-0.5,0.25,0.));+#984 = VECTOR('',#985,1.);+#985 = DIRECTION('',(0.,0.,1.));+#986 = ORIENTED_EDGE('',*,*,#987,.F.);+#987 = EDGE_CURVE('',#376,#980,#988,.T.);+#988 = LINE('',#989,#990);+#989 = CARTESIAN_POINT('',(-0.5,-0.25,0.185));+#990 = VECTOR('',#991,1.);+#991 = DIRECTION('',(0.,1.,0.));+#992 = PLANE('',#993);+#993 = AXIS2_PLACEMENT_3D('',#994,#995,#996);+#994 = CARTESIAN_POINT('',(-0.5,-0.25,0.));+#995 = DIRECTION('',(1.,0.,0.));+#996 = DIRECTION('',(0.,0.,1.));+#997 = ADVANCED_FACE('',(#998),#1010,.T.);+#998 = FACE_BOUND('',#999,.T.);+#999 = EDGE_LOOP('',(#1000,#1001,#1002,#1009));+#1000 = ORIENTED_EDGE('',*,*,#383,.T.);+#1001 = ORIENTED_EDGE('',*,*,#835,.T.);+#1002 = ORIENTED_EDGE('',*,*,#1003,.F.);+#1003 = EDGE_CURVE('',#980,#828,#1004,.T.);+#1004 = CIRCLE('',#1005,1.5E-02);+#1005 = AXIS2_PLACEMENT_3D('',#1006,#1007,#1008);+#1006 = CARTESIAN_POINT('',(-0.485,0.25,0.185));+#1007 = DIRECTION('',(0.,1.,0.));+#1008 = DIRECTION('',(0.,0.,1.));+#1009 = ORIENTED_EDGE('',*,*,#987,.F.);+#1010 = CYLINDRICAL_SURFACE('',#1011,1.5E-02);+#1011 = AXIS2_PLACEMENT_3D('',#1012,#1013,#1014);+#1012 = CARTESIAN_POINT('',(-0.485,-0.25,0.185));+#1013 = DIRECTION('',(0.,1.,0.));+#1014 = DIRECTION('',(-1.,0.,0.));+#1015 = ADVANCED_FACE('',(#1016),#1028,.F.);+#1016 = FACE_BOUND('',#1017,.F.);+#1017 = EDGE_LOOP('',(#1018,#1019,#1020,#1027));+#1018 = ORIENTED_EDGE('',*,*,#961,.F.);+#1019 = ORIENTED_EDGE('',*,*,#504,.T.);+#1020 = ORIENTED_EDGE('',*,*,#1021,.T.);+#1021 = EDGE_CURVE('',#497,#898,#1022,.T.);+#1022 = CIRCLE('',#1023,1.5E-02);+#1023 = AXIS2_PLACEMENT_3D('',#1024,#1025,#1026);+#1024 = CARTESIAN_POINT('',(-0.365,-0.1875,1.5E-02));+#1025 = DIRECTION('',(-0.,1.,0.));+#1026 = DIRECTION('',(1.,0.,0.));+#1027 = ORIENTED_EDGE('',*,*,#897,.T.);+#1028 = PLANE('',#1029);+#1029 = AXIS2_PLACEMENT_3D('',#1030,#1031,#1032);+#1030 = CARTESIAN_POINT('',(0.4625,-0.1875,0.3));+#1031 = DIRECTION('',(0.,1.,0.));+#1032 = DIRECTION('',(-1.,0.,0.));+#1033 = ADVANCED_FACE('',(#1034),#1046,.T.);+#1034 = FACE_BOUND('',#1035,.T.);+#1035 = EDGE_LOOP('',(#1036,#1037,#1038,#1039));+#1036 = ORIENTED_EDGE('',*,*,#496,.F.);+#1037 = ORIENTED_EDGE('',*,*,#1021,.T.);+#1038 = ORIENTED_EDGE('',*,*,#905,.T.);+#1039 = ORIENTED_EDGE('',*,*,#1040,.F.);+#1040 = EDGE_CURVE('',#489,#906,#1041,.T.);+#1041 = CIRCLE('',#1042,1.5E-02);+#1042 = AXIS2_PLACEMENT_3D('',#1043,#1044,#1045);+#1043 = CARTESIAN_POINT('',(-0.365,0.1875,1.5E-02));+#1044 = DIRECTION('',(-0.,1.,0.));+#1045 = DIRECTION('',(1.,0.,0.));+#1046 = CYLINDRICAL_SURFACE('',#1047,1.5E-02);+#1047 = AXIS2_PLACEMENT_3D('',#1048,#1049,#1050);+#1048 = CARTESIAN_POINT('',(-0.365,-0.25,1.5E-02));+#1049 = DIRECTION('',(0.,1.,0.));+#1050 = DIRECTION('',(1.,0.,0.));+#1051 = ADVANCED_FACE('',(#1052),#1063,.F.);+#1052 = FACE_BOUND('',#1053,.F.);+#1053 = EDGE_LOOP('',(#1054,#1055,#1061,#1062));+#1054 = ORIENTED_EDGE('',*,*,#488,.T.);+#1055 = ORIENTED_EDGE('',*,*,#1056,.T.);+#1056 = EDGE_CURVE('',#481,#914,#1057,.T.);+#1057 = LINE('',#1058,#1059);+#1058 = CARTESIAN_POINT('',(-0.4625,0.1875,0.3));+#1059 = VECTOR('',#1060,1.);+#1060 = DIRECTION('',(-0.,-0.,-1.));+#1061 = ORIENTED_EDGE('',*,*,#913,.T.);+#1062 = ORIENTED_EDGE('',*,*,#1040,.F.);+#1063 = PLANE('',#1064);+#1064 = AXIS2_PLACEMENT_3D('',#1065,#1066,#1067);+#1065 = CARTESIAN_POINT('',(-0.4625,0.1875,0.3));+#1066 = DIRECTION('',(0.,-1.,0.));+#1067 = DIRECTION('',(1.,0.,0.));+#1068 = ADVANCED_FACE('',(#1069),#1080,.F.);+#1069 = FACE_BOUND('',#1070,.F.);+#1070 = EDGE_LOOP('',(#1071,#1072,#1073,#1079));+#1071 = ORIENTED_EDGE('',*,*,#1056,.F.);+#1072 = ORIENTED_EDGE('',*,*,#480,.T.);+#1073 = ORIENTED_EDGE('',*,*,#1074,.F.);+#1074 = EDGE_CURVE('',#875,#473,#1075,.T.);+#1075 = LINE('',#1076,#1077);+#1076 = CARTESIAN_POINT('',(-0.4625,0.25,0.15));+#1077 = VECTOR('',#1078,1.);+#1078 = DIRECTION('',(0.,0.,1.));+#1079 = ORIENTED_EDGE('',*,*,#921,.T.);+#1080 = PLANE('',#1081);+#1081 = AXIS2_PLACEMENT_3D('',#1082,#1083,#1084);+#1082 = CARTESIAN_POINT('',(-0.4625,0.3125,0.3));+#1083 = DIRECTION('',(-1.,0.,0.));+#1084 = DIRECTION('',(0.,-1.,0.));+#1085 = ADVANCED_FACE('',(#1086),#1111,.F.);+#1086 = FACE_BOUND('',#1087,.F.);+#1087 = EDGE_LOOP('',(#1088,#1089,#1097,#1105));+#1088 = ORIENTED_EDGE('',*,*,#464,.T.);+#1089 = ORIENTED_EDGE('',*,*,#1090,.T.);+#1090 = EDGE_CURVE('',#457,#1091,#1093,.T.);+#1091 = VERTEX_POINT('',#1092);+#1092 = CARTESIAN_POINT('',(0.4625,0.1875,0.));+#1093 = LINE('',#1094,#1095);+#1094 = CARTESIAN_POINT('',(0.4625,0.1875,0.3));+#1095 = VECTOR('',#1096,1.);+#1096 = DIRECTION('',(-0.,-0.,-1.));+#1097 = ORIENTED_EDGE('',*,*,#1098,.T.);+#1098 = EDGE_CURVE('',#1091,#1099,#1101,.T.);+#1099 = VERTEX_POINT('',#1100);+#1100 = CARTESIAN_POINT('',(0.4625,0.25,0.));+#1101 = LINE('',#1102,#1103);+#1102 = CARTESIAN_POINT('',(0.4625,-3.125E-02,0.));+#1103 = VECTOR('',#1104,1.);+#1104 = DIRECTION('',(0.,1.,0.));+#1105 = ORIENTED_EDGE('',*,*,#1106,.F.);+#1106 = EDGE_CURVE('',#465,#1099,#1107,.T.);+#1107 = LINE('',#1108,#1109);+#1108 = CARTESIAN_POINT('',(0.4625,0.25,0.15));+#1109 = VECTOR('',#1110,1.);+#1110 = DIRECTION('',(0.,0.,-1.));+#1111 = PLANE('',#1112);+#1112 = AXIS2_PLACEMENT_3D('',#1113,#1114,#1115);+#1113 = CARTESIAN_POINT('',(0.4625,0.1875,0.3));+#1114 = DIRECTION('',(1.,0.,0.));+#1115 = DIRECTION('',(0.,1.,0.));+#1116 = ADVANCED_FACE('',(#1117),#1136,.F.);+#1117 = FACE_BOUND('',#1118,.F.);+#1118 = EDGE_LOOP('',(#1119,#1120,#1121,#1130));+#1119 = ORIENTED_EDGE('',*,*,#1090,.F.);+#1120 = ORIENTED_EDGE('',*,*,#456,.T.);+#1121 = ORIENTED_EDGE('',*,*,#1122,.F.);+#1122 = EDGE_CURVE('',#1123,#449,#1125,.T.);+#1123 = VERTEX_POINT('',#1124);+#1124 = CARTESIAN_POINT('',(0.365,0.1875,-1.734723475977E-18));+#1125 = CIRCLE('',#1126,1.5E-02);+#1126 = AXIS2_PLACEMENT_3D('',#1127,#1128,#1129);+#1127 = CARTESIAN_POINT('',(0.365,0.1875,1.5E-02));+#1128 = DIRECTION('',(0.,1.,-0.));+#1129 = DIRECTION('',(-1.,0.,0.));+#1130 = ORIENTED_EDGE('',*,*,#1131,.T.);+#1131 = EDGE_CURVE('',#1123,#1091,#1132,.T.);+#1132 = LINE('',#1133,#1134);+#1133 = CARTESIAN_POINT('',(-5.625E-02,0.1875,0.));+#1134 = VECTOR('',#1135,1.);+#1135 = DIRECTION('',(1.,0.,0.));+#1136 = PLANE('',#1137);+#1137 = AXIS2_PLACEMENT_3D('',#1138,#1139,#1140);+#1138 = CARTESIAN_POINT('',(-0.4625,0.1875,0.3));+#1139 = DIRECTION('',(0.,-1.,0.));+#1140 = DIRECTION('',(1.,0.,0.));+#1141 = ADVANCED_FACE('',(#1142),#1161,.T.);+#1142 = FACE_BOUND('',#1143,.F.);+#1143 = EDGE_LOOP('',(#1144,#1145,#1154,#1160));+#1144 = ORIENTED_EDGE('',*,*,#448,.F.);+#1145 = ORIENTED_EDGE('',*,*,#1146,.F.);+#1146 = EDGE_CURVE('',#1147,#441,#1149,.T.);+#1147 = VERTEX_POINT('',#1148);+#1148 = CARTESIAN_POINT('',(0.365,-0.1875,-1.734723475977E-18));+#1149 = CIRCLE('',#1150,1.5E-02);+#1150 = AXIS2_PLACEMENT_3D('',#1151,#1152,#1153);+#1151 = CARTESIAN_POINT('',(0.365,-0.1875,1.5E-02));+#1152 = DIRECTION('',(0.,1.,-0.));+#1153 = DIRECTION('',(-1.,0.,0.));+#1154 = ORIENTED_EDGE('',*,*,#1155,.T.);+#1155 = EDGE_CURVE('',#1147,#1123,#1156,.T.);+#1156 = LINE('',#1157,#1158);+#1157 = CARTESIAN_POINT('',(0.365,-0.25,-1.734723475977E-18));+#1158 = VECTOR('',#1159,1.);+#1159 = DIRECTION('',(0.,1.,0.));+#1160 = ORIENTED_EDGE('',*,*,#1122,.T.);+#1161 = CYLINDRICAL_SURFACE('',#1162,1.5E-02);+#1162 = AXIS2_PLACEMENT_3D('',#1163,#1164,#1165);+#1163 = CARTESIAN_POINT('',(0.365,-0.25,1.5E-02));+#1164 = DIRECTION('',(0.,1.,0.));+#1165 = DIRECTION('',(-1.,0.,0.));+#1166 = ADVANCED_FACE('',(#1167),#1185,.F.);+#1167 = FACE_BOUND('',#1168,.F.);+#1168 = EDGE_LOOP('',(#1169,#1170,#1178,#1184));+#1169 = ORIENTED_EDGE('',*,*,#440,.T.);+#1170 = ORIENTED_EDGE('',*,*,#1171,.T.);+#1171 = EDGE_CURVE('',#433,#1172,#1174,.T.);+#1172 = VERTEX_POINT('',#1173);+#1173 = CARTESIAN_POINT('',(0.4625,-0.1875,0.));+#1174 = LINE('',#1175,#1176);+#1175 = CARTESIAN_POINT('',(0.4625,-0.1875,0.3));+#1176 = VECTOR('',#1177,1.);+#1177 = DIRECTION('',(-0.,-0.,-1.));+#1178 = ORIENTED_EDGE('',*,*,#1179,.T.);+#1179 = EDGE_CURVE('',#1172,#1147,#1180,.T.);+#1180 = LINE('',#1181,#1182);+#1181 = CARTESIAN_POINT('',(0.40625,-0.1875,0.));+#1182 = VECTOR('',#1183,1.);+#1183 = DIRECTION('',(-1.,0.,0.));+#1184 = ORIENTED_EDGE('',*,*,#1146,.T.);+#1185 = PLANE('',#1186);+#1186 = AXIS2_PLACEMENT_3D('',#1187,#1188,#1189);+#1187 = CARTESIAN_POINT('',(0.4625,-0.1875,0.3));+#1188 = DIRECTION('',(0.,1.,0.));+#1189 = DIRECTION('',(-1.,0.,0.));+#1190 = ADVANCED_FACE('',(#1191),#1202,.F.);+#1191 = FACE_BOUND('',#1192,.F.);+#1192 = EDGE_LOOP('',(#1193,#1194,#1195,#1196));+#1193 = ORIENTED_EDGE('',*,*,#1171,.F.);+#1194 = ORIENTED_EDGE('',*,*,#432,.T.);+#1195 = ORIENTED_EDGE('',*,*,#554,.T.);+#1196 = ORIENTED_EDGE('',*,*,#1197,.T.);+#1197 = EDGE_CURVE('',#545,#1172,#1198,.T.);+#1198 = LINE('',#1199,#1200);+#1199 = CARTESIAN_POINT('',(0.4625,-0.28125,0.));+#1200 = VECTOR('',#1201,1.);+#1201 = DIRECTION('',(0.,1.,0.));+#1202 = PLANE('',#1203);+#1203 = AXIS2_PLACEMENT_3D('',#1204,#1205,#1206);+#1204 = CARTESIAN_POINT('',(0.4625,-0.3125,0.3));+#1205 = DIRECTION('',(1.,0.,0.));+#1206 = DIRECTION('',(0.,1.,0.));+#1207 = ADVANCED_FACE('',(#1208),#1233,.T.);+#1208 = FACE_BOUND('',#1209,.T.);+#1209 = EDGE_LOOP('',(#1210,#1218,#1219,#1227));+#1210 = ORIENTED_EDGE('',*,*,#1211,.T.);+#1211 = EDGE_CURVE('',#1212,#513,#1214,.T.);+#1212 = VERTEX_POINT('',#1213);+#1213 = CARTESIAN_POINT('',(0.173205080757,0.2,7.5E-03));+#1214 = LINE('',#1215,#1216);+#1215 = CARTESIAN_POINT('',(0.173205080757,0.2,7.5E-03));+#1216 = VECTOR('',#1217,1.);+#1217 = DIRECTION('',(0.,0.,1.));+#1218 = ORIENTED_EDGE('',*,*,#512,.T.);+#1219 = ORIENTED_EDGE('',*,*,#1220,.F.);+#1220 = EDGE_CURVE('',#1221,#515,#1223,.T.);+#1221 = VERTEX_POINT('',#1222);+#1222 = CARTESIAN_POINT('',(0.173205080757,-0.2,7.5E-03));+#1223 = LINE('',#1224,#1225);+#1224 = CARTESIAN_POINT('',(0.173205080757,-0.2,7.5E-03));+#1225 = VECTOR('',#1226,1.);+#1226 = DIRECTION('',(0.,0.,1.));+#1227 = ORIENTED_EDGE('',*,*,#1228,.F.);+#1228 = EDGE_CURVE('',#1212,#1221,#1229,.T.);+#1229 = LINE('',#1230,#1231);+#1230 = CARTESIAN_POINT('',(0.173205080757,0.2,7.5E-03));+#1231 = VECTOR('',#1232,1.);+#1232 = DIRECTION('',(0.,-1.,0.));+#1233 = PLANE('',#1234);+#1234 = AXIS2_PLACEMENT_3D('',#1235,#1236,#1237);+#1235 = CARTESIAN_POINT('',(0.173205080757,0.2,7.5E-03));+#1236 = DIRECTION('',(1.,0.,0.));+#1237 = DIRECTION('',(0.,-1.,0.));+#1238 = ADVANCED_FACE('',(#1239),#1257,.T.);+#1239 = FACE_BOUND('',#1240,.T.);+#1240 = EDGE_LOOP('',(#1241,#1249,#1250,#1251));+#1241 = ORIENTED_EDGE('',*,*,#1242,.T.);+#1242 = EDGE_CURVE('',#1243,#523,#1245,.T.);+#1243 = VERTEX_POINT('',#1244);+#1244 = CARTESIAN_POINT('',(-0.173205080757,0.,7.5E-03));+#1245 = LINE('',#1246,#1247);+#1246 = CARTESIAN_POINT('',(-0.173205080757,0.,7.5E-03));+#1247 = VECTOR('',#1248,1.);+#1248 = DIRECTION('',(0.,0.,1.));+#1249 = ORIENTED_EDGE('',*,*,#530,.T.);+#1250 = ORIENTED_EDGE('',*,*,#1211,.F.);+#1251 = ORIENTED_EDGE('',*,*,#1252,.F.);+#1252 = EDGE_CURVE('',#1243,#1212,#1253,.T.);+#1253 = LINE('',#1254,#1255);+#1254 = CARTESIAN_POINT('',(-0.173205080757,0.,7.5E-03));+#1255 = VECTOR('',#1256,1.);+#1256 = DIRECTION('',(0.866025403784,0.5,0.));+#1257 = PLANE('',#1258);+#1258 = AXIS2_PLACEMENT_3D('',#1259,#1260,#1261);+#1259 = CARTESIAN_POINT('',(-0.173205080757,0.,7.5E-03));+#1260 = DIRECTION('',(-0.5,0.866025403784,0.));+#1261 = DIRECTION('',(0.866025403784,0.5,0.));+#1262 = ADVANCED_FACE('',(#1263),#1274,.T.);+#1263 = FACE_BOUND('',#1264,.T.);+#1264 = EDGE_LOOP('',(#1265,#1266,#1267,#1268));+#1265 = ORIENTED_EDGE('',*,*,#1220,.T.);+#1266 = ORIENTED_EDGE('',*,*,#522,.T.);+#1267 = ORIENTED_EDGE('',*,*,#1242,.F.);+#1268 = ORIENTED_EDGE('',*,*,#1269,.F.);+#1269 = EDGE_CURVE('',#1221,#1243,#1270,.T.);+#1270 = LINE('',#1271,#1272);+#1271 = CARTESIAN_POINT('',(0.173205080757,-0.2,7.5E-03));+#1272 = VECTOR('',#1273,1.);+#1273 = DIRECTION('',(-0.866025403784,0.5,0.));+#1274 = PLANE('',#1275);+#1275 = AXIS2_PLACEMENT_3D('',#1276,#1277,#1278);+#1276 = CARTESIAN_POINT('',(0.173205080757,-0.2,7.5E-03));+#1277 = DIRECTION('',(-0.5,-0.866025403784,0.));+#1278 = DIRECTION('',(-0.866025403784,0.5,0.));+#1279 = ADVANCED_FACE('',(#1280),#1302,.F.);+#1280 = FACE_BOUND('',#1281,.F.);+#1281 = EDGE_LOOP('',(#1282,#1290,#1291,#1292,#1293,#1294,#1295,#1296));+#1282 = ORIENTED_EDGE('',*,*,#1283,.F.);+#1283 = EDGE_CURVE('',#1099,#1284,#1286,.T.);+#1284 = VERTEX_POINT('',#1285);+#1285 = CARTESIAN_POINT('',(0.485,0.25,-1.734723475977E-18));+#1286 = LINE('',#1287,#1288);+#1287 = CARTESIAN_POINT('',(0.35,0.25,0.));+#1288 = VECTOR('',#1289,1.);+#1289 = DIRECTION('',(1.,0.,0.));+#1290 = ORIENTED_EDGE('',*,*,#1098,.F.);+#1291 = ORIENTED_EDGE('',*,*,#1131,.F.);+#1292 = ORIENTED_EDGE('',*,*,#1155,.F.);+#1293 = ORIENTED_EDGE('',*,*,#1179,.F.);+#1294 = ORIENTED_EDGE('',*,*,#1197,.F.);+#1295 = ORIENTED_EDGE('',*,*,#544,.T.);+#1296 = ORIENTED_EDGE('',*,*,#1297,.T.);+#1297 = EDGE_CURVE('',#547,#1284,#1298,.T.);+#1298 = LINE('',#1299,#1300);+#1299 = CARTESIAN_POINT('',(0.485,-0.25,-1.734723475977E-18));+#1300 = VECTOR('',#1301,1.);+#1301 = DIRECTION('',(0.,1.,0.));+#1302 = PLANE('',#1303);+#1303 = AXIS2_PLACEMENT_3D('',#1304,#1305,#1306);+#1304 = CARTESIAN_POINT('',(0.35,-0.25,0.));+#1305 = DIRECTION('',(0.,0.,1.));+#1306 = DIRECTION('',(1.,0.,0.));+#1307 = ADVANCED_FACE('',(#1308),#1327,.T.);+#1308 = FACE_BOUND('',#1309,.T.);+#1309 = EDGE_LOOP('',(#1310,#1311,#1312,#1321));+#1310 = ORIENTED_EDGE('',*,*,#596,.T.);+#1311 = ORIENTED_EDGE('',*,*,#1297,.T.);+#1312 = ORIENTED_EDGE('',*,*,#1313,.F.);+#1313 = EDGE_CURVE('',#1314,#1284,#1316,.T.);+#1314 = VERTEX_POINT('',#1315);+#1315 = CARTESIAN_POINT('',(0.5,0.25,1.5E-02));+#1316 = CIRCLE('',#1317,1.5E-02);+#1317 = AXIS2_PLACEMENT_3D('',#1318,#1319,#1320);+#1318 = CARTESIAN_POINT('',(0.485,0.25,1.5E-02));+#1319 = DIRECTION('',(0.,1.,0.));+#1320 = DIRECTION('',(0.,0.,1.));+#1321 = ORIENTED_EDGE('',*,*,#1322,.F.);+#1322 = EDGE_CURVE('',#589,#1314,#1323,.T.);+#1323 = LINE('',#1324,#1325);+#1324 = CARTESIAN_POINT('',(0.5,-0.25,1.5E-02));+#1325 = VECTOR('',#1326,1.);+#1326 = DIRECTION('',(0.,1.,0.));+#1327 = CYLINDRICAL_SURFACE('',#1328,1.5E-02);+#1328 = AXIS2_PLACEMENT_3D('',#1329,#1330,#1331);+#1329 = CARTESIAN_POINT('',(0.485,-0.25,1.5E-02));+#1330 = DIRECTION('',(0.,1.,0.));+#1331 = DIRECTION('',(1.,0.,0.));+#1332 = ADVANCED_FACE('',(#1333),#1351,.T.);+#1333 = FACE_BOUND('',#1334,.T.);+#1334 = EDGE_LOOP('',(#1335,#1336,#1337,#1345));+#1335 = ORIENTED_EDGE('',*,*,#588,.F.);+#1336 = ORIENTED_EDGE('',*,*,#1322,.T.);+#1337 = ORIENTED_EDGE('',*,*,#1338,.T.);+#1338 = EDGE_CURVE('',#1314,#1339,#1341,.T.);+#1339 = VERTEX_POINT('',#1340);+#1340 = CARTESIAN_POINT('',(0.5,0.25,0.185));+#1341 = LINE('',#1342,#1343);+#1342 = CARTESIAN_POINT('',(0.5,0.25,0.));+#1343 = VECTOR('',#1344,1.);+#1344 = DIRECTION('',(0.,0.,1.));+#1345 = ORIENTED_EDGE('',*,*,#1346,.F.);+#1346 = EDGE_CURVE('',#580,#1339,#1347,.T.);+#1347 = LINE('',#1348,#1349);+#1348 = CARTESIAN_POINT('',(0.5,-0.25,0.185));+#1349 = VECTOR('',#1350,1.);+#1350 = DIRECTION('',(0.,1.,0.));+#1351 = PLANE('',#1352);+#1352 = AXIS2_PLACEMENT_3D('',#1353,#1354,#1355);+#1353 = CARTESIAN_POINT('',(0.5,-0.25,0.));+#1354 = DIRECTION('',(1.,0.,0.));+#1355 = DIRECTION('',(0.,0.,1.));+#1356 = ADVANCED_FACE('',(#1357),#1376,.T.);+#1357 = FACE_BOUND('',#1358,.F.);+#1358 = EDGE_LOOP('',(#1359,#1360,#1368,#1375));+#1359 = ORIENTED_EDGE('',*,*,#579,.T.);+#1360 = ORIENTED_EDGE('',*,*,#1361,.T.);+#1361 = EDGE_CURVE('',#572,#1362,#1364,.T.);+#1362 = VERTEX_POINT('',#1363);+#1363 = CARTESIAN_POINT('',(0.485,0.25,0.2));+#1364 = LINE('',#1365,#1366);+#1365 = CARTESIAN_POINT('',(0.485,-0.25,0.2));+#1366 = VECTOR('',#1367,1.);+#1367 = DIRECTION('',(0.,1.,0.));+#1368 = ORIENTED_EDGE('',*,*,#1369,.F.);+#1369 = EDGE_CURVE('',#1339,#1362,#1370,.T.);+#1370 = CIRCLE('',#1371,1.5E-02);+#1371 = AXIS2_PLACEMENT_3D('',#1372,#1373,#1374);+#1372 = CARTESIAN_POINT('',(0.485,0.25,0.185));+#1373 = DIRECTION('',(0.,-1.,0.));+#1374 = DIRECTION('',(0.,0.,1.));+#1375 = ORIENTED_EDGE('',*,*,#1346,.F.);+#1376 = CYLINDRICAL_SURFACE('',#1377,1.5E-02);+#1377 = AXIS2_PLACEMENT_3D('',#1378,#1379,#1380);+#1378 = CARTESIAN_POINT('',(0.485,-0.25,0.185));+#1379 = DIRECTION('',(0.,1.,0.));+#1380 = DIRECTION('',(1.,0.,0.));+#1381 = ADVANCED_FACE('',(#1382),#1423,.T.);+#1382 = FACE_BOUND('',#1383,.T.);+#1383 = EDGE_LOOP('',(#1384,#1392,#1400,#1406,#1407,#1415,#1421,#1422));+#1384 = ORIENTED_EDGE('',*,*,#1385,.F.);+#1385 = EDGE_CURVE('',#1386,#1362,#1388,.T.);+#1386 = VERTEX_POINT('',#1387);+#1387 = CARTESIAN_POINT('',(0.4625,0.25,0.2));+#1388 = LINE('',#1389,#1390);+#1389 = CARTESIAN_POINT('',(0.35,0.25,0.2));+#1390 = VECTOR('',#1391,1.);+#1391 = DIRECTION('',(1.,0.,0.));+#1392 = ORIENTED_EDGE('',*,*,#1393,.F.);+#1393 = EDGE_CURVE('',#1394,#1386,#1396,.T.);+#1394 = VERTEX_POINT('',#1395);+#1395 = CARTESIAN_POINT('',(0.4625,0.1875,0.2));+#1396 = LINE('',#1397,#1398);+#1397 = CARTESIAN_POINT('',(0.4625,-3.125E-02,0.2));+#1398 = VECTOR('',#1399,1.);+#1399 = DIRECTION('',(0.,1.,0.));+#1400 = ORIENTED_EDGE('',*,*,#1401,.F.);+#1401 = EDGE_CURVE('',#677,#1394,#1402,.T.);+#1402 = LINE('',#1403,#1404);+#1403 = CARTESIAN_POINT('',(-5.625E-02,0.1875,0.2));+#1404 = VECTOR('',#1405,1.);+#1405 = DIRECTION('',(1.,0.,0.));+#1406 = ORIENTED_EDGE('',*,*,#676,.F.);+#1407 = ORIENTED_EDGE('',*,*,#1408,.F.);+#1408 = EDGE_CURVE('',#1409,#668,#1411,.T.);+#1409 = VERTEX_POINT('',#1410);+#1410 = CARTESIAN_POINT('',(0.4625,-0.1875,0.2));+#1411 = LINE('',#1412,#1413);+#1412 = CARTESIAN_POINT('',(0.40625,-0.1875,0.2));+#1413 = VECTOR('',#1414,1.);+#1414 = DIRECTION('',(-1.,0.,0.));+#1415 = ORIENTED_EDGE('',*,*,#1416,.F.);+#1416 = EDGE_CURVE('',#564,#1409,#1417,.T.);+#1417 = LINE('',#1418,#1419);+#1418 = CARTESIAN_POINT('',(0.4625,-0.28125,0.2));+#1419 = VECTOR('',#1420,1.);+#1420 = DIRECTION('',(0.,1.,0.));+#1421 = ORIENTED_EDGE('',*,*,#571,.T.);+#1422 = ORIENTED_EDGE('',*,*,#1361,.T.);+#1423 = PLANE('',#1424);+#1424 = AXIS2_PLACEMENT_3D('',#1425,#1426,#1427);+#1425 = CARTESIAN_POINT('',(0.35,-0.25,0.2));+#1426 = DIRECTION('',(0.,0.,1.));+#1427 = DIRECTION('',(1.,0.,0.));+#1428 = ADVANCED_FACE('',(#1429),#1440,.F.);+#1429 = FACE_BOUND('',#1430,.F.);+#1430 = EDGE_LOOP('',(#1431,#1437,#1438,#1439));+#1431 = ORIENTED_EDGE('',*,*,#1432,.F.);+#1432 = EDGE_CURVE('',#1409,#612,#1433,.T.);+#1433 = LINE('',#1434,#1435);+#1434 = CARTESIAN_POINT('',(0.4625,-0.1875,0.3));+#1435 = VECTOR('',#1436,1.);+#1436 = DIRECTION('',(-0.,-0.,-1.));+#1437 = ORIENTED_EDGE('',*,*,#1416,.F.);+#1438 = ORIENTED_EDGE('',*,*,#563,.T.);+#1439 = ORIENTED_EDGE('',*,*,#621,.F.);+#1440 = PLANE('',#1441);+#1441 = AXIS2_PLACEMENT_3D('',#1442,#1443,#1444);+#1442 = CARTESIAN_POINT('',(0.4625,-0.3125,0.3));+#1443 = DIRECTION('',(1.,0.,0.));+#1444 = DIRECTION('',(0.,1.,0.));+#1445 = ADVANCED_FACE('',(#1446),#1452,.F.);+#1446 = FACE_BOUND('',#1447,.F.);+#1447 = EDGE_LOOP('',(#1448,#1449,#1450,#1451));+#1448 = ORIENTED_EDGE('',*,*,#1408,.F.);+#1449 = ORIENTED_EDGE('',*,*,#1432,.T.);+#1450 = ORIENTED_EDGE('',*,*,#611,.F.);+#1451 = ORIENTED_EDGE('',*,*,#667,.T.);+#1452 = PLANE('',#1453);+#1453 = AXIS2_PLACEMENT_3D('',#1454,#1455,#1456);+#1454 = CARTESIAN_POINT('',(0.4625,-0.1875,0.3));+#1455 = DIRECTION('',(0.,1.,0.));+#1456 = DIRECTION('',(-1.,0.,0.));+#1457 = ADVANCED_FACE('',(#1458),#1474,.F.);+#1458 = FACE_BOUND('',#1459,.F.);+#1459 = EDGE_LOOP('',(#1460,#1461,#1467,#1468));+#1460 = ORIENTED_EDGE('',*,*,#1393,.F.);+#1461 = ORIENTED_EDGE('',*,*,#1462,.T.);+#1462 = EDGE_CURVE('',#1394,#645,#1463,.T.);+#1463 = LINE('',#1464,#1465);+#1464 = CARTESIAN_POINT('',(0.4625,0.1875,0.3));+#1465 = VECTOR('',#1466,1.);+#1466 = DIRECTION('',(-0.,-0.,-1.));+#1467 = ORIENTED_EDGE('',*,*,#652,.F.);+#1468 = ORIENTED_EDGE('',*,*,#1469,.F.);+#1469 = EDGE_CURVE('',#1386,#636,#1470,.T.);+#1470 = LINE('',#1471,#1472);+#1471 = CARTESIAN_POINT('',(0.4625,0.25,0.15));+#1472 = VECTOR('',#1473,1.);+#1473 = DIRECTION('',(0.,0.,-1.));+#1474 = PLANE('',#1475);+#1475 = AXIS2_PLACEMENT_3D('',#1476,#1477,#1478);+#1476 = CARTESIAN_POINT('',(0.4625,0.1875,0.3));+#1477 = DIRECTION('',(1.,0.,0.));+#1478 = DIRECTION('',(0.,1.,0.));+#1479 = ADVANCED_FACE('',(#1480),#1486,.F.);+#1480 = FACE_BOUND('',#1481,.F.);+#1481 = EDGE_LOOP('',(#1482,#1483,#1484,#1485));+#1482 = ORIENTED_EDGE('',*,*,#1462,.F.);+#1483 = ORIENTED_EDGE('',*,*,#1401,.F.);+#1484 = ORIENTED_EDGE('',*,*,#684,.F.);+#1485 = ORIENTED_EDGE('',*,*,#644,.F.);+#1486 = PLANE('',#1487);+#1487 = AXIS2_PLACEMENT_3D('',#1488,#1489,#1490);+#1488 = CARTESIAN_POINT('',(-0.4625,0.1875,0.3));+#1489 = DIRECTION('',(0.,-1.,0.));+#1490 = DIRECTION('',(1.,0.,0.));+#1491 = ADVANCED_FACE('',(#1492),#1504,.T.);+#1492 = FACE_BOUND('',#1493,.T.);+#1493 = EDGE_LOOP('',(#1494,#1495,#1496,#1497,#1498,#1499,#1500,#1501,+#1502,#1503));+#1494 = ORIENTED_EDGE('',*,*,#872,.F.);+#1495 = ORIENTED_EDGE('',*,*,#937,.F.);+#1496 = ORIENTED_EDGE('',*,*,#979,.T.);+#1497 = ORIENTED_EDGE('',*,*,#1003,.T.);+#1498 = ORIENTED_EDGE('',*,*,#827,.T.);+#1499 = ORIENTED_EDGE('',*,*,#788,.F.);+#1500 = ORIENTED_EDGE('',*,*,#715,.F.);+#1501 = ORIENTED_EDGE('',*,*,#707,.F.);+#1502 = ORIENTED_EDGE('',*,*,#699,.T.);+#1503 = ORIENTED_EDGE('',*,*,#1074,.F.);+#1504 = PLANE('',#1505);+#1505 = AXIS2_PLACEMENT_3D('',#1506,#1507,#1508);+#1506 = CARTESIAN_POINT('',(-0.5,0.25,0.));+#1507 = DIRECTION('',(0.,1.,0.));+#1508 = DIRECTION('',(0.,0.,1.));+#1509 = ADVANCED_FACE('',(#1510),#1522,.T.);+#1510 = FACE_BOUND('',#1511,.T.);+#1511 = EDGE_LOOP('',(#1512,#1513,#1514,#1515,#1516,#1517,#1518,#1519,+#1520,#1521));+#1512 = ORIENTED_EDGE('',*,*,#1283,.F.);+#1513 = ORIENTED_EDGE('',*,*,#1106,.F.);+#1514 = ORIENTED_EDGE('',*,*,#740,.T.);+#1515 = ORIENTED_EDGE('',*,*,#732,.T.);+#1516 = ORIENTED_EDGE('',*,*,#724,.F.);+#1517 = ORIENTED_EDGE('',*,*,#1469,.F.);+#1518 = ORIENTED_EDGE('',*,*,#1385,.T.);+#1519 = ORIENTED_EDGE('',*,*,#1369,.F.);+#1520 = ORIENTED_EDGE('',*,*,#1338,.F.);+#1521 = ORIENTED_EDGE('',*,*,#1313,.T.);+#1522 = PLANE('',#1523);+#1523 = AXIS2_PLACEMENT_3D('',#1524,#1525,#1526);+#1524 = CARTESIAN_POINT('',(0.35,0.25,0.));+#1525 = DIRECTION('',(0.,1.,0.));+#1526 = DIRECTION('',(0.,0.,1.));+#1527 = ADVANCED_FACE('',(#1528),#1533,.T.);+#1528 = FACE_BOUND('',#1529,.T.);+#1529 = EDGE_LOOP('',(#1530,#1531,#1532));+#1530 = ORIENTED_EDGE('',*,*,#1252,.T.);+#1531 = ORIENTED_EDGE('',*,*,#1228,.T.);+#1532 = ORIENTED_EDGE('',*,*,#1269,.T.);+#1533 = PLANE('',#1534);+#1534 = AXIS2_PLACEMENT_3D('',#1535,#1536,#1537);+#1535 = CARTESIAN_POINT('',(5.773502691896E-02,0.,7.5E-03));+#1536 = DIRECTION('',(-0.,-0.,-1.));+#1537 = DIRECTION('',(-1.,0.,0.));+#1538 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3)+GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#1542))+GLOBAL_UNIT_ASSIGNED_CONTEXT((#1539,#1540,#1541)) REPRESENTATION_CONTEXT+('Context #1','3D Context with UNIT and UNCERTAINTY') );+#1539 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );+#1540 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );+#1541 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );+#1542 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(2.E-07),#1539,+'distance_accuracy_value','confusion accuracy');+#1543 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7));+#1544 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(+#1545,#1553,#1560,#1567,#1574,#1581,#1588,#1595,#1603,#1610,#1617,+#1624,#1631,#1638,#1645,#1652,#1659,#1666,#1673,#1680,#1687,#1694,+#1701,#1708,#1715,#1722,#1729,#1736,#1743,#1750,#1757,#1764,#1771,+#1778,#1785,#1792,#1800,#1807,#1814,#1821,#1828,#1835,#1842,#1849,+#1856,#1863,#1870,#1877,#1884,#1891),#1538);+#1545 = STYLED_ITEM('color',(#1546),#17);+#1546 = PRESENTATION_STYLE_ASSIGNMENT((#1547));+#1547 = SURFACE_STYLE_USAGE(.BOTH.,#1548);+#1548 = SURFACE_SIDE_STYLE('',(#1549));+#1549 = SURFACE_STYLE_FILL_AREA(#1550);+#1550 = FILL_AREA_STYLE('',(#1551));+#1551 = FILL_AREA_STYLE_COLOUR('',#1552);+#1552 = COLOUR_RGB('',0.894999980927,0.89099997282,0.813000023365);+#1553 = STYLED_ITEM('color',(#1554),#57);+#1554 = PRESENTATION_STYLE_ASSIGNMENT((#1555));+#1555 = SURFACE_STYLE_USAGE(.BOTH.,#1556);+#1556 = SURFACE_SIDE_STYLE('',(#1557));+#1557 = SURFACE_STYLE_FILL_AREA(#1558);+#1558 = FILL_AREA_STYLE('',(#1559));+#1559 = FILL_AREA_STYLE_COLOUR('',#1552);+#1560 = STYLED_ITEM('color',(#1561),#104);+#1561 = PRESENTATION_STYLE_ASSIGNMENT((#1562));+#1562 = SURFACE_STYLE_USAGE(.BOTH.,#1563);+#1563 = SURFACE_SIDE_STYLE('',(#1564));+#1564 = SURFACE_STYLE_FILL_AREA(#1565);+#1565 = FILL_AREA_STYLE('',(#1566));+#1566 = FILL_AREA_STYLE_COLOUR('',#1552);+#1567 = STYLED_ITEM('color',(#1568),#183);+#1568 = PRESENTATION_STYLE_ASSIGNMENT((#1569));+#1569 = SURFACE_STYLE_USAGE(.BOTH.,#1570);+#1570 = SURFACE_SIDE_STYLE('',(#1571));+#1571 = SURFACE_STYLE_FILL_AREA(#1572);+#1572 = FILL_AREA_STYLE('',(#1573));+#1573 = FILL_AREA_STYLE_COLOUR('',#1552);+#1574 = STYLED_ITEM('color',(#1575),#207);+#1575 = PRESENTATION_STYLE_ASSIGNMENT((#1576));+#1576 = SURFACE_STYLE_USAGE(.BOTH.,#1577);+#1577 = SURFACE_SIDE_STYLE('',(#1578));+#1578 = SURFACE_STYLE_FILL_AREA(#1579);+#1579 = FILL_AREA_STYLE('',(#1580));+#1580 = FILL_AREA_STYLE_COLOUR('',#1552);+#1581 = STYLED_ITEM('color',(#1582),#247);+#1582 = PRESENTATION_STYLE_ASSIGNMENT((#1583));+#1583 = SURFACE_STYLE_USAGE(.BOTH.,#1584);+#1584 = SURFACE_SIDE_STYLE('',(#1585));+#1585 = SURFACE_STYLE_FILL_AREA(#1586);+#1586 = FILL_AREA_STYLE('',(#1587));+#1587 = FILL_AREA_STYLE_COLOUR('',#1552);+#1588 = STYLED_ITEM('color',(#1589),#278);+#1589 = PRESENTATION_STYLE_ASSIGNMENT((#1590));+#1590 = SURFACE_STYLE_USAGE(.BOTH.,#1591);+#1591 = SURFACE_SIDE_STYLE('',(#1592));+#1592 = SURFACE_STYLE_FILL_AREA(#1593);+#1593 = FILL_AREA_STYLE('',(#1594));+#1594 = FILL_AREA_STYLE_COLOUR('',#1552);+#1595 = STYLED_ITEM('color',(#1596),#295);+#1596 = PRESENTATION_STYLE_ASSIGNMENT((#1597));+#1597 = SURFACE_STYLE_USAGE(.BOTH.,#1598);+#1598 = SURFACE_SIDE_STYLE('',(#1599));+#1599 = SURFACE_STYLE_FILL_AREA(#1600);+#1600 = FILL_AREA_STYLE('',(#1601));+#1601 = FILL_AREA_STYLE_COLOUR('',#1602);+#1602 = COLOUR_RGB('',0.85900002718,0.737999975681,0.495999991894);+#1603 = STYLED_ITEM('color',(#1604),#328);+#1604 = PRESENTATION_STYLE_ASSIGNMENT((#1605));+#1605 = SURFACE_STYLE_USAGE(.BOTH.,#1606);+#1606 = SURFACE_SIDE_STYLE('',(#1607));+#1607 = SURFACE_STYLE_FILL_AREA(#1608);+#1608 = FILL_AREA_STYLE('',(#1609));+#1609 = FILL_AREA_STYLE_COLOUR('',#1552);+#1610 = STYLED_ITEM('color',(#1611),#352);+#1611 = PRESENTATION_STYLE_ASSIGNMENT((#1612));+#1612 = SURFACE_STYLE_USAGE(.BOTH.,#1613);+#1613 = SURFACE_SIDE_STYLE('',(#1614));+#1614 = SURFACE_STYLE_FILL_AREA(#1615);+#1615 = FILL_AREA_STYLE('',(#1616));+#1616 = FILL_AREA_STYLE_COLOUR('',#1602);+#1617 = STYLED_ITEM('color',(#1618),#419);+#1618 = PRESENTATION_STYLE_ASSIGNMENT((#1619));+#1619 = SURFACE_STYLE_USAGE(.BOTH.,#1620);+#1620 = SURFACE_SIDE_STYLE('',(#1621));+#1621 = SURFACE_STYLE_FILL_AREA(#1622);+#1622 = FILL_AREA_STYLE('',(#1623));+#1623 = FILL_AREA_STYLE_COLOUR('',#1552);+#1624 = STYLED_ITEM('color',(#1625),#540);+#1625 = PRESENTATION_STYLE_ASSIGNMENT((#1626));+#1626 = SURFACE_STYLE_USAGE(.BOTH.,#1627);+#1627 = SURFACE_SIDE_STYLE('',(#1628));+#1628 = SURFACE_STYLE_FILL_AREA(#1629);+#1629 = FILL_AREA_STYLE('',(#1630));+#1630 = FILL_AREA_STYLE_COLOUR('',#1602);+#1631 = STYLED_ITEM('color',(#1632),#607);+#1632 = PRESENTATION_STYLE_ASSIGNMENT((#1633));+#1633 = SURFACE_STYLE_USAGE(.BOTH.,#1634);+#1634 = SURFACE_SIDE_STYLE('',(#1635));+#1635 = SURFACE_STYLE_FILL_AREA(#1636);+#1636 = FILL_AREA_STYLE('',(#1637));+#1637 = FILL_AREA_STYLE_COLOUR('',#1552);+#1638 = STYLED_ITEM('color',(#1639),#631);+#1639 = PRESENTATION_STYLE_ASSIGNMENT((#1640));+#1640 = SURFACE_STYLE_USAGE(.BOTH.,#1641);+#1641 = SURFACE_SIDE_STYLE('',(#1642));+#1642 = SURFACE_STYLE_FILL_AREA(#1643);+#1643 = FILL_AREA_STYLE('',(#1644));+#1644 = FILL_AREA_STYLE_COLOUR('',#1552);+#1645 = STYLED_ITEM('color',(#1646),#662);+#1646 = PRESENTATION_STYLE_ASSIGNMENT((#1647));+#1647 = SURFACE_STYLE_USAGE(.BOTH.,#1648);+#1648 = SURFACE_SIDE_STYLE('',(#1649));+#1649 = SURFACE_STYLE_FILL_AREA(#1650);+#1650 = FILL_AREA_STYLE('',(#1651));+#1651 = FILL_AREA_STYLE_COLOUR('',#1602);+#1652 = STYLED_ITEM('color',(#1653),#695);+#1653 = PRESENTATION_STYLE_ASSIGNMENT((#1654));+#1654 = SURFACE_STYLE_USAGE(.BOTH.,#1655);+#1655 = SURFACE_SIDE_STYLE('',(#1656));+#1656 = SURFACE_STYLE_FILL_AREA(#1657);+#1657 = FILL_AREA_STYLE('',(#1658));+#1658 = FILL_AREA_STYLE_COLOUR('',#1552);+#1659 = STYLED_ITEM('color',(#1660),#751);+#1660 = PRESENTATION_STYLE_ASSIGNMENT((#1661));+#1661 = SURFACE_STYLE_USAGE(.BOTH.,#1662);+#1662 = SURFACE_SIDE_STYLE('',(#1663));+#1663 = SURFACE_STYLE_FILL_AREA(#1664);+#1664 = FILL_AREA_STYLE('',(#1665));+#1665 = FILL_AREA_STYLE_COLOUR('',#1602);+#1666 = STYLED_ITEM('color',(#1667),#775);+#1667 = PRESENTATION_STYLE_ASSIGNMENT((#1668));+#1668 = SURFACE_STYLE_USAGE(.BOTH.,#1669);+#1669 = SURFACE_SIDE_STYLE('',(#1670));+#1670 = SURFACE_STYLE_FILL_AREA(#1671);+#1671 = FILL_AREA_STYLE('',(#1672));+#1672 = FILL_AREA_STYLE_COLOUR('',#1602);+#1673 = STYLED_ITEM('color',(#1674),#799);+#1674 = PRESENTATION_STYLE_ASSIGNMENT((#1675));+#1675 = SURFACE_STYLE_USAGE(.BOTH.,#1676);+#1676 = SURFACE_SIDE_STYLE('',(#1677));+#1677 = SURFACE_STYLE_FILL_AREA(#1678);+#1678 = FILL_AREA_STYLE('',(#1679));+#1679 = FILL_AREA_STYLE_COLOUR('',#1602);+#1680 = STYLED_ITEM('color',(#1681),#823);+#1681 = PRESENTATION_STYLE_ASSIGNMENT((#1682));+#1682 = SURFACE_STYLE_USAGE(.BOTH.,#1683);+#1683 = SURFACE_SIDE_STYLE('',(#1684));+#1684 = SURFACE_STYLE_FILL_AREA(#1685);+#1685 = FILL_AREA_STYLE('',(#1686));+#1686 = FILL_AREA_STYLE_COLOUR('',#1602);+#1687 = STYLED_ITEM('color',(#1688),#856);+#1688 = PRESENTATION_STYLE_ASSIGNMENT((#1689));+#1689 = SURFACE_STYLE_USAGE(.BOTH.,#1690);+#1690 = SURFACE_SIDE_STYLE('',(#1691));+#1691 = SURFACE_STYLE_FILL_AREA(#1692);+#1692 = FILL_AREA_STYLE('',(#1693));+#1693 = FILL_AREA_STYLE_COLOUR('',#1602);+#1694 = STYLED_ITEM('color',(#1695),#868);+#1695 = PRESENTATION_STYLE_ASSIGNMENT((#1696));+#1696 = SURFACE_STYLE_USAGE(.BOTH.,#1697);+#1697 = SURFACE_SIDE_STYLE('',(#1698));+#1698 = SURFACE_STYLE_FILL_AREA(#1699);+#1699 = FILL_AREA_STYLE('',(#1700));+#1700 = FILL_AREA_STYLE_COLOUR('',#1602);+#1701 = STYLED_ITEM('color',(#1702),#931);+#1702 = PRESENTATION_STYLE_ASSIGNMENT((#1703));+#1703 = SURFACE_STYLE_USAGE(.BOTH.,#1704);+#1704 = SURFACE_SIDE_STYLE('',(#1705));+#1705 = SURFACE_STYLE_FILL_AREA(#1706);+#1706 = FILL_AREA_STYLE('',(#1707));+#1707 = FILL_AREA_STYLE_COLOUR('',#1602);+#1708 = STYLED_ITEM('color',(#1709),#956);+#1709 = PRESENTATION_STYLE_ASSIGNMENT((#1710));+#1710 = SURFACE_STYLE_USAGE(.BOTH.,#1711);+#1711 = SURFACE_SIDE_STYLE('',(#1712));+#1712 = SURFACE_STYLE_FILL_AREA(#1713);+#1713 = FILL_AREA_STYLE('',(#1714));+#1714 = FILL_AREA_STYLE_COLOUR('',#1602);+#1715 = STYLED_ITEM('color',(#1716),#973);+#1716 = PRESENTATION_STYLE_ASSIGNMENT((#1717));+#1717 = SURFACE_STYLE_USAGE(.BOTH.,#1718);+#1718 = SURFACE_SIDE_STYLE('',(#1719));+#1719 = SURFACE_STYLE_FILL_AREA(#1720);+#1720 = FILL_AREA_STYLE('',(#1721));+#1721 = FILL_AREA_STYLE_COLOUR('',#1602);+#1722 = STYLED_ITEM('color',(#1723),#997);+#1723 = PRESENTATION_STYLE_ASSIGNMENT((#1724));+#1724 = SURFACE_STYLE_USAGE(.BOTH.,#1725);+#1725 = SURFACE_SIDE_STYLE('',(#1726));+#1726 = SURFACE_STYLE_FILL_AREA(#1727);+#1727 = FILL_AREA_STYLE('',(#1728));+#1728 = FILL_AREA_STYLE_COLOUR('',#1602);+#1729 = STYLED_ITEM('color',(#1730),#1015);+#1730 = PRESENTATION_STYLE_ASSIGNMENT((#1731));+#1731 = SURFACE_STYLE_USAGE(.BOTH.,#1732);+#1732 = SURFACE_SIDE_STYLE('',(#1733));+#1733 = SURFACE_STYLE_FILL_AREA(#1734);+#1734 = FILL_AREA_STYLE('',(#1735));+#1735 = FILL_AREA_STYLE_COLOUR('',#1602);+#1736 = STYLED_ITEM('color',(#1737),#1033);+#1737 = PRESENTATION_STYLE_ASSIGNMENT((#1738));+#1738 = SURFACE_STYLE_USAGE(.BOTH.,#1739);+#1739 = SURFACE_SIDE_STYLE('',(#1740));+#1740 = SURFACE_STYLE_FILL_AREA(#1741);+#1741 = FILL_AREA_STYLE('',(#1742));+#1742 = FILL_AREA_STYLE_COLOUR('',#1602);+#1743 = STYLED_ITEM('color',(#1744),#1051);+#1744 = PRESENTATION_STYLE_ASSIGNMENT((#1745));+#1745 = SURFACE_STYLE_USAGE(.BOTH.,#1746);+#1746 = SURFACE_SIDE_STYLE('',(#1747));+#1747 = SURFACE_STYLE_FILL_AREA(#1748);+#1748 = FILL_AREA_STYLE('',(#1749));+#1749 = FILL_AREA_STYLE_COLOUR('',#1602);+#1750 = STYLED_ITEM('color',(#1751),#1068);+#1751 = PRESENTATION_STYLE_ASSIGNMENT((#1752));+#1752 = SURFACE_STYLE_USAGE(.BOTH.,#1753);+#1753 = SURFACE_SIDE_STYLE('',(#1754));+#1754 = SURFACE_STYLE_FILL_AREA(#1755);+#1755 = FILL_AREA_STYLE('',(#1756));+#1756 = FILL_AREA_STYLE_COLOUR('',#1602);+#1757 = STYLED_ITEM('color',(#1758),#1085);+#1758 = PRESENTATION_STYLE_ASSIGNMENT((#1759));+#1759 = SURFACE_STYLE_USAGE(.BOTH.,#1760);+#1760 = SURFACE_SIDE_STYLE('',(#1761));+#1761 = SURFACE_STYLE_FILL_AREA(#1762);+#1762 = FILL_AREA_STYLE('',(#1763));+#1763 = FILL_AREA_STYLE_COLOUR('',#1602);+#1764 = STYLED_ITEM('color',(#1765),#1116);+#1765 = PRESENTATION_STYLE_ASSIGNMENT((#1766));+#1766 = SURFACE_STYLE_USAGE(.BOTH.,#1767);+#1767 = SURFACE_SIDE_STYLE('',(#1768));+#1768 = SURFACE_STYLE_FILL_AREA(#1769);+#1769 = FILL_AREA_STYLE('',(#1770));+#1770 = FILL_AREA_STYLE_COLOUR('',#1602);+#1771 = STYLED_ITEM('color',(#1772),#1141);+#1772 = PRESENTATION_STYLE_ASSIGNMENT((#1773));+#1773 = SURFACE_STYLE_USAGE(.BOTH.,#1774);+#1774 = SURFACE_SIDE_STYLE('',(#1775));+#1775 = SURFACE_STYLE_FILL_AREA(#1776);+#1776 = FILL_AREA_STYLE('',(#1777));+#1777 = FILL_AREA_STYLE_COLOUR('',#1602);+#1778 = STYLED_ITEM('color',(#1779),#1166);+#1779 = PRESENTATION_STYLE_ASSIGNMENT((#1780));+#1780 = SURFACE_STYLE_USAGE(.BOTH.,#1781);+#1781 = SURFACE_SIDE_STYLE('',(#1782));+#1782 = SURFACE_STYLE_FILL_AREA(#1783);+#1783 = FILL_AREA_STYLE('',(#1784));+#1784 = FILL_AREA_STYLE_COLOUR('',#1602);+#1785 = STYLED_ITEM('color',(#1786),#1190);+#1786 = PRESENTATION_STYLE_ASSIGNMENT((#1787));+#1787 = SURFACE_STYLE_USAGE(.BOTH.,#1788);+#1788 = SURFACE_SIDE_STYLE('',(#1789));+#1789 = SURFACE_STYLE_FILL_AREA(#1790);+#1790 = FILL_AREA_STYLE('',(#1791));+#1791 = FILL_AREA_STYLE_COLOUR('',#1602);+#1792 = STYLED_ITEM('color',(#1793),#1207);+#1793 = PRESENTATION_STYLE_ASSIGNMENT((#1794));+#1794 = SURFACE_STYLE_USAGE(.BOTH.,#1795);+#1795 = SURFACE_SIDE_STYLE('',(#1796));+#1796 = SURFACE_STYLE_FILL_AREA(#1797);+#1797 = FILL_AREA_STYLE('',(#1798));+#1798 = FILL_AREA_STYLE_COLOUR('',#1799);+#1799 = COLOUR_RGB('',0.340000003576,0.680000007153,0.444999992847);+#1800 = STYLED_ITEM('color',(#1801),#1238);+#1801 = PRESENTATION_STYLE_ASSIGNMENT((#1802));+#1802 = SURFACE_STYLE_USAGE(.BOTH.,#1803);+#1803 = SURFACE_SIDE_STYLE('',(#1804));+#1804 = SURFACE_STYLE_FILL_AREA(#1805);+#1805 = FILL_AREA_STYLE('',(#1806));+#1806 = FILL_AREA_STYLE_COLOUR('',#1799);+#1807 = STYLED_ITEM('color',(#1808),#1262);+#1808 = PRESENTATION_STYLE_ASSIGNMENT((#1809));+#1809 = SURFACE_STYLE_USAGE(.BOTH.,#1810);+#1810 = SURFACE_SIDE_STYLE('',(#1811));+#1811 = SURFACE_STYLE_FILL_AREA(#1812);+#1812 = FILL_AREA_STYLE('',(#1813));+#1813 = FILL_AREA_STYLE_COLOUR('',#1799);+#1814 = STYLED_ITEM('color',(#1815),#1279);+#1815 = PRESENTATION_STYLE_ASSIGNMENT((#1816));+#1816 = SURFACE_STYLE_USAGE(.BOTH.,#1817);+#1817 = SURFACE_SIDE_STYLE('',(#1818));+#1818 = SURFACE_STYLE_FILL_AREA(#1819);+#1819 = FILL_AREA_STYLE('',(#1820));+#1820 = FILL_AREA_STYLE_COLOUR('',#1602);+#1821 = STYLED_ITEM('color',(#1822),#1307);+#1822 = PRESENTATION_STYLE_ASSIGNMENT((#1823));+#1823 = SURFACE_STYLE_USAGE(.BOTH.,#1824);+#1824 = SURFACE_SIDE_STYLE('',(#1825));+#1825 = SURFACE_STYLE_FILL_AREA(#1826);+#1826 = FILL_AREA_STYLE('',(#1827));+#1827 = FILL_AREA_STYLE_COLOUR('',#1602);+#1828 = STYLED_ITEM('color',(#1829),#1332);+#1829 = PRESENTATION_STYLE_ASSIGNMENT((#1830));+#1830 = SURFACE_STYLE_USAGE(.BOTH.,#1831);+#1831 = SURFACE_SIDE_STYLE('',(#1832));+#1832 = SURFACE_STYLE_FILL_AREA(#1833);+#1833 = FILL_AREA_STYLE('',(#1834));+#1834 = FILL_AREA_STYLE_COLOUR('',#1602);+#1835 = STYLED_ITEM('color',(#1836),#1356);+#1836 = PRESENTATION_STYLE_ASSIGNMENT((#1837));+#1837 = SURFACE_STYLE_USAGE(.BOTH.,#1838);+#1838 = SURFACE_SIDE_STYLE('',(#1839));+#1839 = SURFACE_STYLE_FILL_AREA(#1840);+#1840 = FILL_AREA_STYLE('',(#1841));+#1841 = FILL_AREA_STYLE_COLOUR('',#1602);+#1842 = STYLED_ITEM('color',(#1843),#1381);+#1843 = PRESENTATION_STYLE_ASSIGNMENT((#1844));+#1844 = SURFACE_STYLE_USAGE(.BOTH.,#1845);+#1845 = SURFACE_SIDE_STYLE('',(#1846));+#1846 = SURFACE_STYLE_FILL_AREA(#1847);+#1847 = FILL_AREA_STYLE('',(#1848));+#1848 = FILL_AREA_STYLE_COLOUR('',#1602);+#1849 = STYLED_ITEM('color',(#1850),#1428);+#1850 = PRESENTATION_STYLE_ASSIGNMENT((#1851));+#1851 = SURFACE_STYLE_USAGE(.BOTH.,#1852);+#1852 = SURFACE_SIDE_STYLE('',(#1853));+#1853 = SURFACE_STYLE_FILL_AREA(#1854);+#1854 = FILL_AREA_STYLE('',(#1855));+#1855 = FILL_AREA_STYLE_COLOUR('',#1602);+#1856 = STYLED_ITEM('color',(#1857),#1445);+#1857 = PRESENTATION_STYLE_ASSIGNMENT((#1858));+#1858 = SURFACE_STYLE_USAGE(.BOTH.,#1859);+#1859 = SURFACE_SIDE_STYLE('',(#1860));+#1860 = SURFACE_STYLE_FILL_AREA(#1861);+#1861 = FILL_AREA_STYLE('',(#1862));+#1862 = FILL_AREA_STYLE_COLOUR('',#1602);+#1863 = STYLED_ITEM('color',(#1864),#1457);+#1864 = PRESENTATION_STYLE_ASSIGNMENT((#1865));+#1865 = SURFACE_STYLE_USAGE(.BOTH.,#1866);+#1866 = SURFACE_SIDE_STYLE('',(#1867));+#1867 = SURFACE_STYLE_FILL_AREA(#1868);+#1868 = FILL_AREA_STYLE('',(#1869));+#1869 = FILL_AREA_STYLE_COLOUR('',#1602);+#1870 = STYLED_ITEM('color',(#1871),#1479);+#1871 = PRESENTATION_STYLE_ASSIGNMENT((#1872));+#1872 = SURFACE_STYLE_USAGE(.BOTH.,#1873);+#1873 = SURFACE_SIDE_STYLE('',(#1874));+#1874 = SURFACE_STYLE_FILL_AREA(#1875);+#1875 = FILL_AREA_STYLE('',(#1876));+#1876 = FILL_AREA_STYLE_COLOUR('',#1602);+#1877 = STYLED_ITEM('color',(#1878),#1491);+#1878 = PRESENTATION_STYLE_ASSIGNMENT((#1879));+#1879 = SURFACE_STYLE_USAGE(.BOTH.,#1880);+#1880 = SURFACE_SIDE_STYLE('',(#1881));+#1881 = SURFACE_STYLE_FILL_AREA(#1882);+#1882 = FILL_AREA_STYLE('',(#1883));+#1883 = FILL_AREA_STYLE_COLOUR('',#1602);+#1884 = STYLED_ITEM('color',(#1885),#1509);+#1885 = PRESENTATION_STYLE_ASSIGNMENT((#1886));+#1886 = SURFACE_STYLE_USAGE(.BOTH.,#1887);+#1887 = SURFACE_SIDE_STYLE('',(#1888));+#1888 = SURFACE_STYLE_FILL_AREA(#1889);+#1889 = FILL_AREA_STYLE('',(#1890));+#1890 = FILL_AREA_STYLE_COLOUR('',#1602);+#1891 = STYLED_ITEM('color',(#1892),#1527);+#1892 = PRESENTATION_STYLE_ASSIGNMENT((#1893));+#1893 = SURFACE_STYLE_USAGE(.BOTH.,#1894);+#1894 = SURFACE_SIDE_STYLE('',(#1895));+#1895 = SURFACE_STYLE_FILL_AREA(#1896);+#1896 = FILL_AREA_STYLE('',(#1897));+#1897 = FILL_AREA_STYLE_COLOUR('',#1799);+ENDSEC;+END-ISO-10303-21;
IN-S42ATG.svgadded+214@@ -0,0 +1,214 @@+<?xml version="1.0" standalone="no"?>+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg+ xmlns:svg="http://www.w3.org/2000/svg"+ xmlns="http://www.w3.org/2000/svg"+ xmlns:xlink="http://www.w3.org/1999/xlink"+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"+ version="1.1"+ width="10.5156mm" height="8.5598mm" viewBox="0.0000 0.0000 10.5156 8.5598">+<title>SVG Image created as LED_unit1.svg date 2026-06-08T19:59:31 </title>+ <desc>Image generated by Eeschema-SVG </desc>+<g style="fill:#000000; fill-opacity:1.0000;stroke:#000000; stroke-opacity:1.0000;+stroke-linecap:round; stroke-linejoin:round;"+ transform="translate(0 0) scale(1 1)">+<path style="fill:none; +stroke:#840000; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 2.4003,5.0419+0.8763,6.5659+1.6383,6.5659+0.8763,6.5659+0.8763,5.8039+" /> +<path style="fill:none; +stroke:#840000; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 3.6703,5.0419+2.1463,6.5659+2.9083,6.5659+2.1463,6.5659+2.1463,5.8039+" /> +<path style="fill:none; +stroke:#840000; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 4.1783,4.2799+6.7183,4.2799+" /> +<path style="fill:none; +stroke:#840000; stroke-width:0.2540; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 4.1783,5.5499+4.1783,3.0099+" /> +<path style="fill:none; +stroke:#840000; stroke-width:0.2540; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;fill:none"+d="M 6.7183,5.5499+6.7183,3.0099+4.1783,4.2799+Z" /> +</g>+<g style="fill:none; +stroke:#840000; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;">+<path d="M4.1783 4.2799+L1.6383 4.2799+" />+<path d="M6.7183 4.2799+L9.2583 4.2799+" />+</g>+<g style="fill:none; +stroke:#006464; stroke-width:0.1524; stroke-opacity:1; +stroke-linecap:round; stroke-linejoin:round;">+<text x="5.4483" y="2.3749"+textLength="2.5618" font-size="1.6933" lengthAdjust="spacingAndGlyphs"+text-anchor="middle" opacity="0" stroke-opacity="0">D?</text>+<g class="stroked-text"><desc>D?</desc>+<path d="M4.5713 2.3194+L4.5713 1.0494+" />+<path d="M4.5713 1.0494+L4.8737 1.0494+" />+<path d="M4.8737 1.0494+L5.0551 1.1099+" />+<path d="M5.0551 1.1099+L5.1761 1.2309+" />+<path d="M5.1761 1.2309+L5.2366 1.3518+" />+<path d="M5.2366 1.3518+L5.2970 1.5937+" />+<path d="M5.2970 1.5937+L5.2970 1.7751+" />+<path d="M5.2970 1.7751+L5.2366 2.0170+" />+<path d="M5.2366 2.0170+L5.1761 2.1380+" />+<path d="M5.1761 2.1380+L5.0551 2.2590+" />+<path d="M5.0551 2.2590+L4.8737 2.3194+" />+<path d="M4.8737 2.3194+L4.5713 2.3194+" />+<path d="M6.0228 2.1985+L6.0832 2.2590+" />+<path d="M6.0832 2.2590+L6.0228 2.3194+" />+<path d="M6.0228 2.3194+L5.9623 2.2590+" />+<path d="M5.9623 2.2590+L6.0228 2.1985+" />+<path d="M6.0228 2.1985+L6.0228 2.3194+" />+<path d="M5.7809 1.1099+L5.9018 1.0494+" />+<path d="M5.9018 1.0494+L6.2042 1.0494+" />+<path d="M6.2042 1.0494+L6.3251 1.1099+" />+<path d="M6.3251 1.1099+L6.3856 1.2309+" />+<path d="M6.3856 1.2309+L6.3856 1.3518+" />+<path d="M6.3856 1.3518+L6.3251 1.4728+" />+<path d="M6.3251 1.4728+L6.2647 1.5332+" />+<path d="M6.2647 1.5332+L6.1437 1.5937+" />+<path d="M6.1437 1.5937+L6.0832 1.6542+" />+<path d="M6.0832 1.6542+L6.0228 1.7751+" />+<path d="M6.0228 1.7751+L6.0228 1.8356+" />+</g><text x="5.4483" y="7.4549"+textLength="3.6503" font-size="1.6933" lengthAdjust="spacingAndGlyphs"+text-anchor="middle" opacity="0" stroke-opacity="0">LED</text>+<g class="stroked-text"><desc>LED</desc>+<path d="M4.6319 7.3994+L4.0271 7.3994+" />+<path d="M4.0271 7.3994+L4.0271 6.1294+" />+<path d="M5.0552 6.7342+L5.4786 6.7342+" />+<path d="M5.6600 7.3994+L5.0552 7.3994+" />+<path d="M5.0552 7.3994+L5.0552 6.1294+" />+<path d="M5.0552 6.1294+L5.6600 6.1294+" />+<path d="M6.2042 7.3994+L6.2042 6.1294+" />+<path d="M6.2042 6.1294+L6.5066 6.1294+" />+<path d="M6.5066 6.1294+L6.6880 6.1899+" />+<path d="M6.6880 6.1899+L6.8090 6.3109+" />+<path d="M6.8090 6.3109+L6.8695 6.4318+" />+<path d="M6.8695 6.4318+L6.9299 6.6737+" />+<path d="M6.9299 6.6737+L6.9299 6.8551+" />+<path d="M6.9299 6.8551+L6.8695 7.0970+" />+<path d="M6.8695 7.0970+L6.8090 7.2180+" />+<path d="M6.8090 7.2180+L6.6880 7.3390+" />+<path d="M6.6880 7.3390+L6.5066 7.3994+" />+<path d="M6.5066 7.3994+L6.2042 7.3994+" />+</g></g> +</svg>
README.md+14@@ -1,3 +1,17 @@ # IN-S42ATG +**Inolux Corporation** · Green · 0402 · LED+ Inolux Corporation · Top View SMD LED · 0402 (1.0 × 0.5mm) · InGaN++## Characterization++<iframe src="/blob/component/in-s42atg/IN-S42ATG.html" width="100%" height="2400" frameborder="0" style="border: none; border-radius: 8px;" allowfullscreen></iframe>++## Downloads++| File | Description |+|------|-------------|+| [IN-S42ATG.kicad_sym](/blob/component/in-s42atg/IN-S42ATG.kicad_sym) | KiCad Symbol |+| [IN-S42ATG.kicad_mod](/blob/component/in-s42atg/IN-S42ATG.kicad_mod) | KiCad Footprint |+| [IN-S42ATG.step](/blob/component/in-s42atg/IN-S42ATG.step) | 3D STEP Model |