dbf-lezer. Programma's voor het openen van DBF-bestanden. DBF naar andere formaten converteren

Programma's voor het werken met DBF-bestanden.

Nieuw in de categorie "Werken met DBF":

Vrij
DBF Editor 1.75.1 is een redelijk krachtige viewer en editor voor DBF-bestanden, die de mogelijkheid biedt om groot aantal bewerkingen met databases. De DBF Editor-applicatie biedt de mogelijkheid om dbf-bestanden in dBase III-IV-, Visual FoxPro-, FoxPro- en Clipper-formaten te bekijken en te bewerken.

Vrij
Scan DBF 1.6 is een applicatie voor het repareren of herstellen van beschadigde DBF-bestanden. De toepassing Scan DBF helpt u beschadigde bestanden te herstellen in het geval van een computer- of stroomstoring, wanneer het einde of de header van het DBF-bestand beschadigd is.

Vrij
Reportizer 3.7.1.629 is een hulpmiddel voor het genereren en afdrukken van rapporten die door databases zijn gegenereerd. Met de Reportizer-app kunt u eenvoudig rapporten maken, afdrukken, bewerken en verzamelingen rapporten beheren.

Vrij
DBREdit 1.25 is een tabeleditor voor databases DBF-gegevens. De DBREdit-editor werkt met platte tabellen zonder gebruik te maken van stuurprogramma's of toegangssystemen.

Vrij
DBF2ORA 1.0 is een applicatie voor het importeren van datatabellen van DBF in Oracle, evenals de mogelijkheid om de instellingen van de import op te slaan. De DBF2ORA-applicatie heeft ook de mogelijkheid om bestanden te verwerken voordat ze worden geïmporteerd.

Vrij
DBF Work 3.0.0.1 is een programma voor het bekijken, bewerken en exporteren van bestanden DBF-formaat. Het DBF Work-programma heeft de mogelijkheid om gegevens in 14 formaten te exporteren (pdf, excel, word, html en andere).

Vrij
DBF View 2.79 is gratis, compact en handig programma over het werken met DBF-bestanden. Het DBF View-programma werkt zowel zonder installatie als zonder extra bibliotheken of chauffeurs.

Vrij
DBF DeskTop 1.0.0.0 (build 2600) is multifunctionele editor voor DBF-bestanden (databases). Het DBF DeskTop-programma biedt de mogelijkheid om nieuwe DBF-tabellen te maken, deze in te pakken, de structuur (veldvolgorde) te wijzigen en indexen met expressies te maken.

Vrij
DBF-gegevensimport voor ORACLE 1.4 is professioneel hulpmiddel over het importeren of voorbereiden van het importeren van DBF-bestanden uit de xBase-programmeertalen (Visual FoxPro, Clipper, FlagShip, FoxPro, FoxBase, dBaseIII+, dBaseV en dBaseIV) in de ORACLE-database.

Vrij
Controleer en repareer DBF 1.4.0.2 handige toepassing voor diagnose en herstel beschadigde bestanden DBF uit de xBase-programmeertaalfamilie (FoxBase, FlagShip, FoxPro, dBaseV, dBaseIII+, Clipper, dBaseIV, Visual FoxPro). De Check and Repair DBF-applicatie heeft de mogelijkheid om dit uit te voeren gedetailleerde analyse, evenals diagnostiek van de bestandsstructuur.

Een gratis universele DBF-editor waarmee u bestaande databases kunt openen en nieuwe kunt maken. Heeft zeer kleine maten, kan worden gestart vanaf een flashstation en heeft tegelijkertijd veel geavanceerde tools voor het werken met DBF-bestanden, inclusief zelfs ondersteuning voor SQL-query's!

Galerij met screenshots

Meestal behandelen we op de site programma's die interessant zullen zijn voor een breed scala aan lezers, maar vandaag is het niet helemaal gewoon :). Ik heb ooit als een soort ‘computerspecialist’ bij verschillende overheidskantoren gewerkt en daar kreeg ik vaak te maken diverse programma's, draait op FoxPro...

Het grootste probleem bij al deze toepassingen was dat een eenvoudige gebruiker de database gemakkelijk kon verpesten, zodat deze later niet meer kon worden geopend reguliere middelen, dus het was nodig om het te verdraaien om het weer tot leven te brengen (wat niet altijd werkte, gezien de “capaciteiten” van “wilde gebruikers” :)).

