doca
Newbie
Offline
Activity: 34
Merit: 0
|
|
August 22, 2012, 04:38:09 AM |
|
More tests: oclvanitygen -v -D 0:0 1BitcoinMX - runs fine. oclvanitygen -v -S -D 0:0 1BitcoinMX - dies: oclvanitygen -v -S -D 0:0 1BitcoinMX Prefix difficulty: 2938077882634386 1BitcoinMX Difficulty: 2938077882634386 Device: Quadro NVS 295 Vendor: NVIDIA Corporation (10de) Driver: 301.32 Profile: FULL_PROFILE Version: OpenCL 1.0 CUDA Max compute units: 1 Max workgroup size: 512 Global memory: 268435456 Max allocation: 134217728 OpenCL compiler flags: -cl-nv-verbose Loading kernel binary 582f54c79b215f43c3960bbd6fd612d0.oclbin Grid size: 1024x512 Modular inverse: 512 threads, 1024 ops each Using OpenCL prefix matcher clWaitForEvents(NDRange,e): CL_OUT_OF_RESOURCES GPU idle: 9.72% Halting...done!
|
|
|
|
jasinlee
|
|
August 22, 2012, 05:21:21 AM |
|
Is there a way to have the txt file its populating only fill in the private key or only the vanity key or just the 2? I am using command line and cant figure a method.
|
|
|
|
BkkCoins
|
|
August 22, 2012, 08:47:39 AM |
|
Is there a way to have the txt file its populating only fill in the private key or only the vanity key or just the 2? I am using command line and cant figure a method.
I don't think there is that option in the program but it's trivial to do after at the command line. eg. make file with addresses, grep Address outfile > addrfile or keys, grep Privkey outfile > keyfile or convert addresses to sql statements to populate db, grep Address outfile |awk '{print "insert into addr set address=\""$2"\";"}' > addrfile.sql
|
|
|
|
UNOE
Sr. Member
Offline
Activity: 791
Merit: 273
This is personal
|
|
August 22, 2012, 08:57:57 AM |
|
Just realized I'm actually able to post I been waiting to leave my Newbie status on here for awhile (this is my real first post). I been going crazy here I can't figure this out I been waiting to post this question for a month. I have the same problem as this post quoted. I get outputs like this when I use opencl. Difficulty: 1353 Match idx: 0 CPU hash: a4900f3de57df3ea62654b295b1a92048ddc994d GPU hash: 3d0f90a4eaf37de5294b656204921a5b4d99dc8d Found delta: 1919 Start delta: 1 [151.19 Kkey/s][total 2048][Prob 78.0%][80% in 0.0s] I think its the real output because the first time I tried it I got a output like that after 5 hours. I didn't think to test it before hand it took 5 hours just to get CPU hash - GPU hash output like this. If I pick a easier address I get outputs like this scrolling down. If I use a CPU generator I get a private key output the correct way it is only happening with opencl. I got similar problem as The00Dustin (quoted below). I think it is an issue with BFI_INT feature. It seems that sometimes it is detected when it is not supported. I commented out detection and it started to work. if (vg_ocl_device_gettype(vocp->voc_ocldid) & CL_DEVICE_TYPE_GPU) { quirks |= VG_OCL_EXPENSIVE_BRANCHES; quirks |= VG_OCL_DEEP_VLIW; dvn = vg_ocl_device_getstr(vocp->voc_ocldid, CL_DEVICE_EXTENSIONS); #if 0 if (dvn && strstr(dvn, "cl_amd_media_ops")) quirks |= VG_OCL_AMD_BFI_INT; #endif
dvn = vg_ocl_device_getstr(vocp->voc_ocldid, CL_DEVICE_NAME); if (!strcmp(dvn, "ATI RV710")) { quirks &= ~VG_OCL_OPTIMIZATIONS; quirks |= VG_OCL_NO_BINARIES; } }
[...]There was nothing wrong with libdl-*.**.so, however, for whatever reason, ld wasn't using it. I had to add it directly to the LIBS variable. This is what finally got me building: LIBS=-L/usr/src/ati-stream-sdk-v2.1-lnx64/lib/x86_64 -L/usr/local/ssl/lib /lib64/libdl.so.2 -lpcre -lcrypto -lm -lpthread CFLAGS=-I/usr/src/ati-stream-sdk-v2.1-lnx64/include -I/usr/local/ssl/include -I/usr/include -ggdb -O3 -Wall Note that the ATI SDK is in a funny place because that's just where I happened to download it to. I have never had to list a library directly in libs like that before (/lib64/libdl.so.2 with no leading parameter), but it worked. Unfortunately, now I'm getting odd output in oclvanitygen compared to what I see in vanitygen: $ ./vanitygen -i 1s Difficulty: 1353 Pattern: 1s Address: 1sWTv45ThMSacEG9TwLXAECycSj5ybrQm Privkey: 5HxV9CtT43oXoH4ZrWrbi57UJih88KgAxpVtLss992S12XiqHX2 $ ./oclvanitygen -i 1s Difficulty: 1353 Match idx: 0 CPU hash: a4900f3de57df3ea62654b295b1a92048ddc994d GPU hash: 3d0f90a4eaf37de5294b656204921a5b4d99dc8d Found delta: 1919 Start delta: 1 [151.19 Kkey/s][total 2048][Prob 78.0%][80% in 0.0s] Match idx: 0 CPU hash: 5fb13b13d1b464cfa6f2c53d81d7333483d0ec38 GPU hash: 133bb15fcf64b4d13dc5f2a63433d78138ecd083 Found delta: 1918 Start delta: 1 Match idx: 0 CPU hash: 93b30d0ad99f8133a0bc3c4793a27dbad5a0961f GPU hash: 0a0db39333819fd9473cbca0ba7da2931f96a0d5 Found delta: 1919 Start delta: 1 Match idx: 0 CPU hash: 8030c41b205cf1c395f79223acc4731c8138e2eb GPU hash: 1bc43080c3f15c202392f7951c73c4acebe23881 Found delta: 1918 Start delta: 1 Match idx: 0 CPU hash: aa8c368c9663f1f15929f4f745d04039fa3403e1 GPU hash: 8c368caaf1f16396f7f429593940d045e10334fa Found delta: 1918 Start delta: 1 Match idx: 0 CPU hash: a58e04ee7573ae115fed373b0a316c99227de01d GPU hash: ee048ea511ae73753b37ed5f996c310a1de07d22 Found delta: 2047 Start delta: 1 Match idx: 0 CPU hash: c968065a9670c24c3654930612e70821f5a37082 GPU hash: 5a0668c94cc27096069354362108e7128270a3f5 Found delta: 1663 Start delta: 1 Match idx: 0 CPU hash: 7652fe86bd2a45e82ce111d91ea3a3e8e9e55ab7 GPU hash: 86fe5276e8452abdd911e12ce8a3a31eb75ae5e9 Found delta: 1663 Start delta: 1 Match idx: 0 CPU hash: 757327d079aace35e53aa1cfcf614c552050198f GPU hash: d027737535ceaa79cfa13ae5554c61cf8f195020 Found delta: 1662 Start delta: 1 Match idx: 0 CPU hash: 5af81f2dc428a8be30f05bb23023bce81553d1ec GPU hash: 2d1ff85abea828c4b25bf030e8bc2330ecd15315 Found delta: 1663 Start delta: 1 Match idx: 0 CPU hash: 6fa912748c64f7773a1a6acd8d71058e8684abba GPU hash: 7412a96f77f7648ccd6a1a3a8e05718dbaab8486 Found delta: 2047 Start delta: 1 Match idx: 0 CPU hash: 9f6eab09f51fe0d2ab7ef29ca6176060275c41e4 GPU hash: 09ab6e9fd2e01ff59cf27eab606017a6e4415c27 Found delta: 2047 Start delta: 1 Match idx: 0 CPU hash: 76f461d52e6767dc1295a3c00d7f28509cc08894 GPU hash: d561f476dc67672ec0a3951250287f0d9488c09c Found delta: 1789 Start delta: 1 Match idx: 0 CPU hash: 623bc0be24cdb542e5005d99850fed085446efee GPU hash: bec03b6242b5cd24995d00e508ed0f85eeef4654 Found delta: 1919 Start delta: 1 Match idx: 0 CPU hash: 9503160dcca12038ac91bce298c6c19cd90416f5 GPU hash: 0d1603953820a1cce2bc91ac9cc1c698f51604d9 Found delta: 2047 Start delta: 1 Match idx: 0 CPU hash: 63dab8e0ea34d295b5b1c89e0ca3eaddbbb61b8e GPU hash: e0b8da6395d234ea9ec8b1b5ddeaa30c8e1bb6bb Found delta: 1661 Start delta: 1 Match idx: 0 CPU hash: b46a27a9fbfcc13da644dcb0306c194f518c3e0c GPU hash: a9276ab43dc1fcfbb0dc44a64f196c300c3e8c51 Found delta: 1663 Start delta: 1 Match idx: 0 CPU hash: cc1b6bffbb824d51af3283aeafd4b6fd920b6d7d GPU hash: ff6b1bcc514d82bbae8332affdb6d4af7d6d0b92 Found delta: 1919 Start delta: 1 Match idx: 0 CPU hash: 89d906b7e85d7de50b5ed49f1e17394e5b8ee641 GPU hash: b706d989e57d5de89fd45e0b4e39171e41e68e5b Found delta: 1791 Start delta: 1 Match idx: 0 CPU hash: a853bf32a17a879e53d5a853bbc34d17df85b3ef GPU hash: 32bf53a89e877aa153a8d553174dc3bbefb385df Found delta: 1663 Start delta: 1 Match idx: 0 CPU hash: acf951a982fed9f51b06435194b520dbc3922043 GPU hash: a951f9acf5d9fe825143061bdb20b594432092c3 Found delta: 1660 Start delta: 1 Match idx: 0 CPU hash: 574b20f25084db069658757cc2c4deb3413f3ed2 GPU hash: f2204b5706db84507c755896b3dec4c2d23e3f41 Found delta: 1663 Start delta: 1 Match idx: 0 CPU hash: 55947ac666958b1183d8a2707856b6f19bd9faa7 GPU hash: c67a9455118b956670a2d883f1b65678a7fad99b Found delta: 1663 Start delta: 1 Match idx: 0 CPU hash: a934e3675124d3f9ddc3ea5a7e4819c6114eb1bf GPU hash: 67e334a9f9d324515aeac3ddc619487ebfb14e11 Found delta: 1918 Start delta: 1 Match idx: 0 CPU hash: 72b549d5733b52c7525cbba4b51930567b3f9b6d GPU hash: d549b572c7523b73a4bb5c52563019b56d9b3f7b Found delta: 1790 Start delta: 1 Match idx: 0 CPU hash: b904cbfd46e83da6bbe15ef8755db40220c0beaa GPU hash: fdcb04b9a63de846f85ee1bb02b45d75aabec020 Found delta: 1663 Start delta: 1 Match idx: 0 CPU hash: 81c411b505bc4fe0f4c2d4ffb5a5b17e51f8e2c9 GPU hash: b511c481e04fbc05ffd4c2f47eb1a5b5c9e2f851 Found delta: 1789 Start delta: 1 Match idx: 0 CPU hash: 5e5e3718b26724de3d92922b977ddce417f4f8e8 GPU hash: 18375e5ede2467b22b92923de4dc7d97e8f8f417 Found delta: 1791 Start delta: 1 Match idx: 0 CPU hash: cbeb1025944ab7139b3bbc29923617e137efb1c4 GPU hash: 2510ebcb13b74a9429bc3b9be1173692c4b1ef37 Found delta: 1791 Start delta: 1 Match idx: 0 CPU hash: 6c176e5f44008808fa6cadfb7cb429bf2315f9fc GPU hash: 5f6e176c08880044fbad6cfabf29b47cfcf91523 Found delta: 2047 Start delta: 1 Match idx: 0 CPU hash: a98813ecdde88513abd56cb716655b5d937eb183 GPU hash: ec1388a91385e8ddb76cd5ab5d5b651683b17e93 Found delta: 1790 Start delta: 1 Match idx: 0 CPU hash: 9e930230116b77ea0051e81de1ab018f4f351ef0 GPU hash: 3002939eea776b111de851008f01abe1f01e354f Found delta: 2047 Start delta: 1 Match idx: 0 CPU hash: 595e56866c2098b493968260ce50ab0eaa4f5c4a GPU hash: 86565e59b498206c608296930eab50ce4a5c4faa Found delta: 1791 Start delta: 1 Match idx: 0 CPU hash: a998337cf7fa5c66aaf969d7ab7e19b4b28b9660 GPU hash: 7c3398a9665cfaf7d769f9aab4197eab60968bb2 Found delta: 1663 Start delta: 1 Match idx: 0 CPU hash: c45cd65b2abf95e42ef5a6bab972c1f6e2c19b00 GPU hash: 5bd65cc4e495bf2abaa6f52ef6c172b9009bc1e2 Found delta: 1784 Start delta: 1 Match idx: 0 CPU hash: 6faa2cd4489758678fcf13f213ecc31f9160e5e7 GPU hash: d42caa6f67589748f213cf8f1fc3ec13e7e56091 Found delta: 1790 Start delta: 1 Match idx: 0 CPU hash: 7282c8273e79b01838bbf6130d57db9c80c81c4b GPU hash: 27c8827218b0793e13f6bb389cdb570d4b1cc880 Found delta: 1790 Start delta: 1 Match idx: 0 CPU hash: 92261bbb216416166f7d6223f1bbd4328828da64 GPU hash: bb1b26921616642123627d6f32d4bbf164da2888 Found delta: 1790 Start delta: 1 Match idx: 0 CPU hash: 6f09ca0b54527e56bd1f0a602a4d4b9d9eea36dd GPU hash: 0bca096f567e5254600a1fbd9d4b4d2add36ea9e Found delta: 1790 Start delta: 1 Match idx: 0 CPU hash: 7265677be9bd57042182aa05212ef1e422514a4e GPU hash: 7b6765720457bde905aa8221e4f12e214e4a5122 Found delta: 1791 Start delta: 1 Match idx: 0 CPU hash: a100c4db9def04e45734f7b9adf98c8c5b83a47c GPU hash: dbc400a1e404ef9db9f734578c8cf9ad7ca4835b Found delta: 1790 Start delta: 1 Match idx: 0 CPU hash: 6b366d5d394cb6afc2f4a55b2297145ca6472751 GPU hash: 5d6d366bafb64c395ba5f4c25c149722512747a6 Found delta: 1663 Start delta: 1 Match idx: 0 CPU hash: aa7a26f736df1668c8eeda86fa273181dfa734bc GPU hash: f7267aaa6816df3686daeec8813127fabc34a7df Found delta: 1791 Start delta: 1 Match idx: 0 CPU hash: a570a96b24dc5e6ba1af9e1eb97aab12353ae21b GPU hash: 6ba970a56b5edc241e9eafa112ab7ab91be23a35 Found delta: 1790 Start delta: 1 Match idx: 0 CPU hash: 95a32b74df1473c406f246f531922f048604bcb4 GPU hash: 742ba395c47314dff546f206042f9231b4bc0486 Found delta: 2047 Start delta: 1 Match idx: 0 CPU hash: c8699cbc61465825e1cf9020d450f6d5a85c5a63 GPU hash: bc9c69c8255846612090cfe1d5f650d4635a5ca8 Found delta: 1918 Start delta: 1 Match idx: 0 CPU hash: 8ef42dbbae1b15194deff71edfe23e78b0dae0f4 GPU hash: bb2df48e19151bae1ef7ef4d783ee2dff4e0dab0 Found delta: 1663 Start delta: 1 Match idx: 0 CPU hash: b9b16349b60b4fd9de74dff4807aabd947e98630 GPU hash: 4963b1b9d94f0bb6f4df74ded9ab7a803086e947 Found delta: 2047 Start delta: 1 Match idx: 0 CPU hash: 715c26f488c6cd2a2aa4b5d88318e7328d6fdd8c GPU hash: f4265c712acdc688d8b5a42a32e718838cdd6f8d Found delta: 2047 Start delta: 1 ^C Is that output normal? Seems I can clean it up by doing this: ./oclvanitygen -i 1s 2> /dev/null | grep e [181.98 Kkey/s][total 2048][Prob 78.0%][80% in 0.0s] [153.17 Kkey/s][total 184320] [154.25 Kkey/s][total 337920] [154.82 Kkey/s][total 493568] [154.60 Kkey/s][total 649216] [154.86 Kkey/s][total 804864] [155.35 Kkey/s][total 960512] [155.05 Kkey/s][total 1116160] [155.53 Kkey/s][total 1271808] since e will include "key/s", "Address", and "Privkey", but still get a lot more unnecessary data onscreen, and as you can see here, no addresses or privkeys are displayed in either of the oclvanitygen ouputs even though it should still find a match almost instantly ("[80% in 0.0s]"). This makes me wonder if something is broken in my setup. I then discovered that running oclvanitygen with no parameters returns help info, so it looks like if this output is normal, I'll just have it write keys to a file since some searching shows other people using grep with regular expressions to filter output on oclvanitygen (assuming there's not something broken about the fact that it didn't find any keys). However, the speed is slower than vanitygen, so I thought it must be using the CPU instead of the GPU, searched the thread and found the -d option, which confirms this: ./oclvanitygen -d 2 -i 1ssss | grep e Difficulty: 17606948 Available OpenCL platforms: 0: [Advanced Micro Devices, Inc.] ATI Stream 0: [GenuineIntel] Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz This machine is mining fine with cgminer compiling using the SDK links I listed in the LIBS & CFLAGS variables. Am I missing something completely obvious? EDIT: I just realized that when I run oclvanitygen on Windows, the output looks the same as my compiled vanitygen on F15, so I don't know if that means my oclvanitygen output on F15 is odd or not. I also tried a lot more LIBS and CFLAGS stuff trying to make sure it was linking the right files, but none of that made any difference, and then I realized my last output above does say "0: [Advanced Micro Devices, Inc.] ATI Stream" which implies the right files were used anyway. Then the obvious clicked, regarding the card not being found, I wasn't using DISPLAY=:0 (duh...). So now I'm just curious about the extraneous output on oclvanitygen as I compiled it vs vanitygen as I compiled it and oclvanitygen on Windows. EDIT2: ACK! The kernel compiled and ran once, but was still really slow and now I get this: $ DISPLAY=:0 ./oclvanitygen -d 1 -i 1ssss | grep e Difficulty: 17606948 clBuildProgram: CL_BUILD_PROGRAM_FAILURE Build log: Internal error: Link failed. Make sure the system setup is correct. Device: Cypress Vendor: Advanced Micro Devices, Inc. (1002) Driver: CAL 1.4.1417 Profile: FULL_PROFILE Version: OpenCL 1.0 ATI-Stream-v2.1 (145) Max compute units: 14 Max workgroup size: 256 Global memory: 268435456 Max allocation: 268435456 $
|
|
|
|
Math Man
|
|
August 25, 2012, 06:12:56 AM |
|
AMD GCN, NVIDIA Fermi/Kepler: Please contribute some numbers!
I'm getting 31.5 Mkey/s on a GTX 680 (Kepler) with 1300 MHz core clock and 29.25 Mkey/s at 1162 MHz core.
|
|
|
|
Ferroh
Member
Offline
Activity: 111
Merit: 100
|
|
August 28, 2012, 01:58:12 AM |
|
I tried oclvanitygen today, and discovered that it produces output like the following, instead of private keys. Match idx: 0 CPU hash: 93b30d0ad99f8133a0bc3c4793a27dbad5a0961f GPU hash: 0a0db39333819fd9473cbca0ba7da2931f96a0d5 Found delta: 1919 Start delta: 1 Am I doing it wrong?
|
|
|
|
fcmatt
Legendary
Offline
Activity: 2072
Merit: 1001
|
|
August 28, 2012, 02:49:13 AM |
|
what is the most creative/long vanity address found to date?
|
|
|
|
|
stevegee58
Legendary
Offline
Activity: 916
Merit: 1003
|
|
August 28, 2012, 10:49:23 AM |
|
I tried oclvanitygen today, and discovered that it produces output like the following, instead of private keys. Match idx: 0 CPU hash: 93b30d0ad99f8133a0bc3c4793a27dbad5a0961f GPU hash: 0a0db39333819fd9473cbca0ba7da2931f96a0d5 Found delta: 1919 Start delta: 1 Am I doing it wrong? What's your command line?
|
You are in a maze of twisty little passages, all alike.
|
|
|
runlinux
|
|
August 28, 2012, 12:42:06 PM |
|
I get the same output with oclvanitygen.exe -d 0 -i 1Test
He's not the only one with the issue.
|
|
|
|
The00Dustin
|
|
August 28, 2012, 02:01:22 PM |
|
He's not the only one with the issue. I think I had that same issue trying to gpu-mine with self-compiled code on linux. I just gave up and use Windows.
|
|
|
|
stevegee58
Legendary
Offline
Activity: 916
Merit: 1003
|
|
August 28, 2012, 02:02:29 PM |
|
I get the same output with oclvanitygen.exe -d 0 -i 1Test
He's not the only one with the issue. Here's my (working) command line on Windows: oclvanitygen.exe -d0 "1abcd"
|
You are in a maze of twisty little passages, all alike.
|
|
|
nibor
|
|
August 28, 2012, 02:24:31 PM |
|
There is no private key for this address! So any money sent to it is lost. You need to search the chain for address that have spends to be sure there is a private key. You can make any string of characters an address just by working out the checksum on the end (and adding a 1 to the start). That is why this has f59kuE at the end.
|
|
|
|
The00Dustin
|
|
August 28, 2012, 02:33:57 PM |
|
here is no private key for this address! So any money sent to it is lost. You need to search the chain for address that have spends to be sure there is a private key.
You can make any string of characters an address just by working out the checksum on the end (and adding a 1 to the start). That is why this has f59kuE at the end. Yes, that is possible, but the more plausible explanation in this case is that there is no key because the user who generated the address hasn't spent any coins from it yet.
|
|
|
|
terrytibbs
|
|
August 28, 2012, 07:49:45 PM |
|
here is no private key for this address! So any money sent to it is lost. You need to search the chain for address that have spends to be sure there is a private key.
You can make any string of characters an address just by working out the checksum on the end (and adding a 1 to the start). That is why this has f59kuE at the end. Yes, that is possible, but the more plausible explanation in this case is that there is no key because the user who generated the address hasn't spent any coins from it yet. .........
|
|
|
|
Ferroh
Member
Offline
Activity: 111
Merit: 100
|
|
August 28, 2012, 08:12:26 PM |
|
Yes, that is possible, but the more plausible explanation in this case is that there is no key because the user who generated the address hasn't spent any coins from it yet.
Um no.
|
|
|
|
deepceleron
Legendary
Offline
Activity: 1512
Merit: 1036
|
|
August 28, 2012, 08:56:30 PM Last edit: December 04, 2017, 11:54:40 AM by deepceleron |
|
here is no private key for this address! So any money sent to it is lost. You need to search the chain for address that have spends to be sure there is a private key.
You can make any string of characters an address just by working out the checksum on the end (and adding a 1 to the start). That is why this has f59kuE at the end. Yes, that is possible, but the more plausible explanation in this case is that there is no key because the user who generated the address hasn't spent any coins from it yet. You are just saying the same thing in a different way.
|
|
|
|
The00Dustin
|
|
August 28, 2012, 10:23:03 PM |
|
You are just saying the same thing in a different way. - Because of the near impossibility of finding a private key for a vanity address as long as 1BitcoinEaterAddressDontSendf59kuE, none exists,
- Because of no private key existing, any coins sent to this address will forever be unspendable,
- This valid Bitcoin address was created by appending a valid checksum for the public "vanity" part of the address,
- You see it in firstbits because the creator and others sent some coins to it.
Actually, I didn't know that was the address being discussed. Yeah, I really don't think anyone has the private key for that, and intended to use it as an example, but couldn't find it. I thought firstbits were all lowercase, and I didn't pay close attention to the URL or click it. My bads. (Although my point that not having a key [signature?] in the chain doesn't mean the key hasn't been generated stands).
|
|
|
|
Ferroh
Member
Offline
Activity: 111
Merit: 100
|
|
August 29, 2012, 06:00:43 AM |
|
I get the same output with oclvanitygen.exe -d 0 -i 1Test
He's not the only one with the issue. Here's my (working) command line on Windows: oclvanitygen.exe -d0 "1abcd" That is essentially the same command as runlinux posted Anyway, lots of people seem to continue to have this issue.
|
|
|
|
Vanity
Newbie
Offline
Activity: 27
Merit: 0
|
|
August 29, 2012, 09:41:25 AM |
|
So there's no way to get oclvanitygen to work under OSX 10.6.8 utilizing GPU (GF 9400m)? Haven't tried under Win yet, but I reckon that it'd help me a lot from the 88 KKeys/s I get from my CPU under OSX
|
|
|
|
|