mapdata 3.20.0__tar.gz → 3.22.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mapdata-3.20.0/mapdata.egg-info → mapdata-3.22.0}/PKG-INFO +1 -16
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/mapdata.py +94 -30
- {mapdata-3.20.0 → mapdata-3.22.0/mapdata.egg-info}/PKG-INFO +1 -16
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata.egg-info/requires.txt +10 -9
- {mapdata-3.20.0 → mapdata-3.22.0}/setup.py +2 -2
- {mapdata-3.20.0 → mapdata-3.22.0}/LICENSE.txt +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/MANIFEST.in +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/README.md +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/configfile/mapdata.conf +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/0.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/1.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/2.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/3.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/4.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/5.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/6.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/7.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/8.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/9.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/A.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/B.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/C.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/D.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/E.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/F.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/G.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/H.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/I.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/J.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/K.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/L.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/M.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/N.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/O.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/P.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/Q.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/R.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/S.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/T.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/U.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/V.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/W.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/X.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/Y.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/Z.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/airplane.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/anchor.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/ball.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/ball_small.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/bar.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/bars.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/binoculars.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/bird.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/block.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/block_small.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/bookmark.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/box_stack.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/camera.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/cancel.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/car.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/car2.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/center8.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/check.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/check_circle.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/checkbox.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/checkerboard.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/chevrons.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/circle.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/circle_bar.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/circle_plus.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/circle_stipple.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/circle_triangle.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/circle_wedge.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/circle_x.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/clock.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/columns.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/contract.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/cross.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/darkeye.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/decrease.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/deposition.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/diag_ll.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/diag_lr.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/diag_ul.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/diag_ur.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/dialog.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/diamond.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/donkey.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/dot.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/down.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/drop.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/elephant.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/expand.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/eye.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/fire.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/fish.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/flag.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/flag2.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/four_arrows.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/graph.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/hand.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/hash.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/heart.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/hidden.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/hourglass.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/house.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/increase.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/info.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/leaf.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/left.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/lightbulb.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/lightning.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/lightning2.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/location_ptr.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/mine.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/nested_boxes.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/pennant.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/pennant2.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/people.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/person.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/person2.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/person3.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/phone.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/photo.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/picnic.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/plus.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/point_down.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/point_left.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/point_right.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/point_up.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/pointer_ne.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/pointer_nw.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/pointer_se.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/pointer_sw.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/puzzle.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/q1.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/q1_notch.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/q2.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/q2_notch.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/q3.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/q3_notch.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/q4.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/q4_notch.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/qmark_circle.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/qmark_circle2.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/raincloud.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/right.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/rocket.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/rocket2.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/rose.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/rows.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/scales.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/search.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/search2.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/skull.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/square.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/star.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/stipple.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/stop.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/surprise_circle.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/swamp.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/target.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/target2.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/ten.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/trash.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/tree.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/tree2.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/tree3.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/triangle.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/triangle_open.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/triangle_sm.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/up.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/vapor.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/warning.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/wave.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/wave2.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/wave3.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/weather.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/wedge.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/wedge_sm.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/wedges_3.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/well.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/whale.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/whale2.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/wheelchair.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/zigzags.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/16x16/zigzags2.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/20x20/ball20.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/20x20/block20.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/20x20/circle20.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/20x20/q1_20.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/20x20/q2_20.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/20x20/q3_20.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/20x20/q4_20.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/20x20/square20.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/24x24/ball24.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/24x24/block24.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/24x24/circle24.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/24x24/square24.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/28x28/ball28.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/28x28/block28.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/28x28/circle28.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata/symbols/28x28/square28.xbm +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata.egg-info/SOURCES.txt +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata.egg-info/dependency_links.txt +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/mapdata.egg-info/top_level.txt +0 -0
- {mapdata-3.20.0 → mapdata-3.22.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mapdata
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.22.0
|
|
4
4
|
Summary: An interactive map and table explorer for geographic coordinates in a spreadsheet, CSV file, or database that includes data plotting and statistical summaries
|
|
5
5
|
Home-page: https:/hg.sr.ht/~rdnielsen/mapdata
|
|
6
6
|
Author: Dreas Nielsen
|
|
@@ -24,21 +24,6 @@ Classifier: Topic :: Scientific/Engineering
|
|
|
24
24
|
Requires-Python: >=3.8
|
|
25
25
|
Description-Content-Type: text/markdown
|
|
26
26
|
License-File: LICENSE.txt
|
|
27
|
-
Requires-Dist: tkintermapview
|
|
28
|
-
Requires-Dist: pyproj
|
|
29
|
-
Requires-Dist: jenkspy
|
|
30
|
-
Requires-Dist: odfpy
|
|
31
|
-
Requires-Dist: openpyxl
|
|
32
|
-
Requires-Dist: xlrd
|
|
33
|
-
Requires-Dist: matplotlib
|
|
34
|
-
Requires-Dist: seaborn
|
|
35
|
-
Requires-Dist: loess
|
|
36
|
-
Requires-Dist: statsmodels
|
|
37
|
-
Requires-Dist: scipy
|
|
38
|
-
Requires-Dist: scikit-learn
|
|
39
|
-
Requires-Dist: pymannkendall
|
|
40
|
-
Requires-Dist: umap-learn
|
|
41
|
-
Requires-Dist: pynndescent
|
|
42
27
|
|
|
43
28
|
|
|
44
29
|
*mapdata.py* is a data explorer for data sets containing geographic coordinates. Data can be read from a CSV file, spreadsheet, or database. Both a map and a data
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
#
|
|
25
25
|
# ==================================================================
|
|
26
26
|
|
|
27
|
-
version = "3.
|
|
28
|
-
vdate = "2026-03-
|
|
27
|
+
version = "3.22.0"
|
|
28
|
+
vdate = "2026-03-31"
|
|
29
29
|
|
|
30
30
|
copyright = "2023-2026"
|
|
31
31
|
|
|
@@ -99,6 +99,7 @@ try:
|
|
|
99
99
|
mk_available = True
|
|
100
100
|
except:
|
|
101
101
|
mk_available = False
|
|
102
|
+
import kneeliverse
|
|
102
103
|
|
|
103
104
|
|
|
104
105
|
# Default name of configuration file. Files with other names may be read.
|
|
@@ -2361,6 +2362,41 @@ def list_mse(y):
|
|
|
2361
2362
|
# This computes the MSE for differences between elements of the list and 1.0
|
|
2362
2363
|
return sum([(s-1)**2 for s in y])/len(y)
|
|
2363
2364
|
|
|
2365
|
+
def elbow_kneeliverse(rmses):
|
|
2366
|
+
# Returns the x value of the elbow
|
|
2367
|
+
pts = np.array(list(zip(list(range(1, len(rmses)+1)), rmses)))
|
|
2368
|
+
return kneeliverse.kneedle.knee(pts)
|
|
2369
|
+
|
|
2370
|
+
class LinePoints(object):
|
|
2371
|
+
# For calculation of elbow inflection using `kneedle` algorithm:
|
|
2372
|
+
# maximum distance of point from line.
|
|
2373
|
+
def __init__(self, x1, y1, x2, y2):
|
|
2374
|
+
self.yd = y2 - y1
|
|
2375
|
+
self.xd = x2 - x1
|
|
2376
|
+
self.xyterm = x2 * y1 - y2 * x1
|
|
2377
|
+
self.denom = math.sqrt(self.yd**2 + self.xd**2)
|
|
2378
|
+
def point_dist(self, xx, yy):
|
|
2379
|
+
return abs(self.yd * xx - self.xd * yy + self.xyterm) / self.denom
|
|
2380
|
+
def signed_point_dist(self, xx, yy):
|
|
2381
|
+
# Positive values are below the line, negative values above.
|
|
2382
|
+
return (self.yd * xx - self.xd * yy + self.xyterm) / self.denom
|
|
2383
|
+
|
|
2384
|
+
def kneedle_maxdist(rmses):
|
|
2385
|
+
xs = list(range(1, len(rmses)+1))
|
|
2386
|
+
lp = LinePoints(xs[0], rmses[0], xs[-1], rmses[-1])
|
|
2387
|
+
dists = [lp.signed_point_dist(xs[i], rmses[i]) for i in range(1,len(rmses)-1)]
|
|
2388
|
+
return dists.index(max(dists)) + 2
|
|
2389
|
+
|
|
2390
|
+
def elbow(rmses, eucdists):
|
|
2391
|
+
# Returns the elbow in the list of RMSE or Euclidean distance values.
|
|
2392
|
+
if len(rmses) < 3:
|
|
2393
|
+
return len(rmses)
|
|
2394
|
+
kd_rmse_em = max(kneedle_maxdist(rmses), kneedle_maxdist(eucdists))
|
|
2395
|
+
if kd_rmse_em < 5:
|
|
2396
|
+
return kd_rmse_em
|
|
2397
|
+
return elbow_kneeliverse(rmses)
|
|
2398
|
+
|
|
2399
|
+
|
|
2364
2400
|
def iterate_nmf(D, n_em, max_iterations=200, mse_goal=0.00001):
|
|
2365
2401
|
# Performs NMF on D until the row sums of the W matrix are all (approximately) 1.0.
|
|
2366
2402
|
nmf_model1 = NMF(n_components=n_em, solver='mu', max_iter=500)
|
|
@@ -6745,6 +6781,15 @@ class UniqueValuesDialog(Dialog):
|
|
|
6745
6781
|
self.data_labels = None
|
|
6746
6782
|
self.dlg.bind("<Control-s>")
|
|
6747
6783
|
|
|
6784
|
+
# Top controls
|
|
6785
|
+
self.sel_only_var, self.sel_only_ck = add_sel_only(self.ctrl_frame, 0, 0, self.q_recalc)
|
|
6786
|
+
self.indiv_var = tk.StringVar(self.ctrl_frame, "0")
|
|
6787
|
+
indiv_ck = ttk.Checkbutton(self.ctrl_frame, text="Individually", command=self.q_recalc, variable=self.indiv_var,
|
|
6788
|
+
onvalue="1", offvalue="0")
|
|
6789
|
+
indiv_ck.grid(row=0, column=1, sticky=tk.W, padx=(6,3), pady=(3,3), columnspan=None)
|
|
6790
|
+
self.ctrl_frame.columnconfigure(0, weight=0)
|
|
6791
|
+
self.ctrl_frame.columnconfigure(1, weight=1)
|
|
6792
|
+
|
|
6748
6793
|
# The content_frame encompasses the two panes of the variable frame and the content frame
|
|
6749
6794
|
frame_panes = ttk.PanedWindow(self.content_frame, orient=tk.HORIZONTAL, width=600)
|
|
6750
6795
|
frame_panes.grid(row=0, column=0, sticky=tk.NSEW)
|
|
@@ -6753,7 +6798,7 @@ class UniqueValuesDialog(Dialog):
|
|
|
6753
6798
|
var_frame = tk.Frame(frame_panes, width=250, borderwidth=2, relief=tk.RIDGE)
|
|
6754
6799
|
var_frame.grid(row=0, column=0, sticky=tk.NSEW)
|
|
6755
6800
|
var_frame.rowconfigure(0, weight=1)
|
|
6756
|
-
var_frame.columnconfigure(0, weight=1)
|
|
6801
|
+
var_frame.columnconfigure(0, weight=1, minsize=200)
|
|
6757
6802
|
frame_panes.add(var_frame, weight=1)
|
|
6758
6803
|
# Add multi-select list of variables to the leftmost pane
|
|
6759
6804
|
varvals = [[v] for v in self.variables]
|
|
@@ -6787,20 +6832,48 @@ class UniqueValuesDialog(Dialog):
|
|
|
6787
6832
|
|
|
6788
6833
|
def q_recalc(self, *event, get_data=True):
|
|
6789
6834
|
self.clear_output()
|
|
6790
|
-
if len(self.column_table.selection()) > 0
|
|
6791
|
-
self.
|
|
6835
|
+
if len(self.column_table.selection()) > 0:
|
|
6836
|
+
self.get_data()
|
|
6837
|
+
if self.rawdataset is not None and len(self.rawdataset[0]) > 0:
|
|
6838
|
+
self.recalc()
|
|
6792
6839
|
|
|
6793
|
-
def
|
|
6794
|
-
|
|
6840
|
+
def get_data(self):
|
|
6841
|
+
# Get the selected data into 'dataset'
|
|
6842
|
+
self.rawdataset = None
|
|
6843
|
+
self.colnames = []
|
|
6795
6844
|
for sel_row in self.column_table.selection():
|
|
6796
6845
|
datarow = self.column_table.item(sel_row)["values"]
|
|
6797
|
-
|
|
6798
|
-
|
|
6799
|
-
|
|
6800
|
-
|
|
6801
|
-
|
|
6802
|
-
|
|
6803
|
-
|
|
6846
|
+
self.colnames.append(datarow[0])
|
|
6847
|
+
if len(self.colnames) > 0:
|
|
6848
|
+
# Get either only the selected data or all data.
|
|
6849
|
+
dataset = chosen_dataset(self.parent, self.colnames, self.sel_only_var.get()=='1')
|
|
6850
|
+
if dataset is None or len(dataset[0]) == 0:
|
|
6851
|
+
self.rawdataset = None
|
|
6852
|
+
self.colnames = None
|
|
6853
|
+
else:
|
|
6854
|
+
self.rawdataset = dataset
|
|
6855
|
+
|
|
6856
|
+
def recalc(self):
|
|
6857
|
+
if self.indiv_var.get()=='1':
|
|
6858
|
+
counts = dict(zip(self.colnames, [0 for _ in range(len(self.colnames))]))
|
|
6859
|
+
for i,col in enumerate(self.colnames):
|
|
6860
|
+
counts[col] = len(set([x for x in self.rawdataset[i] if x is not None and str(x) != '']))
|
|
6861
|
+
self.dataset = list(counts.items())
|
|
6862
|
+
self.data_labels = ["Variable", "Count"]
|
|
6863
|
+
else:
|
|
6864
|
+
counts = {}
|
|
6865
|
+
ds = columns_to_rows(self.rawdataset)
|
|
6866
|
+
for row in ds:
|
|
6867
|
+
trow = tuple(row)
|
|
6868
|
+
if trow not in counts.keys():
|
|
6869
|
+
counts[trow] = 1
|
|
6870
|
+
else:
|
|
6871
|
+
counts[trow] += 1
|
|
6872
|
+
self.dataset = [list(k) for k in counts.keys()]
|
|
6873
|
+
vals = list(counts.values())
|
|
6874
|
+
for i in range(len(counts)):
|
|
6875
|
+
self.dataset[i].append(vals[i])
|
|
6876
|
+
self.data_labels = self.colnames + ["Count"]
|
|
6804
6877
|
tframe, tdata = treeview_table(self.values_frame, self.dataset, self.data_labels)
|
|
6805
6878
|
tframe.grid(row=0, column=0, sticky=tk.NSEW)
|
|
6806
6879
|
self.dlg.bind("<Control-s>", self.save_data)
|
|
@@ -13656,10 +13729,10 @@ class NMFUnmixingDialog(Dialog):
|
|
|
13656
13729
|
frame_panes.grid(row=0, column=0, sticky=tk.NSEW)
|
|
13657
13730
|
|
|
13658
13731
|
# Variable frame for list of quantitative columns/variables
|
|
13659
|
-
var_frame = tk.Frame(frame_panes, borderwidth=2, relief=tk.RIDGE)
|
|
13732
|
+
var_frame = tk.Frame(frame_panes, width=250, borderwidth=2, relief=tk.RIDGE)
|
|
13660
13733
|
var_frame.grid(row=0, column=0, sticky=tk.NSEW)
|
|
13661
13734
|
var_frame.rowconfigure(0, weight=1)
|
|
13662
|
-
var_frame.columnconfigure(0, weight=1
|
|
13735
|
+
var_frame.columnconfigure(0, weight=1)
|
|
13663
13736
|
frame_panes.add(var_frame, weight=1)
|
|
13664
13737
|
|
|
13665
13738
|
# Maybe add a dropdown to select the row ID variable if there are multiple.
|
|
@@ -13863,21 +13936,12 @@ class NMFUnmixingDialog(Dialog):
|
|
|
13863
13936
|
# Diagnostics: Total residual, RSS, AIC, RMSE, Frobenius norm of matrix difference, K-L divergence
|
|
13864
13937
|
diagnostics.append([em_no, fp_display(arraysum(fit_ds)-arraysum(ds), 4), fp_display(fit_rss,5),
|
|
13865
13938
|
fp_display(fit_aic,4), fp_display(fit_rmse,4), fp_display(frobnorm,4), fp_display(kl_div,3)])
|
|
13866
|
-
if len(rmses) >
|
|
13867
|
-
|
|
13868
|
-
sel_em = rmse_diffs.index(max(rmse_diffs))+2
|
|
13869
|
-
if len(rmse_diffs) > 2:
|
|
13870
|
-
rmse_diffs2 = [rmse_diffs[i] - rmse_diffs[i+1] for i in range(len(rmse_diffs)-1)]
|
|
13871
|
-
sel_em2 = rmse_diffs2.index(max(rmse_diffs2))+2
|
|
13872
|
-
if sel_em != max_ems-1:
|
|
13873
|
-
sel_em = sel_em2
|
|
13874
|
-
else:
|
|
13875
|
-
sel_em = rmse_diffs.index(max(rmse_diffs))+2
|
|
13876
|
-
self.em_var.set(sel_em)
|
|
13877
|
-
sel_em_index = sel_em - 1
|
|
13939
|
+
if len(rmses) > 2:
|
|
13940
|
+
sel_em_index = elbow(rmses, frobs) - 1
|
|
13878
13941
|
else:
|
|
13879
|
-
|
|
13880
|
-
|
|
13942
|
+
sel_em_index = length(test_ems) - 1
|
|
13943
|
+
sel_em = test_ems[sel_em_index]
|
|
13944
|
+
self.em_var.set(sel_em)
|
|
13881
13945
|
self.em_sel["values"] = test_ems
|
|
13882
13946
|
self.em_sel["state"] = tk.NORMAL
|
|
13883
13947
|
W, H = unmixes[sel_em_index]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mapdata
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.22.0
|
|
4
4
|
Summary: An interactive map and table explorer for geographic coordinates in a spreadsheet, CSV file, or database that includes data plotting and statistical summaries
|
|
5
5
|
Home-page: https:/hg.sr.ht/~rdnielsen/mapdata
|
|
6
6
|
Author: Dreas Nielsen
|
|
@@ -24,21 +24,6 @@ Classifier: Topic :: Scientific/Engineering
|
|
|
24
24
|
Requires-Python: >=3.8
|
|
25
25
|
Description-Content-Type: text/markdown
|
|
26
26
|
License-File: LICENSE.txt
|
|
27
|
-
Requires-Dist: tkintermapview
|
|
28
|
-
Requires-Dist: pyproj
|
|
29
|
-
Requires-Dist: jenkspy
|
|
30
|
-
Requires-Dist: odfpy
|
|
31
|
-
Requires-Dist: openpyxl
|
|
32
|
-
Requires-Dist: xlrd
|
|
33
|
-
Requires-Dist: matplotlib
|
|
34
|
-
Requires-Dist: seaborn
|
|
35
|
-
Requires-Dist: loess
|
|
36
|
-
Requires-Dist: statsmodels
|
|
37
|
-
Requires-Dist: scipy
|
|
38
|
-
Requires-Dist: scikit-learn
|
|
39
|
-
Requires-Dist: pymannkendall
|
|
40
|
-
Requires-Dist: umap-learn
|
|
41
|
-
Requires-Dist: pynndescent
|
|
42
27
|
|
|
43
28
|
|
|
44
29
|
*mapdata.py* is a data explorer for data sets containing geographic coordinates. Data can be read from a CSV file, spreadsheet, or database. Both a map and a data
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
tkintermapview
|
|
2
|
-
pyproj
|
|
3
1
|
jenkspy
|
|
2
|
+
kneeliverse
|
|
3
|
+
loess
|
|
4
|
+
matplotlib
|
|
4
5
|
odfpy
|
|
5
6
|
openpyxl
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
pymannkendall
|
|
8
|
+
pynndescent
|
|
9
|
+
pyproj
|
|
10
|
+
scikit-learn
|
|
11
|
+
scipy
|
|
8
12
|
seaborn
|
|
9
|
-
loess
|
|
10
13
|
statsmodels
|
|
11
|
-
|
|
12
|
-
scikit-learn
|
|
13
|
-
pymannkendall
|
|
14
|
+
tkintermapview
|
|
14
15
|
umap-learn
|
|
15
|
-
|
|
16
|
+
xlrd
|
|
@@ -9,7 +9,7 @@ symbol_files = glob.glob("mapdata/symbols/16x16/*.xbm") + glob.glob("mapdata/sym
|
|
|
9
9
|
glob.glob("mapdata/symbols/24x24/*.xbm") + glob.glob("mapdata/symbols/28x28/*.xbm")
|
|
10
10
|
|
|
11
11
|
setuptools.setup(name='mapdata',
|
|
12
|
-
version='3.
|
|
12
|
+
version='3.22.0',
|
|
13
13
|
description="An interactive map and table explorer for geographic coordinates in a spreadsheet, CSV file, or database that includes data plotting and statistical summaries",
|
|
14
14
|
author='Dreas Nielsen',
|
|
15
15
|
author_email='cortice@tutanota.com',
|
|
@@ -18,7 +18,7 @@ setuptools.setup(name='mapdata',
|
|
|
18
18
|
scripts=['mapdata/mapdata.py'],
|
|
19
19
|
data_files=[('symbols', symbol_files), ('config', ['mapdata/configfile/mapdata.conf'])],
|
|
20
20
|
license='GPL',
|
|
21
|
-
install_requires=['tkintermapview', 'pyproj', 'jenkspy', 'odfpy', 'openpyxl', 'xlrd', 'matplotlib', 'seaborn', 'loess', 'statsmodels', 'scipy', 'scikit-learn', 'pymannkendall', 'umap-learn', 'pynndescent'],
|
|
21
|
+
install_requires=['tkintermapview', 'pyproj', 'jenkspy', 'odfpy', 'openpyxl', 'xlrd', 'matplotlib', 'seaborn', 'loess', 'statsmodels', 'scipy', 'scikit-learn', 'pymannkendall', 'umap-learn', 'pynndescent', 'kneeliverse'],
|
|
22
22
|
python_requires = '>=3.8',
|
|
23
23
|
classifiers=[
|
|
24
24
|
'Development Status :: 5 - Production/Stable',
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|