En nu, enkele jaren later, aangezien ik er niet meer werk, kregen we een mail met het verzoek om een ​​nieuwe toe te voegen gratis programma voor het bewerken van DBF-databases, die een eenvoudige naam heeft - Sdbf. Laten we erover praten :)

Vergelijking met een betaalde analoog

Sdbf is, ondanks zijn draagbaarheid (kan werken vanaf een flashdrive!) en kleine omvang, een redelijk geavanceerde database-editor waarmee je elke database in DBF-formaat kunt maken, bewerken en exporteren, van de xBaseIII-specificatie tot het moderne xVisualFoxPro! Laten we de functionaliteit van Sdbf vergelijken met de mogelijkheden van een van de meest geavanceerde editors van dit soort, DBF Commander Professional:

Uit de bovenstaande tabel zien we dat de programma's enigszins verschillen qua functionaliteit, maar Sdbf is in de eerste plaats draagbaar (wat meestal belangrijk is, aangezien elke computertechnicus er de voorkeur aan geeft een setje mee te nemen noodzakelijke programma's op een flashdrive), en ten tweede is het helemaal gratis!

Eerste lancering van Sdbf

Om het programma uit te voeren, pakt u het gewoon uit het gedownloade archief naar een willekeurige locatie en opent u het resulterende EXE-bestand. Een leeg venster zoals dit verschijnt voor ons:

Slepen en neerzetten wordt helaas niet ondersteund, dus om te beginnen moeten we het menu "Bestand" oproepen en een van de twee selecteren beschikbare acties: "Creëren" nieuwe basis of “Open” een bestaande. Laten we een bestaande database openen:

De inhoud van de geselecteerde database wordt voor ons geopend in de vorm van een tabel. De “nul”-regel geeft de namen van de velden weer, en vanaf de eerste regel de inhoud zelf. Onder de inhoud bevindt zich een werkbalk en een statusbalk.

Deze laatste geeft behoorlijk wat nuttige service-informatie weer, waaronder het aantal records in de database, codering, aanmaakdatum en automatisch bepaald formaat. Van de formaten ondersteunt Sdbf niet alleen vroege versies xBase (I en II) en stelt u in staat DBF-bestanden van de volgende typen te openen en te maken:

  • xBase III - VII;
  • xClipper;
  • xFoxPro;
  • xVisualFoxPro.

Hulpmiddelen voor het zoeken en filteren van gegevens

Met het Sdbf-programma kunt u elke cel rechtstreeks bewerken open basis gegevens, echter, benodigde cellen je moet nog vinden... Als de database klein en eenvoudig is, dan kan dit vrij snel en handmatig worden gedaan. Als er echter enkele tientallen of zelfs honderden records zijn, kan het zoeken behoorlijk lastig zijn.

Maar dit is niet zo'n probleem, aangezien Sdbf meerdere tools tegelijk heeft waarmee je onnodige gegevens eruit kunt filteren en alleen kunt weergeven wat je nodig hebt!

Deze hulpmiddelen bevinden zich op de onderste werkbalk. 8 komt hier op de eerste plaats navigatieknoppen, waarmee u door de database kunt navigeren (pijlen), records kunt toevoegen/verwijderen en wijzigingen kunt bevestigen of annuleren. De functies die we nodig hebben, beginnen met de negende knop - "Zoeken":

Wanneer de knop wordt geactiveerd, verschijnt er voor ons een klein venster met een zoekformulier. We moeten de te vinden tekst specificeren en het veld selecteren waarin moet worden gezocht in de vervolgkeuzelijst. Klik nu op de knop "Volgende zoeken" en het programma selecteert automatisch de volgende regel huidige toewijzing, dat de gezochte tekst bevat. Als u nogmaals op de knop drukt, wordt de regel onder de huidige gemarkeerd, die dezelfde vereiste gegevens bevat, enz.

Soms komt niet-standaard celopmaak voor in databases: extra ruimtes, tabbladen en andere symbolen die niet visueel worden weergegeven, maar wel van invloed zijn op het zoekresultaat. Als u een dergelijk geval tegenkomt, dan voor normale werking Functies U hoeft alleen maar het selectievakje “Gebaseerd op formaat” in het onderste centrale deel van het zoekvenster uit te schakelen en de zoekreeksen worden weergegeven.

