فهرست منبع

Initial commit

Huan 5 سال پیش
کامیت
d25ab68279
100فایلهای تغییر یافته به همراه26634 افزوده شده و 0 حذف شده
  1. 1060 0
      $Draw.html
  2. 629 0
      $Pic.html
  3. 5 0
      $Show_Des_Sheet.html
  4. 12621 0
      $Show_Sheet.html
  5. 2 0
      .idea/.gitignore
  6. 10 0
      .idea/CoTan.iml
  7. 7 0
      .idea/inspectionProfiles/profiles_settings.xml
  8. 7 0
      .idea/misc.xml
  9. 8 0
      .idea/modules.xml
  10. 218 0
      CGB/TK.py
  11. 59 0
      CGB/TK_DoneHS.py
  12. 192 0
      CGB/TK_HS.py
  13. 624 0
      CGB/Write.py
  14. BIN
      CGB/ZKST.ttf
  15. 2 0
      CGB/__init__.py
  16. 558 0
      DSGC/Algebra.py
  17. 1798 0
      DSGC/Algebra_Systemctl.py
  18. 2 0
      DSGC/__init__.py
  19. BIN
      Font/BT.ttf
  20. BIN
      Font/PT.otf
  21. BIN
      Font/ZKST.ttf
  22. 570 0
      HSCH/Func_Matlib.py
  23. 890 0
      HSCH/Func_advanced.py
  24. 1718 0
      HSCH/HS.py
  25. 3 0
      HSCH/__init__.py
  26. 119 0
      Hello.py
  27. 1806 0
      ImageMagick/ChangeLog.txt
  28. BIN
      ImageMagick/ImageMagick.ico
  29. 166 0
      ImageMagick/ImageMagick.rdf
  30. 103 0
      ImageMagick/License.txt
  31. 1324 0
      ImageMagick/NOTICE.txt
  32. 136 0
      ImageMagick/QuickStart.txt
  33. 140 0
      ImageMagick/README.txt
  34. 28 0
      ImageMagick/colors.xml
  35. 18 0
      ImageMagick/configure.xml
  36. BIN
      ImageMagick/dcraw.exe
  37. 102 0
      ImageMagick/delegates.xml
  38. 1709 0
      ImageMagick/english.xml
  39. BIN
      ImageMagick/ffmpeg.exe
  40. BIN
      ImageMagick/hp2xx.exe
  41. BIN
      ImageMagick/images/affine.png
  42. BIN
      ImageMagick/images/annotate.png
  43. BIN
      ImageMagick/images/arc.png
  44. BIN
      ImageMagick/images/atop.gif
  45. BIN
      ImageMagick/images/background.jpg
  46. BIN
      ImageMagick/images/black.png
  47. BIN
      ImageMagick/images/bluebells_clipped.jpg
  48. BIN
      ImageMagick/images/bluebells_darker.jpg
  49. BIN
      ImageMagick/images/bluebells_lin.jpg
  50. BIN
      ImageMagick/images/bluebells_log.jpg
  51. BIN
      ImageMagick/images/button.gif
  52. BIN
      ImageMagick/images/configure.jpg
  53. BIN
      ImageMagick/images/cylinder_shaded.png
  54. BIN
      ImageMagick/images/difference.png
  55. BIN
      ImageMagick/images/examples.jpg
  56. BIN
      ImageMagick/images/frame.jpg
  57. BIN
      ImageMagick/images/fuzzy-magick.png
  58. BIN
      ImageMagick/images/gaussian-blur.png
  59. BIN
      ImageMagick/images/granite.png
  60. BIN
      ImageMagick/images/imade_art2.jpg
  61. BIN
      ImageMagick/images/label.gif
  62. BIN
      ImageMagick/images/litecoin.png
  63. BIN
      ImageMagick/images/logo-sm-flop.png
  64. BIN
      ImageMagick/images/logo-sm-fx.png
  65. BIN
      ImageMagick/images/logo-sm.png
  66. BIN
      ImageMagick/images/logo.jpg
  67. BIN
      ImageMagick/images/logo.png
  68. BIN
      ImageMagick/images/montage.jpg
  69. BIN
      ImageMagick/images/mountains-clahe.jpg
  70. BIN
      ImageMagick/images/mountains-equalize.jpg
  71. BIN
      ImageMagick/images/mountains.jpg
  72. BIN
      ImageMagick/images/navy.png
  73. BIN
      ImageMagick/images/objects.gif
  74. BIN
      ImageMagick/images/objects.jpg
  75. BIN
      ImageMagick/images/objects.png
  76. BIN
      ImageMagick/images/over.gif
  77. BIN
      ImageMagick/images/patterns/bricks.png
  78. BIN
      ImageMagick/images/patterns/checkerboard.png
  79. BIN
      ImageMagick/images/patterns/circles.png
  80. BIN
      ImageMagick/images/patterns/crosshatch.png
  81. BIN
      ImageMagick/images/patterns/crosshatch30.png
  82. BIN
      ImageMagick/images/patterns/crosshatch45.png
  83. BIN
      ImageMagick/images/patterns/fishscales.png
  84. BIN
      ImageMagick/images/patterns/gray0.png
  85. BIN
      ImageMagick/images/patterns/gray10.png
  86. BIN
      ImageMagick/images/patterns/gray100.png
  87. BIN
      ImageMagick/images/patterns/gray15.png
  88. BIN
      ImageMagick/images/patterns/gray20.png
  89. BIN
      ImageMagick/images/patterns/gray25.png
  90. BIN
      ImageMagick/images/patterns/gray30.png
  91. BIN
      ImageMagick/images/patterns/gray35.png
  92. BIN
      ImageMagick/images/patterns/gray40.png
  93. BIN
      ImageMagick/images/patterns/gray45.png
  94. BIN
      ImageMagick/images/patterns/gray5.png
  95. BIN
      ImageMagick/images/patterns/gray50.png
  96. BIN
      ImageMagick/images/patterns/gray55.png
  97. BIN
      ImageMagick/images/patterns/gray60.png
  98. BIN
      ImageMagick/images/patterns/gray65.png
  99. BIN
      ImageMagick/images/patterns/gray70.png
  100. BIN
      ImageMagick/images/patterns/gray75.png

+ 1060 - 0
$Draw.html

@@ -0,0 +1,1060 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title>CoTan_机器学习</title>
+            <script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts.min.js"></script>
+        <script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts-gl.min.js"></script>
+
+    
+</head>
+<body>
+        <style>
+        .tab {
+            overflow: hidden;
+            border: 1px solid #ccc;
+            background-color: #f1f1f1;
+        }
+
+        .tab button {
+            background-color: inherit;
+            float: left;
+            border: none;
+            outline: none;
+            cursor: pointer;
+            padding: 12px 16px;
+            transition: 0.3s;
+        }
+
+        .tab button:hover {
+            background-color: #ddd;
+        }
+
+        .tab button.active {
+            background-color: #ccc;
+        }
+
+        .chart-container {
+            display: none;
+            padding: 6px 12px;
+            border-top: none;
+        }
+    </style>
+    <div class="tab">
+            <button class="tablinks" onclick="showChart(event, '939df2b155574435aca50ccc4ada912c')">Sheet[0]柱状图[0]:Sheet[0]柱状图</button>
+            <button class="tablinks" onclick="showChart(event, 'c9b3bed3832a4cc192aa7873a5e51254')">Sheet[0]饼图[1]:Sheet[0]饼图</button>
+            <button class="tablinks" onclick="showChart(event, 'f19ec415627141289ec78da3ee9442fd')">Sheet[0]3D散点图[2]:Sheet[0]3D散点图</button>
+    </div>
+
+    <div class="box">
+                <div id="939df2b155574435aca50ccc4ada912c" class="chart-container" style="width:900px; height:500px;"></div>
+    <script>
+        var chart_939df2b155574435aca50ccc4ada912c = echarts.init(
+            document.getElementById('939df2b155574435aca50ccc4ada912c'), 'white', {renderer: 'canvas'});
+        var option_939df2b155574435aca50ccc4ada912c = {
+    "animation": true,
+    "animationThreshold": 2000,
+    "animationDuration": 1000,
+    "animationEasing": "cubicOut",
+    "animationDelay": 0,
+    "animationDurationUpdate": 300,
+    "animationEasingUpdate": "cubicOut",
+    "animationDelayUpdate": 0,
+    "color": [
+        "#c23531",
+        "#2f4554",
+        "#61a0a8",
+        "#d48265",
+        "#749f83",
+        "#ca8622",
+        "#bda29a",
+        "#6e7074",
+        "#546570",
+        "#c4ccd3",
+        "#f05b72",
+        "#ef5b9c",
+        "#f47920",
+        "#905a3d",
+        "#fab27b",
+        "#2a5caa",
+        "#444693",
+        "#726930",
+        "#b2d235",
+        "#6d8346",
+        "#ac6767",
+        "#1d953f",
+        "#6950a1",
+        "#918597"
+    ],
+    "series": [
+        {
+            "type": "bar",
+            "name": "2",
+            "data": [
+                3,
+                4,
+                5,
+                6,
+                7,
+                8,
+                9,
+                10,
+                11,
+                12
+            ],
+            "barCategoryGap": "20%",
+            "label": {
+                "show": false,
+                "position": "top",
+                "margin": 8
+            },
+            "rippleEffect": {
+                "show": true,
+                "brushType": "stroke",
+                "scale": 2.5,
+                "period": 4
+            }
+        },
+        {
+            "type": "bar",
+            "name": "3",
+            "data": [
+                4,
+                5,
+                6,
+                7,
+                8,
+                9,
+                10,
+                11,
+                12,
+                13
+            ],
+            "barCategoryGap": "20%",
+            "label": {
+                "show": false,
+                "position": "top",
+                "margin": 8
+            },
+            "rippleEffect": {
+                "show": true,
+                "brushType": "stroke",
+                "scale": 2.5,
+                "period": 4
+            }
+        },
+        {
+            "type": "bar",
+            "name": "4",
+            "data": [
+                5,
+                6,
+                7,
+                8,
+                9,
+                10,
+                11,
+                12,
+                13,
+                14
+            ],
+            "barCategoryGap": "20%",
+            "label": {
+                "show": false,
+                "position": "top",
+                "margin": 8
+            },
+            "rippleEffect": {
+                "show": true,
+                "brushType": "stroke",
+                "scale": 2.5,
+                "period": 4
+            }
+        },
+        {
+            "type": "bar",
+            "name": "5",
+            "data": [
+                6,
+                7,
+                8,
+                9,
+                10,
+                11,
+                12,
+                13,
+                14,
+                15
+            ],
+            "barCategoryGap": "20%",
+            "label": {
+                "show": false,
+                "position": "top",
+                "margin": 8
+            },
+            "rippleEffect": {
+                "show": true,
+                "brushType": "stroke",
+                "scale": 2.5,
+                "period": 4
+            }
+        },
+        {
+            "type": "bar",
+            "name": "6",
+            "data": [
+                7,
+                8,
+                9,
+                10,
+                11,
+                12,
+                13,
+                14,
+                15,
+                16
+            ],
+            "barCategoryGap": "20%",
+            "label": {
+                "show": false,
+                "position": "top",
+                "margin": 8
+            },
+            "rippleEffect": {
+                "show": true,
+                "brushType": "stroke",
+                "scale": 2.5,
+                "period": 4
+            }
+        }
+    ],
+    "legend": [
+        {
+            "data": [
+                "2",
+                "3",
+                "4",
+                "5",
+                "6"
+            ],
+            "selected": {
+                "2": true,
+                "3": true,
+                "4": true,
+                "5": true,
+                "6": true
+            },
+            "type": "scroll",
+            "show": true,
+            "bottom": "2%",
+            "orient": "horizontal",
+            "padding": 5,
+            "itemGap": 10,
+            "itemWidth": 25,
+            "itemHeight": 14
+        }
+    ],
+    "tooltip": {
+        "show": true,
+        "trigger": "item",
+        "triggerOn": "mousemove|click",
+        "axisPointer": {
+            "type": "line"
+        },
+        "textStyle": {
+            "fontSize": 14
+        },
+        "borderWidth": 0
+    },
+    "xAxis": [
+        {
+            "show": true,
+            "scale": false,
+            "nameLocation": "end",
+            "nameGap": 15,
+            "gridIndex": 0,
+            "axisLine": {
+                "show": true,
+                "onZero": false,
+                "onZeroAxisIndex": 0
+            },
+            "axisTick": {
+                "show": true,
+                "alignWithLabel": false,
+                "inside": false
+            },
+            "inverse": false,
+            "offset": 0,
+            "splitNumber": 5,
+            "minInterval": 0,
+            "splitLine": {
+                "show": false,
+                "lineStyle": {
+                    "width": 1,
+                    "opacity": 1,
+                    "curveness": 0,
+                    "type": "solid"
+                }
+            },
+            "data": [
+                2,
+                3,
+                4,
+                5,
+                6,
+                7,
+                8,
+                9,
+                10,
+                11
+            ]
+        }
+    ],
+    "yAxis": [
+        {
+            "show": true,
+            "scale": false,
+            "nameLocation": "end",
+            "nameGap": 15,
+            "gridIndex": 0,
+            "axisLine": {
+                "show": true,
+                "onZero": false,
+                "onZeroAxisIndex": 0
+            },
+            "axisTick": {
+                "show": true,
+                "alignWithLabel": false,
+                "inside": false
+            },
+            "inverse": false,
+            "offset": 0,
+            "splitNumber": 5,
+            "minInterval": 0,
+            "splitLine": {
+                "show": false,
+                "lineStyle": {
+                    "width": 1,
+                    "opacity": 1,
+                    "curveness": 0,
+                    "type": "solid"
+                }
+            }
+        }
+    ],
+    "title": [
+        {
+            "text": "Sheet[0]\u67f1\u72b6\u56fe",
+            "subtext": "CoTan~\u673a\u5668\u5b66\u4e60:",
+            "padding": 5,
+            "itemGap": 10
+        }
+    ],
+    "toolbox": {
+        "show": true,
+        "orient": "horizontal",
+        "itemSize": 15,
+        "itemGap": 10,
+        "left": "80%",
+        "feature": {
+            "saveAsImage": {
+                "show": true,
+                "title": "save as image",
+                "type": "png"
+            },
+            "restore": {
+                "show": true,
+                "title": "restore"
+            },
+            "dataView": {
+                "show": true,
+                "title": "data view",
+                "readOnly": false
+            },
+            "dataZoom": {
+                "show": true,
+                "title": {
+                    "zoom": "data zoom",
+                    "back": "data zoom restore"
+                }
+            }
+        }
+    },
+    "visualMap": {
+        "show": true,
+        "type": "continuous",
+        "min": 3,
+        "max": 16,
+        "inRange": {
+            "color": [
+                "#50a3ba",
+                "#eac763",
+                "#d94e5d"
+            ]
+        },
+        "calculable": true,
+        "inverse": false,
+        "splitNumber": 5,
+        "orient": "vertical",
+        "showLabel": true,
+        "itemWidth": 20,
+        "itemHeight": 140,
+        "borderWidth": 0
+    }
+};
+        chart_939df2b155574435aca50ccc4ada912c.setOption(option_939df2b155574435aca50ccc4ada912c);
+    </script>
+                <div id="c9b3bed3832a4cc192aa7873a5e51254" class="chart-container" style="width:900px; height:500px;"></div>
+    <script>
+        var chart_c9b3bed3832a4cc192aa7873a5e51254 = echarts.init(
+            document.getElementById('c9b3bed3832a4cc192aa7873a5e51254'), 'white', {renderer: 'canvas'});
+        var option_c9b3bed3832a4cc192aa7873a5e51254 = {
+    "animation": true,
+    "animationThreshold": 2000,
+    "animationDuration": 1000,
+    "animationEasing": "cubicOut",
+    "animationDelay": 0,
+    "animationDurationUpdate": 300,
+    "animationEasingUpdate": "cubicOut",
+    "animationDelayUpdate": 0,
+    "color": [
+        "#c23531",
+        "#2f4554",
+        "#61a0a8",
+        "#d48265",
+        "#749f83",
+        "#ca8622",
+        "#bda29a",
+        "#6e7074",
+        "#546570",
+        "#c4ccd3",
+        "#f05b72",
+        "#ef5b9c",
+        "#f47920",
+        "#905a3d",
+        "#fab27b",
+        "#2a5caa",
+        "#444693",
+        "#726930",
+        "#b2d235",
+        "#6d8346",
+        "#ac6767",
+        "#1d953f",
+        "#6950a1",
+        "#918597"
+    ],
+    "series": [
+        {
+            "type": "pie",
+            "name": "Sheet[0]",
+            "clockwise": true,
+            "data": [
+                {
+                    "name": "2",
+                    "value": 3.0
+                },
+                {
+                    "name": "3",
+                    "value": 4.0
+                },
+                {
+                    "name": "4",
+                    "value": 5.0
+                },
+                {
+                    "name": "5",
+                    "value": 6.0
+                },
+                {
+                    "name": "6",
+                    "value": 7.0
+                },
+                {
+                    "name": "7",
+                    "value": 8.0
+                },
+                {
+                    "name": "8",
+                    "value": 9.0
+                },
+                {
+                    "name": "9",
+                    "value": 10.0
+                },
+                {
+                    "name": "10",
+                    "value": 11.0
+                },
+                {
+                    "name": "11",
+                    "value": 12.0
+                }
+            ],
+            "radius": [
+                "0%",
+                "75%"
+            ],
+            "center": [
+                "50%",
+                "50%"
+            ],
+            "label": {
+                "show": true,
+                "position": "top",
+                "margin": 8,
+                "formatter": "{b}: {c}"
+            },
+            "rippleEffect": {
+                "show": true,
+                "brushType": "stroke",
+                "scale": 2.5,
+                "period": 4
+            }
+        }
+    ],
+    "legend": [
+        {
+            "data": [
+                "2",
+                "3",
+                "4",
+                "5",
+                "6",
+                "7",
+                "8",
+                "9",
+                "10",
+                "11"
+            ],
+            "selected": {},
+            "type": "scroll",
+            "show": true,
+            "bottom": "2%",
+            "orient": "horizontal",
+            "padding": 5,
+            "itemGap": 10,
+            "itemWidth": 25,
+            "itemHeight": 14
+        }
+    ],
+    "tooltip": {
+        "show": true,
+        "trigger": "item",
+        "triggerOn": "mousemove|click",
+        "axisPointer": {
+            "type": "line"
+        },
+        "textStyle": {
+            "fontSize": 14
+        },
+        "borderWidth": 0
+    },
+    "title": [
+        {
+            "text": "Sheet[0]\u997c\u56fe",
+            "subtext": "CoTan~\u673a\u5668\u5b66\u4e60:",
+            "padding": 5,
+            "itemGap": 10
+        }
+    ],
+    "toolbox": {
+        "show": true,
+        "orient": "horizontal",
+        "itemSize": 15,
+        "itemGap": 10,
+        "left": "80%",
+        "feature": {
+            "saveAsImage": {
+                "show": true,
+                "title": "save as image",
+                "type": "png"
+            },
+            "restore": {
+                "show": true,
+                "title": "restore"
+            },
+            "dataView": {
+                "show": true,
+                "title": "data view",
+                "readOnly": false
+            },
+            "dataZoom": {
+                "show": true,
+                "title": {
+                    "zoom": "data zoom",
+                    "back": "data zoom restore"
+                }
+            }
+        }
+    }
+};
+        chart_c9b3bed3832a4cc192aa7873a5e51254.setOption(option_c9b3bed3832a4cc192aa7873a5e51254);
+    </script>
+                <div id="f19ec415627141289ec78da3ee9442fd" class="chart-container" style="width:900px; height:500px;"></div>
+    <script>
+        var chart_f19ec415627141289ec78da3ee9442fd = echarts.init(
+            document.getElementById('f19ec415627141289ec78da3ee9442fd'), 'white', {renderer: 'canvas'});
+        var option_f19ec415627141289ec78da3ee9442fd = {
+    "animation": true,
+    "animationThreshold": 2000,
+    "animationDuration": 1000,
+    "animationEasing": "cubicOut",
+    "animationDelay": 0,
+    "animationDurationUpdate": 300,
+    "animationEasingUpdate": "cubicOut",
+    "animationDelayUpdate": 0,
+    "color": [
+        "#c23531",
+        "#2f4554",
+        "#61a0a8",
+        "#d48265",
+        "#749f83",
+        "#ca8622",
+        "#bda29a",
+        "#6e7074",
+        "#546570",
+        "#c4ccd3",
+        "#f05b72",
+        "#ef5b9c",
+        "#f47920",
+        "#905a3d",
+        "#fab27b",
+        "#2a5caa",
+        "#444693",
+        "#726930",
+        "#b2d235",
+        "#6d8346",
+        "#ac6767",
+        "#1d953f",
+        "#6950a1",
+        "#918597"
+    ],
+    "series": [
+        {
+            "type": "scatter3D",
+            "name": "Sheet[0]",
+            "data": [
+                [
+                    0,
+                    0,
+                    3.0
+                ],
+                [
+                    0,
+                    1,
+                    4.0
+                ],
+                [
+                    0,
+                    2,
+                    5.0
+                ],
+                [
+                    0,
+                    3,
+                    6.0
+                ],
+                [
+                    0,
+                    4,
+                    7.0
+                ],
+                [
+                    0,
+                    5,
+                    8.0
+                ],
+                [
+                    0,
+                    6,
+                    9.0
+                ],
+                [
+                    0,
+                    7,
+                    10.0
+                ],
+                [
+                    0,
+                    8,
+                    11.0
+                ],
+                [
+                    0,
+                    9,
+                    12.0
+                ],
+                [
+                    1,
+                    0,
+                    4.0
+                ],
+                [
+                    1,
+                    1,
+                    5.0
+                ],
+                [
+                    1,
+                    2,
+                    6.0
+                ],
+                [
+                    1,
+                    3,
+                    7.0
+                ],
+                [
+                    1,
+                    4,
+                    8.0
+                ],
+                [
+                    1,
+                    5,
+                    9.0
+                ],
+                [
+                    1,
+                    6,
+                    10.0
+                ],
+                [
+                    1,
+                    7,
+                    11.0
+                ],
+                [
+                    1,
+                    8,
+                    12.0
+                ],
+                [
+                    1,
+                    9,
+                    13.0
+                ],
+                [
+                    2,
+                    0,
+                    5.0
+                ],
+                [
+                    2,
+                    1,
+                    6.0
+                ],
+                [
+                    2,
+                    2,
+                    7.0
+                ],
+                [
+                    2,
+                    3,
+                    8.0
+                ],
+                [
+                    2,
+                    4,
+                    9.0
+                ],
+                [
+                    2,
+                    5,
+                    10.0
+                ],
+                [
+                    2,
+                    6,
+                    11.0
+                ],
+                [
+                    2,
+                    7,
+                    12.0
+                ],
+                [
+                    2,
+                    8,
+                    13.0
+                ],
+                [
+                    2,
+                    9,
+                    14.0
+                ],
+                [
+                    3,
+                    0,
+                    6.0
+                ],
+                [
+                    3,
+                    1,
+                    7.0
+                ],
+                [
+                    3,
+                    2,
+                    8.0
+                ],
+                [
+                    3,
+                    3,
+                    9.0
+                ],
+                [
+                    3,
+                    4,
+                    10.0
+                ],
+                [
+                    3,
+                    5,
+                    11.0
+                ],
+                [
+                    3,
+                    6,
+                    12.0
+                ],
+                [
+                    3,
+                    7,
+                    13.0
+                ],
+                [
+                    3,
+                    8,
+                    14.0
+                ],
+                [
+                    3,
+                    9,
+                    15.0
+                ],
+                [
+                    4,
+                    0,
+                    7.0
+                ],
+                [
+                    4,
+                    1,
+                    8.0
+                ],
+                [
+                    4,
+                    2,
+                    9.0
+                ],
+                [
+                    4,
+                    3,
+                    10.0
+                ],
+                [
+                    4,
+                    4,
+                    11.0
+                ],
+                [
+                    4,
+                    5,
+                    12.0
+                ],
+                [
+                    4,
+                    6,
+                    13.0
+                ],
+                [
+                    4,
+                    7,
+                    14.0
+                ],
+                [
+                    4,
+                    8,
+                    15.0
+                ],
+                [
+                    4,
+                    9,
+                    16.0
+                ]
+            ],
+            "label": {
+                "show": false,
+                "position": "top",
+                "margin": 8
+            }
+        }
+    ],
+    "legend": [
+        {
+            "data": [
+                "Sheet[0]"
+            ],
+            "selected": {},
+            "type": "scroll",
+            "show": true,
+            "bottom": "2%",
+            "orient": "horizontal",
+            "padding": 5,
+            "itemGap": 10,
+            "itemWidth": 25,
+            "itemHeight": 14
+        }
+    ],
+    "tooltip": {
+        "show": true,
+        "trigger": "item",
+        "triggerOn": "mousemove|click",
+        "axisPointer": {
+            "type": "line"
+        },
+        "textStyle": {
+            "fontSize": 14
+        },
+        "borderWidth": 0
+    },
+    "visualMap": {
+        "show": true,
+        "type": "continuous",
+        "min": 2,
+        "max": 11,
+        "inRange": {
+            "color": [
+                "#50a3ba",
+                "#eac763",
+                "#d94e5d"
+            ]
+        },
+        "calculable": true,
+        "inverse": false,
+        "splitNumber": 5,
+        "orient": "vertical",
+        "showLabel": true,
+        "itemWidth": 20,
+        "itemHeight": 140,
+        "borderWidth": 0
+    },
+    "xAxis3D": {
+        "data": [
+            "2",
+            "3",
+            "4",
+            "5",
+            "6"
+        ],
+        "nameGap": 20,
+        "axisLabel": {
+            "margin": 8
+        }
+    },
+    "yAxis3D": {
+        "data": [
+            2,
+            3,
+            4,
+            5,
+            6,
+            7,
+            8,
+            9,
+            10,
+            11
+        ],
+        "nameGap": 20,
+        "axisLabel": {
+            "margin": 8
+        }
+    },
+    "zAxis3D": {
+        "nameGap": 20,
+        "axisLabel": {
+            "margin": 8
+        }
+    },
+    "grid3D": {
+        "boxWidth": 200,
+        "boxHeight": 100,
+        "boxDepth": 80,
+        "viewControl": {
+            "autoRotate": false,
+            "autoRotateSpeed": 10,
+            "rotateSensitivity": 1
+        }
+    },
+    "title": [
+        {
+            "text": "Sheet[0]3D\u6563\u70b9\u56fe",
+            "subtext": "CoTan~\u673a\u5668\u5b66\u4e60:",
+            "padding": 5,
+            "itemGap": 10
+        }
+    ],
+    "toolbox": {
+        "show": true,
+        "orient": "horizontal",
+        "itemSize": 15,
+        "itemGap": 10,
+        "left": "80%",
+        "feature": {
+            "saveAsImage": {
+                "show": true,
+                "title": "save as image",
+                "type": "png"
+            },
+            "restore": {
+                "show": true,
+                "title": "restore"
+            },
+            "dataView": {
+                "show": true,
+                "title": "data view",
+                "readOnly": false
+            },
+            "dataZoom": {
+                "show": true,
+                "title": {
+                    "zoom": "data zoom",
+                    "back": "data zoom restore"
+                }
+            }
+        }
+    }
+};
+        chart_f19ec415627141289ec78da3ee9442fd.setOption(option_f19ec415627141289ec78da3ee9442fd);
+    </script>
+    </div>
+
+    <script>
+    </script>
+    <script>
+        (function() {
+            containers = document.getElementsByClassName("chart-container");
+            if(containers.length > 0) {
+                containers[0].style.display = "block";
+            }
+        })()
+
+        function showChart(evt, chartID) {
+            let containers = document.getElementsByClassName("chart-container");
+            for (let i = 0; i < containers.length; i++) {
+                containers[i].style.display = "none";
+            }
+
+            let tablinks = document.getElementsByClassName("tablinks");
+            for (let i = 0; i < tablinks.length; i++) {
+                tablinks[i].className = "tablinks";
+            }
+
+            document.getElementById(chartID).style.display = "block";
+            evt.currentTarget.className += " active";
+        }
+    </script>
+</body>
+</html>

+ 629 - 0
$Pic.html

@@ -0,0 +1,629 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title>Awesome-pyecharts</title>
+            <script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts.min.js"></script>
+        <script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts-gl.min.js"></script>
+
+</head>
+<body>
+    <div id="e952332b7071422aab8071ffc0292b30" class="chart-container" style="width:900px; height:500px;"></div>
+    <script>
+        var chart_e952332b7071422aab8071ffc0292b30 = echarts.init(
+            document.getElementById('e952332b7071422aab8071ffc0292b30'), 'white', {renderer: 'canvas'});
+        var option_e952332b7071422aab8071ffc0292b30 = {
+    "animation": true,
+    "animationThreshold": 2000,
+    "animationDuration": 1000,
+    "animationEasing": "cubicOut",
+    "animationDelay": 0,
+    "animationDurationUpdate": 300,
+    "animationEasingUpdate": "cubicOut",
+    "animationDelayUpdate": 0,
+    "color": [
+        "#c23531",
+        "#2f4554",
+        "#61a0a8",
+        "#d48265",
+        "#749f83",
+        "#ca8622",
+        "#bda29a",
+        "#6e7074",
+        "#546570",
+        "#c4ccd3",
+        "#f05b72",
+        "#ef5b9c",
+        "#f47920",
+        "#905a3d",
+        "#fab27b",
+        "#2a5caa",
+        "#444693",
+        "#726930",
+        "#b2d235",
+        "#6d8346",
+        "#ac6767",
+        "#1d953f",
+        "#6950a1",
+        "#918597"
+    ],
+    "series": [
+        {
+            "type": "line3D",
+            "name": "Sheet[0]",
+            "data": [
+                [
+                    0,
+                    0,
+                    3.0
+                ],
+                [
+                    0,
+                    1,
+                    4.0
+                ],
+                [
+                    0,
+                    2,
+                    5.0
+                ],
+                [
+                    0,
+                    3,
+                    6.0
+                ],
+                [
+                    0,
+                    4,
+                    7.0
+                ],
+                [
+                    0,
+                    5,
+                    8.0
+                ],
+                [
+                    0,
+                    6,
+                    9.0
+                ],
+                [
+                    0,
+                    7,
+                    10.0
+                ],
+                [
+                    0,
+                    8,
+                    11.0
+                ],
+                [
+                    0,
+                    9,
+                    12.0
+                ],
+                [
+                    0,
+                    10,
+                    13.0
+                ],
+                [
+                    0,
+                    11,
+                    14.0
+                ],
+                [
+                    0,
+                    12,
+                    15.0
+                ],
+                [
+                    0,
+                    13,
+                    16.0
+                ],
+                [
+                    0,
+                    14,
+                    17.0
+                ],
+                [
+                    0,
+                    15,
+                    18.0
+                ],
+                [
+                    0,
+                    16,
+                    19.0
+                ],
+                [
+                    0,
+                    17,
+                    20.0
+                ],
+                [
+                    1,
+                    0,
+                    4.0
+                ],
+                [
+                    1,
+                    1,
+                    5.0
+                ],
+                [
+                    1,
+                    2,
+                    6.0
+                ],
+                [
+                    1,
+                    3,
+                    7.0
+                ],
+                [
+                    1,
+                    4,
+                    8.0
+                ],
+                [
+                    1,
+                    5,
+                    9.0
+                ],
+                [
+                    1,
+                    6,
+                    10.0
+                ],
+                [
+                    1,
+                    7,
+                    11.0
+                ],
+                [
+                    1,
+                    8,
+                    12.0
+                ],
+                [
+                    1,
+                    9,
+                    13.0
+                ],
+                [
+                    1,
+                    10,
+                    14.0
+                ],
+                [
+                    1,
+                    11,
+                    15.0
+                ],
+                [
+                    1,
+                    12,
+                    16.0
+                ],
+                [
+                    1,
+                    13,
+                    17.0
+                ],
+                [
+                    1,
+                    14,
+                    18.0
+                ],
+                [
+                    1,
+                    15,
+                    19.0
+                ],
+                [
+                    1,
+                    16,
+                    20.0
+                ],
+                [
+                    1,
+                    17,
+                    21.0
+                ],
+                [
+                    2,
+                    0,
+                    5.0
+                ],
+                [
+                    2,
+                    1,
+                    6.0
+                ],
+                [
+                    2,
+                    2,
+                    7.0
+                ],
+                [
+                    2,
+                    3,
+                    8.0
+                ],
+                [
+                    2,
+                    4,
+                    9.0
+                ],
+                [
+                    2,
+                    5,
+                    10.0
+                ],
+                [
+                    2,
+                    6,
+                    11.0
+                ],
+                [
+                    2,
+                    7,
+                    12.0
+                ],
+                [
+                    2,
+                    8,
+                    13.0
+                ],
+                [
+                    2,
+                    9,
+                    14.0
+                ],
+                [
+                    2,
+                    10,
+                    15.0
+                ],
+                [
+                    2,
+                    11,
+                    16.0
+                ],
+                [
+                    2,
+                    12,
+                    17.0
+                ],
+                [
+                    2,
+                    13,
+                    18.0
+                ],
+                [
+                    2,
+                    14,
+                    19.0
+                ],
+                [
+                    2,
+                    15,
+                    20.0
+                ],
+                [
+                    2,
+                    16,
+                    21.0
+                ],
+                [
+                    2,
+                    17,
+                    22.0
+                ],
+                [
+                    3,
+                    0,
+                    6.0
+                ],
+                [
+                    3,
+                    1,
+                    7.0
+                ],
+                [
+                    3,
+                    2,
+                    8.0
+                ],
+                [
+                    3,
+                    3,
+                    9.0
+                ],
+                [
+                    3,
+                    4,
+                    10.0
+                ],
+                [
+                    3,
+                    5,
+                    11.0
+                ],
+                [
+                    3,
+                    6,
+                    12.0
+                ],
+                [
+                    3,
+                    7,
+                    13.0
+                ],
+                [
+                    3,
+                    8,
+                    14.0
+                ],
+                [
+                    3,
+                    9,
+                    15.0
+                ],
+                [
+                    3,
+                    10,
+                    16.0
+                ],
+                [
+                    3,
+                    11,
+                    17.0
+                ],
+                [
+                    3,
+                    12,
+                    18.0
+                ],
+                [
+                    3,
+                    13,
+                    19.0
+                ],
+                [
+                    3,
+                    14,
+                    20.0
+                ],
+                [
+                    3,
+                    15,
+                    21.0
+                ],
+                [
+                    3,
+                    16,
+                    22.0
+                ],
+                [
+                    3,
+                    17,
+                    23.0
+                ],
+                [
+                    4,
+                    0,
+                    7.0
+                ],
+                [
+                    4,
+                    1,
+                    8.0
+                ],
+                [
+                    4,
+                    2,
+                    9.0
+                ],
+                [
+                    4,
+                    3,
+                    10.0
+                ],
+                [
+                    4,
+                    4,
+                    11.0
+                ],
+                [
+                    4,
+                    5,
+                    12.0
+                ],
+                [
+                    4,
+                    6,
+                    13.0
+                ],
+                [
+                    4,
+                    7,
+                    14.0
+                ],
+                [
+                    4,
+                    8,
+                    15.0
+                ],
+                [
+                    4,
+                    9,
+                    16.0
+                ],
+                [
+                    4,
+                    10,
+                    17.0
+                ],
+                [
+                    4,
+                    11,
+                    18.0
+                ],
+                [
+                    4,
+                    12,
+                    19.0
+                ],
+                [
+                    4,
+                    13,
+                    20.0
+                ],
+                [
+                    4,
+                    14,
+                    21.0
+                ],
+                [
+                    4,
+                    15,
+                    22.0
+                ],
+                [
+                    4,
+                    16,
+                    23.0
+                ],
+                [
+                    4,
+                    17,
+                    24.0
+                ]
+            ],
+            "label": {
+                "show": false,
+                "position": "top",
+                "margin": 8
+            }
+        }
+    ],
+    "legend": [
+        {
+            "data": [
+                "Sheet[0]"
+            ],
+            "selected": {},
+            "show": true,
+            "padding": 5,
+            "itemGap": 10,
+            "itemWidth": 25,
+            "itemHeight": 14
+        }
+    ],
+    "tooltip": {
+        "show": true,
+        "trigger": "item",
+        "triggerOn": "mousemove|click",
+        "axisPointer": {
+            "type": "line"
+        },
+        "textStyle": {
+            "fontSize": 14
+        },
+        "borderWidth": 0
+    },
+    "visualMap": {
+        "show": true,
+        "type": "continuous",
+        "min": 3.0,
+        "max": 24.0,
+        "inRange": {
+            "color": [
+                "#50a3ba",
+                "#eac763",
+                "#d94e5d"
+            ]
+        },
+        "calculable": true,
+        "inverse": false,
+        "splitNumber": 5,
+        "orient": "vertical",
+        "showLabel": true,
+        "itemWidth": 20,
+        "itemHeight": 140,
+        "borderWidth": 0
+    },
+    "xAxis3D": {
+        "data": [
+            "2",
+            "3",
+            "4",
+            "5",
+            "6"
+        ],
+        "nameGap": 20,
+        "type": "value",
+        "axisLabel": {
+            "margin": 8
+        }
+    },
+    "yAxis3D": {
+        "data": [
+            2,
+            3,
+            4,
+            5,
+            6,
+            7,
+            8,
+            9,
+            10,
+            11,
+            12,
+            13,
+            14,
+            15,
+            16,
+            17,
+            18,
+            19
+        ],
+        "nameGap": 20,
+        "type": "value",
+        "axisLabel": {
+            "margin": 8
+        }
+    },
+    "zAxis3D": {
+        "nameGap": 20,
+        "type": "value",
+        "axisLabel": {
+            "margin": 8
+        }
+    },
+    "grid3D": {
+        "boxWidth": 100,
+        "boxHeight": 100,
+        "boxDepth": 100,
+        "viewControl": {
+            "autoRotate": false,
+            "autoRotateSpeed": 10,
+            "rotateSensitivity": 1
+        }
+    },
+    "title": [
+        {
+            "text": "Sheet[0]3D\u6298\u7ebf\u56fe",
+            "subtext": "CoTan~\u673a\u5668\u5b66\u4e60",
+            "padding": 5,
+            "itemGap": 10
+        }
+    ]
+};
+        chart_e952332b7071422aab8071ffc0292b30.setOption(option_e952332b7071422aab8071ffc0292b30);
+    </script>
+</body>
+</html>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 5 - 0
$Show_Des_Sheet.html


+ 12621 - 0
$Show_Sheet.html

@@ -0,0 +1,12621 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title>CoTan:查看表格</title>
+    
+    
+</head>
+<body>
+        <style>
+        .tab {
+            overflow: hidden;
+            border: 1px solid #ccc;
+            background-color: #f1f1f1;
+        }
+
+        .tab button {
+            background-color: inherit;
+            float: left;
+            border: none;
+            outline: none;
+            cursor: pointer;
+            padding: 12px 16px;
+            transition: 0.3s;
+        }
+
+        .tab button:hover {
+            background-color: #ddd;
+        }
+
+        .tab button.active {
+            background-color: #ccc;
+        }
+
+        .chart-container {
+            display: none;
+            padding: 6px 12px;
+            border-top: none;
+        }
+    </style>
+    <div class="tab">
+            <button class="tablinks" onclick="showChart(event, '9594725291d94bc58651dbcb0f491ef0')">('表格:Sheet[0]',)</button>
+    </div>
+
+    <div class="box">
+                        <style>
+            .fl-table {
+                margin: 20px;
+                border-radius: 5px;
+                font-size: 12px;
+                border: none;
+                border-collapse: collapse;
+                max-width: 100%;
+                white-space: nowrap;
+                word-break: keep-all;
+            }
+
+            .fl-table th {
+                text-align: left;
+                font-size: 20px;
+            }
+
+            .fl-table tr {
+                display: table-row;
+                vertical-align: inherit;
+                border-color: inherit;
+            }
+
+            .fl-table tr:hover td {
+                background: #00d1b2;
+                color: #F8F8F8;
+            }
+
+            .fl-table td, .fl-table th {
+                border-style: none;
+                border-top: 1px solid #dbdbdb;
+                border-left: 1px solid #dbdbdb;
+                border-bottom: 3px solid #dbdbdb;
+                border-right: 1px solid #dbdbdb;
+                padding: .5em .55em;
+                font-size: 15px;
+            }
+
+            .fl-table td {
+                border-style: none;
+                font-size: 15px;
+                vertical-align: center;
+                border-bottom: 1px solid #dbdbdb;
+                border-left: 1px solid #dbdbdb;
+                border-right: 1px solid #dbdbdb;
+                height: 30px;
+            }
+
+            .fl-table tr:nth-child(even) {
+                background: #F8F8F8;
+            }
+        </style>
+        <div id="9594725291d94bc58651dbcb0f491ef0" class="chart-container" style="">
+            <p class="title" style="font-size: 18px; font-weight:bold;" > 表格:Sheet[0]</p>
+            <p class="subtitle" style="font-size: 12px;" > CoTan~机器学习:查看表格</p>
+            <table class="fl-table">
+    <tr>
+        <th>Sheet[0]</th>
+        <th>Survived</th>
+        <th>Pclass</th>
+        <th>Name</th>
+        <th>Sex</th>
+        <th>Age</th>
+        <th>SibSp</th>
+        <th>Parch</th>
+        <th>Ticket</th>
+        <th>Fare</th>
+        <th>Cabin</th>
+        <th>Embarked</th>
+    </tr>
+    <tr>
+        <td>1</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Braund, Mr. Owen Harris</td>
+        <td>male</td>
+        <td>22.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>A/5 21171</td>
+        <td>7.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>2</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Cumings, Mrs. John Bradley (Florence Briggs Thayer)</td>
+        <td>female</td>
+        <td>38.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>PC 17599</td>
+        <td>71.2833</td>
+        <td>C85</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>3</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Heikkinen, Miss. Laina</td>
+        <td>female</td>
+        <td>26.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>STON/O2. 3101282</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>4</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>
+        <td>female</td>
+        <td>35.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>113803</td>
+        <td>53.1</td>
+        <td>C123</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>5</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Allen, Mr. William Henry</td>
+        <td>male</td>
+        <td>35.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>373450</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>6</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Moran, Mr. James</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>330877</td>
+        <td>8.4583</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>7</td>
+        <td>0</td>
+        <td>1</td>
+        <td>McCarthy, Mr. Timothy J</td>
+        <td>male</td>
+        <td>54.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>17463</td>
+        <td>51.8625</td>
+        <td>E46</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>8</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Palsson, Master. Gosta Leonard</td>
+        <td>male</td>
+        <td>2.0</td>
+        <td>3</td>
+        <td>1</td>
+        <td>349909</td>
+        <td>21.075</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>9</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)</td>
+        <td>female</td>
+        <td>27.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>347742</td>
+        <td>11.1333</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>10</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Nasser, Mrs. Nicholas (Adele Achem)</td>
+        <td>female</td>
+        <td>14.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>237736</td>
+        <td>30.0708</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>11</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Sandstrom, Miss. Marguerite Rut</td>
+        <td>female</td>
+        <td>4.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>PP 9549</td>
+        <td>16.7</td>
+        <td>G6</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>12</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Bonnell, Miss. Elizabeth</td>
+        <td>female</td>
+        <td>58.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113783</td>
+        <td>26.55</td>
+        <td>C103</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>13</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Saundercock, Mr. William Henry</td>
+        <td>male</td>
+        <td>20.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/5. 2151</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>14</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Andersson, Mr. Anders Johan</td>
+        <td>male</td>
+        <td>39.0</td>
+        <td>1</td>
+        <td>5</td>
+        <td>347082</td>
+        <td>31.275</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>15</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Vestrom, Miss. Hulda Amanda Adolfina</td>
+        <td>female</td>
+        <td>14.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>350406</td>
+        <td>7.8542</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>16</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Hewlett, Mrs. (Mary D Kingcome) </td>
+        <td>female</td>
+        <td>55.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>248706</td>
+        <td>16.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>17</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Rice, Master. Eugene</td>
+        <td>male</td>
+        <td>2.0</td>
+        <td>4</td>
+        <td>1</td>
+        <td>382652</td>
+        <td>29.125</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>18</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Williams, Mr. Charles Eugene</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>244373</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>19</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Vander Planke, Mrs. Julius (Emelia Maria Vandemoortele)</td>
+        <td>female</td>
+        <td>31.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>345763</td>
+        <td>18.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>20</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Masselmani, Mrs. Fatima</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2649</td>
+        <td>7.225</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>21</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Fynney, Mr. Joseph J</td>
+        <td>male</td>
+        <td>35.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>239865</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>22</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Beesley, Mr. Lawrence</td>
+        <td>male</td>
+        <td>34.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>248698</td>
+        <td>13.0</td>
+        <td>D56</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>23</td>
+        <td>1</td>
+        <td>3</td>
+        <td>McGowan, Miss. Anna &quot;Annie&quot;</td>
+        <td>female</td>
+        <td>15.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>330923</td>
+        <td>8.0292</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>24</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Sloper, Mr. William Thompson</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113788</td>
+        <td>35.5</td>
+        <td>A6</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>25</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Palsson, Miss. Torborg Danira</td>
+        <td>female</td>
+        <td>8.0</td>
+        <td>3</td>
+        <td>1</td>
+        <td>349909</td>
+        <td>21.075</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>26</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Asplund, Mrs. Carl Oscar (Selma Augusta Emilia Johansson)</td>
+        <td>female</td>
+        <td>38.0</td>
+        <td>1</td>
+        <td>5</td>
+        <td>347077</td>
+        <td>31.3875</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>27</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Emir, Mr. Farred Chehab</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2631</td>
+        <td>7.225</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>28</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Fortune, Mr. Charles Alexander</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>3</td>
+        <td>2</td>
+        <td>19950</td>
+        <td>263.0</td>
+        <td>C23 C25 C27</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>29</td>
+        <td>1</td>
+        <td>3</td>
+        <td>O&#x27;Dwyer, Miss. Ellen &quot;Nellie&quot;</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>330959</td>
+        <td>7.8792</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>30</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Todoroff, Mr. Lalio</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349216</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>31</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Uruchurtu, Don. Manuel E</td>
+        <td>male</td>
+        <td>40.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17601</td>
+        <td>27.7208</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>32</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Spencer, Mrs. William Augustus (Marie Eugenie)</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>PC 17569</td>
+        <td>146.5208</td>
+        <td>B78</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>33</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Glynn, Miss. Mary Agatha</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>335677</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>34</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Wheadon, Mr. Edward H</td>
+        <td>male</td>
+        <td>66.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C.A. 24579</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>35</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Meyer, Mr. Edgar Joseph</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>PC 17604</td>
+        <td>82.1708</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>36</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Holverson, Mr. Alexander Oskar</td>
+        <td>male</td>
+        <td>42.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>113789</td>
+        <td>52.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>37</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Mamee, Mr. Hanna</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2677</td>
+        <td>7.2292</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>38</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Cann, Mr. Ernest Charles</td>
+        <td>male</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A./5. 2152</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>39</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Vander Planke, Miss. Augusta Maria</td>
+        <td>female</td>
+        <td>18.0</td>
+        <td>2</td>
+        <td>0</td>
+        <td>345764</td>
+        <td>18.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>40</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Nicola-Yarred, Miss. Jamila</td>
+        <td>female</td>
+        <td>14.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>2651</td>
+        <td>11.2417</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>41</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Ahlin, Mrs. Johan (Johanna Persdotter Larsson)</td>
+        <td>female</td>
+        <td>40.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>7546</td>
+        <td>9.475</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>42</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Turpin, Mrs. William John Robert (Dorothy Ann Wonnacott)</td>
+        <td>female</td>
+        <td>27.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>11668</td>
+        <td>21.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>43</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Kraeff, Mr. Theodor</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349253</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>44</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Laroche, Miss. Simonne Marie Anne Andree</td>
+        <td>female</td>
+        <td>3.0</td>
+        <td>1</td>
+        <td>2</td>
+        <td>SC/Paris 2123</td>
+        <td>41.5792</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>45</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Devaney, Miss. Margaret Delia</td>
+        <td>female</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>330958</td>
+        <td>7.8792</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>46</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Rogers, Mr. William John</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>S.C./A.4. 23567</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>47</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Lennon, Mr. Denis</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>370371</td>
+        <td>15.5</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>48</td>
+        <td>1</td>
+        <td>3</td>
+        <td>O&#x27;Driscoll, Miss. Bridget</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>14311</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>49</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Samaan, Mr. Youssef</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>2</td>
+        <td>0</td>
+        <td>2662</td>
+        <td>21.6792</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>50</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Arnold-Franchi, Mrs. Josef (Josefine Franchi)</td>
+        <td>female</td>
+        <td>18.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>349237</td>
+        <td>17.8</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>51</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Panula, Master. Juha Niilo</td>
+        <td>male</td>
+        <td>7.0</td>
+        <td>4</td>
+        <td>1</td>
+        <td>3101295</td>
+        <td>39.6875</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>52</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Nosworthy, Mr. Richard Cater</td>
+        <td>male</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/4. 39886</td>
+        <td>7.8</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>53</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Harper, Mrs. Henry Sleeper (Myna Haxtun)</td>
+        <td>female</td>
+        <td>49.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>PC 17572</td>
+        <td>76.7292</td>
+        <td>D33</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>54</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Faunthorpe, Mrs. Lizzie (Elizabeth Anne Wilkinson)</td>
+        <td>female</td>
+        <td>29.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>2926</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>55</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Ostby, Mr. Engelhart Cornelius</td>
+        <td>male</td>
+        <td>65.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>113509</td>
+        <td>61.9792</td>
+        <td>B30</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>56</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Woolner, Mr. Hugh</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>19947</td>
+        <td>35.5</td>
+        <td>C52</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>57</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Rugg, Miss. Emily</td>
+        <td>female</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C.A. 31026</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>58</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Novel, Mr. Mansouer</td>
+        <td>male</td>
+        <td>28.5</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2697</td>
+        <td>7.2292</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>59</td>
+        <td>1</td>
+        <td>2</td>
+        <td>West, Miss. Constance Mirium</td>
+        <td>female</td>
+        <td>5.0</td>
+        <td>1</td>
+        <td>2</td>
+        <td>C.A. 34651</td>
+        <td>27.75</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>60</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Goodwin, Master. William Frederick</td>
+        <td>male</td>
+        <td>11.0</td>
+        <td>5</td>
+        <td>2</td>
+        <td>CA 2144</td>
+        <td>46.9</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>61</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Sirayanian, Mr. Orsen</td>
+        <td>male</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2669</td>
+        <td>7.2292</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>62</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Icard, Miss. Amelie</td>
+        <td>female</td>
+        <td>38.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113572</td>
+        <td>80.0</td>
+        <td>B28</td>
+        <td>nan</td>
+    </tr>
+    <tr>
+        <td>63</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Harris, Mr. Henry Birkhardt</td>
+        <td>male</td>
+        <td>45.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>36973</td>
+        <td>83.475</td>
+        <td>C83</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>64</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Skoog, Master. Harald</td>
+        <td>male</td>
+        <td>4.0</td>
+        <td>3</td>
+        <td>2</td>
+        <td>347088</td>
+        <td>27.9</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>65</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Stewart, Mr. Albert A</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17605</td>
+        <td>27.7208</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>66</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Moubarek, Master. Gerios</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>1</td>
+        <td>2661</td>
+        <td>15.2458</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>67</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Nye, Mrs. (Elizabeth Ramell)</td>
+        <td>female</td>
+        <td>29.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C.A. 29395</td>
+        <td>10.5</td>
+        <td>F33</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>68</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Crease, Mr. Ernest James</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>S.P. 3464</td>
+        <td>8.1583</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>69</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Andersson, Miss. Erna Alexandra</td>
+        <td>female</td>
+        <td>17.0</td>
+        <td>4</td>
+        <td>2</td>
+        <td>3101281</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>70</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Kink, Mr. Vincenz</td>
+        <td>male</td>
+        <td>26.0</td>
+        <td>2</td>
+        <td>0</td>
+        <td>315151</td>
+        <td>8.6625</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>71</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Jenkin, Mr. Stephen Curnow</td>
+        <td>male</td>
+        <td>32.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C.A. 33111</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>72</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Goodwin, Miss. Lillian Amy</td>
+        <td>female</td>
+        <td>16.0</td>
+        <td>5</td>
+        <td>2</td>
+        <td>CA 2144</td>
+        <td>46.9</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>73</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Hood, Mr. Ambrose Jr</td>
+        <td>male</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>S.O.C. 14879</td>
+        <td>73.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>74</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Chronopoulos, Mr. Apostolos</td>
+        <td>male</td>
+        <td>26.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>2680</td>
+        <td>14.4542</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>75</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Bing, Mr. Lee</td>
+        <td>male</td>
+        <td>32.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>1601</td>
+        <td>56.4958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>76</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Moen, Mr. Sigurd Hansen</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>348123</td>
+        <td>7.65</td>
+        <td>F G73</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>77</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Staneff, Mr. Ivan</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349208</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>78</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Moutal, Mr. Rahamin Haim</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>374746</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>79</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Caldwell, Master. Alden Gates</td>
+        <td>male</td>
+        <td>0.83</td>
+        <td>0</td>
+        <td>2</td>
+        <td>248738</td>
+        <td>29.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>80</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Dowdell, Miss. Elizabeth</td>
+        <td>female</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>364516</td>
+        <td>12.475</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>81</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Waelens, Mr. Achille</td>
+        <td>male</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>345767</td>
+        <td>9.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>82</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Sheerlinck, Mr. Jan Baptist</td>
+        <td>male</td>
+        <td>29.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>345779</td>
+        <td>9.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>83</td>
+        <td>1</td>
+        <td>3</td>
+        <td>McDermott, Miss. Brigdet Delia</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>330932</td>
+        <td>7.7875</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>84</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Carrau, Mr. Francisco M</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113059</td>
+        <td>47.1</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>85</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Ilett, Miss. Bertha</td>
+        <td>female</td>
+        <td>17.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SO/C 14885</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>86</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Backstrom, Mrs. Karl Alfred (Maria Mathilda Gustafsson)</td>
+        <td>female</td>
+        <td>33.0</td>
+        <td>3</td>
+        <td>0</td>
+        <td>3101278</td>
+        <td>15.85</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>87</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Ford, Mr. William Neal</td>
+        <td>male</td>
+        <td>16.0</td>
+        <td>1</td>
+        <td>3</td>
+        <td>W./C. 6608</td>
+        <td>34.375</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>88</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Slocovski, Mr. Selman Francis</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SOTON/OQ 392086</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>89</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Fortune, Miss. Mabel Helen</td>
+        <td>female</td>
+        <td>23.0</td>
+        <td>3</td>
+        <td>2</td>
+        <td>19950</td>
+        <td>263.0</td>
+        <td>C23 C25 C27</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>90</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Celotti, Mr. Francesco</td>
+        <td>male</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>343275</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>91</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Christmann, Mr. Emil</td>
+        <td>male</td>
+        <td>29.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>343276</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>92</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Andreasson, Mr. Paul Edvin</td>
+        <td>male</td>
+        <td>20.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347466</td>
+        <td>7.8542</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>93</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Chaffee, Mr. Herbert Fuller</td>
+        <td>male</td>
+        <td>46.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>W.E.P. 5734</td>
+        <td>61.175</td>
+        <td>E31</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>94</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Dean, Mr. Bertram Frank</td>
+        <td>male</td>
+        <td>26.0</td>
+        <td>1</td>
+        <td>2</td>
+        <td>C.A. 2315</td>
+        <td>20.575</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>95</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Coxon, Mr. Daniel</td>
+        <td>male</td>
+        <td>59.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>364500</td>
+        <td>7.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>96</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Shorney, Mr. Charles Joseph</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>374910</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>97</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Goldschmidt, Mr. George B</td>
+        <td>male</td>
+        <td>71.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17754</td>
+        <td>34.6542</td>
+        <td>A5</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>98</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Greenfield, Mr. William Bertram</td>
+        <td>male</td>
+        <td>23.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>PC 17759</td>
+        <td>63.3583</td>
+        <td>D10 D12</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>99</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Doling, Mrs. John T (Ada Julia Bone)</td>
+        <td>female</td>
+        <td>34.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>231919</td>
+        <td>23.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>100</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Kantor, Mr. Sinai</td>
+        <td>male</td>
+        <td>34.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>244367</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>101</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Petranec, Miss. Matilda</td>
+        <td>female</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349245</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>102</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Petroff, Mr. Pastcho (&quot;Pentcho&quot;)</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349215</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>103</td>
+        <td>0</td>
+        <td>1</td>
+        <td>White, Mr. Richard Frasar</td>
+        <td>male</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>35281</td>
+        <td>77.2875</td>
+        <td>D26</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>104</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Johansson, Mr. Gustaf Joel</td>
+        <td>male</td>
+        <td>33.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>7540</td>
+        <td>8.6542</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>105</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Gustafsson, Mr. Anders Vilhelm</td>
+        <td>male</td>
+        <td>37.0</td>
+        <td>2</td>
+        <td>0</td>
+        <td>3101276</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>106</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Mionoff, Mr. Stoytcho</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349207</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>107</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Salkjelsvik, Miss. Anna Kristine</td>
+        <td>female</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>343120</td>
+        <td>7.65</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>108</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Moss, Mr. Albert Johan</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>312991</td>
+        <td>7.775</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>109</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Rekic, Mr. Tido</td>
+        <td>male</td>
+        <td>38.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349249</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>110</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Moran, Miss. Bertha</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>371110</td>
+        <td>24.15</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>111</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Porter, Mr. Walter Chamberlain</td>
+        <td>male</td>
+        <td>47.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>110465</td>
+        <td>52.0</td>
+        <td>C110</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>112</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Zabour, Miss. Hileni</td>
+        <td>female</td>
+        <td>14.5</td>
+        <td>1</td>
+        <td>0</td>
+        <td>2665</td>
+        <td>14.4542</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>113</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Barton, Mr. David John</td>
+        <td>male</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>324669</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>114</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Jussila, Miss. Katriina</td>
+        <td>female</td>
+        <td>20.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>4136</td>
+        <td>9.825</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>115</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Attalah, Miss. Malake</td>
+        <td>female</td>
+        <td>17.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2627</td>
+        <td>14.4583</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>116</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Pekoniemi, Mr. Edvard</td>
+        <td>male</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>STON/O 2. 3101294</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>117</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Connors, Mr. Patrick</td>
+        <td>male</td>
+        <td>70.5</td>
+        <td>0</td>
+        <td>0</td>
+        <td>370369</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>118</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Turpin, Mr. William John Robert</td>
+        <td>male</td>
+        <td>29.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>11668</td>
+        <td>21.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>119</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Baxter, Mr. Quigg Edmond</td>
+        <td>male</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>PC 17558</td>
+        <td>247.5208</td>
+        <td>B58 B60</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>120</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Andersson, Miss. Ellis Anna Maria</td>
+        <td>female</td>
+        <td>2.0</td>
+        <td>4</td>
+        <td>2</td>
+        <td>347082</td>
+        <td>31.275</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>121</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Hickman, Mr. Stanley George</td>
+        <td>male</td>
+        <td>21.0</td>
+        <td>2</td>
+        <td>0</td>
+        <td>S.O.C. 14879</td>
+        <td>73.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>122</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Moore, Mr. Leonard Charles</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A4. 54510</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>123</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Nasser, Mr. Nicholas</td>
+        <td>male</td>
+        <td>32.5</td>
+        <td>1</td>
+        <td>0</td>
+        <td>237736</td>
+        <td>30.0708</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>124</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Webber, Miss. Susan</td>
+        <td>female</td>
+        <td>32.5</td>
+        <td>0</td>
+        <td>0</td>
+        <td>27267</td>
+        <td>13.0</td>
+        <td>E101</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>125</td>
+        <td>0</td>
+        <td>1</td>
+        <td>White, Mr. Percival Wayland</td>
+        <td>male</td>
+        <td>54.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>35281</td>
+        <td>77.2875</td>
+        <td>D26</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>126</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Nicola-Yarred, Master. Elias</td>
+        <td>male</td>
+        <td>12.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>2651</td>
+        <td>11.2417</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>127</td>
+        <td>0</td>
+        <td>3</td>
+        <td>McMahon, Mr. Martin</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>370372</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>128</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Madsen, Mr. Fridtjof Arne</td>
+        <td>male</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C 17369</td>
+        <td>7.1417</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>129</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Peter, Miss. Anna</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>1</td>
+        <td>2668</td>
+        <td>22.3583</td>
+        <td>F E69</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>130</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Ekstrom, Mr. Johan</td>
+        <td>male</td>
+        <td>45.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347061</td>
+        <td>6.975</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>131</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Drazenoic, Mr. Jozef</td>
+        <td>male</td>
+        <td>33.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349241</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>132</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Coelho, Mr. Domingos Fernandeo</td>
+        <td>male</td>
+        <td>20.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SOTON/O.Q. 3101307</td>
+        <td>7.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>133</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Robins, Mrs. Alexander A (Grace Charity Laury)</td>
+        <td>female</td>
+        <td>47.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>A/5. 3337</td>
+        <td>14.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>134</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Weisz, Mrs. Leopold (Mathilde Francoise Pede)</td>
+        <td>female</td>
+        <td>29.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>228414</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>135</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Sobey, Mr. Samuel James Hayden</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C.A. 29178</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>136</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Richard, Mr. Emile</td>
+        <td>male</td>
+        <td>23.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SC/PARIS 2133</td>
+        <td>15.0458</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>137</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Newsom, Miss. Helen Monypeny</td>
+        <td>female</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>11752</td>
+        <td>26.2833</td>
+        <td>D47</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>138</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Futrelle, Mr. Jacques Heath</td>
+        <td>male</td>
+        <td>37.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>113803</td>
+        <td>53.1</td>
+        <td>C123</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>139</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Osen, Mr. Olaf Elon</td>
+        <td>male</td>
+        <td>16.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>7534</td>
+        <td>9.2167</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>140</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Giglio, Mr. Victor</td>
+        <td>male</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17593</td>
+        <td>79.2</td>
+        <td>B86</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>141</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Boulos, Mrs. Joseph (Sultana)</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>2</td>
+        <td>2678</td>
+        <td>15.2458</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>142</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Nysten, Miss. Anna Sofia</td>
+        <td>female</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347081</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>143</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Hakkarainen, Mrs. Pekka Pietari (Elin Matilda Dolck)</td>
+        <td>female</td>
+        <td>24.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>STON/O2. 3101279</td>
+        <td>15.85</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>144</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Burke, Mr. Jeremiah</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>365222</td>
+        <td>6.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>145</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Andrew, Mr. Edgardo Samuel</td>
+        <td>male</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>231945</td>
+        <td>11.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>146</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Nicholls, Mr. Joseph Charles</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>C.A. 33112</td>
+        <td>36.75</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>147</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Andersson, Mr. August Edvard (&quot;Wennerstrom&quot;)</td>
+        <td>male</td>
+        <td>27.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>350043</td>
+        <td>7.7958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>148</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Ford, Miss. Robina Maggie &quot;Ruby&quot;</td>
+        <td>female</td>
+        <td>9.0</td>
+        <td>2</td>
+        <td>2</td>
+        <td>W./C. 6608</td>
+        <td>34.375</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>149</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Navratil, Mr. Michel (&quot;Louis M Hoffman&quot;)</td>
+        <td>male</td>
+        <td>36.5</td>
+        <td>0</td>
+        <td>2</td>
+        <td>230080</td>
+        <td>26.0</td>
+        <td>F2</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>150</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Byles, Rev. Thomas Roussel Davids</td>
+        <td>male</td>
+        <td>42.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>244310</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>151</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Bateman, Rev. Robert James</td>
+        <td>male</td>
+        <td>51.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>S.O.P. 1166</td>
+        <td>12.525</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>152</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Pears, Mrs. Thomas (Edith Wearne)</td>
+        <td>female</td>
+        <td>22.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>113776</td>
+        <td>66.6</td>
+        <td>C2</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>153</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Meo, Mr. Alfonzo</td>
+        <td>male</td>
+        <td>55.5</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A.5. 11206</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>154</td>
+        <td>0</td>
+        <td>3</td>
+        <td>van Billiard, Mr. Austin Blyler</td>
+        <td>male</td>
+        <td>40.5</td>
+        <td>0</td>
+        <td>2</td>
+        <td>A/5. 851</td>
+        <td>14.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>155</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Olsen, Mr. Ole Martin</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>Fa 265302</td>
+        <td>7.3125</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>156</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Williams, Mr. Charles Duane</td>
+        <td>male</td>
+        <td>51.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>PC 17597</td>
+        <td>61.3792</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>157</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Gilnagh, Miss. Katherine &quot;Katie&quot;</td>
+        <td>female</td>
+        <td>16.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>35851</td>
+        <td>7.7333</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>158</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Corn, Mr. Harry</td>
+        <td>male</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SOTON/OQ 392090</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>159</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Smiljanic, Mr. Mile</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>315037</td>
+        <td>8.6625</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>160</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Sage, Master. Thomas Henry</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>8</td>
+        <td>2</td>
+        <td>CA. 2343</td>
+        <td>69.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>161</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Cribb, Mr. John Hatfield</td>
+        <td>male</td>
+        <td>44.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>371362</td>
+        <td>16.1</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>162</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Watt, Mrs. James (Elizabeth &quot;Bessie&quot; Inglis Milne)</td>
+        <td>female</td>
+        <td>40.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C.A. 33595</td>
+        <td>15.75</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>163</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Bengtsson, Mr. John Viktor</td>
+        <td>male</td>
+        <td>26.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347068</td>
+        <td>7.775</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>164</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Calic, Mr. Jovo</td>
+        <td>male</td>
+        <td>17.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>315093</td>
+        <td>8.6625</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>165</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Panula, Master. Eino Viljami</td>
+        <td>male</td>
+        <td>1.0</td>
+        <td>4</td>
+        <td>1</td>
+        <td>3101295</td>
+        <td>39.6875</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>166</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Goldsmith, Master. Frank John William &quot;Frankie&quot;</td>
+        <td>male</td>
+        <td>9.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>363291</td>
+        <td>20.525</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>167</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Chibnall, Mrs. (Edith Martha Bowerman)</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>1</td>
+        <td>113505</td>
+        <td>55.0</td>
+        <td>E33</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>168</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Skoog, Mrs. William (Anna Bernhardina Karlsson)</td>
+        <td>female</td>
+        <td>45.0</td>
+        <td>1</td>
+        <td>4</td>
+        <td>347088</td>
+        <td>27.9</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>169</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Baumann, Mr. John D</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17318</td>
+        <td>25.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>170</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Ling, Mr. Lee</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>1601</td>
+        <td>56.4958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>171</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Van der hoef, Mr. Wyckoff</td>
+        <td>male</td>
+        <td>61.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>111240</td>
+        <td>33.5</td>
+        <td>B19</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>172</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Rice, Master. Arthur</td>
+        <td>male</td>
+        <td>4.0</td>
+        <td>4</td>
+        <td>1</td>
+        <td>382652</td>
+        <td>29.125</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>173</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Johnson, Miss. Eleanor Ileen</td>
+        <td>female</td>
+        <td>1.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>347742</td>
+        <td>11.1333</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>174</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Sivola, Mr. Antti Wilhelm</td>
+        <td>male</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>STON/O 2. 3101280</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>175</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Smith, Mr. James Clinch</td>
+        <td>male</td>
+        <td>56.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>17764</td>
+        <td>30.6958</td>
+        <td>A7</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>176</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Klasen, Mr. Klas Albin</td>
+        <td>male</td>
+        <td>18.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>350404</td>
+        <td>7.8542</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>177</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Lefebre, Master. Henry Forbes</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>3</td>
+        <td>1</td>
+        <td>4133</td>
+        <td>25.4667</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>178</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Isham, Miss. Ann Elizabeth</td>
+        <td>female</td>
+        <td>50.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17595</td>
+        <td>28.7125</td>
+        <td>C49</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>179</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Hale, Mr. Reginald</td>
+        <td>male</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>250653</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>180</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Leonard, Mr. Lionel</td>
+        <td>male</td>
+        <td>36.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>LINE</td>
+        <td>0.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>181</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Sage, Miss. Constance Gladys</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>8</td>
+        <td>2</td>
+        <td>CA. 2343</td>
+        <td>69.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>182</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Pernot, Mr. Rene</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SC/PARIS 2131</td>
+        <td>15.05</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>183</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Asplund, Master. Clarence Gustaf Hugo</td>
+        <td>male</td>
+        <td>9.0</td>
+        <td>4</td>
+        <td>2</td>
+        <td>347077</td>
+        <td>31.3875</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>184</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Becker, Master. Richard F</td>
+        <td>male</td>
+        <td>1.0</td>
+        <td>2</td>
+        <td>1</td>
+        <td>230136</td>
+        <td>39.0</td>
+        <td>F4</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>185</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Kink-Heilmann, Miss. Luise Gretchen</td>
+        <td>female</td>
+        <td>4.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>315153</td>
+        <td>22.025</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>186</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Rood, Mr. Hugh Roscoe</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113767</td>
+        <td>50.0</td>
+        <td>A32</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>187</td>
+        <td>1</td>
+        <td>3</td>
+        <td>O&#x27;Brien, Mrs. Thomas (Johanna &quot;Hannah&quot; Godfrey)</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>370365</td>
+        <td>15.5</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>188</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Romaine, Mr. Charles Hallace (&quot;Mr C Rolmane&quot;)</td>
+        <td>male</td>
+        <td>45.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>111428</td>
+        <td>26.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>189</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Bourke, Mr. John</td>
+        <td>male</td>
+        <td>40.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>364849</td>
+        <td>15.5</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>190</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Turcin, Mr. Stjepan</td>
+        <td>male</td>
+        <td>36.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349247</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>191</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Pinsky, Mrs. (Rosa)</td>
+        <td>female</td>
+        <td>32.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>234604</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>192</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Carbines, Mr. William</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>28424</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>193</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Andersen-Jensen, Miss. Carla Christine Nielsine</td>
+        <td>female</td>
+        <td>19.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>350046</td>
+        <td>7.8542</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>194</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Navratil, Master. Michel M</td>
+        <td>male</td>
+        <td>3.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>230080</td>
+        <td>26.0</td>
+        <td>F2</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>195</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Brown, Mrs. James Joseph (Margaret Tobin)</td>
+        <td>female</td>
+        <td>44.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17610</td>
+        <td>27.7208</td>
+        <td>B4</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>196</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Lurette, Miss. Elise</td>
+        <td>female</td>
+        <td>58.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17569</td>
+        <td>146.5208</td>
+        <td>B80</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>197</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Mernagh, Mr. Robert</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>368703</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>198</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Olsen, Mr. Karl Siegwart Andreas</td>
+        <td>male</td>
+        <td>42.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>4579</td>
+        <td>8.4042</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>199</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Madigan, Miss. Margaret &quot;Maggie&quot;</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>370370</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>200</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Yrois, Miss. Henriette (&quot;Mrs Harbeck&quot;)</td>
+        <td>female</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>248747</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>201</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Vande Walle, Mr. Nestor Cyriel</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>345770</td>
+        <td>9.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>202</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Sage, Mr. Frederick</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>8</td>
+        <td>2</td>
+        <td>CA. 2343</td>
+        <td>69.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>203</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Johanson, Mr. Jakob Alfred</td>
+        <td>male</td>
+        <td>34.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>3101264</td>
+        <td>6.4958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>204</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Youseff, Mr. Gerious</td>
+        <td>male</td>
+        <td>45.5</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2628</td>
+        <td>7.225</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>205</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Cohen, Mr. Gurshon &quot;Gus&quot;</td>
+        <td>male</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/5 3540</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>206</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Strom, Miss. Telma Matilda</td>
+        <td>female</td>
+        <td>2.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>347054</td>
+        <td>10.4625</td>
+        <td>G6</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>207</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Backstrom, Mr. Karl Alfred</td>
+        <td>male</td>
+        <td>32.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>3101278</td>
+        <td>15.85</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>208</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Albimona, Mr. Nassef Cassem</td>
+        <td>male</td>
+        <td>26.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2699</td>
+        <td>18.7875</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>209</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Carr, Miss. Helen &quot;Ellen&quot;</td>
+        <td>female</td>
+        <td>16.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>367231</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>210</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Blank, Mr. Henry</td>
+        <td>male</td>
+        <td>40.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>112277</td>
+        <td>31.0</td>
+        <td>A31</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>211</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Ali, Mr. Ahmed</td>
+        <td>male</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SOTON/O.Q. 3101311</td>
+        <td>7.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>212</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Cameron, Miss. Clear Annie</td>
+        <td>female</td>
+        <td>35.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>F.C.C. 13528</td>
+        <td>21.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>213</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Perkin, Mr. John Henry</td>
+        <td>male</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/5 21174</td>
+        <td>7.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>214</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Givard, Mr. Hans Kristensen</td>
+        <td>male</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>250646</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>215</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Kiernan, Mr. Philip</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>367229</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>216</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Newell, Miss. Madeleine</td>
+        <td>female</td>
+        <td>31.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>35273</td>
+        <td>113.275</td>
+        <td>D36</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>217</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Honkanen, Miss. Eliina</td>
+        <td>female</td>
+        <td>27.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>STON/O2. 3101283</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>218</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Jacobsohn, Mr. Sidney Samuel</td>
+        <td>male</td>
+        <td>42.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>243847</td>
+        <td>27.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>219</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Bazzani, Miss. Albina</td>
+        <td>female</td>
+        <td>32.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>11813</td>
+        <td>76.2917</td>
+        <td>D15</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>220</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Harris, Mr. Walter</td>
+        <td>male</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>W/C 14208</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>221</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Sunderland, Mr. Victor Francis</td>
+        <td>male</td>
+        <td>16.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SOTON/OQ 392089</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>222</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Bracken, Mr. James H</td>
+        <td>male</td>
+        <td>27.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>220367</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>223</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Green, Mr. George Henry</td>
+        <td>male</td>
+        <td>51.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>21440</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>224</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Nenkoff, Mr. Christo</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349234</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>225</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Hoyt, Mr. Frederick Maxfield</td>
+        <td>male</td>
+        <td>38.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>19943</td>
+        <td>90.0</td>
+        <td>C93</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>226</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Berglund, Mr. Karl Ivar Sven</td>
+        <td>male</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PP 4348</td>
+        <td>9.35</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>227</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Mellors, Mr. William John</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SW/PP 751</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>228</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Lovell, Mr. John Hall (&quot;Henry&quot;)</td>
+        <td>male</td>
+        <td>20.5</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/5 21173</td>
+        <td>7.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>229</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Fahlstrom, Mr. Arne Jonas</td>
+        <td>male</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>236171</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>230</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Lefebre, Miss. Mathilde</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>3</td>
+        <td>1</td>
+        <td>4133</td>
+        <td>25.4667</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>231</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Harris, Mrs. Henry Birkhardt (Irene Wallach)</td>
+        <td>female</td>
+        <td>35.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>36973</td>
+        <td>83.475</td>
+        <td>C83</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>232</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Larsson, Mr. Bengt Edvin</td>
+        <td>male</td>
+        <td>29.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347067</td>
+        <td>7.775</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>233</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Sjostedt, Mr. Ernst Adolf</td>
+        <td>male</td>
+        <td>59.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>237442</td>
+        <td>13.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>234</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Asplund, Miss. Lillian Gertrud</td>
+        <td>female</td>
+        <td>5.0</td>
+        <td>4</td>
+        <td>2</td>
+        <td>347077</td>
+        <td>31.3875</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>235</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Leyson, Mr. Robert William Norman</td>
+        <td>male</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C.A. 29566</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>236</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Harknett, Miss. Alice Phoebe</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>W./C. 6609</td>
+        <td>7.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>237</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Hold, Mr. Stephen</td>
+        <td>male</td>
+        <td>44.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>26707</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>238</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Collyer, Miss. Marjorie &quot;Lottie&quot;</td>
+        <td>female</td>
+        <td>8.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>C.A. 31921</td>
+        <td>26.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>239</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Pengelly, Mr. Frederick William</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>28665</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>240</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Hunt, Mr. George Henry</td>
+        <td>male</td>
+        <td>33.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SCO/W 1585</td>
+        <td>12.275</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>241</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Zabour, Miss. Thamine</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>2665</td>
+        <td>14.4542</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>242</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Murphy, Miss. Katherine &quot;Kate&quot;</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>367230</td>
+        <td>15.5</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>243</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Coleridge, Mr. Reginald Charles</td>
+        <td>male</td>
+        <td>29.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>W./C. 14263</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>244</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Maenpaa, Mr. Matti Alexanteri</td>
+        <td>male</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>STON/O 2. 3101275</td>
+        <td>7.125</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>245</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Attalah, Mr. Sleiman</td>
+        <td>male</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2694</td>
+        <td>7.225</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>246</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Minahan, Dr. William Edward</td>
+        <td>male</td>
+        <td>44.0</td>
+        <td>2</td>
+        <td>0</td>
+        <td>19928</td>
+        <td>90.0</td>
+        <td>C78</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>247</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Lindahl, Miss. Agda Thorilda Viktoria</td>
+        <td>female</td>
+        <td>25.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347071</td>
+        <td>7.775</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>248</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Hamalainen, Mrs. William (Anna)</td>
+        <td>female</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>250649</td>
+        <td>14.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>249</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Beckwith, Mr. Richard Leonard</td>
+        <td>male</td>
+        <td>37.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>11751</td>
+        <td>52.5542</td>
+        <td>D35</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>250</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Carter, Rev. Ernest Courtenay</td>
+        <td>male</td>
+        <td>54.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>244252</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>251</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Reed, Mr. James George</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>362316</td>
+        <td>7.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>252</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Strom, Mrs. Wilhelm (Elna Matilda Persson)</td>
+        <td>female</td>
+        <td>29.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>347054</td>
+        <td>10.4625</td>
+        <td>G6</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>253</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Stead, Mr. William Thomas</td>
+        <td>male</td>
+        <td>62.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113514</td>
+        <td>26.55</td>
+        <td>C87</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>254</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Lobb, Mr. William Arthur</td>
+        <td>male</td>
+        <td>30.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>A/5. 3336</td>
+        <td>16.1</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>255</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Rosblom, Mrs. Viktor (Helena Wilhelmina)</td>
+        <td>female</td>
+        <td>41.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>370129</td>
+        <td>20.2125</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>256</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Touma, Mrs. Darwis (Hanne Youssef Razi)</td>
+        <td>female</td>
+        <td>29.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>2650</td>
+        <td>15.2458</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>257</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Thorne, Mrs. Gertrude Maybelle</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17585</td>
+        <td>79.2</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>258</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Cherry, Miss. Gladys</td>
+        <td>female</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>110152</td>
+        <td>86.5</td>
+        <td>B77</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>259</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Ward, Miss. Anna</td>
+        <td>female</td>
+        <td>35.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17755</td>
+        <td>512.3292</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>260</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Parrish, Mrs. (Lutie Davis)</td>
+        <td>female</td>
+        <td>50.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>230433</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>261</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Smith, Mr. Thomas</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>384461</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>262</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Asplund, Master. Edvin Rojj Felix</td>
+        <td>male</td>
+        <td>3.0</td>
+        <td>4</td>
+        <td>2</td>
+        <td>347077</td>
+        <td>31.3875</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>263</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Taussig, Mr. Emil</td>
+        <td>male</td>
+        <td>52.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>110413</td>
+        <td>79.65</td>
+        <td>E67</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>264</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Harrison, Mr. William</td>
+        <td>male</td>
+        <td>40.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>112059</td>
+        <td>0.0</td>
+        <td>B94</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>265</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Henry, Miss. Delia</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>382649</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>266</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Reeves, Mr. David</td>
+        <td>male</td>
+        <td>36.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C.A. 17248</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>267</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Panula, Mr. Ernesti Arvid</td>
+        <td>male</td>
+        <td>16.0</td>
+        <td>4</td>
+        <td>1</td>
+        <td>3101295</td>
+        <td>39.6875</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>268</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Persson, Mr. Ernst Ulrik</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>347083</td>
+        <td>7.775</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>269</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Graham, Mrs. William Thompson (Edith Junkins)</td>
+        <td>female</td>
+        <td>58.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>PC 17582</td>
+        <td>153.4625</td>
+        <td>C125</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>270</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Bissette, Miss. Amelia</td>
+        <td>female</td>
+        <td>35.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17760</td>
+        <td>135.6333</td>
+        <td>C99</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>271</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Cairns, Mr. Alexander</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113798</td>
+        <td>31.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>272</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Tornquist, Mr. William Henry</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>LINE</td>
+        <td>0.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>273</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Mellinger, Mrs. (Elizabeth Anne Maidment)</td>
+        <td>female</td>
+        <td>41.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>250644</td>
+        <td>19.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>274</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Natsch, Mr. Charles H</td>
+        <td>male</td>
+        <td>37.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>PC 17596</td>
+        <td>29.7</td>
+        <td>C118</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>275</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Healy, Miss. Hanora &quot;Nora&quot;</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>370375</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>276</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Andrews, Miss. Kornelia Theodosia</td>
+        <td>female</td>
+        <td>63.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>13502</td>
+        <td>77.9583</td>
+        <td>D7</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>277</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Lindblom, Miss. Augusta Charlotta</td>
+        <td>female</td>
+        <td>45.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347073</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>278</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Parkes, Mr. Francis &quot;Frank&quot;</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>239853</td>
+        <td>0.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>279</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Rice, Master. Eric</td>
+        <td>male</td>
+        <td>7.0</td>
+        <td>4</td>
+        <td>1</td>
+        <td>382652</td>
+        <td>29.125</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>280</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Abbott, Mrs. Stanton (Rosa Hunt)</td>
+        <td>female</td>
+        <td>35.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>C.A. 2673</td>
+        <td>20.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>281</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Duane, Mr. Frank</td>
+        <td>male</td>
+        <td>65.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>336439</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>282</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Olsson, Mr. Nils Johan Goransson</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347464</td>
+        <td>7.8542</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>283</td>
+        <td>0</td>
+        <td>3</td>
+        <td>de Pelsmaeker, Mr. Alfons</td>
+        <td>male</td>
+        <td>16.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>345778</td>
+        <td>9.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>284</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Dorking, Mr. Edward Arthur</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/5. 10482</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>285</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Smith, Mr. Richard William</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113056</td>
+        <td>26.0</td>
+        <td>A19</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>286</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Stankovic, Mr. Ivan</td>
+        <td>male</td>
+        <td>33.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349239</td>
+        <td>8.6625</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>287</td>
+        <td>1</td>
+        <td>3</td>
+        <td>de Mulder, Mr. Theodore</td>
+        <td>male</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>345774</td>
+        <td>9.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>288</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Naidenoff, Mr. Penko</td>
+        <td>male</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349206</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>289</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Hosono, Mr. Masabumi</td>
+        <td>male</td>
+        <td>42.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>237798</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>290</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Connolly, Miss. Kate</td>
+        <td>female</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>370373</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>291</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Barber, Miss. Ellen &quot;Nellie&quot;</td>
+        <td>female</td>
+        <td>26.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>19877</td>
+        <td>78.85</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>292</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Bishop, Mrs. Dickinson H (Helen Walton)</td>
+        <td>female</td>
+        <td>19.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>11967</td>
+        <td>91.0792</td>
+        <td>B49</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>293</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Levy, Mr. Rene Jacques</td>
+        <td>male</td>
+        <td>36.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SC/Paris 2163</td>
+        <td>12.875</td>
+        <td>D</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>294</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Haas, Miss. Aloisia</td>
+        <td>female</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349236</td>
+        <td>8.85</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>295</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Mineff, Mr. Ivan</td>
+        <td>male</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349233</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>296</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Lewy, Mr. Ervin G</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17612</td>
+        <td>27.7208</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>297</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Hanna, Mr. Mansour</td>
+        <td>male</td>
+        <td>23.5</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2693</td>
+        <td>7.2292</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>298</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Allison, Miss. Helen Loraine</td>
+        <td>female</td>
+        <td>2.0</td>
+        <td>1</td>
+        <td>2</td>
+        <td>113781</td>
+        <td>151.55</td>
+        <td>C22 C26</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>299</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Saalfeld, Mr. Adolphe</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>19988</td>
+        <td>30.5</td>
+        <td>C106</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>300</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Baxter, Mrs. James (Helene DeLaudeniere Chaput)</td>
+        <td>female</td>
+        <td>50.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>PC 17558</td>
+        <td>247.5208</td>
+        <td>B58 B60</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>301</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Kelly, Miss. Anna Katherine &quot;Annie Kate&quot;</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>9234</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>302</td>
+        <td>1</td>
+        <td>3</td>
+        <td>McCoy, Mr. Bernard</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>2</td>
+        <td>0</td>
+        <td>367226</td>
+        <td>23.25</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>303</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Johnson, Mr. William Cahoone Jr</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>LINE</td>
+        <td>0.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>304</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Keane, Miss. Nora A</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>226593</td>
+        <td>12.35</td>
+        <td>E101</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>305</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Williams, Mr. Howard Hugh &quot;Harry&quot;</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/5 2466</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>306</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Allison, Master. Hudson Trevor</td>
+        <td>male</td>
+        <td>0.92</td>
+        <td>1</td>
+        <td>2</td>
+        <td>113781</td>
+        <td>151.55</td>
+        <td>C22 C26</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>307</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Fleming, Miss. Margaret</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>17421</td>
+        <td>110.8833</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>308</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Penasco y Castellana, Mrs. Victor de Satode (Maria Josefa Perez de Soto y Vallejo)</td>
+        <td>female</td>
+        <td>17.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>PC 17758</td>
+        <td>108.9</td>
+        <td>C65</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>309</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Abelson, Mr. Samuel</td>
+        <td>male</td>
+        <td>30.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>P/PP 3381</td>
+        <td>24.0</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>310</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Francatelli, Miss. Laura Mabel</td>
+        <td>female</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17485</td>
+        <td>56.9292</td>
+        <td>E36</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>311</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Hays, Miss. Margaret Bechstein</td>
+        <td>female</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>11767</td>
+        <td>83.1583</td>
+        <td>C54</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>312</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Ryerson, Miss. Emily Borie</td>
+        <td>female</td>
+        <td>18.0</td>
+        <td>2</td>
+        <td>2</td>
+        <td>PC 17608</td>
+        <td>262.375</td>
+        <td>B57 B59 B63 B66</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>313</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Lahtinen, Mrs. William (Anna Sylfven)</td>
+        <td>female</td>
+        <td>26.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>250651</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>314</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Hendekovic, Mr. Ignjac</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349243</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>315</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Hart, Mr. Benjamin</td>
+        <td>male</td>
+        <td>43.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>F.C.C. 13529</td>
+        <td>26.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>316</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Nilsson, Miss. Helmina Josefina</td>
+        <td>female</td>
+        <td>26.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347470</td>
+        <td>7.8542</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>317</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Kantor, Mrs. Sinai (Miriam Sternin)</td>
+        <td>female</td>
+        <td>24.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>244367</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>318</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Moraweck, Dr. Ernest</td>
+        <td>male</td>
+        <td>54.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>29011</td>
+        <td>14.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>319</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Wick, Miss. Mary Natalie</td>
+        <td>female</td>
+        <td>31.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>36928</td>
+        <td>164.8667</td>
+        <td>C7</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>320</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Spedden, Mrs. Frederic Oakley (Margaretta Corning Stone)</td>
+        <td>female</td>
+        <td>40.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>16966</td>
+        <td>134.5</td>
+        <td>E34</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>321</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Dennis, Mr. Samuel</td>
+        <td>male</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/5 21172</td>
+        <td>7.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>322</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Danoff, Mr. Yoto</td>
+        <td>male</td>
+        <td>27.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349219</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>323</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Slayter, Miss. Hilda Mary</td>
+        <td>female</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>234818</td>
+        <td>12.35</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>324</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Caldwell, Mrs. Albert Francis (Sylvia Mae Harbaugh)</td>
+        <td>female</td>
+        <td>22.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>248738</td>
+        <td>29.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>325</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Sage, Mr. George John Jr</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>8</td>
+        <td>2</td>
+        <td>CA. 2343</td>
+        <td>69.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>326</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Young, Miss. Marie Grice</td>
+        <td>female</td>
+        <td>36.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17760</td>
+        <td>135.6333</td>
+        <td>C32</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>327</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Nysveen, Mr. Johan Hansen</td>
+        <td>male</td>
+        <td>61.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>345364</td>
+        <td>6.2375</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>328</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Ball, Mrs. (Ada E Hall)</td>
+        <td>female</td>
+        <td>36.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>28551</td>
+        <td>13.0</td>
+        <td>D</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>329</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Goldsmith, Mrs. Frank John (Emily Alice Brown)</td>
+        <td>female</td>
+        <td>31.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>363291</td>
+        <td>20.525</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>330</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Hippach, Miss. Jean Gertrude</td>
+        <td>female</td>
+        <td>16.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>111361</td>
+        <td>57.9792</td>
+        <td>B18</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>331</td>
+        <td>1</td>
+        <td>3</td>
+        <td>McCoy, Miss. Agnes</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>2</td>
+        <td>0</td>
+        <td>367226</td>
+        <td>23.25</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>332</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Partner, Mr. Austen</td>
+        <td>male</td>
+        <td>45.5</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113043</td>
+        <td>28.5</td>
+        <td>C124</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>333</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Graham, Mr. George Edward</td>
+        <td>male</td>
+        <td>38.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>PC 17582</td>
+        <td>153.4625</td>
+        <td>C91</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>334</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Vander Planke, Mr. Leo Edmondus</td>
+        <td>male</td>
+        <td>16.0</td>
+        <td>2</td>
+        <td>0</td>
+        <td>345764</td>
+        <td>18.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>335</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Frauenthal, Mrs. Henry William (Clara Heinsheimer)</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>PC 17611</td>
+        <td>133.65</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>336</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Denkoff, Mr. Mitto</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349225</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>337</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Pears, Mr. Thomas Clinton</td>
+        <td>male</td>
+        <td>29.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>113776</td>
+        <td>66.6</td>
+        <td>C2</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>338</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Burns, Miss. Elizabeth Margaret</td>
+        <td>female</td>
+        <td>41.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>16966</td>
+        <td>134.5</td>
+        <td>E40</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>339</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Dahl, Mr. Karl Edwart</td>
+        <td>male</td>
+        <td>45.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>7598</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>340</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Blackwell, Mr. Stephen Weart</td>
+        <td>male</td>
+        <td>45.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113784</td>
+        <td>35.5</td>
+        <td>T</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>341</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Navratil, Master. Edmond Roger</td>
+        <td>male</td>
+        <td>2.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>230080</td>
+        <td>26.0</td>
+        <td>F2</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>342</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Fortune, Miss. Alice Elizabeth</td>
+        <td>female</td>
+        <td>24.0</td>
+        <td>3</td>
+        <td>2</td>
+        <td>19950</td>
+        <td>263.0</td>
+        <td>C23 C25 C27</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>343</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Collander, Mr. Erik Gustaf</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>248740</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>344</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Sedgwick, Mr. Charles Frederick Waddington</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>244361</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>345</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Fox, Mr. Stanley Hubert</td>
+        <td>male</td>
+        <td>36.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>229236</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>346</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Brown, Miss. Amelia &quot;Mildred&quot;</td>
+        <td>female</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>248733</td>
+        <td>13.0</td>
+        <td>F33</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>347</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Smith, Miss. Marion Elsie</td>
+        <td>female</td>
+        <td>40.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>31418</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>348</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Davison, Mrs. Thomas Henry (Mary E Finck)</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>386525</td>
+        <td>16.1</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>349</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Coutts, Master. William Loch &quot;William&quot;</td>
+        <td>male</td>
+        <td>3.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>C.A. 37671</td>
+        <td>15.9</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>350</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Dimic, Mr. Jovan</td>
+        <td>male</td>
+        <td>42.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>315088</td>
+        <td>8.6625</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>351</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Odahl, Mr. Nils Martin</td>
+        <td>male</td>
+        <td>23.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>7267</td>
+        <td>9.225</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>352</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Williams-Lambert, Mr. Fletcher Fellows</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113510</td>
+        <td>35.0</td>
+        <td>C128</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>353</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Elias, Mr. Tannous</td>
+        <td>male</td>
+        <td>15.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>2695</td>
+        <td>7.2292</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>354</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Arnold-Franchi, Mr. Josef</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>349237</td>
+        <td>17.8</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>355</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Yousif, Mr. Wazli</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2647</td>
+        <td>7.225</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>356</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Vanden Steen, Mr. Leo Peter</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>345783</td>
+        <td>9.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>357</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Bowerman, Miss. Elsie Edith</td>
+        <td>female</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>113505</td>
+        <td>55.0</td>
+        <td>E33</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>358</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Funk, Miss. Annie Clemmer</td>
+        <td>female</td>
+        <td>38.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>237671</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>359</td>
+        <td>1</td>
+        <td>3</td>
+        <td>McGovern, Miss. Mary</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>330931</td>
+        <td>7.8792</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>360</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Mockler, Miss. Helen Mary &quot;Ellie&quot;</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>330980</td>
+        <td>7.8792</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>361</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Skoog, Mr. Wilhelm</td>
+        <td>male</td>
+        <td>40.0</td>
+        <td>1</td>
+        <td>4</td>
+        <td>347088</td>
+        <td>27.9</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>362</td>
+        <td>0</td>
+        <td>2</td>
+        <td>del Carlo, Mr. Sebastiano</td>
+        <td>male</td>
+        <td>29.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>SC/PARIS 2167</td>
+        <td>27.7208</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>363</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Barbara, Mrs. (Catherine David)</td>
+        <td>female</td>
+        <td>45.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>2691</td>
+        <td>14.4542</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>364</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Asim, Mr. Adola</td>
+        <td>male</td>
+        <td>35.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SOTON/O.Q. 3101310</td>
+        <td>7.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>365</td>
+        <td>0</td>
+        <td>3</td>
+        <td>O&#x27;Brien, Mr. Thomas</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>370365</td>
+        <td>15.5</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>366</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Adahl, Mr. Mauritz Nils Martin</td>
+        <td>male</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C 7076</td>
+        <td>7.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>367</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Warren, Mrs. Frank Manley (Anna Sophia Atkinson)</td>
+        <td>female</td>
+        <td>60.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>110813</td>
+        <td>75.25</td>
+        <td>D37</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>368</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Moussa, Mrs. (Mantoura Boulos)</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2626</td>
+        <td>7.2292</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>369</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Jermyn, Miss. Annie</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>14313</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>370</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Aubart, Mme. Leontine Pauline</td>
+        <td>female</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17477</td>
+        <td>69.3</td>
+        <td>B35</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>371</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Harder, Mr. George Achilles</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>11765</td>
+        <td>55.4417</td>
+        <td>E50</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>372</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Wiklund, Mr. Jakob Alfred</td>
+        <td>male</td>
+        <td>18.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>3101267</td>
+        <td>6.4958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>373</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Beavan, Mr. William Thomas</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>323951</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>374</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Ringhini, Mr. Sante</td>
+        <td>male</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17760</td>
+        <td>135.6333</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>375</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Palsson, Miss. Stina Viola</td>
+        <td>female</td>
+        <td>3.0</td>
+        <td>3</td>
+        <td>1</td>
+        <td>349909</td>
+        <td>21.075</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>376</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Meyer, Mrs. Edgar Joseph (Leila Saks)</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>PC 17604</td>
+        <td>82.1708</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>377</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Landergren, Miss. Aurora Adelia</td>
+        <td>female</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C 7077</td>
+        <td>7.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>378</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Widener, Mr. Harry Elkins</td>
+        <td>male</td>
+        <td>27.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>113503</td>
+        <td>211.5</td>
+        <td>C82</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>379</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Betros, Mr. Tannous</td>
+        <td>male</td>
+        <td>20.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2648</td>
+        <td>4.0125</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>380</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Gustafsson, Mr. Karl Gideon</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347069</td>
+        <td>7.775</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>381</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Bidois, Miss. Rosalie</td>
+        <td>female</td>
+        <td>42.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17757</td>
+        <td>227.525</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>382</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Nakid, Miss. Maria (&quot;Mary&quot;)</td>
+        <td>female</td>
+        <td>1.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>2653</td>
+        <td>15.7417</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>383</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Tikkanen, Mr. Juho</td>
+        <td>male</td>
+        <td>32.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>STON/O 2. 3101293</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>384</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Holverson, Mrs. Alexander Oskar (Mary Aline Towner)</td>
+        <td>female</td>
+        <td>35.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>113789</td>
+        <td>52.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>385</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Plotcharsky, Mr. Vasil</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349227</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>386</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Davies, Mr. Charles Henry</td>
+        <td>male</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>S.O.C. 14879</td>
+        <td>73.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>387</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Goodwin, Master. Sidney Leonard</td>
+        <td>male</td>
+        <td>1.0</td>
+        <td>5</td>
+        <td>2</td>
+        <td>CA 2144</td>
+        <td>46.9</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>388</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Buss, Miss. Kate</td>
+        <td>female</td>
+        <td>36.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>27849</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>389</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Sadlier, Mr. Matthew</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>367655</td>
+        <td>7.7292</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>390</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Lehmann, Miss. Bertha</td>
+        <td>female</td>
+        <td>17.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SC 1748</td>
+        <td>12.0</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>391</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Carter, Mr. William Ernest</td>
+        <td>male</td>
+        <td>36.0</td>
+        <td>1</td>
+        <td>2</td>
+        <td>113760</td>
+        <td>120.0</td>
+        <td>B96 B98</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>392</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Jansson, Mr. Carl Olof</td>
+        <td>male</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>350034</td>
+        <td>7.7958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>393</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Gustafsson, Mr. Johan Birger</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>2</td>
+        <td>0</td>
+        <td>3101277</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>394</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Newell, Miss. Marjorie</td>
+        <td>female</td>
+        <td>23.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>35273</td>
+        <td>113.275</td>
+        <td>D36</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>395</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Sandstrom, Mrs. Hjalmar (Agnes Charlotta Bengtsson)</td>
+        <td>female</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>PP 9549</td>
+        <td>16.7</td>
+        <td>G6</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>396</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Johansson, Mr. Erik</td>
+        <td>male</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>350052</td>
+        <td>7.7958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>397</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Olsson, Miss. Elina</td>
+        <td>female</td>
+        <td>31.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>350407</td>
+        <td>7.8542</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>398</td>
+        <td>0</td>
+        <td>2</td>
+        <td>McKane, Mr. Peter David</td>
+        <td>male</td>
+        <td>46.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>28403</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>399</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Pain, Dr. Alfred</td>
+        <td>male</td>
+        <td>23.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>244278</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>400</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Trout, Mrs. William H (Jessie L)</td>
+        <td>female</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>240929</td>
+        <td>12.65</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>401</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Niskanen, Mr. Juha</td>
+        <td>male</td>
+        <td>39.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>STON/O 2. 3101289</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>402</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Adams, Mr. John</td>
+        <td>male</td>
+        <td>26.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>341826</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>403</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Jussila, Miss. Mari Aina</td>
+        <td>female</td>
+        <td>21.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>4137</td>
+        <td>9.825</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>404</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Hakkarainen, Mr. Pekka Pietari</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>STON/O2. 3101279</td>
+        <td>15.85</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>405</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Oreskovic, Miss. Marija</td>
+        <td>female</td>
+        <td>20.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>315096</td>
+        <td>8.6625</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>406</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Gale, Mr. Shadrach</td>
+        <td>male</td>
+        <td>34.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>28664</td>
+        <td>21.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>407</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Widegren, Mr. Carl/Charles Peter</td>
+        <td>male</td>
+        <td>51.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347064</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>408</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Richards, Master. William Rowe</td>
+        <td>male</td>
+        <td>3.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>29106</td>
+        <td>18.75</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>409</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Birkeland, Mr. Hans Martin Monsen</td>
+        <td>male</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>312992</td>
+        <td>7.775</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>410</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Lefebre, Miss. Ida</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>3</td>
+        <td>1</td>
+        <td>4133</td>
+        <td>25.4667</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>411</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Sdycoff, Mr. Todor</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349222</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>412</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Hart, Mr. Henry</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>394140</td>
+        <td>6.8583</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>413</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Minahan, Miss. Daisy E</td>
+        <td>female</td>
+        <td>33.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>19928</td>
+        <td>90.0</td>
+        <td>C78</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>414</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Cunningham, Mr. Alfred Fleming</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>239853</td>
+        <td>0.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>415</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Sundman, Mr. Johan Julian</td>
+        <td>male</td>
+        <td>44.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>STON/O 2. 3101269</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>416</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Meek, Mrs. Thomas (Annie Louise Rowley)</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>343095</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>417</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Drew, Mrs. James Vivian (Lulu Thorne Christian)</td>
+        <td>female</td>
+        <td>34.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>28220</td>
+        <td>32.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>418</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Silven, Miss. Lyyli Karoliina</td>
+        <td>female</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>250652</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>419</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Matthews, Mr. William John</td>
+        <td>male</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>28228</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>420</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Van Impe, Miss. Catharina</td>
+        <td>female</td>
+        <td>10.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>345773</td>
+        <td>24.15</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>421</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Gheorgheff, Mr. Stanio</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349254</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>422</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Charters, Mr. David</td>
+        <td>male</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/5. 13032</td>
+        <td>7.7333</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>423</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Zimmerman, Mr. Leo</td>
+        <td>male</td>
+        <td>29.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>315082</td>
+        <td>7.875</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>424</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Danbom, Mrs. Ernst Gilbert (Anna Sigrid Maria Brogren)</td>
+        <td>female</td>
+        <td>28.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>347080</td>
+        <td>14.4</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>425</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Rosblom, Mr. Viktor Richard</td>
+        <td>male</td>
+        <td>18.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>370129</td>
+        <td>20.2125</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>426</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Wiseman, Mr. Phillippe</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/4. 34244</td>
+        <td>7.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>427</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Clarke, Mrs. Charles V (Ada Maria Winfield)</td>
+        <td>female</td>
+        <td>28.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>2003</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>428</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Phillips, Miss. Kate Florence (&quot;Mrs Kate Louise Phillips Marshall&quot;)</td>
+        <td>female</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>250655</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>429</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Flynn, Mr. James</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>364851</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>430</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Pickard, Mr. Berk (Berk Trembisky)</td>
+        <td>male</td>
+        <td>32.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SOTON/O.Q. 392078</td>
+        <td>8.05</td>
+        <td>E10</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>431</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Bjornstrom-Steffansson, Mr. Mauritz Hakan</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>110564</td>
+        <td>26.55</td>
+        <td>C52</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>432</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Thorneycroft, Mrs. Percival (Florence Kate White)</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>376564</td>
+        <td>16.1</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>433</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Louch, Mrs. Charles Alexander (Alice Adelaide Slow)</td>
+        <td>female</td>
+        <td>42.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>SC/AH 3085</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>434</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Kallio, Mr. Nikolai Erland</td>
+        <td>male</td>
+        <td>17.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>STON/O 2. 3101274</td>
+        <td>7.125</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>435</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Silvey, Mr. William Baird</td>
+        <td>male</td>
+        <td>50.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>13507</td>
+        <td>55.9</td>
+        <td>E44</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>436</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Carter, Miss. Lucile Polk</td>
+        <td>female</td>
+        <td>14.0</td>
+        <td>1</td>
+        <td>2</td>
+        <td>113760</td>
+        <td>120.0</td>
+        <td>B96 B98</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>437</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Ford, Miss. Doolina Margaret &quot;Daisy&quot;</td>
+        <td>female</td>
+        <td>21.0</td>
+        <td>2</td>
+        <td>2</td>
+        <td>W./C. 6608</td>
+        <td>34.375</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>438</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Richards, Mrs. Sidney (Emily Hocking)</td>
+        <td>female</td>
+        <td>24.0</td>
+        <td>2</td>
+        <td>3</td>
+        <td>29106</td>
+        <td>18.75</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>439</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Fortune, Mr. Mark</td>
+        <td>male</td>
+        <td>64.0</td>
+        <td>1</td>
+        <td>4</td>
+        <td>19950</td>
+        <td>263.0</td>
+        <td>C23 C25 C27</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>440</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Kvillner, Mr. Johan Henrik Johannesson</td>
+        <td>male</td>
+        <td>31.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C.A. 18723</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>441</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Hart, Mrs. Benjamin (Esther Ada Bloomfield)</td>
+        <td>female</td>
+        <td>45.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>F.C.C. 13529</td>
+        <td>26.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>442</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Hampe, Mr. Leon</td>
+        <td>male</td>
+        <td>20.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>345769</td>
+        <td>9.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>443</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Petterson, Mr. Johan Emil</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>347076</td>
+        <td>7.775</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>444</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Reynaldo, Ms. Encarnacion</td>
+        <td>female</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>230434</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>445</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Johannesen-Bratthammer, Mr. Bernt</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>65306</td>
+        <td>8.1125</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>446</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Dodge, Master. Washington</td>
+        <td>male</td>
+        <td>4.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>33638</td>
+        <td>81.8583</td>
+        <td>A34</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>447</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Mellinger, Miss. Madeleine Violet</td>
+        <td>female</td>
+        <td>13.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>250644</td>
+        <td>19.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>448</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Seward, Mr. Frederic Kimber</td>
+        <td>male</td>
+        <td>34.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113794</td>
+        <td>26.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>449</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Baclini, Miss. Marie Catherine</td>
+        <td>female</td>
+        <td>5.0</td>
+        <td>2</td>
+        <td>1</td>
+        <td>2666</td>
+        <td>19.2583</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>450</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Peuchen, Major. Arthur Godfrey</td>
+        <td>male</td>
+        <td>52.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113786</td>
+        <td>30.5</td>
+        <td>C104</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>451</td>
+        <td>0</td>
+        <td>2</td>
+        <td>West, Mr. Edwy Arthur</td>
+        <td>male</td>
+        <td>36.0</td>
+        <td>1</td>
+        <td>2</td>
+        <td>C.A. 34651</td>
+        <td>27.75</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>452</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Hagland, Mr. Ingvald Olai Olsen</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>65303</td>
+        <td>19.9667</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>453</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Foreman, Mr. Benjamin Laventall</td>
+        <td>male</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113051</td>
+        <td>27.75</td>
+        <td>C111</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>454</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Goldenberg, Mr. Samuel L</td>
+        <td>male</td>
+        <td>49.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>17453</td>
+        <td>89.1042</td>
+        <td>C92</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>455</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Peduzzi, Mr. Joseph</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/5 2817</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>456</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Jalsevac, Mr. Ivan</td>
+        <td>male</td>
+        <td>29.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349240</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>457</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Millet, Mr. Francis Davis</td>
+        <td>male</td>
+        <td>65.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>13509</td>
+        <td>26.55</td>
+        <td>E38</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>458</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Kenyon, Mrs. Frederick R (Marion)</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>17464</td>
+        <td>51.8625</td>
+        <td>D21</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>459</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Toomey, Miss. Ellen</td>
+        <td>female</td>
+        <td>50.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>F.C.C. 13531</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>460</td>
+        <td>0</td>
+        <td>3</td>
+        <td>O&#x27;Connor, Mr. Maurice</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>371060</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>461</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Anderson, Mr. Harry</td>
+        <td>male</td>
+        <td>48.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>19952</td>
+        <td>26.55</td>
+        <td>E12</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>462</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Morley, Mr. William</td>
+        <td>male</td>
+        <td>34.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>364506</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>463</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Gee, Mr. Arthur H</td>
+        <td>male</td>
+        <td>47.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>111320</td>
+        <td>38.5</td>
+        <td>E63</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>464</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Milling, Mr. Jacob Christian</td>
+        <td>male</td>
+        <td>48.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>234360</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>465</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Maisner, Mr. Simon</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/S 2816</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>466</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Goncalves, Mr. Manuel Estanslas</td>
+        <td>male</td>
+        <td>38.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SOTON/O.Q. 3101306</td>
+        <td>7.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>467</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Campbell, Mr. William</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>239853</td>
+        <td>0.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>468</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Smart, Mr. John Montgomery</td>
+        <td>male</td>
+        <td>56.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113792</td>
+        <td>26.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>469</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Scanlan, Mr. James</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>36209</td>
+        <td>7.725</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>470</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Baclini, Miss. Helene Barbara</td>
+        <td>female</td>
+        <td>0.75</td>
+        <td>2</td>
+        <td>1</td>
+        <td>2666</td>
+        <td>19.2583</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>471</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Keefe, Mr. Arthur</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>323592</td>
+        <td>7.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>472</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Cacic, Mr. Luka</td>
+        <td>male</td>
+        <td>38.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>315089</td>
+        <td>8.6625</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>473</td>
+        <td>1</td>
+        <td>2</td>
+        <td>West, Mrs. Edwy Arthur (Ada Mary Worth)</td>
+        <td>female</td>
+        <td>33.0</td>
+        <td>1</td>
+        <td>2</td>
+        <td>C.A. 34651</td>
+        <td>27.75</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>474</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Jerwan, Mrs. Amin S (Marie Marthe Thuillard)</td>
+        <td>female</td>
+        <td>23.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SC/AH Basle 541</td>
+        <td>13.7917</td>
+        <td>D</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>475</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Strandberg, Miss. Ida Sofia</td>
+        <td>female</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>7553</td>
+        <td>9.8375</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>476</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Clifford, Mr. George Quincy</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>110465</td>
+        <td>52.0</td>
+        <td>A14</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>477</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Renouf, Mr. Peter Henry</td>
+        <td>male</td>
+        <td>34.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>31027</td>
+        <td>21.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>478</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Braund, Mr. Lewis Richard</td>
+        <td>male</td>
+        <td>29.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>3460</td>
+        <td>7.0458</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>479</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Karlsson, Mr. Nils August</td>
+        <td>male</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>350060</td>
+        <td>7.5208</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>480</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Hirvonen, Miss. Hildur E</td>
+        <td>female</td>
+        <td>2.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>3101298</td>
+        <td>12.2875</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>481</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Goodwin, Master. Harold Victor</td>
+        <td>male</td>
+        <td>9.0</td>
+        <td>5</td>
+        <td>2</td>
+        <td>CA 2144</td>
+        <td>46.9</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>482</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Frost, Mr. Anthony Wood &quot;Archie&quot;</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>239854</td>
+        <td>0.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>483</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Rouse, Mr. Richard Henry</td>
+        <td>male</td>
+        <td>50.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/5 3594</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>484</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Turkula, Mrs. (Hedwig)</td>
+        <td>female</td>
+        <td>63.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>4134</td>
+        <td>9.5875</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>485</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Bishop, Mr. Dickinson H</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>11967</td>
+        <td>91.0792</td>
+        <td>B49</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>486</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Lefebre, Miss. Jeannie</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>3</td>
+        <td>1</td>
+        <td>4133</td>
+        <td>25.4667</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>487</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Hoyt, Mrs. Frederick Maxfield (Jane Anne Forby)</td>
+        <td>female</td>
+        <td>35.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>19943</td>
+        <td>90.0</td>
+        <td>C93</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>488</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Kent, Mr. Edward Austin</td>
+        <td>male</td>
+        <td>58.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>11771</td>
+        <td>29.7</td>
+        <td>B37</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>489</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Somerton, Mr. Francis William</td>
+        <td>male</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A.5. 18509</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>490</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Coutts, Master. Eden Leslie &quot;Neville&quot;</td>
+        <td>male</td>
+        <td>9.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>C.A. 37671</td>
+        <td>15.9</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>491</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Hagland, Mr. Konrad Mathias Reiersen</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>65304</td>
+        <td>19.9667</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>492</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Windelov, Mr. Einar</td>
+        <td>male</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SOTON/OQ 3101317</td>
+        <td>7.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>493</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Molson, Mr. Harry Markland</td>
+        <td>male</td>
+        <td>55.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113787</td>
+        <td>30.5</td>
+        <td>C30</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>494</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Artagaveytia, Mr. Ramon</td>
+        <td>male</td>
+        <td>71.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17609</td>
+        <td>49.5042</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>495</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Stanley, Mr. Edward Roland</td>
+        <td>male</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/4 45380</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>496</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Yousseff, Mr. Gerious</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2627</td>
+        <td>14.4583</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>497</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Eustis, Miss. Elizabeth Mussey</td>
+        <td>female</td>
+        <td>54.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>36947</td>
+        <td>78.2667</td>
+        <td>D20</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>498</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Shellard, Mr. Frederick William</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C.A. 6212</td>
+        <td>15.1</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>499</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Allison, Mrs. Hudson J C (Bessie Waldo Daniels)</td>
+        <td>female</td>
+        <td>25.0</td>
+        <td>1</td>
+        <td>2</td>
+        <td>113781</td>
+        <td>151.55</td>
+        <td>C22 C26</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>500</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Svensson, Mr. Olof</td>
+        <td>male</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>350035</td>
+        <td>7.7958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>501</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Calic, Mr. Petar</td>
+        <td>male</td>
+        <td>17.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>315086</td>
+        <td>8.6625</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>502</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Canavan, Miss. Mary</td>
+        <td>female</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>364846</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>503</td>
+        <td>0</td>
+        <td>3</td>
+        <td>O&#x27;Sullivan, Miss. Bridget Mary</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>330909</td>
+        <td>7.6292</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>504</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Laitinen, Miss. Kristina Sofia</td>
+        <td>female</td>
+        <td>37.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>4135</td>
+        <td>9.5875</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>505</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Maioni, Miss. Roberta</td>
+        <td>female</td>
+        <td>16.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>110152</td>
+        <td>86.5</td>
+        <td>B79</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>506</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Penasco y Castellana, Mr. Victor de Satode</td>
+        <td>male</td>
+        <td>18.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>PC 17758</td>
+        <td>108.9</td>
+        <td>C65</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>507</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Quick, Mrs. Frederick Charles (Jane Richards)</td>
+        <td>female</td>
+        <td>33.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>26360</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>508</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Bradley, Mr. George (&quot;George Arthur Brayton&quot;)</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>111427</td>
+        <td>26.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>509</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Olsen, Mr. Henry Margido</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C 4001</td>
+        <td>22.525</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>510</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Lang, Mr. Fang</td>
+        <td>male</td>
+        <td>26.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>1601</td>
+        <td>56.4958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>511</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Daly, Mr. Eugene Patrick</td>
+        <td>male</td>
+        <td>29.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>382651</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>512</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Webber, Mr. James</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SOTON/OQ 3101316</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>513</td>
+        <td>1</td>
+        <td>1</td>
+        <td>McGough, Mr. James Robert</td>
+        <td>male</td>
+        <td>36.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17473</td>
+        <td>26.2875</td>
+        <td>E25</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>514</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Rothschild, Mrs. Martin (Elizabeth L. Barrett)</td>
+        <td>female</td>
+        <td>54.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>PC 17603</td>
+        <td>59.4</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>515</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Coleff, Mr. Satio</td>
+        <td>male</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349209</td>
+        <td>7.4958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>516</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Walker, Mr. William Anderson</td>
+        <td>male</td>
+        <td>47.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>36967</td>
+        <td>34.0208</td>
+        <td>D46</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>517</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Lemore, Mrs. (Amelia Milley)</td>
+        <td>female</td>
+        <td>34.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C.A. 34260</td>
+        <td>10.5</td>
+        <td>F33</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>518</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Ryan, Mr. Patrick</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>371110</td>
+        <td>24.15</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>519</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Angle, Mrs. William A (Florence &quot;Mary&quot; Agnes Hughes)</td>
+        <td>female</td>
+        <td>36.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>226875</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>520</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Pavlovic, Mr. Stefo</td>
+        <td>male</td>
+        <td>32.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349242</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>521</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Perreault, Miss. Anne</td>
+        <td>female</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>12749</td>
+        <td>93.5</td>
+        <td>B73</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>522</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Vovk, Mr. Janko</td>
+        <td>male</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349252</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>523</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Lahoud, Mr. Sarkis</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2624</td>
+        <td>7.225</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>524</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Hippach, Mrs. Louis Albert (Ida Sophia Fischer)</td>
+        <td>female</td>
+        <td>44.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>111361</td>
+        <td>57.9792</td>
+        <td>B18</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>525</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Kassem, Mr. Fared</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2700</td>
+        <td>7.2292</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>526</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Farrell, Mr. James</td>
+        <td>male</td>
+        <td>40.5</td>
+        <td>0</td>
+        <td>0</td>
+        <td>367232</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>527</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Ridsdale, Miss. Lucy</td>
+        <td>female</td>
+        <td>50.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>W./C. 14258</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>528</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Farthing, Mr. John</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17483</td>
+        <td>221.7792</td>
+        <td>C95</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>529</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Salonen, Mr. Johan Werner</td>
+        <td>male</td>
+        <td>39.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>3101296</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>530</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Hocking, Mr. Richard George</td>
+        <td>male</td>
+        <td>23.0</td>
+        <td>2</td>
+        <td>1</td>
+        <td>29104</td>
+        <td>11.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>531</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Quick, Miss. Phyllis May</td>
+        <td>female</td>
+        <td>2.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>26360</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>532</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Toufik, Mr. Nakli</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2641</td>
+        <td>7.2292</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>533</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Elias, Mr. Joseph Jr</td>
+        <td>male</td>
+        <td>17.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>2690</td>
+        <td>7.2292</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>534</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Peter, Mrs. Catherine (Catherine Rizk)</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>2</td>
+        <td>2668</td>
+        <td>22.3583</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>535</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Cacic, Miss. Marija</td>
+        <td>female</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>315084</td>
+        <td>8.6625</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>536</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Hart, Miss. Eva Miriam</td>
+        <td>female</td>
+        <td>7.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>F.C.C. 13529</td>
+        <td>26.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>537</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Butt, Major. Archibald Willingham</td>
+        <td>male</td>
+        <td>45.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113050</td>
+        <td>26.55</td>
+        <td>B38</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>538</td>
+        <td>1</td>
+        <td>1</td>
+        <td>LeRoy, Miss. Bertha</td>
+        <td>female</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17761</td>
+        <td>106.425</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>539</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Risien, Mr. Samuel Beard</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>364498</td>
+        <td>14.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>540</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Frolicher, Miss. Hedwig Margaritha</td>
+        <td>female</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>13568</td>
+        <td>49.5</td>
+        <td>B39</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>541</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Crosby, Miss. Harriet R</td>
+        <td>female</td>
+        <td>36.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>WE/P 5735</td>
+        <td>71.0</td>
+        <td>B22</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>542</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Andersson, Miss. Ingeborg Constanzia</td>
+        <td>female</td>
+        <td>9.0</td>
+        <td>4</td>
+        <td>2</td>
+        <td>347082</td>
+        <td>31.275</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>543</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Andersson, Miss. Sigrid Elisabeth</td>
+        <td>female</td>
+        <td>11.0</td>
+        <td>4</td>
+        <td>2</td>
+        <td>347082</td>
+        <td>31.275</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>544</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Beane, Mr. Edward</td>
+        <td>male</td>
+        <td>32.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>2908</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>545</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Douglas, Mr. Walter Donald</td>
+        <td>male</td>
+        <td>50.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>PC 17761</td>
+        <td>106.425</td>
+        <td>C86</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>546</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Nicholson, Mr. Arthur Ernest</td>
+        <td>male</td>
+        <td>64.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>693</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>547</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Beane, Mrs. Edward (Ethel Clarke)</td>
+        <td>female</td>
+        <td>19.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>2908</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>548</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Padro y Manent, Mr. Julian</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SC/PARIS 2146</td>
+        <td>13.8625</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>549</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Goldsmith, Mr. Frank John</td>
+        <td>male</td>
+        <td>33.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>363291</td>
+        <td>20.525</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>550</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Davies, Master. John Morgan Jr</td>
+        <td>male</td>
+        <td>8.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>C.A. 33112</td>
+        <td>36.75</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>551</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Thayer, Mr. John Borland Jr</td>
+        <td>male</td>
+        <td>17.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>17421</td>
+        <td>110.8833</td>
+        <td>C70</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>552</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Sharp, Mr. Percival James R</td>
+        <td>male</td>
+        <td>27.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>244358</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>553</td>
+        <td>0</td>
+        <td>3</td>
+        <td>O&#x27;Brien, Mr. Timothy</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>330979</td>
+        <td>7.8292</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>554</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Leeni, Mr. Fahim (&quot;Philip Zenni&quot;)</td>
+        <td>male</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2620</td>
+        <td>7.225</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>555</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Ohman, Miss. Velin</td>
+        <td>female</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347085</td>
+        <td>7.775</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>556</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Wright, Mr. George</td>
+        <td>male</td>
+        <td>62.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113807</td>
+        <td>26.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>557</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Duff Gordon, Lady. (Lucille Christiana Sutherland) (&quot;Mrs Morgan&quot;)</td>
+        <td>female</td>
+        <td>48.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>11755</td>
+        <td>39.6</td>
+        <td>A16</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>558</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Robbins, Mr. Victor</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17757</td>
+        <td>227.525</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>559</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Taussig, Mrs. Emil (Tillie Mandelbaum)</td>
+        <td>female</td>
+        <td>39.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>110413</td>
+        <td>79.65</td>
+        <td>E67</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>560</td>
+        <td>1</td>
+        <td>3</td>
+        <td>de Messemaeker, Mrs. Guillaume Joseph (Emma)</td>
+        <td>female</td>
+        <td>36.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>345572</td>
+        <td>17.4</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>561</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Morrow, Mr. Thomas Rowan</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>372622</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>562</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Sivic, Mr. Husein</td>
+        <td>male</td>
+        <td>40.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349251</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>563</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Norman, Mr. Robert Douglas</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>218629</td>
+        <td>13.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>564</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Simmons, Mr. John</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SOTON/OQ 392082</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>565</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Meanwell, Miss. (Marion Ogden)</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SOTON/O.Q. 392087</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>566</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Davies, Mr. Alfred J</td>
+        <td>male</td>
+        <td>24.0</td>
+        <td>2</td>
+        <td>0</td>
+        <td>A/4 48871</td>
+        <td>24.15</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>567</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Stoytcheff, Mr. Ilia</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349205</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>568</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Palsson, Mrs. Nils (Alma Cornelia Berglund)</td>
+        <td>female</td>
+        <td>29.0</td>
+        <td>0</td>
+        <td>4</td>
+        <td>349909</td>
+        <td>21.075</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>569</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Doharr, Mr. Tannous</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2686</td>
+        <td>7.2292</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>570</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Jonsson, Mr. Carl</td>
+        <td>male</td>
+        <td>32.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>350417</td>
+        <td>7.8542</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>571</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Harris, Mr. George</td>
+        <td>male</td>
+        <td>62.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>S.W./PP 752</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>572</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Appleton, Mrs. Edward Dale (Charlotte Lamson)</td>
+        <td>female</td>
+        <td>53.0</td>
+        <td>2</td>
+        <td>0</td>
+        <td>11769</td>
+        <td>51.4792</td>
+        <td>C101</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>573</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Flynn, Mr. John Irwin (&quot;Irving&quot;)</td>
+        <td>male</td>
+        <td>36.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17474</td>
+        <td>26.3875</td>
+        <td>E25</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>574</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Kelly, Miss. Mary</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>14312</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>575</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Rush, Mr. Alfred George John</td>
+        <td>male</td>
+        <td>16.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/4. 20589</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>576</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Patchett, Mr. George</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>358585</td>
+        <td>14.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>577</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Garside, Miss. Ethel</td>
+        <td>female</td>
+        <td>34.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>243880</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>578</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Silvey, Mrs. William Baird (Alice Munger)</td>
+        <td>female</td>
+        <td>39.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>13507</td>
+        <td>55.9</td>
+        <td>E44</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>579</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Caram, Mrs. Joseph (Maria Elias)</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>2689</td>
+        <td>14.4583</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>580</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Jussila, Mr. Eiriik</td>
+        <td>male</td>
+        <td>32.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>STON/O 2. 3101286</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>581</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Christy, Miss. Julie Rachel</td>
+        <td>female</td>
+        <td>25.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>237789</td>
+        <td>30.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>582</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Thayer, Mrs. John Borland (Marian Longstreth Morris)</td>
+        <td>female</td>
+        <td>39.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>17421</td>
+        <td>110.8833</td>
+        <td>C68</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>583</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Downton, Mr. William James</td>
+        <td>male</td>
+        <td>54.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>28403</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>584</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Ross, Mr. John Hugo</td>
+        <td>male</td>
+        <td>36.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>13049</td>
+        <td>40.125</td>
+        <td>A10</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>585</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Paulner, Mr. Uscher</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>3411</td>
+        <td>8.7125</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>586</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Taussig, Miss. Ruth</td>
+        <td>female</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>110413</td>
+        <td>79.65</td>
+        <td>E68</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>587</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Jarvis, Mr. John Denzil</td>
+        <td>male</td>
+        <td>47.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>237565</td>
+        <td>15.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>588</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Frolicher-Stehli, Mr. Maxmillian</td>
+        <td>male</td>
+        <td>60.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>13567</td>
+        <td>79.2</td>
+        <td>B41</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>589</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Gilinski, Mr. Eliezer</td>
+        <td>male</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>14973</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>590</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Murdlin, Mr. Joseph</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A./5. 3235</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>591</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Rintamaki, Mr. Matti</td>
+        <td>male</td>
+        <td>35.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>STON/O 2. 3101273</td>
+        <td>7.125</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>592</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Stephenson, Mrs. Walter Bertram (Martha Eustis)</td>
+        <td>female</td>
+        <td>52.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>36947</td>
+        <td>78.2667</td>
+        <td>D20</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>593</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Elsbury, Mr. William James</td>
+        <td>male</td>
+        <td>47.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/5 3902</td>
+        <td>7.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>594</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Bourke, Miss. Mary</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>2</td>
+        <td>364848</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>595</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Chapman, Mr. John Henry</td>
+        <td>male</td>
+        <td>37.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>SC/AH 29037</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>596</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Van Impe, Mr. Jean Baptiste</td>
+        <td>male</td>
+        <td>36.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>345773</td>
+        <td>24.15</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>597</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Leitch, Miss. Jessie Wills</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>248727</td>
+        <td>33.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>598</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Johnson, Mr. Alfred</td>
+        <td>male</td>
+        <td>49.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>LINE</td>
+        <td>0.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>599</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Boulos, Mr. Hanna</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2664</td>
+        <td>7.225</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>600</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Duff Gordon, Sir. Cosmo Edmund (&quot;Mr Morgan&quot;)</td>
+        <td>male</td>
+        <td>49.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>PC 17485</td>
+        <td>56.9292</td>
+        <td>A20</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>601</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Jacobsohn, Mrs. Sidney Samuel (Amy Frances Christy)</td>
+        <td>female</td>
+        <td>24.0</td>
+        <td>2</td>
+        <td>1</td>
+        <td>243847</td>
+        <td>27.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>602</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Slabenoff, Mr. Petco</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349214</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>603</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Harrington, Mr. Charles H</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113796</td>
+        <td>42.4</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>604</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Torber, Mr. Ernst William</td>
+        <td>male</td>
+        <td>44.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>364511</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>605</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Homer, Mr. Harry (&quot;Mr E Haven&quot;)</td>
+        <td>male</td>
+        <td>35.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>111426</td>
+        <td>26.55</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>606</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Lindell, Mr. Edvard Bengtsson</td>
+        <td>male</td>
+        <td>36.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>349910</td>
+        <td>15.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>607</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Karaic, Mr. Milan</td>
+        <td>male</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349246</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>608</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Daniel, Mr. Robert Williams</td>
+        <td>male</td>
+        <td>27.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113804</td>
+        <td>30.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>609</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Laroche, Mrs. Joseph (Juliette Marie Louise Lafargue)</td>
+        <td>female</td>
+        <td>22.0</td>
+        <td>1</td>
+        <td>2</td>
+        <td>SC/Paris 2123</td>
+        <td>41.5792</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>610</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Shutes, Miss. Elizabeth W</td>
+        <td>female</td>
+        <td>40.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17582</td>
+        <td>153.4625</td>
+        <td>C125</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>611</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Andersson, Mrs. Anders Johan (Alfrida Konstantia Brogren)</td>
+        <td>female</td>
+        <td>39.0</td>
+        <td>1</td>
+        <td>5</td>
+        <td>347082</td>
+        <td>31.275</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>612</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Jardin, Mr. Jose Neto</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SOTON/O.Q. 3101305</td>
+        <td>7.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>613</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Murphy, Miss. Margaret Jane</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>367230</td>
+        <td>15.5</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>614</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Horgan, Mr. John</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>370377</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>615</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Brocklebank, Mr. William Alfred</td>
+        <td>male</td>
+        <td>35.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>364512</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>616</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Herman, Miss. Alice</td>
+        <td>female</td>
+        <td>24.0</td>
+        <td>1</td>
+        <td>2</td>
+        <td>220845</td>
+        <td>65.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>617</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Danbom, Mr. Ernst Gilbert</td>
+        <td>male</td>
+        <td>34.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>347080</td>
+        <td>14.4</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>618</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Lobb, Mrs. William Arthur (Cordelia K Stanlick)</td>
+        <td>female</td>
+        <td>26.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>A/5. 3336</td>
+        <td>16.1</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>619</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Becker, Miss. Marion Louise</td>
+        <td>female</td>
+        <td>4.0</td>
+        <td>2</td>
+        <td>1</td>
+        <td>230136</td>
+        <td>39.0</td>
+        <td>F4</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>620</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Gavey, Mr. Lawrence</td>
+        <td>male</td>
+        <td>26.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>31028</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>621</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Yasbeck, Mr. Antoni</td>
+        <td>male</td>
+        <td>27.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>2659</td>
+        <td>14.4542</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>622</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Kimball, Mr. Edwin Nelson Jr</td>
+        <td>male</td>
+        <td>42.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>11753</td>
+        <td>52.5542</td>
+        <td>D19</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>623</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Nakid, Mr. Sahid</td>
+        <td>male</td>
+        <td>20.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>2653</td>
+        <td>15.7417</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>624</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Hansen, Mr. Henry Damsgaard</td>
+        <td>male</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>350029</td>
+        <td>7.8542</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>625</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Bowen, Mr. David John &quot;Dai&quot;</td>
+        <td>male</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>54636</td>
+        <td>16.1</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>626</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Sutton, Mr. Frederick</td>
+        <td>male</td>
+        <td>61.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>36963</td>
+        <td>32.3208</td>
+        <td>D50</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>627</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Kirkland, Rev. Charles Leonard</td>
+        <td>male</td>
+        <td>57.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>219533</td>
+        <td>12.35</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>628</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Longley, Miss. Gretchen Fiske</td>
+        <td>female</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>13502</td>
+        <td>77.9583</td>
+        <td>D9</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>629</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Bostandyeff, Mr. Guentcho</td>
+        <td>male</td>
+        <td>26.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349224</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>630</td>
+        <td>0</td>
+        <td>3</td>
+        <td>O&#x27;Connell, Mr. Patrick D</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>334912</td>
+        <td>7.7333</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>631</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Barkworth, Mr. Algernon Henry Wilson</td>
+        <td>male</td>
+        <td>80.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>27042</td>
+        <td>30.0</td>
+        <td>A23</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>632</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Lundahl, Mr. Johan Svensson</td>
+        <td>male</td>
+        <td>51.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347743</td>
+        <td>7.0542</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>633</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Stahelin-Maeglin, Dr. Max</td>
+        <td>male</td>
+        <td>32.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>13214</td>
+        <td>30.5</td>
+        <td>B50</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>634</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Parr, Mr. William Henry Marsh</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>112052</td>
+        <td>0.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>635</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Skoog, Miss. Mabel</td>
+        <td>female</td>
+        <td>9.0</td>
+        <td>3</td>
+        <td>2</td>
+        <td>347088</td>
+        <td>27.9</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>636</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Davis, Miss. Mary</td>
+        <td>female</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>237668</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>637</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Leinonen, Mr. Antti Gustaf</td>
+        <td>male</td>
+        <td>32.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>STON/O 2. 3101292</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>638</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Collyer, Mr. Harvey</td>
+        <td>male</td>
+        <td>31.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>C.A. 31921</td>
+        <td>26.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>639</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Panula, Mrs. Juha (Maria Emilia Ojala)</td>
+        <td>female</td>
+        <td>41.0</td>
+        <td>0</td>
+        <td>5</td>
+        <td>3101295</td>
+        <td>39.6875</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>640</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Thorneycroft, Mr. Percival</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>376564</td>
+        <td>16.1</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>641</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Jensen, Mr. Hans Peder</td>
+        <td>male</td>
+        <td>20.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>350050</td>
+        <td>7.8542</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>642</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Sagesser, Mlle. Emma</td>
+        <td>female</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17477</td>
+        <td>69.3</td>
+        <td>B35</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>643</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Skoog, Miss. Margit Elizabeth</td>
+        <td>female</td>
+        <td>2.0</td>
+        <td>3</td>
+        <td>2</td>
+        <td>347088</td>
+        <td>27.9</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>644</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Foo, Mr. Choong</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>1601</td>
+        <td>56.4958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>645</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Baclini, Miss. Eugenie</td>
+        <td>female</td>
+        <td>0.75</td>
+        <td>2</td>
+        <td>1</td>
+        <td>2666</td>
+        <td>19.2583</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>646</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Harper, Mr. Henry Sleeper</td>
+        <td>male</td>
+        <td>48.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>PC 17572</td>
+        <td>76.7292</td>
+        <td>D33</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>647</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Cor, Mr. Liudevit</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349231</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>648</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Simonius-Blumer, Col. Oberst Alfons</td>
+        <td>male</td>
+        <td>56.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>13213</td>
+        <td>35.5</td>
+        <td>A26</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>649</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Willey, Mr. Edward</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>S.O./P.P. 751</td>
+        <td>7.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>650</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Stanley, Miss. Amy Zillah Elsie</td>
+        <td>female</td>
+        <td>23.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>CA. 2314</td>
+        <td>7.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>651</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Mitkoff, Mr. Mito</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349221</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>652</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Doling, Miss. Elsie</td>
+        <td>female</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>231919</td>
+        <td>23.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>653</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Kalvik, Mr. Johannes Halvorsen</td>
+        <td>male</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>8475</td>
+        <td>8.4333</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>654</td>
+        <td>1</td>
+        <td>3</td>
+        <td>O&#x27;Leary, Miss. Hanora &quot;Norah&quot;</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>330919</td>
+        <td>7.8292</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>655</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Hegarty, Miss. Hanora &quot;Nora&quot;</td>
+        <td>female</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>365226</td>
+        <td>6.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>656</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Hickman, Mr. Leonard Mark</td>
+        <td>male</td>
+        <td>24.0</td>
+        <td>2</td>
+        <td>0</td>
+        <td>S.O.C. 14879</td>
+        <td>73.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>657</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Radeff, Mr. Alexander</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349223</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>658</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Bourke, Mrs. John (Catherine)</td>
+        <td>female</td>
+        <td>32.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>364849</td>
+        <td>15.5</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>659</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Eitemiller, Mr. George Floyd</td>
+        <td>male</td>
+        <td>23.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>29751</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>660</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Newell, Mr. Arthur Webster</td>
+        <td>male</td>
+        <td>58.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>35273</td>
+        <td>113.275</td>
+        <td>D48</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>661</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Frauenthal, Dr. Henry William</td>
+        <td>male</td>
+        <td>50.0</td>
+        <td>2</td>
+        <td>0</td>
+        <td>PC 17611</td>
+        <td>133.65</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>662</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Badt, Mr. Mohamed</td>
+        <td>male</td>
+        <td>40.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2623</td>
+        <td>7.225</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>663</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Colley, Mr. Edward Pomeroy</td>
+        <td>male</td>
+        <td>47.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>5727</td>
+        <td>25.5875</td>
+        <td>E58</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>664</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Coleff, Mr. Peju</td>
+        <td>male</td>
+        <td>36.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349210</td>
+        <td>7.4958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>665</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Lindqvist, Mr. Eino William</td>
+        <td>male</td>
+        <td>20.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>STON/O 2. 3101285</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>666</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Hickman, Mr. Lewis</td>
+        <td>male</td>
+        <td>32.0</td>
+        <td>2</td>
+        <td>0</td>
+        <td>S.O.C. 14879</td>
+        <td>73.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>667</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Butler, Mr. Reginald Fenton</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>234686</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>668</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Rommetvedt, Mr. Knud Paust</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>312993</td>
+        <td>7.775</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>669</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Cook, Mr. Jacob</td>
+        <td>male</td>
+        <td>43.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/5 3536</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>670</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Taylor, Mrs. Elmer Zebley (Juliet Cummins Wright)</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>19996</td>
+        <td>52.0</td>
+        <td>C126</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>671</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Brown, Mrs. Thomas William Solomon (Elizabeth Catherine Ford)</td>
+        <td>female</td>
+        <td>40.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>29750</td>
+        <td>39.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>672</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Davidson, Mr. Thornton</td>
+        <td>male</td>
+        <td>31.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>F.C. 12750</td>
+        <td>52.0</td>
+        <td>B71</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>673</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Mitchell, Mr. Henry Michael</td>
+        <td>male</td>
+        <td>70.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C.A. 24580</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>674</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Wilhelms, Mr. Charles</td>
+        <td>male</td>
+        <td>31.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>244270</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>675</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Watson, Mr. Ennis Hastings</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>239856</td>
+        <td>0.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>676</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Edvardsson, Mr. Gustaf Hjalmar</td>
+        <td>male</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349912</td>
+        <td>7.775</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>677</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Sawyer, Mr. Frederick Charles</td>
+        <td>male</td>
+        <td>24.5</td>
+        <td>0</td>
+        <td>0</td>
+        <td>342826</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>678</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Turja, Miss. Anna Sofia</td>
+        <td>female</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>4138</td>
+        <td>9.8417</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>679</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Goodwin, Mrs. Frederick (Augusta Tyler)</td>
+        <td>female</td>
+        <td>43.0</td>
+        <td>1</td>
+        <td>6</td>
+        <td>CA 2144</td>
+        <td>46.9</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>680</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Cardeza, Mr. Thomas Drake Martinez</td>
+        <td>male</td>
+        <td>36.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>PC 17755</td>
+        <td>512.3292</td>
+        <td>B51 B53 B55</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>681</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Peters, Miss. Katie</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>330935</td>
+        <td>8.1375</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>682</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Hassab, Mr. Hammad</td>
+        <td>male</td>
+        <td>27.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17572</td>
+        <td>76.7292</td>
+        <td>D49</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>683</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Olsvigen, Mr. Thor Anderson</td>
+        <td>male</td>
+        <td>20.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>6563</td>
+        <td>9.225</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>684</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Goodwin, Mr. Charles Edward</td>
+        <td>male</td>
+        <td>14.0</td>
+        <td>5</td>
+        <td>2</td>
+        <td>CA 2144</td>
+        <td>46.9</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>685</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Brown, Mr. Thomas William Solomon</td>
+        <td>male</td>
+        <td>60.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>29750</td>
+        <td>39.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>686</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Laroche, Mr. Joseph Philippe Lemercier</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>1</td>
+        <td>2</td>
+        <td>SC/Paris 2123</td>
+        <td>41.5792</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>687</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Panula, Mr. Jaako Arnold</td>
+        <td>male</td>
+        <td>14.0</td>
+        <td>4</td>
+        <td>1</td>
+        <td>3101295</td>
+        <td>39.6875</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>688</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Dakic, Mr. Branko</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349228</td>
+        <td>10.1708</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>689</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Fischer, Mr. Eberhard Thelander</td>
+        <td>male</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>350036</td>
+        <td>7.7958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>690</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Madill, Miss. Georgette Alexandra</td>
+        <td>female</td>
+        <td>15.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>24160</td>
+        <td>211.3375</td>
+        <td>B5</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>691</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Dick, Mr. Albert Adrian</td>
+        <td>male</td>
+        <td>31.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>17474</td>
+        <td>57.0</td>
+        <td>B20</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>692</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Karun, Miss. Manca</td>
+        <td>female</td>
+        <td>4.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>349256</td>
+        <td>13.4167</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>693</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Lam, Mr. Ali</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>1601</td>
+        <td>56.4958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>694</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Saad, Mr. Khalil</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2672</td>
+        <td>7.225</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>695</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Weir, Col. John</td>
+        <td>male</td>
+        <td>60.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113800</td>
+        <td>26.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>696</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Chapman, Mr. Charles Henry</td>
+        <td>male</td>
+        <td>52.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>248731</td>
+        <td>13.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>697</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Kelly, Mr. James</td>
+        <td>male</td>
+        <td>44.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>363592</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>698</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Mullens, Miss. Katherine &quot;Katie&quot;</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>35852</td>
+        <td>7.7333</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>699</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Thayer, Mr. John Borland</td>
+        <td>male</td>
+        <td>49.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>17421</td>
+        <td>110.8833</td>
+        <td>C68</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>700</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Humblen, Mr. Adolf Mathias Nicolai Olsen</td>
+        <td>male</td>
+        <td>42.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>348121</td>
+        <td>7.65</td>
+        <td>F G63</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>701</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Astor, Mrs. John Jacob (Madeleine Talmadge Force)</td>
+        <td>female</td>
+        <td>18.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>PC 17757</td>
+        <td>227.525</td>
+        <td>C62 C64</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>702</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Silverthorne, Mr. Spencer Victor</td>
+        <td>male</td>
+        <td>35.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17475</td>
+        <td>26.2875</td>
+        <td>E24</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>703</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Barbara, Miss. Saiide</td>
+        <td>female</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>2691</td>
+        <td>14.4542</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>704</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Gallagher, Mr. Martin</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>36864</td>
+        <td>7.7417</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>705</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Hansen, Mr. Henrik Juul</td>
+        <td>male</td>
+        <td>26.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>350025</td>
+        <td>7.8542</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>706</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Morley, Mr. Henry Samuel (&quot;Mr Henry Marshall&quot;)</td>
+        <td>male</td>
+        <td>39.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>250655</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>707</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Kelly, Mrs. Florence &quot;Fannie&quot;</td>
+        <td>female</td>
+        <td>45.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>223596</td>
+        <td>13.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>708</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Calderhead, Mr. Edward Pennington</td>
+        <td>male</td>
+        <td>42.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17476</td>
+        <td>26.2875</td>
+        <td>E24</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>709</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Cleaver, Miss. Alice</td>
+        <td>female</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113781</td>
+        <td>151.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>710</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Moubarek, Master. Halim Gonios (&quot;William George&quot;)</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>1</td>
+        <td>2661</td>
+        <td>15.2458</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>711</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Mayne, Mlle. Berthe Antonine (&quot;Mrs de Villiers&quot;)</td>
+        <td>female</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17482</td>
+        <td>49.5042</td>
+        <td>C90</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>712</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Klaber, Mr. Herman</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113028</td>
+        <td>26.55</td>
+        <td>C124</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>713</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Taylor, Mr. Elmer Zebley</td>
+        <td>male</td>
+        <td>48.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>19996</td>
+        <td>52.0</td>
+        <td>C126</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>714</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Larsson, Mr. August Viktor</td>
+        <td>male</td>
+        <td>29.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>7545</td>
+        <td>9.4833</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>715</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Greenberg, Mr. Samuel</td>
+        <td>male</td>
+        <td>52.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>250647</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>716</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Soholt, Mr. Peter Andreas Lauritz Andersen</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>348124</td>
+        <td>7.65</td>
+        <td>F G73</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>717</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Endres, Miss. Caroline Louise</td>
+        <td>female</td>
+        <td>38.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17757</td>
+        <td>227.525</td>
+        <td>C45</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>718</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Troutt, Miss. Edwina Celia &quot;Winnie&quot;</td>
+        <td>female</td>
+        <td>27.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>34218</td>
+        <td>10.5</td>
+        <td>E101</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>719</td>
+        <td>0</td>
+        <td>3</td>
+        <td>McEvoy, Mr. Michael</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>36568</td>
+        <td>15.5</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>720</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Johnson, Mr. Malkolm Joackim</td>
+        <td>male</td>
+        <td>33.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347062</td>
+        <td>7.775</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>721</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Harper, Miss. Annie Jessie &quot;Nina&quot;</td>
+        <td>female</td>
+        <td>6.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>248727</td>
+        <td>33.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>722</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Jensen, Mr. Svend Lauritz</td>
+        <td>male</td>
+        <td>17.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>350048</td>
+        <td>7.0542</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>723</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Gillespie, Mr. William Henry</td>
+        <td>male</td>
+        <td>34.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>12233</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>724</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Hodges, Mr. Henry Price</td>
+        <td>male</td>
+        <td>50.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>250643</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>725</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Chambers, Mr. Norman Campbell</td>
+        <td>male</td>
+        <td>27.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>113806</td>
+        <td>53.1</td>
+        <td>E8</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>726</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Oreskovic, Mr. Luka</td>
+        <td>male</td>
+        <td>20.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>315094</td>
+        <td>8.6625</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>727</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Renouf, Mrs. Peter Henry (Lillian Jefferys)</td>
+        <td>female</td>
+        <td>30.0</td>
+        <td>3</td>
+        <td>0</td>
+        <td>31027</td>
+        <td>21.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>728</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Mannion, Miss. Margareth</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>36866</td>
+        <td>7.7375</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>729</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Bryhl, Mr. Kurt Arnold Gottfrid</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>236853</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>730</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Ilmakangas, Miss. Pieta Sofia</td>
+        <td>female</td>
+        <td>25.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>STON/O2. 3101271</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>731</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Allen, Miss. Elisabeth Walton</td>
+        <td>female</td>
+        <td>29.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>24160</td>
+        <td>211.3375</td>
+        <td>B5</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>732</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Hassan, Mr. Houssein G N</td>
+        <td>male</td>
+        <td>11.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2699</td>
+        <td>18.7875</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>733</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Knight, Mr. Robert J</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>239855</td>
+        <td>0.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>734</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Berriman, Mr. William John</td>
+        <td>male</td>
+        <td>23.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>28425</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>735</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Troupiansky, Mr. Moses Aaron</td>
+        <td>male</td>
+        <td>23.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>233639</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>736</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Williams, Mr. Leslie</td>
+        <td>male</td>
+        <td>28.5</td>
+        <td>0</td>
+        <td>0</td>
+        <td>54636</td>
+        <td>16.1</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>737</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Ford, Mrs. Edward (Margaret Ann Watson)</td>
+        <td>female</td>
+        <td>48.0</td>
+        <td>1</td>
+        <td>3</td>
+        <td>W./C. 6608</td>
+        <td>34.375</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>738</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Lesurer, Mr. Gustave J</td>
+        <td>male</td>
+        <td>35.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17755</td>
+        <td>512.3292</td>
+        <td>B101</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>739</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Ivanoff, Mr. Kanio</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349201</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>740</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Nankoff, Mr. Minko</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349218</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>741</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Hawksford, Mr. Walter James</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>16988</td>
+        <td>30.0</td>
+        <td>D45</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>742</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Cavendish, Mr. Tyrell William</td>
+        <td>male</td>
+        <td>36.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>19877</td>
+        <td>78.85</td>
+        <td>C46</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>743</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Ryerson, Miss. Susan Parker &quot;Suzette&quot;</td>
+        <td>female</td>
+        <td>21.0</td>
+        <td>2</td>
+        <td>2</td>
+        <td>PC 17608</td>
+        <td>262.375</td>
+        <td>B57 B59 B63 B66</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>744</td>
+        <td>0</td>
+        <td>3</td>
+        <td>McNamee, Mr. Neal</td>
+        <td>male</td>
+        <td>24.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>376566</td>
+        <td>16.1</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>745</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Stranden, Mr. Juho</td>
+        <td>male</td>
+        <td>31.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>STON/O 2. 3101288</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>746</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Crosby, Capt. Edward Gifford</td>
+        <td>male</td>
+        <td>70.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>WE/P 5735</td>
+        <td>71.0</td>
+        <td>B22</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>747</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Abbott, Mr. Rossmore Edward</td>
+        <td>male</td>
+        <td>16.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>C.A. 2673</td>
+        <td>20.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>748</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Sinkkonen, Miss. Anna</td>
+        <td>female</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>250648</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>749</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Marvin, Mr. Daniel Warner</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>113773</td>
+        <td>53.1</td>
+        <td>D30</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>750</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Connaghton, Mr. Michael</td>
+        <td>male</td>
+        <td>31.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>335097</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>751</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Wells, Miss. Joan</td>
+        <td>female</td>
+        <td>4.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>29103</td>
+        <td>23.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>752</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Moor, Master. Meier</td>
+        <td>male</td>
+        <td>6.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>392096</td>
+        <td>12.475</td>
+        <td>E121</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>753</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Vande Velde, Mr. Johannes Joseph</td>
+        <td>male</td>
+        <td>33.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>345780</td>
+        <td>9.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>754</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Jonkoff, Mr. Lalio</td>
+        <td>male</td>
+        <td>23.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349204</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>755</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Herman, Mrs. Samuel (Jane Laver)</td>
+        <td>female</td>
+        <td>48.0</td>
+        <td>1</td>
+        <td>2</td>
+        <td>220845</td>
+        <td>65.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>756</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Hamalainen, Master. Viljo</td>
+        <td>male</td>
+        <td>0.67</td>
+        <td>1</td>
+        <td>1</td>
+        <td>250649</td>
+        <td>14.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>757</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Carlsson, Mr. August Sigfrid</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>350042</td>
+        <td>7.7958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>758</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Bailey, Mr. Percy Andrew</td>
+        <td>male</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>29108</td>
+        <td>11.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>759</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Theobald, Mr. Thomas Leonard</td>
+        <td>male</td>
+        <td>34.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>363294</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>760</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Rothes, the Countess. of (Lucy Noel Martha Dyer-Edwards)</td>
+        <td>female</td>
+        <td>33.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>110152</td>
+        <td>86.5</td>
+        <td>B77</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>761</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Garfirth, Mr. John</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>358585</td>
+        <td>14.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>762</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Nirva, Mr. Iisakki Antino Aijo</td>
+        <td>male</td>
+        <td>41.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SOTON/O2 3101272</td>
+        <td>7.125</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>763</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Barah, Mr. Hanna Assi</td>
+        <td>male</td>
+        <td>20.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2663</td>
+        <td>7.2292</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>764</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Carter, Mrs. William Ernest (Lucile Polk)</td>
+        <td>female</td>
+        <td>36.0</td>
+        <td>1</td>
+        <td>2</td>
+        <td>113760</td>
+        <td>120.0</td>
+        <td>B96 B98</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>765</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Eklund, Mr. Hans Linus</td>
+        <td>male</td>
+        <td>16.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347074</td>
+        <td>7.775</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>766</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Hogeboom, Mrs. John C (Anna Andrews)</td>
+        <td>female</td>
+        <td>51.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>13502</td>
+        <td>77.9583</td>
+        <td>D11</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>767</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Brewe, Dr. Arthur Jackson</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>112379</td>
+        <td>39.6</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>768</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Mangan, Miss. Mary</td>
+        <td>female</td>
+        <td>30.5</td>
+        <td>0</td>
+        <td>0</td>
+        <td>364850</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>769</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Moran, Mr. Daniel J</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>371110</td>
+        <td>24.15</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>770</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Gronnestad, Mr. Daniel Danielsen</td>
+        <td>male</td>
+        <td>32.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>8471</td>
+        <td>8.3625</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>771</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Lievens, Mr. Rene Aime</td>
+        <td>male</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>345781</td>
+        <td>9.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>772</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Jensen, Mr. Niels Peder</td>
+        <td>male</td>
+        <td>48.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>350047</td>
+        <td>7.8542</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>773</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Mack, Mrs. (Mary)</td>
+        <td>female</td>
+        <td>57.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>S.O./P.P. 3</td>
+        <td>10.5</td>
+        <td>E77</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>774</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Elias, Mr. Dibo</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2674</td>
+        <td>7.225</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>775</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Hocking, Mrs. Elizabeth (Eliza Needs)</td>
+        <td>female</td>
+        <td>54.0</td>
+        <td>1</td>
+        <td>3</td>
+        <td>29105</td>
+        <td>23.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>776</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Myhrman, Mr. Pehr Fabian Oliver Malkolm</td>
+        <td>male</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347078</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>777</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Tobin, Mr. Roger</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>383121</td>
+        <td>7.75</td>
+        <td>F38</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>778</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Emanuel, Miss. Virginia Ethel</td>
+        <td>female</td>
+        <td>5.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>364516</td>
+        <td>12.475</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>779</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Kilgannon, Mr. Thomas J</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>36865</td>
+        <td>7.7375</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>780</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Robert, Mrs. Edward Scott (Elisabeth Walton McMillan)</td>
+        <td>female</td>
+        <td>43.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>24160</td>
+        <td>211.3375</td>
+        <td>B3</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>781</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Ayoub, Miss. Banoura</td>
+        <td>female</td>
+        <td>13.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2687</td>
+        <td>7.2292</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>782</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Dick, Mrs. Albert Adrian (Vera Gillespie)</td>
+        <td>female</td>
+        <td>17.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>17474</td>
+        <td>57.0</td>
+        <td>B20</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>783</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Long, Mr. Milton Clyde</td>
+        <td>male</td>
+        <td>29.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113501</td>
+        <td>30.0</td>
+        <td>D6</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>784</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Johnston, Mr. Andrew G</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>2</td>
+        <td>W./C. 6607</td>
+        <td>23.45</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>785</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Ali, Mr. William</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SOTON/O.Q. 3101312</td>
+        <td>7.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>786</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Harmer, Mr. Abraham (David Lishin)</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>374887</td>
+        <td>7.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>787</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Sjoblom, Miss. Anna Sofia</td>
+        <td>female</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>3101265</td>
+        <td>7.4958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>788</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Rice, Master. George Hugh</td>
+        <td>male</td>
+        <td>8.0</td>
+        <td>4</td>
+        <td>1</td>
+        <td>382652</td>
+        <td>29.125</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>789</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Dean, Master. Bertram Vere</td>
+        <td>male</td>
+        <td>1.0</td>
+        <td>1</td>
+        <td>2</td>
+        <td>C.A. 2315</td>
+        <td>20.575</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>790</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Guggenheim, Mr. Benjamin</td>
+        <td>male</td>
+        <td>46.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17593</td>
+        <td>79.2</td>
+        <td>B82 B84</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>791</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Keane, Mr. Andrew &quot;Andy&quot;</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>12460</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>792</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Gaskell, Mr. Alfred</td>
+        <td>male</td>
+        <td>16.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>239865</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>793</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Sage, Miss. Stella Anna</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>8</td>
+        <td>2</td>
+        <td>CA. 2343</td>
+        <td>69.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>794</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Hoyt, Mr. William Fisher</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17600</td>
+        <td>30.6958</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>795</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Dantcheff, Mr. Ristiu</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349203</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>796</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Otter, Mr. Richard</td>
+        <td>male</td>
+        <td>39.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>28213</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>797</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Leader, Dr. Alice (Farnham)</td>
+        <td>female</td>
+        <td>49.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>17465</td>
+        <td>25.9292</td>
+        <td>D17</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>798</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Osman, Mrs. Mara</td>
+        <td>female</td>
+        <td>31.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349244</td>
+        <td>8.6833</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>799</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Ibrahim Shawah, Mr. Yousseff</td>
+        <td>male</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2685</td>
+        <td>7.2292</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>800</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Van Impe, Mrs. Jean Baptiste (Rosalie Paula Govaert)</td>
+        <td>female</td>
+        <td>30.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>345773</td>
+        <td>24.15</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>801</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Ponesell, Mr. Martin</td>
+        <td>male</td>
+        <td>34.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>250647</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>802</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Collyer, Mrs. Harvey (Charlotte Annie Tate)</td>
+        <td>female</td>
+        <td>31.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>C.A. 31921</td>
+        <td>26.25</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>803</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Carter, Master. William Thornton II</td>
+        <td>male</td>
+        <td>11.0</td>
+        <td>1</td>
+        <td>2</td>
+        <td>113760</td>
+        <td>120.0</td>
+        <td>B96 B98</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>804</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Thomas, Master. Assad Alexander</td>
+        <td>male</td>
+        <td>0.42</td>
+        <td>0</td>
+        <td>1</td>
+        <td>2625</td>
+        <td>8.5167</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>805</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Hedman, Mr. Oskar Arvid</td>
+        <td>male</td>
+        <td>27.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347089</td>
+        <td>6.975</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>806</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Johansson, Mr. Karl Johan</td>
+        <td>male</td>
+        <td>31.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347063</td>
+        <td>7.775</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>807</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Andrews, Mr. Thomas Jr</td>
+        <td>male</td>
+        <td>39.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>112050</td>
+        <td>0.0</td>
+        <td>A36</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>808</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Pettersson, Miss. Ellen Natalia</td>
+        <td>female</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347087</td>
+        <td>7.775</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>809</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Meyer, Mr. August</td>
+        <td>male</td>
+        <td>39.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>248723</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>810</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Chambers, Mrs. Norman Campbell (Bertha Griggs)</td>
+        <td>female</td>
+        <td>33.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>113806</td>
+        <td>53.1</td>
+        <td>E8</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>811</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Alexander, Mr. William</td>
+        <td>male</td>
+        <td>26.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>3474</td>
+        <td>7.8875</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>812</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Lester, Mr. James</td>
+        <td>male</td>
+        <td>39.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>A/4 48871</td>
+        <td>24.15</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>813</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Slemen, Mr. Richard James</td>
+        <td>male</td>
+        <td>35.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>28206</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>814</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Andersson, Miss. Ebba Iris Alfrida</td>
+        <td>female</td>
+        <td>6.0</td>
+        <td>4</td>
+        <td>2</td>
+        <td>347082</td>
+        <td>31.275</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>815</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Tomlin, Mr. Ernest Portage</td>
+        <td>male</td>
+        <td>30.5</td>
+        <td>0</td>
+        <td>0</td>
+        <td>364499</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>816</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Fry, Mr. Richard</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>112058</td>
+        <td>0.0</td>
+        <td>B102</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>817</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Heininen, Miss. Wendla Maria</td>
+        <td>female</td>
+        <td>23.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>STON/O2. 3101290</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>818</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Mallet, Mr. Albert</td>
+        <td>male</td>
+        <td>31.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>S.C./PARIS 2079</td>
+        <td>37.0042</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>819</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Holm, Mr. John Fredrik Alexander</td>
+        <td>male</td>
+        <td>43.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C 7075</td>
+        <td>6.45</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>820</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Skoog, Master. Karl Thorsten</td>
+        <td>male</td>
+        <td>10.0</td>
+        <td>3</td>
+        <td>2</td>
+        <td>347088</td>
+        <td>27.9</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>821</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Hays, Mrs. Charles Melville (Clara Jennings Gregg)</td>
+        <td>female</td>
+        <td>52.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>12749</td>
+        <td>93.5</td>
+        <td>B69</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>822</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Lulic, Mr. Nikola</td>
+        <td>male</td>
+        <td>27.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>315098</td>
+        <td>8.6625</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>823</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Reuchlin, Jonkheer. John George</td>
+        <td>male</td>
+        <td>38.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>19972</td>
+        <td>0.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>824</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Moor, Mrs. (Beila)</td>
+        <td>female</td>
+        <td>27.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>392096</td>
+        <td>12.475</td>
+        <td>E121</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>825</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Panula, Master. Urho Abraham</td>
+        <td>male</td>
+        <td>2.0</td>
+        <td>4</td>
+        <td>1</td>
+        <td>3101295</td>
+        <td>39.6875</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>826</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Flynn, Mr. John</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>368323</td>
+        <td>6.95</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>827</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Lam, Mr. Len</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>1601</td>
+        <td>56.4958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>828</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Mallet, Master. Andre</td>
+        <td>male</td>
+        <td>1.0</td>
+        <td>0</td>
+        <td>2</td>
+        <td>S.C./PARIS 2079</td>
+        <td>37.0042</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>829</td>
+        <td>1</td>
+        <td>3</td>
+        <td>McCormack, Mr. Thomas Joseph</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>367228</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>830</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Stone, Mrs. George Nelson (Martha Evelyn)</td>
+        <td>female</td>
+        <td>62.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113572</td>
+        <td>80.0</td>
+        <td>B28</td>
+        <td>nan</td>
+    </tr>
+    <tr>
+        <td>831</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Yasbeck, Mrs. Antoni (Selini Alexander)</td>
+        <td>female</td>
+        <td>15.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>2659</td>
+        <td>14.4542</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>832</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Richards, Master. George Sibley</td>
+        <td>male</td>
+        <td>0.83</td>
+        <td>1</td>
+        <td>1</td>
+        <td>29106</td>
+        <td>18.75</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>833</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Saad, Mr. Amin</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2671</td>
+        <td>7.2292</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>834</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Augustsson, Mr. Albert</td>
+        <td>male</td>
+        <td>23.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347468</td>
+        <td>7.8542</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>835</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Allum, Mr. Owen George</td>
+        <td>male</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2223</td>
+        <td>8.3</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>836</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Compton, Miss. Sara Rebecca</td>
+        <td>female</td>
+        <td>39.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>PC 17756</td>
+        <td>83.1583</td>
+        <td>E49</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>837</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Pasic, Mr. Jakob</td>
+        <td>male</td>
+        <td>21.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>315097</td>
+        <td>8.6625</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>838</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Sirota, Mr. Maurice</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>392092</td>
+        <td>8.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>839</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Chip, Mr. Chang</td>
+        <td>male</td>
+        <td>32.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>1601</td>
+        <td>56.4958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>840</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Marechal, Mr. Pierre</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>11774</td>
+        <td>29.7</td>
+        <td>C47</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>841</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Alhomaki, Mr. Ilmari Rudolf</td>
+        <td>male</td>
+        <td>20.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SOTON/O2 3101287</td>
+        <td>7.925</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>842</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Mudd, Mr. Thomas Charles</td>
+        <td>male</td>
+        <td>16.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>S.O./P.P. 3</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>843</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Serepeca, Miss. Augusta</td>
+        <td>female</td>
+        <td>30.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113798</td>
+        <td>31.0</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>844</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Lemberopolous, Mr. Peter L</td>
+        <td>male</td>
+        <td>34.5</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2683</td>
+        <td>6.4375</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>845</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Culumovic, Mr. Jeso</td>
+        <td>male</td>
+        <td>17.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>315090</td>
+        <td>8.6625</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>846</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Abbing, Mr. Anthony</td>
+        <td>male</td>
+        <td>42.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C.A. 5547</td>
+        <td>7.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>847</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Sage, Mr. Douglas Bullen</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>8</td>
+        <td>2</td>
+        <td>CA. 2343</td>
+        <td>69.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>848</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Markoff, Mr. Marin</td>
+        <td>male</td>
+        <td>35.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349213</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>849</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Harper, Rev. John</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>248727</td>
+        <td>33.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>850</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Goldenberg, Mrs. Samuel L (Edwiga Grabowska)</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>0</td>
+        <td>17453</td>
+        <td>89.1042</td>
+        <td>C92</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>851</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Andersson, Master. Sigvard Harald Elias</td>
+        <td>male</td>
+        <td>4.0</td>
+        <td>4</td>
+        <td>2</td>
+        <td>347082</td>
+        <td>31.275</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>852</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Svensson, Mr. Johan</td>
+        <td>male</td>
+        <td>74.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>347060</td>
+        <td>7.775</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>853</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Boulos, Miss. Nourelain</td>
+        <td>female</td>
+        <td>9.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>2678</td>
+        <td>15.2458</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>854</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Lines, Miss. Mary Conover</td>
+        <td>female</td>
+        <td>16.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>PC 17592</td>
+        <td>39.4</td>
+        <td>D28</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>855</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Carter, Mrs. Ernest Courtenay (Lilian Hughes)</td>
+        <td>female</td>
+        <td>44.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>244252</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>856</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Aks, Mrs. Sam (Leah Rosen)</td>
+        <td>female</td>
+        <td>18.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>392091</td>
+        <td>9.35</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>857</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Wick, Mrs. George Dennick (Mary Hitchcock)</td>
+        <td>female</td>
+        <td>45.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>36928</td>
+        <td>164.8667</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>858</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Daly, Mr. Peter Denis </td>
+        <td>male</td>
+        <td>51.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>113055</td>
+        <td>26.55</td>
+        <td>E17</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>859</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Baclini, Mrs. Solomon (Latifa Qurban)</td>
+        <td>female</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>3</td>
+        <td>2666</td>
+        <td>19.2583</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>860</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Razi, Mr. Raihed</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2629</td>
+        <td>7.2292</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>861</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Hansen, Mr. Claus Peter</td>
+        <td>male</td>
+        <td>41.0</td>
+        <td>2</td>
+        <td>0</td>
+        <td>350026</td>
+        <td>14.1083</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>862</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Giles, Mr. Frederick Edward</td>
+        <td>male</td>
+        <td>21.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>28134</td>
+        <td>11.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>863</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Swift, Mrs. Frederick Joel (Margaret Welles Barron)</td>
+        <td>female</td>
+        <td>48.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>17466</td>
+        <td>25.9292</td>
+        <td>D17</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>864</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Sage, Miss. Dorothy Edith &quot;Dolly&quot;</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>8</td>
+        <td>2</td>
+        <td>CA. 2343</td>
+        <td>69.55</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>865</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Gill, Mr. John William</td>
+        <td>male</td>
+        <td>24.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>233866</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>866</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Bystrom, Mrs. (Karolina)</td>
+        <td>female</td>
+        <td>42.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>236852</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>867</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Duran y More, Miss. Asuncion</td>
+        <td>female</td>
+        <td>27.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>SC/PARIS 2149</td>
+        <td>13.8583</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>868</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Roebling, Mr. Washington Augustus II</td>
+        <td>male</td>
+        <td>31.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>PC 17590</td>
+        <td>50.4958</td>
+        <td>A24</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>869</td>
+        <td>0</td>
+        <td>3</td>
+        <td>van Melkebeke, Mr. Philemon</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>345777</td>
+        <td>9.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>870</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Johnson, Master. Harold Theodor</td>
+        <td>male</td>
+        <td>4.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>347742</td>
+        <td>11.1333</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>871</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Balkic, Mr. Cerin</td>
+        <td>male</td>
+        <td>26.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349248</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>872</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Beckwith, Mrs. Richard Leonard (Sallie Monypeny)</td>
+        <td>female</td>
+        <td>47.0</td>
+        <td>1</td>
+        <td>1</td>
+        <td>11751</td>
+        <td>52.5542</td>
+        <td>D35</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>873</td>
+        <td>0</td>
+        <td>1</td>
+        <td>Carlsson, Mr. Frans Olof</td>
+        <td>male</td>
+        <td>33.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>695</td>
+        <td>5.0</td>
+        <td>B51 B53 B55</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>874</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Vander Cruyssen, Mr. Victor</td>
+        <td>male</td>
+        <td>47.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>345765</td>
+        <td>9.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>875</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Abelson, Mrs. Samuel (Hannah Wizosky)</td>
+        <td>female</td>
+        <td>28.0</td>
+        <td>1</td>
+        <td>0</td>
+        <td>P/PP 3381</td>
+        <td>24.0</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>876</td>
+        <td>1</td>
+        <td>3</td>
+        <td>Najib, Miss. Adele Kiamie &quot;Jane&quot;</td>
+        <td>female</td>
+        <td>15.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>2667</td>
+        <td>7.225</td>
+        <td>nan</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>877</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Gustafsson, Mr. Alfred Ossian</td>
+        <td>male</td>
+        <td>20.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>7534</td>
+        <td>9.8458</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>878</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Petroff, Mr. Nedelio</td>
+        <td>male</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349212</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>879</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Laleff, Mr. Kristo</td>
+        <td>male</td>
+        <td>nan</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349217</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>880</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)</td>
+        <td>female</td>
+        <td>56.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>11767</td>
+        <td>83.1583</td>
+        <td>C50</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>881</td>
+        <td>1</td>
+        <td>2</td>
+        <td>Shelley, Mrs. William (Imanita Parrish Hall)</td>
+        <td>female</td>
+        <td>25.0</td>
+        <td>0</td>
+        <td>1</td>
+        <td>230433</td>
+        <td>26.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>882</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Markun, Mr. Johann</td>
+        <td>male</td>
+        <td>33.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>349257</td>
+        <td>7.8958</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>883</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Dahlberg, Miss. Gerda Ulrika</td>
+        <td>female</td>
+        <td>22.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>7552</td>
+        <td>10.5167</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>884</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Banfield, Mr. Frederick James</td>
+        <td>male</td>
+        <td>28.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>C.A./SOTON 34068</td>
+        <td>10.5</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>885</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Sutehall, Mr. Henry Jr</td>
+        <td>male</td>
+        <td>25.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>SOTON/OQ 392076</td>
+        <td>7.05</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>886</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Rice, Mrs. William (Margaret Norton)</td>
+        <td>female</td>
+        <td>39.0</td>
+        <td>0</td>
+        <td>5</td>
+        <td>382652</td>
+        <td>29.125</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+    <tr>
+        <td>887</td>
+        <td>0</td>
+        <td>2</td>
+        <td>Montvila, Rev. Juozas</td>
+        <td>male</td>
+        <td>27.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>211536</td>
+        <td>13.0</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>888</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Graham, Miss. Margaret Edith</td>
+        <td>female</td>
+        <td>19.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>112053</td>
+        <td>30.0</td>
+        <td>B42</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>889</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Johnston, Miss. Catherine Helen &quot;Carrie&quot;</td>
+        <td>female</td>
+        <td>nan</td>
+        <td>1</td>
+        <td>2</td>
+        <td>W./C. 6607</td>
+        <td>23.45</td>
+        <td>nan</td>
+        <td>S</td>
+    </tr>
+    <tr>
+        <td>890</td>
+        <td>1</td>
+        <td>1</td>
+        <td>Behr, Mr. Karl Howell</td>
+        <td>male</td>
+        <td>26.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>111369</td>
+        <td>30.0</td>
+        <td>C148</td>
+        <td>C</td>
+    </tr>
+    <tr>
+        <td>891</td>
+        <td>0</td>
+        <td>3</td>
+        <td>Dooley, Mr. Patrick</td>
+        <td>male</td>
+        <td>32.0</td>
+        <td>0</td>
+        <td>0</td>
+        <td>370376</td>
+        <td>7.75</td>
+        <td>nan</td>
+        <td>Q</td>
+    </tr>
+</table>
+        </div>
+
+    </div>
+
+    <script>
+    </script>
+    <script>
+        (function() {
+            containers = document.getElementsByClassName("chart-container");
+            if(containers.length > 0) {
+                containers[0].style.display = "block";
+            }
+        })()
+
+        function showChart(evt, chartID) {
+            let containers = document.getElementsByClassName("chart-container");
+            for (let i = 0; i < containers.length; i++) {
+                containers[i].style.display = "none";
+            }
+
+            let tablinks = document.getElementsByClassName("tablinks");
+            for (let i = 0; i < tablinks.length; i++) {
+                tablinks[i].className = "tablinks";
+            }
+
+            document.getElementById(chartID).style.display = "block";
+            evt.currentTarget.className += " active";
+        }
+    </script>
+</body>
+</html>

+ 2 - 0
.idea/.gitignore

@@ -0,0 +1,2 @@
+# Default ignored files
+/workspace.xml

+ 10 - 0
.idea/CoTan.iml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/venv" />
+    </content>
+    <orderEntry type="jdk" jdkName="Python 3.7 (CoTan)" jdkType="Python SDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 7 - 0
.idea/inspectionProfiles/profiles_settings.xml

@@ -0,0 +1,7 @@
+<component name="InspectionProjectProfileManager">
+  <settings>
+    <option name="PROJECT_PROFILE" value="Default" />
+    <option name="USE_PROJECT_PROFILE" value="false" />
+    <version value="1.0" />
+  </settings>
+</component>

+ 7 - 0
.idea/misc.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (CoTan)" project-jdk-type="Python SDK" />
+  <component name="PythonCompatibilityInspectionAdvertiser">
+    <option name="version" value="3" />
+  </component>
+</project>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/CoTan.iml" filepath="$PROJECT_DIR$/.idea/CoTan.iml" />
+    </modules>
+  </component>
+</project>

+ 218 - 0
CGB/TK.py

@@ -0,0 +1,218 @@
+from tkinter.colorchooser import askcolor
+from tkinter.filedialog import asksaveasfile
+import tkinter.messagebox
+from CGB import TK_HS
+
+help_Wo='''
+*快捷键:
+    d-不用点击左键画线(再次点击关闭)
+    g-画直线(2)
+    f-画填充矩阵3
+    s-画矩阵边框4
+    k-画横线5
+    l-画竖线6
+    j-画多段线7
+    i-横线多段线打点(再次点击结束绘制)8
+    u-竖线多段线打点(再次点击结束绘制)9
+    h-横线和竖线多段线打点并由虚线标注(再次点击结束绘制)10
+    q-绘制虚线11
+    c-绘制填充圆形12
+    v-绘制圆形边框(13)
+    n和m-绘制多边形(14)
+    n-再次点击完成填充多边形绘制(14)
+    m-再次点击完成多边形边框绘制(14)
+    o-捕捉坐标原点(请先点击功能快捷键)
+    x-捕捉坐标x轴(请先点击功能快捷键并选择起点)
+    y-捕捉坐标y轴(同上)
+    b-关闭当前所有快捷键操作
+    e-绘制填充椭圆(15)
+    r-绘制椭圆边框(16)
+    w-再次保存(前提是现在工具箱点击过一次保存)
+*鼠标操作:
+    左键-按下画曲线
+    中键-快捷键启动后,用于选择点
+    右键-打开工具箱
+*视图
+    顶部-显示鼠标坐标,按键点击模式,笔的大小,坐标系位置和颜色系统以及坐标系原点的位置(处于快捷键状态时,显示中键当前选择了的点)
+    底部-显示当前时间(处于快捷键状态时,显示快捷键提示mod:yes None xxx,其中yes表示快捷键d启动,None表示快捷键注释,xxx表示快捷功能解释)
+*工具箱操作:
+    选择颜色-画线颜色
+    选择增函数颜色-绘制函数时增函数颜色
+    选择减函数颜色-绘制函数时减函数颜色
+    选择笔的大小(刷子)-画线的粗细
+    清空-清空所有笔记并可以选择新的背景颜色
+    绘制坐标系-三点绘制坐标系(使用中键选择点)
+    保存-保存笔记为图片格式,保存一次后快捷键w可重复保存
+    绘制函数-绘制基本初等函数和字定义解析函数
+'''
+
+def GetZColor():
+    global ZColo
+    ZColo = askcolor(title='选择颜色')[0]
+
+def GetJColor():
+    global JColo
+    JColo = askcolor(title='选择颜色')[0]
+
+def GetColor():
+    global colo
+    colo = askcolor(title='选择颜色')[0]
+
+def getBC():
+    global BC
+    BC = tkinter.filedialog.asksaveasfilename(title='选择保存位置',filetypes=[("PNG", ".png")])
+    if not BC:BC = None
+    else:BC += '.png'
+
+def getBG():
+    global BG_IM
+    BG_IM = tkinter.filedialog.askopenfilename(title='选择载入图片',filetypes=[("PNG", ".png"),("JPG", ".jpg")])
+    if not BG_IM: BG_IM = None
+
+
+def ChangePenSZ():
+    global d
+    if tkinter.messagebox.askokcancel('提示', '要切换到刷子吗(可当橡皮使用)'):d = 10
+
+def ChangePenB():
+    global d
+    if tkinter.messagebox.askokcancel('提示', '要切换到大笔吗'):d = 3
+
+def Set_d():
+    global d,d_Input
+    Input = d_Input.get().replace(' ', '')
+    try:
+        Input = int(Input)
+        if tkinter.messagebox.askokcancel('提示', f'是否设定大小为{Input}(系统默认大小为:2)'):d = Input
+    except:
+        if tkinter.messagebox.askokcancel('提示', '设置失败,是否要切换到中笔吗'): d = 2
+
+def ChangePenZ():
+    global d
+    if tkinter.messagebox.askokcancel('提示', '要切换到中笔吗'):d = 2
+
+def ChangePenS():
+    global d
+    if tkinter.messagebox.askokcancel('提示', '要切换到小笔吗?'):d = 1
+
+def ZBX_XY():
+    global XY
+    if tkinter.messagebox.askokcancel('提示', '是否绘制坐标系,确定后返回草图界面任一点三点开始绘制(点击取消可撤销未执行的清空)'):
+        XY = 1
+    else:XY = None
+
+def ZBX_XY_XKD():
+    global XY
+    if tkinter.messagebox.askokcancel('提示', '是否绘制小跨度的坐标系,确定后返回草图界面任一点三点开始绘制(点击取消可撤销未执行的清空)'):
+        XY = 2
+    else:XY = None
+
+def ZBX_XY_DKD():
+    global XY
+    if tkinter.messagebox.askokcancel('提示', '是否绘制大跨度的坐标系,确定后返回草图界面任一点三点开始绘制(点击取消可撤销未执行的清空)'):
+        XY = 3
+    else:XY = None
+
+def Set_k():
+    global XY,k,k_Input
+    Input = k_Input.get().replace(' ', '')
+    try:
+        Input = int(Input)
+        if tkinter.messagebox.askokcancel('提示', f'是否设定跨度为{Input}(跨度代表坐标系一个单位大小的实际像素,系统默认大跨度为:120)'):
+            k = Input
+            XY = 1
+        else:
+            XY = None
+            k = None
+    except:
+        k = None
+        if tkinter.messagebox.askokcancel('提示', '是否绘制大跨度的坐标系,确定后返回草图界面任一点三点开始绘制(点击取消可撤销未执行的清空)'):
+            XY = 3
+        else:
+            XY = None
+
+def QK():
+    global BG
+    if tkinter.messagebox.askokcancel('提示', '是否清空草稿(点击取消可撤销未执行的清空)'):
+        BG = askcolor(title='选择背景颜色')[0]
+    else:BG = None
+
+def HS():
+    global HS_List,closeable
+    HS_List = TK_HS.CHS()
+
+def _help():
+    global help_Wo
+    tkinter.messagebox.showinfo(title='帮助', message=help_Wo)
+
+def close():#关闭屏幕事件
+    global top
+    try:TK_HS.TK_DoneHS.top.destroy()
+    except:pass
+    try:TK_HS.top.destroy()
+    except:pass
+    top.destroy()
+
+def CC():
+    global colo#三个月还有这个一般v额u
+    global ZColo,JColo
+    global top#初始化屏幕
+    global d
+    global BG
+    global XY
+    global HS_List#绘制函数列表
+    global BC#保存路径
+    global k
+    global d_Input,k_Input#定义Enter组件
+    global BG_IM
+    global closeable
+    closeable = True
+    BG_IM = None
+    HS_List = {}
+    XY = None
+    BG = None
+    d = None
+    colo = None
+    ZColo = None
+    JColo = None
+    BC = None
+    w_b=20
+    h_b=3
+    k = None
+
+
+    top = tkinter.Tk()  # 设置屏幕
+    top.title('')
+    top.resizable(width=False, height=False)
+    top.geometry(f'+10+10')
+
+    tkinter.Button(top, text ="选择颜色", command = GetColor,width = w_b, height = h_b).pack()#选择颜色组件
+    tkinter.Button(top, text="选择增函数颜色", command=GetZColor, width=w_b, height=1).pack()  # 选择颜色组件
+    tkinter.Button(top, text="选择减函数颜色", command=GetJColor, width=w_b, height=1).pack()  # 选择颜色组件
+    tkinter.Button(top, text="使用中笔(默认笔)", command=ChangePenZ, width=w_b, height=h_b).pack()  # 切换笔
+    tkinter.Button(top, text="使用大笔", command = ChangePenB,width = w_b, height = 1).pack()  # 切换到大笔
+    tkinter.Button(top, text="使用小笔", command=ChangePenS, width=w_b, height=1).pack()  # 切换笔
+    tkinter.Button(top, text="使用刷子", command=ChangePenSZ, width=w_b, height=1).pack()  # 切换笔
+    d_Input = tkinter.Entry(top, width=w_b-2)
+    d_Input.pack(fill=tkinter.BOTH)
+    tkinter.Button(top, text="使用自定义大小", command=Set_d, width=w_b, height=1).pack()  # 切换笔
+    tkinter.Button(top, text="清空草稿", command=QK, width=w_b, height=h_b).pack()  # 填充背景
+    tkinter.Button(top, text="绘制坐标系", command=ZBX_XY, width=w_b, height=h_b).pack()  # 绘制坐标系
+    tkinter.Button(top, text="绘制坐标系(小跨度)", command=ZBX_XY_XKD, width=w_b, height=1).pack()  # 绘制坐标系
+    tkinter.Button(top, text="绘制坐标系(大跨度)", command=ZBX_XY_DKD, width=w_b, height=1).pack()  # 绘制坐标系
+    k_Input = tkinter.Entry(top, width=w_b-2)
+    k_Input.pack(fill=tkinter.BOTH)
+    tkinter.Button(top, text="使用自定义跨度", command=Set_k, width=w_b, height=1).pack()  # 切换笔
+    tkinter.Button(top, text="绘制函数", command=HS, width=w_b, height=h_b).pack()
+    tkinter.Button(top, text="保存", command=getBC, width=w_b, height=1).pack()
+    tkinter.Button(top, text="载入", command=getBG, width=w_b, height=1).pack()
+    tkinter.Button(top, text="帮助", command=_help, width=w_b, height=1).pack()#help是系统保留关键词,用_help代替
+    top.protocol('WM_DELETE_WINDOW',close)
+    top.mainloop()
+    return [colo,d,BG,XY,HS_List,BC,ZColo,JColo,k,BG_IM]
+    #[0]-笔的颜色
+    #[1]-笔的大小
+    #[2]-背景填充
+    #[3]-坐标系绘制
+    #[4]-函数绘制
+    #[5]-保存

+ 59 - 0
CGB/TK_DoneHS.py

@@ -0,0 +1,59 @@
+import tkinter
+import tkinter.messagebox
+import math
+help_Wo = '''
+请在第一个输入框输入你的函数方程,不需要输入f(x)=和y=,唯一变量是x(x为自变量)
+圆周率-Pi,自然无理数-e
+指数的表示符号:**,比如x**2表示x的二次方
+对数的表示符号:log(a,b),其中a是真书,b是底数(没有lg和ln)
+三角函数sin(),cos(),tan(),cot(),csc(),sec()
+反三角函数arcsin(),arccos(),arctan()
+双曲函数:sinh(),cosh(),tanh()
+注意:三角函数必须带括号使用
+不支持定义域选择,不支持分段函数
+'''
+
+class HS_lambda:
+    def __init__(self,HS):
+        self.HS = HS
+        self.Name = {'x':0,'Pi':math.pi,'e':math.e,'log':math.log,
+                     'sin':math.sin,'cos':math.cos,'tan':math.tan,
+                     'cot':lambda x:1/math.tan(x),'csc':lambda x:1/math.sin(x),
+                     'sec':lambda x:1/math.cos(x),'sinh':math.sinh,'cosh':math.cosh,
+                     'tanh':math.tanh,'asin':math.asin,'acos':math.acos,
+                     'atan':math.atan}
+
+    def __call__(self,x):
+        self.Name['x'] = x
+        return eval(self.HS,self.Name)
+
+def Sure():
+    global HS_Input,HS,help_Wo
+    Input = HS_Input.get().replace(' ', '')
+    if Input:
+        if tkinter.messagebox.askokcancel('提示', f'是否确认生成自定义函数:\n{HS_Input.get()}\n(点击取消可撤销未执行的制造函数)'):
+            HS = HS_lambda(HS_Input.get())
+        else:HS = None
+    else:
+        if tkinter.messagebox.askokcancel('提示', f'点击确定撤销为执行的制造函数'):
+            HS = None
+
+def Help():
+    tkinter.messagebox.showinfo(title='帮助', message=help_Wo)
+
+
+def Done_HS():
+    global HS_Input,HS,top
+    HS = None
+    top = tkinter.Tk()  # 设置屏幕
+    top.title('')
+    top.resizable(width=False, height=False)
+    top.geometry(f'+350+10')
+    button = tkinter.Button(top, text="制造函数", command=Sure,width=28,height=1)  # 收到消息执行这个函数
+    help = tkinter.Button(top, text="帮助", command=Help, width=28, height=1)  # 帮助菜单
+    HS_Input = tkinter.Entry(top)
+    HS_Input.pack(fill=tkinter.BOTH)
+    button.pack()
+    help.pack()
+    top.mainloop()
+    return HS

+ 192 - 0
CGB/TK_HS.py

@@ -0,0 +1,192 @@
+import tkinter.messagebox
+import math
+from CGB import TK_DoneHS
+
+def HS_1():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制1次函数(点击取消可撤销未执行的函数)'):
+        HS_List[1] = lambda x:x
+    else:
+        HS_List[1] = None
+
+def HS_2():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制2次函数(点击取消可撤销未执行的函数)'):
+        HS_List[2] = lambda x:x**2
+    else:
+        HS_List[2] = None
+
+def HS_3():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制3次函数(点击取消可撤销未执行的函数)'):
+        HS_List[4] = lambda x:x**3
+    else:
+        HS_List[4] = None
+
+def HS_D1():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制-1次函数(点击取消可撤销未执行的函数)'):
+        HS_List[3] = lambda x:1/x
+    else:
+        HS_List[3] = None
+
+def HS_GH():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制根号函数(点击取消可撤销未执行的函数)'):
+        HS_List[5] = lambda x:x**(1/2)
+    else:
+        HS_List[5] = None
+
+def HS_ZS():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制指数函数(点击取消可撤销未执行的函数)'):
+        HS_List[6] = lambda x:10**x
+    else:
+        HS_List[6] = None
+
+def HS_DS():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制对数函数(点击取消可撤销未执行的函数)'):
+        HS_List[7] = lambda x:math.log(x,2)
+    else:
+        HS_List[7] = None
+
+def HS_DS2():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制对数函数2(点击取消可撤销未执行的函数)'):
+        HS_List[8] = lambda x:math.log(2,x)
+    else:
+        HS_List[8] = None
+
+def HS_sin():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制正弦函数(点击取消可撤销未执行的函数)'):
+        HS_List[9] = lambda x:math.sin(x)
+    else:
+        HS_List[9] = None
+
+def HS_cos():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制余弦函数(点击取消可撤销未执行的函数)'):
+        HS_List[10] = lambda x:math.cos(x)
+    else:
+        HS_List[10] = None
+
+def HS_tan():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制正切函数(点击取消可撤销未执行的函数)'):
+        HS_List[11] = lambda x:math.tan(x)
+    else:
+        HS_List[11] = None
+
+def HS_cot():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制余切函数(点击取消可撤销未执行的函数)'):
+        HS_List[12] = lambda x:1/math.tan(x)
+    else:
+        HS_List[12] = None
+
+def HS_sec():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制正割函数(点击取消可撤销未执行的函数)'):
+        HS_List[13] = lambda x:1/math.cos(x)
+    else:
+        HS_List[13] = None
+
+def HS_csc():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制余割函数(点击取消可撤销未执行的函数)'):
+        HS_List[11] = lambda x:1/math.sin(x)
+    else:
+        HS_List[11] = None
+
+def HS_arcsin():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制反正弦函数(点击取消可撤销未执行的函数)'):
+        HS_List[12] = lambda x:math.asin(x)
+    else:
+        HS_List[12] = None
+
+def HS_arccos():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制反余弦函数(点击取消可撤销未执行的函数)'):
+        HS_List[13] = lambda x:math.acos(x)
+    else:
+        HS_List[13] = None
+
+def HS_arctan():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制反正切函数(点击取消可撤销未执行的函数)'):
+        HS_List[14] = lambda x:math.atan(x)
+    else:
+        HS_List[14] = None
+
+def HS_arccot():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制反余切函数(点击取消可撤销未执行的函数)'):
+        HS_List[15] = lambda x:1/math.atan(x)
+    else:
+        HS_List[15] = None
+
+def HS_arcsec():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制反正割函数(点击取消可撤销未执行的函数)'):
+        HS_List[16] = lambda x:1/math.acos(x)
+    else:
+        HS_List[16] = None
+
+def HS_arccsc():
+    global HS_List
+    if tkinter.messagebox.askokcancel('提示', '是否绘制反余割函数(点击取消可撤销未执行的函数)'):
+        HS_List[17] = lambda x:1/math.asin(x)
+    else:
+        HS_List[17] = None
+
+def HS_ZDY():
+    global HS_List,Num
+    get = TK_DoneHS.Done_HS()
+    if get != None:
+        HS_List[Num] = get
+        Num += 1
+
+def close():
+    global top
+    try:TK_DoneHS.top.destroy()
+    except:pass
+    top.destroy()
+
+def CHS():
+    global HS_List#绘制函数列表
+    global Num,top
+    Num = 18#字定义函数的序号
+    HS_List = {}
+    w_b=20
+
+    top = tkinter.Tk()  # 设置屏幕
+    top.title('')
+    top.resizable(width=False, height=False)
+    top.geometry(f'+180+10')
+    tkinter.Button(top, text="1次函数", command=HS_1, width=w_b, height=1).pack()
+    tkinter.Button(top, text="2次函数", command=HS_2, width=w_b, height=1).pack()
+    tkinter.Button(top, text="-1次函数", command=HS_D1, width=w_b, height=1).pack()
+    tkinter.Button(top, text="3次函数", command=HS_3, width=w_b, height=1).pack()
+    tkinter.Button(top, text="根号函数", command=HS_GH, width=w_b, height=1).pack()
+    tkinter.Button(top, text="对数函数", command=HS_DS, width=w_b, height=1).pack()
+    tkinter.Button(top, text="指数函数", command=HS_ZS, width=w_b, height=1).pack()
+    tkinter.Button(top, text="对数底函数", command=HS_DS2, width=w_b, height=1).pack()
+    tkinter.Button(top, text="sin函数", command=HS_sin, width=w_b, height=1).pack()
+    tkinter.Button(top, text="cos函数", command=HS_cos, width=w_b, height=1).pack()
+    tkinter.Button(top, text="tan函数", command=HS_tan, width=w_b, height=1).pack()
+    tkinter.Button(top, text="cot函数", command=HS_tan, width=w_b, height=1).pack()
+    tkinter.Button(top, text="csc函数", command=HS_csc, width=w_b, height=1).pack()
+    tkinter.Button(top, text="sec函数", command=HS_sec, width=w_b, height=1).pack()
+    tkinter.Button(top, text="arcsin函数", command=HS_arcsin, width=w_b, height=1).pack()
+    tkinter.Button(top, text="arccos函数", command=HS_arccos, width=w_b, height=1).pack()
+    tkinter.Button(top, text="arctan函数", command=HS_arctan, width=w_b, height=1).pack()
+    tkinter.Button(top, text="arccot函数", command=HS_arctan, width=w_b, height=1).pack()
+    tkinter.Button(top, text="arccsc函数", command=HS_arccsc, width=w_b, height=1).pack()
+    tkinter.Button(top, text="arcsec函数", command=HS_arcsec, width=w_b, height=1).pack()
+    tkinter.Button(top, text="自定义函数", command=HS_ZDY, width=w_b, height=3).pack()
+    top.protocol('WM_DELETE_WINDOW', close)
+    top.mainloop()
+    return HS_List

+ 624 - 0
CGB/Write.py

@@ -0,0 +1,624 @@
+import pygame
+from pygame.locals import *
+from CGB.TK import CC
+import time
+import os
+
+#定义一些变量
+pen_C = [0, 0, 0]  # 画笔颜色
+Z_C = [0,0,255]
+J_C = [255,0,0]
+d = 2  # 圆形的粗细(线条*2)=中笔
+m_x = None
+m_y = None  # 为画图所准备的
+Done = False  # 设置免按
+XY = 0
+axy = [0, 0, 0]  # 坐标系
+XY_x = 0
+XY_y = 0  # 原点坐标
+X_P = []  # X点
+Y_C = []  # Y点
+X_L = []  # X个数
+Y_L = []  # Y个数
+X_M = []
+Y_M = []
+_KD = 60  # 坐标系跨度调节
+
+ZJ = 0  # 中键模式
+Line = []  # 画线列表
+Rect = []  # 画矩阵和圆列表
+Poly = []  # 画多边形列表
+
+Talk = ''#设置备注
+
+BC_Dic = ''#保存路径
+Tip = [0,0,0,0,0]#底部显示信息[x,y,左键,中间,右键]
+
+Done_Name = {1:'绘制坐标系',2:'绘制直线(g)',3:'填充矩形(f)',4:'线条矩形(s)',
+             5:'绘制横线(k)',6:'绘制竖线(l)',7:'绘制多段线(j)',
+             8:'绘制横打点多段线(i)',9:'绘制竖打点多段线(u)',10:'坐标测绘(h)',
+             11:'绘制虚线(q)',12:'填充圆形(c)',13:'线条圆形(v)',14:'多边形(n-填充,m-线条)',
+             15:'填充椭圆形(e)',16:'线条椭圆形(r)',0:'None'}#快捷键名字
+
+#绘制函数
+def HS(HS_list,JD = 1000):
+    global X_P,X_L,Y_C,Y_L,Y_M,X_M,pen_C,Z_C,J_C
+    c = [0,0,0]#增函数颜色
+    X_Done = lambda x: (x - X_L[0]) / (X_L[1] - X_L[0]) * (X_P[1] - X_P[0]) + X_P[0]#x是数值,换算为像素
+    Y_Done = lambda y: (y - Y_L[0]) / (Y_L[1] - Y_L[0]) * (Y_C[1] - Y_C[0]) + Y_C[0]  # x是数值,换算为像素
+    for i in HS_list:
+        x1 = None  # 上一组X和Y
+        y1 = None
+        if HS_list == None:continue
+        D = HS_list[i]
+        try:
+            for x in range((X_L[0]-1)*JD,(X_L[1]+1)*JD,1):
+                x /= JD
+                try:
+                    y = D(x)
+                except:
+                    x1 = None
+                    y1 = None
+                    continue
+                try:
+                    x2 = X_Done(x)
+                    y2 = Y_Done(y)
+                    if y2>Y_M[0] or y2<Y_M[1] or x2<X_M[0] or x2>X_M[1]:
+                        x1 = None
+                        y1 = None
+                        continue
+                except TypeError:#预防复数
+                    continue
+                if x1 != None:
+                    if y1>y2:c=Z_C#增函数
+                    elif y1<y2:c=J_C#减函数#改为检查Y数值而不是坐标
+                    pygame.draw.line(root, c, (int(x1),int(y1)), (int(x2),int(y2)), d)
+                x1 = x2
+                y1 = y2
+        except IndexError:
+            break
+
+#画曲线系统
+def draw_Line(xy,c=False):#c-是否带点
+    global m_x,m_y
+    if c:pygame.draw.circle(root, pen_C, xy, d, 0)
+    if m_x != None:
+        pygame.draw.line(root,pen_C,(m_x,m_y), xy, d)
+    m_x = xy[0]
+    m_y = xy[1]
+
+#绘制XY坐标系
+def XYZ_ZBX(s_x,s_y,p = (-100, 100),c = (-200, 100),kd = 10,b = 3,jt = 3,r = 3):
+    kd = abs(kd)#kd大于0
+    global d,XY_x,XY_y,X_L,X_P,Y_L,Y_C,X_M,Y_M
+    XY_x = s_x
+    XY_y = s_y#存储原点坐标
+    X_M = [s_x + p[0],s_x + p[1]]
+    Y_M = [s_y + c[1],s_y + c[0]]
+    pygame.draw.circle(root, pen_C, (s_x, s_y), r, 0)#绘制原点
+    pygame.draw.line(root, pen_C, (s_x + p[0], s_y), (s_x + p[1], s_y), d)  # X轴,Y定
+    pygame.draw.line(root, pen_C, (s_x, s_y + c[0]), (s_x, s_y + c[1]), d)  # y轴,x定
+    _a = 0#刻度统计
+    _c = 0
+    for i in range(s_x ,s_x + p[0], -kd):#右
+        _a -= 1
+        pygame.draw.line(root, pen_C, (i, s_y + b), (i, s_y), d)
+        _c = i
+    _b = 0
+    _d = 0
+    for i in range(s_x, s_x + p[1], kd):#刻度#左
+        _b += 1
+        pygame.draw.line(root, pen_C, (i, s_y + b), (i, s_y), d)
+        _d = i
+    X_L = [_a+1,_b-1]
+    X_P = [_c,_d]
+    _a = 0
+    _c = 0
+    for i in range(s_y, s_y + c[0], -kd):#上
+        _a += 1
+        pygame.draw.line(root, pen_C, (s_x + b, i), (s_x, i), d)
+        _c = i
+    _b = 0
+    _d = 0
+    for i in range(s_y, s_y + c[1], kd):#下
+        _b -= 1
+        pygame.draw.line(root, pen_C, (s_x + b, i), (s_x, i), d)
+        _d = i
+    Y_L = [_b+1,_a-1]
+    Y_C = [_d,_c]
+
+    #箭头
+    pygame.draw.line(root, pen_C, (s_x + p[1], s_y), (s_x + p[1] - jt, s_y + jt), d)  # X上
+    pygame.draw.line(root, pen_C, (s_x + p[1], s_y), (s_x + p[1] - jt, s_y - jt), d)  # X下
+
+    pygame.draw.line(root, pen_C, (s_x, s_y + c[0]), (s_x - jt, s_y + c[0] + jt), d)  # y左
+    pygame.draw.line(root, pen_C, (s_x, s_y + c[0]), (s_x + jt, s_y + c[0] + jt), d)  # X下
+
+def New_Tip():
+    #绘制顶部
+    global d,Font,Tip,Screen_x,Screen_y,ZJ,BC_Dic,Done_Name,Done,XY_x,XY_y,Talk,Line,Rect,Poly,pen_C,Z_C,J_C,axy,_KD
+    if Done:mod_d = '启动无点击画线(点击d关闭)'
+    else:mod_d = '关闭无点击画线'
+    pygame.draw.rect(root,[255,255,255], [0,0,Screen_x,16], 0)
+    pygame.draw.rect(root, [255, 255, 255], [0, Screen_y-16, Screen_x, Screen_y], 0)
+    p = ''
+    if ZJ == 0: Talk = ''
+    if axy != [0,0,0]:
+        a = []
+        for i in axy:
+            if i != 0:a.append(i)
+        p += f'坐标端点:{str(a)}  '
+    if Line:
+        p += f'端点:{str(Line)}  '
+    if Rect:
+        p += f'顶点(圆心):{str(Rect)}  '
+    if Poly:
+        p += f'多顶点:{str(Poly)}  '
+    if Done or ZJ != 0:
+        TIP3 = Font.render(f'模式:{mod_d} , {Done_Name[ZJ]} {Talk}', True, (0, 0, 0))
+    else:
+        s = ''
+        if BC_Dic:s = f'保存路径(w):{BC_Dic}'
+        TIP3 = Font.render(f'{time.strftime("%Y/%m/%d  %I:%M")}  {s}', True, (0, 0, 0))
+        p = ''
+    if p == '':
+        p = f'主色调:{pen_C} 增函数颜色:{Z_C} 减函数颜色:{J_C}'
+    TIP = Font.render(f'鼠标:{Tip[0]},{Tip[1]}',True, (0, 0, 0))
+    TIP2 = Font.render(f'{Tip[2]},{Tip[3]},{Tip[4]} ; 大小:{d} ; 原点:{XY_x},{XY_y} ; 跨度:{_KD} ; {p}', True, (0, 0, 0))
+    root.blit(TIP, (0, 0))
+    root.blit(TIP2, (100, 0))
+    root.blit(TIP3, (0, Screen_y - 16))
+
+#主程序
+def Draw(dis_x=900,dis_y=700):
+    global m_x, m_y,pen_C,d,BG,XY,axy,XY_x,XY_y,_KD,Line,Done,ZJ,Rect,Poly,root,root_caption,done,m_x, m_y,BC_Dic#定义全局变量
+    global Z_C,J_C,Tip,Font,Screen_x,Screen_y,Talk,Font
+    Screen_x = dis_x
+    Screen_y = dis_y
+    done = pygame.init()  # 初始化所有模块
+    if done[1] != 0: print('Init!')  # 检查是否错误
+    Font = pygame.font.Font('Font\ZKST.ttf', 16)  # 设置字体(Linux下应该用\而不是/)
+    root = pygame.display.set_mode((dis_x, dis_y),0)  # 创建屏幕
+    root_caption = pygame.display.set_caption('CoTan画图板')#定义标题(后期加上定义Logo)
+    root.fill([255, 255, 255])  # 默认用白色填充窗口
+    flat = True#循环条件(不是全局)
+    while flat:
+        New_Tip()
+        pygame.display.update()#屏幕刷新
+        for event in pygame.event.get():#事件检查
+            if event.type == QUIT:#退出事件
+                pygame.quit()
+                flat = False
+                break
+            elif event.type == MOUSEMOTION:#鼠标移动事件
+                Tip[0],Tip[1] = event.pos
+                Tip[2],Tip[3],Tip[4] = event.buttons
+                if event.buttons == (1, 0, 0):#左键点击
+                    draw_Line(event.pos)
+                elif event.buttons == (0, 0, 0):#无点击绘图(启动快捷键d)
+                    if Done:
+                        draw_Line(event.pos)
+                    else:#m_x和m_y是指上一点的xy,用于画线系统
+                        m_x = None
+                        m_y = None
+            elif event.type == MOUSEBUTTONDOWN:#鼠标按下
+                event.pos = list(event.pos)
+                if event.button == 3:#右键点击
+                    Tip[4] = 1
+                    pygame.image.save(root,'$CoTanCC.png')#保存当前环境
+                    root = pygame.display.set_mode((dis_x, dis_y), pygame.NOFRAME)#隐藏关闭按钮
+                    bg = pygame.image.load('$CoTanCC.png').convert()#加载位图
+                    root.blit(bg, (0, 0))#绘制位图
+                    pygame.display.update()#更新屏幕
+                    g = CC()#启动工具箱
+                    root = pygame.display.set_mode((dis_x, dis_y), 0)#显示关闭按钮
+                    bg = pygame.image.load('$CoTanCC.png').convert()#加载位图
+                    root.blit(bg, (0, 0))#绘制位图
+                    pygame.display.update()#更新屏幕
+                    os.remove('$CoTanCC.png')
+                    if g[0] != None:pen_C = g[0]#设置颜色
+                    if g[1] != None:d = g[1]#设置笔的粗细
+                    if g[2] != None: root.fill(g[2])#设置背景填充
+                    if g[3] == 1:#绘制坐标系
+                        Talk = '选择坐标三个端点'
+                        ZJ = 1
+                        XY = 3
+                        _KD = 60
+                    elif g[3] == 2:#绘制坐标系2(小跨度)
+                        Talk = '选择坐标三个端点'
+                        ZJ = 1
+                        XY = 3
+                        _KD = 20
+                    elif g[3] == 3:#绘制坐标系3(大跨度)
+                        Talk = '选择坐标三个端点'
+                        ZJ = 1
+                        XY = 3
+                        _KD = 120#坐标系跨度(字定义跨度再下面)
+                    else:
+                        ZJ = 0
+                        XY = 0#恢复选项
+                    if g[6] != None: Z_C = g[6]  # 增函数颜色(要在函数绘制之前设置好)
+                    if g[7] != None: J_C = g[7]  # 减函数颜色
+                    if g[4] != {}:HS(g[4])#函数绘制
+                    if g[5] != None:
+                        pygame.image.save(root, g[5])  # 保存当前环境
+                        BC_Dic = g[5]
+                    if g[8] != None: _KD = g[8]  # 自定义跨度
+                    if g[9] != None:
+                        try:
+                            bg_im = pygame.image.load(g[9]).convert()  # 加载位图
+                            root.blit(bg_im, (0, 0))  # 绘制位图
+                        except:pass
+                    #恢复参数
+                    m_x = None
+                    m_y = None
+                    Done = False
+                    pygame.event.clear()
+                elif event.button == 2:#中键点击,ZJ是指中键的模式,来自快捷键和工具箱
+                    Tip[3] = 1
+                    if ZJ == 1:#坐标系模式
+                        Talk = '选择下一个端点(共3个)'
+                        axy[XY-1] = event.pos#存储
+                        XY -= 1
+                        if XY == 0:
+                            x = []
+                            y = []
+                            for i in axy:
+                                x.append(i[0])
+                                y.append(i[1])
+                            x.sort()
+                            y.sort()#排序
+                            s_x = x[1]
+                            s_y = y[1]
+                            p = (-abs(x[0] - x[1]), abs(x[1] - x[2]))
+                            c = (-abs(y[0] - y[1]), abs(y[1] - y[2]))
+                            b = 2 * d
+                            r = 2 * d
+                            jt = 3 * d
+                            XYZ_ZBX(s_x,s_y,p,c,_KD,b,jt,r)
+                            axy = [0,0,0]
+                            ZJ = 0
+                    elif ZJ == 2:#画线模式
+                        Line.append(event.pos)
+                        # pygame.draw.circle(root, pen_C, event.pos, d, 0)
+                        if len(Line) == 2:
+                            pygame.draw.line(root, pen_C, Line[0],Line[1], d)
+                            ZJ = 0
+                    elif ZJ == 3 or ZJ == 4:#画矩形模式
+                        Rect.append(event.pos)
+                        if len(Rect) == 2:
+                            x = [Rect[0][0],Rect[1][0]]
+                            y = [Rect[0][1],Rect[1][1]]
+                            x.sort();y.sort()
+                            if ZJ == 3:dx = 0
+                            else:dx = d
+                            pygame.draw.rect(root, pen_C, [x[0], y[0], x[1]-x[0], y[1]-y[0]], dx)
+                            ZJ = 0
+                    elif ZJ == 5:#画横线模式
+                        Line.append(event.pos)
+                        if len(Line) == 2:
+                            pygame.draw.line(root, pen_C, Line[0],(Line[1][0],Line[0][1]), d)
+                            ZJ = 0
+                    elif ZJ == 6:#画竖线模式
+                        Line.append(event.pos)
+                        if len(Line) == 2:
+                            pygame.draw.line(root, pen_C, Line[0],(Line[0][0],Line[1][1]), d)
+                            ZJ = 0
+                    elif ZJ == 7:#画线多段线
+                        Line.append(event.pos)
+                        if len(Line) == 2:
+                            pygame.draw.line(root, pen_C, Line[0],Line[1], d)
+                            del Line[0]
+                    elif ZJ == 8:#画横线多段线
+                        Line.append(event.pos)
+                        if len(Line) == 2:
+                            pygame.draw.line(root, pen_C, Line[0],(Line[1][0],Line[0][1]), d)
+                            pygame.draw.circle(root, pen_C, (Line[1][0],Line[0][1]), d*2, 0)
+                            del Line[1]
+                        else:
+                            pygame.draw.circle(root, pen_C, event.pos, d, 0)
+                    elif ZJ == 9:#画竖线多段线
+                        Line.append(event.pos)
+                        if len(Line) == 2:
+                            pygame.draw.line(root, pen_C, Line[0],(Line[0][0],Line[1][1]), d)
+                            pygame.draw.circle(root, pen_C, (Line[0][0],Line[1][1]), d*2, 0)
+                            del Line[1]
+                        else:
+                            pygame.draw.circle(root, pen_C, event.pos, d, 0)
+                    elif ZJ == 10:#画竖线和横线多段线
+                        Line.append(event.pos)
+                        if len(Line) == 2:
+                            pygame.draw.line(root, pen_C, Line[0], (Line[1][0], Line[0][1]), d)#横线
+                            pygame.draw.circle(root, pen_C, (Line[1][0], Line[0][1]), d*2, 0)
+                            pygame.draw.circle(root, pen_C, (Line[1][0], Line[1][1]), d * 2, 0)
+                            pygame.draw.line(root, pen_C, Line[0],(Line[0][0],Line[1][1]), d)#竖线
+                            pygame.draw.circle(root, pen_C, (Line[0][0],Line[1][1]), d*2, 0)
+                            #垂直于横线的虚线
+                            p = [Line[1][1],Line[0][1]]
+                            p.sort()
+                            Y1 = p[0]
+                            Y2 = p[1]
+                            a = list(range(Y1, Y2, 10))
+                            for i in range(int(len(a) / 2)):  # 向下取整,可用math.ceil代替
+                                i += 1
+                                i = 2 * i - 1
+                                y1 = a[i - 1]  # 计算两点的y坐标
+                                y2 = a[i]
+                                pygame.draw.line(root, pen_C, (Line[1][0], y1), (Line[1][0], y2), d)  # 横线
+                            # 垂直于竖线的虚线
+                            p = [Line[1][0],Line[0][0]]
+                            p.sort()
+                            X1 = p[0]
+                            X2 = p[1]
+                            a = list(range(X1, X2, 10))
+                            for i in range(int(len(a) / 2)):  # 向下取整,可用math.ceil代替
+                                i += 1
+                                i = 2 * i - 1
+                                x1 = a[i - 1]  # 计算两点的x坐标
+                                x2 = a[i]
+                                pygame.draw.line(root, pen_C, (x1, Line[1][1]), (x2, Line[1][1]), d)  # 横线
+                            del Line[1]
+                        else:
+                            pygame.draw.circle(root, pen_C, event.pos, d, 0)
+                    elif ZJ == 11:#画虚线线模式
+                        Line.append(event.pos)
+                        pygame.draw.circle(root, pen_C, event.pos, d, 0)
+                        if len(Line) == 2:
+                            if abs(Line[0][0]- Line[1][0]) >= 100:
+                                p1 = [Line[0][0],Line[1][0]]
+                                p2 = {Line[0][0]:Line[0][1],Line[1][0]:Line[1][1]}
+                                p1.sort()
+                                X1 = p1[0]
+                                Y1 = p2[X1]
+                                X2 = p1[1]
+                                Y2 = p2[X2]
+                                a = list(range(X1, X2, 10))
+                                for i in range(int(len(a) / 2)):  # 向下取整,可用math.ceil代替
+                                    i += 1
+                                    i = 2 * i - 1
+                                    x1 = a[i - 1]  # 计算两点的x坐标
+                                    x2 = a[i]
+                                    y1 = (x1 - X1) / (X2 - X1) * (Y2 - Y1) + Y1
+                                    y2 = (x2 - X1) / (X2 - X1) * (Y2 - Y1) + Y1
+                                    pygame.draw.line(root, pen_C, (x1, y1), (x2, y2), d)  # 横线
+                            elif abs(Line[0][1]- Line[1][1]) >= 100:
+                                p1 = [Line[0][1], Line[1][1]]
+                                p2 = {Line[0][1]: Line[0][0], Line[1][1]: Line[1][0]}
+                                p1.sort()
+                                Y1 = p1[0]
+                                X1 = p2[Y1]
+                                Y2 = p1[1]
+                                X2 = p2[Y2]
+                                a = list(range(Y1, Y2, 10))
+                                for i in range(int(len(a) / 2)):  # 向下取整,可用math.ceil代替
+                                    i += 1
+                                    i = 2 * i - 1
+                                    y1 = a[i - 1]  # 计算两点的x坐标
+                                    y2 = a[i]
+                                    x1 = (y1 - Y1) / (Y2 - Y1) * (X2 - X1) + X1
+                                    x2 = (y2 - Y1) / (Y2 - Y1) * (X2 - X1) + X1
+                                    pygame.draw.line(root, pen_C, (x1, y1), (x2, y2), d)  # 横线
+                            else:
+                                pygame.draw.line(root, pen_C, Line[1], Line[0], d)
+                            ZJ = 0
+                    elif ZJ == 12:#画圆模式
+                        Rect.append(event.pos)
+                        if len(Rect) == 2:
+                            r = int(((Rect[0][0]-Rect[1][0])**2 + (Rect[0][1]-Rect[1][1])**2)**(1/2))#两点间求距离
+                            pygame.draw.circle(root, pen_C, Rect[0], r, 0)
+                            ZJ = 0
+                        else:
+                            pygame.draw.circle(root, pen_C, Rect[0], d*2, 0)
+                    elif ZJ == 13:#画圆线框模式
+                        Rect.append(event.pos)
+                        if len(Rect) == 2:
+                            r = int(((Rect[0][0]-Rect[1][0])**2 + (Rect[0][1]-Rect[1][1])**2)**(1/2))#两点间求距离
+                            pygame.draw.circle(root, pen_C, Rect[0], r, d)
+                            ZJ = 0
+                        else:
+                            pygame.draw.circle(root, pen_C, Rect[0], d, 0)
+                    elif ZJ == 14:  # 画多边形模式
+                        Line.append(event.pos)
+                        if len(Line) == 2:
+                            pygame.draw.line(root, pen_C, Line[0], Line[1], d)
+                            del Line[0]
+                        Poly.append(event.pos)
+                    elif ZJ == 15:#画椭圆模式
+                        Rect.append(event.pos)
+                        if len(Rect) == 2:
+                            x = [Rect[0][0],Rect[1][0]]
+                            y = [Rect[0][1],Rect[1][1]]
+                            x.sort();y.sort()
+                            pygame.draw.ellipse(root, pen_C,[x[0], y[0], x[1]-x[0], y[1]-y[0]], 0)
+                            ZJ = 0
+                    elif ZJ == 16:#画椭圆边框模式
+                        Rect.append(event.pos)
+                        if len(Rect) == 2:
+                            x = [Rect[0][0],Rect[1][0]]
+                            y = [Rect[0][1],Rect[1][1]]
+                            x.sort();y.sort()
+                            pygame.draw.ellipse(root, pen_C,[x[0], y[0], x[1]-x[0], y[1]-y[0]], d)
+                            ZJ = 0
+                elif event.button == 1:
+                    Tip[2] = 1
+                    pygame.draw.circle(root, pen_C, event.pos, d, 0)
+                    m_x = event.pos[0]
+                    m_y = event.pos[1]
+            elif event.type == KEYDOWN:#键盘按下(长按不算)快捷键
+                if event.key == K_d:#不用点击左键画线
+                    if Done:
+                        Done = False
+                    else:
+                        Done = True
+                        m_x = None
+                        m_y = None
+                elif event.key == K_g:#画直线
+                    Talk = '根据两个端点画直线'
+                    ZJ = 2
+                    Line = []
+                    Rect = []
+                    Poly = []
+                elif event.key == K_f:#画矩阵
+                    ZJ = 3
+                    Talk = '根据两个相对的顶点绘制矩形'
+                    Line = []
+                    Rect = []
+                    Poly = []
+                elif event.key == K_s:#画矩阵边框
+                    ZJ = 4
+                    Talk = '根据两个相对的顶点绘制矩形'
+                    Line = []
+                    Rect = []
+                    Poly = []
+                elif event.key == K_k:#画横线
+                    ZJ = 5
+                    Talk = '选择起点和与终点y坐标相同的点'
+                    Line = []
+                    Rect = []
+                    Poly = []
+                elif event.key == K_l:#画竖线
+                    ZJ = 6
+                    Talk = '选择起点和与终点x坐标相同的点'
+                    Line = []
+                    Rect = []
+                    Poly = []
+                elif event.key == K_j:#多段线
+                    if ZJ == 7:
+                        ZJ = 0
+                    else:
+                        ZJ = 7
+                        Talk = '依次选择多段线的顶点'
+                    Line = []
+                    Rect = []
+                    Poly = []
+                elif event.key == K_i:#多段线横线打点
+                    if ZJ == 8:
+                        ZJ = 0
+                    else:
+                        ZJ = 8
+                        Talk = '选择终点,依次选择与其他端点y坐标相同的点(点击i结束)'
+                    Line = []
+                    Rect = []
+                    Poly = []
+                elif event.key == K_u:#多段线竖线打点
+                    if ZJ == 9:
+                        ZJ = 0
+                    else:
+                        ZJ = 9
+                        Talk = '选择终点,依次选择与其他端点x坐标相同的点(点击u结束)'
+                    Line = []
+                    Rect = []
+                    Poly = []
+                elif event.key == K_h:#多段横竖线打点
+                    if ZJ == 10:
+                        ZJ = 0
+                    else:
+                        ZJ = 10
+                        Talk = '选择参考点,再选择研究对象(点击h结束)'
+                    Line = []
+                    Rect = []
+                    Poly = []
+                elif event.key == K_q:#绘制虚线
+                    ZJ = 11
+                    Talk = '选择虚线的两个端点'
+                    Line = []
+                    Rect = []
+                    Poly = []
+                elif event.key == K_c:#绘制圆形
+                    ZJ = 12
+                    Talk = '选择圆形和圆上任意一点(确定半径)'
+                    Line = []
+                    Rect = []
+                    Poly = []
+                elif event.key == K_v:#绘制圆形线框
+                    ZJ = 13
+                    Talk = '选择圆形和圆上任意一点(确定半径)'
+                    Line = []
+                    Rect = []
+                    Poly = []
+                elif event.key == K_o:#捕捉
+                    Talk = '起点已经捕捉到坐标系原点了'
+                    Line=[[XY_x,XY_y]]
+                    Rect=[[XY_x,XY_y]]
+                    Poly=[[XY_x,XY_y]]
+                elif event.key == K_y:#捕捉上y轴
+                    if len(Line) >= 1:
+                        Talk = '起点已经移动到坐标系y轴上了'
+                        Line[0][0] = XY_x
+                    if len(Rect) >= 1:
+                        Talk = '起点已经移动到坐标系y轴上了'
+                        Rect[0][0] = XY_x
+                    if len(Poly) >= 1:
+                        Talk = '起点已经移动到坐标系y轴上了'
+                        Rect[0][0] = XY_x
+                elif event.key == K_x:#捕捉上x轴
+                    if len(Line) >= 1:
+                        Talk = '起点已经移动到坐标系x轴上了'
+                        Line[0][1] = XY_y
+                    if len(Rect) >= 1:
+                        Talk = '起点已经移动到坐标系x轴上了'
+                        Rect[0][1] = XY_y
+                    if len(Poly) >= 1:
+                        Talk = '起点已经移动到坐标系x轴上了'
+                        Rect[0][1] = XY_y
+                elif event.key == K_n: # 画多边形
+                    if ZJ == 14:
+                        ZJ = 0
+                        pygame.draw.polygon(root,pen_C,Poly,0)
+                    else:
+                        Talk = '依次选择多边形的各个端点(点击n闭合并填充)'
+                        ZJ = 14
+                elif event.key == K_m: # 画多边形边框
+                    if ZJ == 14:
+                        ZJ = 0
+                        pygame.draw.polygon(root, pen_C, Poly, d)
+                    else:
+                        Talk = '依次选择多边形的各个端点(点击m闭合)'
+                        ZJ = 14
+                    Line = []
+                    Rect = []
+                    Poly = []
+                elif event.key == K_e:#绘制填充椭圆
+                    ZJ = 15
+                    Talk = '选择椭圆外界矩形的两个相对的顶点'
+                    Line = []
+                    Rect = []
+                    Poly = []
+                elif event.key == K_r:#绘制椭圆边框
+                    ZJ = 16
+                    Talk = '选择椭圆外界矩形的两个相对的顶点'
+                    Line = []
+                    Rect = []
+                    Poly = []
+                elif event.key == K_w:#保存
+                    if BC_Dic != '':
+                        pygame.image.save(root, BC_Dic)  # 保存当前环境
+                elif event.key == K_b:#清空当前操作
+                    ZJ = 0
+                    Line = []
+                    Rect = []
+                    Poly = []
+
+# 快捷键操作指南
+# d-不用点击左键画线(再次点击关闭)
+# g-画直线
+# f-画填充矩阵
+# s-画矩阵边框
+# k-画横线
+# l-画竖线
+# j-画多段线
+# i-横线多段线打点(再次点击结束绘制)
+# u-竖线多段线打点(再次点击结束绘制)
+# h-横线和竖线多段线打点并由虚线标注(再次点击结束绘制)
+# q-绘制虚线
+# c-绘制填充圆形
+# v-绘制圆形边框
+# n和m-绘制多边形
+# n-再次点击完成填充多边形绘制
+# m-再次点击完成多边形边框绘制
+# o-捕捉坐标原点(请先点击功能快捷键)
+# x-捕捉坐标x轴(请先点击功能快捷键并选择起点)
+# y-捕捉坐标y轴(同上)
+# b-关闭当前所有快捷键操作
+# e-绘制填充椭圆
+# r-绘制椭圆边框

BIN
CGB/ZKST.ttf


+ 2 - 0
CGB/__init__.py

@@ -0,0 +1,2 @@
+from CGB.Write import Draw as Draw
+print('CGB加载完毕...')

+ 558 - 0
DSGC/Algebra.py

@@ -0,0 +1,558 @@
+from sympy import *
+from sympy.plotting import plot3d,plot
+
+class Algebra_base:
+    def __init__(self,new=lambda x:x):
+        self.Name = {'self':self}#命名空间
+        self.Name.update(globals())
+        self.Name.update(locals())
+        self.Algebra_dict = {}
+        self.Algebra_dict_View = {}#门面
+        self.Symbol_MS = {}#描述文件
+        self.Take_News = new
+
+    def Draw_Core(self,f):
+        print(f'alg = {f}')
+        re = []
+        try:
+            name = f.func.__name__
+            args = f.args
+            if name == 'Pow':
+                try:
+                    if args[1] < 0:
+                        a = [['A', '1']]
+                        b = self.Draw_Core(f.func(args[0], -args[1]))
+                        print(b)
+                        re.append(['D', a, b])
+                        print(f'Qre = {re}')
+                    else:
+                        raise Exception
+                except:
+                    a = self.Draw_Core(args[0])
+                    b = self.Draw_Core(args[1])
+                    re.append(['B', a, b])
+            elif name == 'log':
+                # a = [['A', '']]
+                b = self.Draw_Core(args[0])
+                re.append(['C', [['A', 'ln ']], b])
+            elif name == 'Add':
+                a = 0
+                for i in args:
+                    get = self.Draw_Core(i)
+                    if a != 0:re.append(['A', ' + '])
+                    re += get
+                    a += 1
+            elif name == 'Mul':
+                a = 0
+                for i in args:
+                    get = self.Draw_Core(i)
+                    if a != 0:re.append(['A', ' × '])
+                    re += get
+                    a += 1
+            elif name == 'Rational':
+                q = str(f).split('/')
+                a = [['A', q[0]]]
+                b = [['A', q[1]]]
+                re.append(['D', a, b])
+            # elif name in ['Symbol', 'One', 'Zero', 'NegativeOne', 'Float', 'Rational', 'Half']:
+            #     raise Exception
+            elif len(args)<1:
+                raise Exception
+            else:#增添逗号
+                re.append(['A', f'{str(name)}( '])
+                a = 0
+                for i in args:
+                    get = self.Draw_Core(i)
+                    if a != 0:re.append(['A', ' , '])
+                    re += get
+                    a += 1
+                re.append(['A', ' )'])
+            print(f'bRe={re}')
+            return re
+        except:
+            a = str(f)
+            try:
+                if a[0] == '-':
+                    a = f'({a})'
+            except:pass
+            re.append(['A', a])
+            return re
+
+    def Simplify(self,alg,radio=1.7,func=None,rat=True,inv=False):#函数简化
+        if func == None:func = count_ops
+        try:
+            self.Take_News('正在标准化')
+            return simplify(alg,ratio=radio,func=func,rational=rat,inverse=inv)
+        except:
+            return None
+
+    def rprint_expression(self,e, level=0, First=True):#直接打印
+        e = simplify(e)#转换为sympy可以执行的对象
+        return self.print_expression_core(e,level,First)
+
+    def print_expression_core(self,e, level=0, First=True,q = 1):#递归
+        str_print = ' ' * level
+        if First: str_print = f'[{e}]\n' + str_print
+        try:
+            name = e.func.__name__
+            args = e.args
+            if args == (): raise Exception
+            if name == 'log':name = 'ln'
+            str_print += f'({q}){name}\n'
+            n = len(name)
+            for i in args:
+                self.Take_News('正在迭代运算中')
+                str_print += self.print_expression_core(i, level + n, First=False,q = q + 1)
+            return str_print
+        except:
+            return str_print + f'({q}){str(e)}\n'
+
+    def Split_Func_core(self,e,deep,f,first=True):#递归
+        try:
+            name = e.func.__name__
+            args = e.args
+            if name not in f or args == ():
+                if f != ['All']:
+                    raise Exception
+                else:
+                    deep = 1
+            if deep == 1:
+                if f == ['All'] and not first:
+                    re = [e]
+                else:
+                    re = []
+                for i in args:
+                    self.Take_News('正在迭代运算中')
+                    get = self.Split_Func_core(i, deep, f,False)
+                    re += get
+                return re
+            else:
+                return args
+        except:
+            return [e]
+
+    def Merge_Func_Core(self,name_list,Func):
+        if len(name_list) < 2:
+            return None
+        st = name_list[0]
+        for n in name_list[1:]:
+            st = Func(st,n)
+        return st
+
+    def Creat_Num(self,num,num_type):
+        try:
+            if num_type == 0:#浮点数
+                return Float(num)
+            elif num_type == 1:#整数
+                return Integer(num)
+            elif num_type == 2:#有理数
+                n = num.split('/')
+                return Rational(n[0],n[1])
+            else:
+                return sympify(num,locals=self.Name)
+        except:
+            return Integer(1)
+
+class Algebra_Polynomial(Algebra_base):
+    def __call__(self):
+        alg_view = []
+        alg = []
+        for name in self.Algebra_dict:
+            alg.append(name)
+            alg_view.append(f'{name} --> {self.Algebra_dict[name]}')
+        value = []
+        value_view = []
+        for name in self.Symbol_MS:
+            value.append(name)
+            value_view.append(f'符号:{name} --> {self.Symbol_MS[name]}')
+        return (value_view,value),(alg_view,alg)
+
+    def del_Symbol(self,x):
+        del self.Symbol_MS[x]
+        del self.Name[x]
+
+    def addSymbol(self,name,AT=0,RI=0,PC=0,EO=0,FI=0,CIR=None,NZ=None,INT=0,NONE=0,ms='自定义符号'):#创建符号(ms=描述)
+        k = {}
+        try:
+            name = name.replace(' ','')
+            exec(f'{name} = 5',{})#测试name有没有做符号名字的资质
+            if NONE == 1:raise Exception
+            if AT == 1:#代数
+                k['algebraic'] = True
+            elif AT == 2:#超越数
+                k['transcendental'] = True
+            if RI == 1:#有理数
+                k['rational'] = True
+            elif RI == 2:#无理数
+                k['irrational'] = True
+            if PC == 1:#质数
+                k['prime'] = True
+            elif PC == 2:#合数
+                k['composite'] = True
+            if EO == 1:#偶数
+                k['even'] = True
+            elif EO == 2:#奇数
+                k['odd'] = True
+            if FI == 1:#有限实数
+                k['finite'] = True
+            elif FI == 2:#无穷
+                k['infinite'] = True
+            elif FI == 3:#广义实数
+                k['extended_real'] = True
+            if INT == 1:
+                k['integer'] = True
+            try:#避免CIR不是list而是None
+                k[CIR[0]] = CIR[1]
+            except:pass
+            try:#避免NZ不是list而是None
+                k[NZ[0]] = NZ[1]
+            except:pass
+        except:
+            pass
+        new_Name = self.Name.copy()
+        new_Name.update({'k':k})
+        try:
+            exec(f"self.Name['{name}'] = Symbol('{name}',**k)",new_Name)#创建一个Symbols
+            self.Symbol_MS[name] = ms
+            return True
+        except:
+            return False
+            # raise
+    def Value_assumptions0(self,n):
+        value = self.Name[n]
+        get = value.assumptions0
+        R_T = []
+        R_F = []
+        for i in get:
+            if get[i]:
+                R_T.append(f'{FY(i)} >>> {get[i]}')
+            else:
+                R_F.append(f'{FY(i)} >>> {get[i]}')
+        return R_T + R_F
+
+    def addAlgebra(self,name,alg):#设置代数式
+        try:
+            name = name.replace(' ','')
+            try:
+                exec(f'{name}=5',{})#检查name是否符合标准
+            except:
+                name = f'F{str(len(self.Algebra_dict))}'
+            eval(f'{alg}',self.Name)#检查
+            self.Algebra_dict[name] = sympify(alg,locals=self.Name)
+            self.Algebra_dict_View[name] = str(alg)
+            return True
+        except:
+            return False
+
+    def del_Alg(self,name):
+        del self.Algebra_dict[name]
+        del self.Algebra_dict_View[name]
+
+    def Tra_Alg(self):
+        self.Algebra_dict = {}
+        self.Algebra_dict_View = {}
+
+    def get_Algebra(self,name,str = False):
+        if str:
+            return self.Algebra_dict_View[name]
+        else:
+            return self.Algebra_dict[name]
+
+    def print_expression(self,name, level=0, First=True):#根据名字打印
+        print(name)
+        return self.print_expression_core(self.get_Algebra(name),level,First)
+
+    def Split_Mul(self,name,renum=False,reone=False):
+        alg = self.get_Algebra(name)
+        r = factor(alg)
+        b = list(factor_list(alg))
+        c = []
+        for i in b:
+            if type(i) in (list, tuple):
+                b += list(i)
+            else:
+                try:
+                    if renum:
+                        if reone:
+                            raise Exception
+                        else:
+                            if i == 1:continue
+                    else:
+                        Float(i)
+                        continue  # 排除数字
+                except:
+                    pass
+                c.append(i)
+        return c,r
+
+    def Split_Add(self,name,Object,f):
+        alg = self.get_Algebra(name)
+        alg = expand(alg)
+        coll = collect(alg,Object)
+        coll_Dic = collect(alg,Object,evaluate=False)
+        if f == 0:
+            return list(coll_Dic.keys()),coll
+        elif f == 1:
+            return list(coll_Dic.values()),coll
+        else:
+            re = []
+            for i in coll_Dic:
+                re.append(i*coll_Dic[i])
+            return re,coll
+
+    def Split_Func(self,name,deep,f,must = True):
+        alg = self.get_Algebra(name)
+        if f == ['']:
+            try:
+                return alg.args,alg
+            except:
+                return None,alg
+        get = self.Split_Func_core(alg, deep, f)
+        re = []
+        if not must:
+            for i in get:
+                try:
+                    if i.args != ():re.append(i)
+                except:
+                    pass
+            return re,alg
+        return get, alg
+
+    def Merge_Add(self, name_list):
+        name = []
+        for n in name_list:
+            try:
+                name.append(self.get_Algebra(n))
+            except:pass
+        return self.Merge_Func_Core(name,Add)
+
+    def Merge_Mul(self, name_list):
+        name = []
+        for n in name_list:
+            try:
+                name.append(self.get_Algebra(n))
+            except:pass
+        return self.Merge_Func_Core(name,Mul)
+
+    def Merge_Func(self, name_list,f):
+        name = []
+        func = self.Name[f]
+        for n in name_list:
+            try:
+                name.append(self.get_Algebra(n))
+            except:pass
+        return self.Merge_Func_Core(name,func)
+
+    def Fractional_merge(self,name):#最小公分母合并
+        alg = self.get_Algebra(name)
+        return ratsimp(alg)
+
+    def Fraction_reduction(self,name):#分式化简
+        alg = self.get_Algebra(name)
+        return cancel(alg)
+
+    def Fractional_fission(self,name,x):#分式裂项
+        x = self.Name[x]
+        alg = self.get_Algebra(name)
+        return apart(alg,x)
+
+    def as_Fraction(self,name,deep):#合成分式
+        alg = self.get_Algebra(name)
+        return together(alg,deep)
+
+    def Fractional_rat(self,name,s,Max):#分母有理化
+        alg = self.get_Algebra(name)
+        return radsimp(alg,s,Max)
+
+    def Trig_Simp(self,name):#三角化简
+        alg = self.get_Algebra(name)
+        return trigsimp(alg)
+
+    def Trig_Expansion(self,name,deep):#三角化简
+        alg = self.get_Algebra(name)
+        return expand_trig(alg,deep)
+
+    def Mul_Expansion(self,name):
+        alg = self.get_Algebra(name)
+        return expand_mul(alg)
+
+    def Multinomial_Expansion(self,name):
+        alg = self.get_Algebra(name)
+        return expand_multinomial(alg)
+
+    def Pow_Simp_Multinomial(self,name):
+        alg = self.get_Algebra(name)
+        return powdenest(alg)
+
+    def Pow_Simp_base(self,name,JS):#处理底数
+        return self.Pow_Simp(name,JS,'base')
+
+    def Pow_Simp_exp(self,name,JS):#处理指数
+        return self.Pow_Simp(name,JS,'exp')
+
+    def Pow_Simp(self,name,JS,combine='all'):#均处理
+        alg = self.get_Algebra(name)
+        return powsimp(alg,force=JS,combine=combine)
+
+    def Pow_Expansion_base(self,name,deep):
+        alg = self.get_Algebra(name)
+        return expand_power_base(alg,deep)
+
+    def Pow_Expansion_exp(self,name,deep):
+        alg = self.get_Algebra(name)
+        return expand_power_exp(alg,deep)
+
+    def Pow_Expansion(self,name,deep):
+        alg = self.get_Algebra(name)
+        return expand(alg,deep=deep, log=False, mul=False,
+        power_exp=True, power_base=True, multinomial=True,
+        basic=False)
+
+    def log_Simp(self,name,fo):
+        alg = self.get_Algebra(name)
+        return logcombine(alg,fo)
+
+    def log_Expansion(self,name,deep,fo):
+        alg = self.get_Algebra(name)
+        return expand_log(alg,deep,fo)
+
+    def simplify(self,name,ratdio=1.7,func=None,rat=True,inv=False):
+        alg = self.get_Algebra(name)
+        self.Simplify(alg,ratdio,func,rat,inv)
+
+    def expansion(self,name,IM):
+        alg = self.get_Algebra(name)
+        return expand(alg,complex=IM)
+
+    def factor(self,name,M,GS,Deep,Rat):
+        k = {}
+        if M != None:k['modulus']=M
+        if GS:k['gaussian']=True
+        alg = self.get_Algebra(name)
+        return factor(alg,deep = Deep,fraction=Rat,**k)
+
+    def Collect(self,name,x):
+        alg = self.get_Algebra(name)
+        try:
+            return collect(alg,x)
+        except:
+            return ceiling(alg)
+
+    def complex_Ex(self,name):
+        alg = self.get_Algebra(name)
+        return expand_complex(alg)
+
+    def func_Ex(self,name):
+        alg = self.get_Algebra(name)
+        return expand_func(alg)
+
+    def to_num(self,name,n):
+        alg = self.get_Algebra(name)
+        return alg.evalf(n)
+
+    def Sub_Value(self,name,Dic):
+        alg = self.get_Algebra(name)
+        sympy_Dic = {}#
+        for i in Dic:#i是符号,Dic[i]是代数式名字
+            try:
+                v_alg = self.get_Algebra(Dic[i])#获得代数式
+                get = self.Name[i]#处理符号
+                sympy_Dic[get] = v_alg
+            except:pass
+        return alg.subs(sympy_Dic)
+
+    def RSub_Value(self,name,Dic):
+        alg = self.get_Algebra(name)
+        sympy_Dic = {}
+        for i in Dic:#i是代数式名字,Dic[i]是符号
+            try:
+                v_alg = self.get_Algebra(i)#获得代数式
+                get = self.Name[Dic[i]]#处理符号
+                sympy_Dic[v_alg] = get
+            except:pass
+        return alg.subs(sympy_Dic)
+
+    def SubNum_Value(self,name,Dic):
+        alg = self.get_Algebra(name)
+        sympy_Dic = {}
+        for i in Dic:#i是符号,Dic[i]是数字
+            try:
+                get = self.Name[i]#处理符号
+                sympy_Dic[get] = Dic[i]
+            except:pass
+        return alg.subs(sympy_Dic)
+
+    def Solve(self,alg_list):
+        alg = []
+        x_list = set()
+        for i in alg_list:
+            z = self.get_Algebra(i[0])
+            y = self.get_Algebra(i[1])
+            alg.append(Eq(z,y))
+            x_list = x_list|alg[-1].atoms(Symbol)
+        x_list = list(x_list)
+        re = []
+        for x in x_list:#遍历原子
+            get = solve(alg,x,dict=True)
+            for i in get:#遍历答案
+                for a in i:
+                    re.append((a,i[a]))
+        return re
+
+    def Solve_Inequality(self,alg_list,Type_Num):
+        Type = ['>','<','>=','<='][Type_Num]
+        z = self.get_Algebra(alg_list[0])
+        y = self.get_Algebra(alg_list[1])
+        f = sympify(f'{z} {Type} {y}',locals=self.Name)
+        print(f)
+        answer = solve(f)
+        if answer == True:
+            return ['恒成立']
+        elif answer == False:
+            return ['恒不成立']
+        get = self.Split_Func_core(answer,1,('Or'))
+        return get
+
+    def Rewrite(self,name,Func,DX,deep=False):
+        alg = self.get_Algebra(name)
+        f = sympify(Func,locals=self.Name)#重新函数
+        if DX != []:
+            ff = []  # 重写对象
+            for i in DX:
+                ff.append(sympify(i,locals=self.Name))
+            return alg.rewrite(ff, f, deep=deep)
+        else:
+            return alg.rewrite(f, deep=deep)
+
+    def Plot(self,name,list_2D,list_3D = None):
+        list_2D = list_2D.copy()
+        alg = self.get_Algebra(name)
+        list_2D[0] = self.Name[list_2D[0]]
+        if list_3D == None:
+            self.Take_News('正在绘制图像')
+            plot(alg, tuple(list_2D),xlabel=f'{list_2D[0]}',ylabel=f'{alg}',title='CoTan Algebra')
+        else:
+            list_3D = list_3D.copy()
+            list_3D[0] = self.Name[list_3D[0]]
+            self.Take_News('正在绘制图像')
+            plot3d(alg, tuple(list_2D),tuple(list_3D), xlabel=f'{list_2D[0]}', ylabel=f'{list_3D[0]}',zlable=f'{alg}',title='CoTan Algebra')
+
+    def Draw(self,name):
+        alg = self.get_Algebra(name)
+        return self.Draw_Core(alg)
+
+#提供翻译服务
+def FY(word):
+    book = {'algebraic':'代数','transcendental':'超越数','rational':'有理数','irrational':'无理数',
+            'odd':'奇数','even':'偶数','negative':'负数','positive':'正数','zero':'零',
+            'complex':'复数','imaginary':'虚数','real':'实数','integer':'整数','prime':'质数',
+            'composite':'合数','finite':'有限数字','infinite':'无穷','extended_real':'广义实数',
+            'commutative':'满足交换律','hermitian':'厄米特矩阵','nonnegative':'非负数',
+            'nonpositive':'非正数','nonzero':'非零实数','noninteger':'非整数','extended_nonzero':'广义非零数',
+            'extended_negative':'广义负数','extended_nonpositive':'广义非正数','extended_nonnegative':'广义非负数',
+            'extended_positive':'广义正数'}
+    try:
+        CN = book[word]
+        return f'{CN}({word})'
+    except:
+        return word

+ 1798 - 0
DSGC/Algebra_Systemctl.py

@@ -0,0 +1,1798 @@
+import tkinter,tkinter.messagebox
+import tkinter.font as tkFont
+from DSGC.Algebra import Algebra_Polynomial
+
+#删除系统
+#树状图打印核心组件
+def Draw_An_Alg():
+    global alg,Can_Input,kd_bool,logkd_bool
+    name = get_AlgName()
+    get = alg.Draw(name)
+    try:
+        wh = Can_Input.get().split(',')
+        w = int(wh[0])
+        h = int(wh[1])
+    except:
+        w = 1000
+        h = 300
+    kd = bool(kd_bool.get())
+    logkd = bool(logkd_bool.get())
+    Draw_Alg(get,w,h,kd,logkd)
+
+def Draw_Alg(n,w,h,kh=True,logkh=True):
+    new_top = tkinter.Toplevel(bg=bg)
+    new_top.resizable(width=False, height=False)
+    new_top.geometry('+10+10')  # 设置所在位置
+    Can = tkinter.Canvas(new_top,bg=bg, width=w, height=h)
+    Can.pack()
+    size = 20
+    F2 = ('Fixdsys', size)
+    x = 30
+    y = 150
+    l = (size/16)*5.5
+    print(f'n={n}')
+    for i in n:
+        if i[0] == 'A':
+            print(f'A.={i}')
+            te = f'{i[1]}'
+            x += len(te) * l
+            Can.create_text(x, y,font=F2, text=te)
+            x += len(te) * l
+        elif i[0] == 'B':
+            print(f'B.={i}')
+            if kh:x, y, q = Draw_Son([['A', '[']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+            x, y,h = Draw_Son(i[1], Can, x, y, size,[],kh,logkh)  # 底数
+            dy = y
+            y = h-10
+            x, y,q = Draw_Son(i[2], Can, x, y, size - 5,[],kh,logkh)  # 指数
+            y = dy
+            if kh:x, y, q = Draw_Son([['A', ']']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+        elif i[0] == 'C':
+            print(f'C.={i}')
+            if kh:x, y, q = Draw_Son([['A', '[']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+            x, y, h = Draw_Son(i[1], Can, x, y, size, [],kh,logkh)  # log符号
+            # y += 10
+            # if logkh:x, y, q = Draw_Son([['A', '(']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+            # x, y, q = Draw_Son(i[2], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+            # if logkh:x, y, q = Draw_Son([['A', ')']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+            # y -= 10
+            if logkh:x, y, q = Draw_Son([['A', '(']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+            x, y, q = Draw_Son(i[2], Can, x, y, size, [],kh,logkh)  # 递归呼叫儿子
+            if logkh:x, y, q = Draw_Son([['A', ')']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+            if kh:x, y, q = Draw_Son([['A', ']']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+        elif i[0] == 'D':
+            print(f'D.={i}')
+            if kh:x, y, q = Draw_Son([['A', '[']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+            y -= 20
+            a_x, y, h = Draw_Son(i[1], Can, x, y, size, [],kh,logkh)  # log符号
+            y += 40
+            b_x, y, h = Draw_Son(i[2], Can, x, y, size, [],kh,logkh)  # log符号
+            n_x = max([a_x, b_x]) - x
+            y -= 20
+            x, y, h = Draw_Son([('A', '-' * int((n_x /(2*l))))], Can, x, y, size, [],kh,logkh)  # log符号
+            if kh:x, y, q = Draw_Son([['A', ']']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+
+    addNews('运算完毕')
+
+def Draw_Son(n,Can,x,y,size,max_y,kh=True,logkh=True):
+    F2 = ('Fixdsys', size)
+    l = (size/16)*5.5
+    print(f'n={n}')
+    for i in n:
+        if i[0] == 'A':#只有A才是真的画图,其他是移动坐标
+            max_y.append(y)
+            print(f'A={i}')
+            te = f'{i[1]}'
+            x += len(te) * l
+            Can.create_text(x, y,font=F2, text=te)
+            x += len(te) * l
+        elif i[0] == 'B':
+            print(f'B={i}')
+            if kh:x, y, q = Draw_Son([['A', '[']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+            x, y, h = Draw_Son(i[1], Can, x, y, size,max_y,kh,logkh)  # 底数
+            dy = y
+            y = h-10
+            x, y,q = Draw_Son(i[2], Can, x, y, size - 5,max_y,kh,logkh)  # 递归呼叫儿子
+            y = dy
+            if kh:x, y, q = Draw_Son([['A', ']']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+        elif i[0] == 'C':
+            print(f'C={i}')
+            if kh:x, y, q = Draw_Son([['A', '[']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+            x, y, h = Draw_Son(i[1], Can, x, y, size, [],kh,logkh)  # log符号
+            # y += 10
+            # if logkh:x, y, q = Draw_Son([['A', '(']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+            # x, y, q = Draw_Son(i[2], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+            # if logkh:x, y, q = Draw_Son([['A', ')']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+            # y -= 10
+            if logkh:x, y, q = Draw_Son([['A', '(']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+            x, y, q = Draw_Son(i[2], Can, x, y, size, [],kh,logkh)  # 递归呼叫儿子
+            if logkh:x, y, q = Draw_Son([['A', ')']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+            if kh:x, y, q = Draw_Son([['A', ']']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+        elif i[0] == 'D':
+            print(f'D={i}')
+            if kh:x, y, q = Draw_Son([['A', '[']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+            y -= 20
+            a_x, y, h = Draw_Son(i[1], Can, x, y, size, [],kh,logkh)  # log符号
+            y += 40
+            b_x, y, h = Draw_Son(i[2], Can, x, y, size, [],kh,logkh)  # log符号
+            n_x = max([a_x, b_x]) - x
+            y -= 20
+            x, y, h = Draw_Son([('A', '-' * int((n_x/(2*l))))], Can, x, y, size, [],kh,logkh)  # log符号
+            if kh:x, y, q = Draw_Son([['A', ']']], Can, x, y, size - 5, [],kh,logkh)  # 递归呼叫儿子
+    try:
+        re = min(max_y)
+    except:
+        re = 150
+    return x,y,re
+
+def Print_Sym_Core(str_,w=40,h=20,jh=True):
+    global New_Text,alg,bg
+    if jh:
+        try:
+            str_ = alg.rprint_expression(str_)
+            addNews('树状图计算成功')
+        except:
+            addNews('树状图计算失败')
+            return False
+    addNews('系统运算中')
+    new_top = tkinter.Toplevel(bg=bg)
+    new_top.resizable(width=False, height=False)
+    new_top.geometry('+10+10')  # 设置所在位置
+    New_Text = tkinter.Text(new_top, width=w, height=h)
+    New_Text.pack()
+    New_Text.delete(1.0, tkinter.END)
+    New_Text.insert(tkinter.END,str_)
+    New_Text.config(state=tkinter.DISABLED)
+    addNews('运算完毕')
+#打印接口(按钮)
+def Print_Sym():
+    global New_Text,alg,Can_Input
+    n = get_AlgName()
+    print(n)
+    try:
+        str_ = alg.print_expression(n)
+    except:
+        # raise
+        return False
+    try:
+        wh = Can_Input.get().split(',')
+        w = int(wh[0])/10
+        h = int(wh[1])/10
+    except:
+        w = 40
+        h = 20
+    Print_Sym_Core(str_,w,h,False)
+
+def Tra_Alg():
+    global alg
+    try:
+        alg.Tra_Alg()
+        update_BOX()
+        addNews('删除完成')
+    except:
+        addNews('删除失败')
+
+def Del_Alg():
+    global alg
+    name = get_AlgName()
+    try:
+        alg.del_Alg(name)
+        update_BOX()
+        addNews('删除完成')
+    except:
+        addNews('删除失败')
+
+def Del_Symbol():
+    global alg
+    try:
+        value = Value_List[Value_BOX.curselection()[0]]
+    except:
+        addNews('请选定符号')
+        return False
+    try:
+        alg.del_Symbol(value)
+        update_BOX()
+        addNews('删除完成')
+    except:
+        # raise
+        addNews('删除失败')
+
+#画图系统
+def Plotting():
+    global alg, p2D_Value, p3D_Value, Plot_Type
+    try:
+        ty = Plot_Type.get()
+        if p2D_Value == None:raise Exception
+        if ty == 1 and p3D_Value == None:raise Exception
+        name = get_AlgName()
+        alg.Plot(name,p2D_Value,p3D_Value)
+    except:
+        addNews('画图失败')
+
+def add_PlotValue():
+    global alg,p2D_Value,p3D_Value,Range_Input,Plot_Type,Value_List,Value_BOX
+    try:
+        try:
+            value = Value_List[Value_BOX.curselection()[0]]
+        except:
+            addNews('请选定符号')
+            return False
+        R = Range_Input.get().split(',')
+        if R == ['']:R = [-10,10]
+        Range = [min((float(R[0]),float(R[1]))),max((float(R[0]),float(R[1])))]
+        tup = [value]+Range
+        ty = Plot_Type.get()
+    except:
+        addNews('修改失败')
+        return False
+    if p2D_Value == None:
+        p2D_Value = tup
+    elif p3D_Value == None and ty == 1:
+        if p2D_Value[0] != tup[0]:
+            p3D_Value = tup
+        else:
+            p2D_Value = tup
+    else:
+        if ty == 0:#2D
+            p2D_Value = tup
+            p3D_Value = None
+        else:#3D
+            if p2D_Value[0] == tup[0]:
+                p2D_Value = tup
+            elif p3D_Value[0] == tup[0]:
+                p3D_Value = tup
+            else:
+                p2D_Value = p3D_Value
+                p3D_Value = tup
+    addNews('修改完成')
+    Update_PlotValue()
+
+def Update_PlotValue():
+    global PlotValue_BOX,Plot_Type,p2D_Value,p3D_Value
+    ty = Plot_Type.get()
+    re = []
+    try:
+        if ty == 0:#2D
+            re = [f'二维:{p2D_Value[0]} -> ({p2D_Value[1]},{p2D_Value[2]})']
+        else:
+            re = [f'三维:{p2D_Value[0]} -> ({p2D_Value[1]},{p2D_Value[2]})']
+            re.append(f'三维:{p3D_Value[0]} -> ({p3D_Value[1]},{p3D_Value[2]})')
+    except:pass
+    PlotValue_BOX.delete(0, tkinter.END)
+    PlotValue_BOX.insert(tkinter.END, *re)
+
+#重写代数式
+def Rewrite():
+    global alg,Rewrite_Input,Rewrite_F_Input,Rewrite_deep
+    Func = Rewrite_Input.get()
+    DX = Rewrite_F_Input.get().split(',')
+    if DX == ['']:DX = []
+    deep = bool(Rewrite_deep.get())
+    name = get_AlgName()
+    try:
+        get = alg.Rewrite(name,Func,DX,deep)
+        addNews('运行完成')
+    except:
+        addNews('运行失败')
+    After_Func(get, f'代数式重写的结果为:{get},是否应用?')
+
+#解不等式
+def Update_Inequality_BOX():
+    global Z_Inequality,Y_Inequality,Inequality_Type,Inequality_BOX
+    re = []
+    if Z_Inequality != None and Y_Inequality != None:
+        Type = ['>', '<', '>=', '<='][Inequality_Type.get()]
+        re.append(f'{Z_Inequality} {Type} {Y_Inequality}')
+    else:
+        if Z_Inequality != None:
+            re.append(f'左代数式:{Z_Inequality}')
+        if Y_Inequality != None:
+            re.append(f'右代数式:{Y_Inequality}')
+    Inequality_BOX.delete(0, tkinter.END)
+    Inequality_BOX.insert(tkinter.END, *re)
+
+def Inequality_Solve():
+    global alg,Z_Inequality,Y_Inequality,Inequality_Type,AnswerInequality_BOX
+    if Z_Inequality != None and Y_Inequality != None:
+        type = Inequality_Type.get()
+        try:
+            get = alg.Solve_Inequality([Z_Inequality,Y_Inequality],type)
+            AnswerInequality_BOX.delete(0, tkinter.END)
+            AnswerInequality_BOX.insert(tkinter.END, *get)
+            addNews('运行完成')
+        except:
+            addNews('解不等式失败')
+
+def In_add_Z():
+    global Z_Inequality
+    Z_Inequality = get_AlgName()
+    Update_Inequality_BOX()
+
+def In_add_Y():
+    global Y_Inequality
+    Y_Inequality = get_AlgName()
+    Update_Inequality_BOX()
+
+#解方程
+def To_Alg():
+    global Answer_BOX, Answer_List
+    get = Answer_List[Answer_BOX.curselection()[0]][1]#[1]取结果
+    After_Func(get, f'联立结果为:{get},是否应用?')
+
+def To_Sub():
+    global Answer_BOX, Answer_List,Sub_Dic
+    get = Answer_List[Answer_BOX.curselection()[0]]
+    Sub_Dic[get[0]] = get[1]
+    Update_Sub()
+
+def To_RSub():
+    global Answer_BOX, Answer_List,RSub_Dic
+    get = Answer_List[Answer_BOX.curselection()[0]]
+    RSub_Dic[get[1]] = get[0]
+    Update_RSub()
+
+def alg_Solve():
+    global Solve_list,Answer_BOX,Answer_List
+    try:
+        get = alg.Solve(Solve_list)
+        addNews('运行成功')
+    except:
+        addNews('解方程失败')
+        return False
+    Answer_List = []
+    re = []
+    for i in get:
+        re.append(f'{i[0]} = {i[1]}')
+        Answer_List.append((i[0],i[1]))
+    Answer_BOX.delete(0, tkinter.END)
+    Answer_BOX.insert(tkinter.END, *re)
+
+def Del_Solve():
+    global Solve_list,Z_alg, Y_alg,Solve_BOX
+    num = Solve_BOX.curselection()[0]
+    if Z_alg != None or Y_alg != None:
+        if num == 0:
+            Z_alg = None
+            Y_alg = None
+        else:
+            num -= 1
+            del Solve_list[num]
+    else:
+        del Solve_list[num]
+    Update_SolveBOX()
+
+def Update_SolveBOX():
+    global Solve_list,Solve_BOX,Z_alg, Y_alg
+    BOX = []
+    if Z_alg != None or Y_alg != None:
+        BOX.append(f'(选定){Z_alg} = {Y_alg}')
+    for i in Solve_list:
+        BOX.append(f'{i[0]} = {i[1]}')
+    Solve_BOX.delete(0, tkinter.END)
+    Solve_BOX.insert(tkinter.END, *BOX)
+
+def add_ZY():
+    global Z_alg, Y_alg, Solve_list, Answer_List
+    if Z_alg != None and Y_alg != None:
+        Solve_list.append((Z_alg,Y_alg))
+        Z_alg = None
+        Y_alg = None
+    Update_SolveBOX()
+
+def add_Z():
+    global Z_alg, Y_alg, Solve_list, Answer_List
+    Z_alg = get_AlgName()
+    Update_SolveBOX()
+
+
+def add_Y():
+    global Z_alg, Y_alg, Solve_list, Answer_List
+    Y_alg = get_AlgName()
+    Update_SolveBOX()
+
+
+#代数运算
+def Alg_Sub_Num():
+    global alg,Value_Sub_Dic
+    name = get_AlgName()
+    try:
+        get = alg.SubNum_Value(name,Value_Sub_Dic)
+        addNews('运算成功')
+    except:
+        addNews('代数运算失败')
+        return False
+    After_Func(get, f'联立结果为:{get},是否应用?')
+
+def Update_Sub_Num():
+    global alg, Value_Sub_Dic,ValueNUM_BOX
+    BOX = []
+    for v in Value_Sub_Dic:
+        BOX.append(f'{v} = {Value_Sub_Dic[v]}')
+    ValueNUM_BOX.delete(0, tkinter.END)
+    ValueNUM_BOX.insert(tkinter.END, *BOX)
+
+def Del_Sub_Num():
+    global alg,Value_Sub_Dic,ValueNUM_BOX
+    num = ValueNUM_BOX.curselection()[0]
+    del Value_Sub_Dic[list(Value_Sub_Dic.keys())[num]]
+    Update_Sub_Num()
+
+def Add_Sub_Num():
+    global ValueNUM_Input,Value_Sub_Dic,Num_Type
+    try:
+        value_name = Value_List[Value_BOX.curselection()[0]]
+    except:
+        addNews('请选定符号')
+        return False
+    value_num = alg.Creat_Num(ValueNUM_Input.get(),Num_Type.get())#不同类型
+    Value_Sub_Dic[value_name] = value_num
+    Update_Sub_Num()
+
+#反向联立
+def Alg_RSub():
+    global alg,RSub_Dic
+    name = get_AlgName()
+    try:
+        get = alg.RSub_Value(name,RSub_Dic)
+        addNews('反向联立完成')
+    except:
+        addNews('无法联立')
+        return False
+    After_Func(get, f'联立结果为:{get},是否应用?')
+
+
+def Update_RSub():
+    global alg, RSub_Dic, RSub_Alg, RSub_Value, RSub_BOX
+    BOX = []
+    if RSub_Value != None or RSub_Alg != None:
+        BOX.append(f'选定:{RSub_Alg} = {RSub_Value}')
+    for v in RSub_Dic:
+        BOX.append(f'{v} = {RSub_Dic[v]}')
+    RSub_BOX.delete(0, tkinter.END)
+    RSub_BOX.insert(tkinter.END, *BOX)
+
+
+def Del_RSub():
+    global alg,RSub_Dic, RSub_Alg, RSub_Value
+    num = RSub_BOX.curselection()[0]
+    if RSub_Value != None or RSub_Alg != None:
+        if num == 0:
+            RSub_Value = None
+            RSub_Alg = None
+        else:
+            num -= 1
+            del RSub_Dic[list(RSub_Dic.keys())[num]]
+    else:
+        del RSub_Dic[list(RSub_Dic.keys())[num]]
+    Update_RSub()
+
+def Add_RSub():
+    global alg, RSub_Dic, RSub_Alg,RSub_Value
+    if RSub_Value != None and RSub_Alg != None:
+        RSub_Dic[RSub_Alg] = RSub_Value
+        RSub_Value,RSub_Alg = None,None
+    Update_RSub()
+
+def Add_RSub_Alg():
+    global alg,RSub_Alg
+    alg_name = get_AlgName()
+    RSub_Alg = alg_name
+    Update_RSub()
+
+def Add_RSub_Value():
+    global alg,Value_List,Value_BOX,RSub_Value
+    try:
+        value_name = Value_List[Value_BOX.curselection()[0]]
+    except:
+        addNews('请选定符号')
+        return False
+    RSub_Value = value_name
+    Update_RSub()
+
+#执行符号->代数式联立
+def Alg_Sub():
+    global alg,Sub_Dic
+    name = get_AlgName()
+    try:
+        get = alg.Sub_Value(name,Sub_Dic)
+        addNews('联立完成')
+    except:
+        addNews('无法联立')
+        return False
+    After_Func(get, f'联立结果为:{get},是否应用?')
+
+
+def Update_Sub():
+    global alg, Value_List, Value_BOX, Sub_Dic, Sub_Alg, Sub_Value, Sub_BOX
+    BOX = []
+    if Sub_Value != None or Sub_Alg != None:
+        BOX.append(f'选定:{Sub_Value} = {Sub_Alg}')
+    for v in Sub_Dic:
+        BOX.append(f'{v} = {Sub_Dic[v]}')
+    Sub_BOX.delete(0, tkinter.END)
+    Sub_BOX.insert(tkinter.END, *BOX)
+
+
+def Del_Sub():
+    global alg, Value_List, Value_BOX, Sub_Dic, Sub_Alg, Sub_Value
+    num = Sub_BOX.curselection()[0]
+    if Sub_Value != None or Sub_Alg != None:
+        if num == 0:
+            Sub_Value = None
+            Sub_Alg = None
+        else:
+            num -= 1
+            del Sub_Dic[list(Sub_Dic.keys())[num]]
+    else:
+        del Sub_Dic[list(Sub_Dic.keys())[num]]
+    Update_Sub()
+
+def Add_Sub():
+    global alg, Value_List, Value_BOX, Sub_Dic, Sub_Alg,Sub_Value
+    if Sub_Value != None and Sub_Alg != None:
+        Sub_Dic[Sub_Value] = Sub_Alg
+        Sub_Value,Sub_Alg = None,None
+    Update_Sub()
+
+def Add_Sub_Alg():
+    global alg,Value_List,Value_BOX,Sub_Alg
+    alg_name = get_AlgName()
+    Sub_Alg = alg_name
+    Update_Sub()
+
+def Add_Sub_Value():
+    global alg,Value_List,Value_BOX,Sub_Value
+    try:
+        value_name = Value_List[Value_BOX.curselection()[0]]
+    except:
+        addNews('请选定符号')
+        return False
+    Sub_Value = value_name
+    Update_Sub()
+
+def alg_to_Num():
+    global alg,Num_Input
+    try:
+        num = int(Num_Input.get())
+    except:
+        num = 5
+    try:
+        get = alg.to_num(num)
+        addNews('数字化完成')
+    except:
+        addNews('数字化失败')
+        return False
+    After_Func(get, f'数字化的结果为:{get},是否应用?')
+
+def Ex_Func():
+    global alg
+    name = get_AlgName()
+    try:
+        get = alg.func_Ex(name)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'展开特殊函数的结果为:{get},是否应用?')
+
+def Ex_I():
+    global alg
+    name = get_AlgName()
+    try:
+        get = alg.complex_Ex(name)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'展开虚数的结果为:{get},是否应用?')
+
+def Coll():
+    global alg,CollX_Input
+    x = CollX_Input.get().split('#')
+    name = get_AlgName()
+    try:
+        get = alg.Collect(name,x)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get,f'合并同类项的结果为:{get},是否应用?')
+
+def Expansion():
+    global alg,EX_IM
+    IM = bool(EX_IM.get())
+    name = get_AlgName()
+    try:
+        get = alg.expansion(name,IM)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'普遍展开的结果为:{get},是否应用?')
+
+def Factor():
+    global alg,GAOSI, FactorM_Input,Factor_Deep,Factor_Rat
+    name = get_AlgName()
+    GS = bool(GAOSI.get())
+    Deep = bool(Factor_Deep.get())
+    Rat = bool(Factor_Rat.get())
+    try:
+        M = int(FactorM_Input.get())
+    except:
+        M = None
+    try:
+        get = alg.factor(name,M,GS,Deep,Rat)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'因式分解的结果为:{get},是否应用?')
+
+def Simp():
+    global alg,Simpratio_Input,SimpFunc_Input,simp_in,simp_rat
+    try:
+        radio = float(Simpratio_Input.get())
+    except:radio = 1.7
+    rat = bool(simp_rat.get())
+    inverse = bool(simp_in.get())
+    name = get_AlgName()
+    try:
+        get = alg.simplify(name,radio,rat=rat,inv=inverse)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'化简(标准化)为:{get},是否应用?')
+
+def After_Func(re,message):
+    if tkinter.messagebox.askokcancel('提示', message):
+        alg.addAlgebra('', re)
+        update_BOX()
+
+def log_Ex():
+    global alg,Fo_log,Deep_log
+    Fo = not bool(Fo_log.get())
+    Deep = bool(Deep_log.get())
+    name = get_AlgName()
+    try:
+        get = alg.log_Expansion(name,Fo,Deep)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'展开对数结果为:{get},是否应用?')
+
+def log_Simp():
+    global alg,Fo_log
+    Fo = not bool(Fo_log.get())
+    name = get_AlgName()
+    try:
+        get = alg.log_Simp(name,Fo)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'化简对数结果为:{get},是否应用?')
+
+def mul_Ex():
+    global alg,Fo_exp
+    name = get_AlgName()
+    try:
+        get = alg.Mul_Expansion(name)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'展开乘法结果为:{get},是否应用?')
+
+def multinomial_Ex():
+    global alg,Fo_exp
+    name = get_AlgName()
+    try:
+        get = alg.Multinomial_Expansion(name)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'展开加法式幂结果为:{get},是否应用?')
+
+def multinomial_Simp():
+    global alg,Fo_exp
+    name = get_AlgName()
+    try:
+        get = alg.Pow_Simp_Multinomial(name)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'合成幂指数的结果为:{get},是否应用?(彻底化简加法式幂可以使用因式分解)')
+
+def exp_Ex_Mul():
+    global alg,Fo_exp
+    deep = bool(Deep_exp.get())
+    name = get_AlgName()
+    try:
+        get = alg.Pow_Expansion_base(name,deep)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'展开指数底数结果为:{get},是否应用?')
+
+def exp_Ex_base():
+    global alg,Fo_exp
+    deep = bool(Deep_exp.get())
+    name = get_AlgName()
+    try:
+        get = alg.Pow_Expansion_base(name,deep)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'展开指数底数结果为:{get},是否应用?')
+
+def exp_Ex_exp():
+    global alg,Deep_exp
+    deep = bool(Deep_exp.get())
+    name = get_AlgName()
+    try:
+        get = alg.Pow_Expansion_exp(name,deep)
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'展开指数幂结果为:{get},是否应用?')
+
+def exp_Ex():
+    global alg,Deep_exp
+    deep = bool(Deep_exp.get())
+    name = get_AlgName()
+    try:
+        get = alg.Pow_Expansion(name,deep)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'展开指数结果为:{get},是否应用?')
+
+def exp_Simp_base():
+    global alg,Fo_exp
+    Fo = not bool(Fo_exp.get())
+    name = get_AlgName()
+    try:
+        get = alg.Pow_Simp_base(name,Fo)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'化简指数底数结果为:{get},是否应用?')
+
+def exp_Simp_exp():
+    global alg,Fo_exp
+    Fo = not bool(Fo_exp.get())
+    name = get_AlgName()
+    try:
+        get = alg.Pow_Simp_exp(name,Fo)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'化简指数幂结果为:{get},是否应用?')
+
+def exp_Simp():
+    global alg,Fo_exp
+    Fo = not bool(Fo_exp.get())
+    name = get_AlgName()
+    try:
+        get = alg.Pow_Simp(name,Fo)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'化简指数结果为:{get},是否应用?')
+
+def trig_Simp():#三角函数化简
+    global alg
+    name = get_AlgName()
+    try:
+        get = alg.Trig_Simp(name)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get,f'三角化简结果为:{get},是否应用?')
+
+def trig_Expand():#三角展开
+    global alg,simp_deep
+    deep = bool(simp_deep.get())
+    name = get_AlgName()
+    try:
+        get = alg.Trig_Expansion(name,deep)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'三角展开结果为:{get},是否应用?')
+
+def rat():#通分
+    global alg
+    name = get_AlgName()
+    try:
+        get = alg.Fractional_merge(name)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get,f'分式通分结果为:{get},是否应用?')
+
+def canc():#约分
+    global alg
+    name = get_AlgName()
+    try:
+        get = alg.Fraction_reduction(name)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get,f'分式约分结果为:{get},是否应用?')
+
+def apart():#裂项
+    global alg,apart_Input
+    x = apart_Input.get().replace(' ','')
+    if x == '':x = None
+    name = get_AlgName()
+    try:
+        get = alg.Fractional_fission(name,x)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get,f'分式裂项结果为:{get},是否应用?')
+
+def as_Fraction():#together
+    global alg,together_deep
+    deep = bool(together_deep.get())
+    name = get_AlgName()
+    try:
+        get = alg.as_Fraction(name,deep)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'合成分式结果为:{get},是否应用?')
+
+def Fraction_rat():#分母有理化
+    global alg,radsymbol,radMax_Input
+    #Max
+    try:M = int(radMax_Input.get())
+    except:M=4
+    #Symbol
+    s = bool(radsymbol.get())
+    name = get_AlgName()
+    try:
+        get = alg.Fractional_rat(name,s,M)
+        addNews('运算成功')
+    except:
+        addNews('运算失败')
+        return False
+    After_Func(get, f'分母有理化结果为:{get},是否应用?')
+
+def Option_Add():
+    global alg,Option_BOX,Option_List
+    name = get_AlgName()
+    if name == None:return False
+    Option_List.append(name)
+    Update_Option_BOX()
+
+def Option_Del():
+    global Option_BOX, Option_List
+    del Option_List[Option_BOX.curselection()[0]]
+    Update_Option_BOX()
+
+def Option_Tra():
+    global Option_BOX, Option_List
+    update_BOX()
+
+def Update_Option_BOX():
+    global Option_BOX, Option_List
+    re = []
+    for i in range(len(Option_List)):
+        re.append(f'({i + 1}) --> {Option_List[i]}')
+    Option_BOX.delete(0, tkinter.END)
+    Option_BOX.insert(tkinter.END, *re)
+
+def Merge_Func():
+    global alg, Option_List,Merge_Func_Input
+    name = Option_List.copy()
+    if len(name) < 2: raise Exception
+    try:
+        re = alg.Merge_Func(name,Merge_Func_Input.get())
+        addNews('合成成功')
+    except:
+        addNews('合成失败')
+        return False
+    if tkinter.messagebox.askokcancel('提示', f'合成结果为:{re},是否应用?'):
+        alg.addAlgebra('', re)
+        update_BOX()
+
+def Merge_Mul():
+    global alg, Option_List
+    name = Option_List.copy()
+    if len(name)<2:raise Exception
+    try:
+        re = alg.Merge_Mul(name)
+        addNews('合成成功')
+    except:
+        addNews('合成失败')
+        return False
+    if tkinter.messagebox.askokcancel('提示', f'合成结果为:{re},是否应用?'):
+        alg.addAlgebra('',re)
+        update_BOX()
+
+def Merge_Add():
+    global alg,Option_List
+    name = Option_List.copy()
+    if len(name)<2:raise Exception
+    try:
+        re = alg.Merge_Add(name)
+        addNews('合成成功')
+    except:
+        addNews('合成失败')
+        return False
+    if tkinter.messagebox.askokcancel('提示', f'合成结果为:{re},是否应用?'):
+        alg.addAlgebra('',re)
+        update_BOX()
+
+def Func_Split():
+    global alg,Deep_Split,Func_Input,Split_XS
+    name = get_AlgName()
+    Deep = Deep_Split.get()
+    f = Func_Input.get().split(',')
+    m = Split_XS.get()
+    if m == 1:must = False
+    else:must = True
+    try:
+        re = alg.Split_Func(name,Deep,f,must)
+        addNews('拆分成功')
+    except:
+        addNews('拆分失败')
+        return False
+    if tkinter.messagebox.askokcancel('提示', f'{name}分解结果为:{re[1]},拆分之后:{re[0]},是否应用?'):
+        for in_alg in re[0]:
+            alg.addAlgebra('',in_alg)
+            update_BOX()
+
+def Split_Add():
+    global alg,Object_Input,Split_XS
+    name = get_AlgName()
+    Value = Object_Input.get().split('#')
+    f = Split_XS.get()
+    try:
+        re = alg.Split_Add(name,Value,f)
+        addNews('拆分成功')
+    except:
+        addNews('拆分失败')
+        return False
+    if tkinter.messagebox.askokcancel('提示', f'{name}分解结果为:{re[1]},拆分之后:{re[0]},是否应用?'):
+        for in_alg in re[0]:
+            alg.addAlgebra('',in_alg)
+            update_BOX()
+
+def Split_Mul():
+    global alg,Split_XS
+    name = get_AlgName()
+    all = Split_XS.get()
+    if all == 0:
+        k = [True,False]
+    elif all == 1:
+        k = [False, False]
+    else:
+        k = [True, True]
+    try:
+        re = alg.Split_Mul(name,*k)
+        addNews('拆分成功')
+    except:
+        addNews('拆分失败')
+        return False
+    if tkinter.messagebox.askokcancel('提示', f'{name}分解结果为:{re[1]},拆分之后:{re[0]},是否应用?'):
+        for in_alg in re[0]:
+            alg.addAlgebra('',in_alg)
+            update_BOX()
+
+#统一接口:得到alg的名字(提取第一个)
+def get_AlgName():
+    global alg_list,Alg_BOX
+    try:
+        print(alg_list)
+        name = alg_list[Alg_BOX.curselection()[0]]
+        print(name)
+    except:
+        name = None
+        addNews('请选定代数式')
+    return name
+
+#结果显示统一接口
+def Re(list,str_= None):#结果显示
+    global alg,Re_BOX
+    Re_BOX.delete(0, tkinter.END)
+    Re_BOX.insert(tkinter.END, *list)
+    if str_ != None:
+        Print_Sym_Core(str_)
+
+def Add_Alg():
+    global AlgName_Input,Alg_Input,Alg_BOX,simp_in,simp_rat,ratio_Input,simp_bool
+    try:
+        in_alg = Alg_Input.get()
+        name = AlgName_Input.get().replace(' ','')
+        if bool(simp_bool.get()):
+            radio_list = ratio_Input.get().split('#')
+            radio = float(radio_list[0])
+            rat = bool(simp_rat.get())
+            inverse = bool(simp_in.get())
+            new_alg = alg.Simplify(in_alg,radio=radio,rat=rat,inv=inverse)
+            if new_alg != None and tkinter.messagebox.askokcancel('提示', f'约简函数为:{new_alg},是否应用?'):
+                in_alg = new_alg
+        if not alg.addAlgebra(name,in_alg):raise Exception
+        update_BOX()
+        addNews('代数式新增成功')
+    except:
+        addNews('新增代数式无法应用')
+#获取预测
+def get_JS():
+    global Value_BOX,Value_List,alg,JS_BOX
+    try:
+        try:
+            n = Value_List[Value_BOX.curselection()[0]]
+        except:
+            addNews('请选定符号')
+            return False
+        JS_BOX.delete(0, tkinter.END)
+        JS_BOX.insert(tkinter.END, *alg.Value_assumptions0(n))
+        addNews('性质预测成功')
+    except:
+        addNews('性质预测失败')
+#更新列表显示
+def update_BOX():
+    global alg,Value_BOX,Value_List,Alg_BOX,alg_list,Option_List,Option_BOX
+    #保存符号
+    re = alg()#0-value,1-alg
+    Value_List = re[0][1]
+    #显示符号
+    Value_BOX.delete(0, tkinter.END)
+    Value_BOX.insert(tkinter.END, *re[0][0])
+    #保存代数式
+    alg_list = re[1][1]
+    #显示代数式
+    Alg_BOX.delete(0, tkinter.END)
+    Alg_BOX.insert(tkinter.END, *re[1][0])
+    Option_List = []
+    Option_BOX.delete(0, tkinter.END)
+
+def AddSymbol():#添加自定义Symbol
+    global AT, RI, PC, EO, FI, CIR, NZ, ValueName_Input,Value_BOX,NONE,INT
+    #复选框系统
+    C = []
+    n = 0
+    for i in CIR:
+        C.append(i.get())
+        n += C[-1]
+    if n == 1:#选一个设为True
+        RCIR = [['complex','real','imaginary'][C.index(1)],True]#对象,布尔
+    elif n == 2:#选两个设为False
+        RCIR = [['complex','real','imaginary'][C.index(0)],False]#对象,布尔
+    else:
+        RCIR = None#其余
+
+    C = []
+    n = 0
+    for i in CIR:
+        C.append(i.get())
+        n += C[-1]
+    if n == 1:  # 选一个设为True
+        RNZ = [['positive', 'negative', 'zero'][C.index(1)], True]  # 对象,布尔
+    elif n == 2:  # 选两个设为False
+        RNZ = [['positive', 'negative', 'zero'][C.index(0)], False]  # 对象,布尔
+    else:
+        RNZ = None  # 其余
+    try:
+        __addSymbot_Core(AT.get(),RI.get(),PC.get(),EO.get(),FI.get(),RCIR,RNZ,INT.get())
+    except:
+        addNews('自定义符号新增失败')
+
+def addRSymbol():#添加实数符号
+    __addSymbot_Core(RCIR=['real',True],ms='实数(且复数)符号')
+def addZSymbol():#添加整数符号
+    __addSymbot_Core(INT=1,ms='整数(且实数)符号')
+def addNPSymbol():#非负实数
+    __addSymbot_Core(RNZ=['negative',False],RCIR=['real',True],ms='非负实数符号')
+def addevenSymbol():#偶数
+    __addSymbot_Core(EO=1,ms='偶数(且整数)符号')
+def addoddSymbol():#奇数
+    __addSymbot_Core(EO=2,ms='奇数(且整数)符号')
+def addZRSymbol():#正实数
+    __addSymbot_Core(RNZ=['positive',True],RCIR=['real',True],ms='正实数符号')
+def addZZSymbol():#正整数
+    __addSymbot_Core(RNZ=['positive',True],INT=1,ms='正整数符号')
+def addNSymbol():#自然数
+    __addSymbot_Core(RNZ=['negative',False],INT=1,ms='自然数(非负整数)符号')
+def addWSymbol():#无约束
+    __addSymbot_Core(NONE=1,ms='仅满足交换律的无约束符号')
+#添加Symbol的统一接口
+def __addSymbot_Core(AT=0,RI=0,PC=0,EO=0,FI=0,RCIR=None,RNZ=None,INT=0, NONE=0,ms='自定义符号'):
+    global alg
+    #代数,有理,质数,偶数,有限实数,复数,正负,整数,取消
+    name_list = ValueName_Input.get().split(',')
+    for name in name_list:
+        try:
+            if not alg.addSymbol(name, AT, RI, PC, EO, FI, RCIR, RNZ, INT, NONE,ms): raise Exception
+        except:
+            addNews(f'新增“{name}”失败')
+    addNews(f'新增“{ms}”完成')
+    update_BOX()
+
+def addNews(News):
+    global News_BOX,T,top
+    T += 1
+    News = str(News)
+    News_BOX.insert(0, News+f'({T})')
+    top.update()
+
+def Alg():
+    global alg,top,Value_List,alg_list,Option_List,Sub_Dic,Sub_Value,Sub_Alg,RSub_Dic,RSub_Value,RSub_Alg,Value_Sub_Dic
+    global Z_alg,Y_alg,Solve_list,Answer_List,Z_Inequality,Y_Inequality,p2D_Value,p3D_Value,T
+    global bg,bbg,fg,F2,FONT,F3
+
+    alg = Algebra_Polynomial(addNews)
+
+    alg_list = []
+    Value_List = []
+    top = tkinter.Tk()
+    bg = '#FFFAFA'#主颜色
+    bbg = '#FFFAFA'#按钮颜色
+    fg = '#000000'#文字颜色
+    top["bg"] = bg
+    FONT = ('Font\ZKST.ttf', 11)#设置字体
+    # F2 = tkFont.Font(family='Fixdsys', size=16)
+    F2 = ('Fixdsys',16)
+    F3 = tkFont.Font(family='Fixdsys', size=11)
+    top.title('CoTan代数工厂')
+    top.resizable(width=False, height=False)
+    top.geometry('+10+10')#设置所在位置
+    Option_List = []
+    Sub_Dic = {}#Sub替换字典
+    Sub_Value = None#选定的Sub符号
+    Sub_Alg = None#选定的Sub代数式
+    RSub_Dic = {}  # Sub替换字典
+    RSub_Value = None  # 选定的Sub符号
+    RSub_Alg = None  # 选定的Sub代数式
+    Value_Sub_Dic = {}#代数运算空列表
+    Z_alg = None
+    Y_alg = None
+    Solve_list = []
+    Answer_List = []
+    Z_Inequality = None
+    Y_Inequality = None
+    p2D_Value = None#画图
+    p3D_Value = None
+    T = 0
+
+    width_B = 13#标准宽度
+    height_B=2
+
+    global Name_Input,FZ_Input,FM_Input,NUM_BOX,AT, RI, PC, EO, FI, CIR, NZ, ValueName_Input, Value_BOX, NONE, INT
+    a_y = 0
+    a_x = 0
+    tkinter.Label(top, text='符号名字:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,row=a_y)  # 设置说明
+    ValueName_Input = tkinter.Entry(top, width=width_B * 2)
+    ValueName_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='实数符号(R)', command=addRSymbol, font=FONT, width=width_B,
+                   height=height_B).grid(column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='整数符号(Z)', command=addZSymbol, font=FONT, width=width_B,
+                   height=height_B).grid(column=a_x+1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='非负实数符号', command=addNPSymbol, font=FONT, width=width_B,
+                   height=height_B).grid(column=a_x+2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='偶数符号', command=addevenSymbol, font=FONT, width=width_B,
+                   height=height_B).grid(column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='奇数符号', command=addoddSymbol, font=FONT, width=width_B,
+                   height=height_B).grid(column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='正数符号', command=addZRSymbol, font=FONT, width=width_B,
+                   height=height_B).grid(column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='自然数符号', command=addNSymbol, font=FONT, width=width_B,
+                   height=height_B).grid(column=a_x , row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='正整数符号', command=addZZSymbol, font=FONT, width=width_B,
+                   height=height_B).grid(column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='无约束符号', command=addWSymbol, font=FONT, width=width_B,
+                   height=height_B).grid(column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+    a_y += 1
+    AT = tkinter.IntVar()#代数或者超越数
+    lable = ['均可','代数','超越数']
+    for i in range(3):
+        tkinter.Radiobutton(top,bg = bg,fg = fg,activebackground=bg,activeforeground=fg,selectcolor=bg, text=lable[i], variable=AT, value=i).grid(column=a_x+i, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    RI = tkinter.IntVar()#有理数或者无理数
+    lable = ['均可','有理数','无理数']
+    for i in range(3):
+        tkinter.Radiobutton(top,bg = bg,fg = fg,activebackground=bg,activeforeground=fg,selectcolor=bg, text=lable[i], variable=RI, value=i).grid(column=a_x+i, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    PC = tkinter.IntVar()#质数合数
+    lable = ['均可','质数','合数']
+    for i in range(3):
+        tkinter.Radiobutton(top,bg = bg,fg = fg,activebackground=bg,activeforeground=fg,selectcolor=bg, text=lable[i], variable=PC, value=i).grid(column=a_x+i, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    EO = tkinter.IntVar()#奇数偶数
+    lable = ['均可','偶数','奇数']
+    for i in range(3):
+        tkinter.Radiobutton(top,bg = bg,fg = fg,activebackground=bg,activeforeground=fg,selectcolor=bg, text=lable[i], variable=EO, value=i).grid(column=a_x+i, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    CIR = []#实数虚数
+    lable = ['复数','实数','虚数']
+    for i in range(3):
+        CIR.append(tkinter.IntVar())
+        tkinter.Checkbutton(top,bg = bg,fg = fg,activebackground=bg,activeforeground=fg,selectcolor=bg, text=lable[i], variable=CIR[-1]).grid(column=a_x+i, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    NZ = []#正,负,0
+    lable = ['正数','负数','零']#复选框
+    for i in range(3):
+        NZ.append(tkinter.IntVar())
+        tkinter.Checkbutton(top,bg = bg,fg = fg,activebackground=bg,activeforeground=fg,selectcolor=bg, text=lable[i], variable=NZ[-1]).grid(column=a_x+i, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    FI = tkinter.IntVar()#实数
+    lable = ['均可','有限实数','无穷数','广义实数']
+    for i in range(3):
+        tkinter.Radiobutton(top,bg = bg,fg = fg,activebackground=bg,activeforeground=fg,selectcolor=bg, text=lable[i], variable=FI, value=i).grid(column=a_x+i, row=a_y, sticky=tkinter.W)
+    a_y += 1
+    tkinter.Radiobutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text=lable[3],
+                        variable=FI, value=3).grid(column=a_x, row=a_y, sticky=tkinter.W)#同上的
+
+    INT = tkinter.IntVar()
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='整数',
+                        variable=INT).grid(column=a_x + 2, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    Value_BOX = tkinter.Listbox(top, width=width_B * 3,height = height_B*4)  # 显示符号
+    Value_BOX.grid(column=a_x, row=a_y, columnspan=3, rowspan=6,sticky=tkinter.E + tkinter.W + tkinter.S + tkinter.N)
+
+    a_y += 6
+    tkinter.Button(top, bg=bbg, fg=fg, text='自定义符号', command=AddSymbol, font=FONT, width=width_B,
+                   height=height_B).grid(column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)  # 添加函数
+    tkinter.Button(top, bg=bbg, fg=fg, text='查看假设',command = get_JS, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x+1, row=a_y, sticky=tkinter.E + tkinter.W)  # 添加函数
+    tkinter.Button(top, bg=bbg, fg=fg, text='删除符号',command = Del_Symbol, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x+2, row=a_y, sticky=tkinter.E + tkinter.W)  # 添加函数
+
+    global JS_BOX
+    a_y += 1
+    JS_BOX = tkinter.Listbox(top, width=width_B * 3,height = height_B*5)  # 显示函数假设
+    JS_BOX.grid(column=a_x, row=a_y,columnspan = 3,rowspan=5, sticky=tkinter.E + tkinter.W + tkinter.S + tkinter.N)
+
+    a_x += 3
+    tkinter.Label(top, text='', bg=bg, fg=fg, font=FONT, width=1).grid(column=a_x, row=0)
+    a_x += 1
+
+    global AlgName_Input,Alg_Input,Alg_BOX,simp_in,simp_rat,ratio_Input,simp_bool
+    a_y = 0
+    tkinter.Label(top, text='代数式:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,
+                                                                                                   row=a_y)  # 设置说明
+    Alg_Input = tkinter.Entry(top, width=width_B * 2)
+    Alg_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='标识:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,
+                                                                                                        row=a_y)  # 设置说明
+    AlgName_Input = tkinter.Entry(top, width=width_B * 2)
+    AlgName_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='标准:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,
+                                                                                                 row=a_y)  # 设置说明
+    ratio_Input = tkinter.Entry(top, width=width_B * 2)
+    ratio_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    simp_rat = tkinter.IntVar()
+    tkinter.Checkbutton(top,bg = bg,fg = fg,activebackground=bg,activeforeground=fg,selectcolor=bg, text='有理化', variable=simp_rat).grid(
+        column=a_x, row=a_y, sticky=tkinter.W)
+
+    simp_in = tkinter.IntVar()
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='忽略假设',
+                        variable=simp_in).grid(column=a_x + 2, row=a_y, sticky=tkinter.W)
+
+    simp_bool = tkinter.IntVar()
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='标准化',
+                        variable=simp_bool).grid(column=a_x + 1, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='清空代数式',command=Tra_Alg, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='生成代数式', command=Add_Alg, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)  # 添加函数
+    tkinter.Button(top, bg=bbg, fg=fg, text='删除代数式',command=Del_Alg, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    Alg_BOX = tkinter.Listbox(top, width=width_B * 3)  # 显示代数式
+    Alg_BOX.grid(column=a_x, row=a_y, columnspan=3, rowspan=4, sticky=tkinter.E + tkinter.W + tkinter.S + tkinter.N)
+
+    global Object_Input,Split_XS,Deep_Split,Func_Input,Rewrite_Input,Rewrite_F_Input,Rewrite_deep
+    a_y += 4
+    tkinter.Label(top, text='重写对象:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,
+                                                                                                   row=a_y)  # 设置说明
+    Rewrite_F_Input = tkinter.Entry(top, width=width_B*2)
+    Rewrite_F_Input.grid(column=a_x + 1,columnspan=2, row=a_y, sticky=tkinter.W + tkinter.E)
+
+
+    a_y += 1
+    tkinter.Label(top, text='重写方法:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,row=a_y)  # 设置说明
+    Rewrite_Input = tkinter.Entry(top, width=width_B*2)
+    Rewrite_Input.grid(column=a_x + 1,columnspan=2, row=a_y, sticky=tkinter.W + tkinter.E)
+
+    a_y += 1
+    Rewrite_deep = tkinter.IntVar()
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='重写子代数式',
+                        variable=Rewrite_deep).grid(column=a_x+2, row=a_y, sticky=tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='重写代数式', command=Rewrite, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, row=a_y,columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='同类项:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,row=a_y)  # 设置说明
+    Object_Input = tkinter.Entry(top, width=width_B * 2)
+    Object_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    Split_XS = tkinter.IntVar()#正,负,0
+    lable = ['仅系数(同类项)','仅代数式','均保留']#复选框
+    for i in range(3):
+        tkinter.Radiobutton(top,bg = bg,fg = fg,activebackground=bg,activeforeground=fg,selectcolor=bg, text=lable[i], variable=Split_XS, value=i).grid(column=a_x+i, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='拆分函数:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,
+                                                                                                     row=a_y)  # 设置说明
+    Func_Input = tkinter.Entry(top, width=width_B)
+    Func_Input.grid(column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)
+    Deep_Split = tkinter.IntVar()
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='完全拆分',
+                        variable=Deep_Split).grid(column=a_x + 2, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='同类项拆分',command=Split_Add, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='乘法拆分', command=Split_Mul, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)  # 添加函数
+    tkinter.Button(top, bg=bbg, fg=fg, text='函数拆分',command=Func_Split, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    global Option_BOX
+    a_y += 1
+    Option_BOX = tkinter.Listbox(top, width=width_B * 3,height = height_B*4)  # 显示代数式
+    Option_BOX.grid(column=a_x, row=a_y, columnspan=3, rowspan=4, sticky=tkinter.E + tkinter.W + tkinter.S + tkinter.N)
+
+    a_y += 4
+    tkinter.Button(top, bg=bbg, fg=fg, text='添加',command=Option_Add, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='清空', command=Option_Tra, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)  # 添加函数
+    tkinter.Button(top, bg=bbg, fg=fg, text='删除',command=Option_Del, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    global Merge_Func_Input
+    a_y += 1
+    tkinter.Label(top, text='合成函数:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,row=a_y)  # 设置说明
+    Merge_Func_Input = tkinter.Entry(top, width=width_B * 2)
+    Merge_Func_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='多项式合成',command=Merge_Add, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='因式合成', command=Merge_Mul, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)  # 添加函数
+    tkinter.Button(top, bg=bbg, fg=fg, text='函数合成',command=Merge_Func, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    global Num_Input
+    a_y += 1
+    tkinter.Label(top, text='有效数字:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x+1,
+                                                                                                   row=a_y)  # 设置说明
+    Num_Input = tkinter.Entry(top, width=width_B)
+    Num_Input.grid(column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    tkinter.Button(top, bg=bbg, fg=fg, text='代数式数字化', command=alg_to_Num, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    a_x += 3
+    tkinter.Label(top, text='', bg=bg, fg=fg, font=FONT, width=1).grid(column=a_x, row=0)
+
+    a_x += 1
+    a_y = 0
+    tkinter.Label(top, text='【分式恒等变形】', bg=bg, fg=fg, font=FONT, width=width_B*3, height=height_B).grid(
+        column=a_x,row=a_y,columnspan=3)  # 设置说明
+
+    global apart_Input,together_deep,radsymbol,radMax_Input
+    a_y += 1
+    together_deep = tkinter.IntVar()
+    tkinter.Label(top, text='裂项关注对象:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,row=a_y)  # 设置说明
+    apart_Input = tkinter.Entry(top, width=width_B)
+    apart_Input.grid(column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='完全转化分式',
+                        variable=together_deep).grid(column=a_x + 2, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    radsymbol = tkinter.IntVar()
+    tkinter.Label(top, text='最大无理项:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,row=a_y)  # 设置说明
+    radMax_Input = tkinter.Entry(top, width=width_B)
+    radMax_Input.grid(column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='有理化符号分母',
+                        variable=radsymbol).grid(column=a_x + 2, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='最小公分母',command=rat, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='分式约分',command=canc, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x+1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='分式裂项',command=apart, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x+2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='分母有理化',command=Fraction_rat, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='转化为分式(小改动)',command=as_Fraction, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x+1,columnspan=2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='【三角恒等变换】', bg=bg, fg=fg, font=FONT, width=width_B*3, height=height_B).grid(
+        column=a_x,row=a_y,columnspan=3)  # 设置说明
+
+    global simp_deep
+    a_y += 1
+    simp_deep = tkinter.IntVar()
+    tkinter.Button(top, bg=bbg, fg=fg, text='展开三角函数',command=trig_Expand, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='三角函数合成',command=trig_Simp, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x+1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='完全展开',
+                        variable=simp_deep).grid(column=a_x + 2, row=a_y, sticky=tkinter.W)
+
+    global Fo_exp,Deep_exp
+    a_y += 1
+    tkinter.Label(top, text='【乘法、指数、对数恒等变形】', bg=bg, fg=fg, font=FONT, width=width_B*3, height=height_B).grid(
+        column=a_x,row=a_y,columnspan=3)  # 设置说明
+
+    a_y += 1
+    Fo_exp = tkinter.IntVar()
+    Deep_exp = tkinter.IntVar()
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='忽略假设',
+                        variable=Fo_exp).grid(column=a_x + 1, row=a_y, sticky=tkinter.W)
+
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='完全展开',
+                        variable=Deep_exp).grid(column=a_x, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='展开乘法',command=mul_Ex, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='展开加法式幂',command=multinomial_Ex, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='指数合成', command=multinomial_Simp, font=FONT, width=width_B,
+                   height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='化简指数底数',command=exp_Simp_base, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='化简指数幂',command=exp_Simp_exp, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x+1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='化简指数',command=exp_Simp, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='展开指数底数',command=exp_Ex_base, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='展开指数幂',command=exp_Ex_exp, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='展开指数',command=exp_Ex, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    global Fo_log,Deep_log
+    Fo_log = tkinter.IntVar()
+    Deep_log = tkinter.IntVar()
+
+    a_y += 1
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='完全展开',
+                        variable=Deep_log).grid(column=a_x, row=a_y, sticky=tkinter.W)
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='忽略假设',
+                        variable=Fo_log).grid(column=a_x+1, row=a_y, sticky=tkinter.W)
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='展开对数',command=log_Ex, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='化简对数',command=log_Simp, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x+1, row=a_y,columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='【虚数与特殊函数】', bg=bg, fg=fg, font=FONT, width=width_B*3, height=height_B).grid(
+        column=a_x,row=a_y,columnspan=3)  # 设置说明
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='展开特殊函数',command=Ex_Func, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='展开虚数',command=Ex_I, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x+1, row=a_y,columnspan=2, sticky=tkinter.E + tkinter.W)
+
+
+    global Simpratio_Input,SimpFunc_Input
+    a_y += 1
+    tkinter.Label(top, text='【普遍操作类】', bg=bg, fg=fg, font=FONT, width=width_B*3, height=height_B).grid(
+        column=a_x,row=a_y,columnspan=3)  # 设置说明
+    a_y += 1
+    tkinter.Label(top, text='简化方案:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,row=a_y)  # 设置说明
+    SimpFunc_Input = tkinter.Entry(top, width=width_B)#简化方案
+    SimpFunc_Input.grid(column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='有理化',
+                        variable=simp_rat).grid(column=a_x+2, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='简化比率:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,row=a_y)  # 设置说明
+    Simpratio_Input = tkinter.Entry(top, width=width_B)#简化比率
+    Simpratio_Input.grid(column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='忽略假设',
+                        variable=simp_in).grid(column=a_x + 2, row=a_y, sticky=tkinter.W)
+
+    global GAOSI,FactorM_Input,Factor_Deep,Factor_Rat
+    GAOSI = tkinter.IntVar()
+    Factor_Deep = tkinter.IntVar()
+    Factor_Rat = tkinter.IntVar()
+    a_y += 1
+    tkinter.Label(top, text='模数:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,row=a_y)  # 设置说明
+    FactorM_Input = tkinter.Entry(top, width=width_B)  # 简化比率
+    FactorM_Input.grid(column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='高斯因式分解',
+                        variable=GAOSI).grid(column=a_x + 2, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='完全因式分解',
+                        variable=Factor_Deep).grid(column=a_x, row=a_y, sticky=tkinter.W)
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='因式分解有理代数式',
+                        variable=Factor_Rat).grid(column=a_x+1, row=a_y,columnspan=2, sticky=tkinter.W)
+
+    global EX_IM,CollX_Input
+    a_y += 1
+    EX_IM = tkinter.IntVar()
+    tkinter.Label(top, text='同类项对象:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,row=a_y)  # 设置说明
+    CollX_Input = tkinter.Entry(top, width=width_B)
+    CollX_Input.grid(column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='展开复数',
+                        variable=EX_IM).grid(column=a_x + 2, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='化简标准化',command=Simp, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='普遍运算展开',command=Expansion, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x+1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='因式分解',command=Factor, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='合并同类项',command=Coll, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, row=a_y,columnspan=3, sticky=tkinter.E + tkinter.W)
+
+    a_x += 3
+    tkinter.Label(top, text='', bg=bg, fg=fg, font=FONT, width=1).grid(column=a_x, row=0)
+    a_x += 1
+
+    a_y = 0
+    tkinter.Label(top, text='【联立操作】', bg=bg, fg=fg, font=FONT, width=width_B*3, height=height_B).grid(
+        column=a_x,row=a_y,columnspan=3)  # 设置说明
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='选定符号',command = Add_Sub_Value, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='选定代数式',command = Add_Sub_Alg, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x+1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='新键联立',command = Add_Sub, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='生成联立代数式', command=Alg_Sub,font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, columnspan=2,row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='删除联立',command = Del_Sub, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    global Sub_BOX
+    a_y += 1
+    Sub_BOX = tkinter.Listbox(top, width=width_B * 3,height = height_B*4)  # 显示代数式
+    Sub_BOX.grid(column=a_x, row=a_y, columnspan=3, rowspan=4, sticky=tkinter.E + tkinter.W + tkinter.S + tkinter.N)
+
+    a_y += 4
+    tkinter.Label(top, text='【反向联立操作】', bg=bg, fg=fg, font=FONT, width=width_B * 3, height=height_B).grid(
+        column=a_x, row=a_y, columnspan=3)  # 设置说明
+
+    #反向联立系统
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='选定代数式', command=Add_RSub_Alg, font=FONT, width=width_B,
+                   height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='选定符号', command=Add_RSub_Value, font=FONT, width=width_B,
+                   height=height_B).grid(
+        column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='新键联立', command=Add_RSub, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='生成联立代数式', command=Alg_RSub, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, columnspan=2, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='删除联立', command=Del_RSub, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    global RSub_BOX
+    a_y += 1
+    RSub_BOX = tkinter.Listbox(top, width=width_B * 3, height=height_B * 4)  # 显示代数式
+    RSub_BOX.grid(column=a_x, row=a_y, columnspan=3, rowspan=4, sticky=tkinter.E + tkinter.W + tkinter.S + tkinter.N)
+
+    global ValueNUM_Input,Num_Type
+    #代数运算
+    a_y += 4
+    tkinter.Label(top, text='【赋值运算操作】', bg=bg, fg=fg, font=FONT, width=width_B * 3, height=height_B).grid(
+        column=a_x, row=a_y, columnspan=3)  # 设置说明
+
+    a_y += 1
+    tkinter.Label(top, text='数值:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,row=a_y)  # 设置说明
+    ValueNUM_Input = tkinter.Entry(top, width=width_B+2)
+    ValueNUM_Input.grid(column=a_x + 1, row=a_y, sticky=tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='指定符号', command=Add_Sub_Num, font=FONT, width=width_B,
+                   height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    Num_Type = tkinter.IntVar()#正,负,0
+    lable = ['浮点数','整数','分数有理数','无约束数字']#复选框
+    for i in range(3):
+        tkinter.Radiobutton(top,bg = bg,fg = fg,activebackground=bg,activeforeground=fg,selectcolor=bg,
+                            text=lable[i], variable=Num_Type, value=i).grid(column=a_x+i, row=a_y, sticky=tkinter.W)
+    a_y += 1
+    tkinter.Radiobutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg,
+                        text=lable[3], variable=Num_Type, value=3).grid(column=a_x + 1, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='生成赋值代数式', command=Alg_Sub_Num, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, columnspan=2, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='删除赋值', command=Del_Sub_Num, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    global ValueNUM_BOX
+    a_y += 1
+    ValueNUM_BOX = tkinter.Listbox(top, width=width_B * 3, height=height_B * 4)  # 显示代数式
+    ValueNUM_BOX.grid(column=a_x, row=a_y, columnspan=3, rowspan=5, sticky=tkinter.E + tkinter.W + tkinter.S + tkinter.N)
+
+    a_x += 3
+    tkinter.Label(top, text='', bg=bg, fg=fg, font=FONT, width=1).grid(column=a_x, row=0)
+    a_x += 1
+
+    a_y = 0
+    tkinter.Label(top, text='【方程联立】', bg=bg, fg=fg, font=FONT, width=width_B * 3, height=height_B).grid(
+        column=a_x, row=a_y, columnspan=3)  # 设置说明
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='左代数式', command=add_Z, font=FONT, width=width_B,
+                   height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='右代数式', command=add_Y, font=FONT, width=width_B,
+                   height=height_B).grid(
+        column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='新建方程', command=add_ZY, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='解联立方程', command=alg_Solve, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x, columnspan=2, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='删除方程', command=Del_Solve, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    global Solve_BOX
+    a_y += 1
+    Solve_BOX = tkinter.Listbox(top, width=width_B * 3, height=height_B * 2)  # 显示代数式
+    Solve_BOX.grid(column=a_x, row=a_y, columnspan=3, rowspan=2, sticky=tkinter.E + tkinter.W + tkinter.S + tkinter.N)
+
+    a_y +=2
+    tkinter.Button(top, bg=bbg, fg=fg, text='应用为代数式', command=To_Alg, font=FONT, width=width_B,
+                   height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='添加联立', command=To_Sub, font=FONT, width=width_B,
+                   height=height_B).grid(
+        column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='添加反联立', command=To_RSub, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    global Answer_BOX
+    a_y += 1
+    Answer_BOX = tkinter.Listbox(top, width=width_B * 3, height=height_B * 2)  # 显示代数式
+    Answer_BOX.grid(column=a_x, row=a_y, columnspan=3, rowspan=2, sticky=tkinter.E + tkinter.W + tkinter.S + tkinter.N)
+
+    a_y += 2
+    tkinter.Label(top, text='【解不等式】', bg=bg, fg=fg, font=FONT, width=width_B * 3, height=height_B).grid(
+        column=a_x, row=a_y, columnspan=3)  # 设置说明
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='左代数式', command=In_add_Z, font=FONT, width=width_B,
+                   height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='右代数式', command=In_add_Y, font=FONT, width=width_B,
+                   height=height_B).grid(
+        column=a_x + 1, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='不等式运算', command=Inequality_Solve, font=FONT, width=width_B, height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    global Inequality_BOX,Inequality_Type,AnswerInequality_BOX,Range_Input
+    a_y += 1
+    Inequality_BOX = tkinter.Listbox(top, width=width_B * 3, height=height_B)  # 显示代数式
+    Inequality_BOX.grid(column=a_x, row=a_y, columnspan=3, rowspan=1, sticky=tkinter.E + tkinter.W + tkinter.S + tkinter.N)
+
+    a_y += 1
+    Inequality_Type = tkinter.IntVar()#实数
+    lable = ['大于>','小于<','大于等于>=','小于等于<=']
+    for i in range(2):
+        tkinter.Radiobutton(top,command=Update_Inequality_BOX,bg = bg,fg = fg,activebackground=bg,activeforeground=fg,selectcolor=bg, text=lable[i], variable=Inequality_Type, value=i).grid(column=a_x+i, row=a_y, sticky=tkinter.W)
+    a_y += 1
+    for i in range(2):
+        i += 2
+        tkinter.Radiobutton(top,command=Update_Inequality_BOX,bg = bg,fg = fg,activebackground=bg,activeforeground=fg,selectcolor=bg, text=lable[i], variable=Inequality_Type, value=i).grid(column=a_x+i-2, row=a_y, sticky=tkinter.W)
+
+    a_y += 1
+    AnswerInequality_BOX = tkinter.Listbox(top, width=width_B * 3, height=height_B)  # 显示代数式
+    AnswerInequality_BOX.grid(column=a_x, row=a_y, columnspan=3, rowspan=2, sticky=tkinter.E + tkinter.W + tkinter.S + tkinter.N)
+
+    a_y += 2
+    tkinter.Label(top, text='【代数式画图】', bg=bg, fg=fg, font=FONT, width=width_B * 3, height=height_B).grid(
+        column=a_x, row=a_y, columnspan=3)  # 设置说明
+
+    a_y += 1
+    tkinter.Label(top, text='符号取值范围:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,row=a_y)  # 设置说明
+    Range_Input = tkinter.Entry(top, width=width_B+2)
+    Range_Input.grid(column=a_x + 1, row=a_y, sticky=tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='指定符号', command=add_PlotValue, font=FONT, width=width_B,
+                   height=height_B).grid(
+        column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    global PlotValue_BOX,Plot_Type
+    a_y += 1
+    PlotValue_BOX = tkinter.Listbox(top, width=width_B * 3, height=height_B)  # 显示代数式
+    PlotValue_BOX.grid(column=a_x, row=a_y, columnspan=3, sticky=tkinter.E + tkinter.W + tkinter.S + tkinter.N)
+
+    a_y += 1
+    Plot_Type = tkinter.IntVar()#实数
+    lable = ['二维图像','三维图像']
+    for i in range(2):
+        tkinter.Radiobutton(top,command=Update_PlotValue,bg = bg,fg = fg,activebackground=bg,activeforeground=fg,selectcolor=bg, text=lable[i], variable=Plot_Type, value=i).grid(column=a_x+i, row=a_y, sticky=tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='绘制图像', command=Plotting, font=FONT, width=width_B,
+                   height=height_B).grid(column=a_x + 2, row=a_y, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, bg=bbg, fg=fg, text='绘制代数式', command=Draw_An_Alg, font=FONT, width=width_B,
+                   height=height_B).grid(
+        column=a_x, row=a_y, sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top, bg=bbg, fg=fg, text='绘制树状图', command=Print_Sym, font=FONT, width=width_B,
+                   height=height_B).grid(
+        column=a_x + 1, row=a_y,columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    global News_BOX,Can_Input,kd_bool,logkd_bool
+    a_y += 1
+    kd_bool = tkinter.IntVar()
+    logkd_bool = tkinter.IntVar()
+    Can_Input = tkinter.Entry(top, width=width_B)
+    Can_Input.grid(column=a_x, row=a_y, sticky=tkinter.W+tkinter.E)
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='每项绘制括号',
+                        variable=kd_bool).grid(column=a_x+1, row=a_y,columnspan=2, sticky=tkinter.W)
+    tkinter.Checkbutton(top, bg=bg, fg=fg, activebackground=bg, activeforeground=fg, selectcolor=bg, text='对数绘制括号',
+                        variable=logkd_bool).grid(column=a_x+2, row=a_y,columnspan=2, sticky=tkinter.W)
+
+    a_y += 1
+    News_BOX = tkinter.Listbox(top, width=width_B * 3, height=height_B)  # 显示代数式
+    News_BOX.grid(column=a_x, row=a_y, columnspan=3,rowspan=3, sticky=tkinter.E + tkinter.W + tkinter.S + tkinter.N)
+
+    addNews('加载完成')
+    top.mainloop()

+ 2 - 0
DSGC/__init__.py

@@ -0,0 +1,2 @@
+from DSGC.Algebra_Systemctl import Alg
+print('DSGC加载完毕...')

BIN
Font/BT.ttf


BIN
Font/PT.otf


BIN
Font/ZKST.ttf


+ 570 - 0
HSCH/Func_Matlib.py

@@ -0,0 +1,570 @@
+import numpy,pandas
+from matplotlib import pyplot as plt
+from matplotlib import rcParams
+import tkinter,tkinter.messagebox
+import math
+import random
+from tkinter.filedialog import asksaveasfile
+import tkinter.messagebox
+from os import path
+from HSCH.HS import HS_lambda,HS_CSV
+from HSCH.Func_advanced import Advanced_Control
+
+def Float(IN,si = float,n = True):#Float筛选系统
+    x = []
+    for i in IN:
+        try:
+            if si(i) == si(0) and n: continue
+            x.append(si(i))
+        except ValueError:
+            pass
+    return x
+
+def Fucn_Draw():
+    global HS,X_Input,fig,Xlim_Input,Ylim_Input,YK_Input,XK_Input
+    #画板创造
+    addNews('生成绘制取...')
+    fig = plt.figure(num='CoTan函数')  # 定义一个图像窗口
+    plt.grid(True,ls='--')  # 显示网格(不能放到后面,因为后面调整成为了笛卡尔坐标系)
+    ax = plt.gca()
+    ax.spines['right'].set_color('none')
+    ax.spines['top'].set_color('none')
+    ax.xaxis.set_ticks_position('bottom')
+    ax.yaxis.set_ticks_position('left')
+    ax.spines['bottom'].set_position(('data', 0))# 设置x轴, y轴在(0, 0)的位置
+    ax.spines['left'].set_position(('data', 0))
+    #检测x
+    try:
+        if XK_Input.get()[0] == 'c':#如果输入函数cx#-10#10#1#1
+            _HS = XK_Input.get()[1:].split('#')#第一部分HS,第二部分S,第三部分E,第四部分KD,第五部分JD
+            P = ['x',-10,10,1,2]#保护系统
+            try:
+                P[0] = _HS[0]
+                P[1] = int(_HS[1])
+                P[2] = int(_HS[2])
+                P[3] = int(_HS[3])
+                P[4] = int(_HS[4])
+            except:#迭代匹配直到出现错误
+                pass
+            _HS = P
+            x = Float(HS_lambda(_HS[0],'x','',_HS[1],_HS[2],_HS[3],_HS[4]).Cul()[1])#取y
+            ax.set_xticks(x)
+        elif XK_Input.get()[0] == 'y':#输入函数y
+            x = abs(int(XK_Input.get()[1:]))
+            x_major_locator=plt.MultipleLocator(x)
+            ax.xaxis.set_major_locator(x_major_locator)
+        else:#输入纯数字
+            x = Float(XK_Input.get().split(','))
+            ax.set_xticks(x)
+    except:
+        x_major_locator = plt.MultipleLocator(2)
+        ax.xaxis.set_major_locator(x_major_locator)
+    #检测y
+    try:#意外捕捉
+        if YK_Input.get()[0] == 'c':  # 如果输入函数cx#-10#10#1#1
+            _HS = YK_Input.get()[1:].split('#')  # 第一部分HS,第二部分S,第三部分E,第四部分KD,第五部分JD
+            P = ['x', -10, 10, 1, 2]  # 保护系统
+            try:
+                P[0] = _HS[0]
+                P[1] = int(_HS[1])
+                P[2] = int(_HS[2])
+                P[3] = int(_HS[3])
+                P[4] = int(_HS[4])
+            except:  # 迭代匹配直到出现错误
+                pass
+            _HS = P
+            y = Float(HS_lambda(_HS[0], 'y', '', _HS[1], _HS[2], _HS[3], _HS[4]).Cul()[1])  # 取y
+            ax.set_yticks(y)
+        elif YK_Input.get()[0] == 'y':  # 输入函数y
+            y = abs(int(YK_Input.get()[1:]))
+            y_major_locator = plt.MultipleLocator(y)
+            ax.yaxis.set_major_locator(y_major_locator)
+        else:
+            y = Float(YK_Input.get().split(','))
+            ax.set_yticks(y)
+    except:
+        y_major_locator = plt.MultipleLocator(2)
+        ax.yaxis.set_major_locator(y_major_locator)
+    #极限设计
+    try:
+        xlim_IN = Float(Xlim_Input.get().split(','),si=int,n=False)
+        ylim_IN = Float(Ylim_Input.get().split(','),si=int,n=False)
+        try:_xlim = [xlim_IN[0], xlim_IN[1]]
+        except:_xlim = [-10,10]
+        try:_ylim = [ylim_IN[0], ylim_IN[1]]
+        except:_ylim = _xlim
+    except:
+        _xlim = [-10, 10]
+        _ylim = [-10,10]
+    _xlim.sort()
+    _ylim.sort()
+    plt.xlim(_xlim)
+    plt.ylim(_ylim)
+    #函数绘图系统
+    addNews('图像绘制中...')
+    if not HS:return False
+    for Fucn in HS:
+        get = Fucn.Draw_Cul()
+        fx = get[0]
+        fy = get[1]
+        Func_label = get[2]
+        View = get[3]
+        First = True
+        for i in range(len(fx)):
+            x = fx[i]
+            y = fy[i]
+            if First:
+                plt.plot(x, y,View,label = Func_label)  # plot()画出曲线
+                First = False
+            else:
+                plt.plot(x, y, View)
+        get = Fucn.getMemory()
+        m_x = get[0]
+        m_y = get[1]
+        max_x,max_y,min_x,min_y = Fucn.Best_value()
+        plt.plot(m_x, m_y, View[0]+'o',label=f'Point of {Func_label}')  # 画出一些点
+        len_x = sorted(list(set(m_x)))#去除list重复项目
+        JZD = max_x + min_x
+
+        o_x = None
+        for i in range(len(len_x)):
+            if i in JZD:continue#去除极值点
+            _x = len_x[i]#x
+            if o_x == None or abs(_x - o_x) >= 1:#确保位置
+                num = m_x.index(_x)#y的座位
+                _y = m_y[num]
+                plt.text(_x,_y,f'({_x},{int(_y)})', fontdict={'size': '10', 'color':'b'})# 标出坐标
+                o_x = _x
+
+        o_x = None
+        n_max = []
+        for i in range(len(max_x)):#画出最大值
+            _x = max_x[i]
+            if o_x == None or abs(_x - o_x) >= 1:  # 确保位置
+                plt.text(_x-1, max_y, f'max:({_x},{int(max_y)})', fontdict={'size': '10', 'color': 'b'})  # 标出坐标
+                n_max.append(_x)
+                o_x = _x
+
+        o_x = None
+        n_min = []
+        for i in range(len(min_x)):#画出最小值
+            _x = min_x[i]
+            if o_x == None or abs(_x - o_x) >= 1:
+                n_min.append(_x)
+                plt.text(_x-1, min_y, f'min:({_x},{int(min_y)})', fontdict={'size': '10', 'color': 'b'})  # 标出坐标
+                o_x = _x
+        plt.plot(n_min, [min_y] * len(n_min), View[0] + 'o')  # 画出一些点
+        plt.plot(n_max, [max_y] * len(n_max), View[0] + 'o')  # 画出一些点
+    addNews('绘制完毕')
+    plt.legend()#显示图示
+    plt.show()  # 显示图像
+    return True
+
+def Fucn_Cul_CSV():#添加函数
+
+    global HS,HS_str,lb,x_I,Name_Input,View_C,View_Co,View_Input
+    File = tkinter.filedialog.askopenfilename(title='载入表格',filetypes=[("CSV", ".csv")])
+    view = View_Input.get().split('#')
+    try:
+        if view[0] not in View_Co:view[0] = 'b'
+        v_2 = View_C.get(view[1], '-')
+    except:
+        view = ['','']
+        view[0] = random.choice(View_Co)
+        v_2 = '-'
+    V = view[0] + v_2
+    try:
+        addNews('读取CSV')
+        read = pandas.read_csv(File)
+        name = path.basename(File)[0:-4].replace(' ', '')
+        if not name:name = random.randint(1,1000)
+        name += '(In CSV)'
+        _HS = numpy.array(read).tolist()
+        if len(_HS[0]) != len(_HS[1]):
+            raise Exception
+        HS_str.append(name)
+        HS.append(HS_CSV(_HS,name,V))
+        lb.delete(0, tkinter.END)
+        lb.insert(tkinter.END, *HS)
+        addNews('读取完毕')
+    except:
+        addNews('读取失败')
+
+def Fucn_Cul():#添加函数
+    global HS,HS_str,lb,x_I,Name_Input,View_C,View_Co,View_Input
+    get = Func_Input.get().replace(' ', '')
+    x_I = X_Input.get().split(',')
+    name = Name_Input.get().replace(' ', '')
+    view = View_Input.get().split('#')
+    if not name:name = get
+    try:
+        if view[0] not in View_Co:view[0] = 'b'
+        v_2 = View_C.get(view[1], '-')
+    except:
+        view = ['','']
+        view[0] = random.choice(View_Co)
+        v_2 = '-'
+    V = view[0] + v_2
+    try:
+        c = x_I[2]
+        if c[0] == 'H':
+            Name = {'Pi': math.pi, 'e': math.e, 'log': math.log,
+                    'sin': math.sin, 'cos': math.cos, 'tan': math.tan,
+                    'cot': lambda x: 1 / math.tan(x), 'csc': lambda x: 1 / math.sin(x),
+                    'sec': lambda x: 1 / math.cos(x), 'sinh': math.sinh, 'cosh': math.cosh,
+                    'tanh': math.tanh, 'asin': math.asin, 'acos': math.acos,
+                    'atan': math.atan}
+            x_I[2] = eval(c[1:],Name)
+    except:
+        pass
+    if get and get not in HS_str:
+        HS_str.append(get)
+        HS.append(HS_lambda(get,name,V,*x_I))
+        lb.delete(0, tkinter.END)
+        lb.insert(tkinter.END, *HS)
+        addNews('函数生成完毕')
+    else:
+        addNews('函数生成失败')
+        pass
+
+def Fucn_Cul_Clear():#添加函数
+    global HS,HS_str,lb,x_I,Name_Input,View_C,View_Co,View_Input
+    if tkinter.messagebox.askokcancel('提示', '是否清空所有函数?)'):
+        HS_str = []
+        HS = []
+        lb.delete(0, tkinter.END)
+        addNews('函数清空完毕')
+
+def Fucn_Numpy():#显示xy
+    global HS,lb,Pr_BOX
+    try:
+        Fucn = HS[lb.curselection()[0]]
+        Pr_BOX.delete(0, tkinter.END)
+        Pr_BOX.insert(tkinter.END,*Fucn.returnList())
+        addNews('表格创建成功')
+    except:
+        addNews('无法创建表格')
+        pass
+
+def Cul_Y_Clear():
+    global Xcul_Input,lb,HS
+    try:
+        if tkinter.messagebox.askokcancel('提示', f'确定删除{HS[lb.curselection()[0]]}的记忆吗?'):
+            Y_cul.delete(0, tkinter.END)
+            Fucn = HS[lb.curselection()[0]]
+            Fucn.Clear_Memory()
+            addNews('删除完毕')
+        else:
+            addNews('删除取消')
+    except:
+        addNews('删除失败')
+
+def Cul_Y_YC():#显示xy
+    global HS,Y_cul
+    try:
+        Fucn = HS[lb.curselection()[0]]
+        Y_cul.delete(0, tkinter.END)
+        Fucn.YC_On_Off()
+        addNews('已清空卡槽')
+    except:
+        addNews('隐藏(显示)失败')
+
+
+def Cul_Y_Check():#显示xy
+    global HS,Y_cul
+    try:
+        Fucn = HS[lb.curselection()[0]]
+        Y_cul.delete(0, tkinter.END)
+        m_x,m_y = Fucn.getMemory()
+        answer = []
+        for i in range(len(m_x)):
+            answer.append(f'x={m_x[i]} -> y={m_y[i]}')
+        Y_cul.insert(tkinter.END, *answer)
+        addNews('输出完成')
+    except:
+        addNews('操作失败')
+
+def Fucn_XZ():
+    global HS,lb,XZ_box
+    try:
+        addNews('预测过程程序可能无响应')
+        Fucn = HS[lb.curselection()[0]]
+        XZ_box.delete(0, tkinter.END)
+        answer = Fucn.Nature(addNews)
+        XZ_box.insert(tkinter.END, *answer)
+        addNews('性质预测完成')
+    except IndexError:
+        addNews('性质预测失败')
+
+def Cul_Y():
+    global HS,Y_cul,Xcul_Input,lb
+    try:
+        addNews('计算过程程序可能无响应')
+        Fucn = HS[lb.curselection()[0]]
+        Y_cul.delete(0, tkinter.END)
+        x = Xcul_Input.get().split(',')
+        answer = Fucn.Cul_Y(x)
+        Y_cul.insert(tkinter.END, *answer)
+        addNews('系统计算完毕')
+    except IndexError:
+        addNews('计算失败')
+
+def Fucn_Save():#导出CSV
+    global CSV
+    if not lb.curselection():return False
+    try:
+        Fucn = HS[lb.curselection()[0]]
+        Fucn.Out()
+        addNews('CSV导出成功')
+    except:
+        addNews('CSV导出失败')
+
+def Fucn_Del():#删除函数
+    global HS,HS_str,lb
+    del_Fucn = lb.curselection()
+    for i in del_Fucn:#只存在一项
+        lb.delete(i)
+        del HS[i]
+        del HS_str[i]
+        addNews('函数删除完毕')
+
+def Find(x,y,in_y):
+    m = []
+    while True:  # 筛选求出最大值极值点
+        try:
+            num = y.index(in_y)
+            m.append(x[num])
+            del x[num]
+            del y[num]
+        except ValueError:
+            break
+    return m
+
+def Cul_X():
+    global HS,Y_cul,Ycul_Input,E_Input
+    try:
+        addNews('计算过程程序可能无响应')
+        Fucn = HS[lb.curselection()[0]]#获取目标函数
+        Y_cul.delete(0, tkinter.END)#清空
+        y = Ycul_Input.get().split(',')#拆解输入
+        E = E_Input.get().split('#')  # 拆解输入
+        answer = []
+        addNews('系统运算中')
+        for i in y:
+            answer += Fucn.Cul_dichotomy(float(i),*E)[0]
+        if answer:
+            addNews('系统运算完成')
+            Y_cul.insert(tkinter.END, *answer)
+        else:addNews('系统运算无结果')
+    except :
+        addNews('系统运算失败')
+        Y_cul.delete(0, tkinter.END)
+
+def Cul_X_TD():
+    global HS,Y_cul,YTDcul_Input
+    try:
+        addNews('计算过程程序可能无响应')
+        Fucn = HS[lb.curselection()[0]]#获取目标函数
+        Y_cul.delete(0, tkinter.END)#清空
+        E = YTDcul_Input.get().split('#')#拆解输入
+        addNews('系统运算中')
+        answer = Fucn.Iterative_method_Of_Huan(*E)
+        if answer[1]:
+            Y_cul.insert(tkinter.END, answer[0])
+            addNews('系统运算完成')
+        else:addNews('系统运算无结果')
+    except :
+        addNews('系统运算失败,请注意参数设置')
+        Y_cul.delete(0, tkinter.END)
+
+def addNews(News):
+    global News_box,T
+    T += 1
+    News = str(News)
+    News_box.insert(0, News+f'({T})')
+    top.update()
+
+def Fucn_DHS():
+    global HS, lb, XZ_box,HS_str,x_I,Name_Input,View_C,View_Co,View_Input
+    try:
+        Fucn = HS[lb.curselection()[0]]
+        DHS = Fucn.DHS
+        if DHS != None and str(DHS):
+            get = str(DHS)
+            HS_str.append(get)
+            HS.append(HS_lambda(get, '(导)'+Fucn.Func_Name+' Of ', Fucn.View,Fucn.start,Fucn.end,Fucn.kd,Fucn.JD))
+            lb.delete(0, tkinter.END)
+            lb.insert(tkinter.END, *HS)
+            addNews('函数生成完毕')
+        else:
+            raise Exception
+    except:
+        addNews('导函数创建失败')
+
+def Func_Control():
+    global top,FONT,View_C,View_Co,CSV,Func_Input,X_Input,Name_Input,View_Input,XK_Input,YK_Input,Xlim_Input,Ylim_Input
+    global lb,Pr_BOX,Xcul_Input,Y_cul,HS,HS_str,Ycul_Input,E_Input,YTDcul_Input,XZ_box,News_box,T
+    HS = []
+    HS_str = []
+    T = 0
+
+    #控制面板使用Tk实现
+    top = tkinter.Tk()  # 设置屏幕
+    top.title('CoTan函数测绘')
+    top.resizable(width=False, height=False)
+    top.geometry(f'+10+10')
+    FONT = ('Font\ZKST.ttf', 11)#设置字体
+    rcParams['font.family'] = 'simhei'
+    rcParams['axes.unicode_minus']=False
+
+    View_C = {'实线':'-',
+              '短横线':'--',
+              '点划线':'-,',
+              '虚线':':',
+              '点标记':'.',
+              '圆标记':'o',
+              '倒三角':'v',
+              '正三角':'^',
+              '左三角':'&lt',
+              '下箭头':'1',
+              '上箭头':'2',
+              '左箭头':'3',
+              '右箭头':'4',
+              '正方形':'s',
+              '五边形':'p',
+              '星形':'*',
+              '六边形':'h',
+              '六边形2':'H',
+              '+号':'+',
+              'X标记':'x',}#函数样式翻译表
+    View_Co = ['g','r','c','m','y','k']
+    CSV = []
+
+    width_B = 12#标准宽度
+    height_B=1
+    #column-水平方向,row-竖直方向
+    #设置解析式
+    tkinter.Label(top,text='输入解析式:',font=FONT,width=width_B,height=height_B).grid(column = 0,row = 0)#设置说明
+    Func_Input = tkinter.Entry(top,width=width_B * 2)
+    Func_Input.grid(column = 1,row = 0,columnspan = 2,sticky = tkinter.E+tkinter.W)
+
+    #设置定义域
+    tkinter.Label(top,font=FONT,text='定义域:',width=width_B,height=height_B).grid(column = 0,row = 1)#设置说明
+    X_Input = tkinter.Entry(top,width=width_B * 2)
+    X_Input.grid(column = 1,row = 1,columnspan = 2,sticky = tkinter.E+tkinter.W)
+
+    #设置函数名字
+    tkinter.Label(top,font=FONT,text='函数名字:',width=width_B,height=height_B).grid(column = 0,row = 2)#设置说明
+    Name_Input = tkinter.Entry(top,width=width_B * 2)
+    Name_Input.grid(column = 1,row = 2,columnspan = 2,sticky = tkinter.E+tkinter.W)
+
+    #设置函数图示
+    tkinter.Label(top,font=FONT,text='函数样式:',width=width_B,height=height_B).grid(column = 0,row = 3)#设置说明
+    View_Input = tkinter.Entry(top,width=width_B * 2)
+    View_Input.grid(column = 1,row = 3,columnspan = 2,sticky = tkinter.E+tkinter.W)
+
+    a_y = 4#按钮统一纵坐标
+    tkinter.Button(top,text='添加新函数',command=Fucn_Cul,font=FONT,width=width_B,height=height_B).grid(column = 0,row = a_y)#添加函数
+    tkinter.Button(top,text='删除选中函数',command=Fucn_Del,font=FONT,width=width_B,height=height_B).grid(column = 1,row = a_y)#删除函数
+    tkinter.Button(top,text='清除函数',command=Fucn_Cul_Clear,font=FONT,width=width_B,height=height_B).grid(column = 2,row = a_y)#绘制函数
+    a_y += 1
+    #显示函数
+    lb=tkinter.Listbox(top,width=width_B*3+2)#暂时不启用多选
+    TD_a_y = 10
+    lb.grid(column = 0,row = a_y,columnspan = 3,rowspan = TD_a_y,sticky = tkinter.S+tkinter.N+tkinter.E+tkinter.W)
+    a_y += TD_a_y
+    tkinter.Label(top, font=FONT, text='', width=width_B, height=1).grid(column=0, row=a_y)
+
+    tkinter.Label(top, font=FONT, text='', width=1).grid(column=4, row=0)  # 占用第四
+    a_y = 0
+    #输入x函数求y值
+    tkinter.Label(top, font=FONT, text='计算(y):', width=width_B, height=height_B).grid(column=5, row=a_y)  # 设置说明
+    Xcul_Input = tkinter.Entry(top,width=width_B * 2)
+    Xcul_Input.grid(column = 6,row = a_y,columnspan = 2,sticky = tkinter.E+tkinter.W)
+
+    a_y += 1
+    #输入x函数求y值
+    tkinter.Label(top, font=FONT, text='二分法计算(y):', width=width_B, height=height_B).grid(column=5, row=a_y)  # 设置说明
+    Ycul_Input = tkinter.Entry(top,width=width_B * 2)
+    Ycul_Input.grid(column = 6,row = a_y,columnspan = 2,sticky = tkinter.E+tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, font=FONT, text='二分法参数:', width=width_B, height=height_B).grid(column=5, row=a_y)  # 设置说明
+    E_Input = tkinter.Entry(top, width=width_B * 2)
+    E_Input.grid(column=6, row=a_y, columnspan=2,sticky = tkinter.E+tkinter.W)
+
+    a_y += 1
+    #输入x函数求y值
+    tkinter.Label(top, font=FONT, text='梯度法计算(y):', width=width_B, height=height_B).grid(column=5, row=a_y)  # 设置说明
+    YTDcul_Input = tkinter.Entry(top,width=width_B * 2)
+    YTDcul_Input.grid(column = 6,row = a_y,columnspan = 2,sticky = tkinter.E+tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, text='计算(y)', command=Cul_Y, font=FONT, width=width_B, height=height_B).grid(column=5,row=a_y)  # 设置说明
+    tkinter.Button(top, text='二分法计算(x)', command=Cul_X, font=FONT, width=width_B, height=height_B).grid(column=6,row=a_y)
+    tkinter.Button(top, text='梯度法计算(x)', command=Cul_X_TD, font=FONT, width=width_B, height=height_B).grid(column=7,row=a_y)
+
+    a_y += 1
+    #绘制函数坐标表格
+    tkinter.Button(top,text='查看记忆',command=Cul_Y_Check,font=FONT,width=width_B,height=height_B).grid(column = 5,row = a_y)
+    tkinter.Button(top, text='隐藏记忆', command=Cul_Y_YC, font=FONT, width=width_B, height=height_B).grid(column=6,row=a_y)
+    tkinter.Button(top,text='清空记忆',command=Cul_Y_Clear,font=FONT,width=width_B,height=height_B).grid(column = 7,row = a_y)
+
+    a_y += 1
+    #显示函数
+    Y_cul=tkinter.Listbox(top,width=width_B*3+2,height=17)#暂时不启用多选
+    Y_cul.grid(column = 5,row = a_y,columnspan = 3,sticky = tkinter.N+tkinter.E+tkinter.W)
+
+    a_y += 1
+    #设置坐标系刻度
+    tkinter.Label(top,font=FONT,text='X轴(函数):',width=width_B,height=height_B).grid(column = 5,row = a_y,sticky = tkinter.N)#设置说明
+    XK_Input = tkinter.Entry(top,width=width_B * 2)
+    XK_Input.grid(column = 6,row = a_y,columnspan = 2,sticky = tkinter.N+tkinter.E+tkinter.W)
+
+    a_y += 1
+    #设置坐标系刻度
+    tkinter.Label(top,font=FONT,text='Y轴(函数):',width=width_B,height=height_B).grid(column = 5,row = a_y)#设置说明
+    YK_Input = tkinter.Entry(top,width=width_B * 2)
+    YK_Input.grid(column = 6,row = a_y,columnspan = 2,sticky = tkinter.E+tkinter.W)
+
+    a_y += 1
+    #设置坐标系刻度
+    tkinter.Label(top,font=FONT,text='X轴极限:',width=width_B,height=height_B).grid(column = 5,row = a_y)#设置说明
+    Xlim_Input = tkinter.Entry(top,width=width_B * 2)
+    Xlim_Input.grid(column = 6,row = a_y,columnspan = 2,sticky = tkinter.E+tkinter.W)
+
+    a_y += 1
+    #设置坐标系刻度
+    tkinter.Label(top,font=FONT,text='Y轴极限:',width=width_B,height=height_B).grid(column = 5,row = a_y)#设置说明
+    Ylim_Input = tkinter.Entry(top,width=width_B * 2)
+    Ylim_Input.grid(column = 6,row = a_y,columnspan = 2,sticky = tkinter.E+tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top, text='绘制函数', command=Fucn_Draw, font=FONT, width=width_B, height=height_B).grid(column=5,row=a_y)  # 绘制函数
+    tkinter.Button(top, text='计算性质', command=Fucn_XZ, font=FONT, width=width_B, height=height_B).grid(column=6,
+                                                                                                        row=a_y)  # 绘制函数
+    tkinter.Button(top, text='创建导函数', command=Fucn_DHS, font=FONT, width=width_B, height=height_B).grid(column=7,
+                                                                                                        row=a_y)  # 绘制函数
+    a_y += 1
+    XZ_box = tkinter.Listbox(top, width=width_B * 3 + 2, height=10)  # 暂时不启用多选
+    XZ_box.grid(column=5, row=a_y, columnspan=3, sticky=tkinter.N + tkinter.E + tkinter.W)
+    a_y += 1
+    News_box = tkinter.Listbox(top, width=width_B * 3 + 2, height=5)  # 暂时不启用多选
+    News_box.grid(column=5, row=a_y, columnspan=3, sticky=tkinter.N + tkinter.E + tkinter.W)
+
+
+    tkinter.Label(top, font=FONT, text='',  width=1).grid(column=8, row=a_y)  # 占用第四
+    a_y = 0
+
+    #绘制函数坐标表格
+    tkinter.Button(top,text='导入表格',command=Fucn_Cul_CSV,font=FONT,width=width_B,height=height_B).grid(column = 9,row = a_y)
+    tkinter.Button(top,text='生成表格',command=Fucn_Numpy,font=FONT,width=width_B,height=height_B).grid(column = 10,row = a_y)
+    tkinter.Button(top,text='导出表格',command=Fucn_Save,font=FONT,width=width_B,height=height_B).grid(column = 11,row = a_y)
+
+    a_y += 1
+    #显示函数的xy
+    Pr_BOX=tkinter.Listbox(top,width=width_B*3+2)#暂时不启用多选
+    Pr_BOX.grid(column = 9,row = a_y,columnspan = 3,rowspan = TD_a_y + 4,sticky = tkinter.S+tkinter.N+tkinter.E+tkinter.W)
+
+    addNews('加载完成,欢迎使用!')
+    top.mainloop()

+ 890 - 0
HSCH/Func_advanced.py

@@ -0,0 +1,890 @@
+from __future__ import division#让/恢复为除法
+import sympy
+from matplotlib import pyplot as plt
+from matplotlib import rcParams
+import tkinter,tkinter.messagebox
+import random
+from New_TK import DragWindow
+from matplotlib.animation import FuncAnimation
+from HSCH.HS import HS_lambda as HS_L
+import numpy as np
+
+def Float(IN,si = float,n = True):#Float筛选系统
+    x = []
+    for i in IN:
+        try:
+            if si(i) == si(0) and n: continue
+            x.append(si(i))
+        except ValueError:
+            pass
+    return x
+
+def Fucn_Save():#导出CSV
+    try:
+        succ = HS.Out()#是否成功
+        if not succ:
+            raise Exception
+        addNews('CSV导出成功')
+    except:
+        addNews('CSV导出失败')
+
+def Fucn_Numpy():#生成表格
+    global HS,Pr_BOX
+    try:
+        Pr_BOX.delete(0, tkinter.END)
+        Pr_BOX.insert(tkinter.END,*HS.returnList())
+        addNews('表格创建成功')
+    except:
+        addNews('无法创建表格')
+
+def Change_Sympy(c):
+    try:
+        Name = {'Pi': sympy.pi, 'e': sympy.E, 'log': sympy.log,
+                'sin': sympy.sin, 'cos': sympy.cos, 'tan': sympy.tan,
+                'cot': lambda x: 1 / sympy.tan(x), 'csc': lambda x: 1 / sympy.sin(x),
+                'sec': lambda x: 1 / sympy.cos(x), 'sinh': sympy.sinh, 'cosh': sympy.cosh,
+                'tanh': sympy.tanh, 'asin': sympy.asin, 'acos': sympy.acos,
+                'atan': sympy.atan}
+        ans = eval(c, Name)
+        return ans,True
+    except:
+        return None,False
+
+def Change_S(c):
+    get = Change_Sympy(c)
+    if not get[1]:
+        get[0] = c
+    return get[0]
+
+def Check_Center_of_symmetry():
+    global HS,YC_Input, YC_BOX,XZ_JD
+    a,must = Change_Sympy(XZ_JD.get())
+    try:
+        G = HS.Check_Center_of_symmetry(Change_S(YC_Input.get()),addNews,a)
+        if G[1]:
+            YC_BOX.insert(tkinter.END,G[1])
+            addNews('预测完成')
+        else:
+            raise Exception
+    except:
+        addNews('预测失败')
+
+def Check_Symmetry_axis():
+    global HS,YC_Input, YC_BOX,XZ_JD
+    a,must = Change_Sympy(XZ_JD.get())
+    try:
+        G = HS.Check_Symmetry_axis(Change_S(YC_Input.get()),addNews,a)
+        if G[1]:
+            YC_BOX.insert(tkinter.END,G[1])
+            addNews('预测完成')
+        else:
+            raise Exception
+    except:
+        addNews('预测失败')
+
+def Check_Periodic():
+    global HS,YC_Input, YC_BOX,XZ_JD
+    a,must = Change_Sympy(XZ_JD.get())
+    try:
+        G = HS.Check_Periodic(Change_S(YC_Input.get()),addNews,a)
+        if G[1]:
+            YC_BOX.insert(tkinter.END,G[1])
+            addNews('预测完成')
+        else:
+            raise Exception
+    except:
+        addNews('预测失败')
+
+def Check_Monotonic():
+    global HS,YC_Input, YC_BOX,XZ_JD
+    a,must = Change_Sympy(XZ_JD.get())
+    try:
+        G = HS.Check_Monotonic(YC_Input.get(),addNews,a)
+        if G[1]:
+            YC_BOX.insert(tkinter.END,G[1])
+            addNews('预测完成')
+        else:
+            raise Exception
+    except:
+        addNews('预测失败')
+
+def Cul_Y_Clear():
+    global HS
+    try:
+        if tkinter.messagebox.askokcancel('提示', f'确定删除{HS}的记忆吗?'):
+            R_cul.delete(0, tkinter.END)
+            HS.Clear_Memory()
+            addNews('删除完毕')
+        else:
+            addNews('删除取消')
+    except:
+        addNews('删除失败')
+
+def Cul_Y_YC():#显示xy
+    global HS,R_cul
+    try:
+        R_cul.delete(0, tkinter.END)
+        HS.YC_On_Off()
+        addNews('已清空卡槽')
+    except:
+        addNews('隐藏(显示)失败')
+
+
+def Cul_Y_Check():#显示xy
+    global HS,R_cul
+    try:
+        Fucn = HS[lb.curselection()[0]]
+        R_cul.delete(0, tkinter.END)
+        m_x,m_y = Fucn.getMemory()
+        answer = []
+        for i in range(len(m_x)):
+            answer.append(f'x={m_x[i]} -> y={m_y[i]}')
+        R_cul.insert(tkinter.END, *answer)
+        addNews('输出完成')
+    except:
+        addNews('操作失败')
+
+def Cul_X_TD():
+    global HS,Xcul_TD_Input, Xcul_TD_CS, R_cul
+    try:
+        addNews('计算过程程序可能无响应')
+        R_cul.delete(0, tkinter.END)#清空
+        E = []
+        for i in Xcul_TD_CS:
+            E.append(i.get())
+        addNews('系统运算中')
+        answer = HS.Iterative_method_Of_Huan(Xcul_TD_Input.get(),*E)
+        if answer[1] != None:
+            R_cul.insert(tkinter.END, answer[0])
+            addNews('系统运算完成')
+        else:addNews('系统运算无结果')
+    except :
+        addNews('系统运算失败,请注意参数设置')
+def Cul_Y():
+    global Ycul_Input,HS,R_cul
+    try:
+        addNews('计算过程程序可能无响应')
+        R_cul.delete(0, tkinter.END)
+        x = Ycul_Input.get().split(',')
+        answer = HS.Cul_Y(x)
+        if answer != []:
+            R_cul.insert(tkinter.END, *answer)
+            addNews('系统运算完毕')
+        else:
+            addNews('系统运算无结果')
+    except:
+        addNews('计算失败')
+
+def Cul_X_Sympy():
+    global Xcul_DS_Input,HS,R_cul
+    try:
+        addNews('计算过程程序可能无响应')
+        R_cul.delete(0, tkinter.END)
+        x = Xcul_DS_Input.get().split(',')
+        answer = []
+        for i in x:
+            answer +=  HS.Sympy_Cul(i)[0]
+        if answer != []:
+            R_cul.insert(tkinter.END, *answer)
+            addNews('系统运算完毕')
+        else:
+            addNews('系统运算无结果')
+    except:
+        addNews('计算失败')
+
+def Cul_DS():
+    global DScul_Input,HS,R_cul,DScul_JD_Input
+    try:
+        addNews('计算过程程序可能无响应')
+        R_cul.delete(0, tkinter.END)
+        x = DScul_Input.get().split(',')
+        JD = DScul_JD_Input.get()
+        answer = []
+        for i in x:
+            get = HS.Sympy_DHS(i,JD)[0]
+            if get != None:
+                answer.append(get)
+        if answer != []:
+            R_cul.insert(tkinter.END, *answer)
+            addNews('系统运算完毕')
+        else:
+            addNews('系统运算无结果')
+    except IndexError:
+        addNews('计算失败')
+
+def Cul_DS_BJ():
+    global DScul_Input,HS,R_cul,DScul_JD_Input
+    try:
+        addNews('计算过程程序可能无响应')
+        R_cul.delete(0, tkinter.END)
+        x = DScul_Input.get().split(',')
+        JD = DScul_JD_Input.get()
+        answer = []
+        for i in x:
+            get = HS.Sympy_DHS(i,JD,True)[0]
+            if get != None:
+                answer.append(get)
+        if answer != []:
+            R_cul.insert(tkinter.END, *answer)
+            addNews('系统运算完毕')
+        else:
+            addNews('系统运算无结果')
+    except IndexError:
+        addNews('计算失败')
+
+def Cul_X():
+    global Xcul_Input, Xcul_CS,HS,R_cul
+    try:
+        addNews('计算过程程序可能无响应')
+        R_cul.delete(0, tkinter.END)#清空
+        y = Xcul_Input.get().split(',')#拆解输入
+        E = [100,0.0001,0.1,0.5,False,True,1000,0.1,0.1,False,None]
+        for i in range(11):
+            try:
+                if i in (4,5,9):
+                    a = Xcul_CS[i].get()
+                else:
+                    a = float(Xcul_CS[i].get())
+                E[i] = a
+            except:
+                pass
+        answer = []
+        addNews('系统运算中')
+        for i in y:
+            try:
+                answer += HS.Cul_dichotomy(float(i),*E)[0]
+            except:pass
+        if answer:
+            addNews('系统运算完成')
+            R_cul.insert(tkinter.END, *answer)
+        else:addNews('系统运算无结果')
+    except :
+        addNews('系统运算失败')
+
+def Fucn_XZ():
+    global HS,lb,XZ_BOX,XZ_JD
+    try:
+        a, must = Change_Sympy(XZ_JD.get())
+        addNews('预测过程程序可能无响应')
+        XZ_BOX.delete(0, tkinter.END)
+        answer = HS.Nature(addNews,True,a,must)
+        XZ_BOX.insert(tkinter.END, *answer)
+        addNews('性质预测完成')
+    except IndexError:
+        addNews('性质预测失败')
+
+def Fucn_Draw():
+    global XZ_Input,XZstart_Input,XZend_Input,XZkd_Input,YZ_Input,YZstart_Input,YZend_Input,YZkd_Input
+    global Xlimstart_Input,Xlimend_Input,Ylimstart_Input,Ylimend_Input
+    global HS,fig,Point_Draw, Best_Draw, Test_Draw,Draw_BOX,ZL_Input
+    try:
+        Draw_Type = Draw_BOX.curselection()[0]
+    except:
+        Draw_Type = 0
+    #画板创造
+    addNews('生成绘制取...')
+    fig = plt.figure(num='CoTan函数')  # 定义一个图像窗口
+    if Draw_Type in (0,1,2,3,8,9):
+        plt.grid(True,ls='--')  # 显示网格(不能放到后面,因为后面调整成为了笛卡尔坐标系)
+    ax = plt.gca()
+    def init():
+        if Draw_Type in (0,2,4,6,8):
+            ax.spines['right'].set_color('none')
+            ax.spines['top'].set_color('none')
+            ax.xaxis.set_ticks_position('bottom')
+            ax.yaxis.set_ticks_position('left')
+            ax.spines['bottom'].set_position(('data', 0))# 设置x轴, y轴在(0, 0)的位置
+            ax.spines['left'].set_position(('data', 0))
+        #检测x
+        try:
+            if XZ_Input.get()[0] == 'c':#如果输入函数cx#-10#10#1#1
+                _HS = [XZ_Input.get()[1:],XZstart_Input.get(),XZend_Input.get(),XZkd_Input.get(),2]#第一部分HS,第二部分S,第三部分E,第四部分KD,第五部分JD
+                P = ['x',-10,10,1,2]#保护系统
+                try:
+                    P[0] = _HS[0]
+                    P[1] = int(_HS[1])
+                    P[2] = int(_HS[2])
+                    P[3] = int(_HS[3])
+                    P[4] = int(_HS[4])
+                except:#迭代匹配直到出现错误
+                    pass
+                _HS = P
+                x = Float(HS_L(_HS[0],'x','',_HS[1],_HS[2],_HS[3],_HS[4]).Cul()[1])#取y
+                ax.set_xticks(x)
+            elif XZ_Input.get()[0] == 'y':#输入函数y
+                #不错要错误捕捉,外围有个大的捕捉
+                x = abs(int(XZstart_Input.get()))
+                x_major_locator=plt.MultipleLocator(x)
+                ax.xaxis.set_major_locator(x_major_locator)
+            else:#输入纯数字
+                x = Float(XZ_Input.get().split(','))
+                ax.set_xticks(x)
+        except:
+            x_major_locator = plt.MultipleLocator(2)
+            ax.xaxis.set_major_locator(x_major_locator)
+        #检测y
+        try:#意外捕捉
+            if YZ_Input.get()[0] == 'c':  # 如果输入函数cx#-10#10#1#1
+                _HS = [YZ_Input.get()[1:],YZstart_Input.get(),YZend_Input.get(),YZkd_Input.get(),2]  # 第一部分HS,第二部分S,第三部分E,第四部分KD,第五部分JD
+                P = ['x', -10, 10, 1, 2]  # 保护系统
+                try:
+                    P[0] = _HS[0]
+                    P[1] = int(_HS[1])
+                    P[2] = int(_HS[2])
+                    P[3] = int(_HS[3])
+                    P[4] = int(_HS[4])
+                except:  # 迭代匹配直到出现错误
+                    pass
+                _HS = P
+                y = Float(HS_L(_HS[0], 'y', '', _HS[1], _HS[2], _HS[3], _HS[4]).Cul()[1])  # 取y
+                ax.set_yticks(y)
+            elif YZ_Input.get()[0] == 'y':  # 输入函数y
+                y = abs(int(YZstart_Input.get()))
+                y_major_locator = plt.MultipleLocator(y)
+                ax.yaxis.set_major_locator(y_major_locator)
+            else:
+                y = Float(YZ_Input.get().split(','))
+                ax.set_yticks(y)
+        except:
+            y_major_locator = plt.MultipleLocator(2)
+            ax.yaxis.set_major_locator(y_major_locator)
+        #极限设计
+        try:
+            xlim_IN = Float([Xlimstart_Input.get(),Xlimend_Input.get()],si=int,n=False)
+            ylim_IN = Float([Ylimstart_Input.get(),Ylimend_Input.get()],si=int,n=False)
+            try:_xlim = [xlim_IN[0], xlim_IN[1]]
+            except:_xlim = [-10,10]
+            try:_ylim = [ylim_IN[0], ylim_IN[1]]
+            except:_ylim = _xlim
+        except:
+            _xlim = [-10, 10]
+            _ylim = [-10,10]
+        _xlim.sort()
+        _ylim.sort()
+        ax.set_xlim(_xlim)
+        ax.set_ylim(_ylim)
+        global text_x,text_y
+        text_x = _xlim[0] + abs(_xlim[0]) * 0.01
+        text_y = _ylim[1] - abs(_ylim[1]) * 0.01
+    init()
+    #函数绘图系统
+    addNews('图像绘制中...')
+    if HS == None:return False
+    if Draw_Type in (0,1,4,5):
+        #绘制曲线
+        get = HS.Draw_Cul()
+        fx = get[0]
+        fy = get[1]
+        Func_label = get[2]
+        View = get[3]
+        First = True
+        for i in range(len(fx)):
+            x = fx[i]
+            y = fy[i]
+            if First:
+                plt.plot(x, y,View,label = Func_label)  # plot()画出曲线
+                First = False
+            else:
+                plt.plot(x, y, View)
+        #绘制记忆点
+        get = HS.getMemory()
+        m_x = get[0]
+        m_y = get[1]
+        max_x, max_y, min_x, min_y = HS.Best_value()
+        if Point_Draw.get():
+            plt.plot(m_x, m_y, View[0]+'o',label=f'Point of {Func_label}')  # 画出一些点
+            len_x = sorted(list(set(m_x)))#去除list重复项目
+            JZD = max_x + min_x
+
+            if Test_Draw.get():
+                o_x = None
+                for i in range(len(len_x)):
+                    if i in JZD:continue#去除极值点
+                    _x = len_x[i]#x
+                    if o_x == None or abs(_x - o_x) >= 1:#确保位置
+                        num = m_x.index(_x)#y的座位
+                        _y = m_y[num]
+                        plt.text(_x,_y,f'({_x},{int(_y)})', fontdict={'size': '10', 'color':'b'})# 标出坐标
+                        o_x = _x
+        if Best_Draw.get():
+            o_x = None
+            n_max = []
+            for i in range(len(max_x)):#画出最大值
+                _x = max_x[i]
+                if o_x == None or abs(_x - o_x) >= 1:  # 确保位置
+                    if Test_Draw.get():plt.text(_x-1, max_y, f'max:({_x},{int(max_y)})', fontdict={'size': '10', 'color': 'b'})  # 标出坐标
+                    n_max.append(_x)
+                    o_x = _x
+            o_x = None
+            n_min = []
+            for i in range(len(min_x)):#画出最小值
+                _x = min_x[i]
+                if o_x == None or abs(_x - o_x) >= 1:
+                    n_min.append(_x)
+                    if Test_Draw.get():plt.text(_x-1, min_y, f'min:({_x},{int(min_y)})', fontdict={'size': '10', 'color': 'b'})  # 标出坐标
+                    o_x = _x
+            plt.plot(n_min, [min_y] * len(n_min), View[0] + 'o')  # 画出一些点
+            plt.plot(n_max, [max_y] * len(n_max), View[0] + 'o')  # 画出一些点
+        plt.legend()  # 显示图示
+    elif Draw_Type in (8,9):
+        get = HS.Cul()
+        x = get[0]
+        y = get[1]
+        l = len(x)
+        global xdata, ydata
+        xdata = []
+        ydata = []
+        Func_label = get[2]
+        View = get[3]
+        ln = ax.plot([], [], View,label=Func_label,animated=False)[0]
+        text = plt.text(text_x, text_y, '', fontdict={'size': '10', 'color': 'b'})
+        def _init():
+            init()
+            return ln,text
+        def update(n):
+            global xdata,ydata
+            if n == 0:
+                xdata = []
+                ydata = []
+            xdata.append(x[n])
+            ydata.append(y[n])
+            text.set_text(f'x={x[n]},y={y[n]}')
+            ln.set_data(xdata, ydata)
+            return ln,text
+        try:#自定义帧率
+            ZL = int(ZL_Input.get())
+        except:
+            ZL = 100
+        ani = FuncAnimation(fig, update, frames=l,init_func=_init, interval=ZL,blit=False,repeat_delay=3000)#动态绘图
+    elif Draw_Type in (2,3,6,7):
+        text = plt.text(text_x, text_y, '', fontdict={'size': '10', 'color': 'b'})
+        HS_List = HS.Return_Son()
+        pr_List = []
+        l = len(HS_List)
+        m = []#每个群组中fx分类的个数
+        for i in HS_List:#预先生成函数
+            addNews(f'迭代计算中...(共{l}次)')
+            get = i.Draw_Cul()
+            m.append(len(get[0]))
+            pr_List.append(get)
+        pr_List += pr_List[::-1]
+        ln_list = [text]
+        for i in range(max(m)):
+            ln_list.append(ax.plot([], [], pr_List[0][3], animated=False)[0])#创建足够的i
+        l = len(pr_List)
+        def _init():
+            init()
+            text.set_text('')
+            return None
+        def update(n):
+            get = pr_List[n-1]
+            ln_list[0].set_text(get[2])
+            for i in range(max(m)):
+                try:
+                    x = get[0][i]
+                    y = get[1][i]
+                    ln_list[i+1].set_data(x, y)
+                except:
+                    ln_list[i+1].set_data([],[])
+            return ln_list
+        try:#自定义帧率
+            ZL = int(ZL_Input.get())
+        except:
+            ZL = 100
+        ani = FuncAnimation(fig, update, frames=l,init_func=_init, interval=ZL,blit=False)#动态绘图
+    addNews('绘制完毕')
+    plt.show()  # 显示图像
+    return True
+
+def Add_HS():
+    global Func_Input, start_Input, end_Input, kd_Input, JD_Input, FuncName_Input, FuncView_Input,View_C,View_Co,HS,top
+    global a_MR, a_start, a_end, a_kd
+    getHS = Func_Input.get().replace(' ', '')
+    if getHS == '':
+        addNews('应用失败')
+        return None
+    X_I = [-10,10,0.1,2,1,-10,10,1]
+    get = [start_Input,end_Input,kd_Input,JD_Input,a_MR, a_start, a_end, a_kd]
+    #参数的处理
+    try:
+        c = kd_Input.get().replace(' ', '')
+        if c[0] == 'H':
+            Name = {'Pi': sympy.pi, 'e': sympy.E, 'log': sympy.log,
+                'sin': sympy.sin, 'cos': sympy.cos, 'tan': sympy.tan,
+                'cot': lambda x: 1 / sympy.tan(x), 'csc': lambda x: 1 / sympy.sin(x),
+                'sec': lambda x: 1 / sympy.cos(x), 'sinh': sympy.sinh, 'cosh': sympy.cosh,
+                'tanh': sympy.tanh, 'asin': sympy.asin, 'acos': sympy.acos,
+                'atan': sympy.atan}
+            kd = eval(c[1:],Name)
+        else:raise Exception
+    except:
+        kd = None
+    for i in range(8):
+        try:
+            a = float(get[i].get())
+            X_I[i] = a
+        except:
+            pass
+    if kd != None:X_I[2] = kd
+
+    #View的处理
+    view = FuncView_Input.get().split('#')
+    try:
+        if view[0] not in View_Co:view[0] = 'b'
+        v_2 = View_C.get(view[1], '-')
+    except:
+        view = ['','']
+        view[0] = random.choice(View_Co)
+        v_2 = '-'
+    V = view[0] + v_2
+    #Name的处理
+    name = FuncName_Input.get().replace(' ', '')
+    if name == '':name = getHS
+    try:
+        HS = HS_L(getHS,name,V,*X_I,c_Son = True)
+        addNews('应用成功')
+        top.title(f'CoTan函数工厂  {HS}')
+    except:
+        addNews('应用失败')
+
+def addNews(News):
+    global News_BOX,T,top
+    T += 1
+    News = str(News)
+    News_BOX.insert(0, News+f'({T})')
+    top.update()
+
+def Advanced_Control():#H_S-默认函数GF-关闭时询问返回函数
+    global View_C,View_Co,HS,T,top
+    HS = None
+    T = 0
+    View_C = {'实线':'-',
+              '短横线':'--',
+              '点划线':'-,',
+              '虚线':':',
+              '点标记':'.',
+              '圆标记':'o',
+              '倒三角':'v',
+              '正三角':'^',
+              '左三角':'&lt',
+              '下箭头':'1',
+              '上箭头':'2',
+              '左箭头':'3',
+              '右箭头':'4',
+              '正方形':'s',
+              '五边形':'p',
+              '星形':'*',
+              '六边形':'h',
+              '六边形2':'H',
+              '+号':'+',
+              'X标记':'x',}#函数样式翻译表
+    View_Co = ['g','r','c','m','y','k']
+
+    # top = tkinter.Tk()  # 设置屏幕
+    top = DragWindow()
+    bg = '#FFFAFA'#主颜色
+    bbg = '#FFFAFA'#按钮颜色
+    fg = '#000000'#文字颜色
+    top["bg"] = bg
+    top.title('CoTan函数工厂')
+    top.resizable(width=False, height=False)
+    top.geometry('+10+10')
+    FONT = ('Font\ZKST.ttf', 11)#设置字体
+    rcParams['font.family'] = 'simhei'
+    rcParams['axes.unicode_minus']=False
+
+    width_B = 13#标准宽度
+    height_B=2
+    a_y = 0
+    a_x = 1
+    global Func_Input,start_Input,end_Input,kd_Input,JD_Input,FuncName_Input,FuncView_Input
+    tkinter.Label(top, text='输入解析式:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    Func_Input = tkinter.Entry(top, width=width_B * 2)
+    Func_Input.grid(column=a_x+1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='定义域前端点:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    start_Input = tkinter.Entry(top, width=width_B * 2)
+    start_Input.grid(column=a_x+1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='定义域后端点:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    end_Input = tkinter.Entry(top, width=width_B * 2)
+    end_Input.grid(column=a_x+1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='函数绘制跨度:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    kd_Input = tkinter.Entry(top, width=width_B * 2)
+    kd_Input.grid(column=a_x+1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='函数计算精度:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    JD_Input = tkinter.Entry(top, width=width_B * 2)
+    JD_Input.grid(column=a_x+1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='函数名字:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    FuncName_Input = tkinter.Entry(top, width=width_B * 2)
+    FuncName_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='函数视图:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    FuncView_Input = tkinter.Entry(top, width=width_B * 2)
+    FuncView_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    global a_MR,a_start,a_end,a_kd
+
+    a_y += 1
+    tkinter.Label(top, text='常量a默认值:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    a_MR = tkinter.Entry(top, width=width_B * 2)
+    a_MR.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='常量a起点:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    a_start = tkinter.Entry(top, width=width_B * 2)
+    a_start.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='常量a终点:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    a_end = tkinter.Entry(top, width=width_B * 2)
+    a_end.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='常量a跨度:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    a_kd = tkinter.Entry(top, width=width_B * 2)
+    a_kd.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top,bg = bbg,fg = fg, text='应用函数',command=Add_HS, font=FONT, width=width_B, height=height_B).grid(column=a_x,row=a_y,sticky=tkinter.E + tkinter.W)  # 添加函数
+    tkinter.Button(top,bg = bbg,fg = fg, text='绘制图像',command = Fucn_Draw, font=FONT, width=width_B, height=height_B).grid(column=a_x+1, row=a_y,sticky=tkinter.E + tkinter.W)
+    tkinter.Button(top,bg = bbg,fg = fg, text='性质预测', command = Fucn_XZ,font=FONT, width=width_B, height=height_B).grid(column=a_x+2, row=a_y,sticky=tkinter.E + tkinter.W)  # 添加函数
+
+    global XZ_BOX,XZ_JD
+
+    a_y += 1
+    tkinter.Label(top, text='预测精度:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    XZ_JD = tkinter.Entry(top, width=width_B * 2)
+    XZ_JD.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    # 显示函数的xy
+    XZ_BOX = tkinter.Listbox(top, width=width_B * 3)  # 暂时不启用多选
+    XZ_BOX.grid(column=a_x, row=a_y, columnspan=3, rowspan=9, sticky=tkinter.S + tkinter.N + tkinter.E + tkinter.W)
+
+    a_x += 3
+    tkinter.Label(top, text='',bg = bg,fg = fg, font=FONT, width=1).grid(column=a_x, row=0)  # 设置说明
+
+
+    #第二排的开始
+    global XZ_Input,XZstart_Input,XZend_Input,XZkd_Input,YZ_Input,YZstart_Input,YZend_Input,YZkd_Input
+    global Xlimstart_Input,Xlimend_Input,Ylimstart_Input,Ylimend_Input
+    a_x += 1
+    a_y = 0
+    tkinter.Label(top, text='X轴刻度声明:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    XZ_Input = tkinter.Entry(top, width=width_B * 2)
+    XZ_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='X轴刻度起点:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    XZstart_Input = tkinter.Entry(top, width=width_B * 2)
+    XZstart_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='X轴刻度终点:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    XZend_Input = tkinter.Entry(top, width=width_B * 2)
+    XZend_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='X轴刻度间隔:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    XZkd_Input = tkinter.Entry(top, width=width_B * 2)
+    XZkd_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='Y轴刻度声明:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    YZ_Input = tkinter.Entry(top, width=width_B * 2)
+    YZ_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='Y轴刻度起点:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    YZstart_Input = tkinter.Entry(top, width=width_B * 2)
+    YZstart_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='Y轴刻度终点:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    YZend_Input = tkinter.Entry(top, width=width_B * 2)
+    YZend_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='Y轴刻度间隔:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    YZkd_Input = tkinter.Entry(top, width=width_B * 2)
+    YZkd_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='X轴显示起点:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    Xlimstart_Input = tkinter.Entry(top, width=width_B * 2)
+    Xlimstart_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='X轴显示终点:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    Xlimend_Input = tkinter.Entry(top, width=width_B * 2)
+    Xlimend_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='Y轴显示起点:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    Ylimstart_Input = tkinter.Entry(top, width=width_B * 2)
+    Ylimstart_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='Y轴显示终点:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    Ylimend_Input = tkinter.Entry(top, width=width_B * 2)
+    Ylimend_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    global ZL_Input
+    a_y += 1
+    tkinter.Label(top, text='帧率(帧/ms):', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,
+                                                                                                     row=a_y)  # 设置说明
+    ZL_Input = tkinter.Entry(top, width=width_B * 2)
+    ZL_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    global Point_Draw,Best_Draw,Test_Draw
+    a_y += 1
+    Point_Draw = tkinter.IntVar()
+    Best_Draw = tkinter.IntVar()
+    Test_Draw = tkinter.IntVar()
+
+    tkinter.Checkbutton(top,bg = bg,fg = fg,activebackground=bg,activeforeground=fg,selectcolor=bg, text="显示记忆点", variable=Point_Draw).grid(column=a_x, row=a_y,
+                                                                                      sticky=tkinter.E + tkinter.W)
+    tkinter.Checkbutton(top,bg = bg,fg = fg,activebackground=bg,activeforeground=fg,selectcolor=bg, text="显示最值", variable=Best_Draw).grid(column=a_x+1, row=a_y,
+                                                                                        sticky=tkinter.E + tkinter.W)
+    tkinter.Checkbutton(top,bg = bg,fg = fg,activebackground=bg,activeforeground=fg,selectcolor=bg, text="显示文字", variable=Test_Draw).grid(column=a_x+2, row=a_y,
+                                                                                        sticky=tkinter.E + tkinter.W)
+
+    global News_BOX,Draw_BOX
+    a_y += 1
+    # 显示函数的xy
+    Draw_BOX = tkinter.Listbox(top, width=width_B * 3,height=height_B*4)  # 暂时不启用多选
+    Draw_BOX.grid(column=a_x, row=a_y, columnspan=3, rowspan=3, sticky=tkinter.S + tkinter.N + tkinter.E + tkinter.W)
+    Draw_BOX.insert(tkinter.END, *['笛卡尔坐标系静态图像(默认)','矩形坐标系静态图像','笛卡尔坐标系动态图像','矩形坐标系动态图像',
+                                   '笛卡尔坐标系静态图像(无线框)','矩形坐标系静态图像(无线框)','笛卡尔坐标系动态图像(无线框)',
+                                   '矩形坐标系动态图像(无线框)','笛卡尔坐标系动态画图','矩形坐标系动态画图'])
+    a_y += 3
+    # 显示函数的xy
+    News_BOX = tkinter.Listbox(top, width=width_B * 3,height=height_B*2)  # 暂时不启用多选
+    News_BOX.grid(column=a_x, row=a_y, columnspan=3, rowspan=2, sticky=tkinter.S + tkinter.N + tkinter.E + tkinter.W)
+
+    a_x += 3
+    tkinter.Label(top, text='',bg = bg,fg = fg, font=FONT, width=1).grid(column=a_x, row=0)  # 设置说明
+
+    global Ycul_Input,Xcul_Input,Xcul_CS,Xcul_TD_Input,Xcul_TD_CS,R_cul
+    a_x += 1
+    a_y = 0
+    tkinter.Label(top, text='计算(y):',bg = bg,fg = fg,font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    Ycul_Input = tkinter.Entry(top, width=width_B * 2)
+    Ycul_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='二分法计算(x):',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    Xcul_Input = tkinter.Entry(top, width=width_B * 2)
+    Xcul_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    Xcul_CS = []#二分法参数输入
+    name_List = ['最大迭代数','计算精度','最值允许偏移量','零点最小间隔','减少计算','允许梯度计算','最大扩张深度','扩张限制','扩张偏移量','开启二级验证','二级验证程度']
+    for i in range(11):
+        a_y += 1
+        Xcul_CS.append(tkinter.StringVar())
+        tkinter.Label(top,bg = bg,fg = fg, text=name_List[i]+':', font=FONT, width=width_B, height=height_B).grid(column=a_x,
+                                                                                             row=a_y)  # 设置说明
+        tkinter.Entry(top, width=width_B * 2,textvariable=Xcul_CS[-1]).grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='梯度法计算(x):',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y)  # 设置说明
+    Xcul_TD_Input = tkinter.Entry(top, width=width_B * 2)
+    Xcul_TD_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    Xcul_TD_CS = []#梯度法法参数输入
+    name_List = ['梯度起点','梯度终点','计算深度','计算精度']
+    for i in range(4):
+        a_y += 1
+        Xcul_TD_CS.append(tkinter.StringVar())
+        tkinter.Label(top,bg = bg,fg = fg, text=name_List[i]+':', font=FONT, width=width_B, height=height_B).grid(column=a_x,
+                                                                                             row=a_y)  # 设置说明
+        tkinter.Entry(top, width=width_B * 2,textvariable=Xcul_TD_CS[-1]).grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='',bg = bg,fg = fg,height=1).grid(column=1, row=a_y)  #底部
+
+    a_x += 3
+    tkinter.Label(top, text='',bg = bg,fg = fg, font=FONT, width=1).grid(column=a_x, row=0)  # 设置说明
+
+    global Xcul_DS_Input,DScul_Input,DScul_JD_Input
+
+    a_x += 1
+    a_y = 0
+
+    tkinter.Label(top, text='代数法计算(x):', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,
+                                                                                                       row=a_y)  # 设置说明
+    Xcul_DS_Input = tkinter.Entry(top, width=width_B * 2)
+    Xcul_DS_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='求(x)导数:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,
+                                                                                                       row=a_y)  # 设置说明
+    DScul_Input = tkinter.Entry(top, width=width_B * 2)
+    DScul_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Label(top, text='逼近求导精度:', bg=bg, fg=fg, font=FONT, width=width_B, height=height_B).grid(column=a_x,
+                                                                                                     row=a_y)  # 设置说明
+    DScul_JD_Input = tkinter.Entry(top, width=width_B * 2)
+    DScul_JD_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top,bg = bbg,fg = fg, text='计算(y)',command = Cul_Y, font=FONT, width=width_B, height=height_B).grid(column=a_x,row=a_y)  # 设置说明
+    tkinter.Button(top,bg = bbg,fg = fg, text='二分法计算(x)',command = Cul_X, font=FONT, width=width_B, height=height_B).grid(column=a_x+1,row=a_y)
+    tkinter.Button(top,bg = bbg,fg = fg, text='梯度法计算(x)',command = Cul_X_TD, font=FONT, width=width_B, height=height_B).grid(column=a_x+2,row=a_y)
+
+    a_y += 1
+    tkinter.Button(top,bg = bbg,fg = fg,text='代数法计算',command=Cul_X_Sympy,font=FONT,width=width_B,height=height_B).grid(column = a_x,row = a_y,sticky=tkinter.N + tkinter.E + tkinter.W)
+    tkinter.Button(top,bg = bbg,fg = fg, text='逼近法导数计算',command=Cul_DS_BJ, font=FONT, width=width_B,height=height_B).grid(column=a_x+1,row=a_y,sticky=tkinter.N + tkinter.E + tkinter.W)
+    tkinter.Button(top,bg = bbg,fg = fg,text='导数计算',command=Cul_DS,font=FONT,width=width_B,height=height_B).grid(column =a_x+2,row = a_y,sticky=tkinter.N + tkinter.E + tkinter.W)
+
+    a_y += 1
+    k = 5
+    R_cul = tkinter.Listbox(top,height=height_B*(k-1))  # 暂时不启用多选
+    R_cul.grid(column=a_x, row=a_y, columnspan=3,rowspan = k,sticky=tkinter.N + tkinter.E + tkinter.W)
+
+    global YC_Input,YC_BOX
+    a_y += k-1
+    tkinter.Label(top, text='性质预测值:',bg = bg,fg = fg, font=FONT, width=width_B, height=height_B).grid(column=a_x, row=a_y, sticky=tkinter.N + tkinter.S)  # 设置说明
+    YC_Input = tkinter.Entry(top, width=width_B * 2)
+    YC_Input.grid(column=a_x + 1, row=a_y, columnspan=2, sticky=tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top,bg = bbg,fg = fg,text='周期性',command = Check_Periodic,font=FONT,width=width_B,height=height_B).grid(column = a_x,row = a_y,sticky=tkinter.N + tkinter.E + tkinter.W)
+    tkinter.Button(top,bg = bbg,fg = fg, text='对称轴',command = Check_Symmetry_axis, font=FONT, width=width_B,height=height_B).grid(column=a_x+1,row=a_y,sticky=tkinter.N + tkinter.E + tkinter.W)
+    tkinter.Button(top,bg = bbg,fg = fg,text='对称中心',command = Check_Center_of_symmetry,font=FONT,width=width_B,height=height_B).grid(column =a_x+2,row = a_y,sticky=tkinter.N + tkinter.E + tkinter.W)
+
+    a_y += 1
+    tkinter.Button(top,bg = bbg,fg = fg,text='单调性',command = Check_Monotonic,font=FONT,width=width_B,height=height_B).grid(column =a_x,row = a_y, columnspan=3,sticky=tkinter.N + tkinter.E + tkinter.W)
+
+    a_y += 1
+    # 显示函数的xy
+    YC_BOX = tkinter.Listbox(top, width=width_B*3,height=height_B*5)  # 暂时不启用多选
+    YC_BOX.grid(column=a_x, row=a_y, columnspan=3, rowspan=6, sticky=tkinter.S + tkinter.N + tkinter.E + tkinter.W)
+
+    a_x += 3
+    tkinter.Label(top, text='',bg = bg,fg = fg, font=FONT, width=1).grid(column=a_x, row=0)  # 设置说明
+
+    a_x += 1
+    a_y = 0
+    tkinter.Button(top,bg = bbg,fg = fg,text='生成表格',command=Fucn_Numpy,font=FONT,width=width_B*2,height=height_B).grid(column = a_x,row = a_y,columnspan=2)
+    tkinter.Button(top,bg = bbg,fg = fg,text='导出表格',command=Fucn_Save,font=FONT,width=width_B,height=height_B).grid(column = a_x+2,row = a_y)
+
+    global Pr_BOX
+    a_y += 1
+    #显示函数的xy
+    Pr_BOX=tkinter.Listbox(top,width=width_B*3)#暂时不启用多选
+    Pr_BOX.grid(column = a_x,row = a_y,columnspan = 3,rowspan =17,sticky = tkinter.S+tkinter.N+tkinter.E+tkinter.W)
+
+    addNews('加载完毕')
+    tkinter.mainloop()

+ 1718 - 0
HSCH/HS.py

@@ -0,0 +1,1718 @@
+from __future__ import division#让/恢复为除法
+import pandas
+import tkinter,tkinter.messagebox
+from tkinter.filedialog import asksaveasfile
+import tkinter.messagebox
+import sympy
+
+def Bool(n,p=False):
+    f = ['0','n','no','NO','NOT','No','Not','不']
+    t = ['y', 'yes', 'Yes','YES', '不']
+    if p:
+        t.append('')
+    else:
+        f.append('')
+    try:
+        _n = str(n)
+        if _n in f:
+            return False
+        elif _n in t:
+            return True
+    except:
+        pass
+    return bool(n)
+
+class HS_CSV:
+    def __init__(self,HS,name,view):
+        if len(HS[0]) != len(HS[1]):raise Exception#个数不相等报错
+        print(HS)
+        #筛查可以数字化的结果
+        _x = []
+        _y = []
+        for i in range(len(HS[0])):#检查
+            try:
+                a_x = float(HS[0][i])
+                a_y = float(HS[1][i])
+                _x.append(a_x)
+                _y.append(a_y)
+            except:
+                pass
+        print(_x)
+        print(_y)
+        Iter_X = _x
+        Iter_X = sorted(list(set(Iter_X)))#排序并且去除重复
+        #筛查重复
+        x = []
+        y = []
+        for n_x in Iter_X:
+            try:
+                y.append(_y[_x.index(n_x)])
+                x.append(n_x)
+            except:
+                pass
+        print(x)
+        print(y)
+        #函数基本信息
+        self.Func_Name = name#这个是函数名字
+        self.View = view#绘制样式
+
+        #函数基本数据,相当于Lambda的Cul
+        self.__x = x
+        self.__y = y
+        self.__ya = y
+        self.__xy = []
+        self.__fx = []
+        self.__fy = []
+        for i in range(len(self.__x)):
+            self.__xy.append(f'x:{self.__x[i]},y:{self.__y[i]}')
+        self.__xyCSV = pandas.DataFrame((self.__x,self.__y),index=('x','y'))
+
+        #函数记忆数据
+        self.Memore_x = []
+        self.Memore_y = []
+        self.__MemoryAnswer = []
+
+        self.YC = False
+        self.Best_R = None
+        self.HaveDone = False
+
+        self.max_y = None
+        self.max_x = []
+        self.min_y = None
+        self.min_x = []
+
+    def __call__(self,x):
+        return self.__y[self.__x.index(x)]
+
+    def __str__(self):
+        return f'{self.Func_Name}'
+
+    def __Best_value(self):  # 计算最值和极值点
+        if not self.HaveDone: self.Cul()  # 检查Cul的计算
+        y = self.__y + self.Memore_y
+        x = self.__x + self.Memore_x
+        max_y = max(y)
+        min_y = min(y)
+        max_x = Find(x.copy(),y.copy(),max_y)
+        self.max_y = max_y
+        self.max_x = max_x
+        min_x = Find(x.copy(),y.copy(),min_y)
+        self.min_y = min_y
+        self.min_x = min_x
+        return self.max_x, self.max_y, self.min_x, self.min_y
+
+    def Cul(self):
+        if self.HaveDone:return self.__x,self.__y,self.Func_Name,self.View
+        self.__fx = [[]]
+        self.__fy = [[]]
+        o_y = None
+        p = None#单调性 0-增,1-减
+        _p = 1
+        try:
+            for a_x in self.__x:
+                c = 0
+                p2 = 1
+                try:
+                    y = self(a_x)
+                    if o_y != None and o_y > y:
+                        _p = 1
+                    elif o_y != None and o_y < y:
+                        _p = 0
+                    elif o_y != None and o_y == y:
+                        try:
+                            z_x = round(a_x - 0.5 * self.kd)
+                            z_y = self(z_x)
+                            if z_y == o_y == y:  # 真实平衡
+                                p2 = 2
+                            elif abs(z_y - o_y) >= 10 * self.kd or abs(z_y - y) >= 10 * self.kd:
+                                p2 = 3
+                                c += 5
+                        except:
+                            p2 = 4
+                            c += 9
+                        _p = 2
+                    if o_y != None and p != _p:
+                        if (o_y * y) < 0:
+                            c += 5
+                        elif abs(o_y - y) >= (10 * self.kd):
+                            c += 5
+                        if c >= 5 and (_p != 2 or p2 != 2):
+                            reason.append(c)
+                            self.__fx.append([])
+                            self.__fy.append([])
+                    p = _p
+                    self.__fx[-1].append(a_x)
+                    self.__fy[-1].append(y)
+                    o_y = y
+                except:
+                    pass
+        except (TypeError, IndexError, ValueError):
+            pass
+        newfx = []
+        newfy = []
+        must = False
+        for i in range(len(self.__fx)):  # 去除只有单个的组群
+            if len(self.__fx[i]) == 1:  # 检测到有单个群组
+                q_r = reason[i]  # 前原因
+                b_r = reason[i]  # 后原因
+                if q_r < b_r:  # 前原因小于后原因,连接到前面
+                    try:
+                        newfx[-1] += self.__fx[i]
+                        newfy[-1] += self.__fy[i]
+                    except:  # 按道理不应该出现这个情况
+                        newfx.append(self.__fx[i])
+                        newfy.append(self.__fy[i])
+                else:
+                    newfx.append(self.__fx[i])
+                    newfy.append(self.__fy[i])
+                    must = True
+            else:
+                if not must:
+                    newfx.append(self.__fx[i])
+                    newfy.append(self.__fy[i])
+                else:
+                    newfx[-1] += self.__fx[i]
+                    newfy[-1] += self.__fy[i]
+                    must = False
+        self.__fx = newfx
+        self.__fy = newfy
+        self.HaveDone = True
+        self.__xyCSV = pandas.DataFrame((self.__x,self.__y),index=('x','y'))
+        self.__Best_value()
+        return self.__x,self.__y,self.Func_Name,self.View
+
+    def Iterative_method_Of_Huan(self, y_in, *args,**kwargs):#保持和下一个对象相同参数
+        r = self.Cul_dichotomy(y_in)
+        return r[0],r[0][0]#
+
+    def Cul_dichotomy(self, y_in, *args,**kwargs):#保持和下一个对象相同参数
+        y = sorted(self.__y.copy())
+        o_y = None#o_y是比较小的,i是比较大的
+        q = None
+        for i in y:
+            try:
+                if (o_y < y_in and i > y_in) and (abs(((i + o_y)/2) - y_in) < 0.1):
+                    q = [o_y,i]
+                    break
+            except:
+                pass
+            o_y = i
+        if q == None:
+            for i in y:
+                try:
+                    if abs(((i + o_y) / 2) - y_in) < 0.1:
+                        q = [o_y, i]
+                        break
+                except:
+                    pass
+                o_y = i
+        if q == None:return [],[]
+        X_o_y = Find(self.__x.copy(),self.__y.copy(),q[0])
+        X_y = Find(self.__x.copy(),self.__y.copy(),q[1])
+        l = min([len(X_y),len(X_o_y)])
+        answer = []
+        X_out = []
+        for i in range(l):
+            print(X_y[i],X_o_y[i])
+            r = (X_y[i] + X_o_y[i])/2
+            print(r)
+            self.Memore_x.append(r)
+            self.Memore_y.append(y_in)
+            X_out.append(r)
+            answer.append(f'y={y_in} -> x={r}')
+        self.__MemoryAnswer += answer
+        return answer,X_out
+
+    def __Parity(self,ro=False):
+        if not self.HaveDone: self.Cul()  # 检查Cul的计算
+        y = self.__y.copy()
+        x = self.__x.copy()
+        a = sorted(x)[0]
+        b = sorted(x)[1]
+        a = -min([abs(a),abs(b)])
+        b = -a
+        flat = None#0-偶函数,1-奇函数
+        for i in range(len(x)):
+            _x = x[i]#正项x
+            if _x < a or _x > b:continue#x不在区间内
+            try:
+                _y = self(_x)
+                o_y = self(-_x)
+
+                if o_y == _y == 0:
+                    continue
+                elif o_y == _y:
+                    if flat == None:
+                        flat = 0
+                    elif flat == 1:
+                        raise Exception
+                elif o_y == -_y:
+                    if flat == None:
+                        flat = 1
+                    elif flat == 0:
+                        raise Exception
+                else:
+                    raise Exception
+            except:
+                flat = None
+                break
+        return flat,[a,b]
+
+    def __Monotonic(self):
+        if not self.HaveDone: self.Cul()  # 运行Cul计算
+        fy = self.__fy.copy()
+        fx = self.__fx.copy()
+        Increase_interval = []#增区间
+        Minus_interval = []#减区间
+        Interval = []#不增不减
+        for i in range(len(fx)):
+            x = fx[i]
+            y = fx[i]
+            o_x = None
+            o_y = None
+            start_x = None
+            flat = None#当前研究反围:0-增区间,1-减区间,2-不增不减
+            for i in range(len(x)):
+                _x = x[i]#正项x
+                _y = y[i]#正项y
+                if start_x == None:
+                    start_x = _x
+                else:
+                    if o_y > _y:#减区间
+                        if flat == None or flat == 1:#减区间
+                            pass
+                        elif flat == 0:#增区间
+                            Increase_interval.append((start_x,o_x))
+                            start_x = o_x
+                        elif flat == 2:
+                            Interval.append((start_x, o_x))
+                            start_x = o_x
+                        flat = 1
+                    elif o_y < _y:#增区间
+                        if flat == None or flat == 0:  # 增区间
+                            pass
+                        elif flat == 1:  # 减区间
+                            Minus_interval.append((start_x, o_x))
+                            start_x = o_x
+                        elif flat == 2:
+                            Interval.append((start_x, o_x))
+                            start_x = o_x
+                        flat = 0
+                    else:#水平区间
+                        if flat == None or flat == 2:
+                            pass
+                        elif flat == 1:  # 减区间
+                            Minus_interval.append((start_x, o_x))
+                            start_x = o_x
+                        elif flat == 0:  # 增区间
+                            Increase_interval.append((start_x, o_x))
+                            start_x = o_x
+                        flat = 2
+                o_x = _x
+                o_y = _y
+            if flat == 2:
+                Interval.append((start_x, o_x))
+            elif flat == 1:  # 减区间
+                Minus_interval.append((start_x, o_x))
+            elif flat == 0:  # 增区间
+                Increase_interval.append((start_x, o_x))
+        return Increase_interval,Minus_interval,Interval
+
+    def Nature(self,addNews=lambda x:x):
+        answer = []
+        P = self.__Parity()
+        M = self.__Monotonic()
+        ZQ = self.Periodic(addNews)[0]
+        DCZ = self.Symmetry_axis(addNews)[0]
+        DCZX = self.Center_of_symmetry(addNews)[0]
+        if P[0] == 1:
+            answer.append(f'奇函数 区间:[{P[1][0]},{P[1][0]}]')
+        elif P[0] == 0:
+            answer.append(f'偶函数 区间:[{P[1][0]},{P[1][0]}]')
+        for i in M[0]:
+            answer.append(f'增区间:[{i[0]},{i[1]}]')
+        for i in M[1]:
+            answer.append(f'减区间:[{i[0]},{i[1]}]')
+        for i in M[2]:
+            answer.append(f'水平区间:[{i[0]},{i[1]}]')
+        if ZQ != None:
+            answer.append(f'最小正周期:{ZQ}')
+        if DCZ != None:
+            answer.append(f'对称轴:x={DCZ}')
+        if DCZX != None:
+            answer.append(f'对称中心:{DCZX}')
+        return answer
+
+    def YC_On_Off(self):
+        if self.YC:
+            if tkinter.messagebox.askokcancel('提示', f'是否显示{self}的记忆数据?'):
+                # addNews('记忆显示完毕')
+                self.YC = False
+        else:
+            if tkinter.messagebox.askokcancel('提示', f'是否隐藏{self}的记忆数据?'):
+                # addNews('记忆隐藏完毕')
+                self.YC = True
+
+    def Out(self):
+        if not self.HaveDone: self.Cul()  # 检查Cul的计算
+        if tkinter.messagebox.askokcancel('提示', f'是否确认导出函数:\n{str(self)}'):
+            try:
+                Dic = tkinter.filedialog.asksaveasfilename(title='选择导出位置', filetypes=[("CSV", ".csv")]) + '.csv'
+                if Dic == '.csv':raise Exception
+                self.__xyCSV.to_csv(Dic)
+                return True
+            except:
+                pass
+        return False
+
+    def returnList(self):
+        # 最值和极值点设计
+        # if not self.HaveDone: self.Cul()  # 检查Cul的计算
+        a = []
+        for i in self.min_x:
+            a.append(f'极值点:{i}>最小值{self.min_y}')
+        for i in self.max_x:
+            a.append(f'极值点:{i}>最大值{self.max_y}')
+        return a + self.__MemoryAnswer +self.__xy
+
+    def Best_value(self):
+        if not self.HaveDone: self.Cul()  # 检查Cul的计算
+        return self.max_x, self.max_y, self.min_x, self.min_y
+
+    def getMemory(self):
+        if self.YC: return [], []
+        return self.Memore_x, self.Memore_y
+
+    def Clear_Memory(self):
+        self.Memore_x = []
+        self.Memore_y = []
+        self.__MemoryAnswer = []
+
+    def Draw_Cul(self):
+        if not self.HaveDone:self.Cul()
+        return self.__fx,self.__fy,self.Func_Name,self.View
+
+    def Cul_Y(self,x_in):
+        answer = []
+        for i in x_in:
+            try:
+                i = float(i)
+                y = self(i)
+                answer.append(f'x={i} -> y={y}')
+                if i not in self.Memore_x:
+                    self.Memore_x.append(i)
+                    self.Memore_y.append(y)
+            except:#捕捉运算错误
+                continue
+        self.__MemoryAnswer += answer
+        self.__Best_value()
+        return answer
+
+    def Periodic(self,addNews=lambda x:x):#计算周期
+        if not tkinter.messagebox.askokcancel('提示', f'计算周期需要一定时间,是否执行?(计算过程程序可能无响应)'):
+            return None,[]#无结果
+        if not self.HaveDone: self.Cul()
+        p = []#可能的周期
+        ran = len(self.__x)
+        k = int(ran/20)
+        addNews('正在预测可能的周期')
+        for i in range(0,ran,k):
+            start = self.__x[i]
+            try:
+                y = self(start)
+                x_list = self.Cul_dichotomy(y)[1]
+                # print(x_list)
+                q = []
+                for o_x in x_list:
+                    a = abs(o_x - start)
+                    if a == 0:continue
+                    if a:q.append(a)
+                p.extend(list(set(q)))
+            except:
+                pass
+        p_c = list(set(p))
+        a = []#a的可能列表
+        c = 0
+        addNews('正在筛选结果')
+        for i in p_c:
+            n_c = p.count(i)
+            if n_c > c:
+                a = [i]
+                c = n_c
+            elif n_c == c:
+                a.append(i)
+        try:
+            a.sort()#
+            addNews('计算完毕')
+            return a[0],a
+        except:
+            addNews('无周期')
+            return None,[]#无结果
+
+    def Symmetry_axis(self,addNews=lambda x:x):#计算对称轴
+        if not tkinter.messagebox.askokcancel('提示', f'计算对称轴需要一定时间,是否执行?(计算过程程序可能无响应)'):
+            return None,[]#无结果
+        if not self.HaveDone: self.Cul()
+        p = []#可能的对称轴
+        ran = len(self.__x)
+        k = int(ran / 20)
+        addNews('正在预测可能的对称轴')
+        for i in range(0, ran, k):
+            start = self.__x[i]
+            try:
+                y = self(start)
+                x_list = self.Cul_dichotomy(y)[1]
+                print(x_list)
+                q = []
+                for o_x in x_list:
+                    a = (o_x + start)/2
+                    if a:q.append(a)
+                p.extend(list(set(q)))
+            except:
+                pass
+        p_c = list(set(p))
+        a = []#a的可能列表
+        c = 0
+        addNews('正在筛选结果')
+        for i in p_c:
+            n_c = p.count(i)
+            if n_c > c:
+                a = [i]
+                c = n_c
+            elif n_c == c:
+                a.append(i)
+        try:
+            a.sort()  #
+            addNews('计算完毕')
+            return a[0], a
+        except:
+            addNews('无对称轴')
+            return None, []  # 无结果
+
+    def Center_of_symmetry(self,addNews=lambda x:x):  # 计算对称中心
+        if not tkinter.messagebox.askokcancel('提示', f'计算对称中心需要一定时间,是否执行?(计算过程程序可能无响应)'):
+            return None, []  # 无结果
+        if not self.HaveDone: self.Cul()
+        point = []  # 可能的对称轴
+        ran = len(self.__x)
+        k = int(ran / 20)
+        addNews('正在计算坐标点')
+        for i in range(0, ran, k):
+            start = self.__x[i]
+            try:
+                y = self(start)
+                x = start
+                point.append((x,y))
+            except:
+                pass
+
+        p = []
+        addNews('正在预测对称中心')
+        for i in point:
+            for o in point:
+                x = i[0] + o[0] / 2
+                y = i[1] + o[1] / 2
+                if i == o:continue
+                # print(f'i={i},o={o},x={x},y={y}')
+                p.append((x,y))
+        p_c = list(set(p))
+        a = []  # a的可能列表
+        c = 0
+        addNews('正在筛选结果')
+        for i in p_c:
+            n_c = p.count(i)
+            if n_c > c:
+                a = [i]
+                c = n_c
+            elif n_c == c:
+                a.append(i)
+        try:
+            if c < 5:raise Exception
+            addNews('计算完毕')
+            a.sort()  #
+            return a[int(len(a)/2)], a
+        except:
+            addNews('无对称中心')
+            return None, []  # 无结果
+
+class HS_lambda:
+    def __init__(self,HS,name,view,start = -10,end = 10,kd = 0.1,JD = 2,a = 1,a_start=-10,a_end=10,a_kd=1,c_Son = False):
+        self.x = sympy.Symbol('x')
+        Name = {'a':a,'x': self.x, 'Pi': sympy.pi, 'e': sympy.E, 'log': sympy.log,
+                'sin': sympy.sin, 'cos': sympy.cos, 'tan': sympy.tan,
+                'cot': lambda x: 1 / sympy.tan(x), 'csc': lambda x: 1 / sympy.sin(x),
+                'sec': lambda x: 1 / sympy.cos(x), 'sinh': sympy.sinh, 'cosh': sympy.cosh,
+                'tanh': sympy.tanh, 'asin': sympy.asin, 'acos': sympy.acos,
+                'atan': sympy.atan,'abs':abs}  # 这个是函数命名域
+        self.HS = eval(HS.replace(' ', ''), Name)#函数解析式
+        self.str_HS = HS.replace(' ', '')
+        #函数基本信息
+        self.View = view#绘制样式
+        #数据辨析
+        try:
+            start = float(start)
+            end = float(end)
+            if start > end:#使用float确保输入是数字,否则诱发ValueError
+                start, end = end, start
+            kd = abs(float(kd))
+            start = (start//kd)*kd#确保start可以恰好被kd整除
+            end = (end//kd+1)*kd
+            JD = abs(int(JD))
+            if JD >= 3:JD = 3
+        except ValueError:
+            start,end,kd,JD = -10,10,0.1,2#保底设置
+        #基本数据存储
+        self.JD = JD
+        self.start = start
+        self.end = end
+        self.kd = kd
+
+        #x和y数据存储
+        self.__x = []
+        self.__y = []
+        self.__ya = []
+        self.__fx = [[]]
+        self.__fy = [[]]
+
+        #记忆数据存储
+        self.Memore_x = []
+        self.Memore_y = []
+        self.__MemoryAnswer = []
+
+        #最值和极值点
+        self.max_y = None
+        self.max_x = []
+        self.min_y = None
+        self.min_x = []
+
+        self.YC = False
+        self.Best_R = None#是否计算最值
+        self.HaveDone = False#是否已经计算过xy
+
+        #函数求导
+        try:
+            self.DHS = sympy.diff(self.HS, self.x)
+        except:
+            self.DHS = None
+
+        #儿子函数
+        try:
+            a_start = float(a_start)
+            a_end = float(a_end)
+            if a_start > a_end:#使用float确保输入是数字,否则诱发ValueError
+                a_start, a_end = a_end, a_start
+            a_kd = abs(float(a_kd))
+        except ValueError:
+            a_start,a_end,a_kd = -10,10,1#保底设置
+        if c_Son:
+            self.Son_List = []
+            while a_start <= a_end:
+                try:
+                    self.Son_List.append(HS_lambda_Son(HS,name,view,start,end,kd,JD,a_start))
+                except:pass#不应该出现
+                a_start += a_kd
+            self.Func_Name = f'{name}:y={HS} a={a}({a_start},{a_end},{a_kd})'  # 这个是函数名字
+        else:
+            self.Son_List = []
+            self.Func_Name = f'{name}:y={HS} a={a})'  # 这个是函数名字
+
+    def Return_Son(self):
+        return self.Son_List
+
+    def __call__(self,x):
+        return self.HS.subs({self.x:x})
+
+    def __str__(self):
+        return f'{self.Func_Name} {self.start,self.end,self.kd}'
+
+    def __Best_value(self):#计算最值和极值点
+        #使用ya解决了因计算器误差而没计算到的最值,但是同时本不是最值的与最值相近的数字也被当为了最值,所以使用群组击破
+        if not self.HaveDone: self.Cul()#检查Cul的计算
+        if len(self.__fx) != 1:#没有计算的必要
+            if self.Best_R == None:
+                self.Best_R = not tkinter.messagebox.askokcancel('建议不计算最值', f'{self}的最值计算不精确,函数可能无最值,是否不计算最值')
+            if not self.Best_R:
+                pass
+                return self.max_x,self.max_y,self.min_x,self.min_y
+        y = self.__ya + self.Memore_y#x和y数据对齐(因为是加法,所以y的修改不影响self.__ya)
+        _y = self.__y + self.Memore_y
+        x = self.__x + self.Memore_x
+        max_y = max(y)
+        min_y = min(y)
+        max_x = Find(x.copy(),y,max_y)
+        min_x = Find(x.copy(),y,min_y)
+        #处理最大值极值点重复
+        max_x = sorted(list(set(max_x)))#处理重复
+        n = []
+        o_a = None
+        flat = False
+        b = max_x.copy()  #可处理列表
+        for i in range(len(max_x)):  #迭代选择
+            g_a = max_x[i]
+            if o_a == None or abs(g_a - o_a) >= 1:#1-连续系数
+                flat = False
+            else:
+                if flat:#加入群组
+                    n[-1].append(g_a)
+                else:#新键群组
+                    n.append([o_a, g_a])
+                    del b[b.index(o_a)]
+                    flat = True
+                del b[b.index(g_a)]#删除可处理列表
+            o_a = g_a
+        for i in n:#逐个攻破群组
+            y_For_X = []#群组中x的y值
+            for Qx in i:
+                num = x.index(Qx)
+                y_For_X.append(_y[num])#找到对应y值
+            n_max = max(y_For_X)#求解最大y值
+            n_x = Find(i,y_For_X,n_max)
+            n_max_x = n_x[int(len(n_x)/2)]
+            b.append(n_max_x)#取中间个
+        self.max_y = max_y
+        self.max_x = b
+        # 处理最小值极值点重复
+        min_x = sorted(list(set(min_x)))  # 处理重复
+        n = []
+        o_a = None
+        flat = False
+        b = min_x.copy()  # 可处理列表
+        for i in range(len(min_x)):  # 迭代选择
+            g_a = min_x[i]
+            if o_a == None or abs(g_a - o_a) >= 1:  # 1-连续系数
+                flat = False
+            else:
+                if flat:  # 加入群组
+                    n[-1].append(g_a)
+                else:  # 新键群组
+                    n.append([o_a, g_a])
+                    del b[b.index(o_a)]
+                    flat = True
+                del b[b.index(g_a)]  # 删除可处理列表
+            o_a = g_a
+        for i in n:  # 逐个攻破群组
+            y_For_X = []  # 群组中x的y值
+            for Qx in i:
+                num = x.index(Qx)
+                y_For_X.append(_y[num])  # 找到对应y值
+            n_min = min(y_For_X)  # 求解最大y值
+            n_x = Find(i,y_For_X,n_min)
+            n_min_x = n_x[int(len(n_x) / 2)]
+            b.append(n_min_x)  # 取中间个
+
+        self.min_y = min_y
+        self.min_x = b
+        return self.max_x,self.max_y,self.min_x,self.min_y
+
+    def Cul(self,it=float):
+        if self.HaveDone:
+            return self.__x,self.__y,self.Func_Name,self.View
+        #混合存储
+        self.__y = []
+        self.__ya = []
+        self.__x = []
+        self.__xy = []
+        self.__fx = [[]]
+        self.__fy = [[]]
+        reason = [30]
+        o_y = None
+        p = None#单调性 0-增,1-减
+        _p = 1
+        try:
+            a = int(self.start)
+            while a <= int(self.end):  # 因为range不接受小数
+                p2 = 1
+                try:
+                    c = 0
+                    a_x = round(a, self.JD)
+                    y = self(a_x)
+                    y = it(y)#数字处理方案
+                    a_y=round(y,self.JD)
+                    if o_y != None and o_y > y:
+                        _p = 1
+                    elif o_y != None and o_y < y:
+                        _p = 0
+                    elif o_y != None and o_y == y:
+                        try:
+                            z_x = round(a_x - 0.5 * self.kd)
+                            z_y = self(z_x)
+                            if z_y == o_y == y:  # 真实平衡
+                                p2 = 2
+                            elif abs(z_y - o_y) >= 10 * self.kd or abs(z_y - y) >= 10 * self.kd:
+                                p2 = 3
+                                c += 5
+                        except:
+                            p2 = 4
+                            c += 9
+                        _p = 2
+                    if o_y != None and p != _p:
+                        if (o_y * y) < 0:
+                            c += 5
+                        elif abs(o_y - y) >= (10 * self.kd):
+                            c += 5
+                        if c >= 5 and (_p != 2 or p2 != 2):
+                            reason.append(c)
+                            self.__fx.append([])
+                            self.__fy.append([])
+                    p = _p
+                    self.__x.append(a_x)#四舍五入减少计算量
+                    self.__y.append(y)#不四舍五入
+                    self.__ya.append(a_y)  # 四舍五入(用于求解最值)
+                    self.__xy.append(f'x:{a_x},y:{a_y}')
+                    self.__fx[-1].append(a_x)
+                    self.__fy[-1].append(y)
+                    o_y = y
+                except:
+                    reason.append(0)
+                    self.__fx.append([])
+                    self.__fy.append([])
+                a += self.kd
+        except (TypeError, IndexError, ValueError):
+            pass
+        newfx = []
+        newfy = []
+        must = False
+        for i in range(len(self.__fx)):#去除只有单个的组群
+            if len(self.__fx[i]) <= 1:#检测到有单个群组
+                q_r = reason[i]#前原因
+                b_r = reason[i]#后原因
+                if q_r < b_r:#前原因小于后原因,连接到前面
+                    try:
+                        newfx[-1] += self.__fx[i]
+                        newfy[-1] += self.__fy[i]
+                    except:#按道理不应该出现这个情况
+                        newfx.append(self.__fx[i])
+                        newfy.append(self.__fy[i])
+                else:
+                    newfx.append(self.__fx[i])
+                    newfy.append(self.__fy[i])
+                    must = True
+            else:
+                if not must:
+                    newfx.append(self.__fx[i])
+                    newfy.append(self.__fy[i])
+                else:
+                    newfx[-1] += self.__fx[i]
+                    newfy[-1] += self.__fy[i]
+                    must = False
+        self.__fx = newfx
+        self.__fy = newfy
+        self.HaveDone = True
+        self.__xyCSV = pandas.DataFrame((self.__x,self.__y),index=('x','y'))
+        self.__Best_value()
+        return self.__x,self.__y,self.Func_Name,self.View
+
+    def Iterative_method_Of_Huan(self,y_in,start,end,k=100,kx=0.00001):#梯度计算(kx表示精度)
+        try:
+            y_in = float(y_in)
+            start = float(start)
+            end = float(end)
+        except:
+            return '',None
+        try:
+            k = int(k)
+            kx = float(kx)
+        except:
+            k = 100
+            kx = 0.00001
+        a = start
+        b = end
+        o_a = []
+        o_b = []
+        c = 0
+        o_c = None
+        _a = 0
+        _b = 0
+        _c = 0
+        flat = 0#收缩方向1=a往b,2=b往a,0=未知
+        p = 0#增or减
+        q = 0#增减预测1增,0减
+        for i in range(k):
+            #a,b,c确定
+            if a > b: a, b = b, a  # a是小的数字,b是大的数字,c是中间
+            o_a.append(a)#赋值a的回退值
+            o_b.append(b)
+            c = (a + b) / 2
+            _a = self(a)
+            _b = self(b)
+            _c = self(c)
+            #增减预测
+            if abs(_c - y_in)<kx:#数据计算完成
+                break
+            elif _c < y_in:#预测增还是减:_c移动到y_in需要增还是间
+                q = 1#增
+            else:
+                q = 0#减
+            try:#当前是增还是减
+                if o_c == _c:#恰好关于了原点对称
+                    pass#保持不变
+                elif o_c < _c:
+                    p = 1#增
+                else:
+                    p = 0#减
+            except:
+                flat = 1
+                p = q
+            o_c = _c
+            #开始行动
+            if q == p:#实际和预测一样,保持相同执行方案
+                if flat == 1:#a往b方向收缩
+                    a = c
+                else:
+                    b = c
+            else:
+                if flat == 1:#收缩方向相反
+                    a = o_a[-2]
+                    b = c
+                    flat = 0
+                else:
+                    a = c
+                    b = o_b[-2]
+                    flat = 1
+        else:
+            return '', None
+        self.Memore_x.append(c)
+        self.Memore_y.append(y_in)
+        self.__MemoryAnswer.append(f'y={y_in} -> x={c}')
+        print(f'y={y_in} -> x={c}',c)
+        return f'y={y_in} -> x={c}',c
+
+    def Cul_dichotomy(self, y_in, k=100, d=0.0001, ky=0.1, dx=0.5, r_Cul=False,H_Cul=True, deep=1000, cx=0.1, kx=0.1,f_On=False,f=None,all=False):
+        #y_in输入的参数,k最大迭代数,r_Cul允许使用原来的数值,d精度,ky最值允许偏移量,kx新区间偏移量,cx扩张限制,dx两零点的最小范围,deep扩张深度
+        #H_Cul允许扩展计算,f_On开启二级验证,f二级验证效果
+        if f == None:f = d
+        try:#参数处理
+            r_Cul = Bool(r_Cul)
+            H_Cul = Bool(H_Cul,True)
+            f_On = Bool(f_On)
+            k = abs(int(k))
+            d = abs(float(d))
+            ky = abs(float(ky))
+            kx = abs(float(kx))
+            cx = abs(float(cx))
+            dx = abs(float(dx))
+            deep = abs(int(deep))
+            f = abs(float(f))
+        except:
+            r_Cul = False
+            H_Cul = True
+            f_On = False
+            k = 100
+            d = 0.0001
+            ky = 0.1
+            kx = 0.1
+            cx = 0.5
+            dx = 0.5
+            deep = 100
+            f = d
+        if not self.HaveDone: self.Cul()
+        x = self.__x + self.Memore_x
+        y = self.__y + self.Memore_x
+        try:#y_in是否为数字
+            y_in = float(y_in)
+        except:
+            return [], []
+        try:
+            if y_in < self.min_y-ky or y_in > self.max_y+ky: return [],[]  # 返回空值
+            if r_Cul and y_in in y:  # 如果已经计算过
+                num = y.index(y_in)
+                return x[num]
+        except:
+            pass
+        iter_list = [[self.start, self.end]]  # 准备迭代的列表
+        c_list = []
+        c_o_list = []
+        c = 0
+        for ab in iter_list:
+            a = ab[0]
+            b = ab[1]
+            c = None
+            br = False
+            for i in range(k):  # 限定次数的迭代
+                try:
+                    if a > b:a,b=b,a#a是小的数字,b是大的数字,c是中间
+                    if a == b:#如果相等,作废
+                        c=None
+                        break
+                    _a = self(a) - y_in#计算a
+                    _b = self(b) - y_in#计算b
+                    c = (a + b) / 2#计算c
+                    try:
+                        _c = self(c) - y_in#计算c
+                    except:
+                        if deep > 0:  # 尝试向两边扩张,前提是有deep余额(扩张限制)而且新去见大于cx
+                            if abs(a - (c - kx)) > cx:
+                                iter_list.append([a, c - kx])  # 增加区间(新区间不包括c,增加了一个偏移kx)
+                                deep -= 1  # 余额减一
+                            if abs((c + kx) - b) > cx:
+                                iter_list.append([c + kx, b])  # 增加区间
+                                deep -= 1
+                            c = None
+                        break
+                    # print(f'a={a},b={b},c={c},_a={_a},_b={_b}')
+                    q = _a * _c#a,c之间零点
+                    p = _b * _c#b,c之间零点
+                    if _c == 0:#如果c就是零点
+                        if deep > 0:#尝试向两边扩张,前提是有deep余额(扩张限制)而且新去见大于cx
+                            if abs(a - (c-kx)) > cx:
+                                iter_list.append([a, c-kx])#增加区间(新区间不包括c,增加了一个偏移kx)
+                                deep -= 1#余额减一
+                            if abs((c+kx) - b) > cx:
+                                iter_list.append([c+kx, b])#增加区间
+                                deep -= 1
+                        break#这个区间迭代完成,跳出返回c
+                    elif q * p == 0:#a或者b之间有一个是零点
+                        if q == 0:#a是零点
+                            c = a
+                            if deep > 0 and abs((a+kx) - b) > cx:#尝试往b方向扩张
+                                iter_list.append([a+kx, b])
+                                deep -= 1
+                            break
+                        else:
+                            c = b#同上
+                            if deep > 0 and abs(a - (b-kx)) > cx:
+                                iter_list.append([a, b-kx])
+                                deep -= 1
+                            break
+                    elif q * p > 0:#q和p都有或都没用零点
+                        if q > 0 and abs(a - b) < dx:#如果ab足够小反围,则认为a和b之间不存在零点
+                            if H_Cul:
+                                # addNews('进入梯度运算')
+                                c = self.Iterative_method_Of_Huan(y_in, a, b)[1]
+                                if c != None:
+                                    break
+                            c = None
+                            break
+                        iter_list.append([b, c])#其中一个方向继续迭代,另一个方向加入候选
+                        b = c
+                        _b = self(b) - y_in
+                    elif q < 0:#往一个方向收缩,同时另一个方向增加新的区间
+                        if deep > 0 and abs(c - b) > cx:
+                            iter_list.append([c,b])
+                            deep -= 1
+                        b = c
+                        _b = self(b) - y_in
+                    elif p < 0:#同上
+                        if deep > 0 and abs(a - c) > cx:
+                            iter_list.append([a,c])
+                            deep -= 1
+                        a = c
+                        _a = self(a) - y_in
+                    if abs(a - b) < d:#a和b足够小,认为找到零点
+                        c = (a + b) / 2
+                        _c = self(c)
+                        if f_On and abs(y_in - _c) > f:#_c不是目标输出
+                            print("A")
+                            c = None
+                        break
+                except:
+                    break
+            else:#证明没有break
+                br = True
+            if c == None:
+                continue#去除c不存在的选项
+            if not br:
+                c_list.append(c)
+            else:
+                c_o_list.append(c)
+        answer = []
+        for i in c_list:
+            self.Memore_x.append(i)
+            self.Memore_y.append(y_in)
+            answer.append(f'y={y_in} -> x={i}')
+        if all:
+            for i in c_o_list:
+                answer.append(f'(误差)y={y_in} -> x={i}')
+        self.__MemoryAnswer += answer
+        return answer, c_list
+
+    def __Parity(self,ro=False):#启动round处理
+        if not self.HaveDone: self.Cul()#运行Cul计算
+        if len(self.__fx) != 1:
+            m = True#通过self计算y
+        else:
+            m = False
+        y = self.__y.copy()
+        x = self.__x.copy()
+        a = self.start
+        b = self.end
+        a = -min([abs(a),abs(b)])
+        b = -a
+        flat = None#0-偶函数,1-奇函数
+        for i in range(len(x)):
+            _x = x[i]#正项x
+            if _x < a or _x > b:continue#x不在区间内
+            try:
+                if m:
+                    _y = self(_x)
+                else:
+                    _y = y[i]  # 求得x的y
+                if m:
+                    o_y = self(-_x)
+                else:
+                    o_y = y[x.index(-_x)]#求得-x的y
+                if ro:
+                    _y = round(_y,self.JD)
+                    o_y = round(o_y, self.JD)
+                if o_y == _y == 0:
+                    continue
+                elif o_y == _y:
+                    if flat == None:
+                        flat = 0
+                    elif flat == 1:
+                        raise Exception
+                elif o_y == -_y:
+                    if flat == None:
+                        flat = 1
+                    elif flat == 0:
+                        raise Exception
+                else:
+                    raise Exception
+            except:
+                flat = None
+                break
+        return flat,[a,b]
+
+    def __Monotonic(self):
+        if not self.HaveDone: self.Cul()  # 运行Cul计算
+        fy = self.__fy.copy()
+        fx = self.__fx.copy()
+        Increase_interval = []#增区间
+        Minus_interval = []#减区间
+        Interval = []#不增不减
+        for i in range(len(fx)):
+            x = fx[i]
+            y = fx[i]
+            o_x = None
+            o_y = None
+            start_x = None
+            flat = None#当前研究反围:0-增区间,1-减区间,2-不增不减
+            for i in range(len(x)):
+                _x = x[i]#正项x
+                _y = y[i]#正项y
+                if start_x == None:
+                    start_x = _x
+                else:
+                    if o_y > _y:#减区间
+                        if flat == None or flat == 1:#减区间
+                            pass
+                        elif flat == 0:#增区间
+                            Increase_interval.append((start_x,o_x))
+                            start_x = o_x
+                        elif flat == 2:
+                            Interval.append((start_x, o_x))
+                            start_x = o_x
+                        flat = 1
+                    elif o_y < _y:#增区间
+                        if flat == None or flat == 0:  # 增区间
+                            pass
+                        elif flat == 1:  # 减区间
+                            Minus_interval.append((start_x, o_x))
+                            start_x = o_x
+                        elif flat == 2:
+                            Interval.append((start_x, o_x))
+                            start_x = o_x
+                        flat = 0
+                    else:#水平区间
+                        if flat == None or flat == 2:
+                            pass
+                        elif flat == 1:  # 减区间
+                            Minus_interval.append((start_x, o_x))
+                            start_x = o_x
+                        elif flat == 0:  # 增区间
+                            Increase_interval.append((start_x, o_x))
+                            start_x = o_x
+                        flat = 2
+                o_x = _x
+                o_y = _y
+            if flat == 2:
+                Interval.append((start_x, o_x))
+            elif flat == 1:  # 减区间
+                Minus_interval.append((start_x, o_x))
+            elif flat == 0:  # 增区间
+                Increase_interval.append((start_x, o_x))
+        return Increase_interval,Minus_interval,Interval
+
+    def Nature(self,addNews=lambda x:x,all=False,JD=None,must=False):
+        try:
+            if not must:JD = float(JD)
+        except:
+            JD = None
+        answer = []
+        P = self.__Parity()
+        M = self.__Monotonic()
+        ZQ = self.Periodic(addNews,JD)
+        DCZ = self.Symmetry_axis(addNews,JD)
+        DCZX = self.Center_of_symmetry(addNews,JD)
+        if P[0] == 1:
+            answer.append(f'奇函数 区间:[{P[1][0]},{P[1][0]}]')
+        elif P[0] == 0:
+            answer.append(f'偶函数 区间:[{P[1][0]},{P[1][0]}]')
+        for i in M[0]:
+            answer.append(f'增区间:[{i[0]},{i[1]}]')
+        for i in M[1]:
+            answer.append(f'减区间:[{i[0]},{i[1]}]')
+        for i in M[2]:
+            answer.append(f'水平区间:[{i[0]},{i[1]}]')
+        if self.DHS:
+            answer.append(f'导函数:{self.DHS}')
+        if ZQ[0] != None:
+            answer.append(f'最小正周期:{ZQ[0]}')
+        if DCZ[0] != None:
+            answer.append(f'对称轴:x={DCZ[0]}')
+        if DCZX[0] != None:
+            answer.append(f'对称中心:{DCZX[0]}')
+        if all:
+            try:
+                for i in ZQ[1][1:]:
+                    answer.append(f'可能的最小正周期:{i}')
+            except:
+                pass
+            try:
+                for i in DCZ[1][1:]:
+                    answer.append(f'可能的对称轴:{i}')
+            except:
+                pass
+            try:
+                for i in DCZX[1][1:]:
+                    answer.append(f'可能的对称中心:{i}')
+            except:
+                pass
+
+        return answer
+
+    def YC_On_Off(self):#记忆数据显示和隐藏
+        if self.YC:
+            if tkinter.messagebox.askokcancel('提示', f'是否显示{self}的记忆数据?'):
+                # addNews('记忆显示完毕')
+                self.YC = False
+        else:
+            if tkinter.messagebox.askokcancel('提示', f'是否隐藏{self}的记忆数据?'):
+                # addNews('记忆隐藏完毕')
+                self.YC = True
+
+    def Out(self):
+        if not self.HaveDone: self.Cul()
+        if tkinter.messagebox.askokcancel('提示', f'是否确认导出函数:\n{str(self)}'):
+            try:
+                Dic = tkinter.filedialog.asksaveasfilename(title='选择导出位置', filetypes=[("CSV", ".csv")]) + '.csv'
+                if Dic == '.csv':raise Exception
+                self.__xyCSV.to_csv(Dic)
+                return True
+            except:
+                pass
+        return False
+
+    def returnList(self):#导出列表
+        if not self.HaveDone:self.Cul()
+        #最值和极值点设计
+        a = []
+        for i in self.min_x:
+            a.append(f'极值点:{i}>最小值{self.min_y}')
+        for i in self.max_x:
+            a.append(f'极值点:{i}>最大值{self.max_y}')
+        return a + self.__MemoryAnswer +self.__xy
+
+    def Best_value(self):
+        return self.max_x, self.max_y, self.min_x, self.min_y
+
+    def getMemory(self):
+        if self.YC:return [],[]
+        return self.Memore_x,self.Memore_y
+
+    def Clear_Memory(self):
+        self.Memore_x = []
+        self.Memore_y = []
+        self.__MemoryAnswer = []
+
+    def Draw_Cul(self):
+        if not self.HaveDone:self.Cul()
+        return self.__fx,self.__fy,self.Func_Name,self.View
+
+    def Cul_Y(self,x_in):
+        answer = []
+        for i in x_in:
+            try:
+                i = float(i)
+                y = self(i)
+                answer.append(f'x={i} -> y={y}={float(y)}')
+                if i not in self.Memore_x:
+                    self.Memore_x.append(i)
+                    self.Memore_y.append(y)
+            except:#捕捉运算错误
+                continue
+        self.__Best_value()
+        self.__xyCSV = pandas.DataFrame((self.__x+self.Memore_x, self.__y+self.Memore_y), index=('x', 'y'))
+        self.__MemoryAnswer += answer
+        return answer
+
+    def Periodic(self,addNews=lambda x:x,JD=None):#计算周期
+        if not tkinter.messagebox.askokcancel('提示', f'计算周期需要一定时间,是否执行?(计算过程程序可能无响应)'):
+            return None,[]#无结果
+        if not self.HaveDone: self.Cul()
+        p = []#可能的周期
+        start = self.start
+        end = self.end
+        if JD != None:
+            k = JD
+        else:
+            k = abs(start - end) / 20
+        addNews('正在预测可能的周期')
+        print(start,end,k)
+        while start <= end:
+            try:
+                y = self(start)
+                x_list = self.Cul_dichotomy(y)[1]
+                addNews('迭代运算...')
+                # print(x_list)
+                q = []
+                for o_x in x_list:
+                    a = round(abs(o_x - start),self.JD)
+                    if a == 0:
+                        start += k
+                        continue
+                    if a:q.append(round(a,self.JD))
+                p.extend(list(set(q)))
+            except:
+                pass
+            start += k
+            print(start)
+        p_c = list(set(p))
+        a = []#a的可能列表
+        c = 0
+        addNews('正在筛选结果')
+        for i in p_c:
+            n_c = p.count(i)
+            if n_c > c:
+                a = [i]
+                c = n_c
+            elif n_c == c:
+                a.append(i)
+        try:
+            a.sort()#
+            addNews('计算完毕')
+            return a[0],a
+        except:
+            addNews('无周期')
+            return None,[]#无结果
+
+    def Symmetry_axis(self,addNews=lambda x:x,JD=None):#计算对称轴
+        if not tkinter.messagebox.askokcancel('提示', f'计算对称轴需要一定时间,是否执行?(计算过程程序可能无响应)'):
+            return None,[]#无结果
+        if not self.HaveDone: self.Cul()
+        p = []#可能的对称轴
+        start = self.start
+        end = self.end
+        if JD != None:
+            k = JD
+        else:
+            k = abs(start - end) / 20
+        addNews('正在预测对称轴')
+        while start <= end:
+            try:
+                y = self(start)
+                x_list = self.Cul_dichotomy(y)[1]
+                addNews('迭代运算...')
+                # print(x_list)
+                q = []
+                for o_x in x_list:
+                    a = (o_x + start)/2
+                    if a:q.append(round(a,self.JD))
+                p.extend(list(set(q)))
+            except:
+                pass
+            start += k
+        p_c = list(set(p))
+        a = []#a的可能列表
+        c = 0
+        addNews('正在筛选结果')
+        for i in p_c:
+            n_c = p.count(i)
+            if n_c > c:
+                a = [i]
+                c = n_c
+            elif n_c == c:
+                a.append(i)
+        try:
+            a.sort()  #
+            addNews('计算完毕')
+            return a[0], a
+        except:
+            addNews('无对称轴')
+            return None, []  # 无结果
+
+    def Center_of_symmetry(self,addNews=lambda x:x,JD=None):  # 计算对称中心
+        if not tkinter.messagebox.askokcancel('提示', f'计算对称中心需要一定时间,是否执行?(计算过程程序可能无响应)'):
+            return None, []  # 无结果
+        if not self.HaveDone: self.Cul()
+        point = []  # 可能的对称轴
+        start = self.start
+        end = self.end
+        addNews('正在计算坐标点')
+        if JD != None:
+            k = JD
+        else:
+            k = 1
+        while start <= end:
+            try:
+                y = self(start)
+                x = start
+                point.append((x,y))
+            except:
+                pass
+            start += k
+        p = []
+
+        addNews('正在预测对称中心')
+        for i in point:
+            for o in point:
+                x = round((i[0] + o[0])/2,self.JD)
+                y = round((i[1] + o[1]) / 2, self.JD)
+                if i == o:continue
+                # print(f'i={i},o={o},x={x},y={y}')
+                p.append((x,y))
+        p_c = list(set(p))
+        a = []  # a的可能列表
+        c = 0
+        addNews('正在筛选结果')
+        for i in p_c:
+            n_c = p.count(i)
+            if n_c > c:
+                a = [i]
+                c = n_c
+            elif n_c == c:
+                a.append(i)
+        try:
+            if c < 5:raise Exception
+            addNews('计算完毕')
+            a.sort()  #
+            return a[int(len(a)/2)], a
+        except:
+            addNews('无对称中心')
+            return None, []  # 无结果
+
+    def Check_Monotonic(self,cs,addNews=lambda x:x,JD = None):#检查单调性
+        test = True#预测结果
+        try:
+            cd = cs.split(',')
+            start = float(cd[0])
+            end = float(cd[1])
+            flat = float(cd[2]) # 当前研究反围:0-增区间,1-减区间,2-不增不减
+        except:
+            return False,''
+        if start > end:
+            start,end = end,start
+        o_y = None
+        if JD != None:
+            k = JD
+        else:
+            k = self.kd
+        while start<= end:
+            try:
+                addNews('迭代运算...')
+                y = round(self(start),self.JD)
+            except:
+                start += k
+                continue
+            start += k
+            if o_y == None:continue
+            if flat == 0 and o_y > y:#增区间,o_y不小于y
+                test = False
+                break
+            elif flat == 1 and o_y < y:#减小区间,o_y不小于y
+                test = False
+                break
+            elif flat == 2 and o_y != y:
+                test = False
+                break
+            o_y = y
+        #Start+=k在上面
+
+        key = {0:'单调递增',1:'单调递减',2:'平行'}
+        keys = {True: '成立', False: '不成立'}
+        return test,f'{self}在[{cd[0]},{cd[1]}]{key[flat]}{keys[test]}'
+
+    def Check_Periodic(self,cs,addNews=lambda x:x,JD = None):#检查周期性
+        test = True
+        try:
+            cs = float(cs)
+        except:
+            return False,''
+        start = self.start
+        end = self.end
+        if JD != None:
+            k = JD
+        else:
+            k = self.kd
+        while start <= end:
+            try:
+                addNews('迭代运算...')
+                y = round(self(start),self.JD)
+                o_y = round(self(start + cs),self.JD)
+                if y != o_y:
+                    test = False
+            except:
+                pass
+            start += k
+        key = {True:'是',False:'不是'}
+        return test,f'{self}的周期{key[test]}{cs}'
+
+    def Check_Symmetry_axis(self,cs,addNews=lambda x:x,JD=None):#检查对称轴
+        test = True
+        try:
+            cs = 2 * float(cs)
+        except:
+            return False,''
+        start = self.start
+        end = self.end
+        if JD != None:
+            k = JD
+        else:
+            k = self.kd
+        while start <= end:
+            try:
+                addNews('迭代运算...')
+                y = round(self(start),self.JD)
+                o_y = round(self(cs-start),self.JD)#(a+b)/2=c >>> b = 2c-a
+                if y != o_y:
+                    test = False
+            except:
+                pass
+            start += k
+        key = {True:'是',False:'不是'}
+        return test,f'{self}的对称轴{key[test]}{cs}'
+
+    def Check_Center_of_symmetry(self,in_cs,addNews=lambda x:x,JD=None):#检查对称中心
+        test = True
+        try:
+            cs = []
+            for i in in_cs.split(','):
+                cs.append(float(i))
+        except:
+            return False,''
+        start = self.start
+        end = self.end
+        if JD != None:
+            k = JD
+        else:
+            k = self.kd
+        while start <= end:
+            try:
+                addNews('迭代运算...')
+                y = round(self(start),self.JD)
+                o_y = round(self(2*cs[0]-start),self.JD)#(a+b)/2=c >>> b = 2c-a
+                if round((y+o_y)/2,self.JD) != cs[1]:
+                    test = False
+            except:
+                pass
+            start += k
+        key = {True:'是',False:'不是'}
+        return test,f'{self}的对称中心{key[test]}{cs}'
+
+    def Sympy_Cul(self,y_in):#利用Sympy解方程
+        try:
+            f = self.HS - float(y_in)
+            x_list = sympy.solve(f,self.x)
+            answer = []
+            for x in x_list:
+                self.Memore_x.append(x)#可能需要修复成float(x)
+                self.Memore_y.append(y_in)
+                answer.append(f'y={y_in} -> x={x}')
+            return answer,x_list
+        except:
+            return [],[]
+
+    def Sympy_DHS(self,x_in,dx=0.1,must=False):#可导函数求导,不可导函数逼近
+        DHS = self.DHS
+        try:
+            dx = abs(float(dx))
+        except:
+            dx = 0.1
+        try:
+            x_in = float(x_in)
+            if DHS != None and not must:#导函数法
+                get = DHS.evalf(subs ={self.x:x_in})
+                a = '导函数求值'
+            else:
+                x1 = x_in - dx/2
+                x2 = x_in + dx/2
+                y1 = self(x1)
+                y2 = self(x2)
+                dy = y2 - y1
+                get = dy/dx
+                a = '逼近法求值'
+        except:
+            return None,None
+        answer = f'({a})x:{x_in} -> {get}'
+        return answer, get
+
+def Find(x,y,in_y):#输入x和y照除In_Y的所有对应x值
+    m = []
+    while True:
+        try:
+            num = y.index(in_y)
+            m.append(x[num])
+            del x[num]
+            del y[num]
+        except ValueError:
+            break
+    return m
+
+class HS_lambda_Son:
+    def __init__(self,HS,name,view,start = -10,end = 10,kd = 0.1,JD = 2,a=1):
+        self.x = sympy.Symbol('x')
+        Name = {'a':a,'x': self.x, 'Pi': sympy.pi, 'e': sympy.E, 'log': sympy.log,
+                'sin': sympy.sin, 'cos': sympy.cos, 'tan': sympy.tan,
+                'cot': lambda x: 1 / sympy.tan(x), 'csc': lambda x: 1 / sympy.sin(x),
+                'sec': lambda x: 1 / sympy.cos(x), 'sinh': sympy.sinh, 'cosh': sympy.cosh,
+                'tanh': sympy.tanh, 'asin': sympy.asin, 'acos': sympy.acos,
+                'atan': sympy.atan,'abs':abs}  # 这个是函数命名域
+        self.HS = eval(HS.replace(' ', ''), Name)#函数解析式
+        self.str_HS = HS.replace(' ', '')
+        #函数基本信息
+        self.Func_Name = f'y={HS} a={a}'#这个是函数名字
+        self.View = view#绘制样式
+        #数据辨析
+        try:
+            start = float(start)
+            end = float(end)
+            if start > end:#使用float确保输入是数字,否则诱发ValueError
+                start, end = end, start
+            kd = abs(float(kd))
+            start = (start//kd)*kd#确保start可以恰好被kd整除
+            end = (end//kd+1)*kd
+            JD = abs(int(JD))
+            if JD >= 3:JD = 3
+        except ValueError:
+            start,end,kd,JD = -10,10,0.1,2#保底设置
+        #基本数据存储
+        self.JD = JD
+        self.start = start
+        self.end = end
+        self.kd = kd
+
+        #x和y数据存储
+        self.__x = []
+        self.__y = []
+        self.__ya = []
+        self.__fx = [[]]
+        self.__fy = [[]]
+
+        #最值和极值点
+        self.HaveDone = False#是否已经计算过xy
+
+        #函数求导
+        try:
+            self.DHS = sympy.diff(self.HS, self.x)
+        except:
+            self.DHS = None
+
+    def __call__(self,x):
+        return self.HS.evalf(subs={self.x:x})
+
+    def __str__(self):
+        return f'{self.Func_Name} {self.start,self.end,self.kd}'
+
+    def Creat_Son(self,a_start = -10,a_end = 10,a_kd = 0.1):
+        self.Son_List = []
+        while a_start <= a_end:
+            self.Son_List.append(HS_lambda_Son())
+
+    def Cul(self,it=float):
+        if self.HaveDone:
+            return self.__x, self.__y, self.Func_Name, self.View
+        # 混合存储
+        self.__y = []
+        self.__ya = []
+        self.__x = []
+        self.__xy = []
+        self.__fx = [[]]
+        self.__fy = [[]]
+        reason = [30]
+        o_y = None
+        p = None  # 单调性 0-增,1-减
+        _p = 1
+        try:
+            a = int(self.start)
+            while a <= int(self.end):  # 因为range不接受小数
+                p2 = 1
+                try:
+                    c = 0
+                    a_x = round(a, self.JD)
+                    y = self(a_x)
+                    y = it(y)  # 数字处理方案
+                    a_y = round(y, self.JD)
+                    if o_y != None and o_y > y:
+                        _p = 1
+                    elif o_y != None and o_y < y:
+                        _p = 0
+                    elif o_y != None and o_y == y:
+                        try:
+                            z_x = round(a_x - 0.5 * self.kd)
+                            z_y = self(z_x)
+                            if z_y == o_y == y:  # 真实平衡
+                                p2 = 2
+                            elif abs(z_y - o_y) >= 10 * self.kd or abs(z_y - y) >= 10 * self.kd:
+                                p2 = 3
+                                c += 5
+                        except:
+                            p2 = 4
+                            c += 9
+                        _p = 2
+                    if o_y != None and p != _p:
+                        if (o_y * y) < 0:
+                            c += 5
+                        elif abs(o_y - y) >= (10 * self.kd):
+                            c += 5
+                        if c >= 5 and (_p != 2 or p2 != 2):
+                            reason.append(c)
+                            self.__fx.append([])
+                            self.__fy.append([])
+                    p = _p
+                    self.__x.append(a_x)  # 四舍五入减少计算量
+                    self.__y.append(y)  # 不四舍五入
+                    self.__ya.append(a_y)  # 四舍五入(用于求解最值)
+                    self.__xy.append(f'x:{a_x},y:{a_y}')
+                    self.__fx[-1].append(a_x)
+                    self.__fy[-1].append(y)
+                    o_y = y
+                except:
+                    reason.append(0)
+                    self.__fx.append([])
+                    self.__fy.append([])
+                a += self.kd
+        except (TypeError, IndexError, ValueError):
+            pass
+        newfx = []
+        newfy = []
+        must = False
+        for i in range(len(self.__fx)):  # 去除只有单个的组群
+            if len(self.__fx[i]) <= 1:  # 检测到有单个群组
+                q_r = reason[i]  # 前原因
+                b_r = reason[i]  # 后原因
+                if q_r < b_r:  # 前原因小于后原因,连接到前面
+                    try:
+                        newfx[-1] += self.__fx[i]
+                        newfy[-1] += self.__fy[i]
+                    except:  # 按道理不应该出现这个情况
+                        newfx.append(self.__fx[i])
+                        newfy.append(self.__fy[i])
+                else:
+                    newfx.append(self.__fx[i])
+                    newfy.append(self.__fy[i])
+                    must = True
+            else:
+                if not must:
+                    newfx.append(self.__fx[i])
+                    newfy.append(self.__fy[i])
+                else:
+                    newfx[-1] += self.__fx[i]
+                    newfy[-1] += self.__fy[i]
+                    must = False
+        self.__fx = newfx
+        self.__fy = newfy
+        self.HaveDone = True
+        return self.__x, self.__y, self.Func_Name, self.View
+    def Draw_Cul(self):
+        if not self.HaveDone:self.Cul()
+        return self.__fx,self.__fy,self.Func_Name,self.View

+ 3 - 0
HSCH/__init__.py

@@ -0,0 +1,3 @@
+from HSCH.Func_Matlib import Func_Control as Func_Control
+from HSCH.Func_advanced import Advanced_Control as Advanced_Control
+print('HSCH加载完毕...')

+ 119 - 0
Hello.py

@@ -0,0 +1,119 @@
+print('启动')
+from time import time
+print('开始加载')
+start = time()
+import tkinter
+print(f'图形加载完毕...')
+import tkinter.font as tkFont
+print(f'字体加载完毕...')
+from PIL import ImageTk, Image
+print(f'图片加载完毕...')
+import CGB,HSCH,DSGC
+from New_TK import DragWindow
+from multiprocessing import Process
+print(f'加载完毕...{round(time() - start,3)}s')
+
+def Draw():
+    global top,HTB
+    HTB = Process(target=CGB.Draw)
+    HTB.start()
+    # top.destroy()
+    # CGB.Draw()
+    # Main()
+
+def Hsch():
+    global top,CH
+    CH = Process(target=HSCH.Func_Control)
+    CH.start()
+    # top.destroy()
+    # HSCH.Func_Control()
+    # Main()
+
+def HSGC():
+    global top,HsGC
+    HsGC = Process(target=HSCH.Advanced_Control)
+    HsGC.start()
+    # top.destroy()
+    # HSCH.Advanced_Control()
+    # Main()
+
+def Dsgc():
+    global top,DsGC
+    DsGC = Process(target=DSGC.Alg)
+    DsGC.start()
+    # top.destroy()
+    # DSGC.Alg()
+    # Main()
+
+def Main():
+    global top
+    # top = tkinter.Tk()  # 设置屏幕
+    top = DragWindow(alpha=0.97,width=1200,height=800)
+    ft = tkFont.Font(family='Comic Sans MS', size=20, weight=tkFont.BOLD)
+    ft1 = tkFont.Font(family='Comic Sans MS', size=16, weight=tkFont.BOLD)
+    ft2 = tkFont.Font(family='Comic Sans MS', size=10)
+    ft3 = tkFont.Font(family='Comic Sans MS', size=50, weight=tkFont.BOLD)
+    top.title('')
+    top.resizable(width=False, height=False)
+    top.geometry(f'1200x800+30+30')
+
+    #渲染白色
+    F1 = tkinter.Frame(top, width=1200, height=800, bg='#FFFFFF')
+    F1.pack()
+
+    #图片
+    canvas = tkinter.Canvas(F1,bd=0, width=1000, height=800,highlightthickness=0)
+    photo = ImageTk.PhotoImage(Image.open('Pic/Night2.jpg'))
+    canvas.create_image(500, 400, image=photo)
+    canvas.grid(column=1, row=0,sticky=tkinter.S + tkinter.N,rowspan =20)
+    abg = '#F0FFFF'
+    bg = '#FFFFFF'
+    bc = 'tcross'
+    #标题
+    tkinter.Label(F1, text='CoTan~NOTE', width=20,bg='#FFFFFF', font=ft).grid(column=0, row=0,sticky=tkinter.N)  # 设置说明
+    tkinter.Label(F1, text='私人笔记',bg=abg,font=ft1).grid(column=0, row=1,sticky=tkinter.W + tkinter.E)
+    tkinter.Button(F1,text='Markdown笔记',cursor=bc,height=2,font=ft2,bg=bg,activebackground=abg,bd=0,justify=tkinter.LEFT).grid(column =0,row = 2,sticky=tkinter.N + tkinter.E + tkinter.W)
+    tkinter.Button(F1, text='画图板',cursor=bc,command=Draw, height=2, font=ft2, bg=bg,activebackground=abg, bd=0, justify=tkinter.LEFT).grid(column=0, row=3,sticky=tkinter.N + tkinter.E + tkinter.W)
+    tkinter.Button(F1, text='爬虫系统',cursor=bc, height=1, font=ft2, bg=bg,activebackground=abg, bd=0, justify=tkinter.LEFT).grid(column=0, row=4,sticky=tkinter.N + tkinter.E + tkinter.W)
+    tkinter.Button(F1, text='我的寄忆',cursor=bc, height=1, font=ft2, bg=bg,activebackground=abg, bd=0, justify=tkinter.LEFT).grid(column=0, row=5,sticky=tkinter.N + tkinter.E + tkinter.W)
+
+    abg = '#FFFAFA'
+    tkinter.Label(F1, text='数学系统', bg=abg, font=ft1).grid(column=0, row=6,sticky=tkinter.W + tkinter.E)
+    tkinter.Button(F1,text='函数测绘',cursor=bc,command=Hsch,height=2,font=ft2,bg=bg,activebackground=abg,bd=0,justify=tkinter.LEFT).grid(column =0,row = 7,sticky=tkinter.N + tkinter.E + tkinter.W)
+    tkinter.Button(F1, text='函数工厂',cursor=bc,command=HSGC, height=2, font=ft2, bg=bg,activebackground=abg, bd=0, justify=tkinter.LEFT).grid(column=0, row=8,sticky=tkinter.N + tkinter.E + tkinter.W)
+    tkinter.Button(F1, text='代数工厂',cursor=bc,command=Dsgc, height=2, font=ft2, bg=bg,activebackground=abg, bd=0, justify=tkinter.LEFT).grid(column=0, row=9,sticky=tkinter.N + tkinter.E + tkinter.W)
+    tkinter.Button(F1, text='机器学习',cursor=bc, height=1, font=ft2, bg=bg,activebackground=abg, bd=0, justify=tkinter.LEFT).grid(column=0, row=10,sticky=tkinter.N + tkinter.E + tkinter.W)
+    tkinter.Button(F1, text='几何分析',cursor=bc, height=1, font=ft2, bg=bg,activebackground=abg, bd=0, justify=tkinter.LEFT).grid(column=0, row=11,sticky=tkinter.N + tkinter.E + tkinter.W)
+
+    abg='#F5FFFA'
+    tkinter.Label(F1, text='物化系统', bg=abg, font=ft1).grid(column=0, row=12, sticky=tkinter.W + tkinter.E)
+    tkinter.Button(F1, text='平面物体分析',cursor=bc, height=2, font=ft2, bg=bg,activebackground=abg, bd=0, justify=tkinter.LEFT).grid(column=0, row=13,
+                                                                                                       sticky=tkinter.N + tkinter.E + tkinter.W)
+    tkinter.Button(F1, text='平面受力分析',cursor=bc, height=2, font=ft2, bg=bg,activebackground=abg, bd=0, justify=tkinter.LEFT).grid(column=0, row=14,
+                                                                                                       sticky=tkinter.N + tkinter.E + tkinter.W)
+    tkinter.Button(F1, text='实验数据拟合',cursor=bc, height=1, font=ft2, bg=bg,activebackground=abg, bd=0, justify=tkinter.LEFT).grid(column=0,
+                                                                                                           row=15,
+                                                                                                           sticky=tkinter.N + tkinter.E + tkinter.W)
+    tkinter.Button(F1, text='化学反应预测',cursor=bc, height=1, font=ft2, bg=bg,activebackground=abg, bd=0, justify=tkinter.LEFT).grid(column=0,
+                                                                                                       row=16,
+                                                                                                       sticky=tkinter.N + tkinter.E + tkinter.W)
+    abg = '#F8F8FF'
+    tkinter.Label(F1, text='其他工具', bg=abg, font=ft1).grid(column=0, row=17, sticky=tkinter.W + tkinter.E)
+    tkinter.Button(F1, text='系统扩展',cursor=bc, height=1, font=ft2, bg=bg,activebackground=abg, bd=0, justify=tkinter.LEFT).grid(column=0, row=18,
+                                                                                                       sticky=tkinter.N + tkinter.E + tkinter.W)
+    tkinter.Button(F1, text='Tensorflew深度学习',cursor=bc, height=1, font=ft2, bg=bg,activebackground=abg, bd=0, justify=tkinter.LEFT).grid(column=0, row=19,
+                                                                                                       sticky=tkinter.N + tkinter.E + tkinter.W)
+    tkinter.Label(F1, text='', bg='#FFFFFF', font=ft1,height=5).grid(column=0, row=20, sticky=tkinter.W + tkinter.E)
+    canvas.create_text(500,750,text='CoTan~别来无恙',font=ft3,fill='#FFFFE0')
+    top.mainloop()
+
+if __name__ == "__main__":
+    HTB = Process(target=CGB.Draw)
+    CH = Process(target=HSCH.Func_Control)
+    HsGC = Process(target=HSCH.Advanced_Control)
+    DsGC = Process(target=DSGC.Alg)
+    Main()
+    # HTB.join()
+    # CH.join()
+    # HsGC.join()
+    # DsGC.join()

+ 1806 - 0
ImageMagick/ChangeLog.txt

@@ -0,0 +1,1806 @@
+2020-01-18  7.0.9-17 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.9-17, GIT revision 16753:c300b3a:20200118
+
+2020-01-12  7.0.9-17 Cristy  <quetzlzacatenango@image...>
+  * Allow larger negative interline spacing (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=37391).
+  * Conditional compile for huge xml pages for RSVG delegate library.
+  * Put "width" property in the PNG namespace (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1833).
+  * -combine -colorspace sRGB no longer returns grayscale output (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1835).
+  * Support Jzazbz colorspace (contributed by snibgo @
+    http://im.snibgo.com/jzazbz.htm).
+
+2020-01-12  7.0.9-16 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.9-16, GIT revision 16719:fefd765:20200112.
+
+2020-01-12  7.0.9-16 Cristy  <quetzlzacatenango@image...>
+  * Fixed three failing Magick.NET unit tests.
+
+2020-01-11  7.0.9-15 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.9-15, GIT revision 16709:0000f6d:20200111.
+
+2020-01-11  7.0.9-15 Dirk Lemstra <dirk@lem.....org>
+  * Also support svg:xml-parse-huge when using librsvg.
+
+2020-01-10  7.0.9-15 Cristy  <quetzlzacatenango@image...>
+  * Optimize -evaluate-sequence option (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1824).
+  * Support Fx do() iterator.
+  * `magick -size 100x100 xc:black black.pnm` no longer creates a white image
+    (reference https://github.com/ImageMagick/ImageMagick/issues/1817).
+  * setjmp/longjmp in jpeg.c no longer trigger undefind behavior (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=37379).
+  * Permit compositing in the CMYK colorspace (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=37368).
+
+2020-01-04  7.0.9-14 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.9-14, GIT revision 16654:89ef7ea:20200104.
+
+2020-01-01  7.0.9-14 Cristy  <quetzlzacatenango@image...>
+  * Support extended Fx assignment operators (e.g. *=, /=, ++, --, etc.)
+  * Support Fx for() iterator.
+  * Optimize Fx performance.
+  * Ensure circle.rb renders the same for IMv6 and IMv7 (reference
+    https://github.com/rmagick/rmagick/issues/905).
+
+2019-12-30  7.0.9-13 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.9-13, GIT revision 16616:dbafe0b:20191230.
+
+2019-12-27  7.0.9-13 Cristy  <quetzlzacatenango@image...>
+  * xc:white no longer creates a black PNM image (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1817).
+  * Sync pixel cache for -kmeans option.
+  * Thread -kmeans option.
+  * PSD: only set the alpha channel when type is not 0.
+  * Fix Lab to custom profile (CMYK or RGB) conversion bug (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=37318).
+
+2019-12-26  7.0.9-12 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.9-12, GIT revision 16587:7d6a559:20191226.
+
+2019-12-26  7.0.9-12 Cristy  <quetzlzacatenango@image...>
+  * Fix Build failure with MinGW-w64 (reference
+    https://github.com/ImageMagick/ImageMagick6/issues/67).
+  * Inject image profile properties immediately after the image is read.
+
+2019-12-23  7.0.9-11 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.9-11, GIT revision 16568:1d6c960:20191224.
+
+2019-12-18  7.0.9-11 Cristy  <quetzlzacatenango@image...>
+  * Replace pseudo-random number generator with a Xoshiro generator.
+  * The -layers optimize option requires a fully transparent previous image.
+
+2019-12-22  7.0.9-10 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.9-10, GIT revision 16548:281649843:20191222.
+
+2019-12-18  7.0.9-10 Cristy  <quetzlzacatenango@image...>
+  * Some clang releases do not support _aligned_alloc().
+  * Support -kmeans command-line option.
+
+2019-12-07  7.0.9-9 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.9-9, GIT revision 16513:8ec82f4:20191215.
+
+2019-12-07  7.0.9-9 Cristy  <quetzlzacatenango@image...>
+  * Build file clean-up (reference
+    https://github.com/ImageMagick/ImageMagick/pull/1798).
+  * Improve semaphore handling @
+    https://github.com/ImageMagick/ImageMagick/pull/1798).
+  * Introduce HeapOverflowSanityCheckGetExtent() method (reference
+    https://github.com/ImageMagick/ImageMagick/pull/1798).
+
+2019-12-01  7.0.9-8 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.9-8, GIT revision 16474:0bc0e95:20191207.
+
+2019-12-01  7.0.9-8 Cristy  <quetzlzacatenango@image...>
+  * -type bilevel behavior restored, it creates a black and white image.
+
+2019-11-30  7.0.9-7 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.9-7, GIT revision 16449:971ba06:20191130.
+
+2019-11-26  7.0.9-7 Cristy  <quetzlzacatenango@image...>
+  * Support Pocketmod image format, e.g.
+    convert -density 300 pages?.pdf pocketmod:organize.pdf
+  * Fixed numerous issues  posted to GitHub (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+  * Update documentation.
+
+2019-11-26  7.0.9-6 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.9-6, GIT revision 16407:1725ec3:20191126.
+
+2019-11-19  7.0.9-6 Cristy  <quetzlzacatenango@image...>
+  * Increase the maximum number of bezier coordinates (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1784).
+  * Santize "'" from SHOW and WIN delegates under Linux, '"\' for Windows
+    (thanks to Enzo Puig).
+  * Correct for TGA orientation (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=34757).
+  * The result for -compose Copy -extent on a  MYK image is CMYK (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=37118).
+  * Fix potential buffer overflow when reading a fax image (alert from
+    Justin).
+  * Support dng:use-camera-wb option.
+
+2019-11-17  7.0.9-5 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.9-5, GIT revision 16369:747618e:20191117.
+
+2019-11-16  7.0.9-5 Cristy  <quetzlzacatenango@image...>
+  * Ensure Ascii85 compression is thread safe.
+  * Fixed numerous issues  posted to GitHub (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2019-11-13  7.0.9-4 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.9-4, GIT revision 16354:5f53562:20191114.
+
+2019-11-10  7.0.9-4 Cristy  <quetzlzacatenango@image...>
+  * Add exception parameter to CMS transform methods.
+  * Output exception there is an attempt to perform an operation not allowed by
+    the security policy
+  * Fixed numerous issues  posted to GitHub (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2019-10-30  7.0.9-2 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.9-2, GIT revision 16325:6f84d89:20191030.
+
+2019-10-29  7.0.9-2 Cristy  <quetzlzacatenango@image...>
+  * JPEG and JPG are aliases in coder security policy.
+  * Fixed numerous issues  posted to GitHub (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2019-10-27  7.0.9-1 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.9-1, GIT revision 16313:e068be3:20191027.
+
+2019-10-27  7.0.9-1 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous issues  posted to GitHub (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2019-10-23  7.0.9-0 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.9-0, GIT revision 16297:8744fd9:20191024
+
+2019-10-06  7.0.9-0 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous issues  posted to GitHub (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+  * Support trim:background-color define for -trim option.
+
+2019-10-05  7.0.8-68 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-68, GIT revision 16184:b75b0e5:20191005.
+
+2019-09-30  7.0.8-68 Cristy  <quetzlzacatenango@image...>
+  * Support animated WebP encoding/decoding (reference
+    https://github.com/ImageMagick/ImageMagick/pull/1708).
+  * Text stroke cut off (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=36829).
+  * Adds support for lossless JPEG1 recompression (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=36828).
+
+2019-09-29  7.0.8-67 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-67, GIT revision 16145:6f2feb9:20190929.
+
+2019-09-28  7.0.8-67 Cristy  <quetzlzacatenango@image...>
+  * line endings renedered as empty boxes (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1704).
+
+2019-09-21  7.0.8-66 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-66, GIT revision 16134:f6ce80a:20190921.
+
+2019-09-09  7.0.8-66 Cristy  <quetzlzacatenango@image...>
+  * Support compound statements in FX while() (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1701).
+
+2019-09-15  7.0.8-65 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-65, GIT revision 16130:254db34:20190915.
+
+2019-09-09  7.0.8-65 Cristy  <quetzlzacatenango@image...>
+  * Eliminate fault when trace delegate is not available.
+  * Properly distinquish linear and non-linear gray colorspaces (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1680).
+
+2019-09-07  7.0.8-64 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-64, GIT revision 16108:2ad3cbc:20190907.
+
+2019-09-02  7.0.8-64 Cristy  <quetzlzacatenango@image...>
+  * Support XPM symbolic (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1684).
+  * DilateIntensity is channel independent (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36641).
+
+2019-08-31  7.0.8-63 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-63, GIT revision 16088:3b7a33d:20190831.
+
+2019-08-24  7.0.8-63 Cristy  <quetzlzacatenango@image...>
+  * Properly identify the DNG and AI image format (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36581).
+
+2019-08-23  7.0.8-62 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-62, GIT revision 16061:7525595:20190823.
+
+2019-08-23  7.0.8-62 Dirk Lemstra <dirk@lem.....org>
+  * Added option to limit the maximum point size with -define
+    caption:max-pointsize=pointsize.
+  * Corrected JP2 numresolution calculation (reference:
+    https://github.com/ImageMagick/ImageMagick/issues/1673)
+
+2019-08-19  7.0.8-62 Cristy  <quetzlzacatenango@image...>
+  * Conditionally compile call to AcquireCLocale() (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1669).
+  * More robust support for converting bitmap to vector.
+
+2019-08-16  7.0.8-61 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-61, GIT revision 16033:0c5808c:20190816.
+
+2019-08-03  7.0.8-61 Cristy  <quetzlzacatenango@image...>
+  * Issue with -background and -swirl (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36512).
+
+2019-08-10  7.0.8-60 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-60, GIT revision 16020:52ff205:20190810.
+
+2019-08-07  7.0.8-60 Cristy  <quetzlzacatenango@image...>
+  * Enable reading EXR image file from stdin.
+
+2019-08-04  7.0.8-59 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-59, GIT revision 15986:c3de0e7:20190804.
+
+2019-08-01  7.0.8-59 Cristy  <quetzlzacatenango@image...>
+  * Module is a reserved keyword for C++ 20 (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1650).
+
+2019-07-29  7.0.8-58 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-58, GIT revision 15962:cf00632:20190729.
+
+2019-07-27  7.0.8-58 Cristy  <quetzlzacatenango@image...>
+  * Improve GetNextToken() performance.
+
+2019-07-26  7.0.8-57 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-57, GIT revision 15948:8fba4a3:20190726.
+
+2019-07-22  7.0.8-57 Cristy  <quetzlzacatenango@image...>
+  * Heap-buffer-overflow in Postscript coder (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1644).
+  * The -alpha shape option nondeteministic under OpenMP (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36396).
+  * Correction to the ModulusAdd and ModulusSubtract composite op (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=36413).
+
+2019-07-20  7.0.8-56 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-56, GIT revision 15936:2ac4147:20190720.
+
+2019-07-20  7.0.8-56 Cristy  <quetzlzacatenango@image...>
+  * Unexpected -alpha shape results (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36396).
+  * Converting from PDF to PBM inverts the image (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1643).
+
+2019-07-18  7.0.8-55 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-55, GIT revision 15930:ac09240:20190718.
+
+2019-07-18  7.0.8-55 Cristy  <quetzlzacatenango@image...>
+  * Heap-buffer overflow (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1641
+  * PerlMagick test suite passes again (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1640) 
+
+2019-07-16  7.0.8-54 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-54, GIT revision 15916:e868e22:20190716.
+
+2019-07-08  7.0.8-54 Cristy  <quetzlzacatenango@image...>
+  * resolve division by zero  (reference
+     https://github.com/ImageMagick/ImageMagick/issues/1629).
+  * introducing MagickLevelImageColors() MagickWand method.
+  * Transient problem with text placement with gravity (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1633).
+  * Support TIM2 image format (reference
+    https://github.com/ImageMagick/ImageMagick/pull/1571).
+  * For -magnify option, specify an alternative scaling method with -define
+    magnify:method=method, choose from these methods: eagle2X, eagle3X,
+    eagle3XB, epb2X, fish2X, hq2X,  scale2X (default), scale3X, xbr2X.
+
+2019-07-05  7.0.8-53 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-53, GIT revision 15828:f5d59c0:20190705.
+
+2019-07-05  7.0.8-53 Cristy  <quetzlzacatenango@image...>
+   * Fix -fx parsing issue (reference
+     https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36314).
+
+2019-07-05  7.0.8-52 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-52, GIT revision 15825:ea47310:20190705.
+
+2019-07-01  7.0.8-52 Cristy  <quetzlzacatenango@image...>
+  * Eliminate buffer overflow in TranslateEvent() (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1621).
+
+2019-06-30  7.0.8-51 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-51, GIT revision 15812:51f11c4:20190630.
+
+2019-06-24  7.0.8-51 Cristy  <quetzlzacatenango@image...>
+  * Clone rather than copy X window name/icon.
+  * Optimize PDF reader.
+
+2019-06-23  7.0.8-50 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-50, GIT revision 15778:4a60519:20190623
+
+2019-06-14  7.0.8-50 Dirk Lemstra <dirk@lem.....org>
+  * Added support for reading all images from a HEIC image (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1391).
+  * Heap-buffer-overflow in MagickCore/fourier.c (reference
+   https://github.com/ImageMagick/ImageMagick/issues/1588).
+  * Fixed a number of issues (reference
+    https://imagemagick.org/discourse-server/viewforum.php?f=3).
+  * Fixed a number of issues (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2019-06-08  7.0.8-49 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-49, GIT revision 15708:6d7e1db:20190608
+
+2019-06-03  7.0.8-49 Cristy  <quetzlzacatenango@image...>
+  * Add support for RGB565 image format (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=36078).
+  * Use user defined allocator instead of `malloc` (reference
+    https://github.com/ImageMagick/ImageMagick6/pull/49/).
+  * Add static decorator to accelerator kernels (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1366).
+
+2019-06-01  7.0.8-48 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-48, GIT revision 15689:061a3bb82:20190601
+
+2019-06-01  7.0.8-48 Cristy  <quetzlzacatenango@image...>
+  * Fix transient convolution bug (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36119).
+
+2019-05-26  7.0.8-47 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-47, GIT revision 15681:5cffc6cbb:20190526
+
+2019-05-19  7.0.8-47 Cristy  <quetzlzacatenango@image...>
+  * Support 16 and 32 bit tiled float TIFF images.
+  * Convolve morphology alpha channel fix (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=36086).
+  * Text improvements to the internal SVG renderer.
+
+2019-05-14  7.0.8-46 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-46, GIT revision 15655:84dd3301c:20190518
+
+2019-05-14  7.0.8-46 Cristy  <quetzlzacatenango@image...>
+  * PerlMagick unit tests pass again.
+  * Builds under MacOS X and FreeBSD works again.
+  * Return HEIC images in the sRGB colorspace.
+
+2019-05-12  7.0.8-45 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-45, GIT revision 15634:784105bcb:20190512
+
+2019-05-06  7.0.8-45 Cristy  <quetzlzacatenango@image...>
+  * Fix image signatures to ensure they are Q-depth invariant (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=35970).
+  * Fixed a number of issues (reference
+    https://imagemagick.org/discourse-server/viewforum.php?f=3).
+  * Fixed a number of issues (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2019-05-03  7.0.8-44 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-44, GIT revision 15600:41f47759a:20190503
+
+2019-05-03  7.0.8-44 Cristy  <quetzlzacatenango@image...>
+  * Fixed a number of issues (reference
+    https://imagemagick.org/discourse-server/viewforum.php?f=3).
+  * Fixed a number of issues (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2019-05-01  7.0.8-43 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-43, GIT revision 15595:0062cef74:20190502
+
+2019-05-01  7.0.8-43 Cristy  <quetzlzacatenango@image...>
+  * Fixed a number of issues (reference
+    https://imagemagick.org/discourse-server/viewforum.php?f=3).
+  * Fixed a number of issues (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2019-04-29  7.0.8-42 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-42, GIT revision 15570:71190ccd0:20190424
+
+2019-04-20  7.0.8-42 Cristy  <quetzlzacatenango@image...>
+  * Fixed a number of issues (reference
+    https://imagemagick.org/discourse-server/viewforum.php?f=3).
+  * Fixed a number of issues (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2019-04-19  7.0.8-41 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-41, GIT revision 15540:c78993d13:20190420
+
+2019-04-13  7.0.8-41 Cristy  <quetzlzacatenango@image...>
+  * Fixed a number of issues (reference
+    https://imagemagick.org/discourse-server/viewforum.php?f=3).
+  * Fixed a number of issues (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+  * Honor SOURCE_DATE_EPOCH environment variable (reference
+    https://github.com/ImageMagick/ImageMagick/pull/1496/).
+  * Standardize on UTC time for any image format timestamp.
+  * Add MagickAutoThresholdImage(), MagickCannyEdgeImage(),
+    MagickComplexImages(), MagickConnectedComponentsImage(),
+    MagickHoughLineImage(), MagickKuwaharaImage(), MagickLevelizeImageColors(),
+    MagickLevelImageColors(), MagickMeanShiftImage(), MagickPolynomialImage(),
+    MagickRangeThresholdImage(), MagickSetSeed(), MagickWaveletDenoiseImage()
+    methods to MagickWand API.
+
+2019-04-12  7.0.8-40 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-40, GIT revision 15510:7e503e231:20190412
+
+2019-04-10  7.0.8-40 Cristy  <quetzlzacatenango@image...>
+  * Fixed a number of issues (reference
+    https://imagemagick.org/discourse-server/viewforum.php?f=3).
+  * Fixed a number of issues (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+
+2019-04-07  7.0.8-39 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-39, GIT revision 15489:6120f8bc1:20190406
+
+2019-04-06  7.0.8-39 Cristy  <quetzlzacatenango@image...>
+  * The -layers option compared pixels inocorrectly as opacity rather than
+    alpha.
+  * The -preview raise option now returns expected results.
+  * Initialise ghostscript instances with NULL (reference
+    https://github.com/ImageMagick/ImageMagick/pull/1538).
+
+2019-04-06  7.0.8-38 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-38, GIT revision 15483:23edcef04:20190406
+
+2019-04-06  7.0.8-38 Cristy  <quetzlzacatenango@image...>
+  * Modulo off by one patch for -virtual-pixel option (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=35789).
+
+2019-04-03  7.0.8-37 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-37, GIT revision 15470:477216fd7:20190403
+
+2019-04-03  7.0.8-37 Cristy  <quetzlzacatenango@image...>
+  * Fixed -virtual-pixel option (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=35789).
+
+2019-03-31  7.0.8-36 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-36, GIT revision 15464:3a928224d:20190331
+
+2019-03-27  7.0.8-36 Cristy  <quetzlzacatenango@image...>
+  * Fixed a number of issues (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2019-03-24  7.0.8-35 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-35, GIT revision 15440:4a0a88e41:20190324
+
+2019-03-23  7.0.8-35 Cristy  <quetzlzacatenango@image...>
+  * -draw image DstOver is now responsive to the composite operator (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=35650).
+  * Fixed a number of issues (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2019-03-15  7.0.8-34 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-34, GIT revision 15413:860af935d:20190315
+
+2019-03-11  7.0.8-34 Cristy  <quetzlzacatenango@image...>
+  * Associate one lock with each resource.
+  * Report exception if opening TIFF did not work out.
+  * Fixed numerous use of uninitialized values, integer overflow, memory
+    exceeded, and timeouts (credit to OSS Fuzz).
+
+2019-03-10  7.0.8-33 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-33, GIT revision 15401:c805e3205:20190310
+
+2019-03-06  7.0.8-33 Cristy  <quetzlzacatenango@image...>
+  * Fix SVG conversion infinite loop (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=35591).
+  * Initialize primitive drawing structure after resizing.
+
+2019-03-05  7.0.8-32 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-32, GIT revision 15386:58d9c4692:20190305
+
+2019-03-05  7.0.8-32 Cristy  <quetzlzacatenango@image...>
+  * Fix out-of-boundary LocaleLowerCase() @
+    https://github.com/ImageMagick/ImageMagick/issues/1495
+
+2019-03-04  7.0.8-31 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-31, GIT revision 15381:3122a669d:20190304
+
+2019-03-04  7.0.8-31 Cristy  <quetzlzacatenango@image...>
+  * -trim is no longer sensitive to the image virtual canvas.
+
+2019-03-03  7.0.8-30 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-30, GIT revision 15376:16d2b4e6a:20190303
+
+2019-03-03  7.0.8-30 Cristy  <quetzlzacatenango@image...>
+  * Support define to remove additional background from an image during a
+    trim, e.g. -fuzz 5% -define trim:percent-background=0% -trim.
+
+2019-02-28  7.0.8-29 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-29, GIT revision 15368:5d8ed9f56:20190228
+
+2019-02-28  7.0.8-29 Cristy  <quetzlzacatenango@image...>
+  * Fixed a number of issues (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+  * Fixed numerous use of uninitialized values, integer overflow, memory
+    exceeded, and timeouts (credit to OSS Fuzz).
+
+2019-02-18  7.0.8-28 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-28, GIT revision 15345:09a7c67dd:20190218
+
+2019-02-12  7.0.8-28 Cristy  <quetzlzacatenango@image...>
+  * Fixed a number of issues (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2019-02-09  7.0.8-27 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-27, GIT revision 15315:5d48cd312:20190209
+
+2019-02-09  7.0.8-27 Cristy  <quetzlzacatenango@image...>
+  * Mod patch to properly handle subimage ranges (e.g. image.gif[2-3]).
+
+2019-02-03  7.0.8-26 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-26, GIT revision 15294:726bd82a3:20190203
+
+2019-02-02  7.0.8-26 Cristy  <quetzlzacatenango@image...>
+  * Fixed a number of issues (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2019-01-27  7.0.8-25 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-25, GIT revision 15279:7da783a5b:20190127
+
+2019-01-19  7.0.8-25 Cristy  <quetzlzacatenango@image...>
+  * Eliminate spurious font warning (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1458).
+  * Support HEIC EXIF & XMP profiles.
+
+2019-01-12  7.0.8-24 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-24, GIT revision 15233:db129ba64:20190112
+
+2019-01-08  7.0.8-24 Cristy  <quetzlzacatenango@image...>
+  * Support -clahe option real clip limit (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=35292).
+  * ShadeImage() kernels can return negative pixels, clamp to range (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1319).
+  * Annotate with negative offsets no longer renders slanted text.
+
+2019-01-01  7.0.8-23 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-23, GIT revision 15199:ba07f7d07:20190101
+
+2019-01-01  7.0.8-23 Cristy  <quetzlzacatenango@image...>
+  * CacheInfo destructor must be aligned in DestroyPixelStream().
+
+2018-12-30  7.0.8-22 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-22, GIT revision 15189:842164090:20181230
+
+2018-12-29  7.0.8-22 Cristy  <quetzlzacatenango@image...>
+  * Support negative rotations in a geometry (e.g. -10x-10+10+10).
+  * Return expected canvas offset after a crop with gravity.
+
+2018-12-27  7.0.8-21 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-21, GIT revision 15179:114be1716:20181227
+
+2018-12-27  7.0.8-21 Cristy  <quetzlzacatenango@image...>
+  * Check to ensure SeekBlob() offset can be represented in an off_t.
+
+2018-12-23  7.0.8-20 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-20, GIT revision 15170:8e8222e87:20181223
+
+2018-12-23  7.0.8-20 Cristy  <quetzlzacatenango@image...>
+  * Cube image format returns a HALD image.
+  * CLAHE tiles overlapped are now centered relative to the image.
+
+2018-12-19  7.0.8-19 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-19, GIT revision 15153:e74ed77f5:20181219
+
+2018-12-18  7.0.8-18 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-18, GIT revision 15146:b5eccd295:20181218
+
+2018-12-18  7.0.8-18 Cristy  <quetzlzacatenango@image...>
+  * Fixed Magick++ compile error on Mac OS X.
+
+2018-12-17  7.0.8-17 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-17, GIT revision 15142:32f2d195e:20181217
+
+2018-12-02  7.0.8-16 Cristy  <quetzlzacatenango@image...>
+  * Support -clahe clip limit with percentages (e.g. -clahe 50x50%+128+3).
+
+2018-12-10  7.0.8-16 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-16, GIT revision 15109:9a9af88de:20181210.
+
+2018-12-02  7.0.8-16 Cristy  <quetzlzacatenango@image...>
+  * Check for modulo underflow.
+  * Change SVG default DPI to 96 from 90 to meet recommendation of SVG2 & CSS.
+
+2018-12-01  7.0.8-15 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-15, GIT revision 15059:2fb22e07b:20181201
+
+2018-11-21  7.0.8-15 Cristy  <quetzlzacatenango@image...>
+  * Added support for the -clahe option: contrast limited adaptive histogram
+    equalization.
+
+2018-11-13  7.0.8-15 Dirk Lemstra <dirk@lem.....org>
+  * Added support for GIMP 2.10 files (reference
+    https://github.com/ImageMagick/ImageMagick/pull/1381).
+
+2018-10-23  7.0.8-14 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-14, GIT revision 14943:1a0da3dd0:20181023
+
+2018-10-21  7.0.8-13 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-13, GIT revision 14936:d3ec5abe2:20181021.
+
+2018-10-04  7.0.8-13 Dirk Lemstra <dirk@lem.....org>
+  * Adding coder headers with magic.xml will no longer be supported.
+  * Adding coder aliases with coder.xml will no longer be supported.
+
+2018-09-16  7.0.8-12 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-12, GIT revision 14843:cb5cf1959:20180923
+
+2018-09-15  7.0.8-12 Dirk Lemstra <dirk@lem.....org>
+  * Added support for arithmetic coding to the jpeg encoder:
+    -define jpeg:arithmetic-coding=true.
+
+2018-09-08  7.0.8-12 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous use of uninitialized values, integer overflow, memory
+    exceeded, and timeouts (credit to OSS Fuzz).
+
+2018-08-28  7.0.8-11 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-11, GIT revision 14729:798fbdb5b:20180828
+
+2018-08-15  7.0.8-11 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous use of uninitialized values, integer overflow, memory
+    exceeded, and timeouts (credit to OSS Fuzz).
+  * Add support for "module" security policy.
+
+2018-08-13  7.0.8-10 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-10, GIT revision 14646:48fba3256:20180813
+
+2018-08-12  7.0.8-10 Dirk Lemstra <dirk@lem.....org>
+  * Added dcraw coder (dcraw:img.cr2) that can be used to force the use of the
+    dcraw delegate when libraw is the default raw delegate.
+  * Restored thread support for the HEIC coder.
+
+2018-08-08  7.0.8-10 Cristy  <quetzlzacatenango@image...>
+  * ThumbnailImage function no longer reveals sensitive information (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1243).
+
+2018-08-06  7.0.8-9 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-9, GIT revision 14618:a3663c3dc:20180805.
+
+2018-07-24  7.0.8-9 Cristy  <quetzlzacatenango@image...>
+  * XBM coder leaves the hex image data uninitialized if hex value of the
+    pixel is negative.
+  * More improvements to SVG text handling.
+  * New -range-threshold option that combines hard and soft thresholding.
+
+2018-07-23  7.0.8-8 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-8, GIT revision 14583:300fdbcfd:20180723.
+
+2018-07-20  7.0.8-8 Cristy  <quetzlzacatenango@image...>
+  * Non-HDRI ScaleLongToQuantum() private method no longer adds a half interval.
+  * Fixed memset() negative-size-param (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1217).
+
+2018-07-16  7.0.8-7 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-7, GIT revision 14561:f85c23180:20180716.
+
+2018-07-15  7.0.8-7 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous use of uninitialized values, integer overflow, memory
+    exceeded, and timeouts (credit to OSS Fuzz).
+
+2018-07-08  7.0.8-6 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-6, GIT revision 14541:db940ccd2:20180708.
+
+2018-07-06  7.0.8-6 Cristy  <quetzlzacatenango@image...>
+  * Improve SVG support for tspan element.
+  * Add support for -fx image.extent.
+
+2018-07-04  7.0.8-5 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-5, GIT revision 14514:bba545bbb:20180704.
+
+2018-07-04  7.0.8-5 Cristy  <quetzlzacatenango@image...>
+  * Fixed a few potential memory leaks
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2018-07-02  7.0.8-4 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-4, GIT revision 14505:4613eed4a:20180702.
+
+2018-06-28  7.0.8-4 Cristy  <quetzlzacatenango@image...>
+  * Small tweaks to compile under Cygwin.
+  * Fixed numerous use of uninitialized values, integer overflow, memory
+    exceeded, and timeouts (credit to OSS Fuzz).
+  * Support %B property, the image file size without any decorations.
+
+2018-06-24  7.0.8-3 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-3, GIT revision 14489:c63c504e8:20180624.
+
+2018-06-24  7.0.8-3 Cristy  <quetzlzacatenango@image...>
+  * Apply translate component of SVG transform rotate.
+
+2018-06-18  7.0.8-2 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-2, GIT revision 14476:cda11d81d:20180618.
+
+2018-06-18  7.0.8-2 Cristy  <quetzlzacatenango@image...>
+  * More robust SVG text handling.
+
+2018-06-16  7.0.8-1 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-1, GIT revision 14468:94cb08785:20180616.
+
+2018-06-16  7.0.8-1 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous use of uninitialized values, integer overflow, memory
+    exceeded, and timeouts (credit to OSS Fuzz).
+  * Fixed an issue with stroke and label: (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=34142).
+  * PNG: set storage class to DirectClass if alpha enabled (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=34121).
+
+2018-06-12  7.0.8-0 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.8-0, GIT revision 14459:d7c892d5a:20180612.
+
+2018-06-11  7.0.8-0  <quetzlzacatenango@image...>
+  * Fixed numerous use of uninitialized values, integer overflow, memory
+    exceeded, and timeouts (credit to OSS Fuzz).
+
+2018-06-11  7.0.7-39 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-39, GIT revision 14445:cc962acde:20180611.
+
+2018-06-06  7.0.7-39  <quetzlzacatenango@image...>
+  * Fixed numerous use of uninitialized values, integer overflow, memory
+    exceeded, and timeouts (credit to OSS Fuzz).
+
+2018-06-02  7.0.7-38 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-38, GIT revision 14409:01e395a73:20180602.
+
+2018-05-30  7.0.7-38  <quetzlzacatenango@image...>
+  * Heap buffer overflow fix (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1156).
+  * Boundary issues with -gamma option when HDRI is enabled (reference
+    https://github.com/ImageMagick/ImageMagick/issues/1151).
+  * Fixed numerous use of uninitialized values, integer overflow, memory
+    exceeded, and timeouts (credit to OSS Fuzz).
+
+2018-05-29  7.0.7-37 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-37, GIT revision 14393:61d7e8b17:20180529.
+
+2018-05-29  7.0.7-37  <quetzlzacatenango@image...>
+  * Properly initialize SVG color style.
+
+2018-05-28  7.0.7-36 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-36, GIT revision 14390:3a6bd703f:20180528.
+
+2018-05-28  7.0.7-36  <quetzlzacatenango@image...>
+  * A SVG rectangle with a width and height of 1 is a point.
+
+2018-05-21  7.0.7-35 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-35, GIT revision 14356:13507412c:20180521.
+
+2018-05-21  7.0.7-35  <quetzlzacatenango@image...>
+  * Fixed memory corruption for MVG paths.
+
+2018-05-20  7.0.7-34 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-34, GIT revision 14348:ac9ff6ba1:20180520.
+
+2018-05-20  7.0.7-34 Dirk Lemstra <dirk@lem.....org>
+  * Added support for reading eXIf chunks to the PNG coder.
+
+2018-05-19  7.0.7-34  <quetzlzacatenango@image...>
+  * Fixed numerous use of uninitialized values, integer overflow, memory
+    exceeded, and timeouts (credit to OSS Fuzz).
+  * Improved clip / composite mask handling.
+
+2018-05-16  7.0.7-33 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-33, GIT revision 14326:58c2e4972:20180516.
+
+2018-05-03  7.0.7-33  <quetzlzacatenango@image...>
+  * Restore SetImageAlpha() behavior.
+  * Fix -clip and -mask options.
+
+2018-05-13  7.0.7-32 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-32, GIT revision 14307:f61f674e3:20180513.
+
+2018-05-03  7.0.7-31  <quetzlzacatenango@image...>
+  * Fixed numerous use of uninitialized values, integer overflow, memory
+    exceeded, and timeouts (credit to OSS Fuzz).
+
+2018-05-01  7.0.7-30 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-30, GIT revision 14242:730f1d1d3:20180501.
+
+2018-05-01  7.0.7-30  <quetzlzacatenango@image...>
+  * Missing break when checking "compliance" element.
+
+2018-04-30  7.0.7-29 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-29, GIT revision 14225:41edbdcea:20180430.
+
+2018-03-26  7.0.7-29  <quetzlzacatenango@image...>
+  * Fixed numerous use of uninitialized values, integer overflow, memory
+    exceeded, and timeouts (credit to OSS Fuzz).
+
+2018-03-24  7.0.7-28 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-28, GIT revision 23615:edd71782e:20180325.
+
+2018-03-21  7.0.7-28  <quetzlzacatenango@image...>
+  * Fixed numerous use of uninitialized values, integer overflow, memory
+    exceeded, and timeouts (credit to OSS Fuzz).
+
+2018-03-18  7.0.7-27 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-27, GIT revision 23466:734b146df:20180318.
+
+2018-03-17  7.0.7-27  <quetzlzacatenango@image...>
+  * Fixed numerous use of uninitialized values, integer overflow, memory
+    exceeded, and timeouts (credit to OSS Fuzz).
+
+2018-03-11  7.0.7-26 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-26, GIT revision 23344:7a03766ef:20180311.
+
+2018-03-10  7.0.7-26  <quetzlzacatenango@image...>
+  * Fixed numerous use of uninitialized values, integer overflow, memory
+    exceeded, and timeouts (credit to OSS Fuzz).
+
+2018-03-04  7.0.7-25 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-25, GIT revision 23177:17a986472:20180304.
+
+2018-03-04  7.0.7-25 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous use of uninitialized values, integer overflow, memory
+    exceeded, and timeouts (credit to OSS Fuzz).
+
+2018-02-25  7.0.7-24 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-24, GIT revision 23079:7ccb76178:20180225.
+
+2018-02-19  7.0.7-24 Cristy  <quetzlzacatenango@image...>
+  * Do not refer to page in OptimizeLayerFrames (reference
+    https://github.com/ImageMagick/ImageMagick/pull/987).
+  * PerlMagick unit tests pass again.
+  * Fixed numerous use of uninitialized values, integer overflow,
+    memory exceeded, and timeouts (credit to OSS Fuzz).
+
+2018-02-18  7.0.7-23 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.0-23, GIT revision 22969:c6b3a22b0:20180218.
+
+2018-02-09  7.0.7-23 Dirk Lemstra <dirk@lem.....org>
+  * Add support for reading the HEIC image format to the Windows build.
+
+2018-01-23  7.0.7-23 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous use of uninitialized values, integer overflow,
+    memory exceeded, and timeouts (credit to OSS Fuzz).
+  * Add list-length policy to limit the maximum image sequence length.
+
+2018-01-22  7.0.7-22 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.0-22, GIT revision 22391:e8be814f1:20180122.
+
+2018-01-06  7.0.7-22 Cristy  <quetzlzacatenango@image...>
+  * Support aspect ratio geometry, e.g. -crop 3:2.
+  * Add support for reading the HEIC image format (reference
+    https://github.com/ImageMagick/ImageMagick/issues/507).
+  * Fixed numerous memory leaks, credit to OSS Fuzz.
+
+2018-01-06  7.0.7-21 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.0-21, GIT revision 22168:a91afc45b:20180106.
+
+2018-01-06  7.0.7-21 Dirk Lemstra <dirk@lem.....org>
+  * Fix some enum values in the OpenCL code.
+
+2018-01-06  7.0.7-20 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-20, GIT revision 22161:33a04d3e5:20180105.
+
+2018-01-05  7.0.7-20 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous memory leaks (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2018-01-01  7.0.7-19 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-19, GIT revision 22133:977fe08bf:20180101.
+
+2017-12-29  7.0.7-19 Cristy  <quetzlzacatenango@image...>
+  * Check for webpmux library version 0.4.4 (reference
+    https://github.com/ImageMagick/ImageMagick/issues/896).
+
+2017-12-26  7.0.7-18 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-18, GIT revision 22096:ad4bdeb40:20171228.
+
+2017-12-28  7.0.7-18 Cristy  <quetzlzacatenango@image...>
+  * Fix error reading from pipe under Windows (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=33288).
+
+2017-12-26  7.0.7-17 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-17, GIT revision 22093:9caea323b:20171227.
+
+2017-12-26  7.0.7-17 Cristy  <quetzlzacatenango@image...>
+  * Fix heap use after free error (reference
+    https://github.com/ImageMagick/ImageMagick/issues/918).
+
+2017-12-24  7.0.7-16 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-16, GIT revision 22038:e55dc7626:20171225.
+
+2017-12-18  7.0.7-16 Cristy  <quetzlzacatenango@image...>
+  * Fix error reading multi-layer XCF image file.
+  * Fix possible stack overflow in WEBP reader (reference
+    https://github.com/ImageMagick/ImageMagick/issues/907)
+  * Fixed numerous memory leaks (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2017-12-16  7.0.7-15 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-15, GIT revision 21924:30cb31746:20171216.
+
+2017-12-08  7.0.7-15 Cristy  <quetzlzacatenango@image...>
+  * Overall standard deviation is the average of each pixel channel (reference
+    https://imagemagick.org/discourse-server/viewforum.php?f=3).
+  * Update to the latest ImageMagick documentation.
+
+2017-12-05  7.0.7-14 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-14, GIT revision 21855:dc73b2aba:20171205.
+
+2017-11-30  7.0.7-14 Cristy  <quetzlzacatenango@image...>
+  * Support Stereo composite operator.
+  * Fix build failure with --without-modules (reference
+    https://github.com/ImageMagick/ImageMagick/issues/890).
+
+2017-11-30  7.0.7-13 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-13, GIT revision 21823:72cb0fd0c:20171130.
+
+2017-11-30  7.0.7-13 Cristy  <quetzlzacatenango@image...>
+  * Fix build failure with libraw 0.14.8 (reference
+    https://github.com/ImageMagick/ImageMagick/issues/888).
+
+2017-11-29  7.0.7-12 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-12, GIT revision 21814:5ef2c5a67:20171129.
+
+2017-11-12  7.0.7-12 Cristy  <quetzlzacatenango@image...>
+  * The -tint option no longer munges the alpha channel (reference
+    http://imagemagick.org/discourse-server/viewtopic.php?f=1&t=33070).
+  * Don't delete in-memory blob when reading an image (reference
+    https://github.com/ImageMagick/ImageMagick/issues/886).
+  * Support HDRI color profile management.
+
+2017-11-11  7.0.7-11 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-11, GIT revision 21635:0447c6b46:20171111.
+
+2017-11-05  7.0.7-10 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-10, GIT revision 21612:36e2aabfd:20171105.
+
+2017-11-03  7.0.7-10 Dirk Lemstra <dirk@lem.....org>
+  * Fixed a problem with resource bookkeeping in AcquireMatrixInfo().
+
+2017-10-30  7.0.7-9 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-9, GIT revision 21580:2682a311e:20171031.
+
+2017-10-20  7.0.7-9 Cristy  <quetzlzacatenango@image...>
+  * Encode JSON control characters (reference
+    https://github.com/ImageMagick/ImageMagick/issues/848).
+
+2017-10-27  7.0.7-9 Dirk Lemstra <dirk@lem.....org>
+  * Added support for reading mipmaps in dds images (reference
+    https://github.com/ImageMagick/ImageMagick/issues/845).
+
+2017-10-15  7.0.7-8 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-8, GIT revision 21507:63ffc9878:20171015.
+
+2017-10-08  7.0.7-8 Cristy  <quetzlzacatenango@image...>
+  * Return expected results for a percent 0 -chop option argument (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32806).
+  * Tweaks to OpenMP support within ImageMagick.
+
+2017-10-07  7.0.7-7 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-7, GIT revision 21432:29003eeed:20171007.
+
+2017-10-06  7.0.7-7 Cristy  <quetzlzacatenango@image...>
+  * Correct handling of GIF transparency (reference
+    https://github.com/ImageMagick/ImageMagick/issues/831).
+
+2017-10-04  7.0.7-6 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-6, GIT revision 21426:0a1cb507b:20171004.
+
+2017-10-03  7.0.7-6 Cristy  <quetzlzacatenango@image...>
+  * Reset the magick_list_initialized boolean when needed (reference
+    https://github.com/ImageMagick/ImageMagick/pull/826).
+
+2017-10-01  7.0.7-5 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-5, GIT revision 21382:3846f9d97:20171001.
+
+2017-09-28  7.0.7-5 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous memory leaks (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+  * Support URW-base35 fonts.
+
+2017-09-26  7.0.7-5 Glenn Randers-Pehrson <glennrp@image...>
+  * Removed "ping_preserve_iCCP=MagickTrue;" statement that was inadvertently
+    added to coders/png.c (reference
+    http://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32771).
+
+2017-09-23  7.0.7-4 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-4, GIT revision 21265:bdbc14590:20170923.
+
+2017-09-23  7.0.7-4 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous memory leaks (reference
+    https://github.com/ImageMagick/ImageMagick/pull/763).
+
+2017-09-17  7.0.7-3 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-3, GIT revision 21202:6e6907ac7:20170917.
+
+2017-09-17  7.0.7-3 ADLab of Venustech
+  * Fixed numerous memory leaks (reference
+    https://github.com/ImageMagick/ImageMagick/pull/763).
+
+2017-09-15  7.0.7-3 Glenn Randers-Pehrson <glennrp@image...>
+  * Stop potential leaks in the JNG decoder (reference:
+    https://github.com/ImageMagick/ImageMagick/issues/760).
+  * Maximum valid hour is 23, not 24, in the PNG tIME chunk, and maximum
+    valid minute is 59, not 60.
+
+2017-09-12  7.0.7-2 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-2, GIT revision 21089:4e46ad9dd:20170912.
+
+2017-09-11  7.0.7-2 Glenn Randers-Pehrson <glennrp@image...>
+  * Use signed integer arithmetic to calculate timezone corrections (reference
+    https://github.com/ImageMagick/ImageMagick/issues/685).
+
+2017-09-09  7.0.7-1 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-1, GIT revision 21065:ab2194121:20170909.
+
+2017-09-09  7.0.7-1 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous memory leaks (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2017-09-05 7.0.7-1 Dirk Lemstra <dirk@lem.....org>
+  * Added -define tiff:write-layers=true to add support for writing layered
+    tiff files.
+
+2017-09-03  7.0.7-0 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.7-0, GIT revision 20996:2f8ac2203:20170903.
+
+2017-08-28  7.0.7-0 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous memory leaks (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+  * Don't overwrite symbolic links when the shred policy is enabled.
+
+2017-08-27  7.0.6-10 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.6-10, GIT revision 20920:9940c367a:20170827.
+
+2017-08-27  7.0.6-10 Cristy  <quetzlzacatenango@image...>
+  * Support -metric ssim, structual similarity index.
+
+2017-08-26  7.0.6-10 Dirk Lemstra <dirk@lem.....org>
+  * Fixed thread safety issue inside the pango and librsvg decoder
+    (reference: https://github.com/dlemstra/Magick.NET/issues/91).
+
+2017-08-20  7.0.6-9 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.6-9, GIT revision 20860:3f307d8ad:20170820.
+
+2017-08-18  7.0.6-9 Glenn Randers-Pehrson <glennrp@image...>
+  * Fixed bug with writing tIME chunk when timezone has a negative offset
+    (reference: https://github.com/ImageMagick/ImageMagick/issues/685)
+
+2017-08-18  7.0.6-8 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.6-8, GIT revision 20838:e2eb79427:20170818.
+
+2017-08-14  7.0.6-7 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous memory leaks (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+  * Support CubicSpline resize filter.  Define the lobes with the
+    -define filter:lobes={2,3,4} (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=32506).
+  * Prevent assertion failure when creating PDF thumbnail (reference
+    https://github.com/ImageMagick/ImageMagick/issues/674).
+
+2017-08-12  7.0.6-7 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.6-7, GIT revision 20799:0db4d8a16:20170812.
+
+2017-08-12  7.0.6-7 Cristy  <quetzlzacatenango@image...>
+  * Improve EPS aliasing (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32497).
+
+2017-08-11  7.0.6-7 Dirk Lemstra <dirk@lem.....org>
+  * Added a new option called 'dds:fast-mipmaps' (reference
+    https://github.com/ImageMagick/ImageMagick/issues/558)
+  * The mipmaps of a dds image can now be created from a list of images with
+    -define dds:mipmaps=fromlist (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=30236).
+
+2017-08-10  7.0.6-6 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.6-6, GIT revision 20775:061d0fa25:20170810.
+
+2017-08-10  7.0.6-6 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous memory leaks (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2017-08-10  7.0.6-6 Glenn Randers-Pehrson <glennrp@image...>
+  * tests/validate.c: Show the reason for failures in the test logs,
+    if available.
+
+2017-08-03  7.0.6-6 Glenn Randers-Pehrson <glennrp@image...>
+  * Put UTC time in the PNG tIME chunk instead of local time (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32447).
+
+2017-08-02  7.0.6-5 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.6-5, GIT revision 20715:26b28d50a:20170802.
+
+2017-08-01  7.0.6-5 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous memory leaks (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2017-07-29  7.0.6-5 Glenn Randers-Pehrson <glennrp@image...>
+  * Properly set image->colorspace in the PNG decoder (previously
+    it was setting image->gamma, but only setting image->colorspace
+    for grayscale and gray-alpha images.  Reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32418).
+  * Fix improper use of NULL in the JNG decoder (CVE-2017-11750, Reference
+    https://github.com/ImageMagick/ImageMagick/issues/632).
+  * Added "-define png:ignore-crc" option to PNG decoder. When you know
+    your image has no CRC or ADLER32 errors, this can speed up decoding.
+    It is also helpful in debugging bug reports from "fuzzers".
+
+2017-07-29  7.0.6-5 Cristy  <quetzlzacatenango@image...>
+  * Off by one error for gradient coder (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32416),
+    https://github.com/ImageMagick/ImageMagick/issues/612).
+
+2017-07-28  7.0.6-4 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.6-4, GIT revision 20657:4e81160d6:20170728.
+
+2017-07-24  7.0.6-4 Cristy  <quetzlzacatenango@image...>
+  * YUV coder no longer renders streaks (reference
+    https://github.com/ImageMagick/ImageMagick/issues/612).
+  * Fixed numerous memory leaks (reference
+    https://github.com/ImageMagick/ImageMagick/issues) including
+    https://github.com/ImageMagick/ImageMagick/issues/618 (CVE-2017-12676).
+  * coders/png.c: Initialized quantum_scanline and quantum_info
+    to prevent a bad free (reference
+    https://github.com/ImageMagick/ImageMagick/issues/621).
+
+2017-07-25  7.0.6-4 Glenn Randers-Pehrson <glennrp@image...>
+  * Removed write_chunk_from_profile() from coders/png.c because it has
+    not worked at least since version 6.7.6.
+  * Removed many redundant checks before RelinquishMagickMemory(), which
+    is safe to call with a NULL argument.
+  * Added experimental PNG orNT chunk, to store image->orientation.
+  * Removed vpAg chunk write support (we are now writing caNv instead).
+
+2017-07-24  7.0.6-3 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.6-3, GIT revision 20598:cc9c43b44:20170724.
+
+2017-07-23  7.0.6-3 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous memory leaks (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+
+2017-07-23  7.0.6-3 Glenn Randers-Pehrson <glennrp@image...>
+  * Fix memory leaks when reading a malformed JNG image:
+    https://github.com/ImageMagick/ImageMagick/issues/600 (CVE-2017-13141),
+    https://github.com/ImageMagick/ImageMagick/issues/602 (CVE-2017-12565).
+
+2017-07-21  7.0.6-2 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.6-2, GIT revision 20549:62fcf3d96:20170721.
+
+2017-07-19  7.0.6-2 Cristy  <quetzlzacatenango@image...>
+  * Fixed numerous memory leaks (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+  * The -monochrome option no longer returns a blank canvas (reference
+    https://github.com/ImageMagick/ImageMagick/issues/594).
+  * coders/png.c: fixed memory leak of quantum_info (CVE-2017-11539, reference
+    https://github.com/ImageMagick/ImageMagick/issues/582
+  * coders/png.c: fixed NULL dereference when trying to write an empty MNG
+    (CVE-2017-11522, reference
+    https://github.com/ImageMagick/ImageMagick/issues/586).
+
+2017-07-15  7.0.6-2 Glenn Randers-Pehrson <glennrp@image...>
+  * Added caNv, eXIf, and pHYs to the list of PNG chunks to be removed
+    by the "-strip" option.
+
+2017-07-15  7.0.6-1 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.6-1, GIT revision 20447:c2a315e10:20170715.
+
+2017-07-13  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
+  * Implemented PNG eXIf chunk support.
+
+2017-07-08  7.0.6-1 Cristy  <quetzlzacatenango@image...>
+  * Support new -auto-threshold option.  OTSU and Triangle methods are
+    currently supported.  Look for the Kapur method in the next release.
+  * Fixed numerous memory leaks (reference
+    https://github.com/ImageMagick/ImageMagick/issues).
+  * Don't use variable float_t / double_t, bump SO (reference
+    https://github.com/ImageMagick/ImageMagick/issues/510).
+  * Support DNG images with libraw delegate library.
+
+2017-07-02  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
+  * Reject PNG file that is too small (under 60 bytes) to contain
+    a valid image.
+  * Reject JPEG file that is too small (under 107 bytes) to contain
+    a valid image.
+  * Reject JNG file that is too small (under 147 bytes) to contain
+    a valid image.
+
+2017-06-22  7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
+  * Stop a memory leak in read_user_chunk_callback() (reference
+    https://github.com/ImageMagick/ImageMagick/issues/517,
+    CVE 2017-11310).
+
+2017-06-10  7.0.6-0 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.6-0, GIT revision 20194:b0c0d00:20170611.
+
+2017-06-10  7.0.6-0 Glenn Randers-Pehrson <glennrp@image...>
+  * coders/png.c: Accept exIf chunks whose data segment
+    erroneously begins with "Exif\0\0".
+
+2017-06-10  7.0.6-0 Cristy  <quetzlzacatenango@image...>
+  * Introduce SetMagickSecurityPolicy() (MagickCore) and
+    MagickSetSecurityPolicy() (MagickWand) to set the ImageMagick security
+    policy (reference https://github.com/ImageMagick/ImageMagick/issues/407).
+
+2017-06-02  7.0.5-10 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.5-10, GIT revision 20155:38ebc02:20170602.
+
+2017-06-01  7.0.5-10 Glenn Randers-Pehrson <glennrp@image...>
+  * Removed experimental PNG zxIF chunk support; the proposal is dead.
+
+2017-06-01  7.0.5-10 Cristy  <quetzlzacatenango@image...>
+  * Fix choppy bitmap font rendering (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32071).
+  * The +opaque option is not longer a noop (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32081).
+  * Add support  for 'hex:' property.
+
+2017-05-28  7.0.5-9 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.5-9, GIT revision 20113:8b67333:20170528.
+
+2017-05-28  7.0.5-9 Cristy  <quetzlzacatenango@image...>
+  * Transient error validating the JPEG-2000 image format (reference
+    https://github.com/ImageMagick/ImageMagick/issues/501).
+  * Properly allocate DCM image colormap (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=32063).
+
+2017-05-26  7.0.5-8 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.5-8, GIT revision 20099:870a016:20170526.
+
+2017-05-23  7.0.5-8 Cristy  <quetzlzacatenango@image...>
+  * Improper allocation of memory for IM instances without threads (reference
+    https://github.com/ImageMagick/ImageMagick/issues/497).
+  * Delete corrupt image from list (reference
+    https://github.com/ImageMagick/ImageMagick/issues/500).
+
+2017-05-19  7.0.5-7 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.5-6, GIT revision 20078:7ce2d38:20170519.
+
+2017-05-15  7.0.5-7 Cristy  <quetzlzacatenango@image...>
+  * Support various image operators for the compare utility (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=31938).
+
+ 2017-05-12  7.0.5-6 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.5-6, GIT revision 20039:9371904:20170512.
+
+2017-05-10  7.0.5-6 John Cupitt <jcupitt@gmail.com>
+  * Revise DICOM window and rescale handling (reference
+    https://github.com/ImageMagick/ImageMagick/pull/484)
+
+2017-05-06  7.0.5-6 Cristy  <quetzlzacatenango@image...>
+  * Restore the -alpha Shape option (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31879).
+  * Fix transient PDF bug (reference
+    https://github.com/ImageMagick/ImageMagick/issues/463).
+  * The +opaque option now works on all channels (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31862).
+  * Ensure backwards compatibility for the -combine option (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31855).
+  * Check for EOF conditions for RLE image format.
+  * Reset histogram page geometry (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31920).
+
+2017-04-24  7.0.5-5 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.5-5, GIT revision 19915:12eec43:20170424.
+
+2017-03-26  7.0.5-5 Cristy  <quetzlzacatenango@image...>
+  * Minimize buffer copies to improve OpenCL performance.
+  * Morphology thinning is no longer a no-op (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31650).
+  * Patch two PCD writer problems, corrupt output and dark pixels (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=3164).
+  * Support ICC based PDF's (reference
+    https://github.com/ImageMagick/ImageMagick/issues/417).
+  * Fix improper EPS clip path rendering (reference
+    http://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31722).
+
+2017-03-24  7.0.5-4 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.5-4, GIT revision 19754:350fff3:20170324.
+
+2017-03-21  7.0.5-4 Cristy  <quetzlzacatenango@image...>
+  * Respect -loop option for animate -window (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31619).
+
+2017-03-17  7.0.5-3 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.5-3, GIT revision 19741:070c3fb:20170317.
+
+2017-03-14  7.0.5-3 Cristy  <quetzlzacatenango@image...>
+  * Support namespaces for the security policy.
+  * Support the -authenticate option for PDF (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31530).
+
+2017-03-11  7.0.5-2 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.5-2, GIT revision 19696:da91a7c:20170311.
+
+2017-03-06  7.0.5-2 Cristy  <quetzlzacatenango@image...>
+  * Respect throttle policy (reference
+    https://github.com/ImageMagick/ImageMagick/issues/393).
+  * Return proper minima / maxima (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31377).
+
+2017-03-03  7.0.5-1 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.5-1, GIT revision 19662:b7f455a:20170303.
+
+2017-02-21  7.0.5-1 Cristy  <quetzlzacatenango@image...>
+  * Fix Spurious memory allocation message (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31438).
+  * Identical images should return inf for PSNR (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31487).
+
+2017-02-20  7.0.5-0 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.5-0, GIT revision 19616:505fea9:20170220.
+
+2017-02-20  7.0.5-0 Cristy  <quetzlzacatenango@image...>
+  * Fix transient bug with -separate option (reference
+    https://github.com/ImageMagick/ImageMagick/issues/385).
+
+2017-02-18  7.0.4-10 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.4-10, GIT revision 19608:fe757a2:20170218.
+
+2017-02-18  7.0.4-10 Dirk Lemstra <dirk@lem.....org>
+  * Fixed fd leak for webp coder (reference
+    https://github.com/ImageMagick/ImageMagick/pull/382)
+
+2017-02-15  7.0.4-10 Cristy  <quetzlzacatenango@image...>
+  * Prevent random pixel data for corrupt JPEG image (bug report from
+    Hirokazu Moriguchi, Sony).
+  * Restore -mattecolor option.
+  * Support pixel-cache and shred security policies.
+  * Bump Magick++ SO.  Previously a global replace changed matteColor to
+    alphaColor.
+
+2017-02-14  7.0.4-9 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.4-9, GIT revision 19580:d474b37:20170214.
+
+2017-02-14  7.0.4-9 Cristy  <quetzlzacatenango@image...>
+  * Revert patch that did not set update trait on alpha channel.
+
+2017-02-13  7.0.4-8 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.4-8, GIT revision 19574:7642384:20170213.
+
+2017-02-09  7.0.4-8 Dirk Lemstra <dirk@lem.....org>
+  * Fixed memory leak when creating nested exceptions in Magick++ (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=23&p=142634)
+
+2017-02-09  7.0.4-8 Cristy  <quetzlzacatenango@image...>
+  * Unbreak build without JPEG support (reference
+    https://github.com/ImageMagick/ImageMagick/pull/373).
+  * Document behavior change in the security policy (thanks to yoya @
+    https://blog.awm.jp/2017/02/09/imagemagick-en/).
+  * Return unbiased standard deviation for image statistics (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31377).
+  * Don't set update trait on alpha channel (private e-mail concerning
+    -levels-colors option).
+
+2017-02-04  7.0.4-7 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.4-7, GIT revision 19513:5783e57:20170204.
+
+2017-01-28  7.0.4-7 Cristy  <quetzlzacatenango@image...>
+  * Sanitize comments that include braces for the MIFF image format (reference
+    https://github.com/ImageMagick/ImageMagick/issues/368).
+
+2017-01-27  7.0.4-7 Glenn Randers-Pehrson <glennrp@image...>
+  * coders/png.c: Added support for a proposed new PNG chunk
+    (zxIf, read-only) that is currently being discussed on the
+    png-mng-misc at lists.sourceforge.net mailing list.  Enable
+    exIf and zxIf with CPPFLAGS="-DexIf_SUPPORTED -DxzIf_SUPPORTED".
+    If exIf is enabled, only the uncompressed exIF chunk will be
+    written and the hex-encoded zTXt chunk containing the raw Exif
+    profile won't be written.
+
+2017-01-27  7.0.4-6 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.4-6, GIT revision 19442:4747de9:20170127.
+
+2017-01-27  7.0.4-6 Cristy  <quetzlzacatenango@image...>
+  * Uninitialized data in MAT image format (reference
+    https://github.com/ImageMagick/ImageMagick/issues/362).
+  * Properly auto-fit caption (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30887).
+  * Correction to composite Over operator (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31282).
+  * Respect gravity option (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31284).
+
+2017-01-22  7.0.4-6 Glenn Randers-Pehrson <glennrp@image...>
+  * Renamed read_vpag_chunk_callback() function to png_user_chunk_callback()
+    in coders/png.c
+  * Implemented a private PNG caNv (canvas) chunk for remembering the
+    original dimensions and offsets when an image is cropped.  Previously
+    we used the oFFs and vpAg chunks for this purpose, but this had potential
+    conflicts with other applications that also use the oFFs chunk.
+  * coders/png.c: Added support for a proposed new PNG chunk (exIf
+    read-write, eXIf read-only) that is currently being discussed on the
+    png-mng-misc at lists.sourceforge.net mailing list.
+
+2017-01-22  7.0.4-6 Dirk Lemstra <dirk@lem.....org>
+  * Replaced CoderSeekableStreamFlag with CoderDecoderSeekableStreamFlag and
+    CoderEncoderSeekableStreamFlag.
+
+2017-01-21  7.0.4-5 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.4-5, GIT revision 19381:7ae396f:20170121.
+
+2017-01-18  7.0.4-5 Cristy  <quetzlzacatenango@image...>
+  * Don't set background for transparent tiled images (reference
+    http://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31210).
+
+2017-01-14  7.0.4-4 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.4-4, GIT revision 19361:a12953c:20170114.
+
+2017-01-14  7.0.4-4 Dirk Lemstra <dirk@lem.....org>
+  * Added support for RGB555, RGB565, ARGB4444 and ARGB1555 to the
+    BMP encoder (reference
+    https://github.com/ImageMagick/ImageMagick/issues/344).
+
+2017-01-10  7.0.4-4 Cristy  <quetzlzacatenango@image...>
+  * Recognize XML policy closing tags (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31182).
+  * Fix memory leak in the MPC format.
+
+2017-01-07  7.0.4-3 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.4-3, GIT revision 19329:930ca78:20170107.
+
+2017-01-04  7.0.4-3 Cristy  <quetzlzacatenango@image...>
+  * Increase memory allocation for TIFF pixels (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31161).
+
+2017-01-03  7.0.4-2 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.4-2, GIT revision 19318:8766311:20170103.
+
+2017-01-02  7.0.4-2 Cristy  <quetzlzacatenango@image...>
+  * Validation unit test for MNG works again.
+
+2016-12-31  7.0.4-1 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.4-1, GIT revision 19292:c5ccfa8:20161231.
+
+2016-12-26  7.0.4-1 Cristy  <quetzlzacatenango@image...>
+  * Initialize draw_info alpha member to OpaqueAlpha.
+  * Monochrome images no longer have inverted colors (reference
+    https://github.com/ImageMagick/ImageMagick/issues/332).
+
+2016-12-18  7.0.4-0 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.4-0, GIT revision 19221:d5e8abc:20161218.
+
+2016-12-14  7.0.4-0 Cristy  <quetzlzacatenango@image...>
+ * Do not close path for linejoins of round (reference
+   https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31039).
+
+2016-12-10  7.0.3-10 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.3-10, GIT revision 19191:338f088:20161210.
+
+2016-12-07  7.0.3-10 Cristy  <quetzlzacatenango@image...>
+  * Set colorspace to sRGB if -append has non-homogenous colorspaces (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29105).
+  * Respect connected-components:area-threshold define (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31006).
+  * Enable alpha channel if background color is non-opaque (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31016).
+  * Return correct offset for negative index for -fx option (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31019).
+  * Fixed improper scaling of certain FITS images (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31028).
+  * Properly center text label (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=31027).
+
+2016-12-05  7.0.3-9 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.3-9, GIT revision 19139:6fed3f1:20161205.
+
+2016-11-26  7.0.3-9 Cristy  <quetzlzacatenango@image...>
+  * Support the compare -read-mask option.
+  * Support read-masks for the -modulate option.
+  * Prevent buffer overflow when streaming an image (reference
+    https://github.com/ImageMagick/ImageMagick/issues/312).
+  * Fix possible buffer overflow when writing compressed TIFFS (vulnerability
+    report from Cisco Talos, CVE-2016-8707).
+
+2016-11-15  7.0.3-8 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.3-8, GIT revision 19067:5aceded:20161125.
+
+2016-11-18  7.0.3-8 Cristy  <quetzlzacatenango@image...>
+  * Support the phash:colorspaces and phash:normalize options.
+  * If a convenient line break is not found, force it for caption: (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30887).
+  * Set alpha member of draw structure to OpaqueAlpha (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30894).
+  * Off by 1 error when computing the standard deviation (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=2&t=30866).
+  * Apply Debian patches, (reference
+    https://github.com/ImageMagick/ImageMagick/issues/304).
+  * Permit EPT images with just a TIFF or EPS image, not both (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30921).
+  * The -clone option no longer leaks memory.
+  * Render to clip mask rather than image for clip-path MVG graphics primitive.
+
+2016-11-15  7.0.3-7 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.3-7, GIT revision 19024:87aca83:20161115.
+
+2016-11-10  7.0.3-7 Cristy  <quetzlzacatenango@image...>
+  * Web pages were broken when we moved to HTTPS protocol.
+
+2016-11-08  7.0.3-6 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.3-6, GIT revision 19001:4cff747:20161108.
+
+2016-11-01  7.0.3-6 Cristy  <quetzlzacatenango@image...>
+  * Off by one memory allocation (reference
+    https://github.com/ImageMagick/ImageMagick/issues/296).
+  * The -extent option now matches the results of IMv6 (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=30779).
+  * Prevent fault in MSL interpreter (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30797).
+  * Mask composite produces proper results for the convert utility (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29675).
+
+2016-10-10  7.0.3-5 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.3-5, GIT revision 18975:a8174a2:20161030.
+
+2016-10-16  7.0.3-5 Dirk Lemstra <dirk@lem.....org>
+  * Added layer RLE compression to the PSD encoder.
+
+2016-10-10  7.0.3-4 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.3-4, GIT revision 18937:83da034:20161010.
+
+2016-10-10  7.0.3-4 Dirk Lemstra <dirk@lem.....org>
+  * Fixed incorrect parsing with ordered dither. (reference
+    https://github.com/ImageMagick/ImageMagick/issues/254)
+
+2016-10-10  7.0.3-4 Cristy  <quetzlzacatenango@image...>
+  * Unit test pass again after small SUN image patch.
+
+2016-10-08  7.0.3-3 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.3-3, GIT revision 18924:d6614e7:20161008.
+
+2016-10-07  7.0.3-3 Dirk Lemstra <dirk@lem.....org>
+  * Fixed incorrect RLE decoding when reading a DCM image that contains
+    multiple segments.
+
+2016-10-02  7.0.3-2 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.3-2, GIT revision 18887:6b27c5b:20161002.
+
+2016-09-27  7.0.3-2 Dirk Lemstra <dirk@lem.....org>
+  * Fixed incorrect RLE decoding when reading an SGI image (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30514)
+
+2016-09-20  7.0.3-1 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.3-1, GIT revision 18851:ad91ea8:20160920.
+
+2016-09-16  7.0.3-1 Dirk Lemstra <dirk@lem.....org>
+  * Added layer RLE compression to the PSD encoder.
+  * Added define 'psd:preserve-opacity-mask' to preserve the opacity mask
+    in a PSD file.
+  * Fixed issue where the display window was used instead of the data window
+    when reading EXR files (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&p=137849).
+
+2016-09-05  7.0.3-0 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.3-0, GIT revision 18786:10aa64c:20160905.
+
+2016-08-29  7.0.3-0 Dirk Lemstra <dirk@lem.....org>
+  * Fixed reading DXT1 images with an alpha channel.
+  * Fixed incorrect padding calculation in PSD encoder.
+
+2016-08-27  7.0.2-10 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.2-10, GIT revision 18750:e3335b3:20160827.
+
+2016-08-27  7.0.2-10 Dirk Lemstra <dirk@lem.....org>
+  * Added define 'psd:additional-info' to preserve the additional information
+    in a PSD file.
+
+2016-08-15  7.0.2-10 Cristy  <quetzlzacatenango@image...>
+  * Prevent buffer overflow in BMP & SGI coders (bug report from
+    pwchen&rayzhong of tencent).
+  * Prevent buffer overflow and other problems in SIXEL, PDB, MAP, TIFF and
+    CALS coders (bug report from Donghai Zhu).
+  * The -stream option now increments the pixel pointer properly (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30327).
+
+2016-08-14  7.0.2-9 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.2-9, GIT revision 18707:2c02f09:20160814.
+
+2016-08-14  7.0.2-9 Cristy  <quetzlzacatenango@image...>
+  * Fix compile error in opencl.c (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30289).
+  * Eliminate compiler warning.
+
+2016-08-14  7.0.2-8 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.2-8, GIT revision 18698:74b1d5d:20160814.
+
+2016-08-07  7.0.2-8 Cristy  <quetzlzacatenango@image...>
+  * Prevent spurious removal of MPC cache files (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30256).
+  * Note alpha channel when combining 4 or more images (reference
+    https://github.com/ImageMagick/ImageMagick/issues/250).
+
+2016-08-06  7.0.2-7 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.2-7, GIT revision 10980:ecc03a2:20160806.
+
+2016-08-01  7.0.2-7 Cristy  <quetzlzacatenango@image...>
+  * Evaluate lazy pixel cache morphology to prevent buffer overflow (bug report
+    from Ibrahim M. El-Sayed).
+  * Prevent buffer overflow (bug report from Max Thrane).
+  * Prevent memory use after free (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=30245).
+
+2016-07-30  7.0.2-6 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.2-6, GIT revision 18651:df24175:20160729.
+
+2016-07-29  7.0.2-6 Cristy  <quetzlzacatenango@image...>
+  * Support -region option (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=29692).
+
+2016-07-21  7.0.2-5 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.2-5, GIT revision 18627:2b5ddbd:20160721.
+
+2016-07-13  7.0.2-5 Cristy  <quetzlzacatenango@image...>
+  * Fix MVG stroke-opacity (reference
+    https://github.com/ImageMagick/ImageMagick/issues/229).
+  * Prevent possible buffer overflow when reading TIFF images (bug report from
+    Shi Pu of MS509 Team).
+  * Initialize index channel to get expected results from the stegano coder.
+
+2016-07-11  7.0.2-4 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.2-4, GIT revision 18591:50debe5:20160710.
+
+2016-07-10  7.0.2-4 Cristy  <quetzlzacatenango@image...>
+  * To comply with the SVG standard, use stroke-opacity for transparent strokes.
+  * Define CompositeChannels mask to Red, Green, Blue, Alpha, and Black.
+
+2016-07-09  7.0.2-3 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.2-3, GIT revision 18572:28560fc:20160709.
+
+2016-07-01  7.0.2-3 Cristy  <quetzlzacatenango@image...>
+  * Patch so -kuwahara option can preserve colormapped edges.
+  * The histogram coder now returns the correct extent.
+  * Use CopyMagickString() rather than CopyMagickMemory() for strings.
+
+2016-06-26  7.0.2-2 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.2-2, GIT revision 18514:a7b5b46:20160626.
+
+2016-06-23  7.0.2-2 Cristy  <quetzlzacatenango@image...>
+  * Correct for numerical instability (reference
+    https://github.com/ImageMagick/ImageMagick/issues/218).
+
+2016-06-21  7.0.2-1 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.2-1, GIT revision 18479:931319b:20160622.
+
+2016-06-17  7.0.2-1 Dirk Lemstra <dirk@lem.....org>
+  * Added support for GROUP4 compression to the FAX coder.
+
+2016-06-12  7.0.2-1 Cristy  <quetzlzacatenango@image...>
+  * Distort no longer converts grayscale image to sRGB (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=1&t=29895).
+  * Don't return a zero bounding box for QueryMultilineFontMetrics() (reference
+    https://github.com/ImageMagick/ImageMagick/issues/222).
+
+2016-06-12  7.0.2-0 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.2-0, GIT revision 10884:f0e15e8:20160612.
+
+2016-06-09  7.0.2-0 Cristy  <quetzlzacatenango@image...>
+  * Backoff finite precision epsilon (reference
+    https://github.com/ImageMagick/ImageMagick/issues/215).
+  * Fix drawing glitch for stroke widths greater than 2 (reference
+    https://github.com/ImageMagick/ImageMagick/issues/218).
+
+2016-06-05  7.0.1-10 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.1-10, GIT revision 18406:ba4ad2d:20160607.
+
+2016-06-04  7.0.1-10 Cristy  <quetzlzacatenango@image...>
+  * Deny indirect reads by policy, remove policy to permit, e.g.,
+    convert caption:@mytext.txt ...
+  * RLE check for pixel offset less than 0 (heap overflow report from Craig
+    Young).
+  * Properly initialze PES blocks (reference
+    https://github.com/ImageMagick/ImageMagick/issues/213).
+
+2016-06-03  7.0.1-9 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.1-9, GIT revision 10847:339f803:20160602.
+
+2016-06-02  7.0.1-9 Cristy  <quetzlzacatenango@image...>
+  * Fix small memory leak (patch provided by Андрей Черный).
+  * Coder path traversal is not authorized (bug report provided by
+    Masaaki Chida).
+  * Turn off alpha channel for the compare difference image (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29828).
+
+2016-05-31  7.0.1-8 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.1-8, GIT revision 18334:97775b5:20160531.
+
+2016-05-31  7.0.1-8 Cristy  <quetzlzacatenango@image...>
+  * Support configure script --enable-pipes option to enable pipes (|) in
+    filenames.
+  * Support configure script --enable-indirect-reads option to enable
+    indirect reads (@) in filenames.
+
+2016-05-30  7.0.1-7 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.1-7, GIT revision 18321:5511ef5:20160530.
+
+2016-05-25  7.0.1-7 Cristy  <quetzlzacatenango@image...>
+  * Security improvements to TEXT coder broke it (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29754).
+  * Fix stroke offset problem for -annotate (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29626).
+  * Don't interpret -fx option arguments (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29774);
+  * Add additional checks to DCM reader to prevent data-driven faults (bug
+    report from Hanno Böck).
+
+2016-05-21  7.0.1-6 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.1-6, GIT revision 18241:d4f277c:20160521.
+
+2016-05-20  7.0.1-6 Cristy  <quetzlzacatenango@image...>
+  * Fixed proper placement of text annotation for east / west gravity.
+
+2016-05-18  7.0.1-5 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.1-5, GIT revision 10789:f7c2e89:20160518,
+
+2016-05-18  7.0.1-5 Cristy  <quetzlzacatenango@image...>
+  * Process channels independently for -channel -equalize (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=3&t=29708).
+  * Fix pixel cache on disk regression (reference
+    https://github.com/ImageMagick/ImageMagick/issues/202).
+
+2016-05-15  7.0.1-4 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.1-4, GIT revision 10778:52dae14:20160516.
+
+2016-05-10  7.0.1-4 Cristy  <quetzlzacatenango@image...>
+  * Prevent possible shell command injection vulnerability through the
+    authenticate parameter of the PDF, PCL and XPS coders (report from
+    Erez Turjeman).
+  * Quote passwords when passed to a delegate program.
+  * Iterate channels over source image rather than destination (bug report
+    from Hanno Böck).
+  * Can read geo-related EXIF metdata once-again (reference
+    https://github.com/ImageMagick/ImageMagick/issues/198).
+  * Sanitize all delegate emedded formatting characters.
+  * Don't sync pixel cache in AcquireAuthenticCacheView() (bug report from
+    Hanno Böck).
+
+2016-05-09  7.0.1-3 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.1-3, GIT revision 10755:d540dda:20160509.
+
+2016-05-07  7.0.1-3 Cristy  <quetzlzacatenango@image...>
+  * Remove https delegate.
+
+2016-05-06  7.0.1-2 Cristy  <quetzlzacatenango@image...>
+  * Release ImageMagick version 7.0.1-2, GIT revision 10741:5746147:20160507.
+
+2016-05-04  7.0.1-2 Cristy  <quetzlzacatenango@image...>
+  * Check for buffer overflow in magick/draw.c/DrawStrokePolygon().
+  * Replace show delegate title with image filename rather than label.
+  * Fix GetNextToken() off by one error.
+  * Remove support for internal ephemeral coder.
+
+2016-05-03  7.0.1-1 Cristy  <quetzlzacatenango@image...>
+  * New version 7.0.1-1, GIT revision 10723:9fc8a0c:20160503.
+
+2016-05-03  7.0.1-1 Cristy  <quetzlzacatenango@image...>
+  * Sanitize input filename for http / https delegates (improved patch).
+  * Fix for possible security vulnerabilities (reference
+    https://imagemagick.org/discourse-server/viewtopic.php?f=4&t=29588).
+
+2016-04-30  7.0.1-0 Cristy  <quetzlzacatenango@image...>
+  * New version 7.0.1-0, GIT revision 10716:b527bce:20160430.
+
+2016-01-30  7.0.0-0 Fahad-Alsaidi & ShamsaHamed
+  * Add support for languages that require complex text layout (reference
+    https://github.com/ImageMagick/ImageMagick/pull/88).
+
+2012-04-27  7.0.0-0 Anthony thyssen <A.Thyssen@griffith...>
+  * Allow the use of set and escapes when no images in memory
+    (unless you attempt to access per-image meta-data)
+    Currently does not include %[fx:...] and %[pixel:...]
+
+2012-10-05  7.0.0-0 Anthony thyssen <A.Thyssen@griffith...>
+  * Rather than replicate 'options' into 'artifacts' make a link
+    from image to image_info and lookup a global option if no artifact
+    is defined.
+
+2012-09-11  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
+  * sigmoidal-contrast:
+  * Remove unnecessary initial ClampToQuantum.
+
+2012-09-10  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
+  * sigmoidal-contrast:
+  * Direct computation, without LUT;
+  * Fix re-declaration of i (at the top, and inside a conditional).
+
+2012-09-04  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
+  * Add tanh/atanh clone of legacy sigmoidal map (faster & more accurate).
+
+2012-08-08  7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
+  * Add final ClampToQuantum in sigmoidal colormap loop.
+  * Remove OpenMP calls from colormap update loops.
+
+2011-08-01  7.0.0-0 Cristy  <quetzlzacatenango@image...>
+  * New version 7.0.0-0.
+

BIN
ImageMagick/ImageMagick.ico


+ 166 - 0
ImageMagick/ImageMagick.rdf

@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns="http://usefulinc.com/ns/doap#">
+
+  <Project>
+    <name>ImageMagick</name>
+    <shortdesc xml:lang="en">ImageMagick: convert, edit, or compose images.</shortdesc>
+    <homepage rdf:resource="http://www.imagemagick.org/"/>
+    <created>2017-03-07</created>
+
+    <description xml:lang="en">
+Introduction to ImageMagick
+
+  ImageMagick® is a software suite to create, edit, compose, or convert
+  bitmap images. It can read and write images in a variety of formats (over
+  200) including PNG, JPEG, JPEG-2000, GIF, TIFF, DPX, EXR, WebP, Postscript,
+  PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort,
+  shear and transform images, adjust image colors, apply various special
+  effects, or draw text, lines, polygons, ellipses and Bézier curves.
+  
+  The functionality of ImageMagick is typically utilized from the command
+  line or you can use the features from programs written in your favorite
+  language. Choose from these interfaces: G2F (Ada), MagickCore (C),
+  MagickWand (C), ChMagick (Ch), ImageMagickObject (COM+), Magick++ (C++),
+  JMagick (Java), L-Magick (Lisp), Lua, NMagick (Neko/haXe), Magick.NET
+  (.NET), PascalMagick (Pascal), PerlMagick (Perl), MagickWand for PHP
+  (PHP), IMagick (PHP), PythonMagick (Python), RMagick (Ruby), or TclMagick
+  (Tcl/TK). With a language interface, use ImageMagick to modify or create
+  images dynamically and automagically.
+
+  ImageMagick utilizes multiple computational threads to increase performance
+  and can read, process, or write mega-, giga-, or tera-pixel image sizes.
+  
+  ImageMagick is free software delivered as a ready-to-run binary distribution
+  or as source code that you may use, copy, modify, and distribute in both open
+  and proprietary applications. It is distributed under the Apache 2.0 license.
+  
+  The ImageMagick development process ensures a stable API and ABI. Before
+  each ImageMagick release, we perform a comprehensive security assessment
+  that includes memory error and thread data race detection to prevent
+  security vulnerabilities.
+
+  ImageMagick is available from
+  https://www.imagemagick.org/script/download.php.  It runs on Linux, Windows,
+  Mac Os X, iOS, Android OS, and others.
+
+  The authoritative ImageMagick web site is
+  https://www.imagemagick.org. The authoritative source code repository is
+  http://git.imagemagick.org/repos/ImageMagick/.
+
+
+Features and Capabilities
+  
+  Here are just a few examples of what ImageMagick can do:
+  
+      * Format conversion: convert an image from one format to another (e.g.
+        PNG to JPEG).
+      * Transform: resize, rotate, deskew, crop, flip or trim an image.
+      * Transparency: render portions of an image invisible.
+      * Draw: add shapes or text to an image.
+      * Decorate: add a border or frame to an image.
+      * Special effects: blur, sharpen, threshold, or tint an image.
+      * Animation: create a GIF animation sequence from a group of images.
+      * Text & comments: insert descriptive or artistic text in an image.
+      * Image gradients: create a gradual blend of one color whose shape is 
+        horizontal, vertical, circular, or ellipical.
+      * Image identification: describe the format and attributes of an image.
+      * Composite: overlap one image over another.
+      * Montage: juxtapose image thumbnails on an image canvas.
+      * Generalized pixel distortion: correct for, or induce image distortions
+        including perspective.
+      * Computer vision: Canny edge detection.
+      * Morphology of shapes: extract features, describe shapes and recognize
+        patterns in images.
+      * Motion picture support: read and write the common image formats used in
+        digital film work.
+      * Image calculator: apply a mathematical expression to an image or image
+        channels.
+      * Connected component labeling: uniquely label connected regions in an
+        image.
+      * Discrete Fourier transform: implements the forward and inverse DFT.
+      * Perceptual hash: maps visually identical images to the same or similar
+        hash-- useful in image retrieval, authentication, indexing, or copy
+        detection as well as digital watermarking.
+      * Complex text layout: bidirectional text support and shaping.
+      * Color management: accurate color management with color profiles or in
+        lieu of-- built-in gamma compression or expansion as demanded by the
+        colorspace.
+      * High dynamic-range images: accurately represent the wide range of
+        intensity levels found in real scenes ranging from the brightest direct
+        sunlight to the deepest darkest shadows.
+      * Encipher or decipher an image: convert ordinary images into
+        unintelligible gibberish and back again.
+      * Virtual pixel support: convenient access to pixels outside the image
+        region.
+      * Large image support: read, process, or write mega-, giga-, or
+        tera-pixel image sizes.
+      * Threads of execution support: ImageMagick is thread safe and most
+        internal algorithms are OpenMP-enabled to take advantage of speed-ups
+        offered by multicore processor chips.
+      * Distributed pixel cache: offload intermediate pixel storage to one or
+        more remote servers.
+      * Heterogeneous distributed processing: certain algorithms are
+        OpenCL-enabled to take advantage of speed-ups offered by executing in
+        concert across heterogeneous platforms consisting of CPUs, GPUs, and
+        other processors.
+      * ImageMagick on the iPhone: convert, edit, or compose images on your
+        iPhone or iPad.
+  
+  Examples of ImageMagick Usage shows how to use ImageMagick from the
+  command-line to accomplish any of these tasks and much more. Also,
+  see Fred's ImageMagick Scripts: a plethora of command-line scripts that
+  perform geometric transforms, blurs, sharpens, edging, noise removal,
+  and color manipulations. With Magick.NET, use ImageMagick without having
+  to install ImageMagick on your server or desktop.
+    </description>
+
+    <maintainer>
+      <foaf:Person>
+        <foaf:name>ImageMagick Studio LLC</foaf:name>
+        <foaf:homepage rdf:resource="http://www.imagemagick.org/"/>
+      </foaf:Person>
+    </maintainer>
+
+    <release>
+      <Version>
+          <name>stable</name>
+          <created>2017-03-07</created>
+          <revision>7.0.5</revision>
+          <patch-level>-0</patch-level>
+      </Version>
+    </release>
+
+    <download-page rdf:resource="http://www.imagemagick.org/script/download.php"/>
+    <download-mirror rdf:resource="http://sourceforge.net/projects/imagemagick/"/>
+
+    <!-- Licensing details -->
+    <license rdf:resource="http://www.imagemagick.org/script/license.php"/>
+
+    <!-- source repository -->
+    <repository>
+      <GITRepository>
+        <repositoryWebView rdf:resource="https://github.com/ImageMagick/ImageMagick"/>
+      </GITRepository>
+    </repository>
+  </Project>
+
+
+  <!--
+       optional administravia:
+       authoring tools can add more here if they'd like.
+   -->
+  <rdf:Description rdf:about="">
+    <foaf:maker>
+      <foaf:Person>
+        <foaf:name>ImageMagick Studio LLC</foaf:name>
+        <foaf:homepage rdf:resource="http://www.imagemagick.org/"/>
+      </foaf:Person>
+    </foaf:maker>
+  </rdf:Description>
+
+</rdf:RDF>
+<!-- 
+Local variables:
+mode:nxml
+End:
+-->

+ 103 - 0
ImageMagick/License.txt

@@ -0,0 +1,103 @@
+Before we get to the text of the license, lets just review what the license says in simple terms:
+
+It allows you to:
+
+  * freely download and use ImageMagick software, in whole or in part, for personal, company internal, or commercial purposes;
+  * use ImageMagick software in packages or distributions that you create;
+  * link against a library under a different license;
+  * link code under a different license against a library under this license;
+  * merge code into a work under a different license;
+  * extend patent grants to any code using code under this license;
+  * and extend patent protection.
+
+It forbids you to:
+
+  * redistribute any piece of ImageMagick-originated software without proper attribution;
+  * use any marks owned by ImageMagick Studio LLC in any way that might state or imply that ImageMagick Studio LLC endorses your distribution;
+  * use any marks owned by ImageMagick Studio LLC in any way that might state or imply that you created the ImageMagick software in question.
+
+It requires you to:
+
+  * include a copy of the license in any redistribution you may make that includes ImageMagick software;
+  * provide clear attribution to ImageMagick Studio LLC for any distributions that include ImageMagick software.
+
+It does not require you to:
+
+  * include the source of the ImageMagick software itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it;
+  * submit changes that you make to the software back to the ImageMagick Studio LLC (though such feedback is encouraged).
+
+A few other clarifications include:
+
+  * ImageMagick is freely available without charge;
+  * you may include ImageMagick on a DVD as long as you comply with the terms of the license;
+  * you can give modified code away for free or sell it under the terms of the ImageMagick license or distribute the result under a different license, but you need to acknowledge the use of the ImageMagick software;
+  * the license is compatible with the GPL V3.
+  * when exporting the ImageMagick software, review its export classification.
+
+Terms and Conditions for Use, Reproduction, and Distribution
+
+The legally binding and authoritative terms and conditions for use, reproduction, and distribution of ImageMagick follow:
+
+Copyright 1999-2020 ImageMagick Studio LLC, a non-profit organization dedicated to making software imaging solutions freely available.
+
+1. Definitions.
+
+License shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+Licensor shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+Legal Entity shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, control means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+You (or Your) shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+Source form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+Object form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+Work shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+Derivative Works shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+Contribution shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as Not a Contribution.
+
+Contributor shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+  * You must give any other recipients of the Work or Derivative Works a copy of this License; and
+  * You must cause any modified files to carry prominent notices stating that You changed the files; and
+  * You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+  * If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
+You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+How to Apply the License to your Work
+
+To apply the ImageMagick License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information (don't include the brackets). The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the ImageMagick License (the "License"); you may not use
+   this file except in compliance with the License.  You may obtain a copy
+   of the License at
+
+     https://imagemagick.org/script/license.php
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+   WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+   License for the specific language governing permissions and limitations
+   under the License.

+ 1324 - 0
ImageMagick/NOTICE.txt

@@ -0,0 +1,1324 @@
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+1. ImageMagick copyright:
+
+Copyright 1999-2015 ImageMagick Studio LLC, a non-profit organization dedicated
+to making software imaging solutions freely available.
+
+You may not use this file except in compliance with the License. You may obtain
+a copy of the License at
+
+  http://www.imagemagick.org/script/license.php
+
+Unless required by applicable law or agreed to in writing, software distributed
+under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations under the License.
+
+The full text of this license is availaible in the LICENSE file.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+2. E. I. du Pont de Nemours and Company copyright (ImageMagick was originally
+   developed and distributed by E. I. du Pont de Nemours and Company):
+
+Copyright 1999 E. I. du Pont de Nemours and Company
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files ("ImageMagick"), to deal in
+ImageMagick without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of ImageMagick, and to permit persons to whom the ImageMagick is furnished to
+do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of ImageMagick.
+
+The software is provided "as is", without warranty of any kind, express or
+implied, including but not limited to the warranties of merchantability,
+fitness for a particular purpose and noninfringement.  In no event shall E. I.
+du Pont de Nemours and Company be liable for any claim, damages or other
+liability, whether in an action of contract, tort or otherwise, arising from,
+out of or in connection with ImageMagick or the use or other dealings in
+ImageMagick.
+
+Except as contained in this notice, the name of the E. I. du Pont de Nemours
+and Company shall not be used in advertising or otherwise to promote the sale,
+use or other dealings in ImageMagick without prior written authorization from
+the E. I. du Pont de Nemours and Company.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+3. OpenSSH copyright (this copyright is limited to magick/utility.c/
+   Base64Decode() and Base64Encode(),incorporated from the OpenSSH package):
+
+Copyright (c) 2000 Markus Friedl.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR \`\`AS IS\'\' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
+EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+4. Xfig copyright (this copyright is limited to the image patterns in
+   magick/nt-base.c, incorporated from the XFig package):
+
+| FIG : Facility for Interactive Generation of figures
+| Copyright (c) 1985-1988 by Supoj Sutanthavibul
+| Parts Copyright (c) 1989-2000 by Brian V. Smith
+| Parts Copyright (c) 1991 by Paul King
+
+Any party obtaining a copy of these files is granted, free of charge, a full
+and unrestricted irrevocable, world-wide, paid up, royalty-free, nonexclusive
+right and license to deal in this software and documentation files (the
+"Software"), including without limitation the rights to use, copy, modify,
+merge, publish, distribute, sublicense, and/or sell copies of the Software, and
+to permit persons who receive copies from any such party to do so, with the
+only requirement being that this copyright notice remain intact.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+5. ezXML copyright (This copyright is limited to code for reading XML files in
+   magick/xml-tree.c, incorporated from the ezxml package):
+
+Copyright 2004-2006 Aaron Voisine <aaron@voisine.org>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+6. GraphicsMagick copyright (this copyright is limited to the Windows installer
+   and enhancements to the automake and autoconf configure scripts,
+   incorporated from the GraphicsMagick package):
+
+Copyright (C) 2002 - 2009 GraphicsMagick Group
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+7. Magick++ copyright (this copyright is limited to the Magick++ API in the
+   Magick++ folder):
+
+Copyright 1999 - 2002 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+the source files and associated documentation files ("Magick++"), to deal in
+Magick++ without restriction, including without limitation of the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of Magick++, and to permit persons to whom the Magick++ is furnished to do so,
+subject to the following conditions:
+
+This copyright notice shall be included in all copies or substantial portions
+of Magick++. The copyright to Magick++ is retained by its author and shall not
+be subsumed or replaced by any other copyright.
+
+The software is provided "as is", without warranty of any kind, express or
+implied, including but not limited to the warranties of merchantability,fitness
+for a particular purpose and noninfringement. In no event shall Bob Friesenhahn
+be liable for any claim, damages or other liability, whether in an action of
+contract, tort or otherwise, arising from, out of or in connection with
+Magick++ or the use or other dealings in Magick++.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+8. Thatcher Ulrich copyright (ImageMagick includes two fonts,
+   PerlMagick/t/ttf/input.ttf and PerlMagick/demo/Generic.ttf under this
+   copyright):
+
+  Copyright: 2004-2007, Thatcher Ulrich <tu@tulrich.com>
+
+  I have placed these fonts in the Public Domain. This is all 100% my own work.
+  Usage is totally unrestricted. If you want to make derivative works for any
+  purpose, please go ahead.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+9. Gsview copyright (ImageMagick incorporated a small portion of code from the
+   gsview package to locate Ghostscript under Windows. This source code is
+   distributed under the following license):
+
+Copyright (C) 2000-2002, Ghostgum Software Pty Ltd. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this file ("Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of this Software, and to permit persons to whom
+this file is furnished to do so, subject to the following conditions:
+
+This Software is distributed with NO WARRANTY OF ANY KIND.  No author or
+distributor accepts any responsibility for the consequences of using it, or
+for whether it serves any particular purpose or works at all, unless he or she
+says so in writing.
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+10. Libsquish copyright (this copyright is limited to the compression used in
+    coder/dds.c, incorporated from the libsquish library):
+
+Copyright (c) 2006 Simon Brown                          si@sjbrown.co.uk
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to  permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+11. Bootstrap copyright (imageMagick utilizes CSS for its web pages under this
+    copyright):
+
+Bootstrap v3.3.5 (http://getbootstrap.com)
+Copyright 2011-2015 Twitter, Inc.
+Licensed under the MIT license
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+12. Libbzip2 copyright:
+
+This program, "bzip2", the associated library "libbzip2", and all documentation,
+are copyright (C) 1996-2006 Julian R Seward.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+2. The origin of this software must not be misrepresented; you must not claim
+that you wrote the original software.  If you use this software in a product,
+an acknowledgment in the product documentation would be appreciated but is
+not required.
+
+3. Altered source versions must be plainly marked as such, and must not be
+misrepresented as being the original software.
+
+4. The name of the author may not be used to endorse or promote products
+derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
+EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGE.
+
+Julian Seward, Cambridge, UK.
+jseward@bzip.org
+bzip2/libbzip2 version 1.0.4 of 20 December 2006
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+13. OpenEXR copyright:
+
+Copyright (c) 2006, Industrial Light & Magic, a division of Lucasfilm
+Entertainment Company Ltd.  Portions contributed and copyright held by
+others as indicated.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above
+      copyright notice, this list of conditions and the following
+      disclaimer.
+
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided with
+      the distribution.
+
+    * Neither the name of Industrial Light & Magic nor the names of
+      any other contributors to this software may be used to endorse or
+      promote products derived from this software without specific prior
+      written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+14. Libffi copyright:
+
+libffi - Copyright (c) 1996-2012  Anthony Green, Red Hat, Inc and others.
+See source files for details.
+
+Permission is hereby granted, free of charge, to any person obtaininga copy
+of this software and associated documentation files (the ``Software''), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+15. JasPer copyright:
+
+JasPer License Version 2.0
+
+Copyright (c) 2001-2006 Michael David Adams
+Copyright (c) 1999-2000 Image Power, Inc.
+Copyright (c) 1999-2000 The University of British Columbia
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person (the "User")
+obtaining a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including without
+limitation the rights to use, copy, modify, merge, publish, distribute, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+1.  The above copyright notices and this permission notice (which includes
+the disclaimer below) shall be included in all copies or substantial portions
+of the Software.
+
+2.  The name of a copyright holder shall not be used to endorse or promote
+products derived from the Software without specific prior written permission.
+
+THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.  NO
+USE OF THE SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.  THE
+SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD
+PARTY RIGHTS.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER
+RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
+USE OR PERFORMANCE OF THIS SOFTWARE.  NO ASSURANCES ARE PROVIDED BY THE
+COPYRIGHT HOLDERS THAT THE SOFTWARE DOES NOT INFRINGE THE PATENT OR OTHER
+INTELLECTUAL PROPERTY RIGHTS OF ANY OTHER ENTITY. EACH COPYRIGHT HOLDER
+DISCLAIMS ANY LIABILITY TO THE USER FOR CLAIMS BROUGHT BY ANY OTHER ENTITY
+BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR OTHERWISE.  AS A
+CONDITION TO EXERCISING THE RIGHTS GRANTED HEREUNDER, EACH USER HEREBY ASSUMES
+SOLE RESPONSIBILITY TO SECURE ANY OTHER INTELLECTUAL PROPERTY RIGHTS NEEDED, IF
+ANY.  THE SOFTWARE IS NOT FAULT-TOLERANT AND IS NOT INTENDED FOR USE IN
+MISSION-CRITICAL SYSTEMS, SUCH AS THOSE USED IN THE OPERATION OF NUCLEAR
+FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL
+SYSTEMS, DIRECT LIFE SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE
+OF THE SOFTWARE OR SYSTEM COULD LEAD DIRECTLY TO DEATH,PERSONAL INJURY, OR
+SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES").  THE
+COPYRIGHT HOLDERS SPECIFICALLY DISCLAIM ANY EXPRESS OR IMPLIED WARRANTY OF
+FITNESS FOR HIGH RISK ACTIVITIES.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+16. Libjpeg-turbo copyright:
+
+The authors make NO WARRANTY or representation, either express or implied,
+with respect to this software, its quality, accuracy, merchantability, or
+fitness for a particular purpose.  This software is provided "AS IS", and you,
+its user, assume the entire risk as to its quality and accuracy.
+
+This software is copyright (C) 1991-2012, Thomas G. Lane, Guido Vollbeding.
+All Rights Reserved except as specified below.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+software (or portions thereof) for any purpose, without fee, subject to these
+conditions:
+(1) If any part of the source code for this software is distributed, then this
+README file must be included, with this copyright and no-warranty notice
+unaltered; and any additions, deletions, or changes to the original files
+must be clearly indicated in accompanying documentation.
+(2) If only executable code is distributed, then the accompanying
+documentation must state that "this software is based in part on the work of
+the Independent JPEG Group".
+(3) Permission for use of this software is granted only if the user accepts
+full responsibility for any undesirable consequences; the authors accept
+NO LIABILITY for damages of any kind.
+
+These conditions apply to any software derived from or based on the IJG code,
+not just to the unmodified library.  If you use our work, you ought to
+acknowledge us.
+
+Permission is NOT granted for the use of any IJG author's name or company name
+in advertising or publicity relating to this software or products derived from
+it.  This software may be referred to only as "the Independent JPEG Group's
+software".
+
+We specifically permit and encourage the use of this software as the basis of
+commercial products, provided that all warranty or liability claims are
+assumed by the product vendor.
+
+
+The Unix configuration script "configure" was produced with GNU Autoconf.
+It is copyright by the Free Software Foundation but is freely distributable.
+The same holds for its supporting scripts (config.guess, config.sub,
+ltmain.sh).  Another support script, install-sh, is copyright by X Consortium
+but is also freely distributable.
+
+The IJG distribution formerly included code to read and write GIF files.
+To avoid entanglement with the Unisys LZW patent, GIF reading support has
+been removed altogether, and the GIF writer has been simplified to produce
+"uncompressed GIFs".  This technique does not use the LZW algorithm; the
+resulting GIF files are larger than usual, but are readable by all standard
+GIF decoders.
+
+We are required to state that
+    "The Graphics Interchange Format(c) is the Copyright property of
+    CompuServe Incorporated.  GIF(sm) is a Service Mark property of
+    CompuServe Incorporated."
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+17. Little CMS copyright:
+
+Little CMS
+Copyright (c) 1998-2011 Marti Maria Saguer
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+18. Libxml copyright:
+
+Copyright (C) 1998-2012 Daniel Veillard.  All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is fur-
+nished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+19. Openjpeg copyright:
+
+/*
+ * The copyright in this software is being made available under the 2-clauses 
+ * BSD License, included below. This software may be subject to other third 
+ * party and contributor rights, including patent rights, and no such rights
+ * are granted under this license.
+ *
+ * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
+ * Copyright (c) 2002-2014, Professor Benoit Macq
+ * Copyright (c) 2003-2014, Antonin Descampe
+ * Copyright (c) 2003-2009, Francois-Olivier Devaux
+ * Copyright (c) 2005, Herve Drolon, FreeImage Team
+ * Copyright (c) 2002-2003, Yannick Verschueren
+ * Copyright (c) 2001-2003, David Janssens
+ * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France 
+ * Copyright (c) 2012, CS Systemes d'Information, France
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+20. Pixman copyright:
+
+The following is the MIT license, agreed upon by most contributors.
+Copyright holders of new code should use this license statement where
+possible. They may also add themselves to the list below.
+
+/*
+ * Copyright 1987, 1988, 1989, 1998  The Open Group
+ * Copyright 1987, 1988, 1989 Digital Equipment Corporation
+ * Copyright 1999, 2004, 2008 Keith Packard
+ * Copyright 2000 SuSE, Inc.
+ * Copyright 2000 Keith Packard, member of The XFree86 Project, Inc.
+ * Copyright 2004, 2005, 2007, 2008, 2009, 2010 Red Hat, Inc.
+ * Copyright 2004 Nicholas Miell
+ * Copyright 2005 Lars Knoll & Zack Rusin, Trolltech
+ * Copyright 2005 Trolltech AS
+ * Copyright 2007 Luca Barbato
+ * Copyright 2008 Aaron Plattner, NVIDIA Corporation
+ * Copyright 2008 Rodrigo Kumpera
+ * Copyright 2008 André Tupinambá
+ * Copyright 2008 Mozilla Corporation
+ * Copyright 2008 Frederic Plourde
+ * Copyright 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2009, 2010 Nokia Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+21. Libpng copyright:
+
+This copy of the libpng notices is provided for your convenience.  In case of
+any discrepancy between this copy and the notices in the file png.h that is
+included in the libpng distribution, the latter shall prevail.
+
+COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
+
+If you modify libpng you may insert additional notices immediately following
+this sentence.
+
+This code is released under the libpng license.
+
+libpng versions 1.2.6, August 15, 2004, through 1.6.17, March 26, 2015, are
+Copyright (c) 2004, 2006-2015 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-1.2.5
+with the following individual added to the list of Contributing Authors
+
+   Cosmin Truta
+
+libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are
+Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-1.0.6
+with the following individuals added to the list of Contributing Authors
+
+   Simon-Pierre Cadieux
+   Eric S. Raymond
+   Gilles Vollant
+
+and with the following additions to the disclaimer:
+
+   There is no warranty against interference with your enjoyment of the
+   library or against infringement.  There is no warranty that our
+   efforts or the library will fulfill any of your particular purposes
+   or needs.  This library is provided with all faults, and the entire
+   risk of satisfactory quality, performance, accuracy, and effort is with
+   the user.
+
+libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
+Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-0.96,
+with the following individuals added to the list of Contributing Authors:
+
+   Tom Lane
+   Glenn Randers-Pehrson
+   Willem van Schaik
+
+libpng versions 0.89, June 1996, through 0.96, May 1997, are
+Copyright (c) 1996, 1997 Andreas Dilger
+Distributed according to the same disclaimer and license as libpng-0.88,
+with the following individuals added to the list of Contributing Authors:
+
+   John Bowler
+   Kevin Bracey
+   Sam Bushell
+   Magnus Holmgren
+   Greg Roelofs
+   Tom Tanner
+
+libpng versions 0.5, May 1995, through 0.88, January 1996, are
+Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
+
+For the purposes of this copyright and license, "Contributing Authors"
+is defined as the following set of individuals:
+
+   Andreas Dilger
+   Dave Martindale
+   Guy Eric Schalnat
+   Paul Schmidt
+   Tim Wegner
+
+The PNG Reference Library is supplied "AS IS".  The Contributing Authors
+and Group 42, Inc. disclaim all warranties, expressed or implied,
+including, without limitation, the warranties of merchantability and of
+fitness for any purpose.  The Contributing Authors and Group 42, Inc.
+assume no liability for direct, indirect, incidental, special, exemplary,
+or consequential damages, which may result from the use of the PNG
+Reference Library, even if advised of the possibility of such damage.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+source code, or portions hereof, for any purpose, without fee, subject
+to the following restrictions:
+
+1. The origin of this source code must not be misrepresented.
+
+2. Altered versions must be plainly marked as such and must not
+   be misrepresented as being the original source.
+
+3. This Copyright notice may not be removed or altered from any
+   source or altered source distribution.
+
+The Contributing Authors and Group 42, Inc. specifically permit, without
+fee, and encourage the use of this source code as a component to
+supporting the PNG file format in commercial products.  If you use this
+source code in a product, acknowledgment is not required but would be
+appreciated.
+
+
+A "png_get_copyright" function is available, for convenient use in "about"
+boxes and the like:
+
+   printf("%s",png_get_copyright(NULL));
+
+Also, the PNG logo (in PNG format, of course) is supplied in the
+files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
+
+Libpng is OSI Certified Open Source Software.  OSI Certified Open Source is a
+certification mark of the Open Source Initiative.
+
+Glenn Randers-Pehrson
+glennrp at users.sourceforge.net
+March 26, 2015
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+22. Libtiff copyright:
+
+Copyright (c) 1988-1997 Sam Leffler
+Copyright (c) 1991-1997 Silicon Graphics, Inc.
+
+Permission to use, copy, modify, distribute, and sell this software and 
+its documentation for any purpose is hereby granted without fee, provided
+that (i) the above copyright notices and this permission notice appear in
+all copies of the software and related documentation, and (ii) the names of
+Sam Leffler and Silicon Graphics may not be used in any advertising or
+publicity relating to the software without the specific, prior written
+permission of Sam Leffler and Silicon Graphics.
+
+THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+
+IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
+LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+OF THIS SOFTWARE.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+23. Freetype copyright:
+
+Copyright 2006-2015 by
+David Turner, Robert Wilhelm, and Werner Lemberg.
+
+This  file is  part of  the FreeType  project, and  may only  be used,
+modified,  and distributed  under the  terms of  the  FreeType project
+license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
+this file you  indicate that you have read  the license and understand
+and accept it fully.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+24. WebP copyright:
+
+Copyright (c) 2010, Google Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+25. ZLib copyright:
+
+ (C) 1995-2013 Jean-loup Gailly and Mark Adler
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jean-loup Gailly        Mark Adler
+  jloup@gzip.org          madler@alumni.caltech.edu
+
+If you use the zlib library in a product, we would appreciate *not* receiving
+lengthy legal documents to sign.  The sources are provided for free but without
+warranty of any kind.  The library has been entirely written by Jean-loup
+Gailly and Mark Adler; it does not include third-party code.
+
+If you redistribute modified sources, we would appreciate that you include in
+the file ChangeLog history information documenting your changes.  Please read
+the FAQ for more information on the distribution of modified source versions.
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+26. GNU LESSER GENERAL PUBLIC LICENSE (used by Cairo, Croco, Flif, Glib,
+    Librsvg, Lqr, Pango):
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes a de-facto standard.  To achieve this, non-free programs must
+be allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at least
+    three years, to give the same user the materials specified in
+    Subsection 6a, above, for a charge no more than the cost of
+    performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or
+your school, if any, to sign a "copyright disclaimer" for the library,
+if necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James
+  Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

+ 136 - 0
ImageMagick/QuickStart.txt

@@ -0,0 +1,136 @@
+This file documents how to use the binary distribution packages built by
+ImageMagick Studio LLC, and found in the ImageMagick 'binaries' subdirectory
+of ImageMagick ftp sites.  Those who want to build ImageMagick from source
+code should refer to https://imagemagick.org/script/install-source.php.
+
+Unix/Linux/Darwin/Mac OS X/Cygwin/MinGW Install:
+
+  Download the appropriate binary from
+
+     ftp://ftp.imagemagick.org/pub/ImageMagick/binaries
+
+  Create (or choose) a directory to install the package into and change to that
+  directory, for example:
+
+     cd $HOME
+
+  Extract the contents of the package using the command
+
+     gzip -dc /path/to/package.tar.gz | tar -xf -
+
+  If the 'bin' subdirectory of the extracted package is not already in your
+  executable search path, add it to your PATH environment variable.  For
+  example
+
+     export PATH; PATH="$HOME/ImageMagick/bin:$PATH"
+
+  Set the MAGICK_HOME environment variable to the path where you extracted the
+  ImageMagick files. For example
+
+     export MAGICK_HOME="$HOME/ImageMagick-7.0.9"
+
+  On Linux and Solaris machines set the LD_LIBRARY_PATH environment variable:
+
+     export LD_LIBRARY_PATH="$HOME/ImageMagick-7.0.9/lib"
+
+  On Mac OS X (Darwin) machines set the DYLD_LIBRARY_PATH environment variable:
+
+     export DYLD_LIBRARY_PATH="$HOME/ImageMagick-7.0.9/lib"
+
+  Now, test ImageMagick to see if it is working
+
+     convert logo: logo.gif
+     display logo.gif
+
+  To install PerlMagick type
+
+      cd ImageMagick-7.0.9/PerlMagick
+      perl Makefile.PL
+      make
+      make install
+
+  Additional Information
+
+    Environment Variables:
+
+      In addition to the MAGICK_HOME environment variable defined above, you may
+      find these variables useful:
+
+        MAGICK_TMPDIR           path to store temporary files
+        LD_LIBRARY_PATH         path to libMagick.so and other libraries
+
+    Configuration Files
+
+      ImageMagick depends on a number of external configuration files which
+      include colors.xml, delegates.xml, and others.
+      ImageMagick searches for configuration files in the following order, and
+      loads them if found:
+
+          $MAGICK_CONFIGURE_PATH
+          $MAGICK_HOME/etc/ImageMagick
+          $MAGICK_HOME/share/ImageMagick-7.0.9/config
+          $HOME/.config/ImageMagick/
+          <client path>/etc/ImageMagick/
+          <current directory>/
+
+    Font Files
+
+      ImageMagick is able to load raw TrueType and Postscript font files.  It
+      searches for the font configuration file, type.xml, in the following
+      order, and loads them if found:
+
+          $MAGICK_CONFIGURE_PATH
+          $MAGICK_HOME/etc/ImageMagick
+          $MAGICK_HOME/share/ImageMagick-7.0.9/config
+          $HOME/.config/ImageMagick/
+          <client path>/etc/ImageMagick/
+          <current directory>/
+          $MAGICK_FONT_PATH
+
+    Module Files
+
+      ImageMagick's file format support is usually provided in the form of
+      loadable modules. It searches for loadable modules in the following order
+      and it uses the first match found:
+
+          <current directory>/
+          $MAGICK_HOME/etc/ImageMagick/modules-Q16/coders/
+          $HOME/.config/ImageMagick/
+          <client path>/../etc/ImageMagick/modules-Q16/coders/
+          $MAGICK_HOME/etc/ImageMagick/modules-Q16/coders
+          $MAGICK_HOME/share/ImageMagick-7.0.9/modules-Q16/coders
+          $HOME/.config/ImageMagick/
+          <client path>/etc/ImageMagick/modules-Q16/coders
+          <current directory>/
+
+Windows Vista, XP, and NT Install:
+
+  Download one of
+
+      ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-7.0.9-15-Q16-windows-dll.exe
+      ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-7.0.9-15-Q16-windows-static.exe
+      ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-7.0.9-15-Q8-windows-dll.exe
+      ftp://ftp.imagemagick.org/pub/ImageMagick/binaries/ImageMagick-7.0.9-15-Q8-windows-static.exe
+
+  and execute it (or "open" it from your browser) to start the installation
+  program.
+
+  Once ImageMagick is installed, Select Start->Programs->Command Prompt.  In
+  the Command Prompt window type
+
+      convert logo: logo.gif
+      imdisplay logo.gif
+
+  If you have an X11 server, from the Command Prompt window type
+
+      set DISPLAY=:0
+      display
+
+VMS Install:
+
+  Type
+
+      unzip ImageMagick.zip
+      set default [.imagemagick]
+      @make
+      identify -verbose logo:

+ 140 - 0
ImageMagick/README.txt

@@ -0,0 +1,140 @@
+Introduction to ImageMagick
+
+  ImageMagick® is a software suite to create, edit, compose, or convert
+  bitmap images. It can read and write images in a variety of formats (over
+  200) including PNG, JPEG, GIF, HEIC, TIFF, DPX, EXR, WebP, Postscript,
+  PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort,
+  shear and transform images, adjust image colors, apply various special
+  effects, or draw text, lines, polygons, ellipses and Bézier curves.
+  
+  The functionality of ImageMagick is typically utilized from the command
+  line or you can use the features from programs written in your favorite
+  language. Choose from these interfaces: G2F (Ada), MagickCore (C),
+  MagickWand (C), ChMagick (Ch), ImageMagickObject (COM+), Magick++ (C++),
+  JMagick (Java), L-Magick (Lisp), Lua, NMagick (Neko/haXe), Magick.NET
+  (.NET), PascalMagick (Pascal), PerlMagick (Perl), MagickWand for PHP
+  (PHP), IMagick (PHP), PythonMagick (Python), RMagick (Ruby), or TclMagick
+  (Tcl/TK). With a language interface, use ImageMagick to modify or create
+  images dynamically and automagically.
+
+  ImageMagick utilizes multiple computational threads to increase performance
+  and can read, process, or write mega-, giga-, or tera-pixel image sizes.
+  
+  ImageMagick is free software delivered as a ready-to-run binary distribution
+  or as source code that you may use, copy, modify, and distribute in both open
+  and proprietary applications. It is distributed under a derived Apache 2.0
+  license.
+  
+  The ImageMagick development process ensures a stable API and ABI. Before
+  each ImageMagick release, we perform a comprehensive security assessment
+  that includes memory error and thread data race detection to prevent
+  security vulnerabilities.
+
+  The current release is the ImageMagick 7.0.9-* series. It runs on Linux,
+  Windows, Mac Os X, iOS, Android OS, and others.
+
+  The authoritative ImageMagick web site is https://imagemagick.org. The
+  authoritative source code repository is https://github.com/ImageMagick. We
+  maintain a source code mirror at https://gitlab.com/ImageMagick.
+
+  We continue to maintain the legacy release of ImageMagick, version 6,
+  at https://legacy.imagemagick.org.
+
+
+Features and Capabilities
+  
+  Here are just a few examples of what ImageMagick can do:
+  
+      * Format conversion: convert an image from one format to another (e.g.
+        PNG to JPEG).
+      * Transform: resize, rotate, deskew, crop, flip or trim an image.
+      * Transparency: render portions of an image invisible.
+      * Draw: add shapes or text to an image.
+      * Decorate: add a border or frame to an image.
+      * Special effects: blur, sharpen, threshold, or tint an image.
+      * Animation: create a GIF animation sequence from a group of images.
+      * Text & comments: insert descriptive or artistic text in an image.
+      * Image gradients: create a gradual blend of one color whose shape is 
+        horizontal, vertical, circular, or ellipical.
+      * Image identification: describe the format and attributes of an image.
+      * Composite: overlap one image over another.
+      * Montage: juxtapose image thumbnails on an image canvas.
+      * Generalized pixel distortion: correct for, or induce image distortions
+        including perspective.
+      * Computer vision: Canny edge detection.
+      * Morphology of shapes: extract features, describe shapes and recognize
+        patterns in images.
+      * Motion picture support: read and write the common image formats used in
+        digital film work.
+      * Image calculator: apply a mathematical expression to an image or image
+        channels.
+      * Connected component labeling: uniquely label connected regions in an
+        image.
+      * Discrete Fourier transform: implements the forward and inverse DFT.
+      * Perceptual hash: maps visually identical images to the same or similar
+        hash-- useful in image retrieval, authentication, indexing, or copy
+        detection as well as digital watermarking.
+      * Complex text layout: bidirectional text support and shaping.
+      * Color management: accurate color management with color profiles or in
+        lieu of-- built-in gamma compression or expansion as demanded by the
+        colorspace.
+      * High dynamic-range images: accurately represent the wide range of
+        intensity levels found in real scenes ranging from the brightest direct
+        sunlight to the deepest darkest shadows.
+      * Encipher or decipher an image: convert ordinary images into
+        unintelligible gibberish and back again.
+      * Virtual pixel support: convenient access to pixels outside the image
+        region.
+      * Large image support: read, process, or write mega-, giga-, or
+        tera-pixel image sizes.
+      * Threads of execution support: ImageMagick is thread safe and most
+        internal algorithms are OpenMP-enabled to take advantage of speed-ups
+        offered by multicore processor chips.
+      * Distributed pixel cache: offload intermediate pixel storage to one or
+        more remote servers.
+      * Heterogeneous distributed processing: certain algorithms are
+        OpenCL-enabled to take advantage of speed-ups offered by executing in
+        concert across heterogeneous platforms consisting of CPUs, GPUs, and
+        other processors.
+      * ImageMagick on the iPhone: convert, edit, or compose images on your
+        iPhone or iPad.
+  
+  Examples of ImageMagick Usage * https://imagemagick.org/Usage/
+  shows how to use ImageMagick from the command-line to accomplish any
+  of these tasks and much more. Also, see Fred's ImageMagick Scripts @
+  http://www.fmwconcepts.com/imagemagick/: a plethora of command-line scripts
+  that perform geometric transforms, blurs, sharpens, edging, noise removal,
+  and color manipulations. With Magick.NET, use ImageMagick without having
+  to install ImageMagick on your server or desktop.
+
+
+News
+
+  Now that ImageMagick version 7 is released, we continue
+  to maintain the legacy release of ImageMagick, version 6, at
+  https://legacy.imagemagick.org. Learn how ImageMagick version 7 differs
+  from previous versions with our porting guide.
+
+  ImageMagick best practices strongly encourages you to configure a security
+  policy that suits your local environment.
+
+  As an analog to linear (RGB) and non-linear (sRGB) color colorspaces, as
+  of ImageMagick 7.0.7-17, we introduce the LinearGray colorspace. Gray is
+  non-linear grayscale and LinearGray is linear (e.g. -colorspace linear-gray).
+
+  Want more performance from ImageMagick? Try these options:
+
+    Add more memory to your system, see the pixel cache; Add more cores to
+    your system, see threads of execution support; push large images to a
+    solid-state drive, see large image support.
+
+  If these options are prohibitive, you can reduce the quality of the image
+  results. The default build is Q16 HDRI. If you disable HDRI, you use
+  half the memory and instead of predominately floating point operations,
+  you use the typically more efficient integer operations. The tradeoff
+  is reduced precision and you cannot process out of range pixel values
+  (e.g. negative). If you build the Q8 non-HDRI version of ImageMagick,
+  you again reduce the memory requirements in half-- and once again there
+  is a tradeoff, even less precision and no out of range pixel values. For
+  a Q8 non-HDRI build of ImageMagick, use these configure script options:
+  --with-quantum-depth=8 --disable-hdri.

+ 28 - 0
ImageMagick/colors.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE colormap [
+<!ELEMENT colormap (color)+>
+<!ELEMENT color (#PCDATA)>
+<!ATTLIST color name CDATA "0">
+<!ATTLIST color color CDATA "rgb(0,0,0)">
+<!ATTLIST color compliance CDATA "SVG">
+]>
+<!--
+  Associate a color name with its red, green, blue, and alpha intensities.
+
+  A number of methods and options require a color parameter. It is often
+  convenient to refer to a color by name (e.g. white) rather than by hex
+  value (e.g. #fff). This file maps a color name to its equivalent red,
+  green, blue, and alpha intensities (e.g. for white, red = 255, green =
+  255, blue = 255, and alpha = 0).
+-->
+<colormap>
+  <!-- <color name="none" color="rgba(0,0,0,0)" compliance="SVG, XPM"/> -->
+  <!-- <color name="black" color="rgb(0,0,0)" compliance="SVG, X11, XPM"/> -->
+  <!-- <color name="red" color="rgb(255,0,0)" compliance="SVG, X11, XPM"/> -->
+  <!-- <color name="magenta" color="rgb(255,0,255)" compliance="SVG, X11, XPM"/> -->
+  <!-- <color name="green" color="rgb(0,128,0)" compliance="SVG"/> -->
+  <!-- <color name="cyan" color="rgb(0,255,255)" compliance="SVG, X11, XPM"/> -->
+  <!-- <color name="blue" color="rgb(0,0,255)" compliance="SVG, X11, XPM"/> -->
+  <!-- <color name="yellow" color="rgb(255,255,0)" compliance="SVG, X11, XPM"/> -->
+  <!-- <color name="white" color="rgb(255,255,255)" compliance="SVG, X11"/> -->
+</colormap>

+ 18 - 0
ImageMagick/configure.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE configuremap [
+<!ELEMENT configuremap (configure)+>
+<!ELEMENT configure (#PCDATA)>
+<!ATTLIST configure name CDATA #REQUIRED>
+<!ATTLIST configure value CDATA #REQUIRED>
+]>
+<configuremap>
+  <configure name="NAME" value="ImageMagick"/>
+  <configure name="LIB_VERSION" value="0x709"/>
+  <configure name="LIB_VERSION_NUMBER" value="7,0,9,17"/>
+  <configure name="RELEASE_DATE" value="2020-01-19"/>
+  <configure name="VERSION" value="7.0.9"/>
+  <configure name="CC" value="VS2013"/>
+  <configure name="HOST" value="Windows"/>
+  <configure name="COPYRIGHT" value="Copyright (C) 1999-2020 ImageMagick Studio LLC"/>
+  <configure name="WEBSITE" value="http://www.imagemagick.org"/>
+</configuremap>

BIN
ImageMagick/dcraw.exe


+ 102 - 0
ImageMagick/delegates.xml

@@ -0,0 +1,102 @@
+<?xml version="1.0"?>
+<!DOCTYPE delegatemap [
+<!ELEMENT delegatemap (delegate)+>
+<!ELEMENT delegate (#PCDATA)>
+<!ATTLIST delegate decode CDATA #IMPLIED>
+<!ATTLIST delegate encode CDATA #IMPLIED>
+<!ATTLIST delegate mode CDATA #IMPLIED>
+<!ATTLIST delegate spawn CDATA #IMPLIED>
+<!ATTLIST delegate stealth CDATA #IMPLIED>
+<!ATTLIST delegate thread-support CDATA #IMPLIED>
+<!ATTLIST delegate command CDATA #REQUIRED>
+]>
+<!--
+  Delegate command file.
+
+  Commands which specify
+
+    decode="in_format" encode="out_format"
+
+  specify the rules for converting from in_format to out_format These
+  rules may be used to translate directly between formats.
+
+  Commands which specify only
+
+    decode="in_format"
+
+  specify the rules for converting from in_format to some format that
+  ImageMagick will automatically recognize. These rules are used to
+  decode formats.
+
+  Commands which specify only
+
+   encode="out_format"
+
+  specify the rules for an "encoder" which may accept any input format.
+
+  For delegates other than ps:alpha, ps:color, ps:mono, and mpeg-encode the
+  substitution rules are as follows:
+
+    %i  input image filename
+    %o  output image filename
+    %u  unique temporary filename
+    %#  input image signature
+    %b  image file size
+    %c  input image comment
+    %g  image geometry
+    %h  image rows (height)
+    %k  input image number colors
+    %l  image label
+    %m  input image format
+    %p  page number
+    %q  input image depth
+    %s  scene number
+    %w  image columns (width)
+    %x  input image x resolution
+    %y  input image y resolution
+
+-->
+<delegatemap>
+  <delegate decode="bpg" command="cmd.exe /c (&quot;bpgdec&quot; -b 16 -o &quot;%o.png&quot; &quot;%i&quot;) &amp; (move &quot;%o.png&quot; &quot;%o&quot; >nul)"/>
+  <delegate decode="png" encode="bpg" command="&quot;bpgenc&quot; -b 12 -q %~ -o &quot;%o&quot; &quot;%i&quot;"/>
+  <delegate decode="browse" stealth="True" spawn="True" command="cmd.exe /c start &quot;&quot; http://www.imagemagick.org/"/>
+  <delegate decode="dng:decode" stealth="True" command="dcraw.exe -6 -W -O &quot;%u.ppm&quot; &quot;%i&quot;"/>
+  <delegate decode="dot" command="dot -Tps &quot;%i&quot; -o &quot;%o&quot;"/>
+  <delegate decode="dvi" command="dvips -q -o &quot;%o&quot; &quot;%i&quot;"/>
+  <delegate decode="edit" stealth="True" command="notepad &quot;%o&quot;"/>
+  <delegate decode="eps" encode="pdf" mode="bi" command="&quot;@PSDelegate@&quot; -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -sDEVICE=pdfwrite &quot;-sOutputFile=%o&quot; -- &quot;%i&quot;"/>
+  <delegate decode="eps" encode="ps" mode="bi" command="&quot;@PSDelegate@&quot; -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 -sDEVICE=ps2write &quot;-sOutputFile=%o&quot; -- &quot;%i&quot;"/>
+  <delegate decode="hpg" command="hp2xx -q -m eps -f &quot;%o&quot; &quot;%i&quot;"/>
+  <delegate decode="hpgl" command="hp2xx -q -m eps -f &quot;%o&quot; &quot;%i&quot;"/>
+  <delegate decode="htm" command="html2ps -U -o &quot;%o&quot; &quot;%i&quot;"/>
+  <delegate decode="html" command="html2ps -U -o &quot;%o&quot; &quot;%i&quot;"/>
+  <delegate decode="jxr" command="cmd.exe /c (move &quot;%i&quot; &quot;%i.jxr&quot; >nul) &amp; (&quot;JXRDecApp.exe&quot; -i &quot;%i.jxr&quot; -o &quot;%o.pnm&quot;) &amp; (move &quot;%i.jxr&quot; &quot;%i&quot; >nul) &amp; (move &quot;%o.pnm&quot; &quot;%o&quot; >nul)"/>
+  <delegate decode="mpeg:decode" command="&quot;ffmpeg.exe&quot; -nostdin -v -1 -i &quot;%i&quot; -vframes %S -vcodec pam -an -f rawvideo -y &quot;%u.pam&quot;"/>
+  <delegate decode="pcl:cmyk" stealth="True" command="&quot;pcl6.exe&quot; -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 &quot;-sDEVICE=pamcmyk32&quot; -dTextAlphaBits=%u -dGraphicsAlphaBits=%u &quot;-r%s&quot; %s &quot;-sOutputFile=%s&quot; &quot;%s&quot;"/>
+  <delegate decode="pcl:color" stealth="True" command="&quot;pcl6.exe&quot; -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 &quot;-sDEVICE=ppmraw&quot; -dTextAlphaBits=%u -dGraphicsAlphaBits=%u &quot;-r%s&quot; %s &quot;-sOutputFile=%s&quot; &quot;%s&quot;"/>
+  <delegate decode="pcl:mono" stealth="True" command="&quot;pcl6.exe&quot; -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 &quot;-sDEVICE=pbmraw&quot; -dTextAlphaBits=%u -dGraphicsAlphaBits=%u &quot;-r%s&quot; %s &quot;-sOutputFile=%s&quot; &quot;%s&quot;"/>
+  <delegate decode="pdf" encode="eps" mode="bi" command="&quot;@PSDelegate@&quot; -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -sDEVICE=eps2write -sPDFPassword=&quot;%a&quot; &quot;-sOutputFile=%o&quot; -- &quot;%i&quot;"/>
+  <delegate decode="pdf" encode="ps" mode="bi" command="&quot;@PSDelegate@&quot; -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 -sDEVICE=ps2write -sPDFPassword=&quot;%a&quot; &quot;-sOutputFile=%o&quot; -- &quot;%i&quot;"/>
+  <delegate decode="pgp" command="pgpv -fq &quot;%i&quot;"/>
+  <delegate decode="png" encode="launch" spawn="True" mode="encode" command="imdisplay &quot;%i&quot;" />
+  <delegate decode="png" encode="show" spawn="True" mode="encode" command="imdisplay &quot;%i&quot;" />
+  <delegate decode="png" encode="win" spawn="True" mode="encode" command="imdisplay &quot;%i&quot;" />
+  <delegate decode="pnm" encode="ilbm" mode="encode" command="ppmtoilbm -24if &quot;%i&quot; &gt; &quot;%o&quot;"/>
+  <delegate decode="pnm" encode="jxr" command="cmd.exe /c (move &quot;%i&quot; &quot;%i.pnm&quot; >nul) &amp; (&quot;JXREncApp.exe&quot; -i &quot;%i.pnm&quot; -o &quot;%o.jxr&quot;) &amp; (move &quot;%i.pnm&quot; &quot;%i&quot; >nul) &amp; (move &quot;%o.jxr&quot; &quot;%o&quot; >nul)"/>
+  <delegate decode="pnm" encode="wdp" command="cmd.exe /c (move &quot;%i&quot; &quot;%i.pnm&quot; >nul) &amp; (&quot;JXREncApp.exe&quot; -i &quot;%i.pnm&quot; -o &quot;%o.jxr&quot;) &amp; (move &quot;%i.pnm&quot; &quot;%i&quot; >nul) &amp; (move &quot;%o.jxr&quot; &quot;%o&quot; >nul)"/>
+  <delegate decode="ps:alpha" stealth="True" command="&quot;@PSDelegate@&quot; -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 &quot;-sDEVICE=pngalpha&quot; -dTextAlphaBits=%u -dGraphicsAlphaBits=%u &quot;-r%s&quot; %s &quot;-sOutputFile=%s&quot; &quot;-f%s&quot; &quot;-f%s&quot;"/>
+  <delegate decode="ps:cmyk" stealth="True" command="&quot;@PSDelegate@&quot; -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 &quot;-sDEVICE=pamcmyk32&quot; -dTextAlphaBits=%u -dGraphicsAlphaBits=%u &quot;-r%s&quot; %s &quot;-sOutputFile=%s&quot; &quot;-f%s&quot; &quot;-f%s&quot;"/>
+  <delegate decode="ps:color" stealth="True" command="&quot;@PSDelegate@&quot; -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 &quot;-sDEVICE=pnmraw&quot; -dTextAlphaBits=%u -dGraphicsAlphaBits=%u &quot;-r%s&quot; %s &quot;-sOutputFile=%s&quot; &quot;-f%s&quot; &quot;-f%s&quot;"/>
+  <delegate decode="ps" encode="eps" mode="bi" command="&quot;@PSDelegate@&quot; -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 -sDEVICE=eps2write &quot;-sOutputFile=%o&quot; -- &quot;%i&quot;"/>
+  <delegate decode="ps" encode="pdf" mode="bi" command="&quot;@PSDelegate@&quot; -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 -sDEVICE=pdfwrite &quot;-sOutputFile=%o&quot; -- &quot;%i&quot;"/>
+  <delegate decode="ps:mono" stealth="True" command="&quot;@PSDelegate@&quot; -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 &quot;-sDEVICE=pnmraw&quot; -dTextAlphaBits=%u -dGraphicsAlphaBits=%u &quot;-r%s&quot; %s &quot;-sOutputFile=%s&quot; &quot;-f%s&quot; &quot;-f%s&quot;"/>
+  <delegate decode="shtml" command="html2ps -U -o &quot;%o&quot; &quot;%i&quot;"/>
+  <delegate decode="svg" command="&quot;rsvg-convert&quot; -o &quot;%o&quot; &quot;%i&quot;"/>
+  <!-- Remove the extra space in - -export in the line below when you want to use inkscape -->
+  <!--<delegate decode="svg:decode" stealth="True" command="&quot;inkscape&quot; &quot;%s&quot; - -export-eps=&quot;%s&quot; - -export-dpi=&quot;%s&quot; - -export-background=&quot;%s&quot; - -export-background-opacity=&quot;%s&quot; &gt; &quot;%s&quot; 2&gt;&amp;1"/>-->
+  <delegate decode="wdp" command="cmd.exe /c (move &quot;%i&quot; &quot;%i.jxr&quot; >nul) &amp; (&quot;JXRDecApp.exe&quot; -i &quot;%i.jxr&quot; -o &quot;%o.pnm&quot;) &amp; (move &quot;%i.jxr&quot; &quot;%i&quot; >nul) &amp; (move &quot;%o.pnm&quot; &quot;%o&quot; >nul)"/>
+  <delegate decode="xps:cmyk" stealth="True" command="&quot;gxps.exe&quot; -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 &quot;-sDEVICE=pamcmyk32&quot; -dTextAlphaBits=%u -dGraphicsAlphaBits=%u &quot;-r%s&quot; %s &quot;-sOutputFile=%s&quot; &quot;%s&quot;"/>
+  <delegate decode="xps:color" stealth="True" command="&quot;gxps.exe&quot; -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 &quot;-sDEVICE=pnmraw&quot; -dTextAlphaBits=%u -dGraphicsAlphaBits=%u &quot;-r%s&quot; %s &quot;-sOutputFile=%s&quot; &quot;%s&quot;"/>
+  <delegate decode="xps:mono" stealth="True" command="&quot;gxps.exe&quot; -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 &quot;-sDEVICE=pbmraw&quot; -dTextAlphaBits=%u -dGraphicsAlphaBits=%u &quot;-r%s&quot; %s &quot;-sOutputFile=%s&quot; &quot;%s&quot;"/>
+  <delegate encode="mpeg:encode" stealth="True" command="&quot;ffmpeg.exe&quot; -nostdin -v -1 -i &quot;%M%%d.jpg&quot; &quot;%u.%m&quot;"/>
+</delegatemap>

+ 1709 - 0
ImageMagick/english.xml

@@ -0,0 +1,1709 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE locale [
+<!ELEMENT locale (exception)>
+<!ELEMENT exception (ANY)+>
+<!ELEMENT warning (message)+>
+<!ELEMENT error (message)+>
+<!ELEMENT fatalerror (message)+>
+<!ELEMENT message (#PCDATA)>
+<!ATTLIST locale name CDATA #REQUIRED>
+<!ATTLIST message name CDATA #REQUIRED>
+]>
+<locale name="english">
+  <exception>
+    <blob>
+      <error>
+        <message name="UnableToOpenBlob">
+          unable to open image
+        </message>
+        <message name="UnableToOpenFile">
+          unable to open file
+        </message>
+        <message name="UnableToReadBlob">
+          unable to read blob
+        </message>
+        <message name="UnableToWriteBlob">
+          unable to write blob
+        </message>
+        <message name="UnrecognizedImageFormat">
+          unrecognized image format
+        </message>
+        <message name="ZeroLengthBlobNotPermitted">
+          zero-length blob not permitted
+        </message>
+      </error>
+    </blob>
+    <cache>
+      <error>
+        <message name="CacheResourcesExhausted">
+          cache resources exhausted
+        </message>
+        <message name="IncompatibleAPI">
+          incompatible API
+        </message>
+        <message name="NoPixelsDefinedInCache">
+          no pixels defined in cache
+        </message>
+        <message name="PixelCacheIsNotOpen">
+          pixel cache is not open
+        </message>
+        <message name="PixelsAreNotAuthentic">
+          pixels are not authentic
+        </message>
+        <message name="UnableToCloneCache">
+          unable to clone cache
+        </message>
+        <message name="UnableToExtendCache">
+          unable to extend cache
+        </message>
+        <message name="UnableToGetCacheNexus">
+          unable to get cache nexus
+        </message>
+        <message name="UnableToOpenPixelCache">
+          unable to open pixel cache
+        </message>
+        <message name="UnableToPersistPixelCache">
+          unable to persist pixel cache
+        </message>
+        <message name="UnableToReadPixelCache">
+          unable to read pixel cache
+        </message>
+        <message name="UnableToWritePixelCache">
+          unable to write pixel cache
+        </message>
+      </error>
+      <fatalerror>
+        <message name="UnableToAcquireCacheView">
+          unable to acquire cache view
+        </message>
+        <message name="UnableToExtendPixelCache">
+          unable to extend pixel cache
+        </message>
+      </fatalerror>
+    </cache>
+    <coder>
+      <error>
+        <message name="ColormapTypeNotSupported">
+          colormap type not supported
+        </message>
+        <message name="ColorspaceModelIsNotSupported">
+          colorspace model is not supported
+        </message>
+        <message name="CompressNotSupported">
+          compression not supported
+        </message>
+        <message name="DataEncodingSchemeIsNotSupported">
+          data encoding scheme is not supported
+        </message>
+        <message name="DataStorageTypeIsNotSupported">
+          data storage type is not supported
+        </message>
+        <message name="DeltaPNGNotSupported">
+          delta-PNG is not supported
+        </message>
+        <message name="EncryptedWPGImageFileNotSupported">
+          encrypted WPG image file not supported
+        </message>
+        <message name="FractalCompressNotSupported">
+          fractal compression not supported
+        </message>
+        <message name="ImageColumnOrRowSizeIsNotSupported">
+          image column or row size is not supported
+        </message>
+        <message name="ImageDoesNotHaveAClipMask">
+          image does not have a clip mask
+        </message>
+        <message name="ImageDoesNotHaveAnAlphaChannel">
+          image does not have an alpha channel
+        </message>
+        <message name="ImageDoesNotHaveAThumbnail">
+          image does not have a EXIF thumbnail
+        </message>
+        <message name="ImageIsNotTiled">
+          image is not tiled
+        </message>
+        <message name="IrregularChannelGeometryNotSupported">
+          irregular channel geometry not supported
+        </message>
+        <message name="JNGCompressNotSupported">
+          JNG compression not supported
+        </message>
+        <message name="JPEGCompressNotSupported">
+          JPEG compression not supported
+        </message>
+        <message name="JPEGEmbeddingFailed">
+          JPEG embedding failed
+        </message>
+        <message name="LocationTypeIsNotSupported">
+          location type is not supported
+        </message>
+        <message name="MapStorageTypeIsNotSupported">
+          map storage type is not supported
+        </message>
+        <message name="MultidimensionalMatricesAreNotSupported">
+          multi-dimensional matrices are not supported
+        </message>
+        <message name="MultipleRecordListNotSupported">
+          multiple record list not supported
+        </message>
+        <message name="NoBitmapOnClipboard">
+          no bitmap on clipboard
+        </message>
+        <message name="NoAPP1DataIsAvailable">
+          no APP1 data is available
+        </message>
+        <message name="No8BIMDataIsAvailable">
+          no 8BIM data is available
+        </message>
+        <message name="NoColorProfileIsAvailable">
+          no color profile is available
+        </message>
+        <message name="NoDataReturned">
+          no data returned
+        </message>
+        <message name="NoImageVectorGraphics">
+          no image vector graphics; unable to generate SVG
+        </message>
+        <message name="NoIPTCProfileAvailable">
+          no IPTC profile available
+        </message>
+        <message name="NumberOfImagesIsNotSupported">
+          number of images is not supported
+        </message>
+        <message name="OnlyContinuousTonePictureSupported">
+          only continuous tone picture supported
+        </message>
+        <message name="OnlyLevelZerofilesSupported">
+          only level zero files Supported
+        </message>
+        <message name="PNGCompressNotSupported">
+          PNG compression not supported
+        </message>
+        <message name="RLECompressNotSupported">
+          RLE compression not supported
+        </message>
+        <message name="UnableToCopyProfile">
+          unable to copy profile
+        </message>
+        <message name="UnableToCreateBitmap">
+          unable to create bitmap
+        </message>
+        <message name="UnableToCreateADC">
+          unable to create a DC
+        </message>
+        <message name="UnableToDecompressImage">
+          unable to decompress image
+        </message>
+        <message name="UnableToWriteMPEGParameters">
+          unable to write MPEG parameters
+        </message>
+        <message name="UnableToZipCompressImage">
+          unable to zip-compress image
+        </message>
+        <message name="ZIPCompressNotSupported">
+          ZIP compression not supported
+        </message>
+      </error>
+      <warning>
+        <message name="ExifProfileSizeExceedsLimit">
+          exif profile size exceeds limit and will be truncated
+        </message>
+        <message name="LosslessToLossyJPEGConversion">
+          lossless to lossy JPEG conversion
+        </message>
+      </warning>
+    </coder>
+    <configure>
+      <error>
+        <message name="IncludeElementNestedTooDeeply">
+          include element nested too deeply
+        </message>
+      </error>
+      <warning>
+        <message name="UnableToOpenConfigureFile">
+          unable to access configure file
+        </message>
+        <message name="UnableToOpenModuleFile">
+          unable to open module file
+        </message>
+      </warning>
+    </configure>
+    <corrupt>
+      <image>
+        <error>
+          <message name="AnErrorHasOccurredReadingFromFile">
+            an error has occurred reading from file
+          </message>
+          <message name="AnErrorHasOccurredWritingToFile">
+            an error has occurred writing to file
+          </message>
+          <message name="CipherSupportNotEnabled">
+            cipher support not enabled
+          </message>
+          <message name="ColormapExceeds256Colors">
+            colormap exceeded 256 colors
+          </message>
+          <message name="CorruptImage">
+            corrupt image
+          </message>
+          <message name="FileFormatVersionMismatch">
+            file format version mismatch
+          </message>
+          <message name="ImageDepthNotSupported">
+            image depth not supported
+          </message>
+          <message name="ImageFileDoesNotContainAnyImageData">
+            image file does not contain any image data
+          </message>
+          <message name="ImageTypeNotSupported">
+            image type not supported
+          </message>
+          <message name="ImproperImageHeader">
+            improper image header
+          </message>
+          <message name="InsufficientImageDataInFile">
+            insufficient image data in file
+          </message>
+          <message name="InvalidColormapIndex">
+            invalid colormap index
+          </message>
+          <message name="InvalidPixel">
+            invalid pixel
+          </message>
+          <message name="LengthAndFilesizeDoNotMatch">
+            length and filesize do not match
+          </message>
+          <message name="MaximumChannelsExceeded">
+            maximum channels exceeded
+          </message>
+          <message name="MissingImageChannel">
+            missing image channel
+          </message>
+          <message name="NegativeOrZeroImageSize">
+            negative or zero image size
+          </message>
+          <message name="NonOS2HeaderSizeError">
+            non OS2 BMP header size less than 40
+          </message>
+          <message name="NotEnoughPixelData">
+            not enough pixel data
+          </message>
+          <message name="NotEnoughTiles">
+            not enough tiles found in level
+          </message>
+          <message name="TooMuchImageDataInFile">
+            too much image data in file
+          </message>
+          <message name="StaticPlanesValueNotEqualToOne">
+            static planes value not equal to 1
+          </message>
+          <message name="UnableToReadExtensionBlock">
+            unable to read extension block
+          </message>
+          <message name="UnableToReadImageHeader">
+            unable to read image header
+          </message>
+          <message name="UnableToReadImageData">
+            unable to read image data
+          </message>
+          <message name="UnableToRunlengthDecodeImage">
+            unable to runlength decode image
+          </message>
+          <message name="UnableToUncompressImage">
+            unable to uncompress image
+          </message>
+          <message name="UnexpectedEndOfFile">
+            unexpected end-of-file
+          </message>
+          <message name="UnexpectedSamplingFactor">
+            unexpected sampling factor
+          </message>
+          <message name="UnknownPatternType">
+            unknown pattern type
+          </message>
+          <message name="UnrecognizedAlphaChannelOption">
+            unrecognized alpha channel option
+          </message>
+          <message name="UnrecognizedImageCompression">
+            unrecognized compression
+          </message>
+          <message name="UnrecognizedNumberOfColors">
+            unrecognized number of colors
+          </message>
+          <message name="UnsupportedBitsPerPixel">
+            unsupported bits per pixel
+          </message>
+        </error>
+        <fatalerror>
+          <message name="UnableToPersistKey">
+            unable to persist key
+          </message>
+        </fatalerror>
+        <warning>
+          <message name="InsufficientImageDataInFile">
+            insufficient image data in file
+          </message>
+          <message name="LengthAndFilesizeDoNotMatch">
+            length and filesize do not match
+          </message>
+          <message name="SkipToSyncByte">
+            corrupt PCD image, skipping to sync byte
+          </message>
+        </warning>
+      </image>
+    </corrupt>
+    <delegate>
+      <error>
+        <message name="DelegateFailed">
+          delegate failed
+        </message>
+        <message name="FailedToComputeOutputSize">
+          failed to compute output size
+        </message>
+        <message name="FailedToRenderFile">
+          failed to render file
+        </message>
+        <message name="FailedToScanFile">
+          failed to scan file
+        </message>
+        <message name="NoTagFound">
+          no tag found
+        </message>
+        <message name="PCLDelegateFailed">
+          PCL delegate failed
+        </message>
+        <message name="PostscriptDelegateFailed">
+          Postscript delegate failed
+        </message>
+        <message name="UnableToCreateImage">
+          unable to create image
+        </message>
+        <message name="UnableToDecodeImageFile">
+          unable to decode image file
+        </message>
+        <message name="UnableToEncodeImageFile">
+          unable to encode image file
+        </message>
+        <message name="UnableToInitializeFPXLibrary">
+          unable to initialize FPX library
+        </message>
+        <message name="UnableToInitializeWMFLibrary">
+          unable to initialize WMF library
+        </message>
+        <message name="UnableToManageJP2Stream">
+          unable to manage JP2 stream
+        </message>
+        <message name="UnableToReadAspectRatio">
+          unable to read aspect ratio
+        </message>
+        <message name="UnableToReadSummaryInfo">
+          unable to read summary info
+        </message>
+        <message name="UnableToSetAffineMatrix">
+          unable to set affine matrix
+        </message>
+        <message name="UnableToSetAspectRatio">
+          unable to set aspect ratio
+        </message>
+        <message name="UnableToSetColorTwist">
+          unable to set color twist
+        </message>
+        <message name="UnableToSetContrast">
+          unable to set contrast
+        </message>
+        <message name="UnableToSetFilteringValue">
+          unable to set filtering value
+        </message>
+        <message name="UnableToSetImageTitle">
+          unable to set image title
+        </message>
+        <message name="UnableToSetJPEGLevel">
+          unable to set JPEG level
+        </message>
+        <message name="UnableToSetRegionOfInterest">
+          unable to set region of interest
+        </message>
+        <message name="UnableToSetSummaryInfo">
+          unable to set summary info
+        </message>
+        <message name="UnableToWriteSVGFormat">
+          unable to write SVG format
+        </message>
+        <message name="XPSDelegateFailed">
+          XPS delegate failed
+        </message>
+      </error>
+    </delegate>
+    <draw>
+      <error>
+        <message name="AlreadyPushingPatternDefinition">
+          already pushing pattern definition
+        </message>
+        <message name="NonconformingDrawingPrimitiveDefinition">
+          non-conforming drawing primitive definition
+        </message>
+        <message name="NotARelativeURL">
+          not a relative URL
+        </message>
+        <message name="NotCurrentlyPushingPatternDefinition">
+          not currently pushing pattern definition
+        </message>
+        <message name="SegmentStackOverflow">
+          segment stack overflow
+        </message>
+        <message name="TooManyBezierCoordinates">
+          too many bezier coordinates
+        </message>
+        <message name="UnableToPrint">
+          unable to print
+        </message>
+        <message name="UnbalancedGraphicContextPushPop">
+          unbalanced graphic context push-pop
+        </message>
+        <message name="URLNotFound">
+          URL not found
+        </message>
+        <message name="VectorGraphicsNestedTooDeeply">
+          vector graphics nested too deeply
+        </message>
+      </error>
+    </draw>
+    <file>
+      <open>
+        <error>
+          <message name="AnErrorHasOccurredReadingFromFile">
+            an error has occurred reading from file
+          </message>
+          <message name="UnableToCreateTemporaryFile">
+            unable to create temporary file
+          </message>
+          <message name="UnableToOpenFile">
+            unable to open file
+          </message>
+          <message name="UnableToWriteFile">
+            unable to write file
+          </message>
+        </error>
+      </open>
+    </file>
+    <image>
+      <error>
+        <message name="AngleIsDiscontinuous">
+          angle is discontinuous
+        </message>
+        <message name="ColormappedImageRequired">
+          colormapped image required
+        </message>
+        <message name="ColorSeparatedImageRequired">
+          color separated image required
+        </message>
+        <message name="ColorspaceColorProfileMismatch">
+          color profile operates on another colorspace
+        </message>
+        <message name="ImageDepthNotSupported">
+          image depth not supported
+        </message>
+        <message name="ImageSequenceRequired">
+          image sequence is required
+        </message>
+        <message name="ImageMorphologyDiffers">
+          image morphology differs
+        </message>
+        <message name="ImageListRequired">
+          image list is required
+        </message>
+        <message name="ImageSizeDiffers">
+          image size differs
+        </message>
+        <message name="ImagesTooDissimilar">
+          images too dissimilar
+        </message>
+        <message name="LeftAndRightImageSizesDiffer">
+          left and right image sizes differ
+        </message>
+        <message name="NegativeOrZeroImageSize">
+          negative or zero image size
+        </message>
+        <message name="NoImagesWereFound">
+          no images were found
+        </message>
+        <message name="NoImagesWereLoaded">
+          no images were loaded
+        </message>
+        <message name="TooManyClusters">
+          too many cluster
+        </message>
+        <message name="UnableToCreateColorTransform">
+          unable to create color transform
+        </message>
+        <message name="WidthOrHeightExceedsLimit">
+          width or height exceeds limit
+        </message>
+      </error>
+      <warning>
+        <message name="AssociateProfile">
+          associate profile with image, a source and destination color profile required for transform
+        </message>
+        <message name="UnableToTransformColorspace">
+          unable to transform colorspace
+        </message>
+      </warning>
+    </image>
+    <filter>
+      <error>
+        <message name="FilterFailed">
+          filter failed
+        </message>
+      </error>
+    </filter>
+    <missing>
+      <delegate>
+        <error>
+          <message name="DelegateLibrarySupportNotBuiltIn">
+            delegate library support not built-in
+          </message>
+          <message name="NoDecodeDelegateForThisImageFormat">
+            no decode delegate for this image format
+          </message>
+          <message name="NoEncodeDelegateForThisImageFormat">
+            no encode delegate for this image format
+          </message>
+        </error>
+        <warning>
+          <message name="DelegateLibrarySupportNotBuiltIn">
+            delegate library support not built-in
+          </message>
+          <message name="FreeTypeLibraryIsNotAvailable">
+            FreeType library is not available
+          </message>
+          <message name="LCMSLibraryIsNotAvailable">
+            LCMS color profile library is not available
+          </message>
+          <message name="NoEncodeDelegateForThisImageFormat">
+            no encode delegate for this image format
+          </message>
+        </warning>
+      </delegate>
+    </missing>
+    <module>
+      <error>
+        <message name="ImageCoderSignatureMismatch">
+          image coder signature mismatch
+        </message>
+        <message name="ImageFilterSignatureMismatch">
+          image filter signature mismatch
+        </message>
+        <message name="UnableToLoadModule">
+          unable to load module
+        </message>
+        <message name="UnableToRegisterImageFormat">
+          unable to register image format
+        </message>
+      </error>
+      <fatalerror>
+        <message name="UnableToInitializeModuleLoader">
+          unable to initialize module loader
+        </message>
+      </fatalerror>
+      <warning>
+        <message name="UnableToCloseModule">
+          unable to close module
+        </message>
+      </warning>
+    </module>
+    <option>
+      <error>
+        <message name="ClutImageRequired">
+          color lookup table image required
+        </message>
+        <message name="CompositeImageRequired">
+          composite image required
+        </message>
+        <message name="CurlyBracesNestedTooDeeply">
+          curly braces nested too deeply
+        </message>
+        <message name="DeprecatedOptionNoCode">
+          option deprecated, unable to execute
+        </message>
+        <message name="DivideByZero">
+          divide by zero
+        </message>
+        <message name="FrameIsLessThanImageSize">
+          frame is less than image size
+        </message>
+        <message name="GeometryDimensionsAreZero">
+          geometry dimensions are zero
+        </message>
+        <message name="GeometryDoesNotContainImage">
+          geometry does not contain image
+        </message>
+        <message name="ImageSequenceRequired">
+          image sequence is required
+        </message>
+        <message name="InterpretPropertyFailure">
+          failure to interpret image property escapes
+        </message>
+        <message name="InvalidArgument">
+          invalid argument for option
+        </message>
+        <message name="InvalidUseOfOption">
+          invalid use of option
+        </message>
+        <message name="InvalidGeometry">
+          invalid geometry
+        </message>
+        <message name="InvalidImageIndex">
+          invalid image index
+        </message>
+        <message name="InvalidNumberList">
+          invalid list of numbers
+        </message>
+        <message name="InvalidSetting">
+          invalid setting
+        </message>
+        <message name="ImagesAreNotTheSameSize">
+          images are not the same size
+        </message>
+        <message name="ImagePagesAreNotCoalesced">
+          image pages are not coalesced
+        </message>
+        <message name="ImageSizeMustExceedBevelWidth">
+          size must exceed bevel width
+        </message>
+        <message name="ImageWidthsOrHeightsDiffer">
+          image widths or heights differ
+        </message>
+        <message name="KernelWidthMustBeAnOddNumber">
+          kernel width must be an odd number
+        </message>
+        <message name="MapImageRequired">
+          map image required
+        </message>
+        <message name="MissingArgument">
+          missing required argument
+        </message>
+        <message name="MissingAnImageFilename">
+        <!-- FUTURE: Depreciate using MissingOutputFilename -->
+          missing an image filename
+        </message>
+        <message name="MissingExpression">
+          missing expression
+        </message>
+        <message name="MissingNullSeparator">
+          missing Null Image List Separator
+        </message>
+        <message name="MissingOutputFilename">
+          missing output filename
+        </message>
+        <message name="MustSpecifyAnImageName">
+          must specify an image name
+        </message>
+        <message name="MustSpecifyImageSize">
+          must specify image size
+        </message>
+        <message name="NoBlobDefined">
+          no Binary Large OBjects defined
+        </message>
+        <message name="NoClipPathDefined">
+          no clip path defined
+        </message>
+        <message name="NoImagesForWrite">
+          no images for write
+        </message>
+        <message name="NoImagesFound">
+          no images found for operation
+        </message>
+        <message name="NoImagesDefined">
+          no images defined
+        </message>
+        <message name="NoImageVectorGraphics">
+          no image vector graphics
+        </message>
+        <message name="NoSuchImage">
+          no such image
+        </message>
+        <message name="NoSuchImageChannel">
+          no such image channel
+        </message>
+        <message name="NoSuchOption">
+          no such option
+        </message>
+        <message name="NonZeroWidthAndHeightRequired">
+          non-zero width and height required
+        </message>
+        <message name="NotEnoughParameters">
+          not enough parameters
+        </message>
+        <message name="ParenthesisNestedTooDeeply">
+          parenthesis nested too deeply
+        </message>
+        <message name="ReferenceImageRequired">
+          reference image required
+        </message>
+        <message name="ReferenceIsNotMyType">
+          reference is not my type
+        </message>
+        <message name="SetReadOnlyProperty">
+          attempt to set read-only property
+        </message>
+        <message name="SteganoImageRequired">
+          stegano image required
+        </message>
+        <message name="StereoImageRequired">
+          stereo image required
+        </message>
+        <message name="SubimageSpecificationReturnsNoImages">
+          subimage specification returns no images
+        </message>
+        <message name="TwoOrMoreImagesRequired">
+          two or more images required
+        </message>
+        <message name="UnableToAccessPath">
+          unable to access file path
+        </message>
+        <message name="UnableToOpenFile">
+          unable to open file
+        </message>
+        <message name="UnableToParseExpression">
+          unable to parse expression
+        </message>
+        <message name="UnableToParseKernel">
+          unable to parse kernel string
+        </message>
+        <message name="UnbalancedBraces">
+          unbalanced braces
+        </message>
+        <message name="UnbalancedParenthesis">
+          unbalanced parenthesis
+        </message>
+        <message name="UndefinedVariable">
+          undefined variable
+        </message>
+        <message name="UnrecognizedAttribute">
+          unrecognized attribute
+        </message>
+        <message name="UnrecognizedChannelType">
+          unrecognized channel type
+        </message>
+        <message name="UnrecognizedColor">
+          unrecognized color
+        </message>
+        <message name="UnrecognizedColorspace">
+          unrecognized colorspace
+        </message>
+        <message name="UnrecognizedComposeOperator">
+          unrecognized compose operator
+        </message>
+        <message name="UnrecognizedCompressType">
+          unrecognized compress type
+        </message>
+        <message name="UnrecognizedDirectionType">
+          unrecognized direction type
+        </message>
+        <message name="UnrecognizedDisposeMethod">
+          unrecognized dispose method
+        </message>
+        <message name="UnrecognizedDistortMethod">
+          unrecognized distortion method
+        </message>
+        <message name="UnrecognizedDitherMethod">
+          unrecognized dither method
+        </message>
+        <message name="UnrecognizedEndianType">
+          unrecognized endian type
+        </message>
+        <message name="UnrecognizedElement">
+          unrecognized element
+        </message>
+        <message name="UnrecognizedEvaluateOperator">
+          unrecognized evaluate operator
+        </message>
+        <message name="UnrecognizedEventType">
+          unrecognized event type
+        </message>
+        <message name="UnrecognizedFunction">
+          unrecognized function
+        </message>
+        <message name="UnrecognizedGravityType">
+          unrecognized gravity type
+        </message>
+        <message name="UnrecognizedImageCompression">
+          unrecognized image compression
+        </message>
+        <message name="UnrecognizedImageFilter">
+          unrecognized image filter
+        </message>
+        <message name="UnrecognizedImageFormat">
+          unrecognized image format
+        </message>
+        <message name="UnrecognizedImageMode">
+          unrecognized image mode
+        </message>
+        <message name="UnrecognizedImageOrientation">
+          unrecognized image orientation
+        </message>
+        <message name="UnrecognizedImageType">
+          unrecognized image type
+        </message>
+        <message name="UnrecognizedIntentType">
+          unrecognized intent type
+        </message>
+        <message name="UnrecognizedInterlaceType">
+          unrecognized interlace type
+        </message>
+        <message name="UnrecognizedInterpolateMethod">
+          unrecognized interpolate method
+        </message>
+        <message name="UnrecognizedKernelType">
+          unrecognized kernel type
+        </message>
+        <message name="UnrecognizedListType">
+          unrecognized list type
+        </message>
+        <message name="UnrecognizedMetricType">
+          unrecognized metric type
+        </message>
+        <message name="UnrecognizedModeType">
+          unrecognized mode type
+        </message>
+        <message name="UnrecognizedMorphologyMethod">
+          unrecognized morphology method
+        </message>
+        <message name="UnrecognizedOption">
+          unrecognized option
+        </message>
+        <message name="UnrecognizedPerlMagickMethod">
+          unrecognized PerlMagick method
+        </message>
+        <message name="UnrecognizedPixelMap">
+          unrecognized pixel map
+        </message>
+        <message name="UnrecognizedPreviewType">
+          unrecognized preview type
+        </message>
+        <message name="UnrecognizedResourceType">
+          unrecognized resource type
+        </message>
+        <message name="UnrecognizedSparseColorMethod">
+          unrecognized sparse color method
+        </message>
+        <message name="UnrecognizedStorageType">
+          unrecognized storage type
+        </message>
+        <message name="UnrecognizedStretchType">
+          unrecognized stretch type
+        </message>
+        <message name="UnrecognizedStyleType">
+          unrecognized style type
+        </message>
+        <message name="UnrecognizedType">
+          unrecognized type
+        </message>
+        <message name="UnrecognizedUnitsType">
+          unrecognized units type
+        </message>
+        <message name="UnrecognizedValidateType">
+          unrecognized validate type
+        </message>
+        <message name="UnrecognizedVirtualPixelMethod">
+          unrecognized virtual pixel method
+        </message>
+        <message name="XmlInvalidAttribute">
+          XML invalid attribute
+        </message>
+        <message name="XmlInvalidContent">
+          XML invalid content
+        </message>
+        <message name="XmlMissingAttribute">
+          XML missing required attribute
+        </message>
+        <message name="XmlMissingContent">
+          XML missing required content
+        </message>
+        <message name="XmlMissingElement">
+          XML missing required element
+        </message>
+      </error>
+      <fatalerror>
+        <message name="FilenameTruncated">
+          image filename truncated
+        </message>
+        <message name="MissingAnImageFilename">
+          missing an image filename
+        </message>
+        <message name="ScriptIsBinary">
+          script is binary
+        </message>
+        <message name="ScriptTokenMemoryFailed">
+          script token too big
+        </message>
+        <message name="ScriptUnbalancedQuotes">
+          script token with unbalanced quotes
+        </message>
+        <message name="UnableToOpenScript">
+          unable to open script
+        </message>
+        <message name="UnrecognizedColormapType">
+          unrecognized colormap type
+        </message>
+        <message name="UnrecognizedColorspaceType">
+          unrecognized colorspace type
+        </message>
+        <message name="UnrecognizedEndianType">
+          unrecognized endian type
+        </message>
+        <message name="UnrecognizedImageCompressionType">
+          unrecognized compression type
+        </message>
+        <message name="UnrecognizedImageType">
+          unrecognized image type
+        </message>
+        <message name="UnrecognizedInterlaceType">
+          unrecognized interlace type
+        </message>
+        <message name="UnrecognizedListType">
+          unrecognized list type
+        </message>
+        <message name="UnrecognizedDisposeMethod">
+          unrecognized dispose method
+        </message>
+        <message name="UnrecognizedOption">
+          unrecognized option
+        </message>
+        <message name="UnrecognizedResourceType">
+          unrecognized resource type
+        </message>
+        <message name="UnrecognizedVirtualPixelMethod">
+          unrecognized virtual pixel method
+        </message>
+      </fatalerror>
+      <warning>
+        <message name="ReplacedOption">
+          option has been replaced
+        </message>
+        <message name="GeometryDoesNotContainImage">
+          geometry does not contain image
+        </message>
+        <message name="InterpretPropertyFailure">
+          failure in interpret image property escapes
+        </message>
+        <message name="InvalidSetting">
+          invalid setting
+        </message>
+        <message name="NoImageForProperty">
+          no image to apply a property
+        </message>
+        <message name="NoImageInfoForProperty">
+          no image info (wand) to apply a property
+        </message>
+        <message name="NoSuchElement">
+          no such element in list
+        </message>
+        <message name="SetReadOnlyProperty">
+          attempt to set read-only property
+        </message>
+        <message name="UnknownImageProperty">
+          unknown image property
+        </message>
+        <message name="UnrecognizedColor">
+          unrecognized color
+        </message>
+        <message name="ZeroTimeAnimation">
+          animation only contains zero time delays
+        </message>
+      </warning>
+    </option>
+    <policy>
+      <error>
+        <message name="NotAuthorized">
+          attempt to perform an operation not allowed by the security policy
+        </message>
+      </error>
+    </policy>
+    <registry>
+      <error>
+        <message name="UnableToGetRegistryID">
+          unable to get registry ID
+        </message>
+        <message name="UnableToSetRegistry">
+          unable to set registry
+        </message>
+      </error>
+    </registry>
+    <resource>
+      <limit>
+        <error>
+          <message name="ListLengthExceedsLimit">
+            list length exceeds limit
+          </message>
+          <message name="MemoryAllocationFailed">
+            memory allocation failed
+          </message>
+          <message name="PixelCacheAllocationFailed">
+            pixel cache allocation failed
+          </message>
+          <message name="TooManyExceptions">
+            too many exceptions
+          </message>
+          <message name="TooManyObjects">
+            too many objects
+          </message>
+          <message name="UnableToAcquireString">
+            unable to acquire string
+          </message>
+          <message name="UnableToAllocateColormap">
+            unable to allocate colormap
+          </message>
+          <message name="UnableToConvertFont">
+            unable to convert font
+          </message>
+          <message name="UnableToCreateColormap">
+            unable to create colormap
+          </message>
+          <message name="UnableToDitherImage">
+            unable to dither image
+          </message>
+          <message name="UnableToClonePackageInfo">
+            unable to clone package info
+          </message>
+          <message name="UnableToGetPackageInfo">
+            unable to get package info
+          </message>
+        </error>
+        <fatalerror>
+          <message name="TimeLimitExceeded">
+            time limit exceeded
+          </message>
+          <message name="UnableToAllocateDashPattern">
+            unable to allocate dash pattern
+          </message>
+          <message name="UnableToAllocateDerivatives">
+            unable to allocate derivates
+          </message>
+          <message name="UnableToAllocateGammaMap">
+            unable to allocate gamma map
+          </message>
+          <message name="UnableToAllocateImage">
+            unable to allocate image
+          </message>
+          <message name="UnableToAllocateImagePixels">
+            unable to allocate image pixels
+          </message>
+          <message name="UnableToDestroySemaphore">
+            unable to destroy semaphore
+          </message>
+          <message name="UnableToInstantiateSemaphore">
+            unable to instantiate semaphore
+          </message>
+          <message name="UnableToAcquireString">
+            unable to allocate string
+          </message>
+          <message name="MemoryAllocationFailed">
+            Memory allocation failed
+          </message>
+          <message name="UnableToConcatenateString">
+            unable to concatenate string
+          </message>
+          <message name="UnableToConvertText">
+            unable to convert text
+          </message>
+          <message name="UnableToCreateColormap">
+            unable to create colormap
+          </message>
+          <message name="UnableToCloneImage">
+            unable to clone image
+          </message>
+          <message name="UnableToDisplayImage">
+            unable to display image
+          </message>
+          <message name="UnableToEscapeString">
+            unable to escape string
+          </message>
+          <message name="UnableToInterpretMSLImage">
+            unable to interpret MSL image
+          </message>
+          <message name="UnableToLockSemaphore">
+            unable to lock semaphore
+          </message>
+          <message name="UnableToUnlockSemaphore">
+            unable to unlock semaphore
+          </message>
+        </fatalerror>
+        <warning>
+          <message name="MemoryAllocationFailed">
+            memory allocation failed
+          </message>
+        </warning>
+      </limit>
+    </resource>
+    <type>
+      <error>
+        <message name="FontSubstitutionRequired">
+          font substitution required
+        </message>
+        <message name="UnableToGetTypeMetrics">
+          unable to get type metrics
+        </message>
+        <message name="UnableToInitializeFreetypeLibrary">
+          unable to initialize freetype library
+        </message>
+        <message name="UnableToReadFont">
+          unable to read font
+        </message>
+        <message name="UnrecognizedFontEncoding">
+          unrecognized font encoding
+        </message>
+      </error>
+      <warning>
+        <message name="UnableToReadFont">
+          unable to read font
+        </message>
+      </warning>
+    </type>
+    <stream>
+      <error>
+        <message name="ImageDoesNotContainTheStreamGeometry">
+          image does not contain the stream geometry
+        </message>
+        <message name="NoStreamHandlerIsDefined">
+          no stream handler is defined
+        </message>
+        <message name="PixelCacheIsNotOpen">
+          pixel cache is not open
+        </message>
+      </error>
+    </stream>
+    <wand>
+      <error>
+        <message name="InvalidColormapIndex">
+          invalid colormap index
+        </message>
+        <message name="ZeroRegionSize">
+          zero region size
+        </message>
+        <message name="UnableToOpenFile">
+          unable to open file
+        </message>
+        <message name="QuantumDepthMismatch">
+          wand quantum depth does not match that of the core API
+        </message>
+        <message name="ContainsNoImages">
+          wand contains no images
+        </message>
+        <message name="ContainsNoIterators">
+          wand contains no iterators
+        </message>
+      </error>
+    </wand>
+    <xserver>
+      <error>
+        <message name="ColorIsNotKnownToServer">
+          color is not known to server
+        </message>
+        <message name="NoWindowWithSpecifiedIDExists">
+          no window with specified ID exists
+        </message>
+        <message name="StandardColormapIsNotInitialized">
+          standard Colormap is not initialized
+        </message>
+        <message name="UnableToConnectToRemoteDisplay">
+          unable to connect to remote display
+        </message>
+        <message name="UnableToCreateBitmap">
+          unable to create bitmap
+        </message>
+        <message name="UnableToCreateColormap">
+          unable to create colormap
+        </message>
+        <message name="UnableToCreatePixmap">
+          unable to create pixmap
+        </message>
+        <message name="UnableToCreateProperty">
+          unable to create property
+        </message>
+        <message name="UnableToCreateStandardColormap">
+          unable to create standard colormap
+        </message>
+        <message name="UnableToDisplayImageInfo">
+          unable to display image info
+        </message>
+        <message name="UnableToGetProperty">
+          unable to get property
+        </message>
+        <message name="UnableToGetStandardColormap">
+          unable to get Standard Colormap
+        </message>
+        <message name="UnableToGetVisual">
+          unable to get visual
+        </message>
+        <message name="UnableToGrabMouse">
+          unable to grab mouse
+        </message>
+        <message name="UnableToLoadFont">
+          unable to load font
+        </message>
+        <message name="UnableToMatchVisualToStandardColormap">
+          unable to match visual to Standard Colormap
+        </message>
+        <message name="UnableToOpenXServer">
+          unable to open X server
+        </message>
+        <message name="UnableToReadXWindowAttributes">
+          unable to read X window attributes
+        </message>
+        <message name="UnableToReadXWindowImage">
+          unable to read X window image
+        </message>
+        <message name="UnrecognizedColormapType">
+          unrecognized colormap type
+        </message>
+        <message name="UnrecognizedGravityType">
+          unrecognized gravity type
+        </message>
+        <message name="UnrecognizedVisualSpecifier">
+          unrecognized visual specifier
+        </message>
+      </error>
+      <fatalerror>
+        <message name="UnableToCreateCursor">
+          unable to create X cursor
+        </message>
+        <message name="UnableToCreateGraphicContext">
+          unable to create graphic context
+        </message>
+        <message name="UnableToCreateStandardColormap">
+          unable to create standard colormap
+        </message>
+        <message name="UnableToCreateTextProperty">
+          unable to create text property
+        </message>
+        <message name="UnableToCreateXWindow">
+          unable to create X window
+        </message>
+        <message name="UnableToCreateXImage">
+          unable to create X image
+        </message>
+        <message name="UnableToCreateXPixmap">
+          unable to create X pixmap
+        </message>
+        <message name="UnableToDisplayImage">
+          unable to display image
+        </message>
+        <message name="UnableToGetVisual">
+          unable to get visual
+        </message>
+        <message name="UnableToGetPixelInfo">
+          unable to get pixel info
+        </message>
+        <message name="UnableToLoadFont">
+          unable to load font
+        </message>
+        <message name="UnableToMakeXWindow">
+          unable to make X window
+        </message>
+        <message name="UnableToOpenXServer">
+          unable to open X server
+        </message>
+        <message name="UnableToViewFonts">
+          unable to view fonts
+        </message>
+      </fatalerror>
+      <warning>
+        <message name="UsingDefaultVisual">
+          using default visual
+        </message>
+        <message name="UnableToGetVisual">
+          unable to get visual
+        </message>
+      </warning>
+    </xserver>
+  </exception>
+  <monitor>
+    <AddNoise>
+      <message name="Image">
+        add noise to image
+      </message>
+    </AddNoise>
+    <Append>
+      <message name="Image">
+        append image sequence
+      </message>
+    </Append>
+    <assign>
+      <message name="Image">
+        assign image colors
+      </message>
+    </assign>
+    <Average>
+      <message name="Image">
+        average image sequence
+      </message>
+    </Average>
+    <Chop>
+      <message name="Image">
+        chop image
+      </message>
+    </Chop>
+    <Classify>
+      <message name="Image">
+        classify image colors
+      </message>
+    </Classify>
+    <ColorReplace>
+      <message name="Image">
+        replace color in image
+      </message>
+    </ColorReplace>
+    <Colorize>
+      <message name="Image">
+        colorize image
+      </message>
+    </Colorize>
+    <Combine>
+      <message name="Image">
+        combine image
+      </message>
+    </Combine>
+    <ContrastStretch>
+      <message name="Image">
+         contrast-stretch image
+      </message>
+    </ContrastStretch>
+    <Convolve>
+      <message name="Image">
+        convolve image
+      </message>
+    </Convolve>
+    <Crop>
+      <message name="Image">
+        crop image
+      </message>
+    </Crop>
+    <Decode>
+      <message name="Image">
+        decode image
+      </message>
+    </Decode>
+    <Despeckle>
+      <message name="Image">
+        despeckle image
+      </message>
+    </Despeckle>
+    <Distort>
+      <message name="Image">
+        distort image
+      </message>
+    </Distort>
+    <Dither>
+      <message name="Image">
+        dither image colors
+      </message>
+    </Dither>
+    <DullContrast>
+      <message name="Image">
+        dull image contrast
+      </message>
+    </DullContrast>
+    <Encode>
+      <message name="Image">
+        encode image
+      </message>
+    </Encode>
+    <Equalize>
+      <message name="Image">
+        equalize image
+      </message>
+    </Equalize>
+    <Flip>
+      <message name="Image">
+        flip image
+      </message>
+    </Flip>
+    <Flop>
+      <message name="Image">
+        flop image
+      </message>
+    </Flop>
+    <Frame>
+      <message name="Image">
+        add frame to image
+      </message>
+    </Frame>
+    <Fx>
+      <message name="Image">
+        fx image
+      </message>
+    </Fx>
+    <GammaCorrect>
+      <message name="Image">
+        gamma correct image
+      </message>
+    </GammaCorrect>
+    <Histogram>
+      <message name="Image">
+        compute image histogram
+      </message>
+    </Histogram>
+    <Implode>
+      <message name="Image">
+        implode image
+      </message>
+    </Implode>
+    <Level>
+      <message name="Image">
+        level image
+      </message>
+    </Level>
+    <Load>
+      <message name="Image">
+        load image
+      </message>
+      <message name="Images">
+        load images
+      </message>
+    </Load>
+    <Magnfiy>
+      <message name="Image">
+        magnfiy image
+      </message>
+    </Magnfiy>
+    <MedianFilter>
+      <message name="Image">
+        filter image with neighborhood ranking
+      </message>
+    </MedianFilter>
+    <Minify>
+      <message name="Image">
+        minify image
+      </message>
+    </Minify>
+    <Modulate>
+      <message name="Image">
+        modulate image
+      </message>
+    </Modulate>
+    <Mogrify>
+      <message name="Image">
+        mogrify image
+      </message>
+    </Mogrify>
+    <Montage>
+      <message name="Image">
+        montage image
+      </message>
+    </Montage>
+    <Morph>
+      <message name="Image">
+        morph image sequence
+      </message>
+    </Morph>
+    <Mosaic>
+      <message name="Image">
+        mosaic image
+      </message>
+    </Mosaic>
+    <Negate>
+      <message name="Image">
+        negate image
+      </message>
+    </Negate>
+    <OilPaint>
+      <message name="Image">
+        oil paint image
+      </message>
+    </OilPaint>
+    <Opaque>
+      <message name="Image">
+        set opaque color in image
+      </message>
+    </Opaque>
+    <Plasma>
+      <message name="Image">
+        plasma image
+      </message>
+    </Plasma>
+    <Preview>
+      <message name="Image">
+        preview image
+      </message>
+    </Preview>
+    <Raise>
+      <message name="Image">
+        raise image
+      </message>
+    </Raise>
+    <Recolor>
+      <message name="Image">
+        recolor color image
+      </message>
+    </Recolor>
+    <Reduce>
+      <message name="Image">
+        reduce image colors
+      </message>
+    </Reduce>
+    <ReduceNoise>
+      <message name="Image">
+        reduce the image noise
+      </message>
+    </ReduceNoise>
+    <Render>
+      <message name="Image">
+        render image
+      </message>
+    </Render>
+    <Resize>
+      <message name="Image">
+        resize image
+      </message>
+    </Resize>
+    <RGBTransform>
+      <message name="Image">
+        RGB transform image
+      </message>
+    </RGBTransform>
+    <Roll>
+      <message name="Image">
+        roll image
+      </message>
+    </Roll>
+    <Rotate>
+      <message name="Image">
+        rotate image
+      </message>
+    </Rotate>
+    <Sample>
+      <message name="Image">
+        sample image
+      </message>
+    </Sample>
+    <Save>
+      <message name="Image">
+        save image
+      </message>
+      <message name="Images">
+        save images
+      </message>
+    </Save>
+    <Scale>
+      <message name="Image">
+        scale image
+      </message>
+    </Scale>
+    <Segment>
+      <message name="Image">
+        segment image
+      </message>
+    </Segment>
+    <Separate>
+      <message name="Image">
+        extract a channel from image
+      </message>
+    </Separate>
+    <SepiaTone>
+      <message name="Image">
+        sepia-tone image
+      </message>
+    </SepiaTone>
+    <Shade>
+      <message name="Image">
+        shade image
+      </message>
+    </Shade>
+    <Sharpen>
+      <message name="Image">
+        sharpen image
+      </message>
+    </Sharpen>
+    <SharpenContrast>
+      <message name="Image">
+        sharpen image contrast
+      </message>
+    </SharpenContrast>
+    <SigmoidalContrast>
+      <message name="Image">
+        sigmoidal contrast image
+      </message>
+    </SigmoidalContrast>
+    <Solarize>
+      <message name="Image">
+        solarize image
+      </message>
+    </Solarize>
+    <Splice>
+      <message name="Image">
+        splice image
+      </message>
+    </Splice>
+    <Spread>
+      <message name="Image">
+        spread image
+      </message>
+    </Spread>
+    <Stegano>
+      <message name="Image">
+        stegano image
+      </message>
+    </Stegano>
+    <Stereo>
+      <message name="Image">
+        stereo image
+      </message>
+    </Stereo>
+    <Swirl>
+      <message name="Image">
+        swirl image
+      </message>
+    </Swirl>
+    <Texture>
+      <message name="Image">
+        texture image
+      </message>
+    </Texture>
+    <Threshold>
+      <message name="Image">
+        threshold image
+      </message>
+    </Threshold>
+    <Tile>
+      <message name="Image">
+        tile image
+      </message>
+    </Tile>
+    <Tint>
+      <message name="Image">
+        tint image
+      </message>
+    </Tint>
+    <TransformRGB>
+      <message name="Image">
+        transform RGB image
+      </message>
+    </TransformRGB>
+    <Transparent>
+      <message name="Image">
+        set transparent color in image
+      </message>
+    </Transparent>
+    <Wave>
+      <message name="Image">
+        wave image
+      </message>
+    </Wave>
+    <Write>
+      <message name="Image">
+        write image
+      </message>
+    </Write>
+    <XShear>
+      <message name="Image">
+        x shear image
+      </message>
+    </XShear>
+    <YShear>
+      <message name="Image">
+        y shear image
+      </message>
+    </YShear>
+  </monitor>
+</locale>

BIN
ImageMagick/ffmpeg.exe


BIN
ImageMagick/hp2xx.exe


BIN
ImageMagick/images/affine.png


BIN
ImageMagick/images/annotate.png


BIN
ImageMagick/images/arc.png


BIN
ImageMagick/images/atop.gif


BIN
ImageMagick/images/background.jpg


BIN
ImageMagick/images/black.png


BIN
ImageMagick/images/bluebells_clipped.jpg


BIN
ImageMagick/images/bluebells_darker.jpg


BIN
ImageMagick/images/bluebells_lin.jpg


BIN
ImageMagick/images/bluebells_log.jpg


BIN
ImageMagick/images/button.gif


BIN
ImageMagick/images/configure.jpg


BIN
ImageMagick/images/cylinder_shaded.png


BIN
ImageMagick/images/difference.png


BIN
ImageMagick/images/examples.jpg


BIN
ImageMagick/images/frame.jpg


BIN
ImageMagick/images/fuzzy-magick.png


BIN
ImageMagick/images/gaussian-blur.png


BIN
ImageMagick/images/granite.png


BIN
ImageMagick/images/imade_art2.jpg


BIN
ImageMagick/images/label.gif


BIN
ImageMagick/images/litecoin.png


BIN
ImageMagick/images/logo-sm-flop.png


BIN
ImageMagick/images/logo-sm-fx.png


BIN
ImageMagick/images/logo-sm.png


BIN
ImageMagick/images/logo.jpg


BIN
ImageMagick/images/logo.png


BIN
ImageMagick/images/montage.jpg


BIN
ImageMagick/images/mountains-clahe.jpg


BIN
ImageMagick/images/mountains-equalize.jpg


BIN
ImageMagick/images/mountains.jpg


BIN
ImageMagick/images/navy.png


BIN
ImageMagick/images/objects.gif


BIN
ImageMagick/images/objects.jpg


BIN
ImageMagick/images/objects.png


BIN
ImageMagick/images/over.gif


BIN
ImageMagick/images/patterns/bricks.png


BIN
ImageMagick/images/patterns/checkerboard.png


BIN
ImageMagick/images/patterns/circles.png


BIN
ImageMagick/images/patterns/crosshatch.png


BIN
ImageMagick/images/patterns/crosshatch30.png


BIN
ImageMagick/images/patterns/crosshatch45.png


BIN
ImageMagick/images/patterns/fishscales.png


BIN
ImageMagick/images/patterns/gray0.png


BIN
ImageMagick/images/patterns/gray10.png


BIN
ImageMagick/images/patterns/gray100.png


BIN
ImageMagick/images/patterns/gray15.png


BIN
ImageMagick/images/patterns/gray20.png


BIN
ImageMagick/images/patterns/gray25.png


BIN
ImageMagick/images/patterns/gray30.png


BIN
ImageMagick/images/patterns/gray35.png


BIN
ImageMagick/images/patterns/gray40.png


BIN
ImageMagick/images/patterns/gray45.png


BIN
ImageMagick/images/patterns/gray5.png


BIN
ImageMagick/images/patterns/gray50.png


BIN
ImageMagick/images/patterns/gray55.png


BIN
ImageMagick/images/patterns/gray60.png


BIN
ImageMagick/images/patterns/gray65.png


BIN
ImageMagick/images/patterns/gray70.png


BIN
ImageMagick/images/patterns/gray75.png


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است