SDK-Helfer/ Tools | | | | - page 1 - |
|  Jens-Arne Reumschüssel | Guten soir zusammen,
je suis kürzlich sur cela Problem gestolpert, dass XPSE une assez grand Quelldatei de Je ne plus verarbeiten konnte. Variablen wurden soudain comme pas défini gemeldet et autre "erratische" Probleme plus. je pourrait mir présenter, dass ca daran liegt, dass XPSE Schlüsselworte dans Windows-Atoms verwaltet. voilà irgendwann Schluss (chez irgendwas entre 60.000 et 70.000 Stück, wobei on considérer muss, dass XPSE qui Windows-API avec vorhält). Peut-être es mais aussi quelque chose entier d'autre, je peux oui pas dans den "Maschinenraum" de XPSE regarder.
Jedenfalls blieb mir, là XPSE pas plus gepflegt wird, rien d'autre übrig, comme cela nachzubauen. cela Ergebnis ist JRPC3.
----- Features:
*vernünftige annonce de Fehlern *directe Anzeige des Programmablaufes dans XProfEd (sofern qui unten erhältliche aufgebohrte XProfEd verwendet wird) *Umsetzung qui alten Profan-Syntax pour Operatoren et vieille Containerfunktionen *extrem schnelle native fbPROCs, sofern on FreeBasic installiert hat (kostenlos, siehe Aider) *avec fbPROCs peux zudem Inline-Assembler aussi avant XProfan X4 realisiert volonté *extrem schnelle native pbPROCs, sofern on PureBasic installiert hat *Echtzeitverfolgung de Variableninhalten *simple Zeitmessungen im Programmablauf *Profan-Kompilerdirektiven marcher enfin vernünftig (z.B. Verschachtelung) *eingebettete Variablen marcher aussi avec Arrays *qui meisten WIN32-API-Funktionen sommes bereits vordefiniert mitgeliefert *API-Aufrufe sur @external(...) volonté automatisch dans @call(...)-Aufrufe mise en œuvre *Einrückungsanalyse zum trouver de vertrackten Verschachtelungsfehlern *Klammeranalyse zum trouver de vertrackten Klammerfehlern *ENUMERATE-Fonctionnalité *Assert zur Fehlerkontrolle *es peut beliebige DLL dans qui XProfan-EXE integriert volonté, sodass vous pas avec ausgeliefert volonté doit (siehe {$WrapDll}) *simple Killen de avec JRPC3 gestarteten Programmen (interpretiert, .prc gestartet, .exe gestartet) *extrem vite (et daher naturellement pas dans XProfan geschrieben, là une interpretierte Discours hierfür naturgemäß viel trop lente ist) *beim Start de JRPC3 bereits vorhandene .prc-Fichiers peut zum Starten et Linken genutzt volonté (es wird un Hinweis angezeigt, dass es sich um un altes Kompilat handelt) *qui Profan-Compiler peux zur Beschleunigung avec hoher Prozessorpriorität aufgerufen volonté *eingebauter Update-Checker avec Télécharger, si es un Update gibt (Aider --> online pour Updates chercher) *64- ou bien 32-bit-Version disponible (simple JRPC3_64.exe ou bien JRPC_32.exe comme Interpreter dans XProfEd hinterlegen [Optionen --> Allgemeine Einstellungen] et JRPC3 avec F7 starten) - attention, qui 64-bit-Version erzeugt naturellement aucun 64-bit-XProfan-Programme, là XProfan cela pas peux, mais JRPC3 selbst wird comme 64-bit-Programme fonctionnement *XProfan X4-Syntax disponible (möglicherweise encore pas alles, là je probablement pas alles en benutze, mais j'ai mich um Vollständigkeit prêt - jedenfalls sommes z.B. HASH-Arrays et QUADINTs dabei) *Interpreter, PRCs et EXEs peut avec Kommandozeilenparametern fonctionnement volonté *Interpreter, PRCs, EXEs et XPSE peut avec Administratorrechten fonctionnement volonté *Prozeduren, qui dans dem aktuellen Programme zwar enthalten sommes, mais pas verwendet volonté, volonté aus qui umgesetzten Dossier entfernt, à Dateigröße des Kompilats possible petite trop tenir *Variablen, qui dans dem aktuellen Programme zwar enthalten sommes, mais pas verwendet volonté, volonté aus qui umgesetzten Dossier entfernt, à Dateigröße des Kompilats possible petite trop tenir et den Speicherverbrauch trop optimaliser *nPROCs aus XPSE volonté automatisch avec XPE trop einer DLL mise en œuvre et qui Aufrufe qui nPROCs im Programme entsprechend angepasst, sofern XPSE vorhanden ist *presque alles aus XPSE funktioniert aussi dans JRPC3 ({$NOERR}, {$(PRE)BATCH}, {$PUSHKEYWORD}, Interpreter, Runtime et Compiler festlegen, Shorties, ...) *XProfEd_JR avec Voir le texte source-AutoComplete *XProfEd_JR avec Voir le texte source-Memory-Funktion (Markierungen, trop denen zurückgesprungen volonté peux)
Einschränkungen: -ne...aucune XPSE-Inline-Assembler, wohl mais XProfan-Inline-Assembler (y allerdings aucun Prüfungen sur Korrektheit des Codes) -ABER: il peut XPSE aus JRPC3 heraus appel, sodass cet Fonctionnalité weiterhin disponible ist, sofern on XPSE besitzt (neuer Shorty: {$x}) -Variablen, qui dans einer Procédure pas deklariert sommes, mais "aus qui aufrufenden Procédure übernommen werden", sommes standardmäßig pas zugelassen (XProfan erlaubt cela, mais so quelque chose ist genauso tödlich comment GOTO-Anweisungen). s'il te plaît alle trop nutzenden Inputs comme paramètre transfert, et si quelque chose aus dem aufrufenden Programmteil modifié volonté muss, beim Aufruf comme paramètre z.B. @addr(x&) verwenden et dans qui Procédure parameters x# et LONG x#,0=y& nutzen. si on mais absolument "vererbte" Variablen nutzen voudrais, peux on ca avec qui Kompilerdirektive {$Déclarer...} 1faire.
*comme Hommage à XPSE lautet qui Endung qui Ausgabedatei ".enh3"
une genauere Erläuterung qui individuel Features ist qui chm-Hilfedatei trop entnehmen, qui im Programme sous Aider --> Hilfedatei Montrer ou bien avec F1 disponible ist.
----- /Features
Herunterladen et installer: JRPC3 peux unten heruntergeladen volonté (setup_jrpc3.exe ou bien comme ZIP-Dossier). comme Installationsverzeichnis s'il te plaît cela XProfan-Stammverzeichnis angeben, alors dasjenige, dans dem qui Fichiers PROFANE.EXE, PROFCOMP.EXE, PRFRUN32.EXE etc. liegen. Alternativ peux qui ZIP-Dossier heruntergeladen et en le contenu manuel ins XProfan-Stammverzeichnis kopiert volonté.
Einrichtung: JRPC3_64.exe ou bien JRPC_32.exe comme Interpreter dans XProfEd hinterlegen [Optionen --> Allgemeine Einstellungen] et JRPC3 avec F7 starten.
Alle Befehle sommes avec dem Befehl "h" comment "Hilfe" abrufbar et devrait selbsterklärend son.
Pour viele erweitere Features, qui XProfEd betreffen, comment z.B. jenes, qui la ligne, dans qui un faute auftrat, direct dans XProfEd Montrer trop peut, ist qui mitinstallierte XProfEd_JR erforderlich. Pour cette muss on alors XProfEd_JR.exe statt XProfEd.exe comme Editor benutzen. comme "goody" gibt es en supplément, dass beim sur- et Zufalten de Programmen un Fortschrittsanzeiger integriert ist (cela peux chez grand Programmen oui bekanntlich un bisschen dauern).
Es mag son, dass encore pas alles parfait funktioniert. je s'il te plaît hierfür um Nachsicht. mon Programme laisser sich umsetzen, mais cela muss encore longtemps pas appeler, dass ca avec Programmen anderer Auteurs, qui chacun so ses Eigenheiten avons, aussi funktioniert.
Fehlermeldungen et Verbesserungsvorschläge volontiers à jreumsc@web.de ou bien ici im Forum.
Beste Grüße, Jens-Arne |
 | 2.665 kB | | Bezeichnung: | JRPC3 | | Version: | 10.40 | | Kurzbeschreibung: | JRPC3-Installer | | Hochgeladen: | 15.02.2021 | | Downloadcounter: |  | | | Download | | | | 1.699 kB | | Bezeichnung: | XProfEd_JR | | Version: | 5.2 | | Kurzbeschreibung: | vieille Version sans AutoComplete zur Sicherheit | | Hochgeladen: | 15.02.2021 | | Downloadcounter: |  | | | Download | | | | 4.065 kB | | Bezeichnung: | JRPC3 | | Version: | 10.40 | | Kurzbeschreibung: | ZIP-Dossier statt Installer | | Hochgeladen: | 02.04.2021 | | Downloadcounter: |  | | | Download |
| | | XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 16.02.2021 ▲ |
| |
| | | | - page 2 - |
|  | « cette Beitrag wurde comme Solution gekennzeichnet. » | | - page 15 - |
|  Jens-Arne Reumschüssel | il y a une neue Version, qui anders avec dem internen Messagehandling umgeht. s'il te plaît probier qui la fois aus. Peut-être cela Problem avec cela behoben. |
| | | XProfan X4XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 24.09.2022 ▲ |
| |  |
| |  Jens-Arne Reumschüssel | encore un mot zur Dossier jrpc3.hd avec den API-Headerdefinitionen:
cet contient jusqu'alors folgende Fichiers:
- comdlg.ph - commctrl.ph - lzexpand.ph - messages.ph - richedit.ph - shellapi.ph - structs.ph - windows.ph
si quelqu'un weitere Definitionen dazubasteln voudrais, ensuite toujours volontiers her avec cela! cela allez entier simple:
chacun la ligne contient une définition (à gauche sans "~"), getrennt par "§#§" ("|" allez pas, weil es Definitionen gibt, qui cet marque enthalten, comment z.B. ID_PSREBOOTSYSTEM=~ID_PSRESTARTWINDOWS | 1).
Aus WM_LBUTTONDOWN=$0201 wird alors WM_LBUTTONDOWN§#§$0201
il y a aussi weitere Headerdefinitionen dedans des rechten Teils erlaubt (ensuite avec "~"), comment z.B. CFM_EFFECTS§#§~CFM_BOLD | ~CFM_ITALIC | ~CFM_UNDERLINE | ~CFM_COLOR | ~CFM_STRIKEOUT | ~CFE_PROTECTED | ~CFM_LINK
Beste Grüße, Jens-Arne |
| | | XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 02.04.2021 ▲ |
| |
| |  Michael W. | Ups. peux es son, cela dir ca entgangen ist? Gibts ab X2.
je verwende es ausgiebig.
Neue Variablensyntax
--------------------------------------------------------------------------------
pas seulement qui "Unterbau" muss sur neue Variablentypen-Typen vorbereitet volonté, mais sous anderem aussi qui Syntax.
Bislang wir qui Typ einer Variablen comment im klassischen Basic par un Postfix, dem letzten marque des Variablennamens, défini: !, %, &, $ ou bien #. qui Parser était alors oui c'est ca puis ausgelegt et erkannte et unterschied Variablen à diesem Postfix.
eh bien stellte sich qui Frage, quoi pour Postfixe pourrait on den encore benutzen? Schließlich devoir qui marque sur qui clavier léger erreichbar son. là blieben encore solche marque comment °, § et €. un Problem: sur internationalen Tastaturen gibt es qui marque partiellement pas. cela Hauptproblem: après ist mais Schluß.
qui jetzige Solution: Abkehr vom Postfix. en supplément musste qui Parser komplett umgeschrieben volonté et encore quelques Befehle et Funktionen, qui Variablennamen comme paramètre verlangen (etwa CLEAR, DISPOSE, DECLARE, PARAMETERS, CLASSOF, SIZEOF, etc.). Aussi braucht es pour Variablennamen sans Postfix encore une neue Syntax, um den Typ trop bestimmen. et 100%ig kompatibel zur bisherigen Syntax sollte es aussi son. So sieht qui Solution aus:
Déclarer <Typ> <Name>[, <Name>[,...]], <Typ Name>, ...
Paramètres <Typ> <Name>[, <Name>[,...]], <Typ Name>, ...
Var <Typ> <Name> = <Wert>
qui bisherigen Typen appeler STRING, INTEGER, LONGINT, FLOAT et MEMORY (et peut aussi avec INT, LONG et MEM abgekürzt volonté). Statt FLOAT peux on aussi DOUBLE écrivons.
DECLARE MEMORY b, STRING s, LONGINT l, FLOAT f
chez mehreren Variablen gleichen Typs direct hintereinander reicht qui einmalige Nennung des Typs:
DECLARE INT x, y, z, STRING la ligne1, la ligne2
qui Typ einer Variablen wird entweder par un Postfix ou bien par une Typkennzeichner bestimmt. Beides zusammen allez pas.
Neue et bisherige Syntax peut beliebig gemischt volonté. trop tenir compte de ist naturellement, dass chez Variablen avec Postfix cet marque partie des Namens ist. So sommes oui jusqu'alors déjà X$, X&, X%, X! et X# différent Variablen, qui sich par den Postfix unterscheiden. alors volonté künfig aussi STRING X et X$ deux verschiedene Variablen son. là un Variablenname pas doppelt vorkommen darf, wird es naturellement pas gleichzeitig une STRING X et une LONGINT X donner dürfen.
(Pour Nutzer anderer Programmiersprachen une Selbstverständlichkeit.)
WICHTIG: Pour qui Elemente einer Struktur ou bien einer super rester qui bisherigen régulariser bestehen. ici peut vorerst aucun Typbezeichner verwandt volonté.
|
 | 23 kB | | Bezeichnung: | angezeigtes Fenster | | Kurzbeschreibung: | neue Déclarer-Syntax | | Hochgeladen: | 03.04.2021 | | Downloadcounter: |  | | | Download |
| | | System: Windows 8/10, XProfan X4 Programmieren, das spannendste Detektivspiel der Welt. | 03.04.2021 ▲ |
| |
| |  Jens-Arne Reumschüssel | Guten demain,
je verwende cet neue Syntax réellement seulement ensuite, si es absolument son muss (chez Quadints z.B.), weil je es mag, si on den Variablen "ansieht", quoi ils sont. mais berücksichtigt habe je cela naturellement eigentlich. j'ai seulement à peine Code zum Testen. Schicke mir s'il te plaît la fois une Beispielcode, chez dem JRPC3 aussteigt, ensuite hoffe je, dass cela vite trop beheben son sollte (volontiers per pm: jreumsc@web.de, ou bien direct ici im Forum).
et merci pour qui Rückmeldung! c'est très hilfreich, den faute bekommen wir bestimmt geregelt.
merci et Salut, Jens-Arne |
| | | XProfan X4XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 03.04.2021 ▲ |
| |
| |  Jens-Arne Reumschüssel | Ok, j'ai Schonmal cela une ou bien autre selbst trouvé. cela ici:
declare long i,o,u,o%,long a
cls
i=1
o=2
u=3
o%=4
a=5
Var String Namen[]="Maria","Karl","Herbert"
imprimer i,o,u,o%,a,namen[1]
waitinput
end
funktioniert maintenant. Installer et ZIP-Dossier wurden dessus aktualisiert.
Gibt es encore autre Probleme avec qui neuen Variablensyntax?
Beste Grüße, Jens-Arne |
| | | XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 03.04.2021 ▲ |
| |
| |  Jens-Arne Reumschüssel | Dank Michael Wodrich, qui mir un paire Beispielcodes envoyé hat, gibt es une ganze Reihe essentieller Verbesserungen:
· imbriquées Prozeduren maintenant possible · Headerdefinitionen dans DEF-Funktionen maintenant possible · avec ":" getrennte Anweisungen volonté eh bien korrekt verarbeitet (selbst solche Sachen comment declare x%:var long y=1 ou bien gar declare x%,y%:imprimer "Geschreibsel") · WIDESTRING comme Variablentyp hinzugefügt · MOVELISTPROC incorporé · XProfan-Inlineassembler maintenant possible (dedans desselben mais keinerlei Codeprüfungen)
Vielen Dank pour cet tolle Mithilfe! qui Downloaddateien dessus sommes aktualisiert (V1.57a).
Beste Grüße, Jens-Arne |
| | | XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 03.04.2021 ▲ |
| |
| |  Michael W. | merci, et court Nachtrag.
Avira hatte wohl une trop strenge Heuristik genutzt (Vorhersage sur mögl. Virenvarianten).
et j'étais trop doof, chez einer heruntergeladenen EXE simple la fois dans qui Eigenschaften qui Dossier trop regarder.
Sicherheit: qui Dossier stammt de einem anderen ordinateur..... [Zulassen]
je suis es arrêt gewohnt, EXEs aus ZIPs auszupacken et ungehindert durchzustarten. |
| | | | |
| |  p.specht
 | XPSE était gebaut jusqu'à XProfan-11.2a. avec Klimmzügen et dem Pre-precompiler de Jens-Arne pour FOR-Schleifen lief il dans vielen Fällen jusqu'à X3.
là je bisher seulement "drüberinstalliert" hatte, peux je eigentlich pas dire quoi jrpc3 zum marcher eigentlich braucht. - Ist XProfan-X4 qui la base, et/ou bien veux jrpc3 (comment xpse) comme eigenständige, seulement à XProfan angelehnte Discours verstanden volonté?
une liste qui Abhängigkeiten de jrpc3 wäre hilfreich. quoi oui c'est ca brauche je mindestens pour ... - Programmentwicklung 32bit bzw. Entwicklung 64bit? - Erstellung compilierter EXEn 32bit bzw. 64bit? - blosses Laufenlassen einer EXE-Anwendung sur Anwender-PCs?
et: Gibt es Mindestanforderungen à qui Windows-Version?
LG
P.S.: son merkt: un le fou peux plus fragen comme 10 Weise répondre peut... |
| | | Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 04.04.2021 ▲ |
| |
| |  Jens-Arne Reumschüssel | bof, cela but était es seulement einmal, XProfan-Programme, qui pour XPSE trop grand geworden étions, comment avec XPSE umsetzbar trop faire. Dabei ist naturellement ensuite qui neue Syntax de XProfan jusqu'à X4 dazugekommen, soweit je cet bisher überblickt habe. D.h. "Entwicklung 64bit" bzw. "Erstellung compilierter EXEn 64bit" ist avec cela pas gemeint, weil XProfan jusqu'alors seulement 32bit peux.
Zur Benutzung ist à Abhängigkeiten rien nötig sauf XProfan, wobei qui Version de XProfan dabei assez égal son sollte. si on nPROCs et qui XPSE-Assemblerfunktionen nutzen voudrais, ist aussi XPSE nötig (peux aus JRPC3 heraus aufgerufen volonté). XProfan-Assembler fonctionne oui eh bien depuis aujourd'hui.
une Mindest-Windows-Version sollte es eigentlich aussi pas donner, là qui 32bit-Version de JRPC3 probablement aussi avec Windows XP fonctionne. je benutze mais Windows 10 avec 64bit et habe jusqu'alors aucun autre environnement getestet. qui DLL pour qui Variablenverfolgung ist bewusst seulement 32bittig, avec cela vous dans chacun Windows-environnement fonctionne. Aussi wird cet aus dem XProfan-Programme heraus beschickt, dessen Variablen on poursuivre voudrais, sodass vous de toute façon pas 64bittig son peux.
Comme je le disais: je voulais so quelque chose comment XPSE dans quelque chose moderner, pas plus. j'ai depuis Ewigkeiten alles dans XPSE-Syntax geschrieben, et c'est presque unmöglich, cela wieder sur reinen Profan-Code zurückzubauen, selbst si cela eigentlich seulement "Kleinigkeiten" sommes. mais en une unglaubliche la quantité.
wohin je eh bien déjà einmal dabei était, était un weiteres but de mir, vernünftige Fehlermeldungen avec Angaben trop Quelldatei, Procédure et la ligne trop conservé. qui bekommt on weder de XProfan selbst, encore de XPSE. c'est une qui grand Stärken de JRPC3, denke je, et solche Winzigkeiten comment qui, un getestetes Programme zur Not avec einem Tastendruck abschießen trop peut, si es pas plus reagiert, es avec Kommandozeilenparametern effectuer trop peut, si on un Programme testet, cela cet utilise, et pas zuletzt sich faute direct dans XProfEd Montrer laisser trop peut, erleichtern cela vivre ungemein.
ce sont qui wesentlichen Ziele cet Projekts. Niemand braucht es zum Überleben, mais es pouvoir einiges très viel angenehmer. Jedenfalls, si es am Ende la fois so funktioniert, dass es aussi alle verwenden peut. un erster großer Schritt dahin ist aujourd'hui getan worden. si es weitere faute gibt, qui Euch tout de suite ins Auge springen, dans qui je mais encore nie hineingelaufen suis, wäre je pour une kurze nouvelle extrem reconnaissant. Michael Wodrich hat mir aujourd'hui diverse Problemchen vorgesetzt, de en Existenz je pas einmal quelque chose ahnte, mais cela était quand même à einem l'après-midi dans den Griff trop bekommen.
Beste Grüße et frohe Pâques, Jens-Arne |
| | | XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 04.04.2021 ▲ |
| |
| |  RudiB. | allô Jens-Arne,
habs maintenant aussi la fois kurz getestet. Habe dans vielen Quelltexten encore vieille Profan-Syntax et nutze daher qui Profalt.inc....et siehe là...

Konnte bisher pas plus testen, weil là stoppt oui qui Fehlerabfrage. Hab je là quoi überlesen ou bien pourquoi durchläuft es pas den ganzen Quellcode?
veux maintenant pas alles paraphraser doit, um plus trop testen.... |
| | | | |
| |  Jens-Arne Reumschüssel | ...je suis tour. Dein Problem avec qui alten Profan-Syntax ist bereits gelöst. il y a mais weitere, sodass je le reste pas hochladen peux. |
| | | XProfan X4XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 04.04.2021 ▲ |
| |
| |  Jens-Arne Reumschüssel | ...Ok, c'est vollbracht.
qui Include-Dossier "PROFALT.INC" ist pas plus nötig et sollte pas plus verwendet volonté. Stattdessen ist qui neue Compilerdirektive {$USEOLDPROF} trop verwenden. cet schaltet qui automatische Umsetzung qui alten Operator-Funktionen dans qui aktuellen Operatoren un.
Nachtrag: PROFALT.INC peux im Code stehenbleiben. vous wird ignoriert et automatisch qui entsprechende Compilerdirektive aktiviert. So bleibt qui Code kompatibel zum nativen Profan.
XProfEd_JR ist eh bien im Installer et dans qui ZIP-Dossier enthalten.
je wünsche une schönen Ostersonntag, Jens-Arne |
| | | XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 04.04.2021 ▲ |
| |
| |  RudiB. | Salut,
...et qui prochain faute ???

gruß Rudi |
| | | | |
|
répondreOptions du sujet | 72.811 Views |
Themeninformationencet Thema hat 8 participant: |