De zoekfunctie is handig als we snel afzonderlijke exemplaren van specifieke gegevens moeten vinden. Maar er zijn momenten waarop het handiger zou zijn om meerdere rijen tegelijk weer te geven die alleen bepaalde informatie bevatten. IN in dit geval De tweede functie zal ons helpen (waarvan de knop zich direct na de zoekknop bevindt) - "Filter":

Om filteren mogelijk te maken, moeten we eerst de zoekopdracht correct samenstellen en deze in het speciaal daarvoor bestemde veld invoeren (direct achter de knop in het centrale deel van de werkbalk). Het principe van het indienen van een verzoek is eenvoudig, maar niet geheel voor de hand liggend. We moeten eerst de naam invoeren van het veld waarmee we de databasetabel willen filteren, en vervolgens de filterwaarde instellen specifieke tekst, waarmee we alle rijen moeten vinden.

Wij nemen de waarde mee enkele aanhalingstekens, waarna we op de knop "Filter" zelf drukken (deze wordt ingedrukt) en we krijgen een tabel met alleen gegevens met de waarden die voor ons zijn gedefinieerd in de opgegeven velden (in het voorbeeld hebben we alle rijen gefilterd met de waarde "VS" in het veld "Land" (het register voor het opgeven van de naam van de waarde heeft dit niet)). U kunt de tabel terugbrengen naar de oorspronkelijke vorm door eenvoudigweg nogmaals op de knop “Filter” te drukken (deze wordt weer vrijgegeven).

Het filterveld kan de eenvoudigste voorwaarden “en” (om de zoekopdracht met meerdere velden te verfijnen) en “of” (voor alternatieve selectie van gegevens uit verschillende velden) bevatten. Helaas ondersteunt Sdbf geen uitsluitingsquery's (zoals "niet"), maar we kunnen deze beperking op een andere manier omzeilen, die hieronder zal worden besproken.

Om het filterverzoek niet handmatig in te voeren, kunt u trouwens de volgende truc gebruiken: selecteer een item in het veld waarop u wilt filteren en druk op de toetsencombinatie "Alt+F" (niet F4 :))). Het verzoek wordt automatisch gegenereerd en de waarde bevat het teken “*”, wat een zoekmasker is en overeenkomt met een willekeurig aantal tekens.

Helaas is dit het enige type maskers dat in Sdbf kan worden gebruikt en, wat nog triester is, één verzoek kan slechts één masker bevatten :(. Als u hetzelfde veld met verschillende parameters moet filteren, moet u daarom gebruik de operator “en” (snel een verzoek genereren door op “CTRL+ALT+F”) of “of” (“SHIFT+ALT+F”) te drukken.

Uitvoeren van SQL-query's op databasetabellen

Zoeken en filteren is ongetwijfeld goed, maar niet altijd handig. Wanneer het aantal records groot is, kunnen we gemakkelijk de gegevens uit het oog verliezen die we nodig hebben bij het parseren van tabellen. In dit geval heeft Sdbf echter een uitstekende functie: ondersteuning voor SQL-query's!

Met behulp van dergelijke query's in Sdbf kunnen we:

  1. Onze tabel dynamisch opmaken, waarbij alleen een selectie wordt gemaakt voor bepaalde verplichte velden (SELECT- en SELECT TOP-instructies);
  2. Gegevens kopiëren van de ene database naar de andere (INSERT FROM en INSERT INTO);
  3. Bewerk en verwijder inhoud bepaalde lijnen(respectievelijk UPDATE en VERWIJDEREN);
  4. Parallelle zoekopdrachten groeperen (UNION);
  5. Vorm draaitabellen(SCHARNIER).

Om met query's te gaan werken, moeten we op de knop "SQL Query" aan de rechterkant van de werkbalk klikken. Het resultaat van een dergelijke actie zal echter enigszins ontmoedigend zijn: de inhoud van de nieuw bewerkte database gegevens zullen verloren gaan, en er verschijnt nog een leeg venster met twee velden bovenaan het werkvenster (bovenaan bevindt zich het gegevensuitvoerveld en onderaan het invoerveld).

Wees niet bang :). U hoeft alleen maar onmiddellijk de gewenste SQL-query in het onderste veld in te voeren met vermelding van de naam de benodigde basis gegevens. Als u deze naam niet meer weet, kunt u activeren zijbalk Sdbf (door op het grijze verticale streep aan de rechterkant), die in de vorm van een lijst alle databases weergeeft die u eerder hebt geopend:

