Mexico - Germany Trade 2023 Whole Year: $21.23B Deficit
Key Market Takeaways: Mexico - Germany Trade
The bilateral trade relationship between Mexico and Germany is marked by extreme volatility in exports and steady demand for German imports in 2023.
- $21.23B Deficit for Mexico: Mexico’s imports from Germany ($21.23B) far outpaced exports ($8.75B), widening the trade gap from 2022.
- Industrial Supply Chain Trade: Mexico - Germany trade statistics reveal a lopsided exchange—Mexico ships unclassified/specialized goods (HS 99, 47% share) while relying heavily on German machinery (HS 84, 21% share).
- Asymmetric Integration: Germany holds the high-value position, supplying critical industrial equipment, while Mexico feeds niche manufacturing inputs.
This bilateral trade snapshot is based on verified customs data from the yTrade database.
Mexico-Germany Trade Trend in Whole Year 2023
Mexico Export Performance: Shipments to Germany
- Total Volume: $8.75B in 2023.
- Growth Trend & Context:
- Extreme volatility in YoY growth, ranging from +420.92% (Jan) to -57.81% (Dec).
- No clear directional trend due to erratic monthly swings.
- Key Volatility:
- October saw a -39.61% MoM drop, followed by a +79.84% rebound in November.
- December collapsed -58.24% MoM, the sharpest monthly decline.
Mexico Import Performance: Sourcing from Germany
- Total Volume: $21.23B in 2023.
- Growth Trend & Context:
- Consistently positive YoY growth (avg +16.5%), peaking at +32.02% in January.
- No negative YoY months, indicating steady demand for German imports.
- Key Volatility:
- March (+27.39% MoM) and August (+11.58% MoM) were standout growth months.
- September (-14.96% MoM) marked the steepest monthly contraction.
Mexico - Germany Trade Balance & Market Dynamics
- Net Position: $12.48B deficit for Mexico (Imports $21.23B > Exports $8.75B).
- Relationship Status: Heavy reliance on German imports, with exports failing to offset despite sporadic YoY surges. Trade imbalance widened vs. 2022.
Mexico Import Trend from Germany 2023 Whole Year (Source: yTrade)**
| Month | Value | MoM | YoY |
|---|---|---|---|
| Jan | 1.52B | -1.59% | 32.02% |
| Feb | 1.51B | -0.56% | 13.6% |
| Mar | 1.92B | 27.39% | 25.61% |
| Apr | 1.73B | -9.83% | 10.81% |
| May | 1.88B | 8.41% | 17.5% |
| Jun | 1.83B | -2.35% | 3.53% |
| Jul | 1.80B | -1.91% | 17.12% |
| Aug | 2.01B | 11.58% | 23.4% |
| Sep | 1.71B | -14.96% | 1.26% |
| Oct | 1.91B | 11.99% | 30.17% |
| Nov | 1.77B | -7.07% | 6.65% |
| Dec | 1.66B | -6.63% | 7.62% |
| Total | 21.23B | - | - |
Mexico Export Trend to Germany 2023 Whole Year (Source: yTrade)**
| Month | Value | MoM | YoY |
|---|---|---|---|
| Jan | 814.30M | -7.34% | 420.92% |
| Feb | 626.96M | -23.01% | -16.58% |
| Mar | 664.65M | 6.01% | 4.55% |
| Apr | 604.79M | -9.01% | 26.35% |
| May | 866.59M | 43.29% | -21.58% |
| Jun | 935.14M | 7.91% | 70.69% |
| Jul | 823.88M | -11.9% | 2.17% |
| Aug | 840.15M | 1.98% | 13.31% |
| Sep | 817.47M | -2.7% | 16.99% |
| Oct | 493.66M | -39.61% | -21.71% |
| Nov | 887.78M | 79.84% | 9.13% |
| Dec | 370.75M | -58.24% | -57.81% |
| Total | 8.75B | - | - |
Get Historical Mexico Germany Trade Records
Mexico-Germany Top Trading Products in Whole Year 2023
Mexico Export Profile: What Does Mexico Sell to Germany
- Top Commodity: Rank #1 export is HS Code 99 (47.14% share). This likely represents unclassified or special category goods, often used in bilateral trade for specific agreements.
- Demand Driver: Germany imports these goods for industrial processing or specialized use, given their dominance in Mexico's export mix.
- Concentration: Highly concentrated, with HS Code 99 and 87 (40.84%) together accounting for 87.98% of exports.
Mexico Import Profile: What Does Mexico Buy from Germany
- Top Commodity: Rank #1 import is HS Code 84 (20.61% share), covering machinery and mechanical appliances.
- Dependency Nature: Critical technology dependency, as HS Codes 84, 85, and 87 (machinery, electronics, and vehicles) dominate imports, reflecting Mexico's reliance on German industrial equipment.
Mexico - Germany Trade Relationship Dynamics
- The Exchange Model: Deep Supply Chain Integration. Both sides trade similar high-value industrial goods (e.g., HS Codes 84, 85, 87), indicating intertwined manufacturing sectors.
- Value Chain Position: Germany holds the higher value-add position, exporting advanced machinery (HS 84, 85) while Mexico supplies components or finished goods (HS 87, 99).
Import Analysis by Product: Germany to Mexico (Source: yTrade)
| HS Code | Value | Percent |
|---|---|---|
| 84 | 4.38B | 20.61% |
| 87 | 3.54B | 16.65% |
| 99 | 3.53B | 16.65% |
| 85 | 2.93B | 13.81% |
| 39 | 1.13B | 5.31% |
| 30 | 1.04B | 4.90% |
| 90 | 952.41M | 4.49% |
| 73 | 698.47M | 3.29% |
| 38 | 374.83M | 1.77% |
| 72 | 357.87M | 1.69% |
Export Analysis by Product: Mexico to Germany (Source: yTrade)
| HS Code | Value | Percent |
|---|---|---|
| 99 | 4.12B | 47.14% |
| 87 | 3.57B | 40.84% |
| 85 | 411.30M | 4.70% |
| 84 | 296.15M | 3.39% |
| 90 | 165.68M | 1.89% |
| 15 | 32.51M | 0.37% |
| 04 | 19.10M | 0.22% |
| 22 | 17.81M | 0.20% |
| 39 | 16.09M | 0.18% |
| 74 | 13.47M | 0.15% |
Check Detailed Mexico-Germany Trade HS Code Breakdown
Future Outlook & Strategic Recommendations
Forecast
The Mexico-Germany trade relationship in 2024 will likely remain volatile for Mexican exports, given the erratic monthly swings in 2023, while imports from Germany are expected to sustain steady growth. The persistent $12.48B deficit signals Mexico’s entrenched reliance on German machinery and industrial goods (HS Codes 84, 85, 87), with no immediate export surge capable of rebalancing the trade gap. However, the deep supply chain integration—particularly in automotive and specialized goods (HS Code 99)—offers opportunities for Mexican exporters to stabilize shipments if they align with German industrial demand cycles. Traders should brace for continued asymmetry, with German imports driving the relationship unless Mexico diversifies its export mix.
Strategic Moves
- Diversify Export Offerings: Mexican exporters must reduce dependence on HS Code 99 (unclassified/special goods) by targeting niche demand in Germany’s advanced manufacturing sectors, such as aerospace components or renewable energy parts.
- Lock in Long-Term Supply Contracts: Importers of German machinery (HS 84) should secure fixed-price agreements to hedge against potential euro volatility and supply chain disruptions.
- Optimize Logistics for High-Value Goods: Given the concentration of trade in industrial equipment and vehicles, both sides should invest in streamlined customs clearance and JIT inventory systems to mitigate monthly shipment volatility.
Frequently Asked Questions
How did Mexico - Germany trade perform in 2023 Whole Year?
Mexico's exports to Germany totaled $8.75B, showing extreme volatility, while imports from Germany reached $21.23B with steady growth (+16.5% YoY).
What are the top exports from Mexico to Germany?
HS Code 99 (unclassified/special category goods) dominated Mexico's exports to Germany at 47.14%, followed by HS Code 87 (40.84%), reflecting high concentration in industrial components.
What does Mexico import from Germany?
Mexico's top imports from Germany were machinery (HS Code 84, 20.61%), electronics (HS Code 85), and vehicles (HS Code 87), highlighting reliance on advanced German industrial equipment.
What is the trade balance between Mexico and Germany?
Mexico recorded a $12.48B trade deficit with Germany in 2023, as imports ($21.23B) far exceeded exports ($8.75B), widening the gap compared to 2022.
Mexico Gearbox Parts HS870840 Export Data 2025 September Overview
Mexico's Gearbox Parts (HS Code 870840) Export in September 2025 shows 70% U.S. dominance, with high-end demand from South Korea, Japan, and Germany, per yTrade data.
Mexico Germany Trade 2023 Q1
LS0tCgp0aXRsZTogIk1leGljbyAtIEdlcm1hbnkgVHJhZGUgMjAyMyBRMTogRGVmaWNpdCAmIFRlY2ggRXhjaGFuZ2UiCmRlc2NyaXB0aW9uOiAiTWV4aWNvJ3MgdHJhZGUgZGVmaWNpdCB3aXRoIEdlcm1hbnkgaGl0ICQyLjgzQiBpbiBRMSAyMDIzLCBkcml2ZW4gYnkgZGVtYW5kIGZvciBHZXJtYW4gbWFjaGluZXJ5LiBFeHBsb3JlIE1leGljby1HZXJtYW55IHRyYWRlIHRyZW5kcyBhbmQgdG9wIHRyYWRpbmcgcHJvZHVjdHMgdmlhIHlUcmFkZSBkYXRhLiIKaW1hZ2U6IGh0dHBzOi8vaW8ueXRyYWRlLmNvbS95dHJhZGUtYmxvZy9Db3Zlci9tZXhpY28tZGF0YS9tZXhpY28tZ2VybWFueS10cmFkZS0yMDIzLXExLndlYnAKY3JlYXRlX2RhdGU6IDIwMjMtMDQtMDEKdXBkYXRlX2RhdGU6IDIwMjMtMDQtMDEKYXV0aG9yOiB5VHJhZGUKc2x1ZzogbWV4aWNvLWdlcm1hbnktdHJhZGUtMjAyMy1xMQpjYXRlZ29yeTogSW1wb3J0IGFuZCBFeHBvcnQgRGF0YQpjYXRlZ29yeV9zbHVnOiBpbXBvcnQtYW5kLWV4cG9ydC1kYXRhCnN1Yl9jYXRlZ29yeTogQ291bnRyeSBUcmFkZSBSZXBvcnRzCnN1Yl9jYXRlZ29yeV9zbHVnOiBjb3VudHJ5LXRyYWRlLXJlcG9ydHMKdGFnczoKLSBpZDogNwogIGxhYmVsOiAiSW1wb3J0IEV4cG9ydCBEYXRhIgogIHNsdWc6IGltcG9ydC1leHBvcnQtZGF0YQotIGlkOiAxMgogIGxhYmVsOiAiTWV4aWNvIgogIHNsdWc6IG1leGljbwpzaXRlbWFwOgogIGxvYzogL21leGljby1nZXJtYW55LXRyYWRlLTIwMjMtcTEKICBsYXN0bW9kOiAyMDIzLTA0LTAxCiAgY2hhbmdlZnJlcTogbW9udGhseQogIHByaW9yaXR5OiAwLjgKb2dUaXRsZTogIk1leGljbyAtIEdlcm1hbnkgVHJhZGUgMjAyMyBRMTogRGVmaWNpdCAmIFRlY2ggRXhjaGFuZ2UiCm9nRGVzY3JpcHRpb246ICJNZXhpY28ncyB0cmFkZSBkZWZpY2l0IHdpdGggR2VybWFueSBoaXQgJDIuODNCIGluIFExIDIwMjMsIGRyaXZlbiBieSBkZW1hbmQgZm9yIEdlcm1hbiBtYWNoaW5lcnkuIEV4cGxvcmUgTWV4aWNvLUdlcm1hbnkgdHJhZGUgdHJlbmRzIGFuZCB0b3AgdHJhZGluZyBwcm9kdWN0cyB2aWEgeVRyYWRlIGRhdGEuIgpvZ0ltYWdlOiBodHRwczovL2lvLnl0cmFkZS5jb20veXRyYWRlLWJsb2cvQ292ZXIvbWV4aWNvLWRhdGEvbWV4aWNvLWdlcm1hbnktdHJhZGUtMjAyMy1xMS53ZWJwCnR3aXR0ZXJDYXJkOiBzdW1tYXJ5CnR3aXR0ZXJTaXRlOgp0d2l0dGVyVGl0bGU6ICJNZXhpY28gLSBHZXJtYW55IFRyYWRlIDIwMjMgUTE6IERlZmljaXQgJiBUZWNoIEV4Y2hhbmdlIgp0d2l0dGVyRGVzY3JpcHRpb246ICJNZXhpY28ncyB0cmFkZSBkZWZpY2l0IHdpdGggR2VybWFueSBoaXQgJDIuODNCIGluIFExIDIwMjMsIGRyaXZlbiBieSBkZW1hbmQgZm9yIEdlcm1hbiBtYWNoaW5lcnkuIEV4cGxvcmUgTWV4aWNvLUdlcm1hbnkgdHJhZGUgdHJlbmRzIGFuZCB0b3AgdHJhZGluZyBwcm9kdWN0cyB2aWEgeVRyYWRlIGRhdGEuIgp0d2l0dGVySW1hZ2U6IGh0dHBzOi8vaW8ueXRyYWRlLmNvbS95dHJhZGUtYmxvZy9Db3Zlci9tZXhpY28tZGF0YS9tZXhpY28tZ2VybWFueS10cmFkZS0yMDIzLXExLndlYnAKcm9ib3RzOiBpbmRleCwgZm9sbG93CgotLS0KCiMjIEtleSBNYXJrZXQgVGFrZWF3YXlzOiBNZXhpY28gLSBHZXJtYW55IFRyYWRlICAKClRoZSBiaWxhdGVyYWwgdHJhZGUgcmVsYXRpb25zaGlwIGJldHdlZW4gKipNZXhpY28qKiBhbmQgKipHZXJtYW55Kiogc2hvd3MgZ3Jvd3RoIHdpdGggaGlnaCB2b2xhdGlsaXR5IGluIFExIDIwMjMuICAKCi0gKipUcmFkZSBEZWZpY2l0ICYgVm9sdW1lOioqIE1leGljbyBydW5zIGEgKiokMi44M0IgZGVmaWNpdCoqIHdpdGggR2VybWFueSAoJDQuOTRCIGltcG9ydHMgdnMuICQyLjExQiBleHBvcnRzKSwgcmVmbGVjdGluZyBzdHJvbmcgZGVtYW5kIGZvciBHZXJtYW4gZ29vZHMgZGVzcGl0ZSB1bmV2ZW4gZXhwb3J0IHBlcmZvcm1hbmNlLiAgCi0gKipSZXNvdXJjZS1mb3ItVGVjaCBFeGNoYW5nZToqKiBNZXhpY28gLSBHZXJtYW55IHRyYWRlIHN0YXRpc3RpY3MgcmV2ZWFsIGEgKipjb21wbGVtZW50YXJ5IHN0cnVjdHVyZSoq4oCUTWV4aWNvIHN1cHBsaWVzIGluZHVzdHJpYWwgaW5wdXRzIChIUyA5OSwgODcpIHdoaWxlIEdlcm1hbnkgZG9taW5hdGVzIHdpdGggbWFjaGluZXJ5IChIUyA4NCkgYW5kIHRlY2ggZXhwb3J0cy4gIAotICoqU3RyYXRlZ2ljIERlcGVuZGVuY3k6KiogR2VybWFueSBob2xkcyB0aGUgaGlnaC12YWx1ZSBwb3NpdGlvbiwgc3VwcGx5aW5nIGNyaXRpY2FsIGluZHVzdHJpYWwgZXF1aXBtZW50LCB3aGlsZSBNZXhpY28gcmVtYWlucyBhIGtleSBzdXBwbGllciBvZiBpbnRlcm1lZGlhdGUgZ29vZHMuICAKClRoaXMgYmlsYXRlcmFsIHRyYWRlIHNuYXBzaG90IGlzIGJhc2VkIG9uIHZlcmlmaWVkIGN1c3RvbXMgZGF0YSBmcm9tIHRoZSBbeVRyYWRlIGRhdGFiYXNlXShodHRwczovL3l0cmFkZS5jb20vZGF0YS1zb3VyY2VzKS4KCiMjIE1leGljby1HZXJtYW55IFRyYWRlIFRyZW5kIGluIFExIDIwMjMKCiMjIyBNZXhpY28gRXhwb3J0IFBlcmZvcm1hbmNlOiBTaGlwbWVudHMgdG8gR2VybWFueSAgCi0gKipUb3RhbCBWb2x1bWU6KiogJDIuMTFCIGluIFExIDIwMjMuICAKLSAqKkdyb3d0aCBUcmVuZCAmIENvbnRleHQ6KiogIAogIC0gVm9sYXRpbGUgWW9ZIHBlcmZvcm1hbmNlOiBKYW51YXJ5IHN1cmdlZCA0MjAuOTIlLCBGZWJydWFyeSBkcm9wcGVkIDE2LjU4JSwgTWFyY2ggc3RhYmlsaXplZCBhdCA0LjU1JS4gIAogIC0gTm8gc3BlY2lmaWMgbmV3cyB0byBleHBsYWluIHRoZSBleHRyZW1lIEphbnVhcnkgc3Bpa2Ugb3IgRmVicnVhcnkgY29udHJhY3Rpb24uICAKLSAqKktleSBWb2xhdGlsaXR5OioqIEZlYnJ1YXJ5IHNhdyBhIHNoYXJwIDIzLjAxJSBNb00gZGVjbGluZSwgd2hpbGUgTWFyY2ggcmVib3VuZGVkIDYuMDElLiAgCgojIyMgTWV4aWNvIEltcG9ydCBQZXJmb3JtYW5jZTogU291cmNpbmcgZnJvbSBHZXJtYW55ICAKLSAqKlRvdGFsIFZvbHVtZToqKiAkNC45NEIgaW4gUTEgMjAyMy4gIAotICoqR3Jvd3RoIFRyZW5kICYgQ29udGV4dDoqKiAgCiAgLSBTdHJvbmcgWW9ZIGdyb3d0aDogSmFudWFyeSAoKzMyLjAyJSksIE1hcmNoICgrMjUuNjElKSwgYnV0IEZlYnJ1YXJ5IHNsb3dlZCB0byAxMy42JS4gIAogIC0gTm8gbmV3cyB0byBjb250ZXh0dWFsaXplIGZsdWN0dWF0aW9ucy4gIAotICoqS2V5IFZvbGF0aWxpdHk6KiogTWFyY2ggaW1wb3J0cyBqdW1wZWQgMjcuMzklIE1vTSwgdGhlIGhpZ2hlc3QgbW9udGhseSBnYWluLiAgCgojIyMgTWV4aWNvIC0gR2VybWFueSBUcmFkZSBCYWxhbmNlICYgTWFya2V0IER5bmFtaWNzICAKLSAqKk5ldCBQb3NpdGlvbjoqKiAqKlRyYWRlIGRlZmljaXQqKiBvZiAkMi44M0IgKEltcG9ydHMgJDQuOTRCID4gRXhwb3J0cyAkMi4xMUIpLiAgCi0gKipSZWxhdGlvbnNoaXAgU3RhdHVzOioqIE1leGljbyByZW1haW5zIGhlYXZpbHkgZGVwZW5kZW50IG9uIEdlcm1hbiBpbXBvcnRzLCB3aXRoIGV4cG9ydHMgZmFpbGluZyB0byBvZmZzZXQgdGhlIGdhcC4KCiMjIyBNZXhpY28gSW1wb3J0IFRyZW5kIGZyb20gR2VybWFueSAyMDIzIFExIChTb3VyY2U6IHlUcmFkZSkqKgoKfCBNb250aCB8IFZhbHVlIHwgTW9NIHwgWW9ZIHwKfC0tLS0tLS18LS0tLS0tLXwtLS0tLXwtLS0tLXwKfCBKYW4gfCAxLjUyQiB8IC0xLjU5JSB8IDMyLjAyJSB8CnwgRmViIHwgMS41MUIgfCAtMC41NiUgfCAxMy42JSB8CnwgTWFyIHwgMS45MkIgfCAyNy4zOSUgfCAyNS42MSUgfAp8ICoqVG90YWwqKiB8ICoqNC45NEIqKiB8IC0gfCAtIHwKCiMjIyBNZXhpY28gRXhwb3J0IFRyZW5kIHRvIEdlcm1hbnkgMjAyMyBRMSAoU291cmNlOiB5VHJhZGUpKioKCnwgTW9udGggfCBWYWx1ZSB8IE1vTSB8IFlvWSB8CnwtLS0tLS0tfC0tLS0tLS18LS0tLS18LS0tLS18CnwgSmFuIHwgODE0LjMwTSB8IC03LjM0JSB8IDQyMC45MiUgfAp8IEZlYiB8IDYyNi45Nk0gfCAtMjMuMDElIHwgLTE2LjU4JSB8CnwgTWFyIHwgNjY0LjY1TSB8IDYuMDElIHwgNC41NSUgfAp8ICoqVG90YWwqKiB8ICoqMi4xMUIqKiB8IC0gfCAtIHwKCltHZXQgSGlzdG9yaWNhbCBNZXhpY28gR2VybWFueSBUcmFkZSBSZWNvcmRzXShodHRwczovL3l0cmFkZS5jb20vY291bnRyeS1jb3ZlcmFnZSkKCiMjIE1leGljby1HZXJtYW55IFRvcCBUcmFkaW5nIFByb2R1Y3RzIGluIFExIDIwMjMKCiMjIyBNZXhpY28gRXhwb3J0IFByb2ZpbGU6IFdoYXQgRG9lcyBNZXhpY28gU2VsbCB0byBHZXJtYW55ICAKLSAqKlRvcCBDb21tb2RpdHk6KiogUmFuayAjMSBleHBvcnQgaXMgSFMgQ29kZSA5OSAoNDQuMzMlIHNoYXJlKS4gVGhpcyBsaWtlbHkgcmVwcmVzZW50cyB1bmNsYXNzaWZpZWQgb3Igc3BlY2lhbCBjYXRlZ29yeSBnb29kcywgb2Z0ZW4gdXNlZCBpbiBpbmR1c3RyaWFsIHByb2Nlc3NpbmcuICAKLSAqKkRlbWFuZCBEcml2ZXI6KiogR2VybWFueSBidXlzIHRoZXNlIGZvciBpbmR1c3RyaWFsIHByb2Nlc3NpbmcsIHN1Z2dlc3RpbmcgYSBzdXBwbHkgY2hhaW4gbGluayB3aGVyZSBNZXhpY28gcHJvdmlkZXMgaW50ZXJtZWRpYXRlIGlucHV0cy4gIAotICoqQ29uY2VudHJhdGlvbjoqKiBUcmFkZSBpcyBoaWdobHkgY29uY2VudHJhdGVkLCB3aXRoIHRoZSB0b3AgdHdvIGNhdGVnb3JpZXMgKEhTIDk5IGFuZCA4NykgYWNjb3VudGluZyBmb3IgODcuMjQlIG9mIGV4cG9ydHMuICAKCiMjIyBNZXhpY28gSW1wb3J0IFByb2ZpbGU6IFdoYXQgRG9lcyBNZXhpY28gQnV5IGZyb20gR2VybWFueSAgCi0gKipUb3AgQ29tbW9kaXR5OioqIFJhbmsgIzEgaW1wb3J0IGlzIEhTIENvZGUgODQgKDIxLjI4JSBzaGFyZSksIGNvdmVyaW5nIG1hY2hpbmVyeSBhbmQgbWVjaGFuaWNhbCBhcHBsaWFuY2VzLiAgCi0gKipEZXBlbmRlbmN5IE5hdHVyZToqKiBDcml0aWNhbCB0ZWNobm9sb2d5IGRlcGVuZGVuY3ksIGFzIEdlcm1hbnkgc3VwcGxpZXMgaGlnaC12YWx1ZSBtYWNoaW5lcnkgYW5kIGluZHVzdHJpYWwgZXF1aXBtZW50LiAgCgojIyMgTWV4aWNvIC0gR2VybWFueSBUcmFkZSBSZWxhdGlvbnNoaXAgRHluYW1pY3MgIAotICoqVGhlIEV4Y2hhbmdlIE1vZGVsOioqICoqUmVzb3VyY2UtZm9yLVRlY2ggQ29tcGxlbWVudGFyaXR5LioqIE1leGljbyBleHBvcnRzIGludGVybWVkaWF0ZSBnb29kcyAoSFMgOTksIDg3KSB3aGlsZSBpbXBvcnRpbmcgaGlnaC10ZWNoIG1hY2hpbmVyeSAoSFMgODQsIDg1KSBmcm9tIEdlcm1hbnkuICAKLSAqKlZhbHVlIENoYWluIFBvc2l0aW9uOioqIEdlcm1hbnkgaG9sZHMgdGhlIGhpZ2hlciB2YWx1ZS1hZGQgcG9zaXRpb24sIGV4cG9ydGluZyBjb21wbGV4IG1hY2hpbmVyeSwgd2hpbGUgTWV4aWNvIHN1cHBsaWVzIGluZHVzdHJpYWwgaW5wdXRzLgoKIyMjIEltcG9ydCBBbmFseXNpcyBieSBQcm9kdWN0OiBHZXJtYW55IHRvIE1leGljbyAoU291cmNlOiB5VHJhZGUpCgp8IEhTIENvZGUgfCBWYWx1ZSB8IFBlcmNlbnQgfAp8IC0tLSB8IC0tLSB8IC0tLSB8CnwgODQgfCAxLjA1QiB8IDIxLjI4JSB8CnwgOTkgfCA3NzUuMjNNIHwgMTUuNjklIHwKfCA4NyB8IDc3NC43Nk0gfCAxNS42OCUgfAp8IDg1IHwgNjkxLjYzTSB8IDE0LjAwJSB8CnwgMzkgfCAyNzAuNDlNIHwgNS40NyUgfAp8IDMwIHwgMjUxLjg5TSB8IDUuMTAlIHwKfCA5MCB8IDIwNy4yOE0gfCA0LjE5JSB8CnwgNzMgfCAxNjEuMTdNIHwgMy4yNiUgfAp8IDcyIHwgMTExLjU1TSB8IDIuMjYlIHwKfCAzOCB8IDg3Ljk4TSB8IDEuNzglIHwKCiMjIyBFeHBvcnQgQW5hbHlzaXMgYnkgUHJvZHVjdDogTWV4aWNvIHRvIEdlcm1hbnkgKFNvdXJjZTogeVRyYWRlKQoKfCBIUyBDb2RlIHwgVmFsdWUgfCBQZXJjZW50IHwKfCAtLS0gfCAtLS0gfCAtLS0gfAp8IDk5IHwgOTMzLjYwTSB8IDQ0LjMzJSB8CnwgODcgfCA5MDMuNTlNIHwgNDIuOTElIHwKfCA4NSB8IDEwMC40Mk0gfCA0Ljc3JSB8CnwgODQgfCA4Ny4yMU0gfCA0LjE0JSB8CnwgOTAgfCA0OC4wM00gfCAyLjI4JSB8CnwgMjIgfCA1LjIwTSB8IDAuMjUlIHwKfCAzMyB8IDQuNThNIHwgMC4yMiUgfAp8IDA5IHwgMy41M00gfCAwLjE3JSB8CnwgMDQgfCAzLjIxTSB8IDAuMTUlIHwKfCAzOSB8IDMuMDBNIHwgMC4xNCUgfAoKW0NoZWNrIERldGFpbGVkIE1leGljby1HZXJtYW55IFRyYWRlIEhTIENvZGUgQnJlYWtkb3duXShodHRwczovL3l0cmFkZS5jb20vaHMtY29kZS1jb3ZlcmFnZSkKCiMjIEZ1dHVyZSBPdXRsb29rICYgU3RyYXRlZ2ljIFJlY29tbWVuZGF0aW9ucyAgCgojIyMgRm9yZWNhc3QgZm9yIE1leGljby1HZXJtYW55IFRyYWRlICAKVGhlIE1leGljby1HZXJtYW55IHRyYWRlIHJlbGF0aW9uc2hpcCBpcyBleHBlY3RlZCB0byByZW1haW4gdm9sYXRpbGUgaW4gdGhlIG5lYXIgdGVybSwgd2l0aCBNZXhpY2/igJlzIGV4cG9ydCBncm93dGggbGlrZWx5IHRvIGZsdWN0dWF0ZSBkdWUgdG8gaXRzIGhlYXZ5IHJlbGlhbmNlIG9uIGludGVybWVkaWF0ZSBnb29kcyAoSFMgOTkpIGFuZCBHZXJtYW554oCZcyBpbmR1c3RyaWFsIGRlbWFuZCBjeWNsZXMuIFRoZSBwZXJzaXN0ZW50IHRyYWRlIGRlZmljaXQgKCQyLjgzQiBpbiBRMSAyMDIzKSB1bmRlcnNjb3JlcyBNZXhpY2/igJlzIHN0cnVjdHVyYWwgZGVwZW5kZW5jeSBvbiBHZXJtYW4gbWFjaGluZXJ5IChIUyA4NCksIHdoaWNoIHdpbGwgY29udGludWUgZHJpdmluZyBpbXBvcnRzLiBIb3dldmVyLCBpZiBNZXhpY28gc3RhYmlsaXplcyBpdHMgZXhwb3J0IHBlcmZvcm1hbmNl4oCUcGFydGljdWxhcmx5IGluIGhpZ2gtdmFsdWUgaW5kdXN0cmlhbCBpbnB1dHPigJRpdCBjb3VsZCBuYXJyb3cgdGhlIGRlZmljaXQuIFRyYWRlcnMgc2hvdWxkIHByZXBhcmUgZm9yIHVuZXZlbiBkZW1hbmQsIHdpdGggTWFyY2jigJlzIHJlYm91bmQgc2lnbmFsaW5nIHBvdGVudGlhbCByZXNpbGllbmNlLiAgCgojIyMgU3RyYXRlZ2ljIE1vdmVzIGZvciBUcmFkZXJzICYgUG9saWN5bWFrZXJzICAKLSAqKkRpdmVyc2lmeSBFeHBvcnQgQ29tcG9zaXRpb246KiogTWV4aWNvIG11c3QgcmVkdWNlIHJlbGlhbmNlIG9uIEhTIDk5IGJ5IGV4cGFuZGluZyBpbnRvIGhpZ2hlci12YWx1ZSBleHBvcnRzIChlLmcuLCBhdXRvbW90aXZlIGNvbXBvbmVudHMgdW5kZXIgSFMgODcpIHRvIG1pdGlnYXRlIHZvbGF0aWxpdHkgYW5kIGNhcHR1cmUgbW9yZSBHZXJtYW4gbWFya2V0IHNoYXJlLiAgCi0gKipMb2NrIGluIExvbmctVGVybSBTdXBwbHkgQ29udHJhY3RzOioqIEdlcm1hbiBtYWNoaW5lcnkgaW1wb3J0ZXJzIHNob3VsZCBzZWN1cmUgZml4ZWQtcHJpY2UgYWdyZWVtZW50cyB0byBoZWRnZSBhZ2FpbnN0IHBvdGVudGlhbCBjb3N0IHNwaWtlcywgZ2l2ZW4gdGhlIGNyaXRpY2FsIHJvbGUgb2YgSFMgODQgaW4gTWV4aWNv4oCZcyBpbmR1c3RyaWFsIGJhc2UuICAKLSAqKk9wdGltaXplIExvZ2lzdGljcyBmb3IgSW50ZXJtZWRpYXRlIEdvb2RzOioqIEV4cG9ydGVycyBvZiBNZXhpY2FuIGluZHVzdHJpYWwgaW5wdXRzIChIUyA5OSkgbXVzdCBzdHJlYW1saW5lIHNoaXBwaW5nIGFuZCBpbnZlbnRvcnkgbWFuYWdlbWVudCB0byBjYXBpdGFsaXplIG9uIEdlcm1hbnnigJlzIGp1c3QtaW4tdGltZSBtYW51ZmFjdHVyaW5nIGRlbWFuZCwgbWluaW1pemluZyBGZWJydWFyeS1zdHlsZSBkb3dudHVybnMuCgojIyBGcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9ucwoKIyMjIEhvdyBkaWQgTWV4aWNvIC0gR2VybWFueSB0cmFkZSBwZXJmb3JtIGluIDIwMjMgUTE/ICAKTWV4aWNvJ3MgZXhwb3J0cyB0byBHZXJtYW55IHRvdGFsZWQgJDIuMTFCLCB3aXRoIHZvbGF0aWxlIFlvWSBncm93dGgsIHdoaWxlIGltcG9ydHMgZnJvbSBHZXJtYW55IHJlYWNoZWQgJDQuOTRCLCBzaG93aW5nIHN0cm9uZyBZb1kgZ3Jvd3RoLiAgCgojIyMgV2hhdCBhcmUgdGhlIHRvcCBleHBvcnRzIGZyb20gTWV4aWNvIHRvIEdlcm1hbnk/ICAKTWV4aWNvJ3MgdG9wIGV4cG9ydHMgdG8gR2VybWFueSBhcmUgdW5jbGFzc2lmaWVkL3NwZWNpYWwgY2F0ZWdvcnkgZ29vZHMgKEhTIENvZGUgOTkpIGFuZCBpbmR1c3RyaWFsIGlucHV0cyAoSFMgQ29kZSA4NyksIGFjY291bnRpbmcgZm9yIDg3LjI0JSBvZiB0b3RhbCBleHBvcnRzLiAgCgojIyMgV2hhdCBkb2VzIE1leGljbyBpbXBvcnQgZnJvbSBHZXJtYW55PyAgCk1leGljbyBwcmltYXJpbHkgaW1wb3J0cyBtYWNoaW5lcnkgYW5kIG1lY2hhbmljYWwgYXBwbGlhbmNlcyAoSFMgQ29kZSA4NCkgZnJvbSBHZXJtYW55LCByZWZsZWN0aW5nIGEgY3JpdGljYWwgdGVjaG5vbG9neSBkZXBlbmRlbmN5LiAgCgojIyMgV2hhdCBpcyB0aGUgdHJhZGUgYmFsYW5jZSBiZXR3ZWVuIE1leGljbyBhbmQgR2VybWFueT8gIApNZXhpY28gcmVjb3JkZWQgYSB0cmFkZSBkZWZpY2l0IG9mICQyLjgzQiB3aXRoIEdlcm1hbnkgaW4gUTEgMjAyMywgZHJpdmVuIGJ5IGhpZ2hlciBpbXBvcnRzIG9mIGhpZ2gtdGVjaCBtYWNoaW5lcnku
