Veröffentlicht am: 06.04.2026 - 102 Aufrufe
Pocket-Projektor-Marktgröße und Wachstum 2026: Ein B2B-Marktbericht
Eine Einkaufsleiterin bei einer europäischen Einzelhandelsmarke öffnet ihren Posteingang und findet drei Lieferantenangebote für eine neue Linie von Pocket-Projektoren. Ein Angebot listet 200 ANSI-Lumen. Ein anderes gibt 600 an. Ein drittes versteckt die Lumen-Angabe im Kleingedruckten und wirbt stattdessen mit einem „Kino-Erlebnis". Die Käuferin braucht die echten SKU-Nummern, bevor sie ein Datenblatt einem Großhandelspreis und einem Sell-through-Forecast zuordnen kann. Genau diese Entscheidung — vom Datenblatt zum Preis zum Volumen — ist der Grund, warum dieser Modellbericht existiert, und am Ende von Teil 1 verfügen Sie über die Stückkosten-Basis, die Zertifizierungs-Shortlist und den B2B-Beschaffungsrahmen, die Sie benötigen, um jedes Angebot zu bewerten, das in diesem Quartal in Ihrem Posteingang landet.
Die Einheit: Stückkosten und die Spec-Shortlist


Wenn wir uns mit Beschaffungsleitern aus der EU, dem Golfkooperationsrat und Lateinamerika zusammensetzen, ist die erste Folie in unserem Deck immer dieselbe: ein direkter Vergleich dessen, was ein Pocket-Projektor tatsächlich bei 200 Lumen im Vergleich zu 600 Lumen leistet. Diese Projektor-Zahlen sind wichtig, aber erst nachdem der Käufer versteht, was er kauft. Unten finden Sie die Spec-Shortlist, die wir Erstkunden im OEM-Bereich vor jeder Preisdiskussion senden.
| Spezifikation | Einstiegsklasse (B2C-Geschenkartikel) | Mittelklasse (B2B-Einzelhandel) | Premiumklasse (Unternehmen / Hospitality) |
|---|---|---|---|
| ANSI-Lumen (Akku) | 100–150 | 250–400 | 500–800 |
| Native Auflösung | 480p | 720p | 1080p |
| Akkulaufzeit | 60–90 Min. | 90–150 Min. | 120–180 Min. |
| Kabellos | Nur Wi-Fi | Wi-Fi + Bluetooth 5.0 | Wi-Fi 6 + BT 5.2 |
| Betriebssystem | Bare Cast | Android TV AOSP | Android TV lizenziert |
| Zertifizierungen | CE, FCC | CE, FCC, RoHS | CE, FCC, RoHS, REACH |
| MOQ (ODM) | 500 | 1.000 | 2.000 |
| FOB Shenzhen | 42–55 $ | 58–78 $ | 95–145 $ |
Warum ANSI-Lumen — nicht „Lumen" — die Pocket-Projektor-Prognose treiben
Der häufigste Fehler, den wir in SKU-Beschaffungsanfragen sehen, ist der Vergleich einer 200-ANSI-Lumen-Einheit mit einer 200-„Lumen"-Einheit. Der ANSI-Lumen-Standard, definiert vom American National Standards Institute und referenziert in der Branchenbeobachtung der Consumer-Electronics-Berichterstattung von Statista, misst die Lichtleistung unter kontrollierten Bedingungen, während Marketing-„Lumen" sich auf die Spitzenleistung der LED-Quelle beziehen können, die um 60 % bis 75 % sinkt, sobald sie die Optik und den Akkuregler passiert hat. In der Modellprognose entspricht jede 100-ANSI-Lumen-Stufe ungefähr einer Großhandelsstufe von 15 bis 22 $, und jede Stufenstufe entspricht einem anderen Endverbrauchersegment. Die Stufe 100 bis 200 ANSI-Lumen zielt auf den Impulskaufmarkt unter 80 $ im Einzelhandel. Die Stufe 300 bis 500 ANSI-Lumen ist der Bereich, in dem sich die Stück-B2B-Chance konzentriert, da dies der einzige Bereich ist, der hell genug für ein 60-Zoll-Bild in einem normal beleuchteten Hotelzimmer oder Klassenzimmer ist.
Auflösung, Akku und die verborgenen Kostentreiber bei diesem Projektor
Der zweite Beschaffungsfilter ist die native Auflösung gegenüber der „maximal unterstützten" Auflösung. Die als „unterstützt 4K-Eingang" vermarktete Projektor-OEM-Einheit läuft fast immer auf einem nativen 1280×720 DMD (Digital Micromirror Device), was bedeutet, dass der 4K-Eingang herunterskaliert wird, bevor er das Panel überhaupt erreicht. Für B2B-Einkäufer, die die SKU-SKUs bewerten, ist die Regel, die wir unseren Kunden mitteilen, einfach: Zahlen Sie für native Pixel, nicht für Eingangskompatibilität.
Die Akkulaufzeit ist der dritte Kostentreiber, und hier divergieren die Stückkostenmodelle stark von Desktop-Projektoren. Ein 10.000-mAh-Lithium-Akkupack bei 3,7 V adds adds 6 to 9 $ adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds adds