Om uw werk te versnellen, is het ook raadzaam om de sneltoetsen te onthouden, die u kunt bekijken door hulp op te roepen door op de F1-toets te drukken. Er zijn er maar drie, maar ze kunnen het proces van het maken van de juiste zoekopdrachten aanzienlijk versnellen.

De combinatie “CTRL+Spatie” zal dus een pop-upvenster weergeven met een lijst met beschikbare databasenamen (om niet in de zijbalk te kijken), “CTRL+F” zal een lijst met functies voor de huidige operator weergeven, en “CTRL+Enter” zal het uitvoeringsproces van de query starten. Bovendien, als u op het invoerveld klikt klik met de rechtermuisknop muis (roep het contextmenu op), dan krijgen we een lijst met operators die door Sdbf worden ondersteund.

Laten we teruggaan naar onze vorige schermafbeelding en kijken naar eenvoudig verzoek, die daar wordt samengesteld. Het is gebaseerd op de operator “SELECT”, wat betekent dat het een selectie naar ons retourneert. De selectieparameter is “*”, wat betekent dat alle gegevens worden weergegeven, maar we kunnen daar, gescheiden door komma's, de namen van alle velden in de databasetabel aangeven.

De selectie die we hierboven hebben bekeken is de eenvoudigste, maar met Sdbf kun je complexere queries uitvoeren. In de volgende schermafbeelding zien we een selectie, een dynamisch gegenereerde tabel bestaande uit velden die de namen van klanten bevatten, de stad waarin ze wonen en het land. Bovendien worden klanten gefilterd op land van verblijf (VS) en worden de resultaten in alfabetische volgorde weergegeven:

Als je het uit elkaar haalt dit verzoek, dan zien we de reeds genoemde methode van bemonstering door gespecificeerde velden, gescheiden door komma's erna SELECT-instructie. Vervolgens dezelfde indicatie van de databasenaam, maar nu eindigt het verzoek daar niet.

De volgende stap is het opsommen van de belangrijkste operatorfuncties die moeten worden uitgevoerd als gevolg van de verwerking van het verzoek. Er zijn er hier twee.

De eerste - "waar" is vergelijkbaar met het filter dat we eerder hebben besproken, en presteert soortgelijke actie- hiermee kunt u alleen die records selecteren die aan de voorwaarde voldoen.

De tweede functie - "order by" is verantwoordelijk voor het sorteren van de resultaten verkregen door een van de velden (in dit geval op het veld met de naam van de klant - "NAME") in alfabetische ("asc" parameter) of omgekeerd ("desc ") volgorde.

Uiteraard is het gegeven voorbeeld ook vrij primitief, maar het weerspiegelt de algemene essentie van het maken en verwerken van SQL-query's. Als je er meer over wilt weten, raad ik je aan de handleidingen hier te lezen: http://dimonchik.com/insert.html of https://www.sql.ru/articles/articles.aspx?g=SQL&s= 0.

Het voordeel van Sdbf is overigens de mogelijkheid om de tabel verkregen als resultaat van een query te exporteren als een nieuwe database of als HTML-, RTF- of CSV-bestand! Roep hiervoor gewoon het contextmenu van het tabelweergaveveld op en selecteer het juiste item.

Extra functies via de menubalk

We hebben de basismogelijkheden van Sdbf ontdekt, maar daar houdt het niet op. Een aantal nuttige en zelfs unieke functies zijn verborgen in de menubalk, dezelfde die we gebruikten om de database te openen :) Dus, veel handige functies(waardoor u soms zonder SQL-query's kunt werken), kunt u in het menu "Tabel" het volgende doen:

Naast andere “nuttige dingen”, zoals het wijzigen van de codering en het samenvoegen van databases, vinden we helemaal onderaan het item “Structuur wijzigen”. Dit item opent een extra venster waarin we alle velden volledig kunnen wijzigen open tafel, voeg nieuwe toe of verwijder er meer onnodige secties(hetzelfde venster wordt geopend wanneer u een geheel nieuwe database aanmaakt).

Concreet kunnen we de volgorde van velden, hun namen, typen, groottes (aantal tekens in een cel) en precisie (bitdiepte - meestal automatisch ingesteld en afhankelijk van het type veld) wijzigen.

Het enige dat u moet onthouden bij het bewerken (en vooral maken) van databases is dat elk type database zijn eigen sets veldtypen heeft en dat deze vaak (als u geen rekening houdt met de belangrijkste N, C, D) verschillend zijn. xClipper-databases ondersteunen bijvoorbeeld geen velden met afbeeldingen (P, B), en xBase tot en met de zevende versie ondersteunt geen automatisch oplopende velden (+). Dat wil zeggen, u moet altijd rekening houden met compatibiliteit :).

