Global Map Download Tool
http://www.dcemu.co.uk/vbulletin/showthread.php?t=33068
Requires Microsoft .NET 2 from http://www.microsoft.com/downloads/
Unpack the gmdlXX.zip file and navigate to /bin/Debug subfolder
Google (and Local.Live) Maps Download is a replacement/supplement for the cygwin scripts originally included with Map This! it supports downloading map tiles from a variety of sources, as well as creating compatible tiles from custom maps. It also allows downloading and import of POI (Point Of Interest) and directions to be used with Map This!
Manuals
editSpanish: http://beta.pesepe.com/?q=node/8917
English: http://www.dcemu.co.uk/vbulletin/showthread.php?t=60230
Thanks to outsider for doing these.
Video Manual
editI'm going to make an attempt at creating a video manual to show how the app works (mp4 videos created by Snapz Pro X, playable with Quick Time or VLC - videolan.org):
Downloading a map of LA with US GeoData (5:20 11.5 MB): http://www.in7ane.com/psp/manual/la_map.mov
(note: OpenStreetMap.org is used as the source - do NOT post videos of Google, VE, etc. being used as sources (USGS is fine), part of the area is deselected - that area is not downloaded at closer zoom levels to save space).
Toporama (Canadian topographic maps)
editGMDL prior to 0.4.17a from 22-Jun-2007 only worked with MapCruncher 3.0.2, so redownload it to use with later versions
Downloading a Canadian topographic map with MapCruncher automatically rendering it: http://www.in7ane.com/psp/manual/toporama.mov
Note: probably best to try it on a small map first.
1. Install MapCruncher ( http://research.microsoft.com/mapcruncher/ )
2. Specify a map name at the top of GMDL
3. Select Canadian Toporama as the Map Source in GMDL, read and click OK on the message box
4. Navigate to your desired area (test using Preview 1x and 2x)
6. Click 800x800 tile to MC.yum and click Yes to render automatically
7. Wait, the images are being downloaded
8. MapCruncher will pop up and render - it will show progress, while GMDL will be unresponsive
9. GMDL will come back into focus, build the GPSFS files (showing progress), and say that GPSFS is done (the GPSFS is in _map_name you specified, copy it to your PSP, _map_name_MC_rendered contained the rendered tiles, you can delete it, _map_name_source contains the source images, you can also delete it)
Important notes that haven't been placed anywhere else
editIn Gimp: image > mode > RGB if transparency problems on save
YUM Assembler: alt lat is only for the bottom row images
Custom geodata: it's searchable as street
Version History
edit0.5.15
Galileo (iOS app) 2.0.1 map export fix
0.5.14 - not dead yet
Galileo (iOS app) map and POI export
MBTiles map export (tested on http://developmentseed.org/blog/2010/oct/02/maps-stick-version-2-released/ not tested on the iOS app)
probably some other updates/fixes, since it has been a very long time since a release
0.5.13
Kosmsnimki in the process of being fixed
New custom sources and browser being worked on
x64 support (replace System.Data.SQLite.DLL in the Debug directory with the one from the "x64 SQLite" directory)
Google Maps Terrain fixed again (Mar 23, 2010)
Random tile delay (optional, on average 0.075sec)
More informative progress message (time remaining, tiles missed, updates when done)
Detail selection screen improvements (button to uncheck all, number of tiles)
Export of Transit Maps (iPhone app) compatible tiles from the View screen
Google Transparent source (just the streets part of hybrid, useful for Google Earth overlays (note: GPSFStileserver keys on the map directory having "transp" in its name for non-overlapping display))
Separate app: GPSFStileserver 0.3a (an http-server to serve GPSFS files as tiles and KML for Google Earth overlays) on http://www.in7ane.com/psp/
0.5.12
Confirmed as working with iPhone firmware 3.0.1 (make sure you click copy in, and use OfflineMaps_3.0_PREVIEW_iphoneos-arm.deb, move the map a bit if tiles do not load right away)
Google Maps Terrain (and others) fixed
binhusc's geodata changes from the 0.5.10b mod (southern hemisphere)
0.5.11
Google Maps fixed as a source (map, hybrid, China, MapMaker)
Output to iPhone fixed (hybrid and sat now work again) - nothing done for OS 3.0 yet
0.5.10
iPhone screen can now convert maps to xGPS format - works with 1.2.7 - choose the (new) option
Goole Maps fixed once again (including for China)
0.5.09
Yet another fix for a change in the format used by Google
Google Map Maker added as a source
Kosmosnimki fixed as a source
Canadian Toporama fixed as a source (and now uses 2000x2000 tiles which is faster)
MapCruncher fixed as a source for small maps (when 1/2/3/4 . jpg/png was missing)
iPhone firmware 2.2 compatible (tile size change from 64x64 to 128x128)
0.5.08
Another fix for a change in the format used by Google
0.5.07
gps.txt (GPS path recorded by Map This!) can now be read in (Direction tab) and saved as a POI file for use with Map This! or as a KML file for Google Earth
Fix for a change in the zoom numbering used by Google
0.5.06
Resume functionality (previously broken by the addition of FreeMap.co.il) is now fixed
Costa Rica (crmap.com) added as a source
Google now has the English version of the map as the default (switch back to local language by unchecking en)
Save 8192x8192 Tiles, in View, now have x&y swapped (for convenience)
0.5.05
maps.yahoo.com is now partially supported (US - native 256x256 instead of 258x258, all works except for overlay)
Export to iPhone (SQLite 64x64 tile DB), pretty much done now, imports pins from KML, may add directions later; see: http://www.hackint0sh.org/forum/showthread.php?t=22320
Basic resume functionality, resume.txt stores: source, zoom, x, y, min_zoom, force_jpeg (create a map and read resume.txt for instructions)
POI now has a Limit: setting (100 by default) since Google seems to disregard area constraints
FreeMap.co.il is added (not really GPS compatible, but roughly in the correct map area)
Start of vector data - it's in the code - nothing works yet
0.5.04
Update in line with google maps page changes
Fixes a user-agent problem that seems to be caused by a recent windows/i.e. update
0.5.03
City names in geodata are now no longer padded with spaces
Google Terrain added as a source (fixes the problem with the terrain layer becoming the default)
A problem with the GPSFS viewer fixed (would crash on loading under certain conditions)
0.5.02
directions_translation.txt replace is now case insensitive thanks to dloading
YUM Assembler fix (, to .)
Custom CSV geodata now handles 3.583.333 as a decimal format (to 3.583333)
Pull and merge non 256x256 tiles (for use in MapCruncher) -> then YUM then Tile Level Pull Merge: http://www.in7ane.com/psp/posts/TileLevelPullMerge.png note: rendering large (30k x 40k) images takes days in MapCruncher, on a dual 3GHz Xeon with 2GB of RAM, due to scaling
Canadian Toporama no longer asks to set higher spans as MapCruncher (3.1.3) under .NET 3 seems to handle large (within reason) YUM files without problems (may be slow - just wait)
MapCruncher will now render JPEG tiles directly (from YUM Assembler and Canadian Toporama), greatly reducing the amount of space required (note - the JPEG checkbox needs to be checked/not checked throughout)
Ability to stop the download of Google geodata (creates geodata.dat out of what downloaded)
CSV to geodata.dat - option to supply your own zip codes, in the first column (will add states later)
All (including Tile Level Pull Merge) downloaded tiles are now checked (loaded as a bitmap) - this addresses 404/error pages that did not throw an error before
Google layer version numbers are now set on startup once again (I think something changed somewhere - wasn't really a problem, but fixed now)
New Canadian geodata statcan_rnf_v3 that may fill in some gaps (L and R ranges are now split up) - this is a minor change
Google (semi-auto) geodata with a local cache is in - there will probably be some fixes after somebody tests it (e.g. http://www.in7ane.com/psp/posts/ggeo_semiauto.png )
http://new.kosmosnimki.ru is now a source - but not GPS compatible (6m resolution instead of Google's 15 and 25m for parts of Russia e.g. http://www.in7ane.com/psp/posts/kosmosnimki_comp.png )
Downloading tiles in random order is now an option (Rnd checkbox under Advanced)
Updates are now fed from http://www.in7ane.com/psp/gmdl.html (which redirects to the latest zip) providing a permanent link
Icons swapped to comply with Map This 0.5.20 changes
0.5.01
Warns if can't find sounds.txt and icons
UK postcode geodata is fixed (single zip center was falling outside of the map area, it's now split by the first part of the postcode), temporary note: keep Street 1 checked and search for 1 post code (e.g. 1 EC4Y) to bypass the wide search reset bug in Map This! on subsequent searches
Note on the Google direction's dislike of pedestrian streets (also affects Nieko's web interface)
Ability to set the cookie from the web browser
The 4x zoom and area selection screen now has a size estimate based on the loaded tiles, allows deselection of 1x and shows an estimate of the map/layer sizes
directions_translation.txt for translating the part of directions that's in English (sounds.txt is applied before this)
Geodata from querying Google (all street numbers are 1) that seems to work with international encodings (please provide feedback)
0.5.00
Layout fixes (anchoring, map sources in tabs with translation.txt present)
YUM Assembler fixes (CSV changes, ; delimited CSVs - no ; in file names though, actual image counts) - now with a manual: http://www.in7ane.com/psp/manual/YUM_Assembler.pdf
Disabled the default copying of icons and sounds, and synced up the ones bundled with GMDL
Sloppy interface fixes - thanks zsc
WMS/NASA error handling fixed (failed tiles remained with the text error message)
Google Hybrid is a single option again (underneath it works the same, just an interface change)
New USGS TIGER geodata, now covering all states, you can delete C:/GMDL/usgs_tiger (usgs_tiger_v2 is now used)
0.4.17
Fully decoded Swedish geodata
Google directions option to avoid highways (multistage, and manually dragged directions work as well)
Toporama auto render now uses the latest version of MapCruncher, and allows to specify a drive other than C to look for it
Option to convert tiles to JPEG while downloading (but you are much better off using GPSFS_util by MIB.42)
Sounds are on by default (directions), see .zip in GMDL for mac scripts to create message mp3s
Custom geodata (from a CSV file), now with ; delimiter support
YUM Assembler for MapCruncher (contact me if you want a walkthrough) - see: http://www.in7ane.com/psp/posts/yum_assembler.jpg
Option to save directions at various encodings and UPPERCASE (e.g. Default and UPPER for the Russian Map This!)
Changes to keep up to date with the maps.live.com update
Saving to a different location
editIf you do not put in the map/POI/directions name the set/save dialog box will now appear (allowing to save directly to the memory stick for example).
In 0.2.14a there was a bug that prevented saving to an existing/created directory, this is fixed as of 0.2.15a so you can now:
- specify a directory that does not exist - it will be created
- choose an empty existing directory
- create a directory (via the Make New Folder button in the Browse For Folder dialog box)
Creating a POI File
editClick on the POI tab
Local.Live/Google/Yahoo
edit1. Enter your search term into the Search for: text box
2. Navigate the map to your desired area (you can use the Search Maps)
3. Move the map around a bit
4. Click "Get Numbers" and make sure Lat/Lon/S text boxes get populated
5. Click the Local.Live/Google/Yahoo radio button (if Google, choose relevant google.com/.co.uk/etc.)
6. Click "List" and make sure the datagrid is populated with your POIs
7. Enter a file name, starting with _, into the Save POI (start with _): text box
8. Click Save POI (start with _):
9. The file will be created in the same directory as the application, place it into the corresponding map folder
Directions that follow the roads
editDirections from Google now have the distance remaining to next way-point, and remove excessive path points (so you can have a long road mapped out without ending up with thousands of POIs).
1. Click on the Directions tab
2. Check the Google radio button
3. Check the Create intermittent every: check box
4. Either select a zoom level from the drop down list or enter the value by hand on the right (0.0001)
5. Enter From:/To: or search for the directions and click Get Values
6. Click List, make sure you get less than 400 POIs, else increase the intermittent value and repeat this step
7. Click Save POI (start with_):
8. Place the resulting file into the corresponding map folder
Translation
editto load:
drop translation.txt into the application directory
run the application
German
edit0.4.0b courtesy of nforce100 [1]
older
0.4.0b (older) courtesy of nforce100 [2]
0.2.15a courtesy of nforce100 [3]
Format of translation.txt
editworks as follows:
to create:
click Generate translation.txt
edit the translation.txt file, the format is as follows:
FORM_NAME.CONTROL_NAME(ORIGINAL_TEXT)=TRANSLATED_T EXT
ORIGINAL_TEXT is just there for your information, but does need to be there for the file to work, ()= is fine
lines without TRANSLATED_TEXT are fine - they are ignored
sample file:
GMdl.size(w)=
GMdl.UserMode(Advanced)=Other Options
to save after load:
move translation.txt out of the application directory
click Generate translation.txt
translated values are preserved
new/missing controls are added - this is so that you can upgrade your translation.txt files
What doesn't translate: dialog boxes and other forms - will be in the next version
Other Platforms
editThe short answer:
editWriting for Windows was a decision based on the maximum number of people being able to run the application (while it is possible to run Windows applications on Mac/Linux using Wine/emulation/virtualisation the reverse is not the case unless you run an alternative OS in a virtual machine).
The long answer:
editI looked at having a version written on Objective-C for mac at the start, and at porting using Mono more recently. Maintaining two branches - one in ObjC and one in C# would not have worked, while transitioning to Mono is something I would still like to do (this is not going to happen any time soon) - once the code becomes stable.
In the meantime - it is not only the exe - the full (Visual Studio 2005 C#) source code is there if anyone wants to begin porting it.
If you just want to run it - it works fine under Parallels and Windows XP SP2 on an Intel mac, and I would imagine you would also get reasonable performance under emulation in VirtualPC (there is not really anything processor intensive).
As for working under Wine (already out for Intel Macs as well), and maybe http://darwine.opendarwin.org/ on PPC - I'd appreciate any reports on if it does. (No, it doesn't!)
Creating a Custom Map (MapCruncher)
edit1. Align and render your map with MapCruncher ( http://research.microsoft.com/mapcruncher/ ) which has quite a comprehensive manual.
2. Launch GMDL and select MapCruncher as the Map Source
3. Click Set next to that and select the directory containing the tiles (Layer_NewLayer by default)
4. Read the informative message box (main part is that you click Pull Tiles under Advanced rather than Download The Map)
Creating a Custom Map (old)
edit1. Click Advanced
2. Click Custom Map
Simple (without coordinates)
edit3. You need to have a source PNG file (without transparency)
4. Click Load Any PNG
5. Select your image file
6. Once it loads (you can see a close up by clicking on the image, click on zoomed in to close)
7. Specify/create the map directory via Set Dir or it will create one with the automatic name in the application directory
8. Click Save Tiles
9. Message box will tell you when it's done, then move the map directory to your memory stick
Repairing an Existing Map Directory
edit1. Click Advanced
2. You need to know and specify zoom, x, y (these are not the ones in coords.txt), min zoom (this is in coords.txt), and set w and h to 2
3. Click Set Dir and choose the map directory
4. You need to have the map tiles in plain (non GPSFS) form, so, if needed, extract using <-GPSFS and move the contents of GPSFS_Extracted to the map directory, delete GPSFS_Extracted and GPSFS through GPSFS4
5. Check Repair Existing Directory
6. Click Pull Files and the missing tiles (and coords.txt) will be created followed by the GPSFS conversion
7. Note: Checking Trigger Map Abort will not delete the map directory if Repair Existing Directory is checked
Moon & Mars
editAs of redownloading 0.4.0b in January 2007 or later
Navigate in earth equivalent and use preview or, in Advanced, just set x,y to 0,0 and zoom to 16 to the min you want.
Mars
elevation 16 to 9
http://kh.google.com/movl?ov=52&t=ttrr
visible 16 to 8
http://kh.google.com/movl?ov=50&t=ttqq
infrared 16 to 8
http://kh.google.com/movl?ov=51&t=ttqr
Moon 16 to 11 (10- is cheese)
http://moon.google.com/kh?v=2&t=tqrt
(careful - it's cheese all the way down)
16,0,0,11 is cheese free
Note to self: need (diff) sat test?
sounds.txt
editPlace your sound files into the sounds directory named as following: message00N.mp3 (message001.mp3 ... message999.mp3), note that the mp3s need to be over one second (you may want to test them on your PSP first).
sounds.txt is a CSV that has the message number followed by the words it corresponds to.
the first line will be used for waypoints that do not correspond to anything else (but not for MIDPOINTS).
sounds.txt is read sequentially, so if you have 4,left then 5,left message005.mp3 will get used for directions containing left.
it is not indexed, so 4,left then 4,gauche is valid.
Note: you'll have to copy the message00N.mp3s to old map directories manually, and obviously any directions files will have to be rerun.
Map Sources
editWorking
editWhatever is in GMDL, pretty much anything that matches the google tile projection, see: http://mapki.com/wiki/Satellite_Tile_Layout (something like that, except with x,y,z addressing)
MapABC (the map source used by google.cn) seems to be significantly offset from Google Earth (this may be due to a different projection/grid in China, that was not converted correctly). http://www.in7ane.com/psp/posts/MapABC.kml
Custom maps via specifying the URL with parameters
edithttp://www.stanford.edu/hpcgi/map/index.pl
http://www.stanford.edu/dept/ucomm/map/tiles/base_$x$_$y$_$17-z$.png
http://research.microsoft.com/mapcruncher/Gallery/NWBike/
http://s3.amazonaws.com/MapCruncher/WashingtonBikeV4/Layer_MostMaps/$0123$.png
(there are a few more overlays at http://research.microsoft.com/mapcruncher/Gallery/ )
Requests
editNote: if you have found an online map that you think may be usable, add it here
www.maps.az
Map of Baku city, Azerbaijan. No alternatives on the web at all! Please add this map
www.multimap.com
Tiles are compatible, URL looks reasonably straight forward
http://map.ivolga.ru/saratov/?m=8&dx=8960&dy=11270
Not GPS compatible but could be manipulated into giving 256x256 tile stack
http://ivolga.ru/cgi-bin/map.cgi?id=3&xs=256&ys=256&m=8&dx=8960&dy=11270&fs=8
www.apontador.com.br
More precise source for Brazil
Not Working
editNote: please give a reason (e.g. sample tiles that do not coincide)
Projection not compatible
http://www.comfort.kiev.ua/spravka/map/odessa.php
Projection not compatible, tile addressing is a two part system
http://rmt.vnetgis.com/?map=odesa&uamap_cuid=cm46a5bf3db2d41&log=0&rq=get_map&l=ru&st=19
uamap_cuid=cm46a5bf3db2d41 -- session id that requests map
st=19 -- number of map requested
http://map.bigmir.net/kharkov/
Projection not compatible, tile addressing is a two part system (same as http://www.comfort.kiev.ua/spravka/map/odessa.php above)
http://rmt.a.vnetgis.com/?uamap_cuid=46a5c04166d70&map=kharkov&rq=get_map&st=3
Incompatible tile projection (256x256 tiles so could pull non-gps)
Not true anymore. Czech developer Kexik has already managed to create a modified version of GMDL + updated MapViewer http://kexik.7thsquad.com/index.php?entry=entry070906-221310
http://mapserver.mapy.cz/base/10_7ec0000_8180000
http://mt3.google.com/mt?n=404&v=w2.56&x=2212&y=1387&zoom=5
http://mt3.google.com/mt?n=404&v=w2.56&x=1106&y=693&zoom=6
200x200 tiles
incompatible projection
http://mt2.google.com/mt?n=404&x=34&y=20&zoom=11
Map is rendered on request as a 500x500 image
Can't find the map
Garmin
As far as I know the maps are stored in vector form, and there is no way to export them as a single image
Vector Java based maps
Non-Java version ( http://www.map24.com/businessMap24/index.php?mid=BME000094072&maptype=reload&offset=10&&action=EAST , right? ) does not have compatible tiles (not even square)
Incompatible tile projection
http://mt3.google.com/mt?n=404&x=76&y=51&zoom=10
http://www.freemap.co.il/map/tile.php?map=israel&t=-3584&l=3584&s=3000000&g=all&i=png24
Incompatible tile projection, watermarked when accessed directly (referrer/session id check?)
http://mt1.google.com/mt?n=404&x=16&y=9&zoom=12
http://webcache.gisline.no/?x1=0&y1=6291456&z=524288&s=0&l=2
http://www.streetdirectory.com
Incompatible tile projection
Pre-rendered 430px ? 555px maps
Incompatible tile projection, encoded URLs
http://mt0.google.com/mt?n=404&x=7&y=5&zoom=13
http://m1.viamichelin.com/mapsgene/dm/mapdirect;d29oXzAwNDVtX3IwMg==;MDAwMDAwMDAwNTAwMDAwMDAwMDc=
Incompatible tile projection
http://r2.ortho.tiles.virtualearth.net/tiles/r132232022.png?g=66
GMDT's map data incompatible with xGPS on iPhone - fixed as of 0.5.10b (but may break if xGPS changes its database format again)
Hardware: iphone 3G/16Gb/international/jailbreaked
Software: xGPS 1.2.7
xGPS force quit to sprinboard when loading map data
GeoData.DAT
editAs of GMDL 0.4.4b the GeoData creation app is now part of GMDL, requiring pre-processed USGS TIGER or StatCan RNF files, a full set (550MB or 30MB) of which can be downloaded from http://www.in7ane.com/psp/mirrors.html
USA
editCovered via USGS TIGER.
Canada
editOn version 2.
Covered via StatCan RNF and NRC GNSS.
Sweden
editAppears to be done as of GMDL 0.4.17a on July 1, 2007 - I would really appreciate some bug reports on this though.
You will need the .PBA files and lktab.txt if you want city names (101 files all together) - more details on that in the app.
1. Open GMDL
2. Click GeoData
3. Select the Sweden (PBA) tab
4. Set the directory containing the .PBA and the lktab.txt files
5. Click Process
6. Wait, and it will tell you where the geodata.dat was generated, place that into your map directory on the PSP
Where to get the files (once you got the Kartex app)
PBA files can be found on the Kartex CD:
Kartex\Tatorter\CITY NAME\CITY NAME.pba
It is probably a good idea to just search for *.pba and copy all 100 of them into a directory.
lktab.txt gets created after you install Kartex, and can be found in [C:\Program Files\ I think] Stadkart\lktab.txt
Technical notes:
The PBA files have RT90 coordinates (converted to lat lon via PROJ.4 in GMDL), however within the PBA files the coordinate data is mixed with some sort of index (looks like they wanted to get an even spread, probably due to the search algorithm that they are using). The format is roughly ENCODED.#CODE where ENCODED is the encoded RT90, # is redundant, and CODE is a code that translates into a DIVISOR to get RT90:
x: RT90 = 6098185 + ENCODED * 2 / DIVISOR y: RT90 = 1098185 + ENCODED * 2 / DIVISOR
DIVISOR can be generated by using 4 (probably less, but will take longer, scan i up to 2000 for the 4 seeds below) seeds, as following: seed_code * i, take the last 3 digits, if they match the code, make a note of i, seed_divisor * i, take the last 3 digits - that's the divisor.
seed_code seed_divisor 374 2 61 3 435 5 809 7
UK
editPostcodes only, from various public sources, semi abandoned at this point.
Custom
editAppears to be done as of GMDL 0.4.17a on July 3, 2007 - I would really appreciate some bug reports on this though.
Get your data into a CSV with the following format (with column names by default, or you can uncheck that in GMDL):
Mandatory (this is so you can convert the same CSV into a POI file):
lon,lat,name
Optional (extra columns, after city, are ignored for POI conversion):
lon,lat,name,city (description),min number,max number
Note: city (description) is what the geodata file will be segmented by (it should be a geographical area, it is fine being the same for all rows if you have a reasonably small set), if it's not specified rounded lat/lon will be used
Note: If your CSV is delimited by ; instead of , (e.g. if the decimal point is a decimal coma, like in French, German, Russian, etc.) check the CSV is delimited by ;... checkbox
For example (the NZ txt extract), open Excel, open the txt, leave the import on Delimited, with Tab, and Finish, select all cells except the header row, and sort AtoZ (this eliminates the empty rows). Re-arrange the columns as follows: LONG, LAT, FULL_NAME and delete the others. Save-as a csv (Yes to keeping in the CSV format).
Open GMDL, click GeoData, select the Custom (CSV) tab, set the file and click process, place the resulting geodata.dat into your map directory.
Sample source: http://earth-info.nga.mil/gns/html/cntry_files.html
Creating GeoData.DAT for an existing map
edit1) Click GeoData (top left) 2) Select the StatCan RNF tab if you are adding Canadian geodata 3) Click 1/3 - Select map and select the map 4) Click 2/3 - Select for map 5) Click 3/3 - Save geodata.dat 6) Wait, and that's it.
A Wikibookian believes this page should be split into smaller pages with a narrower subtopic. You can help by splitting this big page into smaller ones. Please make sure to follow the naming policy. Dividing books into smaller sections can provide more focus and allow each one to do one thing well, which benefits everyone. |