app
Molecule Design Guide
Public Made by Adomby adom
How to design Molecules for the Adom Factory: the What-is-a-Molecule slide deck, the Molecule Design white paper (v1.0), and the working design guide with current machine pin and contact specs.
← Commit history
Molecule Design Guide: embedded What-is-a-Molecule deck + white paper + working guide
37 files changed
+513
README.html+513assets/dg01.jpgassets/dg02.pngassets/dg03.pngassets/dg04.jpgassets/dg05.pngassets/dg06.pngassets/dg07.pngassets/wp01.pngassets/wp02.pngassets/wp03.pngassets/wp04.pngassets/wp05.pngassets/wp06.jpgassets/wp07.jpgassets/wp08.pngassets/wp09.pngassets/wp10.pngassets/wp11.pngassets/wp12.pngassets/wp13.jpgassets/wp14.pngassets/wp15.pngassets/wp16.jpgassets/wp17.pngassets/wp18.pngslides/s01.jpgslides/s02.jpgslides/s03.jpgslides/s04.jpgslides/s05.jpgslides/s06.jpgslides/s07.jpgslides/s08.jpgslides/s09.jpgslides/s10.jpgslides/s11.jpgREADME.htmladded+513@@ -0,0 +1,513 @@+<!doctype html>+<html><head><meta charset="utf-8">+<meta name="viewport" content="width=device-width, initial-scale=1">+<style>+ :root {+ --bg:#0d1117; --surface:#161b22; --elevated:#1c2128; --border:#30363d;+ --text:#e6edf3; --body:#c9d1d9; --muted:#8b949e; --accent:#00b8b1;+ }+ * { box-sizing:border-box; margin:0; padding:0; }+ html,body { background:var(--bg); color:var(--body);+ font:15px/1.65 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif; }+ #wrap { max-width:880px; margin:0 auto; padding:28px 20px 60px; }+ h2 { color:var(--text); font-size:26px; margin:46px 0 6px; letter-spacing:-.01em; }+ h2:first-of-type { margin-top:26px; }+ h3 { color:var(--text); font-size:20px; margin:34px 0 10px; }+ h4 { color:var(--text); font-size:16px; margin:26px 0 8px; }+ h5 { color:var(--text); font-size:14.5px; margin:20px 0 6px; }+ p { margin:10px 0; }+ ul { margin:8px 0 8px 26px; }+ li { margin:5px 0; }+ a { color:var(--accent); text-decoration:none; }+ a:hover { text-decoration:underline; }+ strong { color:var(--text); }+ code { font-family:ui-monospace,Consolas,monospace; font-size:.92em;+ background:var(--elevated); border:1px solid var(--border); border-radius:4px; padding:1px 5px; }+ pre.code { font-family:ui-monospace,Consolas,monospace; font-size:13px; color:var(--text);+ background:var(--elevated); border:1px solid var(--border); border-radius:8px;+ padding:12px 14px; margin:6px 0; overflow-x:auto; }+ pre.code code { background:none; border:none; padding:0; }+ .kicker { color:var(--accent); font-weight:600; font-size:12px; letter-spacing:.12em; }+ .pagehead h1 { color:var(--text); font-size:34px; margin:6px 0 8px; letter-spacing:-.02em; }+ .sub { color:var(--muted); max-width:640px; }+ .rule { height:3px; width:64px; background:var(--accent); border-radius:2px; margin:18px 0 0; }+ .chips { display:flex; gap:10px; margin:22px 0 4px; flex-wrap:wrap; }+ .chip { background:var(--surface); border:1px solid var(--border); color:var(--body);+ border-radius:999px; padding:7px 16px; font-size:13px; cursor:pointer; }+ .chip:hover { border-color:var(--accent); color:var(--text); }+ .meta { color:var(--muted); font-size:13px; margin:2px 0 14px; }+ .fig { background:var(--surface); border:1px solid var(--border); border-radius:10px;+ padding:14px; margin:18px 0 6px; text-align:center; }+ .fig img { max-width:100%; height:auto; border-radius:6px; }+ .fig img + img { margin-top:10px; }+ .figcap { color:var(--muted); font-size:12.5px; text-align:center; margin:6px 0 18px; }+ .tblwrap { overflow-x:auto; margin:14px 0; }+ table { border-collapse:collapse; width:100%; font-size:13.5px; }+ th,td { border:1px solid var(--border); padding:8px 10px; text-align:left; vertical-align:top; }+ th { background:var(--elevated); color:var(--text); }+ tr:nth-child(even) td { background:var(--surface); }+ /* slideshow */+ .deck { position:relative; background:var(--surface); border:1px solid var(--border);+ border-radius:12px; padding:14px 14px 10px; margin:16px 0 8px; }+ .stage { position:relative; aspect-ratio:16/9; }+ .slide { display:none; position:absolute; inset:0; width:100%; height:100%;+ object-fit:contain; border-radius:6px; }+ .slide.on { display:block; }+ .deckbar { display:flex; align-items:center; gap:12px; margin-top:10px; }+ .nav { background:var(--elevated); color:var(--text); border:1px solid var(--border);+ border-radius:8px; width:38px; height:32px; font-size:15px; cursor:pointer; }+ .nav:hover { border-color:var(--accent); }+ .dots { display:flex; gap:6px; flex:1; justify-content:center; flex-wrap:wrap; }+ .dot { width:9px; height:9px; border-radius:50%; border:none; background:var(--border); cursor:pointer; padding:0; }+ .dot.on { background:var(--accent); }+ .count { color:var(--muted); font-size:12.5px; min-width:46px; text-align:right; }+ .srcnote { color:var(--muted); font-size:13px; }+ .secdiv { border:none; border-top:1px solid var(--border); margin:44px 0 0; }+ footer { color:var(--muted); font-size:12.5px; margin-top:56px; border-top:1px solid var(--border); padding-top:14px; }+</style></head><body>+<div id="wrap">+ <div class="pagehead">+ <div class="kicker">ADOM HARDWARE PLATFORM</div>+ <h1>Molecule Design Guide</h1>+ <p class="sub">Everything you need to design Molecules for the Adom Factory: the intro slide deck,+ the Molecule Design white paper, and the working design guide.</p>+ <div class="rule"></div>+ <div class="chips">+ <button class="chip" data-go="sec-deck">Slide deck</button>+ <button class="chip" data-go="sec-wp">White paper</button>+ <button class="chip" data-go="sec-guide">Design guide</button>+ </div>+ </div>++ <h2 id="sec-deck">What is a Molecule? — The Slide Deck</h2>+ <p class="meta">11 slides · the beginner introduction. Also available+ <a href="https://docs.google.com/presentation/d/1LQSI1YMCZsVmC5ofULPHoJVyt0phHyBwX1fbb88-CRs/edit" target="_blank" rel="noopener">in Google Slides</a>.</p>+ <div class="deck" id="deck" tabindex="0">+ <div class="stage">+ <img class="slide on" data-n="1" src="https://wiki.adom.inc/adom/molecule-design-guide/render/slides/s01.jpg" alt="Slide 1">+<img class="slide" data-n="2" src="https://wiki.adom.inc/adom/molecule-design-guide/render/slides/s02.jpg" alt="Slide 2">+<img class="slide" data-n="3" src="https://wiki.adom.inc/adom/molecule-design-guide/render/slides/s03.jpg" alt="Slide 3">+<img class="slide" data-n="4" src="https://wiki.adom.inc/adom/molecule-design-guide/render/slides/s04.jpg" alt="Slide 4">+<img class="slide" data-n="5" src="https://wiki.adom.inc/adom/molecule-design-guide/render/slides/s05.jpg" alt="Slide 5">+<img class="slide" data-n="6" src="https://wiki.adom.inc/adom/molecule-design-guide/render/slides/s06.jpg" alt="Slide 6">+<img class="slide" data-n="7" src="https://wiki.adom.inc/adom/molecule-design-guide/render/slides/s07.jpg" alt="Slide 7">+<img class="slide" data-n="8" src="https://wiki.adom.inc/adom/molecule-design-guide/render/slides/s08.jpg" alt="Slide 8">+<img class="slide" data-n="9" src="https://wiki.adom.inc/adom/molecule-design-guide/render/slides/s09.jpg" alt="Slide 9">+<img class="slide" data-n="10" src="https://wiki.adom.inc/adom/molecule-design-guide/render/slides/s10.jpg" alt="Slide 10">+<img class="slide" data-n="11" src="https://wiki.adom.inc/adom/molecule-design-guide/render/slides/s11.jpg" alt="Slide 11">+ </div>+ <div class="deckbar">+ <button class="nav" id="prev" aria-label="Previous slide">←</button>+ <div class="dots"><button class="dot on" data-n="1" aria-label="Slide 1"></button><button class="dot" data-n="2" aria-label="Slide 2"></button><button class="dot" data-n="3" aria-label="Slide 3"></button><button class="dot" data-n="4" aria-label="Slide 4"></button><button class="dot" data-n="5" aria-label="Slide 5"></button><button class="dot" data-n="6" aria-label="Slide 6"></button><button class="dot" data-n="7" aria-label="Slide 7"></button><button class="dot" data-n="8" aria-label="Slide 8"></button><button class="dot" data-n="9" aria-label="Slide 9"></button><button class="dot" data-n="10" aria-label="Slide 10"></button><button class="dot" data-n="11" aria-label="Slide 11"></button></div>+ <span class="count" id="count">1 / 11</span>+ <button class="nav" id="next" aria-label="Next slide">→</button>+ </div>+ </div>+ <p class="srcnote">Use the arrows, the dots, or your keyboard’s arrow keys.</p>++ <hr class="secdiv">+ <h2 id="sec-wp">White Paper: Molecule Design</h2>+ <p class="meta">Adom Industries, Inc. · Version 1.0 · September 2025</p>+ <figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/wp02.png" loading="lazy" alt="">+</figure>+<p>Adom Industries, Inc.</p>+<p>Version 1.0</p>+<p>September 2025</p>+<h3>Overview</h3>+<h4>Why Molecules?</h4>+<ul>+<li>The electronics prototyping community needs a platform for robots to assemble electronic devices</li>+<li>We need a fully functioning, cloud-based electronics workbench that adds real value to engineers and chip manufacturers</li>+</ul>+<h4>What is a Molecule?</h4>+<ul>+<li>A molecule is a PCB that adheres to the design rules developed by Adom Industries. These include:</li>+<ul>+<li>Machine pins in the corners of each PCB for mechanical and electrical interfacing</li>+<li>Machine pin contacts for electrical interfacing among PCBs</li>+<li>Standardized grid spacing in multiples of 2mm, for machine pins and contacts</li>+</ul>+</ul>+<h4>How to use Molecules?</h4>+<p>Molecules are designed in any EDA software, fabricated (currently offsite), and shipped to the Adom Factory. They are then onboarded into inventory, and available for repeated use thereafter. Molecules and accompanying components are autonomously delivered to a workcell within the factory, placed on the appropriate scaffolding, and wired up to the workcell’s control panel and other molecules. The engineer can then interact with the molecules in a variety of ways, including:</p>+<ul>+<ul>+<li>Using our pincers to move devices or swap components</li>+<li>Defining tests for each molecule using high-end measurement equipment (e.g. 6-DOF robot arm, Keysight oscilloscopes and VNAs)</li>+<li>Flashing firmware to chips</li>+<li>Presenting data in user-defined panels in our UI</li>+</ul>+</ul>+<p>The remainder of this document addresses the details of this process, walking through the different elements of the Adom Factory that are directly related to molecule design and use.These elements are:</p>+<ul>+<li>Machine Pins and Contacts</li>+<li>Scaffolds</li>+<ul>+<li>Base Scaffolds</li>+<li>User Scaffolds</li>+<li>Clamping</li>+</ul>+<li>Molecules</li>+<ul>+<li>Wiring</li>+<li>Jumpers and Nesting</li>+<li>Wings</li>+</ul>+</ul>+<h3>Machine Pins and Contacts</h3>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/wp11.png" loading="lazy" alt="">+</figure>+<p class="figcap">Figure 1: Available Contacts and Machine Pins</p>+<p>Machine pins’ primary function is mechanical, and secondary is electrical. The robotically controlled pincers throughout the Adom Factory interact with molecules, test equipment, and other devices using these machine pins, making them a cornerstone of the factory.</p>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/wp12.png" loading="lazy" alt="">+</figure>+<p class="figcap">Figure 2: Pincers Gripping a Machine Pin</p>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/wp13.jpg" loading="lazy" alt="">+</figure>+<p class="figcap">Figure 3: Machine Pins and Contacts on a Molecule</p>+<p>Machine pins have machine pin contacts pressed into the tops of them, so other machine pins and wires can be inserted into them. On a molecule, power and signals can be routed to the corner machine pins, if desired.</p>+<p>Machine pin contacts are purely electrical in function. They are pressed directly into molecules for connecting power and signals via wires, other machine pins, and machine pin needles.</p>+<p class="figcap">Table 1: Machine Pin Comparison</p>+<div class="tblwrap"><table><tr><th><strong>Class</strong></th><th>Medium</th><th>Medium</th><th>Large</th></tr><tr><td><strong>Minimum Spacing</strong></td><td>2mm x 4mm</td><td>2mm x 4mm</td><td>6mm x 6mm</td></tr><tr><td><strong>Height Designator</strong></td><td>Short</td><td>Standard</td><td>Standard</td></tr><tr><td><strong>Overall Height</strong></td><td>7.66mm</td><td>10.26mm</td><td>18.80mm</td></tr><tr><td><strong>Current Capacity</strong></td><td>Medium contacts are rated for about 6.4A</td><td>Medium contacts are rated for about 6.4A</td><td>Large contacts are rated for about 20.8A</td></tr><tr><td><strong>Application</strong></td><td>Use when the bottom of the PCB is bare and no THT components in design</td><td>Use on a small molecule when you have through-hole (THT) components</td><td>Currently the only option for large machine pins</td></tr><tr><td><strong>Typical Molecule Size</strong></td><td>≤96mm</td><td>≤96mm</td><td>≥32mm, ≤576mm</td></tr></table></div>+<p>The table above provides key specs for machine pins. Some important notes include:</p>+<ul>+<li>For each size, the machine pins can handle much more current than the contacts, so ratings for each size is based on the contacts</li>+<li>Medium machine pins within a row can be 2mm apart, but additional rows must be at least 4mm away from each other</li>+<ul>+<li>This is to accommodate pincer interaction</li>+</ul>+<li>Sizing</li>+<ul>+<li>Medium Short is the most common machine pin</li>+<li>Large Standard is currently the only option for large machine pins</li>+</ul>+</ul>+<h3>Scaffolds</h3>+<p>Scaffolds are the Adom Factory equivalent of a breadboard; they are the mechanical interface for molecules. Fundamentally, a scaffold is a PCB with a grid of machine pin contacts that are not electrically connected to anything. Scaffolds can stack on each other, and molecules can stack on scaffolds.</p>+<h4>Base Scaffold</h4>+<p>The base scaffold is the mechanical and electrical foundation of the electronics workspace. It mounts into each workcell, and all other scaffolds and molecules mount onto it. Electrically, it contains a control panel, which provides power and comms to all projects.</p>+<p>The base scaffold is 576mm square and provides an 18x18 grid of large machine pin contacts at 32mm spacing. It is the mechanical foundation of the electronics project.</p>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/wp14.png" loading="lazy" alt="">+</figure>+<p class="figcap">Figure 4: Base Scaffold</p>+<p>Slots for clamps are arrayed throughout, which can be used to secure other scaffolds or molecules. Molecules and scaffolds with large corner machine pins can mount directly onto the base scaffold, while those with medium machine pins require medium-class user scaffolds, which insert into the base scaffold or other user scaffolds.</p>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/wp15.png" loading="lazy" alt="">+</figure>+<p class="figcap">Figure 5: Top View of Base Scaffold Panels</p>+<h5>Workcell Control Panel</h5>+<p>The control panel is the user interface to the Base Scaffold System. The scaffold side control panel travels with the scaffold while the workcell side lives in the workcell. The workcell control panel is backed by a Raspberry Pi Compute 5, providing power and data. The scaffold control panel gives users full control of an RP2350A microcontroller and provides power distribution. Capabilities are as follows:</p>+<ul>+<li>Power</li>+<ul>+<li>PS1 - [0–60 V / 10 A] user variable supply with full bench-style control</li>+<li>PS2 - [5 V / 10 A] switchable user supply</li>+<li>PS3 - spare user supply</li>+<li>USB VBUS - [5 V, 3 A max] VBUS is switched and protected from main PS2 rail: ≈120 ms turn-on at device attach.</li>+<li>Each power rail is capable of floating [PS2 ±2.5 V, USB inactive while floating]. Ground jumpers bond a single return-to-ground per rail (default bridged).</li>+</ul>+<li>Metering</li>+<ul>+<li>Every power rail is individually metered at 20-bit precision [INA228]</li>+<li>Current is accurate to ±0.25 % of reading above 100 mA, with ≈25 µA practical resolution</li>+<li>Rail voltage is accurate to ±0.05 % of reading</li>+</ul>+<li>User MCU</li>+<ul>+<li>26 I/O from the nested RP2350A reach the machine-contact field:</li>+<ul>+<li>four analog-capable</li>+<li>I²C / SPI / UART alternate functions</li>+<li>2 LEDs on programmable GPIO</li>+</ul>+<li>USB 2.0 dual-role (host or device) on the scaffold USB-C</li>+</ul>+<li>USB (workcell side)</li>+<ul>+<li>USB-C and USB-A SuperSpeed (USB 3.0) host ports</li>+<li>USB-A shares its USB 2.0 lanes with Bluetooth (mutually exclusive)</li>+</ul>+<li>Wireless</li>+<ul>+<li>Wi-Fi 6E across 2.4 / 5 / 6 GHz (up to ≈2.4 Gbps) and Bluetooth 5.3</li>+</ul>+<li>Sensing</li>+<ul>+<li>On-board environmental sensing (temperature, humidity, pressure, air quality), 6-axis motion sensing and a digital microphone — all available to the project through the Control Panel Dashboard</li>+</ul>+<li>Debug and control</li>+<ul>+<li>SWD and UART debug plus boot and reset control of the user MCU, carried across the dock</li>+</ul>+</ul>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/wp16.jpg" loading="lazy" alt="">+</figure>+<p class="figcap">Figure 6: Control Panel — workcell (top) and scaffold (bottom) halves</p>+<h4>User Scaffolds</h4>+<p>User scaffolds come in a variety of shapes and sizes. They can be used for a number of purposes:</p>+<ul>+<li>Carry an entire project, or a module thereof</li>+<li>Adapt from one scaffold grid size to another</li>+<li>Adapt from a scaffold with large machine pin contacts to medium machine pin contacts</li>+<li>Provide a shift in Z level to align molecules</li>+</ul>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/wp17.png" loading="lazy" alt="">+</figure>+<p class="figcap">Figure 7: User Scaffold (8mm Pitch)</p>+<p>For example, the user scaffold shown in Figure 7, above, has some key elements:</p>+<ul>+<li>Large machine pins in the corners, allowing it to mount to a scaffold with large machine pin contacts</li>+<ul>+<li>These adhere to the typical large class grid spacing of multiples of 32mm, specifically 64mm here</li>+</ul>+<li>Medium machine pin contacts</li>+<ul>+<li>These adhere to the typical medium class grid spacing of multiples of 2mm, specifically 8mm here</li>+</ul>+<li>Slots for clamps</li>+<ul>+<li>Large clamp slots adjacent to large corner machine pins</li>+<li>Medium clamp slots, arranged in an “X” configuration and provided for clamping molecules and scaffolds connected via medium machine pins</li>+</ul>+<li>Wings</li>+<ul>+<li>Extra space for machine pin contacts outside the rectangular area defined by the corner machine pins</li>+</ul>+</ul>+<p>Another user scaffold is shown in Figure 8, below. This provides additional options for molecule sizing, but lacks slots for clamping due in part to the tighter spacing of machine pin contacts.</p>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/wp18.png" loading="lazy" alt="">+</figure>+<p class="figcap">Figure 8: User Scaffold (4mm Pitch)</p>+<h4>Clamping</h4>+<p>Clamps are used to establish a temporary mechanical connection between two layers in the project. This allows projects to be assembled and disassembled layer by layer. With multiple devices stacked on top of each other, clamps can be used to ensure pincers are able to remove top-most devices without inadvertently removing lower devices. Some typical application where clamps would be useful include:</p>+<ul>+<li>Placing one scaffold onto another</li>+<li>Placing one molecule onto another</li>+<li>Use of a molecule where non-negligible forces or vibrations are induced, e.g. motors and other electromechanical devices</li>+</ul>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/wp03.png" loading="lazy" alt=""><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/wp04.png" loading="lazy" alt="">+</figure>+<p class="figcap">Figure 9: Early Prototype of a Clamp (Two Views)</p>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/wp05.png" loading="lazy" alt="">+</figure>+<p class="figcap">Figure 10: A Clamp Connecting Two Scaffolds</p>+<h3>Molecules</h3>+<p>As mentioned in the introduction, a molecule is a PCB that adheres to Adom Industries’ design rules. These design rules can be applied to make a molecule out of a single resistor, sensors, microcontrollers, and vastly more complex systems. The purpose of these design rules is to facilitate robotically automated prototyping of electronics. Thus, every electronic component can be onboarded into our factory in molecule form.</p>+<p class="figcap">Table 2: Comparison of Traditional PCBs and Molecules</p>+<div class="tblwrap"><table><tr><th><strong>Traditional PCB</strong></th><th><strong>Molecule</strong></th></tr><tr><td>Mounting holes/ mechanical fasteners are not required, or can be located wherever</td><td>Require a machine pin at each corner to provide a mechanical interfaces</td></tr><tr><td>Any connector can be used</td><td>Electrical connection points from one molecule to another should only use machine pins and contacts</td></tr><tr><td>No particular size or spacing requirements need to be observed</td><td>All machine pins and contacts should be fit to a grid, with spacing any integer multiple of 2mm</td></tr><tr><td>Meant to be picked up by human hands</td><td>The workcell pincers pick up the molecule using the corner machine pins</td></tr><tr><td>Can have slide switches, push buttons, and other kinds of human interfaces</td><td>Machine pin jumpers should be used where possible, with potential for support of various human interfaces to be validated in the future</td></tr></table></div>+<p>Each molecule can function as a breakout for a single raw component, but for many components it is preferable to design the molecule to be self-contained for basic operation. In practice, this means adding with supporting components like decoupling caps, oscillators, pull-up/-down resistors, etc. Where multiple configurations are common, jumpers and nested molecules can be utilized to keep the system compact and functional.</p>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/wp06.jpg" loading="lazy" alt="">+</figure>+<p class="figcap">Figure 11: Molecule with Extra Components for Self-Contained Operation</p>+<p>In general, it is convenient to consider the center of the lower-left corner machine pin to be the XY origin, with the Z plane of the origin defined by the top surface of the molecule. The design rules discussed above then dictate that all machine pins and contacts should be positioned a distance from the origin that is a multiple of 2mm.</p>+<h4>Wiring</h4>+<p>Wires are the primary means of establishing electrical connection from the workcell control panel to molecules, and from molecule to molecule. The current approach is use of precision-bent enamel coated wire, which provides a low profile conduction path that remains rigid across the span of the workcell.</p>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/wp07.jpg" loading="lazy" alt="">+</figure>+<p class="figcap">Figure 12: Molecules Arranged on Scaffolds and Wired Together</p>+<p>Medium machine pin contacts can be connected with 24AWG wire, as shown in Figure 12 above, and large machine pin contacts can be connected with 14AWG wire.</p>+<p>Currently, human involvement is required for the wiring process, but it will soon become fully automated in order to achieve rapid design setup and iteration.</p>+<p>This approach to wiring does not ensure impedance matching for the many high speed applications across all sectors of electronics. This limitation will be resolved soon.</p>+<h4>Jumpers</h4>+<p>Jumpers are common in all sectors of electronics. On a molecule, it is desirable for the jumpers to be able to be manipulated by the pincers. This is achieved using a machine-pin-style jumper, as shown in Figure 13 below. Jumpers can be designed in a variety of configurations.</p>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/wp08.png" loading="lazy" alt="">+</figure>+<p class="figcap">Figure 13: Molecule with Several Machine Pin Jumpers</p>+<h4>Nested Molecules</h4>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/wp09.png" loading="lazy" alt="">+</figure>+<p class="figcap">Figure 14: Molecule Using Nested Molecules for Configurability</p>+<p>One approach to maximize configurability on a molecule is to use nested molecules. This allows components to be quickly swapped without requiring additional space on the scaffold or adjusting wires. The buck converter shown in Figure 14 demonstrates this at depth, with each nested molecule able to be swapped for others that have the same or larger footprint.</p>+<h4>Wings</h4>+<p>In general, molecule and scaffold sizes are discussed in terms of the center-to-center distance of machine pins and machine pin contacts. For example, the 64x64mm user scaffold shown in Figure 7, which has its corner machine pins 64mm apart, is in fact 94mm wide. Due to the importance of machine pins, machine pin contacts, and standardized grids in the Adom Factory, this convention persists. So, the space on the PCB outside the machine pins is considered extra and is referred to as a “wing.” In the broadest terms, a wing is any portion of PCB that extends beyond the rectangular bounding box defined by a molecule or scaffold’s corner machine pins. Figure 15 below demonstrates use of a wing to make room for additional machine pin contacts required for accessing all necessary pins on the RP2350B-RM2 molecule.</p>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/wp10.png" loading="lazy" alt="">+</figure>+<p class="figcap">Figure 15: A Molecule with a Wing on Right Edge</p>+<p>While there are several technical classifications of wings being defined, the details thereof exceed the scope of this document.</p>++ <hr class="secdiv">+ <h2 id="sec-guide">The Working Design Guide</h2>+ <p class="meta">Practical guidance: sane PCB design practices, naming, clamping, wings.+ Live version <a href="https://docs.google.com/document/d/1LkYCzQ6w03saC3rsyJgP75t7mG2T0FIEeN36KHn8VPE/edit" target="_blank" rel="noopener">in Google Docs</a>.</p>+ <h3>Welcome to the Adom Molecule Design Guide!</h3>+<p>Here we will walk you through a number of concepts and provide resources so that you can design your own Molecules for the Adom Factory in no time!</p>+<p>First, please review the W<a href="https://docs.google.com/presentation/d/1LQSI1YMCZsVmC5ofULPHoJVyt0phHyBwX1fbb88-CRs/edit" target="_blank" rel="noopener">hat is a Molecule Slide Deck </a>- this will cover beginner concepts.</p>+<p>Fusion 360 PCB/Molecule Workshop: <a href="https://youtu.be/Psn8gl7UtIA" target="_blank" rel="noopener">https://youtu.be/Psn8gl7UtIA</a></p>+<h4>Next steps:</h4>+<p>After you have reviewed the above, you can create your first Molecule! The design concepts are the same but your actual design process may vary slightly depending on which EDA Software you use. We have schematic symbol and footprint libraries for Fusion360 Electronics and KiCad. We also have a Medium Pin Molecule Template available for KiCad. We will do our best to illustrate the design concepts in a software-agnostic manner, but please do expect to see things demonstrated in specific softwares.</p>+<h3>Sane PCB Design Practices</h3>+<p>This is a sanity check for how tight and tiny you’re going to make your board, and the question is whether you really need to. If you’re new to PCB design, you may find this info helpful. If you’re an expert, feel free to indulge or ignore.</p>+<p>Please don’t do stupid or unnecessary things that will substantially raise the price of the board. This can include super thin tracks/ spacings, microvias, or via in pad. Make it manufacturable with relatively conservative settings.</p>+<h4>PCB Layers:</h4>+<ul>+<li>2 layers is fine for basic PCB designs. It’s cheap and quick.</li>+<li>Don’t be afraid to go to 4 layers if you need to for tight and more complex things. 4 layer is not that much more expensive than 2 layer, and adds a little extra production time, but not much. It can make a lot of designs easier by allowing you to use some layers as power planes and others for signal routing, as well as reducing noise and EMI, etc…</li>+<li>Going 6+ layers can be necessary for more complex designs and package escapes</li>+</ul>+<h4>Track width & spacing, Via size:</h4>+<ul>+<li>0.25mm tracks and spacing is good for simple boards, coupled with 0.6/0.3mm vias. These are safe settings. For digital routing best practice is maintaining spacing that is 3x the trace width.</li>+<li>0.20mm tracks and spacing is medium tier and good for slightly tighter boards. Coupled with 0.6/0.3mm vias - this is a sweet spot for safe vias size that take up not too much room! Anyone should be able to make this today. A great default for today’s designs.</li>+<li>0.15mm tracks and spacing is thin and about as low as you should go.<br>On 4+ Layer boards, 0.45mm/0.2mm is the smallest via JLC will make without upcharges and it saves a lot of room when routing!<br>On 2 Layer boards, if you are routing this tight, you can still use 0.6/0.3mm vias, or try to reduce to smallest free size JLC offers. Consult their cryptic “documentation” on the ordering page (see image below)…</li>+<li>JLC does advertise 0.10mm tracks and spacing as the smallest that they will make. However, I do not like to push the envelope. If you know you need this, go for it. However I prefer to stay in the safer margins of 0.15mm tracks and spacing.</li>+</ul>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/dg06.png" loading="lazy" alt="">+</figure>+<h4>SMD Component Sizes:</h4>+<ul>+<li>In a similar flow as the track and vias sizes above, 0603 passives are very workable in today’s environment. If you’re not doing anything crazy complex, you will probably find 0603’s to be your sweet spot in terms of SMD size.</li>+<li>If you are doing tight designs and 0603’s are taking up too much room, you will greatly benefit from going down to 0402’s. JLCPCB will do 0402’s in their economic assembly offering. So please consider this your lower limit.</li>+<li>If you absolutely know what you’re doing, and you’re designing something crazy complex, and you need 0201 or lower, go for it. And if you work at Adom, please talk to Ray about your crazy complex design, it sounds cool!</li>+<li>Similarly, when you are choosing your packages for other components, please don’t pick something super tiny or a BGA unless you absolutely have to.</li>+</ul>+<p>A lot of the information above comes from here, however please note that the information is not always up to date: <a href="https://jlcpcb.com/capabilities/pcb-capabilities" target="_blank" rel="noopener">https://jlcpcb.com/capabilities/pcb-capabilities</a></p>+<p>Please review both the “Rigid PCB” and “PCB Assembly” sections.</p>+<h4>KiCad Setup/ Getting Started:</h4>+<p><strong>Please go to the “KiCad Specific Instructions” section on the left. +</strong></p>+<h3>Machine Pins and Contacts: Current Specs</h3>+<p>The numbers below come from the component pages on the wiki, which are the source of truth. If a dimension here disagrees with a part page or the dims sheet, trust the wiki page.</p>+<ul>+<li><strong>Medium Machine Pin: </strong>Ø1.2mm body in a Ø1.2mm plated hole. This is line-to-line since library v1.2.0 (through v1.1.0 it was a Ø1.1mm press-fit). Retention comes from the solder joint (300um jet paste), so do not rely on the pin holding position before reflow.</li>+<li><strong>Large Machine Pin: </strong>Ø3.6mm body in a Ø3.45mm plated hole. Still a true press-fit with 0.15mm diametral interference.</li>+<li><strong>Medium Contact: </strong>Ø0.78mm drill with a Ø1.30mm annular ring. Rated ~6.4A (80% derated), mates with 24 AWG solid-core wire. 2mm pitch within a row; keep separate rows at least 4mm apart for pincer clearance.</li>+<li><strong>Large Contact: </strong>Ø2.62mm drill with a Ø4.40mm annular ring. Rated ~20.8A (80% derated), mates with 14 AWG solid-core wire.</li>+<li><strong>Validation note: </strong>press-fit hole sizes are still being validated. Confirm against the latest dims sheet before committing a fabrication.</li>+</ul>+<p>Libraries: install the assembled KiCad, Altium, and Fusion 360 libraries from the Adom Machine Parts Library (<a href="https://wiki.adom.inc/adom/adom-machine-parts-library" target="_blank" rel="noopener">wiki.adom.inc/adom/adom-machine-parts-library</a>). KiCad users can also add the public PCM feed from <a href="https://wiki.adom.inc/adom/adom-kicad-library" target="_blank" rel="noopener">wiki.adom.inc/adom/adom-kicad-library</a>.</p>+<h3>Appendix: Molecule Naming</h3>+<p>In addition to referring to himself in the 3rd person, Ray will often use Molecule names like:</p>+<p>Molecule_WS2812B_v1</p>+<p>Molecule_RP2040_Core_v1</p>+<p>Molecule_RP2350B_PICAN2B_v1</p>+<p>Molecule_RP2350B_RM2_v1</p>+<p>As you can see, we want to say Molecule and then the name of the component or chip we are showcasing, and then if necessary we can add modifiers to describe it further. For microcontrollers like a Pi Pico or ESP32, we have Molecules versions like:</p>+<p>“Core” - this means just the minimum viable circuit for the brain to work. We tend not to make “Chip Only” Molecules, we want to have the minimum viable circuit for it to run, which at the very least usually involves a decoupling capacitor, and then maybe some bootstrapping resistors, voltage regulator (5v → 3.3v), and a power and user controlled LED. This describes many of the microcontroller “Core” molecules.</p>+<p>“PICAN” is our fancy name for a Pico + CANBUS IC in one. RM2 refers to a Pico Wifi Module.</p>+<p>One last note: please be as specific as possible with your part number in your Molecule name.</p>+<p>Logic gates make for good examples here, given recent experiences:</p>+<p>“SN74LVC126” is the base name for an entire family, there are 27 results right now on DigiKey for that: <a href="https://www.digikey.com/en/products/filter/logic/buffers-drivers-receivers-transceivers/704?s=N4IgTCBcDaIMoDkDsAWAMgNQMIEYwDYQBdAGhAFYpQAHKHM62yHABhYF92g" target="_blank" rel="noopener">SN74LVC126: Buffers, Drivers, Receivers, Transceivers</a></p>+<p>There are more characters to add to the end to arrive at a complete part number.</p>+<p>The single largest parameter that they dictate is the footprint. This is why we need to be specific. If 2 people both make a Molecule with the same name but inside they use different footprint versions of the same IC, then that can cause confusion.</p>+<p>Btw, another parameter that changes is the “regular” version of the IC vs the “automotive” version. We care less about this, we just want the footprint to match. We can always choose to assemble a “variant’ of the same Molecule design with the regular part or the automotive part, assuming the footprints and pinouts are the same.</p>+<p>“SN74LVC126APWR” is a complete part number that has an exact match: <a href="https://www.digikey.com/en/products/detail/texas-instruments/SN74LVC126APWR/377422" target="_blank" rel="noopener">SN74LVC126APWR</a></p>+<p>That is considered a specific part number, it points to a 14-TSSOP version, and what we ask you to use in your name.</p>+<p>Note: if you Ctrl+F on the 27 results DigiKey page above for “SN74LVC126APWR” you will actually get 4 results. One is the exact match. Another adds Q1 at the end of the name, this is the identical footprint automotive variant of the chip. The remaining 2 have other additional suffixes and are discontinued. Hopefully this illustrates what we are asking for as “specific” and “specific enough”.</p>+<h3>Appendix: Clamping</h3>+<p>You may notice a variety of unique looking milled slots and X patterns in our Scaffolds and wonder what that’s all for. These are receivers (and sometimes also targets) for clamping. Clamps are small mechanical parts (usually made out of a tough plastic) that allow one item (like a Molecule or Scaffold) to be secured to another item below it (likely a Scaffold) temporarily for that scaffold layout. There is nothing permanent about a clamp installation, it can be removed and the underlying layout taken apart at any time.</p>+<h4>Clamping Logic:</h4>+<ul>+<li>Is the item large? Define large. Around 96x96mm is a potential threshold here.</li>+<li>Is the item subject to external forces (greater than that of a single pin or wire being inserted at a time)?</li>+<ul>+<li>If the item is meant to receive other items nested inside it, that counts as a large force. Example of a scaffold expecting other scaffolds or molecules to be inserted into it. Or a molecule that has other molecules nested inside it.</li>+</ul>+<li>Does the item itself create motion, vibration, lift, or other forces that necessitate it be held down?</li>+<li>A bit backwards, but “is the item able to be clamped?” If the item has already been designed and is not designed for/ able to be clamped, then that’s that. On the flip side, if you are designing the item, and realize that it does need to be able to be clamped, then please factor that into your design!</li>+</ul>+<p>A scaffold (usually) meets the above criteria: while some scaffolds may be truly tiny, most scaffolds start around 96x96mm in size and go much larger, into the 300x300mm and perhaps even 600x600mm land. Scaffolds are meant to have other items like Molecules and other Scaffolds inserted into them, and thus also removed from them. This means that the Scaffold is subject to external forces and thus needs to be clamped.</p>+<p>Many of our Molecules that use Large Pins are not “plain electronic circuits” - often times you will see electromechanical things and test equipment: we have motor molecules with wheels or drone propellers, a multi-axis motorized gimbal for testing IMU’s, and portions of a robotic arm. There are situations in which these items can create such forces that clamping is needed to prevent them from excessively vibrating or shaking themselves loose from the Scaffold layout.</p>+<h4>An example Clamp:</h4>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/dg05.png" loading="lazy" alt="">+</figure>+<p>Example of a Medium Scaffold clamped to a Large Scaffold.</p>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/dg04.jpg" loading="lazy" alt="">+</figure>+<h3>Appendix: Molecule Features & Naming Conventions</h3>+<p>Note: This will make more sense as we use tscircuit more.</p>+<pre class="code"><code><Molecule+</code></pre>+<pre class="code"><code>type= "2pin" "4pin"+</code></pre>+<pre class="code"><code>size= "4x2 absolute" "6x2 absolute" "8x8" "16x16" "32x32"+</code></pre>+<pre class="code"><code>pinType="MachinePinLargeStandard" "MachinePinMediumStandard" "MachinePinMediumShort"+</code></pre>+<pre class="code"><code>wing= "nominal" "0.4mm" "2mm padding" "16mm absolute"+</code></pre>+<pre class="code"><code>/>+</code></pre>+<p>The above is a snippet of Ray’s new tscircuit Molecule definition showing all the different ways we can refer to different parameters or features of a Molecule board.</p>+<h4>Type:</h4>+<p>A molecule can be 2pin (commonly seen on our ‘4x2’ jumpers and ‘6x2’ resistor/ capacitor molecules) or 4pin (default, most of our molecules have 4 pins across 4 corners)</p>+<h4>Size:</h4>+<p>This conveniently brings us to size. When we talk about an “8x8” molecule we are actually talking about a relative size, referring to the CtC spacing between the Machine Pins. This is "relative" because the actual nominal PCB Size (before wing is applied) is 10x10 mm. This is our default, so we can say size="8x8" or size="8x8 relative" for the same result.</p>+<p>However, for those ‘4x2’ jumpers and ‘6x2’ resistor/ capacitor molecules, we are actually referring to the nominal absolute size of the molecule (again before wing is applied). So we can say size="4x2 absolute" and that will not inflate it beyond the wing that is applied.</p>+<h4>Pin Type:</h4>+<p>pinType simply refers to which Machine Pin is used in the corners of the Molecule, and the options are:</p>+<p>"MachinePinLargeStandard" "MachinePinMediumStandard" "MachinePinMediumShort"<br>Note that our tscircuit definitions already have the different bounding boxes calculated for offsets, a Medium Pin has a 2mm bounding box while a Large Pin has a 6mm bounding box. This affects the relative size calculation of the PCB, or the pin positions if absolute size is specified.</p>+<h4>Wing:</h4>+<p><strong>This supersedes all the wing logic below. </strong></p>+<p><strong>Simple explanation: </strong>A Wing is extra space we add to (or very rarely subtract from) the calculated outer dimensions of the PCB.</p>+<p><strong>Technically correct, the best kind of correct, addendum:</strong> All molecules technically have some amount of “absolute wing” as we calculate the absolute wing from the center of those corner machine pins. So technically, those “8x8” Medium Pin Molecules have 2mm of absolute wing, that’s how they become 10x10 mm pcb size nominally. If it had 0 wing, it would literally be 8x8 mm PCB size and the machine pins would fall out.</p>+<p>But we make it 10x10 to fit the Medium Machine Pin (2mm bounding box).</p>+<p>Or we would make it 14x14 if we were fitting a Large Machine Pin (6mm bounding box).</p>+<p>So when we add 0.4mm to this auto-calculated 10x10 value, what we're really doing is adding <strong>padding</strong>. That's the new term I'm using here. An 8x8 molecule with 0.4mm of padding results in a 10.4 x 10.4mm PCB. (pic in yellow)</p>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/dg01.jpg" loading="lazy" alt="">+</figure>+<p>Whereas, for a scaffold, or a molecule, if we were talking in absolute terms, we'd be adding 8mm of total wing to get to 16mm of PCB size. So this is absolute wing. (pic in peach)</p>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/dg03.png" loading="lazy" alt="">+</figure>+<p>In reality, we use some keywords to make your life easier so you don’t have to worry about the above precise nomenclature:</p>+<p>You can just say wing = "1mm padding" and tscircuit will know to take the 10x10 board and add 1mm to each dimension of it. <br>or just wing="nominal" where nominal is a keyword meaning "0.4mm of padding" for a molecule.</p>+<p>or wing="8mm absolute" would override the calculations and just add 8mm of total wing, like the pic in peach above.</p>+<pre class="code"><br></pre>+<h3>Appendix: Wings</h3>+<h4>Wing terminology:</h4>+<p><strong>Terminology note: the current terms are Absolute Wing and Padding, defined in the “Molecule Features & Naming Conventions” appendix above. The older names below are kept for history.+</strong></p>+<p>“No wing” : An 8x8 grid molecule with a 10x10mm PCB outline is literally 10x10mm. No wing.</p>+<p>“Nominal wing”: An 8x8 grid molecule with a 10x10mm nominal PCB outline is expanded to 10.4 x 10.4mm to accommodate PCB manufacturing and physics (see: JLCPCB copper to edge clearance requirements, 0.4mm copper to edge clearance is safe, a 0.2mm expansion on each edge (a wing) allows there to be 0.4mm from the PCB edge to the beginning of the corner machine pin’s copper annular ring.) This is a nominal wing. We can still refer to this molecule as being 10x10mm dimensions nominally.</p>+<p>“Full wing”: The maximum a wing can overhang is by half of the grid increment of the item it is on. That means for a medium pin molecule that conforms to the 8mm grid, the maximum wing size is 4mm. <strong>For math purposes, we measure a wing from the center point of “corner” machine pin. So pin center to PCB edge. So even though we only added 3mm of PCB length, it’s a 4mm wing. It can be difficult to describe it this way for Molecules though. +</strong></p>+<p>It is ok to subtract a nominal value from the full wing, see scaffold example below for clarification.</p>+<p><br>“Partial wing”: In certain unique cases (like if clamping is not required) it may be possible to have a wing greater than a nominal wing but smaller than a full wing. Let’s call this a partial wing.</p>+<p>There should be no reason to need to do a greater than full wing. At that point just move your corner pins outward and use the next hole pattern available below (+8mm, +32mm, etc…)</p>+<p>However, an example of slightly violating this rule for good reason will be shown below.</p>+<p>Occasionally, molecules will also get castellations for the pins and contacts to facilitate using the same PCB directly soldered onto another PCB. This technically means that the molecule has a wing, but not one that can be used in the Adom Workcell environment. Just make sure that the total wing is still less than a “full wing” in size, and all should be OK.</p>+<h4>Wing logic:</h4>+<p>Molecules: you most likely don’t need a wing. Most small electrical circuit molecules with medium pins will not have or need a wing. One good reason to add a partial wing there is if you are out of perimeter edge to put contacts and need to sneak 2 or 4 (or 6 or 8) more contacts in without jumping the corner pins to the next hole size.</p>+<p>Scaffolds will usually have a “full wing” as per above. This means that 2 scaffolds can seat right next to each other. Realize that 2 scaffolds with full wings next to each other would literally have 0 spacing between each other. So we apply a nominal value of 0.2 to 0.5mm in reverse, so the large pin scaffold on a 32mm grid with 16mm wing would actually have a (16 - 0.5 = 15.5mm) wing as a result.</p>+<h4>Wing Examples:</h4>+<p>Here is a regular molecule that pushes the board edge 0.5mm past where it would normally be in order to make the castellations happen.</p>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/dg07.png" loading="lazy" alt="">+</figure>+<p>Here is an extreme example of adding 4mm to the length of the PCB because we needed to add a few more contacts and account for the length of the radio module (the bright green rectangle at the bottom). This was derived from the design above, so you can compare the two. As mentioned above, this technically violates the rule above “There should be no reason to need to do a greater than full wing.” Since this is 4.5mm of board edge extension + the 1mm to get to the center of the corner pin, this has a 5.5mm wing for math purposes, which is greater than 8mm / 2 = <strong>4mm wing maximum</strong>.</p>+<figure class="fig"><img src="https://wiki.adom.inc/adom/molecule-design-guide/render/assets/dg02.png" loading="lazy" alt="">+</figure>+<p>The benefit of doing this is that we don’t take up the next position on the 8mm grid of the Scaffold below with our machine pins. Thus, another Molecule that does not have a wing on its top edge could still fit in that scaffold hole pattern, allowing maximum density in the circuit layout.</p>++ <footer>Sources: “White Paper - Molecule Design” v1.0 and “[CURRENT] Molecule Design Guide 2”,+ both maintained in Google Drive; slide deck rebuilt July 2026 from wiki component pages+ (machine pins, contacts, base-scaffold-system). Maintained by the Adom hardware team.</footer>+</div>+<script>+(function() {+ var n = 1, N = 11;+ function show(k) {+ n = ((k - 1 + N) % N) + 1;+ document.querySelectorAll('.slide').forEach(function(el) { el.classList.toggle('on', +el.dataset.n === n); });+ document.querySelectorAll('.dot').forEach(function(el) { el.classList.toggle('on', +el.dataset.n === n); });+ document.getElementById('count').textContent = n + ' / ' + N;+ }+ document.getElementById('prev').onclick = function() { show(n - 1); };+ document.getElementById('next').onclick = function() { show(n + 1); };+ document.querySelectorAll('.dot').forEach(function(d) { d.onclick = function() { show(+d.dataset.n); }; });+ document.addEventListener('keydown', function(e) {+ if (e.key === 'ArrowLeft') show(n - 1);+ if (e.key === 'ArrowRight') show(n + 1);+ });+ document.querySelectorAll('.chip').forEach(function(c) {+ c.onclick = function() { document.getElementById(c.dataset.go).scrollIntoView({behavior: 'smooth'}); };+ });+ // readme-height contract: measure the CONTENT wrapper, never documentElement+ var wrap = document.getElementById('wrap');+ function post() {+ parent.postMessage({type: 'readme-height', height: wrap.offsetHeight + 20}, '*');+ }+ window.addEventListener('load', post);+ window.addEventListener('resize', post);+ document.querySelectorAll('img').forEach(function(im) { im.addEventListener('load', post); });+ setTimeout(post, 800); setTimeout(post, 2500);+})();+</script>+</body></html>
assets/dg01.jpgadded⋯ 1 unchanged line ⋯
assets/dg02.pngadded⋯ 1 unchanged line ⋯
assets/dg03.pngadded⋯ 1 unchanged line ⋯
assets/dg04.jpgadded⋯ 1 unchanged line ⋯
assets/dg05.pngadded⋯ 1 unchanged line ⋯
assets/dg06.pngadded⋯ 1 unchanged line ⋯
assets/dg07.pngadded⋯ 1 unchanged line ⋯
assets/wp01.pngadded⋯ 1 unchanged line ⋯
assets/wp02.pngadded⋯ 1 unchanged line ⋯
assets/wp03.pngadded⋯ 1 unchanged line ⋯
assets/wp04.pngadded⋯ 1 unchanged line ⋯
assets/wp05.pngadded⋯ 1 unchanged line ⋯
assets/wp06.jpgadded⋯ 1 unchanged line ⋯
assets/wp07.jpgadded⋯ 1 unchanged line ⋯
assets/wp08.pngadded⋯ 1 unchanged line ⋯
assets/wp09.pngadded⋯ 1 unchanged line ⋯
assets/wp10.pngadded⋯ 1 unchanged line ⋯
assets/wp11.pngadded⋯ 1 unchanged line ⋯
assets/wp12.pngadded⋯ 1 unchanged line ⋯
assets/wp13.jpgadded⋯ 1 unchanged line ⋯
assets/wp14.pngadded⋯ 1 unchanged line ⋯
assets/wp15.pngadded⋯ 1 unchanged line ⋯
assets/wp16.jpgadded⋯ 1 unchanged line ⋯
assets/wp17.pngadded⋯ 1 unchanged line ⋯
assets/wp18.pngadded⋯ 1 unchanged line ⋯
slides/s01.jpgadded⋯ 1 unchanged line ⋯
slides/s02.jpgadded⋯ 1 unchanged line ⋯
slides/s03.jpgadded⋯ 1 unchanged line ⋯
slides/s04.jpgadded⋯ 1 unchanged line ⋯
slides/s05.jpgadded⋯ 1 unchanged line ⋯
slides/s06.jpgadded⋯ 1 unchanged line ⋯
slides/s07.jpgadded⋯ 1 unchanged line ⋯
slides/s08.jpgadded⋯ 1 unchanged line ⋯
slides/s09.jpgadded⋯ 1 unchanged line ⋯
slides/s10.jpgadded⋯ 1 unchanged line ⋯
slides/s11.jpgadded⋯ 1 unchanged line ⋯