Terwijl we naar de menubalk kijken, vergeet dan niet naar het menu "Veld" te kijken:

Er zijn hier slechts twee functies, maar ze kunnen erg handig zijn! Vooral de eerste - "Vervangen". Hiermee kunt u snel automatische modus vervang waarden in de hele kolom opgegeven veld, of specifieke woorden en karakters in de hele database!

De functie "Berekenen" is een analoog van de formules voor automatische berekeningen van Excel en geeft ons de mogelijkheid om wiskundige en statistische bewerkingen uit te voeren, zoals het vinden van de autosom van een veld, het berekenen van het rekenkundig gemiddelde, evenals de maximale en minimale waarden. Om berekeningen uit te voeren moeten de veldtypen uiteraard numeriek zijn (N, F, I, O, B).

De laatste feature die niet zo voor de hand ligt, maar wel handig kan zijn, is de ingebouwde HEX-editor:

Hiermee kunt u de gegevens van elke cel bewerken. Om dit te doen, selecteert u gewoon de inhoud die moet worden gewijzigd en contextmenu kiezen laatste punt- "Open in hex." Dat is alles: u kunt het resultaat bewerken en opslaan of direct afdrukken!

Voor- en nadelen van het programma

  • draagbaarheid en klein formaat;
  • ondersteuning voor bijna alle soorten DBF-bestanden;
  • de mogelijkheid om vanaf het begin databases te maken;
  • ondersteuning voor SQL-query's;
  • ingebouwd systeem voor het zoeken, filteren en bewerken van gegevens.
  • staat niet toe dat u meer dan één masker in het filter specificeert;
  • Er is geen ongedaan-functie.

Conclusies

Het Sdbf-programma is ondanks zijn bescheiden omvang en systeemvereisten stelt u in staat om, zo niet alles, dan heel, heel veel te doen met DBF-databases... En door de implementatie van ondersteuning voor SQL-query's kunt u over het algemeen het werk van het bewerken van de database overbrengen naar nieuw niveau! Met hun hulp kunt u via de grafische interface eenvoudig veel tekortkomingen in het werk compenseren.

De grootste teleurstelling was naar mijn mening de afwezigheid van de meest triviale functie “Undo laatste actie" in de wereld "CTRL+Z": (Het meest vervelende is dat de gebruiker door onoplettendheid of onwetendheid bijvoorbeeld per ongeluk autocorrectie kan toepassen in het hele veld, en het niet meer mogelijk is om de gegevens terug te sturen: (

Hiervoor kunnen we stellen dat het programma functioneel meer dan succesvol is, maar voordat je ermee gaat werken, moet je altijd de eeuwenoude beheerdersregel volgen: MAAK BACK-UPS! En je zult blij zijn :)

P.S. Er wordt toestemming verleend om dit artikel vrijelijk te kopiëren en te citeren, op voorwaarde dat er open credit wordt gegeven. actieve koppeling naar de bron en het behoud van het auteurschap van Ruslan Tertyshny.

De DBF-extensie is onderverdeeld in twee hoofdcategorieën:

  • DBF-formaat (full. datagebaseerde intelligentie) wordt in de meeste softwaretoepassingen vaak gebruikt als databasebestand. Deze verlenging effectief gebruikt als standaard methode voor het opslaan en verzenden van gegevens in de vorm van databasebeheersystemen (DBMS), spreadsheets enz.

Al geruime tijd (sinds 1980) dit formaat gegevensrepresentatie (bekend als Dbase) was een van de meest populaire voor microcomputer DBMS en aanverwante software en hardware, waaronder Apple, UNIX en IBM PC.

