# unCoded > The self-hosted automated crypto trading Bot for serious operators — author strategies without code, automate execution across 17 exchanges, and stay in full control from your phone. ## Docs - [Welcome to unCoded](https://uncoded.ch/docs/welcome-to-un-coded.md): The self-hosted automated crypto trading suite for serious operators — author strategies without code, automate execution across 17 exchanges, and stay in full control from your phone. - [MCP Integration — Use the Docs from Your AI Assistant](https://uncoded.ch/docs/mcp-integration-use-the-docs-from-your-ai-assistant.md): Connect Claude Desktop, Cursor, Continue, Cline, or Windsurf directly to the unCoded documentation. Search, read, and reference docs from inside your AI workflow without copy-paste. URL: https://uncoded.ch/docs/mcp - [What is unCoded?](https://uncoded.ch/docs/what-is-un-coded.md) - [Who is unCoded for?](https://uncoded.ch/docs/who-is-un-coded-for.md) - [Why choose unCoded?](https://uncoded.ch/docs/why-choose-un-coded.md) - [System requirements](https://uncoded.ch/docs/system-requirements.md) - [Pricing](https://uncoded.ch/docs/pricing.md): The complete cost breakdown — license, server, exchange fees, and what to budget for your first three months. - [Quickstart — From Zero to Your First Live Trade](https://uncoded.ch/docs/quickstart-from-zero-to-your-first-live-trade.md): A focused, step-by-step walkthrough that takes you from scratch to your first running unCoded strategy in approximately half a day. - [Roadmap — Where unCoded Is Heading](https://uncoded.ch/docs/roadmap-where-un-coded-is-heading.md): What's shipping next, what's in research, and how operator demand drives the priorities. The honest forward-looking view. - [Security Philosophy — How the Architecture Protects You](https://uncoded.ch/docs/security-philosophy-how-the-architecture-protects-you.md): The architectural decisions that limit the blast radius of any compromise. Why each choice was made and what it protects. - [Why unCoded — The Operator Case](https://uncoded.ch/docs/why-un-coded-the-operator-case.md): Why we built unCoded the way we did. Self-hosted control, profit-share licensing, no-code strategy authoring, security-first architecture. The case for operators who care about ownership. - [Architecture — How unCoded Runs on Your Server](https://uncoded.ch/docs/architecture-how-un-coded-runs-on-your-server.md): A user-facing view of how the unCoded stack deploys, where data lives, and what to expect operationally. - [Daily Operations — Operator Routines](https://uncoded.ch/docs/daily-operations-operator-routines.md): What to do daily, weekly, monthly, and yearly. The rhythms that keep an unCoded operator informed without being overwhelmed. - [Modules Overview — How They Work Together](https://uncoded.ch/docs/modules-overview-how-they-work-together.md): A clear, conceptual map of the six unCoded modules and the operator workflow that connects them. - [Monitoring — Spotting Issues Before They're Crises](https://uncoded.ch/docs/monitoring-spotting-issues-before-they-re-crises.md): What to watch, where to watch it, and what 'normal' looks like. Building the situational awareness that catches problems early. - [Create your unCoded account](https://uncoded.ch/docs/create-uncoded-account.md): Sign up at uncoded.ch with your Google account and link your Binance UID to activate your unCoded license. - [Updates — Updating unCoded Safely](https://uncoded.ch/docs/updates-updating-un-coded-safely.md): How to update the unCoded stack without disturbing live trading. Update cadence, testing approach, rollback if something goes wrong. - [Start your Netcup Server](https://uncoded.ch/docs/getting-started/start-your-server.md): Provision a Netcup cloud server, install the unCoded app via the one-click installer, and secure your server panel. - [Deploy and Host unCoded on Railway](https://uncoded.ch/docs/deploy-and-host-un-coded-on-railway.md) - [Deploy and Host unCoded on zeabur](https://uncoded.ch/docs/deploy-and-host-un-coded-on-zeabur.md) - [Deploy unCoded on Raspberry Pi](https://uncoded.ch/docs/deploy-and-host-un-coded-on-raspberry-pi.md): Guide for hosting unCoded on a Raspberry Pi — coming soon. - [Capital Allocation — Sizing Decisions](https://uncoded.ch/docs/capital-allocation-sizing-decisions.md): How to allocate capital across pairs, modes, and venues. The sizing decisions that determine your overall risk exposure. - [The Kill Switch — Your Most Important Control](https://uncoded.ch/docs/the-kill-switch-your-most-important-control.md): How the kill switch works, when to flip it, what it does and doesn't stop. The single control that separates 'bad day' from 'catastrophic day'. - [Risk Management — The Operator Framework](https://uncoded.ch/docs/risk-management-the-operator-framework.md): How to think about risk in unCoded. Capital sizing, reserves, kill switch, stop-losses, sub-accounts. The framework that keeps a bad month from becoming a catastrophic one. - [Reserves — The 50% Rule](https://uncoded.ch/docs/reserves-the-50-rule.md): Why you keep approximately 50% of your total exchange balance as reserve, not deployed to active modes. The buffer that absorbs drawdowns and provides operational flexibility. - [Stop-Loss and Trailing — Per-Position Protection](https://uncoded.ch/docs/stop-loss-and-trailing-per-position-protection.md): How unCoded's per-mode stop-losses and trailing stops bound the worst-case per-trade outcome. Configuration, behavior, and operator best practices. - [Sub-Accounts — Strategy Isolation](https://uncoded.ch/docs/sub-accounts-strategy-isolation.md): Use sub-accounts to isolate experimental strategies from your validated production setup. A misbehaving experiment can't affect what's working. - [Common Issues — The Catalog](https://uncoded.ch/docs/common-issues-the-catalog.md): The most common problems unCoded operators encounter, and how to fix them. Categorized by symptom for fast lookup. - [Connection Problems — Diagnosing Connectivity](https://uncoded.ch/docs/connection-problems-diagnosing-connectivity.md): When the bot can't reach the exchange, the database, or the dashboard. Symptoms, causes, and fixes for connectivity issues. - [Error Codes — Per-Venue Reference](https://uncoded.ch/docs/error-codes-per-venue-reference.md): Common exchange error codes you'll encounter, what they mean, and how to fix them. Binance, Bybit, OKX, Kraken, Coinbase. - [Escalation — When to Reach Out for Help](https://uncoded.ch/docs/escalation-when-to-reach-out-for-help.md): When self-help isn't enough, what to do next, how to gather context, and how to interact with support effectively. - [Troubleshooting](https://uncoded.ch/docs/optimization/troubleshooting.md): Diagnose and resolve common unCoded issues — from startup failures to fee management and licensing. - [Frequently Asked Questions](https://uncoded.ch/docs/faq.md): The questions every operator, investor, and curious trader asks before, during, and after going live with unCoded. - [License system](https://uncoded.ch/docs/license-system.md): How unCoded licensing works — checking your status, topping up your balance, and understanding fee structure. - [Common issues](https://uncoded.ch/docs/support/common-issues.md): Diagnose and resolve the most frequent problems with unCoded setup, trading, and licensing. - [Contact & support](https://uncoded.ch/docs/contact.md): How to get help with unCoded — community channels, direct contact, email, and personal setup calls. - [Terms of Service](https://uncoded.ch/docs/terms-of-service.md) - [Impressum](https://uncoded.ch/docs/Impressum.md) - [Glossary — Every Term Defined in Plain Language](https://uncoded.ch/docs/glossary-every-term-defined-in-plain-language.md): The most comprehensive crypto / trading-bot glossary in any product documentation. Every term you'll encounter, organized into 14 families. - [Support — When and How to Reach Out](https://uncoded.ch/docs/support-when-and-how-to-reach-out.md): What support is, what it isn't, when to use it, how to ask for help effectively, and how to get the fastest resolution. - [Felix Götz](https://uncoded.ch/docs/felix-goetz.md) - [Tommy Tietze](https://uncoded.ch/docs/tommy-tietze.md) - [Silvan Zuber](https://uncoded.ch/docs/silvan-zuber.md) - [Jordan Wichert](https://uncoded.ch/docs/jordan-wichert.md) - [Benjamin Reichert](https://uncoded.ch/docs/benjamin-reichert.md) - [Comparison — How unCoded Differs](https://uncoded.ch/docs/comparison-how-un-coded-differs.md): Side-by-side with 3Commas, Cryptohopper, Hummingbot, Gunbot. What each does well, where they differ, and which is right for which operator. - [Why Choose unCoded?](https://uncoded.ch/docs/why-choose-uncoded-easy.md) - [Who is unCoded for?](https://uncoded.ch/docs/who-is-un-coded-for-easy.md) - [unCoded System Requirements](https://uncoded.ch/docs/un-coded-system-requirements.md) - [unCoded Licensing & Payments FAQ](https://uncoded.ch/docs/un-coded-licensing-and-payments-faq.md) - [1. unCoded Quickstart](https://uncoded.ch/docs/un-coded-quickstart.md) - [2.1 Create your Binance Account](https://uncoded.ch/docs/1-create-your-binance-account.md) - [2.2 Binance Account Configuration](https://uncoded.ch/docs/2-binance-account-configuration.md) - [3. Set up your new unCoded account](https://uncoded.ch/docs/backup-set-up.md) - [4.1 Zeabur Server Setup ](https://uncoded.ch/docs/zeabur-server-setup-1.md) - [5. Initial Bot Configuration & first start](https://uncoded.ch/docs/4-initial-bot-configuration-and-first-start.md) - [Netcup Server Setup](https://uncoded.ch/docs/netcup-server-setup.md) - [Database Upgrade & Migration](https://uncoded.ch/docs/database-upgrade-and-migration.md) - [Set Up Telegram for unCoded](https://uncoded.ch/docs/set-up-telegram-for-un-coded.md) - [TradingBot — The Execution Engine](https://uncoded.ch/docs/trading-bot-the-execution-engine.md): The only component that places real orders on your exchange. Disciplined, around-the-clock execution of the rules you authored — with full lifecycle management from buy entry to final close. - [Parameters Overview — Every Configurable Setting](https://uncoded.ch/docs/parameters-overview-every-configurable-setting.md): Complete reference for every parameter you can configure on the TradingBot. Trading pair, activation, investment, buy logic, sell logic, risk management — every knob explained. - [Buy Splits — How Positions Are Built and Refilled](https://uncoded.ch/docs/buy-splits-how-positions-are-built-and-refilled.md): Understand the tier-stack mental model that underlies every unCoded position. The first buy loads a structured ladder; subsequent buys refill empty rungs. Critical concept for reading your trade log correctly. - [Why the First Buy Is Full but Later Buys Are Smaller](https://uncoded.ch/docs/why-the-first-buy-is-full-but-later-buys-are-smaller.md): Direct answer to the most-asked support question: why does the bot buy the full investment_per_buy on the first entry but then split subsequent buys? Walked through with the canonical ADA support-ticket example. - [Modes — The 9 Pre-Built Strategies](https://uncoded.ch/docs/modes-the-9-pre-built-strategies.md): Complete guide to the 9 pre-built modes shipped with unCoded. What each does, when it fits, what capital it needs, and how to choose. - [Configuration examples](https://uncoded.ch/docs/configuration/configuration-examples.md): Ready-to-use strategy configurations for different risk profiles, from conservative to aggressive. - [BasicMode (Mode 4) — The Recommended Starter](https://uncoded.ch/docs/basic-mode-mode-4-the-recommended-starter.md): A 7-split grid with sell targets from +0.25% to +5%. No trailing stop, fully predictable behaviour. The most-tested mode in unCoded — start here. - [FullBullMarket (Mode 1) — For Sustained Up-Trends](https://uncoded.ch/docs/full-bull-market-mode-1-for-sustained-up-trends.md): Optimized for sustained uptrending regimes with wider sell targets and trailing-stop arming. Trades fewer round-trips than BasicMode but holds positions for longer rallies. - [LongTimeLongMoreProfit (Mode 2) — Patient with Wider Targets](https://uncoded.ch/docs/long-time-long-more-profit-mode-2-patient-with-wider-targets.md): The middle-patience mode. Extended hold times, wider profit targets, between BasicMode's frequency and LongTimeLong's extreme patience. - [LongTimeLong (Mode 3) — Maximum Patience](https://uncoded.ch/docs/long-time-long-mode-3-maximum-patience.md): The most patient mode in unCoded. Longest hold times, widest profit targets, highest capital recommendation. For operators who want minimal trading frequency. - [LowMoney (Mode 5) — For $3,000–$5,000 Capital](https://uncoded.ch/docs/low-money-mode-5-for-3-000-5-000-capital.md): Adapted for smaller capital with reduced split count. Tighter sell ladder so per-order sizing clears min-notional even at lower capital. - [MinimalMoney (Mode 6) — The Starter at $1,500](https://uncoded.ch/docs/minimal-money-mode-6-the-starter-at-1-500.md): The minimum-viable starter mode. Designed so trading rate remains meaningful even at the lowest reasonable starting capital. - [Tsl2Sell (Mode 7) — Trailing-Stop-Driven Exits](https://uncoded.ch/docs/tsl2-sell-mode-7-trailing-stop-driven-exits.md): Trailing-stop-dominant exits with simplified buy logic. Optimized for instruments where letting the trailing stop catch the move is more valuable than a fixed sell ladder. - [MarketMaker (Mode 1001) — FDUSD Maker-Rebate Strategy](https://uncoded.ch/docs/market-maker-mode-1001-fdusd-maker-rebate-strategy.md): Specialty market-making mode for Binance FDUSD pairs. Posts maker-only orders on both sides of the book, profiting from rebates rather than directional moves. - [MarketMakerMinimal (Mode 1002) — Smaller-Capital Market-Making](https://uncoded.ch/docs/market-maker-minimal-mode-1002-smaller-capital-market-making.md): Smaller-capital variant of MarketMaker. Same FDUSD-only logic at reduced scale — designed to learn the market-making dynamics before committing larger capital. - [Database migration](https://uncoded.ch/docs/configuration/database-migration.md): How to back up and migrate your unCoded database when upgrading to a newer version. - [Exchanges — Overview and Selection](https://uncoded.ch/docs/exchanges-overview-and-selection.md): unCoded supports 17 hand-tuned production exchanges plus 64 in validation. Here's how to pick yours, what each is good for, and what to avoid. - [API Key Security — Universal Principles](https://uncoded.ch/docs/api-key-security-universal-principles.md): Generating, scoping, IP-allowlisting, and rotating exchange API keys. The single most important security topic in operating an automated trading bot. - [Set up your Binance Account](https://uncoded.ch/docs/getting-started/set-up-binance.md): Create and configure your Binance account with a subaccount and Spot Trading API key so unCoded can trade on your behalf. - [Binance Test Coverage](https://uncoded.ch/docs/binance-test-coverage.md) - [Reference Exchange: Binance](https://uncoded.ch/docs/getting-started/reference-exchange-binance.md) - [Binance.US — Setup and Operation](https://uncoded.ch/docs/binance-us-setup-and-operation.md): The US-resident-only variant of Binance. Required for US operators wanting Binance-style trading with US regulatory compliance. - [BingX — Setup and Operation](https://uncoded.ch/docs/bing-x-setup-and-operation.md): Newer entrant with growing liquidity, competitive fees, and a copy-trading focus. Hyphenated symbol naming. - [Bitfinex — Setup and Operation](https://uncoded.ch/docs/bitfinex-setup-and-operation.md): Long-history venue with sophisticated API. Trade pair prefix `t` (e.g., `tBTCUSD`) — unique among supported venues. - [BitMart — Setup and Operation](https://uncoded.ch/docs/bit-mart-setup-and-operation.md): Global venue with broad listings. Unique requirement: API_UID memo field in addition to key+secret. - [Bitvavo — Setup and Operation](https://uncoded.ch/docs/bitvavo-setup-and-operation.md): Netherlands-based EU-regulated venue with EUR-quoted markets. Recommended starter for EU operators wanting EUR exposure throughout. - [Bybit — Setup and Operation](https://uncoded.ch/docs/bybit-setup-and-operation.md): The standard second-venue choice for operators outgrowing Binance. Strong global liquidity, MiCA-compliant EU variant available, complementary symbol coverage. - [Bybit EU — Setup and Operation](https://uncoded.ch/docs/bybit-eu-setup-and-operation.md): MiCA-compliant variant of Bybit for EU residents. Same trading mechanics as global Bybit with EU regulatory wrapper. - [Coinbase Advanced — Setup and Operation](https://uncoded.ch/docs/coinbase-advanced-setup-and-operation.md): The recommended venue for US residents. Strong regulatory standing, US-friendly compliance, dash-separated symbols, and key+secret authentication (no passphrase). - [Crypto.com Exchange — Setup and Operation](https://uncoded.ch/docs/crypto-com-exchange-setup-and-operation.md): Paired with the Crypto.com app ecosystem. Specific symbol set; CRO-discounted fees. Useful if you're already in the ecosystem. - [Gate.io — Setup and Operation](https://uncoded.ch/docs/gate-io-setup-and-operation.md): Broad listing, good fee structure, solid second-venue choice. Underscore-separated symbol naming. - [HTX (formerly Huobi) — Setup and Operation](https://uncoded.ch/docs/htx-formerly-huobi-setup-and-operation.md): Long-established Asian venue. Strong liquidity on majors, broad Asian-market-driven listings. Lowercase symbol naming. - [Kraken — Setup and Operation](https://uncoded.ch/docs/kraken-setup-and-operation.md): One of the oldest crypto exchanges. Conservative listings, stricter KYC, idiosyncratic symbol naming, and a long track record of reliability. - [KuCoin — Setup and Operation](https://uncoded.ch/docs/ku-coin-setup-and-operation.md): Diverse altcoin coverage. Lists symbols Binance and Bybit don't, with passphrase-based API authentication similar to OKX. - [MEXC — Setup and Operation](https://uncoded.ch/docs/mexc-setup-and-operation.md): Wide altcoin coverage at the speculative end. Lists newer/lower-cap tokens earlier than majors. Variable liquidity — use deliberately. - [OKX — Setup and Operation](https://uncoded.ch/docs/okx-setup-and-operation.md): Strong global liquidity, broad symbol coverage, dash-separated symbol naming, and a unique passphrase requirement that adds a security layer. - [Poloniex — Setup and Operation](https://uncoded.ch/docs/poloniex-setup-and-operation.md): Long-established US-origin venue. Broad listings on older crypto assets. Underscore-separated symbol format. - [TradingBot Changelog](https://uncoded.ch/docs/changelog/trading-bot.md): Release notes and updates for unCoded TradingBot. - [TelegramBot — Your Trade-Close Notifier](https://uncoded.ch/docs/telegram-bot-your-trade-close-notifier.md): A focused, notification-only channel that posts every closed trade straight to your Telegram chat — no remote commands, no clutter, no operator-induced surprises. - [Telegram setup](https://uncoded.ch/docs/configuration/telegram-setup.md): Connect unCoded to Telegram to receive real-time trade notifications and manage your bot via Telegram commands. - [TelegramBot Changelog](https://uncoded.ch/docs/changelog/telegram-bot.md): Release notes and updates for unCoded TelegramBot. - [Backtester — Validate Before You Risk Capital](https://uncoded.ch/docs/backtester-validate-before-you-risk-capital.md): Run any strategy or mode against historical market data. See trades, equity curves, drawdowns, and summary metrics — before you put real money on the line. - [Common Backtesting Mistakes](https://uncoded.ch/docs/common-backtesting-mistakes.md): The pitfalls that turn good backtests into bad live performance. Curve-fitting, look-ahead bias, survivorship bias, fee underestimation, and more. - [Reading Backtest Results — Interpretation Guide](https://uncoded.ch/docs/reading-backtest-results-interpretation-guide.md): What each backtest metric means, how to interpret it, what to look for, and what to ignore. The operator's guide to making sense of backtest output. - [Shadow Mode — Forward-Testing Without Real Capital](https://uncoded.ch/docs/shadow-mode-forward-testing-without-real-capital.md): Run a strategy live against real market data without committing real capital. The bridge between backtest and full live deployment. - [Walk-Forward Testing — Catching Curve-Fitting](https://uncoded.ch/docs/walk-forward-testing-catching-curve-fitting.md): The technique that catches overfitting before live deployment. Train on one window, validate on a different untouched window, and walk forward through time. - [Why Backtest — The Operator Case](https://uncoded.ch/docs/why-backtest-the-operator-case.md): Backtesting is the cheapest way to learn what doesn't work. The operator case for testing every strategy against history before risking capital. - [Backtester Changelog](https://uncoded.ch/docs/changelog/backtester.md): Release notes and updates for unCoded Backtester. - [SignalEditor — Author and Run Custom Strategies](https://uncoded.ch/docs/signal-editor-author-and-run-custom-strategies.md): Compose strategies visually on a canvas, preview them on historical data, and run them live — all without writing a line of code. The same engine evaluates your preview and your live run. - [Conditions — The 41 Predicate Types](https://uncoded.ch/docs/conditions-the-41-predicate-types.md): The 41 condition types across 9 categories that turn indicator outputs into firing decisions. Comparison, range, trend, pattern, logic, time, volume, volatility, statistical. - [Indicators — The 136 Building Blocks](https://uncoded.ch/docs/indicators-the-136-building-blocks.md): Full catalog of indicators available in the SignalEditor. 136 indicators across 9 categories — every classic technical analysis family represented. - [Timeframes — The 15 Cadences](https://uncoded.ch/docs/timeframes-the-15-cadences.md): Every strategy is anchored to a timeframe at the price node. The SignalEditor exposes 15 timeframes from 1-minute to 1-month — pick the one that matches your strategy's natural rhythm. - [Triggers — The 4 Firing Modes](https://uncoded.ch/docs/triggers-the-4-firing-modes.md): Triggers gate when a fired condition produces a signal. The 4 modes — once, once_per_bar, once_per_bar_close, once_per_minute — prevent the most common strategy bug: an oscillator stuck at threshold firing every tick. - [Strategy Recipes — Custom Strategies You Can Build](https://uncoded.ch/docs/strategy-recipes-custom-strategies-you-can-build.md): Worked-example strategies you can author in the SignalEditor. From RSI mean-reversion to multi-timeframe composition to TradingView webhooks — proven patterns with full setup steps. - [Recipe — EMA Cross Trend-Follow on 1h](https://uncoded.ch/docs/recipe-ema-cross-trend-follow-on-1h.md): The classic trend-follower. EMA(20) crossing EMA(50) on hourly candles. Late-but-confirmed entries on uptrends. Whipsaws in chop, captures durable trends. - [Recipe — Multi-Timeframe Strategy](https://uncoded.ch/docs/recipe-multi-timeframe-strategy.md): Daily trend filter + 15-minute entry. Two-strategy composition pattern that combines longer-cycle context with faster entry timing. - [Recipe — RSI Mean-Reversion on BTCUSDT 15m](https://uncoded.ch/docs/recipe-rsi-mean-reversion-on-btcusdt-15m.md): The textbook starter strategy. RSI(14) on 15-minute candles, buy when oversold and price is below trend filter. Reliable in chop, classic mean-reversion logic. - [Recipe — TradingView Webhook Integration](https://uncoded.ch/docs/recipe-trading-view-webhook-integration.md): Connect TradingView's Pine-Script alerts to your unCoded SignalsBot. Use external charting setups to drive your bot. - [SignalEditor Changelog](https://uncoded.ch/docs/changelog/signal-editor.md): Release notes and updates for unCoded SignalEditor. - [SignalsBot — Your Inbound Webhook Gateway](https://uncoded.ch/docs/signals-bot-your-inbound-webhook-gateway.md): A small, focused webhook receiver that turns external signals into validated configuration changes — TradingView, your SignalEditor, or any authenticated source. The smallest, most security-sensitive surface in the stack — and on purpose. - [SignalsBot Changelog](https://uncoded.ch/docs/changelog/signals-bot.md): Release notes and updates for unCoded SignalsBot. - [Dashboard — Your Operator Cockpit](https://uncoded.ch/docs/dashboard-your-operator-cockpit.md): The single web interface where you see what the bots are doing, control modes, manage trade pairs, review trades, and pull tax reports. The cockpit you use to fly the rest of the stack. - [Tax Export — From Trade History to Filed Return](https://uncoded.ch/docs/tax-export-from-trade-history-to-filed-return.md): How to use the Dashboard's tax export. What's in the report, how to use it for tax filing, what unCoded does NOT do for your taxes. - [Initial configuration](https://uncoded.ch/docs/getting-started/initial-configuration.md): Run the Setup Wizard to choose your bot type, risk profile, and trading pair, then activate your license to start trading. - [Dashboard Changelog](https://uncoded.ch/docs/changelog/dashboard.md): Release notes and updates for unCoded Dashboard. - [AGENTS](https://uncoded.ch/docs/AGENTS.md) - [Engine Specification](https://uncoded.ch/docs/engine.md): Deterministic execution semantics of the uncoded.ch backtest engine — bar-loop, intra-bar fill rules, fees, position sizing, risk management, full configuration schema (§20).