De structuur van een standaard DBF-bestand is gebaseerd op een spreadsheet met een bepaald aantal gegevensvelden met een vaste lengte, een koptekst en feitelijke records. Het allereerste veld is een set gestructureerde gegevens met informatie over het verwijderen van een record (het “asterisk”-symbool). Het is opmerkelijk dat na het verwijderen van een bepaald item dit permanent kan worden hersteld of verwijderd.

  • DBF-extensie, een Oracle-databasetabelweergavebestand. Omdat het een object-relationeel DBMS is, is dit formaat universeel voor zijn toepassing en kan het even effectief worden gebruikt op zowel Windows- als Unix-besturingssystemen. De gegevens in zo’n DBF-bestand worden opgeslagen in de vorm van ‘tabelruimten’ die zijn gemaakt door de geïntegreerde Oracle CREATE/ALTER TABLESPACE-opdrachten.

Dit formaat heeft veel verschillende ontwerpen en aanpassingen, soms zelfs niet compatibel met elkaar. DBF, ontwikkeld door ESRI, is bijvoorbeeld verre van een typische DBMS-representatie en is een reeks ruimtelijke gegevens in een geografisch informatiesysteem.
Dus, enkele standaard(technologie) voor het weergeven van het DBF-formaat ontbreekt. Dit creëert bepaalde problemen voor de gebruiker bij het openen en bewerken van het bestand. Soms wordt de DBF-extensie geleverd met een bestand dat niet zelfstandig werkt, maar een hulpbestand is en alleen in combinatie met de DBF kan worden geopend.

Programma's om DBF-bestanden te openen

Afhankelijk van de prestaties en oppervlakte van uw praktische toepassing De DBF-extensie kan worden gegenereerd en bewerkt door de volgende softwaretoepassingen:

  • Windows OS maakt gebruik van dBase, Microsoft Access, Microsoft Excel, Microsoft Visual FoxPro, Microsoft Works, Corel Quattro Pro, Apache OpenOffice, HiBase Group DBF Viewer, Astersoft DBF Manager, DBF Viewer Plus, DBFShow, DBF Navigator, WinDBFView, Sage ACT, CGF Shop Gegevensbeheercentrum, OpenOffice.org Calc, ArcGIS, Arago, AbacusLaw, CA-dBFast, Wordtech, Alpha Five, NovaBACKUP, The Network Diary, FLARE, ACDSee;
  • op Mac OS kan Planamesa NeoOffice, Apache OpenOffice, OpenOffice.org Calc worden gebruikt;
  • op Linux: Apache OpenOffice, multisoft FlagShip.

Als er een fout optreedt bij het openen van de DBF-extensie, kunnen de volgende redenen zijn:

  • het bestand is beschadigd of geïnfecteerd;
  • het bestand is niet gekoppeld aan het besturingssysteemregister (selected onjuiste toepassing voor afspelen of er is geen specifieke plug-in geïnstalleerd);
  • onvoldoende apparaat- of besturingssysteembronnen;
  • beschadigde of verouderde stuurprogramma's.

DBF naar andere formaten converteren

In elk specifiek geval de structuur en het gebied praktisch gebruik DBF-extensies zijn uniek. Om het formaat te converteren, is het gebruikelijk om precies dat te gebruiken softwareproduct, met behulp waarvan de generatie werd uitgevoerd.

Echter het meest populaire manier bestandsvertaling wordt beschouwd als de conversie van DBF naar . MDB - spreadsheetformaat Microsoft-toegang . Met een redelijk krachtige geïntegreerde converter kan Access gegevens vrijwel zonder verlies of schade verzenden.

Het converteren van DBF-extensies naar andere formaten is praktisch niet mogelijk.

Waarom DBF en wat zijn de voordelen ervan?

De DBF-extensie is een van de meest populaire en gewilde formaten voor het opslaan en verzenden van gegevens in de vorm van databasebeheersystemen (DBMS), spreadsheets, enz.

Dit bestand heeft mogelijk grote verscheidenheid verschillende ontwerpen en aanpassingen, soms zelfs onverenigbaar met elkaar.

Voor hoogwaardige verwerking en formaatbewerking wordt ten strengste aanbevolen om dat te gebruiken softwaretoepassing, die werd gebruikt om het bestand te genereren.