tilekit 0.2.0__tar.gz → 0.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
tilekit-0.2.1/PKG-INFO ADDED
@@ -0,0 +1,198 @@
1
+ Metadata-Version: 2.4
2
+ Name: tilekit
3
+ Version: 0.2.1
4
+ Summary: tilekit
5
+ Author: zpz
6
+ Requires-Python: >=3.8
7
+ Description-Content-Type: text/markdown
8
+ License-File: LICENSE
9
+ Requires-Dist: numpy
10
+ Requires-Dist: torch
11
+ Requires-Dist: tqdm
12
+ Requires-Dist: opencv-python
13
+ Requires-Dist: rasterio
14
+ Requires-Dist: geopandas
15
+ Dynamic: license-file
16
+
17
+
18
+ # tilekit
19
+
20
+ A lightweight toolkit for downloading Jilin-1 (JL1) XYZ Tile System (XYZ) / Tile Map Service (TMS) tiles and saving them as georeferenced Geographic Tagged Image File Format (GeoTIFF) files.
21
+
22
+ `tilekit` wraps the low-level Hypertext Transfer Protocol (HTTP) requests, TMS/XYZ conversion, logging, and raster writing into a simple, high-level Application Programming Interface (API) based on `mercantile`, `rasterio`, and `Pillow`.
23
+
24
+ ## Features
25
+
26
+ * **🗺 Bounding box download:** Construct tile lists from a longitude/latitude (lon/lat) bounding box and zoom level.
27
+ * **📐 Shapefile-based download:** Use a polygon boundary (shapefile, European Petroleum Survey Group (EPSG): 4326) to determine the tile coverage.
28
+ * **🔁 XYZ → TMS conversion:** Handles the JL1 API’s TMS-style Y coordinate internally, while filenames remain in standard XYZ format.
29
+ * **⏸ Resume support / precheck:** Skips tiles that already exist on disk (`z/x/y.tif`) to avoid duplicate downloads.
30
+ * **🧍 Human-like throttling:** Randomized delays between requests to mimic human behavior and reduce the risk of rate limiting.
31
+ * **🧾 Structured logging:** Logs progress and errors both to the console and to `download.log` in the output folder.
32
+
33
+ ## Installation
34
+
35
+ Once published on the Python Package Index (PyPI):
36
+
37
+ ```bash
38
+ pip install tilekit
39
+ ```
40
+
41
+ ## Getting Started
42
+
43
+ ### 1. Download tiles by lon/lat bounding box
44
+
45
+ ```python
46
+ from tilekit.downloader import TileDownloader
47
+
48
+ def main():
49
+ min_lon = 114.98
50
+ max_lon = 117.20
51
+ min_lat = 38.69
52
+ max_lat = 41.18
53
+ zoom = 18
54
+
55
+ # JL1 API keys (replace with your own)
56
+ mk = "your_mk_token_here"
57
+ tk = "your_tk_token_here"
58
+
59
+ downloader = TileDownloader.from_lon_lat(
60
+ min_lat=min_lat,
61
+ max_lat=max_lat,
62
+ min_lon=min_lon,
63
+ max_lon=max_lon,
64
+ zoom=zoom,
65
+ mk=mk,
66
+ tk=tk,
67
+ )
68
+
69
+ print(f"Total tiles to download: {len(downloader.tile_list)}")
70
+
71
+ downloader.download_tiles(
72
+ output_folder=r"F:\xxx\JL1Tiles",
73
+ verbose_debug=False,
74
+ )
75
+
76
+ if __name__ == '__main__':
77
+ main()
78
+
79
+ ```
80
+
81
+ **This will:**
82
+
83
+ * Compute all tiles covering the bounding box at zoom level 18.
84
+ * Convert XYZ Y to JL1’s TMS convention internally.
85
+ * Download each tile and save it as `z/x/y.tif` with proper georeferencing.
86
+
87
+ ### 2. Download tiles based on a shapefile boundary
88
+
89
+ ```python
90
+ from tilekit.downloader import TileDownloader
91
+
92
+ def main():
93
+ zoom = 18
94
+ mk = "your_mk_token_here"
95
+ tk = "your_tk_token_here"
96
+
97
+ # Shapefile should be in EPSG:4326 (lon/lat)
98
+ shp_path = r"beijing.shp"
99
+
100
+ downloader = TileDownloader.from_shp(
101
+ shp_path=shp_path,
102
+ zoom=zoom,
103
+ mk=mk,
104
+ tk=tk,
105
+ )
106
+
107
+ print(f"Total tiles to download: {len(downloader.tile_list)}")
108
+
109
+ downloader.download_tiles(
110
+ output_folder=r"F:\xxx\JL1Tiles",
111
+ verbose_debug=False,
112
+ )
113
+
114
+ if __name__ == '__main__':
115
+ main()
116
+
117
+ ```
118
+
119
+ **`from_shp` will:**
120
+
121
+ * Read the shapefile using `geopandas`.
122
+ * Reproject to EPSG:4326 if necessary.
123
+ * Use the overall bounding box (`total_bounds`) to determine the tile range.
124
+
125
+ > **Note:** `geopandas` is only required if you use `from_shp`. You can install it via `pip install geopandas`.
126
+
127
+ ## API Overview
128
+
129
+ ### `TileDownloader`
130
+
131
+ ```python
132
+ from dataclasses import dataclass
133
+ from typing import Sequence, Optional, Union
134
+ from pathlib import Path
135
+ import mercantile
136
+
137
+ @dataclass
138
+ class TileDownloader:
139
+ tile_list: Sequence[mercantile.Tile]
140
+ mk: str = "..."
141
+ tk: str = "..."
142
+ zoom: Optional[int] = None
143
+
144
+ def download_tiles(
145
+ self,
146
+ output_folder: Union[str, Path],
147
+ tile_list: Optional[Sequence[mercantile.Tile]] = None,
148
+ verbose_debug: bool = False,
149
+ ) -> None:
150
+ ...
151
+
152
+ ```
153
+
154
+ **Key methods:**
155
+
156
+ * `TileDownloader.from_lon_lat(min_lat, max_lat, min_lon, max_lon, zoom, mk, tk)`: Build a downloader from a bounding box.
157
+ * `TileDownloader.from_shp(shp_path, zoom, mk, tk)`: Build a downloader from a shapefile boundary.
158
+ * `TileDownloader.from_XYZs(tiles, mk, tk)`: Build a downloader from an existing list of `mercantile.Tile` objects (all at the same zoom level).
159
+ * `TileDownloader.download_tiles(output_folder, tile_list=None, verbose_debug=False)`: Download all tiles and save as GeoTIFF files (`z/x/y.tif`), skipping files that already exist.
160
+
161
+ ## Output Format
162
+
163
+ Each downloaded tile is saved as a multi-band GeoTIFF:
164
+
165
+ * **Filename:** `output_folder/z/x/y.tif`
166
+ * **Coordinate reference system:** EPSG:4326
167
+ * **Transform:** Computed from the tile’s geographic bounds via `rasterio.transform.from_bounds`.
168
+ * **Compression:** Lempel-Ziv-Welch (LZW) (`Compression.lzw`).
169
+ * **Bands:** Derived from the source image (e.g., Red Green Blue (RGB) → 3 bands).
170
+
171
+ ## Requirements
172
+
173
+ **Core dependencies** (installed automatically when you install `tilekit`):
174
+
175
+ * `mercantile`
176
+ * `rasterio`
177
+ * `numpy`
178
+ * `requests`
179
+ * `Pillow`
180
+ * `tqdm`
181
+
182
+ **Optional dependencies** (for shapefile-based workflows):
183
+
184
+ * `geopandas`
185
+
186
+ ## Notes
187
+
188
+ * You must provide valid JL1 API keys (`mk`, `tk`) to access the tile service. The examples in this README use placeholder values; please replace them with your own.
189
+ * The downloader includes:
190
+ * A precheck step that skips already downloaded tiles.
191
+ * Randomized delays between requests via `human_delay` to reduce the risk of being rate-limited.
192
+
193
+
194
+
195
+ ## License
196
+
197
+ `tilekit` is released under the Apache 2.0 License.
198
+
@@ -0,0 +1,182 @@
1
+
2
+ # tilekit
3
+
4
+ A lightweight toolkit for downloading Jilin-1 (JL1) XYZ Tile System (XYZ) / Tile Map Service (TMS) tiles and saving them as georeferenced Geographic Tagged Image File Format (GeoTIFF) files.
5
+
6
+ `tilekit` wraps the low-level Hypertext Transfer Protocol (HTTP) requests, TMS/XYZ conversion, logging, and raster writing into a simple, high-level Application Programming Interface (API) based on `mercantile`, `rasterio`, and `Pillow`.
7
+
8
+ ## Features
9
+
10
+ * **🗺 Bounding box download:** Construct tile lists from a longitude/latitude (lon/lat) bounding box and zoom level.
11
+ * **📐 Shapefile-based download:** Use a polygon boundary (shapefile, European Petroleum Survey Group (EPSG): 4326) to determine the tile coverage.
12
+ * **🔁 XYZ → TMS conversion:** Handles the JL1 API’s TMS-style Y coordinate internally, while filenames remain in standard XYZ format.
13
+ * **⏸ Resume support / precheck:** Skips tiles that already exist on disk (`z/x/y.tif`) to avoid duplicate downloads.
14
+ * **🧍 Human-like throttling:** Randomized delays between requests to mimic human behavior and reduce the risk of rate limiting.
15
+ * **🧾 Structured logging:** Logs progress and errors both to the console and to `download.log` in the output folder.
16
+
17
+ ## Installation
18
+
19
+ Once published on the Python Package Index (PyPI):
20
+
21
+ ```bash
22
+ pip install tilekit
23
+ ```
24
+
25
+ ## Getting Started
26
+
27
+ ### 1. Download tiles by lon/lat bounding box
28
+
29
+ ```python
30
+ from tilekit.downloader import TileDownloader
31
+
32
+ def main():
33
+ min_lon = 114.98
34
+ max_lon = 117.20
35
+ min_lat = 38.69
36
+ max_lat = 41.18
37
+ zoom = 18
38
+
39
+ # JL1 API keys (replace with your own)
40
+ mk = "your_mk_token_here"
41
+ tk = "your_tk_token_here"
42
+
43
+ downloader = TileDownloader.from_lon_lat(
44
+ min_lat=min_lat,
45
+ max_lat=max_lat,
46
+ min_lon=min_lon,
47
+ max_lon=max_lon,
48
+ zoom=zoom,
49
+ mk=mk,
50
+ tk=tk,
51
+ )
52
+
53
+ print(f"Total tiles to download: {len(downloader.tile_list)}")
54
+
55
+ downloader.download_tiles(
56
+ output_folder=r"F:\xxx\JL1Tiles",
57
+ verbose_debug=False,
58
+ )
59
+
60
+ if __name__ == '__main__':
61
+ main()
62
+
63
+ ```
64
+
65
+ **This will:**
66
+
67
+ * Compute all tiles covering the bounding box at zoom level 18.
68
+ * Convert XYZ Y to JL1’s TMS convention internally.
69
+ * Download each tile and save it as `z/x/y.tif` with proper georeferencing.
70
+
71
+ ### 2. Download tiles based on a shapefile boundary
72
+
73
+ ```python
74
+ from tilekit.downloader import TileDownloader
75
+
76
+ def main():
77
+ zoom = 18
78
+ mk = "your_mk_token_here"
79
+ tk = "your_tk_token_here"
80
+
81
+ # Shapefile should be in EPSG:4326 (lon/lat)
82
+ shp_path = r"beijing.shp"
83
+
84
+ downloader = TileDownloader.from_shp(
85
+ shp_path=shp_path,
86
+ zoom=zoom,
87
+ mk=mk,
88
+ tk=tk,
89
+ )
90
+
91
+ print(f"Total tiles to download: {len(downloader.tile_list)}")
92
+
93
+ downloader.download_tiles(
94
+ output_folder=r"F:\xxx\JL1Tiles",
95
+ verbose_debug=False,
96
+ )
97
+
98
+ if __name__ == '__main__':
99
+ main()
100
+
101
+ ```
102
+
103
+ **`from_shp` will:**
104
+
105
+ * Read the shapefile using `geopandas`.
106
+ * Reproject to EPSG:4326 if necessary.
107
+ * Use the overall bounding box (`total_bounds`) to determine the tile range.
108
+
109
+ > **Note:** `geopandas` is only required if you use `from_shp`. You can install it via `pip install geopandas`.
110
+
111
+ ## API Overview
112
+
113
+ ### `TileDownloader`
114
+
115
+ ```python
116
+ from dataclasses import dataclass
117
+ from typing import Sequence, Optional, Union
118
+ from pathlib import Path
119
+ import mercantile
120
+
121
+ @dataclass
122
+ class TileDownloader:
123
+ tile_list: Sequence[mercantile.Tile]
124
+ mk: str = "..."
125
+ tk: str = "..."
126
+ zoom: Optional[int] = None
127
+
128
+ def download_tiles(
129
+ self,
130
+ output_folder: Union[str, Path],
131
+ tile_list: Optional[Sequence[mercantile.Tile]] = None,
132
+ verbose_debug: bool = False,
133
+ ) -> None:
134
+ ...
135
+
136
+ ```
137
+
138
+ **Key methods:**
139
+
140
+ * `TileDownloader.from_lon_lat(min_lat, max_lat, min_lon, max_lon, zoom, mk, tk)`: Build a downloader from a bounding box.
141
+ * `TileDownloader.from_shp(shp_path, zoom, mk, tk)`: Build a downloader from a shapefile boundary.
142
+ * `TileDownloader.from_XYZs(tiles, mk, tk)`: Build a downloader from an existing list of `mercantile.Tile` objects (all at the same zoom level).
143
+ * `TileDownloader.download_tiles(output_folder, tile_list=None, verbose_debug=False)`: Download all tiles and save as GeoTIFF files (`z/x/y.tif`), skipping files that already exist.
144
+
145
+ ## Output Format
146
+
147
+ Each downloaded tile is saved as a multi-band GeoTIFF:
148
+
149
+ * **Filename:** `output_folder/z/x/y.tif`
150
+ * **Coordinate reference system:** EPSG:4326
151
+ * **Transform:** Computed from the tile’s geographic bounds via `rasterio.transform.from_bounds`.
152
+ * **Compression:** Lempel-Ziv-Welch (LZW) (`Compression.lzw`).
153
+ * **Bands:** Derived from the source image (e.g., Red Green Blue (RGB) → 3 bands).
154
+
155
+ ## Requirements
156
+
157
+ **Core dependencies** (installed automatically when you install `tilekit`):
158
+
159
+ * `mercantile`
160
+ * `rasterio`
161
+ * `numpy`
162
+ * `requests`
163
+ * `Pillow`
164
+ * `tqdm`
165
+
166
+ **Optional dependencies** (for shapefile-based workflows):
167
+
168
+ * `geopandas`
169
+
170
+ ## Notes
171
+
172
+ * You must provide valid JL1 API keys (`mk`, `tk`) to access the tile service. The examples in this README use placeholder values; please replace them with your own.
173
+ * The downloader includes:
174
+ * A precheck step that skips already downloaded tiles.
175
+ * Randomized delays between requests via `human_delay` to reduce the risk of being rate-limited.
176
+
177
+
178
+
179
+ ## License
180
+
181
+ `tilekit` is released under the Apache 2.0 License.
182
+
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "tilekit" # 包名(import 用这个)
7
- version = "0.2.0"
7
+ version = "0.2.1"
8
8
  description = "tilekit"
9
9
  authors = [{name = "zpz"}]
10
10
  readme = "README.md"
@@ -0,0 +1,27 @@
1
+ # 限额报错返回的 content
2
+ QUOTA_EXCEEDED_IMAGE_BYTES = b'RIFFR\n\x00\x00WEBPVP8LE\n\x00\x00/\xff\xc0?\x10\xff%\x16L\xe6/\x9dA\xf7\xfc\xcf\xff\x04$t\x9c\x87\xf7\xff\xff\x9f\'\xed\xff\xefv\x84@ \x92\x12\x0c\x06\x82`l,\xee\x06\x07\xc3RV\xeb\x8c\xa2A\x94\x82u\x15\x8b\xc5\x85\xec\x9d\x8a\x8b\x96\xe1+\x8ae\xbb@x\x01\xc1\x08\x1a\x08\x1c\x19\x92?\xee8\xe8\xd9\xe7\xa9\xd7\xcb\x88\xfeO\x00_\xfd\xff\xd5\xff_\xfd\xff\xd5\xff\xffG\xa7\xa6\xd8.t1gg\xfc/\x05n\xd3\xaf\x8bcE\x06\xff>Q\xdbbY\x18=\x04\xc9\x13=bfm\x0b\xd5\xd6\xf4a\xeb\\m\tX\x05\xcc\xf0Tn\xbc\xfc\xc8\x14p/W\'\xd2\xdc.`\xd2\xfb2r\xdc4\xbd\xd6\x13\xe3\x9c\x1d\xd3\x88\x17\x8e)i\xef+\xd2B\x19\x97\x97\xde\xe6R}L\xbc\xb4\xde\xfct\x0f<\\\x7fr\xf6\xc3\xeex_\xb2 \xe9\xfb\x127\xa2b\xd8\x18r\xb0[6\xb2w\xae\xab\x15Q\x1e\xbe\xf9/\xf4\xcb\x99\xf6\xc9\'\xd1\xee\x1b`\xfb8p\xd4 H\xf9+z \xe9\xf6u\xa0\xba\x97\xe8\xa1\x8e,_\x1c\xa4U\x8e\x85\xfb\xc4H\x9a\xac$\xbd5\xf8t\x0f\x90(\xdb\xd8\xbc\x9e4QN\xf9\x00X\x1cb\x84\xc3\xfb8\xd8fE\xb5\xc1EQ(\xf5\xa7\x85\xf2O6\x846y\xdb\xbf\xd2.<\xdb\xc2\x86\xa9\xc1bo1Q\xf2\xc2\xb7\x88\xed\xcd\x87Hy/\xccj\x94OK\x1b\xf1\xa0N\x03\\NBdM\x979\xb8r\xea\xddzw\xdc\x06q\xbe\xc2\x7f\x91!\x1b\x11\xdc\xee#\x99\x0f\x89\x96\xdf;N>g\xe3\x1b\xa3\x1b\x98$\x06~\x13\x9b|\xa9t0\xf3bNl\x7f\x19\xb1\xfe\xc4\x8d\x8c\xf2A\x85\xb55\xb8\x07K\xbc\xd0\xe8\x1e\xf7&,]{\xfd\xd6z\xcf\xb7\x15\x97s#\xea\x07`\xef\xd3`\xeb6\xc4\xf7\xc4\xf9\xa5\xb5_\x8cQW?On*u\xfd\x0bK\xb8l\xd0\x7f;\t\xe1\xd5\xb0o\xb1\xff\xed\xea\x8b\xb7C\xe7\x9e\x9e\x1e-\x1c\xdc(\xea\x98o\xe9J<\x02k\xcb\x01\xa4\xa2\xb12\xf4\xd6\xfd\x1dw\xda\xd1XJ9\xe5\x99W\xd3\x9d\x9f\x9bu\xea\x10\xda\xcaa\xa2K\xa6\xe7\xdc\xcd@\xfb\xb9-\x0f%\xb2u\xe0\xf8\xe2\x90\x80K\x9f^\xfd\xacAp\x0f\x85\xafx\xdf\x1c\x8b:\xf5\x0c\xb6,\xe9\xcc\xa3G_\x87\x0b`\xa7ob\xe2\x94\x91\x8b\xd9\x08\xad^a\x88\x0c\xe5\xea\x13\xc8\x9d\x06L\xba\xca\xc8\xcb#\x03?\xc1\xc9^\xe9\xc4\x90\xacAp{\xdf]\xd0\x837\x87\xf6\xbb|7\t\xc4\x7f|\xbeH\xd4j\x06<\xbe\n\x18\x10Y}\x89DT\xc1s_\x1e\xfe\x02r|:T\xcd\xe9\xf3Y\x15\xe1\xb3\xa72\x83f\xc46\xf1\xe6\xca\xfa\x0f\x00\xf6-\xd1\x91Ch\xbc\xc3f\x15\xac\xee\xbf\xd7\x07\x1e\xf4\xec;\x81\xd0\xa66\x06z\xed\xd5/\x15`\xf4n\x86\x07\xab\x9f\xb2T\x90\\\x83\x12"+\x01\xf7\x82]6H\x0c\xecSQ\xfd\xb5\xbf\xe8c\x8d\x05\x90Z\xfekBh\xfb[\x8c\x1cLF\xd9\xd0\xa3R\x9f\x07\x9c\xeb\xc1\xe8\n\x8fU$\x99\xfeJBl\xd3\xfb\x97\x7f\x060\x99H\r[\x15\xee\xa3@\xd3\x1d\xc0\xe8\x1c,A\x80\x7f\xb4AzK\xa8\t\xba\xdb\x15\xff\x14\x03\x13N\x04\xd98i\x84\xdd\x8f\xe5\xe6cA\x13\x19!30V\x08\x87\xfd\x9b\x05G\xear\x00\xf6\xb6(\x86n\xc0\xebA\x13\xbc\xa8\x81\x81\xbb\xc0\x9b|\xa2\xa7+\x10\xdd\xc3K\xb7\xf3\x86|7t\xe4\xf9\xe28\xfa1\x1ar\xfd\x9b8\xb4f\x80\xf7y\x14Nj\x85G{\xf9\xcbBy\x1c M\x96\x135W\x02[\xfd\x97`\xec\x1a\xcc\xe5B4\xe2*eEC\\\xf9B\xa4I\x8b\xea\xc9\x05-\xa53\xbb\x1e\x04\xda\xadp\xe6\x1d\xc4i\x10Z\xcb\xfc\xea\xe3\xac\x81\xa1\x1f\xaf\x8e\x80\xceY\t\xda\x05\x07\xba\xa5\xb5\xbbf@\xd7\xf4\x16\x01\xce\xa8*\x88\x07c\xf0\xf0\x95\xa57~=\x94OJ\xd8\r\x00\xe6\xa5gI"#\x15\x9cQ\xd9\xb0\'\xd2w\x80\xe1r\x88\xf3\xfd\xc8\x86f\x04V{\xfa\xbd\xcf\x17\xa7\x90\n\xab\x14\xcey\xa0xF\x82\xaa\xa1\x8d\x04V_\xe1\x9drDO\xfe\x02\xec\x9d\x9e\x0fn\x05\xb6F\xe2A\xe3\xc9\x02\xa3l\x17\x9d\xc4\xea\xe5\xe1|\tN~\xd0\xc2\x96\xe3Q\x9d\x8d\x00\xb3\x07\x80\xeb.\xa0\xee\xa9\xe0\xe4\x07z3Qj=\x0e\x9469\x11\xe8/\x03\xf6z\x01\xa3Qp\x12\x03\xbbQ\xaf\x98\x92\x14\xf4\xded?/\x9c`\xe8\xfa\x0f"\xdc\xf8H\xc5X\xbd\xbc\x9e\xafb_I[\x8d\x9b\xfa\x89<\xbf+^l\x12\x87\xb4\x8a\xad\xa14\xb0\xd4\xcb}\x99U\xc3*\x0cM\xb7\x19\xd6\xadH\x9b\x11W}>\xb0\xff3\xaa\xdd\xcd\x19\x7f\x06]; A\xceT)YO\xdf\xedAlw\xad\xa7\xc1\x89\t\xb5\x9d\xebr\x9d\x05\xe5\xfd^\x15\xcb\x1d\x88\x12\x1c\xdcMp\xf9\x11\x06\x05\xcf\xee\xa0\x9e\x12\xb2)D\xd7`\x05\xb2\x82&\xd8\xf3\xd8oP\x1c\xf2oR\xd1\x9e\xf0\xb9\x04G\x9b\x01\x9c\x08\xdd\x8b\x87\x89\x9a\x9c\xe7\xabw^_U0~\x19\x88\xbd\xe8\x99\xb9\x1e2\x8b\xcd\x91e=\xb0{\xf4\x9d\xa4\xb9\x1fY\xbaj\xa0xI\xa7(^\x8cI\xa8\xf2\x8d\x17K\xecDl\xa5w\xbf\x00H6\xe7\xec\\\xa9\x0eH\xf0;\x15\xd2\x8c[~v\x08\xb1\x95\xf6P\x9c\xcd\x89\x0fZ\x88\xbd\xb2\xf4\xe6\xa8\x06H\xba\xed\x9f\x9e\xd5\x00\x94\x84v#\xb6\xd1%\xd3\xef\xa3/\x8c\xa3\xf58@\xf74\x17`[k\xe0\xe1\xae\x98\xc5\xa3\x8a\xe8\x99\x1dB\xa3\xaf\xf4N\x14k\x88\xfd|\x98\x8bS\x12\xaa{\x9e\xc8Mi\xc0\xaf\xaf\x15h\x10\xd8\xc4\x9b+\x81*Z\x9d\x1a~{F\xac\xaf@\x91\xf3\xc2\xff\xc7f\x80}}\x91\x1c\x85\xd0\x1e|\xb8k\xe08\xdf\xbf~\x93\x91 \xef\xa4jD\xd1yI\x0fHG\x06\xfd5\x95\xfb\x84\x07\x98\xc8c\xeb\xf3\x91@Fm7\tr&\xeaQ\xc7\xdf.^\xde\x84\xc8\x9e\xfe}#\xaf\xed\x92\xe7(\x19Rrp+\xb5}*\xba\xb2\xf9\xff\x9e\x8bAl\x0f.\xeb v\x1bX"o;l6\x80\xceFR\xc2;@{\xfd\xd3\xc4O\x1a\x84w\xfadB\x95\xaf\x03\x9csY\\\x1b\x8e\xbd0\xae\xb3\xc9\x9b\xe9r\x01\xf5Y\x88l\xd4\x06U\x1f\xe5\x81\x83\x80F\x07i\xeb+\x13\xc5\x1a.%\xb3\xf3\xcb&D\xb7\xe9]\x8d]\x83\xad+\x14\xb1\xa3\x9e\\\xbb\xe6\x1d\x06t\xa0\xffM6\t\x8f.\xab\xeeC\xdc\x19\xb9!5x1F\xad\xba{\xa79d\x93*\xc7\xc9\xf0\x0f\xecBd\x8dNT%\xbeI\x04\xcf\xa2\xbf3[B\xbd\xbdg\xe0\xcdw\x90\x86\xc8\xa6\xd4\xc9_\xec*$I\xc0x\xe9\xf6\x86\xb5\xa9s:\x95\xca\xf5?\xb4\x88\xad\xcd\x15|\x90Q\xd7\xab\xb0\xb6\x85\n\x80\xbeS\x10_>;\x0e\x98\xff\x9a\xd9\x87\xd8f\xf6\xca\xf5\x16H\t\xdb@\xebm\xa9\x19\x05i\xa1\x08@J\x85\x14\x7f\xbd\x0e\x91\x95\xf2\x87\x97\xab\x8d(]]@\x0c\xba\xcf\x07\xb0\x7f1)Hm?\x8a\x15\xb1\x1d\xf4V\xe8Q\xcf\x0f\xa7\xa0\xbc\xdeGc\x0f\x80\xcd\x15h\xb7 \xba;\xb4\xa8\xef|\x18h5\xab|\xb3\xb6\xa38\x13\x0e\x0f\xf8\xef\x9a\x11\xd78\x87\x1a\xbaj\x1dp\xf8?\xfe\xdbI\x00\x12\xd0=_{\xban\xd6s)\x1e\x915\xac\xd9\x81(\x90\xa6J\xa5\xe2\x89\xa5+\x06\x94\xff8 \xde\xeft\xd6\xde\xfb^Bd\r\xe9\xdc\xed%\xa3\xdb\r8\xbc3\xb3N\x1d\xea\x97{\xe0\x87\xb7\x08nI\x0bU\x0f1\x87\x07\xe5\xdad@\xfb\xa1^\xc3\xc6\x07}p\xde%:\x17\xdc\x14x\x8a\xc7\xd7\xdf&\xa0\xfa\xcb\x1b6\xd66y\x00\xad\xe8\x94\xbc\xc4\x12\xf1\\\xdc\x1dJQ\xd3/\xe7\xaa\xe9+\xbd\xefR\x11[m4p|\x04}\xc4\x04=\xf7!\xb96\x0b~\x7f\xa1H\xac^\x19\xfeQBh\xf5\x95\xde\xa3@\xd9\x8a\xde\x18\xd1\xc1>\xf9@g\xc0\xb5\r\x8c\x01;\xa9\rr\xaf\x1d\x91\xbd\xb19\xb1z\xb9\xd7\x0e\xd0\x12\xa9L\xf0\x03v\x7f\xa0.\x05\xe5\xf5\xcf/\x83]6\x84V\xfa\xd2\x1d\x90+\xcd\xb1\xc9;c\x19u{\xb5\tR\xde\x90\xcf\xe5\x8bE\xdd\xe9LAl3\xbaC\xb5\x19\xe7\x9eG\x02k+V|\xd6\xe93\xd2\xe8By\x9c\xf4\xf6\xe2\x06\xa2{h\xe0\xf3L3\xfa\n\xcf\x9f\x12@6%\xef\xa5\xddZ\xe0\x84G+D\x7f{.ZV\xb2\xaa\x17\x9b\xd3\x0e\xf4\x9dA\x19\xed-@\x19\xe59)D\xdfj\xe9\xf8\xb2X\x93T02\x94\x97\xa2UP9\xaaB\x99Kh.[\x151\xc0e\xaf\x9c\xe5\x98\xfa\xdb\xfem\xc7\xfc\xf6\xa8\xa3Z\xd0\xaf\x1cT\xd1 \xb4#\x0e\xa4\xa2\xb1z(\xfd\xbc\xbd.\xd4i\xfb\xfe\xaf\xa9\xd3\x86\xb2\xf9\x91d\xe0\x8f~\x15q\xb5H@kc\xc9\xb4\xa7F6R\xb4\x1bK\xf0\xcc?\xa3\x05\xc6\xeb\x9f\xdc\x07Pn\x96S\x84F\x1bJ\x05*"\x93\'\xb5\xb8\xabP\xba<\x07\xcd\xf7\xfc\xae}\x93\xb5\x06\x05\t\x88\xed\xeb\x1f\x92\xaeJen\t\xc8\xfd\xacS\xec\x90\xbbV\xeb-pt}\xe9\xa4Bt;\xde\xc9\xabE\xd7Z\x01\xa4I\'\xb0\xff/\xdfD7\xa4\xf4\xbc;\xbc?[pr\xd2\xe1\xfeZ\xbd\xa5|\xf4Fu\xeaw\xc0\x99i\x89\x13\x1f\xca\xe3Z+c\xaey\xcb\xa2\x10X\xbd\x01\xcd\xd1W\xa1kp\xfe\x15\xc4\xf9\xb2\x92\xce\x04zl\xc4|\xca%F\x0b\xafj\xa6\xeb\xbfAhGO8g_\x1f-k\x06\xdd\xa7l\xa8\x1b\x00s{\xc8Iu/\xc0\xa9\x88\xdb\x86\xc0J\xb5\xf1\xcc\x86\x9f\xe7\xe9\xc8<\x0f\\sg\xf6~\x923\x00\xdb6\x92\xc3& \xbd\x10\xa15Ft\xd2Z\x16O\xaeR\xba\x070\xacy.\xc4\xde\x7f\x80\xfa\xea\x1e\xc4w{\x98}sP\xb0\xa4;\xbb|7\x16\xee>\x86\x94`\xaa\xc2P\xeb5\t\xd0\xa1/\xa6\x9b\x8d\x86\xb3\xd2T)\xe6\xfeN0\x07\xd3\xa0\xbb\x01\xd0\xcd>IF\x80\x7f\x8f\xdcJH;<\x84c\x0e\x88\x05\xda\x9b\xb7w\xc8r"\xa0E\x88\xdfv\xf8\xe3)k\xc3\xb1n\xc0~[\x0f\xd6\xb0\xffNRy\x12\xa2\xac\x1bK\x18\xbcL\xe3\xe5\xe4\x89b\xb0\x8ez\xf3\xa1\xe7\x0e\x82}d1&\xcd\xacq\x15J\x14\xa5]\n\x9cg\xefU\xd1\x92\xde\x14\x1a\x8eK?\xcf\x0ei\xda\x7f\'=\x05\x01\x8f7X\xc2\xdf\xa2\xb5s\xb3\x1f1?\xe6\xe6\xcf\x0eHoY+\x14\xb4\x82q\xbe\x0b\x95=\x96\xeb-\x08z\xd6\x0c\xfc:^mD\xd8\xf7.!\xfa\xf1\xc2\xf7\xd5\xff_\xfd\xff\xd5\xff_\xfd\xff?v\x01\x00'
3
+
4
+ # 账号禁用报错返回的 content
5
+ ACCOUNT_BANNED_IMAGE_BYTES = b'RIFFL\r\x00\x00WEBPVP8L@\r\x00\x00/\xff\xc0?\x10\xff%\x16L\xe6/\x9dA\xf7\xfc\xcf\xff\x04$t\x9c\x07\xb6k\xdb\xa6\'\xcd\xb6_\xc9\x9d\x04\x02\x81@4\x10\x05"Q\x14\x8d\xcc \xa2\x82\x03\x8a\xa2\x11\x04\xcb\xa0(\x15EhAj\x9ce\xd6\xd4\x08\n\x86\xc1\x08\x8aEQ\x94\xd6\xa9(8\xc4\xa1\xf2\xe3\xee\xf4I\xde\xe9\xbe\xd7\xfb\xc9\x88\xfeO\x00?\xfc\xff\xc3\xff?\xfc\xff\xc3\xff?\xfc\xaf\x063\x7f7\xab9\xb1\xc5??\xd3\xac\xe2\xcaf\xe6*\xf5\x1b\x17\x8d\xea,Q\x02\xafGc\xcdc\xbcN\x95\x89g\xe5\xc4n\\4:_IE\xaf$5F\xd5\xec\x95@\xe2x\x1d\xe3\xe5\xe2Q\xb9\x1as\x0e.\r\xad\xa4\xe8\xb5T<I\xd9\x13\xa1\xa2\x8c\x80^\x8f\xf1\xe5\xe9\xf6{ \x1e\x95K\x8b6\xed\x8bb\xf5d\xfa\x90\x10u\xf4\xcd.\xd0`\xfa\xb4\xa9jp\xefSq\xa5\x81\x9cD\xf5\xc4\xf5\xa9EO:r\x93\x7f\xe9\xe1.\xdd\x8b\xe2\xfd\x83\xf7\xadX\nTR\xd2\xc5\x0fKNL\xf5\x12\xd4}\x9a\xf8\'\x06\xcavn\xba\xe7>\x83eA\xabz6\x1a\xe0\xb7\xc5V\xcb\xf0\xd9\xb6\x85+&\xc8Kg\xfeN\x91\x06r\x9f\xda\xde\x9bL\x1f\xedjG\xf7(\xf0{Qz4\xf6\xa1%\xf7r,y\x00\x9e\xbb\x03/\x9bh\xe9\xa6\xf3\xc5\xdb\x0b\x1a\x15\x13\x93\x84\xdcq\xb2\x9ch\xef\xfc\xf1\xa9\xc3\xc9\x97?\xbd\xd4\x005\xc3\xac\xbd\xa2{\xbe\x83\x88\n\x07j\xf6\x97\xd3\xa2$\x82\xa0\xa2\xcc@C`\xb1\xd52\x97\x0f\xe4<\x05\xda\x1eJ\xa8Y\xd3nh\xb8?;\xb1R\x16\xb7\x156\x8d\xbcy\xed\x82\xcb\r\xc0\xae7`ykG\xd5\xa6\xccv\xd4\xbf\x99\xcb\xc6\x08\xd6s\x1f?\x99\xdd\xcf\\:\xd7c]\xcd\xfc:\xe0\xb8\x0f0\xa0Z5[\x04\xc4\x9f[\x1a/x\xb7w\xea&\xac\xeeH\xe8o6\x0b\xd0\xbd\xd9\xe2J\x06#g\x7fA\xd5j\xe6\xd7\xc3uw\xd5\xd4\xc1\x85\x99\xcc\x17\xa5\x19@\xda\xa2\x11\xe0\xc8]\xb0\x9e\x9b\x85\x08u\xc3\xf9\x16r"\xa3\x1a\x96\x86\xb6\xfc]8\xb3P\x080T\'\x8b:l\xbf\x1c\xb8jG\xf5\xe6\xbf\x9c\\rU\xb7\x1d\xf5m_xZ2o\x95\xe5\xbe\x8e\x00\x91\xe9}\xdf\xb6\x9c\x90M*b\xcfQ\xa4\xf2\\bg\x97N\x15\xfb\xd0\x1dZ\x1a;8g\x9bh\x95\xc5|\x0b\x0c\xf5\xbf}R\x1fE\xc8k\xbb\x9f\xc7\xaa\x07\xe7b\xfd\xab\x89,(\xf2\x1e\xd4\xce\xdb\xff\xba\xda\xde\xbf\xea\xed\xd7\x1a\x83\xac\xd1\x1b\xe5,O%\xf4\xbca\xcf\xf2\xadMj\xc1*1>\x93\rf3\xd5=t\xbab)\xf8\xfe\xa8\xf5\xdb\xf0\xbeX`\xa8\x82p&\x0c5\xae\xbbI\xf4\xb3\x08\x95\xe0\xdf\xcb\xe6\xd7\x92\xcd\x1d\xa8\xc2\xf1\x9a*7-c\x1f.\xf0\xb0h\xe7\x83g\xcbhZ\x1b\x06c\xed\x86q-}\xe7\xaf\xb5\xd5(>i\xf2r\xb9\x8d\x92\x19!\x9eL~\xe9]\x03\xe2]\xd5\xceq\x0c\xd2\xb3\x85\xf8]#\x90-\x08\xa3\xf9\xd4\\\xa9\xb6\xa6\xc1}\xdd\x8b\xe4\x97\x14_n\xed\xe0y\xc4l\xe3\xad\xc09\x1bT\x9b\xd9\xdc\xff1P\x1d\xbb\xfa\xda\xd9\x16\xcd\xdcz\xc2\xdb\\\xe8]I\xe4\x8b\x95\x0c\xd8\x0f\xfa\x93\x95^\xf0\xe2\xd9\xc5S\x96?\x92\x91\xfe\xb1\x00+\xbe\x0e{\xdd\xc7m\xef\x8c\xa5\x85\xa1\x99\x1ak\x012.\xc0\xc9\xc2\xa8\xcb\xafK\xb5(\x7f\xb3\x06<\xb5Fp_"\xe9\xb3\x00\xd6N\x13\xf7)\x81\x93\xa9\x84\xbc\xbcm\xa4\xadQ\x86\xaf\xc0\x1d\xf7\xc4[8b\x8em\xaaQd\xa6V\xcd\x7f\xe0{\x7f\xb3F\xa0\x99\xd2\xdb\x02\x96\x8aI\x80\x9d\xbd\xb0\x8ap\xb6\x0f\xe4\xd2\\"\xcb\x9e|\xb4\n+\xb8\xee\x0f\x14\xa0\xc8\xa5\x97\xbbd\xe6\xa6\x1a\xc0V\xde\x06\x91K\x82\xbe_g\\\xb2\xcec\x84\xb3_\x8b\x19x\xf0k\x86\x01\xf6Z\xfdFpt\xf6?\x88DS\xbaBi\xad\xd0C\xed\x04$\xfe\x16x\xf8\xd6\x80<e\xd9\x8a\x0f\xb0\xf2\xc8\xa2A\xb6\'3,\xe3\x06$\xb0\xdf\xca;q\xeb:PV\xafK\xefHf\xff\xb1C\xfe#F\xa5\xd59\xdfh2\x05vw\x7f\xe9K\x13s\x15An\xee\xaf\xf1\x82\xe5M%\xff\x85c\xc6D7\xfa\x87\xa9\x80\x01\x90&\xba3\xc1tr\xd6\xa5Cyg\x0e\xec\xcb|\xf1\xe5\xdc\n\xa0n&\xc8\x9d\xb2\xa2<\xb4c\xfd\x84W,\x93\x8dj\x9c\x8d\xb8\x1b\xc1\xdc\xec3\x80\xe9\xd6:,m#;\x04\xca:\xfff\x14 \xb6\xdd[\xf4>Gn\nd\xc9\xfc;\xc1\xe0\x9d\x8e\n\x8b\xce5}V\xe6)\xff\xe3@\xc2eas?\xdc\x04\x08\xaf\x1dV\xe7\xa2\xac5;\xa7\x16N\x1aa\xf9\xcc\xebz\xa3u\xc9\xba+\r\xb8\xd0-\x9b\xda\x86yr4\x8a\xd0\xaf\x1b\xebG\x0f\xf4o\x90y\xcb\x0f\x14\xc2\xd5k\x99\x93\x12\x80\x06\xc5\xad\xaf\x98{Y\x13\t J%\xe0\xdd\x9e\xb6\xaf>\'\x8e\x8f\x06\xe0I!N\xb7\x8e\xd0\xa3?\x0e\x97\x88\xf4\xbb\x04o\xb6l\xd9k\x86\xfa}\x88\xedN\x14\xf6\xb6\x04\xe9\xcf\x99}\x12@\xdaJ\x82\xdei\xc4\xd6\xfdO\n\xaf\x0b\x81\xbf\xf2\x08o\xe6\xc4\x06#\xa3\xab\x85e\xd7\xa5L\xe8\xaao\xd5\x00F\xbf\xeb\xde\x89\x18\xa5\xb5\xb0\x16\x87\x00\xc8\x19\xfa\\\x1e\xec\xccY \x01\x06\xab\x01\x9b!\x0c\x12\xe0\xad:}\xfb\xf9\x8b\xdb\xa3\xbd\x15v\x81q~\'\x8em\x18\x8fL\x1f\x8e@i[\xbe\x1b\x00D\xc9\xe4R_<\xc1\xfb\xdb\x90\x9b\x17\x8a\tk\xc6\xef5\xe0\xec\x81\x83n\x01D\xec\x00,\xa4\rF\xd5\xfb\xcb\xb4(j\x11\r\xec\x99!c\xbdt`\xf6u\xfd\xa5\xdb\xfc\xeb\xecn\xc0\xd4\xf2\xb6G\x1bRZ\xa5\xd82~\xc6\n\x98\xe2\xa8;/\x06\x88=18\x92\x04\xa4\x0fEa\x13(ji\xffl/0Y\xcd\xad\xc3\x17f]:\x12\xbe\xae\t\x16\xfb=\x05\x90Ng\x10\xba\xe1\xe1\xd4\xcf\xf7a#\x10\xdd\xd3 \xb8\xd2\xe3\xc9&\xb3\x15"\x86\xa2Q\xd8\xc6\xfa\xd73\r\xdfl\xac]\x88\xe0e\xbeI\x00t\xf5\x04;\xfbX\x10\xde\x88\x9f\xc6\xab\r\x8c\x94\xde\xf6gb\xf0e\xe1\xb82\xfd\x13 \xee\x00Z\x94\xb5\xa9y\xf1\xde6\xc1M7\xd2V\xccKI\x04u|\xb3\xc9R\xff\xc9!\xac\xb1M\xa3\xc3\x871TNU\xe8\x13o\x80Xs\xed\xac\xcdU\nX|(\xeb\xd8\xa6(\x96{3\x012\x02f\xe0\xe8RC0\x06\xdc\xb2#\xfd\x84\xeet\xc0\xfe"!.\xf7\xdf\xde\xb9\xbf:\x99n\x07$\x99a\xd0\x88\xb1\xfa\xce*\x85\x95rw~\x9f \xb8\xff\x14H\xafn\xfc\xad\x0f\x96\x190\x03H!\xe9[=&\x80e\xbf\xde(\xd8\x87q\xfb\x95\xc9\xa2.\xe4\xce+\x90Q\xacAq\xef\xf1GCt\xc3#\x03[\x16"\xd9\xfc\x97n\xa6"\x98\xee\xc3\x16Y\xc8\xe9w\x0f\x10\xd4WD\xf1\t\xb04\x19\xf0&\x00\t\xc3&\x94xV\x11`i\xfd\xe0\xfb\xb3\n1S\x8b\xd6I\xf9s\r`<\xfc\xcc\x1f\x13\x86\x15]=\xb1\xd1W\x83\x14\x9ef,&\xe9|_\xfbA\xb2:\xc0<\x96\x88\x926\x96\xca\xac\xc9T>\x13\x14~\xf5\xa4\xe3\xfaS\xcb\xdeW\x12 \xbd\xdc\t\xc4x\xb7\tB^v\xee\xda\x9d\x08\x8e\xe6\x05a\xac\xb8\xbd\xfa\x86\x1d\xbd_\xc3\x98\x9e\xd8d\x14\xf5\xba\xd7\xdd\x86U\x9d\x9f\xeb1\xcc\xef\xc0\xf8\xbe\x10t\xafw#\xbd(\x07\xa8\x99"\xcc\x9b\xfa\xd2\xa2N\xb0\xfawr\xb4\xb2\xddG#\x1d]8\xfb\xcf\x197\xf8\xa3Q\xdc\xe6\xc73\x01\xb7\r8>\x05-c@\xc34\xfc\xf4D\x00\x91\x0b\xebB\x8b8B\xd0zg\xc7\xccfv\x0f\xb9\x04h\xfd:\xbc\x83\xa7\xe3\x89h\x8cGi\x8b\xa2\xf1\xaf\xcdq\xc8M\x1f\xf3\x89\xff\xe247/\x8e\xc7\x10\xf1>\x1f \x96\xd0\xa3\xfa\x838^\xb5\xda=\x88r\xefQ_$T\x1d \xc1\x88\xe2v\xfb\x8f\xda\xed\x8f^7}K\x06r%h\xbb\x03\x17\xe6\x02\xde\x8d\x80\xf6\xe9!Y\xc8uu"\xa2\xd7X\x0cXW\xd0a\xcb\xf0\xee\x15\x18\x01\x83_\xa0\xc0\xe3\\\x83\x1f\xad\xe5\x127:4;\xa6\x96\xf6\xc0\xf2\xafkYyu\x15@\xc9\xf4=Sh\xc6\xfac\xb8\x9a\xac/Fv"\xdfq\xb6\xeb\xd29\\\x97wD\x01\x8d9J\x0c\xd0\x01\x14~x>\xeb\xaa\x99\x02.\xf7\xf3\xaf9;4\x84\x1a\xd7<<m\xc6vn\xa6\x8d\xa0\xeb\xde\x9d\x89c(\x8e\x98\x92\xceA=\x02%]\x9d*\x93d\x8eh@\x1fh\x16D,l\x04\xfb\xb7\x95\xff\x12\xc6M\xd3\xcd\x14\x9f\x88\xeaM\x8f\xf4\xc1\xeaLH\xb7\x99\x8b\xd9\xdc\x0c`@a\x8fUB\xe1\xe8\x05\xc8\x1a\\:\x06p\xeb\x14\xd0\xd2\x03\xdc\xb8\x10\xae\xfc\x04\x11\xe1\xc3\xfe\xd2\x00\x9c\xaf\xf0v\xda\x01jw!&%\x94u\xbc\x168w\xb1\xf4\x8f\xf93\x9f\xe3\xb9\xd6T6o\x00j\x06\x80\xc4\x80\t\x9c_\xe2\xc3`\xbc\xb4\xeb\xc6a\x034\x8dt\x9e\xaaF\x14O~\xcfE\xae\x990\x88MO\x8d\xcaJ\x13\xb0\x03\xd5Ks\x95\x06\x86\x9a\x01\xa6+\x81\xf5\xaf\x00F\xcb\x80\x9f\x13B\xd3W\xce7\xeaw\xed\x80\xd8[H~\xed\xb5\x13v\xdf\xf5\xf5\xb2\xaaz\xe2\x8f\x9aP\xd8\x93%\xb1u\x1a\xd7=\r\x90\xbf\x18\t\x94\xceitb}\x00\xd0M\xef%\xac5\x9e\xa2L\xbf\xa7T*\x96\xe8\xc8\xdc?[\x06\x9a!\xdd\xa5\xf6Dh\xd3\xa1\xc0/L\x7f\n\xec\xaa\xefA>]\rh\xff\xdc\xe5\xaa\xcf}\x85\xa6fn02\xb4\x95\xbfdi\x13\xa3\x1b\xfa\'W\xb8\x06\x0eH$\xbe-\x8f\x19\x8b20\x00\xe9\xfd\xbf\xa1\xb83R\xa09p\xd5^5\xd5\xd8fM\x05\xf6\xcd\t\xa0\xea\xe1\x83\xe2:?\x94g\x13F\xe1l\x1e\x14%\xeb\xa3\xae\xf8K\x8c\xf9@g2-\x7f\xac0{\x01\xa2\x94\x94>\n\xb1\xe5\xee\xf7f\xa8x$0\xbc-L,\xff\xec\xb1#\xfd\xbd\x050,\xcc\x08O\x0b\xe1\xac\x12\x04\x8do\xe9\xcf\x89\xf9\xf9\xda\xf8rp\\\xca\xb83LM\x99LQ\x8f\x94\x97=\x9euUv\x82\xfe\xef\xcd\xf0\x8b\x0f\x12\xbb\xbeV\xd34\x04\xe0+#-9$;p1I\x96\'\xca\xd3\xacm\x9d\xe9\xd2/m \xa6.G\xb87vE(\xab\xd3ff\xbe\xdc\xdf\x11A\xe6\x11\xa0alm\xff\xfb@:\xb0f\r\xcb\xbeZ\x81(-\xa1\x8b\x0b7V\xe0*\x85\x82\xb1\xf1bx\x9c\x1aY\xd3]8l\xc2\xee\x02\xdb1\x94u\xe4R\x0c\xefv\xd0\xdd\xc4\xbeu@\xf4\x87\xf9c\xd1\xed\xd7\t\xfe6\x8b0\x1bX?\x96\xbd\xa6\x1dR\x8c1>\xa8\xf4\\\xde \x95\x8f\x1eG\x91\xdb\x96\xb4\x8e\xbf\x05E\x0b\x11\x95\xef\xdb\x0c\xd0\xea\x05\xeb\x97$Y\xe4\xa9\x85\xc4p\\<l\x15\xc3v\x84A{\x07\xf9\x99l\x0cc\xc6\xda\xde\xcdbJ\x999\xbf[\x1b;#\x0f\x88\xc7\x87I\x18\xba\x06\x96\xcfv\xe8\xba\x08\xe8f\x87\x93\tg\xe4\x8e\xdet\xcbh2\xe0\x0fb\xbdI\xe6q\x9f\x13\xed\xcf\x1ee\xd6\xb0\xd4\x1e\x97\xbaq\x8a\xb2\x17\x02\x8c\xc0\xa5\xab6\xf7\xa7\xcf\x16\xc0@\xc8q\xb2\xa0\x16\xdfj\x18\x0fB\xe7\xb6\x8b\xa6\xdb@\n\xca|\xa2\xf7\x93\x89\x03}l_\x8a\'\xad5\x12\x92\xbf~:\xbf\xb2>\x910\xae\xee|\xe6\x08\xb2!\x1d\xe2\xbc\xf5b4\xd8\xaaO\x0e~ME\xa9K\x7f,\xf35\xd2v\xd22S\x0e\xab\xa6^m\x01\xcfo\x845\xdb\xe3\xb6\xd9\xbb\x00\xeb\xd0\x85[\x80\xa8\x1c\xf0\x05\x13\x17@\xa0\xe4\x0b\xde\x1aRV\x88\x8b[\xa10\xb9\xe1\xcbO\xa4\xb7\x86A\x14\xdfn6c\xa8\xbe/\x95Yu\xf1\xb4;\x01\xb6\xbe\x18\xdeoA\x15>\xdc\x13\xb9C\xec\xf9\xcb/]l\xc5\x9eB8u\xf7\xeb\x8c\x98\x1aom\x17\x1c+\x04\xac\xd7e\xedy\xa6J\xcfD\x9d\x1a0\x1b\xad_\xd7\xa0\xcb\xa7q\x84p\xf7\xda\xad\xed\x9e\\\x88o\xe9\x15\x00W\xec\xa5f\xed\xa4@-\x16\xfb\xe9\xec\x05k\xc7\xa7}a\x11\x16H\x9b\xedN\x83\xa4\xf3\x9eL\x82\xda\xaf\xdc\x96\x8eU\xa3\x1a\x0b\x1f\x93\xfa\xad\xa23\xd0\xb9\x8a0j\xcbF]\xc0\x80\x95\xb5=W\x1d\x8eV\xd2\xfb\x8a\x81\xdbu\x8e;B=d\xbe\x80\x86\x993VB\xf6`\xa8\x1e\xff)\x02\xc099\xd8\x91\x08\xe2\xe1\xc0Y\x1b\xc0v\xa3%\x01\xf5\x98\xf6\x810\x8f5\x8d\xed\x950\xc8\xb0\x1a+\xb7kv\xde\xf14\xa1J\xe3\xc2c=\xf3\xa1D`n\x9eM\x93\xc1\xf2\'\xa35\x91\x9a\t\x83*\tk\xd2\xd5\xdf3\xeec;\xdb\xbb!\xb9G\x16\xdd02#\x01\x95\x87\xd4\x8fMOl\x1e\x8eT\xc4|\xe7E;b\xfb[\x1b\x98oo\x13^\x00C\xa1\xfa\xa9j\xea\x18\xca\x07\xb0~=\x84\xce5T\x9d\xe3F\xae\x1d\x93\xa9\xdddp\xf4}\xca$hi\x9d\xef\xc8\xd0\x1e-\xf6\x17fY\xd3\x1e54\\|\xe3\x8a\xfdx\x16,\x8b\x81\xc1\x98\xc6&p\xf6\x9d\xafh\x96\x95\xa2~\xc5\xd6\x07\x0f\xac\x89@\xf2%o\x12\t70\xdd*\xf4\xb6\xc4\xc3]=\xaa\xd8>\xd6\x18\xe3\x93\x86Y\x7f\xad\'\rH\xc9\x82\xf6\x0bQ \n\x1e\x19\xd5\x91\xde\x00Z&\x06\xdd60\x12\xd4z\x1dXVkD5kJG\xfe2C\xd2\xf9\xb9\xa4 \\\xb1\xa3\xaa]\xe3u\xc9\x1e\xd6\xf5\\MM\xbb\x10,\xd9\xa9\xae\xb2%*\xbc\xde\x8e\x04`\xc0\x12D}\x8b\x91\x99D\x80M\xe3\xad*\xad\xb6vG-\x9a\xd2\xdb\r\xd1\xa5\xea,eT\xa3\x19=4T\xa1G\xadG&\xc0\xc1\xf3\x1a\xd4\xbd>\x97\x1f\xfe\xff\xe1\xff\x1f\xfe\xff\xe1\xff\x1f\xfe\xff\xff^'
6
+
7
+ #
8
+ TILE_EMPTY_IMAGE_BYTES = b'RIFF\xc2\x00\x00\x00WEBPVP8X\n\x00\x00\x00\x10\x00\x00\x00\xff\x00\x00\xff\x00\x00ALPH\t\x00\x00\x00\x01\x07\x10\x11\x11\x88\x88\xfe\x07\x00VP8 \x92\x00\x00\x00P\x0f\x00\x9d\x01*\x00\x01\x00\x01\x00\x00\x00%\xa5\xbb\x85\xda\xc4m\x1d\xc1\x93\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9a\xb0\x00\xfe\xff\xfd\xed\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00'
9
+
10
+ # 请求参数异常
11
+ INVALID_PARAM_IMAGE_BYTES = b'RIFF\x8a\x08\x00\x00WEBPVP8L}\x08\x00\x00/\xff\xc0?\x10\xf7E&m\x13\xff\xa6k`\xfb\xe7\x7f\xfe\x05\x04%\x92D\r>1\xac\xc0\xff\xf6\xff\xef\x93\xf6\xffw\xb9\'\x8f\x10\x12\xa6\r \xd1\xb0\xa2\xb4\xe0\x00\xd9[(\xe0\xc6\xc5vK\xc52\\8\x18\x82\x0bW(m\x10\x0b\xa6\x82,\x072\r\x04\x02\x180\xf9\xe7\x92\x1e\x87\xbf\xdd\xfb\x9cD\xf4\x7f\x02\xd8\xf4\xff\xa6\xff7\xfd\xbf\xe9\xffM\xff\xff{\xba\x90\xbdCOdo\xdbF\x8c\xe4\xf1\xa8]\xd6R\xf6\xf9\x8a_\x8f\x10\xf9E2vy\x08\xd0\xa6Ao\xef\xc4\xf4!\x19\x0bYK\x83\x1d\xeb\xe1\xa4z*\x15\xa4Z\xe5\x8b\x1b\x7f\xc4\xdfVz\x9a\xe1\xaf\x8bHu\xfa\xc0\xdf\x1c\xf2\xac\xdd\xd4\xef[\t\xa2pA+U\xfe\x8biP\xb2\x85.\xc7\xc8\x13\xe0\xcd\x05\xc4\x87\xd3\x12\xa5Rs\xf9w\xaa\xdcW\x88\xf57\x7f3A\x81]K\xd9g\xb5\x14\x855\x03=G\t^{\xb8P\xe9\xd0\x02/\xef\x82\x988\x85f\xbe\x94\x88\xeb\x89\xd2\xe3\xef\xc8\x80#\xef\x85\xda\xe60a;\x0e$\xb9~\x10\tG&U\x9c\x19\xefp=\x89\x91\x1e\xea\xfa@\x99=`\x19qm\xa7\xe4\x1d\xc0@\xf3\xa3~e\xb6d\xcfo\xae\xbb&$8d-\xf7Jh\xad\xbbWw\xff.An#P\xecy\x1d,Z\xbf:\x1b\x0c\xc8m\xc4\xb5L\xafm\xa3\x1e\xcb\x9eqw*q_\r\x1d_\xb4\x904\xd3\xa5\x11\xb6\xf9\xb3\x01Hl\x04\xc4\xb4\xaf\xb9\x0b\x81\x90\xb5G\xebQ\x01\x97\xea{\xe0\xe5\xaf\xfbB\x8dVq\xafN\xc0n\r2[8\xb6\xfb\xf9\xea\x8d\xf2\x05\x05 \x98\xceV\x08]\xdb\xc1\xdee=bz\xaf@~/\xb9\x1du!~\x93\x17\xf1mv\x19\xa0\xa5\x0bjC\xa0\xbf\x1c\t~\xfc\xc6\x04\x97\'\xfd\x08-n;\rX\x1aE\xb1\xd1e\x04\x12\x9e\xce\x99\xe4&\xc4+r}|\xc39\xf8urd\xf9\x9b\xad\xd1\x0c$9[\xad<\xb8K\x86u\xa9>\x14\x99\xcdz\xf5Y\x05t\xbc\xc4\xef\xa0\xfbZIF\x82\x9eP\x00\xd5t\xbf\x8e\x18\xa7}\xaeF\x8f\xc4\xaaKF&ON\xe6\x83\xea\x85\x99\x9f\x16\xce\xa6\xc7\x80\xa9u=\x1e\x02z\xfa\xfd\x81\xd8$\x05\x99\x8d\xf8<\\\xac\xe2\xdcS\xbc\x0b\x9cg\xe9\xba\x91\xd0\xbd\xd4\xf0\xb0\x05tw\xfc\x91\xdd\x80\xb3\xb7\xc5\xf8\x01 s\x0e\xd0\xdeY*\x80\x0b\x1b\xf3g\x03H\\\xf6C~\r\rK\xdd\xce\xa8C#\x88\xb2\xe9\x8b@\xd9[\xa3\xaaxx\xce\xe3\x07\xe0\x8c\x95\xa0\x86\xf7&\x9a[\x95\xe9lN&\xc6\xdd\xcf\x02qhr\xa8h\xe7\x86\n0\xbb\xe2$\xc8\xe04\x10\xbef\xa8\xec\'\xe9\xa5\xddz\x0f8\x9c\x06\r6\x88\xb8\xba\\\x83\xdc*G:\x81\xd6\xa6\xa2\xa1\xf5F\x9dc\xf8[\x95\xb6p\x10\x9f\x81\xceR\xb8\xd5bB^M\'\xd0U\xcd\xbc)\x00\xa2\xdc\xc3?\x9b\x97\x03\xeb\x86\x9e\xf6\x1b\xd2\xe6}(/\xac\x02\xc9\x8dv5:z\xf6\xe1\xb3\xfb\x0c<;\x17\xba\xba\xf3\xf9|\xed\xac\x97\xe8\x9a\xde\x82\xe4\x1a[6\xa6\xfa-M\x95uw\xaeA\xe2\xbc\xc6\xdc\xfb\xc5\xeff\xbb8\xb1\xec,\xdf\xade\xffg#r\xbb\xa3ke\xb2i%\xc8p\xe4Lm\xf5A\xa0ol\xb1n\xe0D\xe4Z8w\xdeZ\x16\x16@\x85\xd4\x1az\x1cW\xa2\x07\xc5\xab\xf3\xa8J\x86\xa2\x00\n\xe7\xfd\xc9\xfa\xa4\xeal6\xac\x99\xc1\x80\xec*\xa7u\xb4\x9e"\xa5\xf6\xe4\xe4\xa0\xb5\xd5K\xe3\x88\x82\x91"\xf3\xca\xadn\xa4\xb6\xf2i\x84\x17P9\xa0\t:o\xb7$\x93\xb6n\x00\xb8}\x01\x8eY\xb1T\x86\xcb\xcd\xe8C\xfb\t\xe1uj\xfa\xc7\xe6\xa5.3Q\xad\xf6\x0f\r^%\xfd\xfcpo\x00\x1d\x92\xbb\x12d|:w;]\xd9:\xbf\xb3i*\x92\x84\xee\xd9Z}\xb23\x00\x88\x9f#\xf3f(\xf2*~\xfb\x11\x08\xfe\x02\xa2\xa5w\xb9\x12\ra\xae\xb2\xbe\x0fe\x1a]\xd5l\xdfv\x12\xd1\xb6\xaa\x90\xdb\x96G@a\x9frdb"V\xad\x07h\xb3\x17\x8a\xd0+\x8b\xdd\x89\xaa\x9f\x87fB\x90^\xe3z\xe9\x03mo\xff\xec`\xbe\xe0I\xb2W\xb4+\xa9e\xb9-\xda\xef\xc4\xa7\xf1\xc3\n\xf2\xaa r\xba\x04"\x7fa\xb5n\x87;!\xd9?\x05\x1e\x95{\xf1\xd4\xd9\x14\x16x\xee\xcb@\x9e@bMS\x87G\xad\xe9P:\xdd\xee\xda\x13\xd5\x00\xf1K\xf1\xd4\xdc\xf1\x11\x11hhpZ\x92\x90Z\xff\x8aoC\t\x86\x86\x18\x14%\xda\xb3\xf4{J\xfcCQ6\x15\x92\xdc\xef#\xaau\xf5\xbe\x19\xa9\r\xba<w\xaf\xf6\xf3\xbd\x99\xf3\x81f\xd0\xae-\xe7?\xf7\xb3\xd5\xd3\xd6\x17\xb1\xe0ur\xe5\xc6Vd6\'\x10S\x83!\xa1\xdb\xd3\xee\x9f\xfffH\x0bV[\xad l\xaeHS\xa3\xb8\x0c\xc5g1\x84 \xb5\x81#\x1b\xd6\\\x1e\x0f\x97\x9c\x9a\x9c\xb0f\x08\x10C\xfb\xe74\xb0\xdb\x11\x8e\xdf\xdc\xe2\xe72\xe47\xb2<\r\xa3\xbez\xba;!\xaa\xf5\x15\x04\x8e\x89\x0fe@t\xe09\xfbH\xa9\x1a9V_\xf9r\xcf\x94\xd0=Y\xe5HB\xff\x07\xc7>\x08\xc2\x9a\x9c\xfdY\xc8\xb1\xc8?O\xb9!\xc3:zPI\xfdh\x81 4s\x85\xb4?\xdb\x85$\'ML\x7f\xdd\x8av\xe1\xa2\xaa\xf0\xaf\xde\x8253@\xed_\x08\xa49\xe6\x90\xd2y\x13.\x8eL<\x8c\xd7W/wz\xe9\x7fQ\x90j\xf3j\x08\xc1\xab\xf9\xa1W\xa6\x1av\xafoA\xc6-u\x84]\xff8y6@ud#Jn~\x12\xdf)\xc9\x117\x1e\xb1\x1e\x03\xdb{S\x90\xd9\xccW\x9e\xfd\xdf\x89\xc1\x8f-t\xb4 \xb7\xaa\x92w\xe3G\xaal\xdf\xeb\xa8\xdbD\xecK\xb9)\x99\x1c\xcc\x17h\x1d)\xdf)\xea.\xd2[>\x06\xa4\xfc6\xb7\xff;I\xae\xd6\xf6\xebn\xa1]L-\xb0}8\xa6D^\x940MQ\xa7\xe3"\x97\xd6m\xfb\x85\xb9k\xf5\x9e\xbf|\x01j\x7f\x82SH\xb6\xb8\x1a\x0c(\xe1R\xa5-\x7f\xad\x00\x84A\xce\xe0|\xfd\x86\xc1\xbfb\xba\rh{\x13*=\xe6H\x08\xbe\xb48T$\x10\x05\xb6y\r\x97\x8fkxm]\xec\xcb\x04x\xbetNz\x06\x8fF\\_\xfd#\x1d\xe0\xd0T\xf9\xbb2`\xeb\x8d5\xcfP\x0c>coK\x8f\xe5\xa3\xeb\xf1O\x10\x15\x0c\x8a\x9a\x92\x8fB\xb4\xaf\xb6\xd5\xbf9e\x7fr2%\x08.\x14J\xce\x9e\x17n\xab\t\x12\xbb\xdd\xbf\xe0\xad\x9a,\xe2\xa0\x81r+\x01U\xdd\xb3\xa7`7R\x9b\xf3\xa7\xb3a\xb8\x8a\xcc\xbe\xe9\xf24\x87\xce\x8bSo\xd5\xa7a\xf0,\xde\x02\xd9\xed8\x1b\xc0\xdc\x83\xe1\xd1\x83j"\xedU>\xb4\xf6\xe6a2\\[|\xc8k\xc8t\x00\xc4\xa5\x00\x04z\x1c9\x02s\xa7\xe3\xd1\x8c\xe2\xc5\x05\xcfQ\x93\xe3\x18R\x1b\x1b\xc8T\xd1\xde\x17\x1b\xe7\xbc\x92\xd6V\xe2\x92,sg\x03\x189\xec#yQ\xbb\xf72\x12k<Jo<\xf7\x9c\x8ezg\xb8W\xcb\x83\xebK\x1f\xcb4l\xbb\xbd:.\xbc0#\xb3j\x11\xb9j\x18\xdd\xa2\x14\xcd\xea\xe8\xaa\x04\xb4KY\x11\xebF\xe2\x1f-\xd6\x1b>\xe7\xf9\x90\xdb\xca\x9e\xa0\xae\x86\x82\xa7\xdd\x11\xee\x14\xb2\x07\x80R\xbb\x9a\x8eg\xbd\xb3\xd5z\xa8\xb5H\x10\xb5\xa7*\xbeM\x95k\xfd<\x8e\xed\xcaz\x10\x98J \xce]\xa3\x80\xbah\xf4\x96\x0c\x15\xbfs9\xde[\x9f\xec\\=?\x16>\xf6#\xbe_\\\x02\xf4\x0f\x0b\x85\xcc\xec=f\xf4Q\x97\xfd\xe8\xe4\xbc1\xf7\x87\xd71Y\x13\xb6\x82\xbf\xd9\xbb\xa8Ej5W\xf5d?\xf6|\xaa7\x00\xda\x19\xed`)(j2\xbe\xd6\xfd\r\xaf\xf3\xe4\xe6h\x0f\xa2\xf8\xa3\xa5\xf4At\xb5\xe0B\x1b\x87\x13\x13\xbb_\x02\x8f6,f_\x1a\xa4V\x8c\xef\xcb\x1a\xb6%\xb3\xf5\xa6\xf3a \xd91<\x9f\x9f\xba>\x06\x8c\xe4\x9es~(\xf0\x92\xdcrG\xff\x88#\xde\xdc\xb9r{\x1b@\xd6\xbbo\xd7\xd5G\xff\x84\xa0\xf5@\xb4\xb9\xbb\xe4\'zc\xbcH\xcc\xbfu\xb4\x0eM<\xea\xea\xa9%;\xbb\xab\x98\xfbW\x05g\xac\xc8\xb1\xc8U\xe7\r\xac\xd6&\xeb\x88,*9\xb0\x0b\xb0\xd8\x97\xdd\x1eO\xff\xf5<IR\x0e\x8f\xbf\x1f\xbe\xba\xd5\xa1\xaf\xaf\xf1\x1f\xd4\x03\x18\x8co\xebU:=\xb2\xdcn+0.\x84^\xbf\x1e\xb2lL\xff\x88\xb7\x9f\xf5\xb5\x1a\x89\xd6\xa1\xfc~9e>\xa2\xbe\x9d{\xb7|\xdc\x1a\xd0#\xd5\xaa\xc7\xcfb\xec\xc9\xdb\x1d&\xb3\xd3\xe0C\xa7C\xae\x0f\r\xfb\xef?b\x9e)\xd5\x0c\xd6!\xe9:\xd8m/\x12\x8f-*Y\x03\x1a\xf3\xc4\xedw:d^\xf7\xfcu02\xaf\x0c\xdeW\x90\xfbP6\xfd\xbf\xe9\xffM\xffo\xfa\x7f\xd3\xff\xff\x9a\x06\x00'
12
+
13
+
14
+ ABNORMAL_TRAFFIC_IMAGE_BYTES = b'RIFF&1\x00\x00WEBPVP8X\n\x00\x00\x000\x00\x00\x00\xff\x00\x00\xff\x00\x00ICCPH\x0c\x00\x00\x00\x00\x0cHLino\x02\x10\x00\x00mntrRGB XYZ \x07\xce\x00\x02\x00\t\x00\x06\x001\x00\x00acspMSFT\x00\x00\x00\x00IEC sRGB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\xd6\x00\x01\x00\x00\x00\x00\xd3-HP \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11cprt\x00\x00\x01P\x00\x00\x003desc\x00\x00\x01\x84\x00\x00\x00lwtpt\x00\x00\x01\xf0\x00\x00\x00\x14bkpt\x00\x00\x02\x04\x00\x00\x00\x14rXYZ\x00\x00\x02\x18\x00\x00\x00\x14gXYZ\x00\x00\x02,\x00\x00\x00\x14bXYZ\x00\x00\x02@\x00\x00\x00\x14dmnd\x00\x00\x02T\x00\x00\x00pdmdd\x00\x00\x02\xc4\x00\x00\x00\x88vued\x00\x00\x03L\x00\x00\x00\x86view\x00\x00\x03\xd4\x00\x00\x00$lumi\x00\x00\x03\xf8\x00\x00\x00\x14meas\x00\x00\x04\x0c\x00\x00\x00$tech\x00\x00\x040\x00\x00\x00\x0crTRC\x00\x00\x04<\x00\x00\x08\x0cgTRC\x00\x00\x04<\x00\x00\x08\x0cbTRC\x00\x00\x04<\x00\x00\x08\x0ctext\x00\x00\x00\x00Copyright (c) 1998 Hewlett-Packard Company\x00\x00desc\x00\x00\x00\x00\x00\x00\x00\x12sRGB IEC61966-2.1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12sRGB IEC61966-2.1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00XYZ \x00\x00\x00\x00\x00\x00\xf3Q\x00\x01\x00\x00\x00\x01\x16\xccXYZ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00XYZ \x00\x00\x00\x00\x00\x00o\xa2\x00\x008\xf5\x00\x00\x03\x90XYZ \x00\x00\x00\x00\x00\x00b\x99\x00\x00\xb7\x85\x00\x00\x18\xdaXYZ \x00\x00\x00\x00\x00\x00$\xa0\x00\x00\x0f\x84\x00\x00\xb6\xcfdesc\x00\x00\x00\x00\x00\x00\x00\x16IEC http://www.iec.ch\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16IEC http://www.iec.ch\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00desc\x00\x00\x00\x00\x00\x00\x00.IEC 61966-2.1 Default RGB colour space - sRGB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00.IEC 61966-2.1 Default RGB colour space - sRGB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00desc\x00\x00\x00\x00\x00\x00\x00,Reference Viewing Condition in IEC61966-2.1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00,Reference Viewing Condition in IEC61966-2.1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00view\x00\x00\x00\x00\x00\x13\xa4\xfe\x00\x14_.\x00\x10\xcf\x14\x00\x03\xed\xcc\x00\x04\x13\x0b\x00\x03\\\x9e\x00\x00\x00\x01XYZ \x00\x00\x00\x00\x00L\tV\x00P\x00\x00\x00W\x1f\xe7meas\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x8f\x00\x00\x00\x02sig \x00\x00\x00\x00CRT curv\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x05\x00\n\x00\x0f\x00\x14\x00\x19\x00\x1e\x00#\x00(\x00-\x002\x007\x00;\x00@\x00E\x00J\x00O\x00T\x00Y\x00^\x00c\x00h\x00m\x00r\x00w\x00|\x00\x81\x00\x86\x00\x8b\x00\x90\x00\x95\x00\x9a\x00\x9f\x00\xa4\x00\xa9\x00\xae\x00\xb2\x00\xb7\x00\xbc\x00\xc1\x00\xc6\x00\xcb\x00\xd0\x00\xd5\x00\xdb\x00\xe0\x00\xe5\x00\xeb\x00\xf0\x00\xf6\x00\xfb\x01\x01\x01\x07\x01\r\x01\x13\x01\x19\x01\x1f\x01%\x01+\x012\x018\x01>\x01E\x01L\x01R\x01Y\x01`\x01g\x01n\x01u\x01|\x01\x83\x01\x8b\x01\x92\x01\x9a\x01\xa1\x01\xa9\x01\xb1\x01\xb9\x01\xc1\x01\xc9\x01\xd1\x01\xd9\x01\xe1\x01\xe9\x01\xf2\x01\xfa\x02\x03\x02\x0c\x02\x14\x02\x1d\x02&\x02/\x028\x02A\x02K\x02T\x02]\x02g\x02q\x02z\x02\x84\x02\x8e\x02\x98\x02\xa2\x02\xac\x02\xb6\x02\xc1\x02\xcb\x02\xd5\x02\xe0\x02\xeb\x02\xf5\x03\x00\x03\x0b\x03\x16\x03!\x03-\x038\x03C\x03O\x03Z\x03f\x03r\x03~\x03\x8a\x03\x96\x03\xa2\x03\xae\x03\xba\x03\xc7\x03\xd3\x03\xe0\x03\xec\x03\xf9\x04\x06\x04\x13\x04 \x04-\x04;\x04H\x04U\x04c\x04q\x04~\x04\x8c\x04\x9a\x04\xa8\x04\xb6\x04\xc4\x04\xd3\x04\xe1\x04\xf0\x04\xfe\x05\r\x05\x1c\x05+\x05:\x05I\x05X\x05g\x05w\x05\x86\x05\x96\x05\xa6\x05\xb5\x05\xc5\x05\xd5\x05\xe5\x05\xf6\x06\x06\x06\x16\x06\'\x067\x06H\x06Y\x06j\x06{\x06\x8c\x06\x9d\x06\xaf\x06\xc0\x06\xd1\x06\xe3\x06\xf5\x07\x07\x07\x19\x07+\x07=\x07O\x07a\x07t\x07\x86\x07\x99\x07\xac\x07\xbf\x07\xd2\x07\xe5\x07\xf8\x08\x0b\x08\x1f\x082\x08F\x08Z\x08n\x08\x82\x08\x96\x08\xaa\x08\xbe\x08\xd2\x08\xe7\x08\xfb\t\x10\t%\t:\tO\td\ty\t\x8f\t\xa4\t\xba\t\xcf\t\xe5\t\xfb\n\x11\n\'\n=\nT\nj\n\x81\n\x98\n\xae\n\xc5\n\xdc\n\xf3\x0b\x0b\x0b"\x0b9\x0bQ\x0bi\x0b\x80\x0b\x98\x0b\xb0\x0b\xc8\x0b\xe1\x0b\xf9\x0c\x12\x0c*\x0cC\x0c\\\x0cu\x0c\x8e\x0c\xa7\x0c\xc0\x0c\xd9\x0c\xf3\r\r\r&\r@\rZ\rt\r\x8e\r\xa9\r\xc3\r\xde\r\xf8\x0e\x13\x0e.\x0eI\x0ed\x0e\x7f\x0e\x9b\x0e\xb6\x0e\xd2\x0e\xee\x0f\t\x0f%\x0fA\x0f^\x0fz\x0f\x96\x0f\xb3\x0f\xcf\x0f\xec\x10\t\x10&\x10C\x10a\x10~\x10\x9b\x10\xb9\x10\xd7\x10\xf5\x11\x13\x111\x11O\x11m\x11\x8c\x11\xaa\x11\xc9\x11\xe8\x12\x07\x12&\x12E\x12d\x12\x84\x12\xa3\x12\xc3\x12\xe3\x13\x03\x13#\x13C\x13c\x13\x83\x13\xa4\x13\xc5\x13\xe5\x14\x06\x14\'\x14I\x14j\x14\x8b\x14\xad\x14\xce\x14\xf0\x15\x12\x154\x15V\x15x\x15\x9b\x15\xbd\x15\xe0\x16\x03\x16&\x16I\x16l\x16\x8f\x16\xb2\x16\xd6\x16\xfa\x17\x1d\x17A\x17e\x17\x89\x17\xae\x17\xd2\x17\xf7\x18\x1b\x18@\x18e\x18\x8a\x18\xaf\x18\xd5\x18\xfa\x19 \x19E\x19k\x19\x91\x19\xb7\x19\xdd\x1a\x04\x1a*\x1aQ\x1aw\x1a\x9e\x1a\xc5\x1a\xec\x1b\x14\x1b;\x1bc\x1b\x8a\x1b\xb2\x1b\xda\x1c\x02\x1c*\x1cR\x1c{\x1c\xa3\x1c\xcc\x1c\xf5\x1d\x1e\x1dG\x1dp\x1d\x99\x1d\xc3\x1d\xec\x1e\x16\x1e@\x1ej\x1e\x94\x1e\xbe\x1e\xe9\x1f\x13\x1f>\x1fi\x1f\x94\x1f\xbf\x1f\xea \x15 A l \x98 \xc4 \xf0!\x1c!H!u!\xa1!\xce!\xfb"\'"U"\x82"\xaf"\xdd#\n#8#f#\x94#\xc2#\xf0$\x1f$M$|$\xab$\xda%\t%8%h%\x97%\xc7%\xf7&\'&W&\x87&\xb7&\xe8\'\x18\'I\'z\'\xab\'\xdc(\r(?(q(\xa2(\xd4)\x06)8)k)\x9d)\xd0*\x02*5*h*\x9b*\xcf+\x02+6+i+\x9d+\xd1,\x05,9,n,\xa2,\xd7-\x0c-A-v-\xab-\xe1.\x16.L.\x82.\xb7.\xee/$/Z/\x91/\xc7/\xfe050l0\xa40\xdb1\x121J1\x821\xba1\xf22*2c2\x9b2\xd43\r3F3\x7f3\xb83\xf14+4e4\x9e4\xd85\x135M5\x875\xc25\xfd676r6\xae6\xe97$7`7\x9c7\xd78\x148P8\x8c8\xc89\x059B9\x7f9\xbc9\xf9:6:t:\xb2:\xef;-;k;\xaa;\xe8<\'<e<\xa4<\xe3="=a=\xa1=\xe0> >`>\xa0>\xe0?!?a?\xa2?\xe2@#@d@\xa6@\xe7A)AjA\xacA\xeeB0BrB\xb5B\xf7C:C}C\xc0D\x03DGD\x8aD\xceE\x12EUE\x9aE\xdeF"FgF\xabF\xf0G5G{G\xc0H\x05HKH\x91H\xd7I\x1dIcI\xa9I\xf0J7J}J\xc4K\x0cKSK\x9aK\xe2L*LrL\xbaM\x02MJM\x93M\xdcN%NnN\xb7O\x00OIO\x93O\xddP\'PqP\xbbQ\x06QPQ\x9bQ\xe6R1R|R\xc7S\x13S_S\xaaS\xf6TBT\x8fT\xdbU(UuU\xc2V\x0fV\\V\xa9V\xf7WDW\x92W\xe0X/X}X\xcbY\x1aYiY\xb8Z\x07ZVZ\xa6Z\xf5[E[\x95[\xe5\\5\\\x86\\\xd6]\']x]\xc9^\x1a^l^\xbd_\x0f_a_\xb3`\x05`W`\xaa`\xfcaOa\xa2a\xf5bIb\x9cb\xf0cCc\x97c\xebd@d\x94d\xe9e=e\x92e\xe7f=f\x92f\xe8g=g\x93g\xe9h?h\x96h\xeciCi\x9ai\xf1jHj\x9fj\xf7kOk\xa7k\xfflWl\xafm\x08m`m\xb9n\x12nkn\xc4o\x1eoxo\xd1p+p\x86p\xe0q:q\x95q\xf0rKr\xa6s\x01s]s\xb8t\x14tpt\xccu(u\x85u\xe1v>v\x9bv\xf8wVw\xb3x\x11xnx\xccy*y\x89y\xe7zFz\xa5{\x04{c{\xc2|!|\x81|\xe1}A}\xa1~\x01~b~\xc2\x7f#\x7f\x84\x7f\xe5\x80G\x80\xa8\x81\n\x81k\x81\xcd\x820\x82\x92\x82\xf4\x83W\x83\xba\x84\x1d\x84\x80\x84\xe3\x85G\x85\xab\x86\x0e\x86r\x86\xd7\x87;\x87\x9f\x88\x04\x88i\x88\xce\x893\x89\x99\x89\xfe\x8ad\x8a\xca\x8b0\x8b\x96\x8b\xfc\x8cc\x8c\xca\x8d1\x8d\x98\x8d\xff\x8ef\x8e\xce\x8f6\x8f\x9e\x90\x06\x90n\x90\xd6\x91?\x91\xa8\x92\x11\x92z\x92\xe3\x93M\x93\xb6\x94 \x94\x8a\x94\xf4\x95_\x95\xc9\x964\x96\x9f\x97\n\x97u\x97\xe0\x98L\x98\xb8\x99$\x99\x90\x99\xfc\x9ah\x9a\xd5\x9bB\x9b\xaf\x9c\x1c\x9c\x89\x9c\xf7\x9dd\x9d\xd2\x9e@\x9e\xae\x9f\x1d\x9f\x8b\x9f\xfa\xa0i\xa0\xd8\xa1G\xa1\xb6\xa2&\xa2\x96\xa3\x06\xa3v\xa3\xe6\xa4V\xa4\xc7\xa58\xa5\xa9\xa6\x1a\xa6\x8b\xa6\xfd\xa7n\xa7\xe0\xa8R\xa8\xc4\xa97\xa9\xa9\xaa\x1c\xaa\x8f\xab\x02\xabu\xab\xe9\xac\\\xac\xd0\xadD\xad\xb8\xae-\xae\xa1\xaf\x16\xaf\x8b\xb0\x00\xb0u\xb0\xea\xb1`\xb1\xd6\xb2K\xb2\xc2\xb38\xb3\xae\xb4%\xb4\x9c\xb5\x13\xb5\x8a\xb6\x01\xb6y\xb6\xf0\xb7h\xb7\xe0\xb8Y\xb8\xd1\xb9J\xb9\xc2\xba;\xba\xb5\xbb.\xbb\xa7\xbc!\xbc\x9b\xbd\x15\xbd\x8f\xbe\n\xbe\x84\xbe\xff\xbfz\xbf\xf5\xc0p\xc0\xec\xc1g\xc1\xe3\xc2_\xc2\xdb\xc3X\xc3\xd4\xc4Q\xc4\xce\xc5K\xc5\xc8\xc6F\xc6\xc3\xc7A\xc7\xbf\xc8=\xc8\xbc\xc9:\xc9\xb9\xca8\xca\xb7\xcb6\xcb\xb6\xcc5\xcc\xb5\xcd5\xcd\xb5\xce6\xce\xb6\xcf7\xcf\xb8\xd09\xd0\xba\xd1<\xd1\xbe\xd2?\xd2\xc1\xd3D\xd3\xc6\xd4I\xd4\xcb\xd5N\xd5\xd1\xd6U\xd6\xd8\xd7\\\xd7\xe0\xd8d\xd8\xe8\xd9l\xd9\xf1\xdav\xda\xfb\xdb\x80\xdc\x05\xdc\x8a\xdd\x10\xdd\x96\xde\x1c\xde\xa2\xdf)\xdf\xaf\xe06\xe0\xbd\xe1D\xe1\xcc\xe2S\xe2\xdb\xe3c\xe3\xeb\xe4s\xe4\xfc\xe5\x84\xe6\r\xe6\x96\xe7\x1f\xe7\xa9\xe82\xe8\xbc\xe9F\xe9\xd0\xea[\xea\xe5\xebp\xeb\xfb\xec\x86\xed\x11\xed\x9c\xee(\xee\xb4\xef@\xef\xcc\xf0X\xf0\xe5\xf1r\xf1\xff\xf2\x8c\xf3\x19\xf3\xa7\xf44\xf4\xc2\xf5P\xf5\xde\xf6m\xf6\xfb\xf7\x8a\xf8\x19\xf8\xa8\xf98\xf9\xc7\xfaW\xfa\xe7\xfbw\xfc\x07\xfc\x98\xfd)\xfd\xba\xfeK\xfe\xdc\xffm\xff\xffVP8L\xb7$\x00\x00/\xff\xc0?\x10Uiq\xb6m\xdb\x93m\x9b\xffT:\x89\xef\x8f\xef\x87\x87\xebl\xfb\xfd\xa9o0\x7f\xe7\xd5\xbb\xe7Eh\xf9\xfe\x9f\x15\x81i\xc2\x00PP\x81iB\x8a\x81\x04\xd1\x14\xd3\x90\xbb\xc9\xf3\xbeo\x05\x08<\n*\x90\x08\x04\x0c\xa0\xa2\xe4\'\x84\xb4\xc9\xfbGB:\x01\x12\xce\x04\x81\xa2I\x11\xc8\x8a&(rI\xee\x84\x194!(\x82@\x94\x04\xdb\tT!J\x82\xec\x00P?\xa2\x15$HpM%\nQAH\xde?\x14\xae$0\x04\x18\xc0e\x08!\x08,\xa6\x13\xa0\x82\xa0h@\xf4\x16\xc8\x1aRAH\x05\xa2$L\xa1\x84 \x08\x02\x92\x92\x90`\xc0u\x00\x08H\x90h\x82\x82\xde\t\x15$\xd8\n\x92\x06\x81@\x81\x03\x81\xc0UA\x07\x01\t\x02K\x83@ \x98@\x15\x82\n\x82B @ \x9b\x10\xd4\x1dr\t\x0c\tc \x04\x81B\x14CUQ\xf8+i \xc1\xd57\xa8;$?\x82\x01\xa0\xae\xaa[\x91DH\xc0\xf6\xcf\xb0\x95\xe7\xf6\xcf5i\xf2dL\x98l\xdbG\x9bm\xdb\xb6\xed:\xda\xec\xc9\xb6\xed&c\xc2dO\xfcgL\x00\x7f\xf4\xff\x1f\xfd\xffG\xff\xff\xff[+\xd2\tS\x85\xb6\xa5uF9\x85\xa8\x80\x8a3\x8a\x87\x06P\xfafX\xac\xc4\x06\x01\r\xc3B\x0e\x03\x10\x1e\x196-]+Q\xa7DY\xe1\x81\xb0\xf3\x0fi\xf9\xaf1\x86~\xc5]A\x95\x96\xfd\xb3\xd8Bs\xe1\x9a\xf0K\xb1\xfc\x0f\xdd\x84\x9b\xff9\xae\xa2u\x97/%:\x0bo\x84Z\xa5aF\xc9\x12\x85{BG\xa1\x91\xe1\xae\x7f\x93@x-\xbc\x13\xce\x1b\xd6\xff\xaf\xb1\x10&\x1a\x1e))\x8c\xb9\xae\xf4\x02\xe1\x80\xf1X\x0c+\x1c@\x18^\x16J\xe4R,\x12\xbe\x08K\x14IU\'\x94\xfag\xf1\x8d\x82\xc2\xd1\x7f\x9f\xa1\xf4\xc2\xb0\xaa\xe1\xfb\x7f\x9fH(\xf0\x85\xff\x90<x\x93b\xb3\xf0\xd7\xf0\\8\xc2J\xa1\xaf\xca\xd2\x0c{b\xd8\xcep\xb2\xa2Yi\x05\xc2EEoE&\xe1-\x18\xce\x10~\x18\x8e0*$\xdcY\x1c.\xd8\x7f\x93Be\x86\xd5\x14\xcf\x14C\x85\x97\xc2\xe1B\xf3\x9f\xd0f\xd1\x0fQ4\x14\x9e\xb8\xb70r\xffsbcfS"\x1f\xff>\xb5p\xb9n\x03T\xed)L\x13\xfe)\xae\x18\x15\xa74P\xd1A\xf1T\x11\xe7\x07\xe8\x04m\xd8\xca0U\xff\xc61[\x84\x15\xe0nxR0\x8ay\x8a\x1a\xf6\x12\xc5\x0b\xd7\x8bS0\xe6w\x84\xcf\xef\x16\x15\x15#\x94\xb8\x91i\xee\xfb/\xf1\x84\x17kE%\xaa\x1b\xae\xb7\x03\x84N5dJD\xea*\xf2\x0b?\xf3\xd0U\x14\xca\x0b\xf3/GI\x84p\xc8h4\xf63\xaf\x1a\xa6\x87\x12\xdb\x85\t\x08\xf7K\x940\xf7!\x0c\x14n\xc9\xda\x19\xc2%\x8f\xe6\xf9\x80]\x94\xe0\xc3\xde&I\xd8b8W\x16\x96\xce\x03]\x89\xc2R\xcd\xf6P$D1^\xd8\x87,T\x19"|:.\x1cki\xfe\xfbwI\x84\x8f\x8aP\xe8PE/\'\x94\x1a\x0e~\x16i8)\'\xcf_\xc0\x955\x0e"\xedi\xc5\x9ap`\xe0J\xe1D\x9c\xf6\x0f\xa3\x0co\xc7\x86\x9d\x9a&\xac\xddmN\xcb\xeb\xda\xc9$\x1ed\t-\xf4\x98\x98\x9d\xf3\xab\xb0\xc3\xb0 x\x08\xa7\\1u\xa4\x06\x8e,\xd7\x1a-\xa8\x0e/\x82\x84\xff}4\xbf\x04\x19\x95Q\x0c\x18\xa0\xaf\xeb!t\'Uc\xfe\xaa\xb8\xd2F\xb8\xfaQ6\xe9\xdf\xa5\x11\xbe\x17\xf2\x03\x1b4\x04\x98\xed\x8c\xa9\xe5i\xc2\xb6\x9f\xeb\xaa\xc7\x1e\x04x.\xd4\r}AE\xe1\xab\x9d\xbb`=\xc3\r_)F"\x0cS\xcc4o)\xca5\x0c\xd8\x7f<2\xd5(`\x12c\x85\xdd?\xc43\xc0X \xad\x9d\x95:hL\x94\xa22\x86\xb57\x01\x18v9#\x13\xda\x16a\xf1&\xd6\xd9,\xf6\x9ff\xae\x92o=S\x87V\x07f\t\xa7\x7f@\x9c\xf0\xe7\xad\t\xde\xb0\x7f\x92$\xde\xc2\xa0\xcb\x1f\x7f\xd5\x10$\xcc\x12\xd4\x1bGW\xa0`\xba\xc2\xa3_2\x1f\xab\x9e\xd66a\xaf\x13C\xa5\xf8\xf6@\x91\xd2|\xa2Y]#\xaa\x82\x7f9En\xe4&\xcd\xd4\x85&a$\x85U"\x030l\xb2\xae28!a\xee\x03\x97\xda;|q\xfe,|kvR\x16\xf6\x94\x18\x03P\xc7\xf0\xb8Q\xf0\xeb\xe5FQM\x85>\xc2^4-\x05\xaf\xa9t\x8a"\xf6]\xd5=\xcd\'\x9b\xceo\xb4\x03\xc5\xd6\x95/\xca&\n=\xee\xdc\xf8\x01)\xc2o\xa3,\x14(\xba6N<\xe6\x84\xa9\xf5"\xc3\xfd7\xca\xe8\xba\x16=(\xbaa\xd8\xefe8\x86\x15=\xf2\x01\xf7\x1d\x07\xe2"\xf2\r3\x17\xa7\xa9S\x90\xb2\xaf\xfa\x9dw\x89J\xd3\xcc\'\x91-\x14\x1epZ\xa6>\xd3I\xcf\xbf\xcf\xea\xf3\xcd$\xe6n\xb9R\xd4\xbb\xa5\x1e\xd3\xea\xdc}C;W\x03;\x08\xbf\x1e\xe0\xa5(I\x93\x1b.\x93\xab\x08gO\x00\x8b\x04m\x1d^\x0e*>\xc4\xf4\xf5!n\x7f\x0c\xb9\x83\xcc\x1f\x05C\x01\xc3q\xe3\\\x9b\xcf\x9c\x16\xf3\x08p.q\xa1\xb2I\xc6L\xd8\xa8\x9e\xd6\x16\t\xafx\xc5M\xf4\x11\xa6\x03<t\x99c\xd1\xcap\x13P\x8cljyIx\xac\x87\xe1B\x1e\xfe\x901\x16I=\x13\x00\xb6\xeb2\xde\x9a+r{\xbbf\xd7\x99\xde\x068\x98\xe0\xd8\xc6\x9f\x9a\xc1\xf1\xf1V\xe9\xe3cm\x95\xf8>\r8\xea\x8f\xa4m#vtUd\x8f\x16\xd5i\x8f\xbbK!\xeeW\x8a\xca\xa3{m\xd8\x12\xb1\xddZi\n\xd4\x05\xb0\xe2\x1e\xe6\xcd\xba\xcfr\xba\x0b5\x11\xffr\x13\xa0\xec\xf8\x9cWa\x0cZ\x06\x18\xe6\xf5\xb2\xd9\xd2\rIw\x96\xf7\xe8>N\xb6M\x16e\xe7\x84\xdd\xdb\x1e\xb3\xc4\xe5\xd0\xce\xe0\x14\x16\x9d\x91E\x92\'x\x82\xbd\x9d9\xc2\xda\x1f\x8c\xf9\x1d\x1b\xf55\x0e\xb6:\x07X\xc4\xb6\xa3\xdbp\x9b\xf3w\x81\xc3\x02FC\xd8\xa3p\xa4\xd4\x196X\xe3p"?r\xf2o\xe1\xa1"\x1ez\xad\x99:\xb9|\x1c\x18.3\x92\xd8k\x87\xaaDx>\x14\xf3\xa5\xc2I<\xf7!\xe0]\xb7/\xf5\xe6\xb84\x16f\x03\x18\xae\xfe\xf1\xa8\xcb\xc3\xbc\xc4M\x00\xe9B=\xa4~\xf9\xa6\xc6jM\xb7-\x83:\x0b\x1f\xae\t\x9a\xd9G $a\xa8\xee\xf3\x1aF\x95\xbf\xac\xe8\x1f\xbe\xa4\x85\x9bJj\x941g\xec,\x8aWL\t\xe1\xed\x01\xf5\xb2\xf0o\xc1\x99@\xa1z\x92;\x1cK6\x00\xdc~\xc99-\xc1\x90[\xa29i\xb2\x7f\x9b\xc6\xc7\xb2u\x8a!E_\xd8\xb8\x140r\xdf\xe1\x9c>\xf9\xcdb;v\x8euC\xa5\xe32\xcc\x19a;\xa0\xf3\xa0\xa2S\x97_\xc0\xf2\x11\x80\xd6\xa3\t\xe04\xf39\xf3\x7f\xf7\xc5\xd4\x9aSE\x86\xede\xc0\xc2&lUK\xf7\xc1\xb5\x85\xc6,\x15\xf0\xba\xeb\x12\xc0\x98\'\x84\xf0\xb2\x83\x8e\x92p\xd7\xaf\xe6\x8c\xb7\xe5\x9c9\xf5\xd1\x99\xc0\xb2)\xae.\xa7\x00\xb6\xb5\x06\xb0\xba\x8a\x94\x85e\x07\x85\x8f\xeb\x0c\xd0\xb35U\x04\xf3\xb0VU\xe6\xbe\xfb\xa9g\x0c\xc0\xab\x87\x94\xa4\xc3\x07\x9b\x0bv\xde3)C}\x8c\xf8\x1dOX\xa0N?\x15\x8f\xf8\xca\\\x91\x9d,A\xd8\xdc7Ma\xf2\n\xd1\x823\xf4\xbc./\x88\xb8\x14\x95\xca\xa5\x11\xc5)\x10\x96\x93\xad\x1a\xbda\xe9K\xd6J\xae\xcf2\x17\x9c\x0e\xc8\x04B\x80aY\x89z\x1e\x8d\x9b\x98<p,\xca\xad\x1e\x8b$L\xfa\x94\xb8\xa8\xda\xcd8\x06\xc59\x03\xa9Yyww\x94m\xd3$:\x1f\xaa\x8d\x0f\xae\x05<:\xae\x92\xb3\x96\x1f\xc7\xdb|\x16\x9dR,4\x17Pw\xaf\x01<_\xb7\x1dXy\xbdv\'\xc2\xebv\xd2\xf7q0a\xd1;)\xf2\xc1\xb5\xd7\x14Y\xbbo\x8bv\xc6\xc0:\x00\xb5;3\xf8\xae\xfd\xaf\x13\x96d6\x1fN\x93J\xa8:/\xeb\x14\x14\xda\xfc\x0c|\xeei>\xd8\x18\x94\x9c\xf8\xd9\x19\x98\xd3h_o\xa8?\xf6H\x98\xda\x19\xecG\xedERyh\xb3\xc1y\xd9\xdb\xdb\x17\x14l\x14\xf4\xcd\xb3h\xbc!\xe7-\x8c\xdf\x88\xc5\x9c\xec\x19\xc9\xa8\xd8vD\x01\x0f\x84\x83\xc0\xce\xa4\xba2t\xbai\xb6\r\x9eV\xcbX@\xfc\x95"\xf5\t-bMA\xea\x84\x9a\xc4MJj\xa1\xfet\xf3@p\xd0/\xd2\x10\xdf\xab\xbcQ\x10\xdd\xa0O\xb5\xc7\'\xea"\x07\x07}\x05\x85\'\xd3\xef\xc9\xa6P-\x05}\xa3\x8c\x82\xaa\xd1n\xb6\xfcx\x9a\xdfo\xe8:L<s\xdf.\x13\x1a\xd55\xdb\xac;\r\x088>*8\xad\xa6`\x06\xeb\x94\x00\x93\xd2\x00\x96}\xf9\xbc\xe8\xb9\xb1@\xb57\x07\x95\xc8\xa6M\xbe\xea\xd1f\xa77@\xf2B\xe7\xf4\xe6W\x8aV]B\xa5B\xd1\xa09\xcf\xf4\xd0\xa0\xf6\x9b\xf7\x7f\x92)\xdf\x01F\x86\x9aY\xdaT\x94\xa6\x12\xef\x0f\xab\x02,\x859a\xca\xac\x03\xfc\xe1n\xc25$t\xbb/\nIUr\x9c\xf1\x9d\xdc~\x110\xc7\x17#YO\x14\xb5\x95\x8c\xa8AgQ\xb1}\xedr+\x00\x7f\xf5`@3\xa1\x10\x8e\xb70\xa3\x9c?\'wU\x86\x9d\x1e\xf8\xd4\xa0s\xcf\xd8\xedM\xf5\x00M\xdap?g7R\x16\xce|\xa43\xe6w\x12\x16\x80\xae\xc3\xc4\x84\x83=\x8eNX\x12\x97>\x8a#.\xa9\xc0\x84\xd3\xa8\xd6\xa9\xed\xdf\x8d\xd6\xc3>\xf5(\x80m\xb7+\x12\xf9\xe3:\r\xb8\x8f0\x93\xe2O\xa5\x0bj\x96\xb68\x15y\xd7\xba\xfc+\xf0\xce\nBZ\x15\xbd\xd1\x01{b}\xef\x8f\xc6\xd4\xa7\xf5\x80m\xe8\xfb\x84;I\xc0\x93\x1a\xab\x07\xcdR8W\xb6j8\xd5~\xef\xedy{\x80\x0e\xd1\xaa\xf1O\x8e\xf1\xf2X\x95G\xea\x84\xbd\xa2H?\x9f\xd7\xda\x1b!\x98\xd1\xe1\x8f\x82\xd3\x1a\xc1\xaa*\xa2.\xe3\x97}\x94\xa1\xfd\x18\x00\xfb\xfa\x88[\xf9c\xfa\x90r\xf60\xba{l@\x1e&V\x13l$1\xab\xa3\xaf\x9f\xff\xb0\x90Q\xcf\x8a\x11\xa4N\xdd&\x8bR\xd3O@\xb8\xe53\x1d\x93\x1a\x1b\x00b\xdb)\x9e\x98\xd1\xdd\xb6\xd8x\x8d\x04X\xe0\x91\x0f\xe4\xa2\xb9}\x12cv\xbe\x8c\x08\xa7\xc0EH|M\xd0t[7\xbdN\xee\xe5\xfb&1~0\xf7\x8b\x04k\xe4\x1as\xf9\xe4\xaa\xdb{\xed%;\x17{\xcb\xae\x07\xf4y\x03p7V\xe1`\x1d\xd0Q\x89\x99\xed\xdb\xc6\xe6\xa9/Ju\x93O\xa0tL3\x06O\x06\x88?5sU\xa1T\xc3\x8e\xe2\xbd\xb1\x00\x02\xcf\xc8\xc4\x9f\xd0\x8a2\x824\xfa\x11\x9e\x05}&\xd7x\xa9A\x85\xdbB\xa3.B\x95i"j\xec\x87&U\xcd\xb6vKbP\x1e}o\xc2!e\x91-\ng,\x02\x8b~\xc1?\x9e\xc5\xd4a\x91\xa0\x03\xb9\xf1T\x0eU\x07\xbc]\x16/\xc9i\x18-\xd2\xa5\xae\x1a\xb1\xb6\xf2\xcc\x8b5eL\xdb\xee\x07]qQ\xef\x05\xee\xe7\xd8\x8b>T\x86=7\xdd\xcd(\xcf::\xc4\xf6\xe1"\xdb9\x8e\x83\n1q\xe9\x1b\xabF\'\xe6\n\xe8\xf7\r\xd3G\xaas\x8b\x91\xc0\xdbn\x94q0\x00\xd7\x88\x02\xc0\xb7\xb7zeE\x94\xb6\xb5<\xf9w\xef\xf6\x9d\xc3\xf4S\x0e\xfc\xa0\x19Ov5\x04\xa2\x05\xec\'\x9a8\x0c3;i\xfe+\xcb\x05J\xac\xda\xc3\xb7\xca\x01\x95\xdf\x02\xdc\xad\x02\xe8>\xfe\xd2JX\xf7iQ<Rn.\xf7`\xc2\x81\x932\xfa\xb3\xf8_\x86\x91m\x82/\x04tF\xf9\xb2GH<r\xb2\x12\xb9O\xfb\xaa\x81@\xe7\x88\xa1\xc0nu\x05{\xf7e\x96\x91f\xd5\xc2\x9e~\xdff\xd7X\xa5$7`\xd3\r\xed\x1c\x0b\x94\x86\xfbX\xc3\xd0\x1d\x06\x80\x94S\xefi\xd9\xbcR=\xa8p\x8f\x91\x8bx\x84Mu\x9e6we\xec.\x91\x0c\xbf\xbc\x90*)]T\xd0\xb3\xea\xdf\xd5\xb2\x1c\t\xbc_\t\xd0gB@\xec\x8d\x10\xcc\xe6)\x9f\x96\xed\x99q\xd3*)\xab\x10{\xe0\'\x9bV\xd1\x98\xbc\xe6%<\xdf\x8e\xa4\xa7\xbb\xb4\xffnS\xf9-\xa4\n\xb6&\xa0sHo\x8dx\xb3O;\xbc+\xbcqG\xfah\x1f\xd1\xa3\x89\x05(Wx|\xf2\x00\xe4\xa4b\x04\xb3y\xf6\xbc*\xe1\x1b\xcb\x7f\xf6\x1c\xb6\xbc\xe5\xc2\xef\xdf\x81\xcd\xb1C0Y\xb3\xae\x0e\x90+\xcd\x91\xf6\ts, 3\x9bIi@\x19\xc1\\\xcb\xc9\x16a$?\xb4vI\xab\x89\n\xf5\xeaT\xe0U\xdd\xcd\xc7G\xbd8\x96\x04r\xd5\xc7_\xaf`\x86w\x1cZgy\xa7s\r\x1a\xb6\xdd\xb9|\\\x13\x19\xe0\xfb;\x13\xe4?\xad\xaa\x91\x8b\xb4\xba\xa9\x13[\xb4\x8a\xf6\x0e\x1c\xc5\xaeYX\'\xf8\x83.\x8cg\x15D\xc7\x8fF\xb4\xf1G\xb59\xb6@\x0f\x0f\xb5\xcf\xeb\xa3\x97\x1d\x87\x80[Z\x9b\x93f\x996tC\xd2|\xd7\xfaSW\xed*l\xd9,S\x94\x92\x15"\xd2\xdf?3\xbd\x8e7\x12\x0ey:\x0bm\xda\x98\xfc\xdc\x07\x13B\x9fqV\xb0\x91\\h\x83\xf8V\x94\x1d[\x0f\x05l\xf1E\xd5CO\x03\xe8C4\x90\xdf\xa2\x16f\xba\x0c\xf0[\xfa\xbb\xbb\xebk\xf8\xad86n\xef<+\x11s7\x80\xd3W\x87\xd0\x8d\x05H8\xd2+vx7@\xf7\x93c\xcf\xd3\xd99\xf5\xa9;\x86=\xb1\xbe"\xb9F\x9f\x8c\x1dKbP\xfd\xba#"\xf2\x01\xdf\x80\x9f\xcd\xaa\xf81Z\x8a\xd3\xe6\x82v\x06\n\xda\xd5z\xb3\xf4\x89\xd5\x9a\x97\xd1\x15\xc6\xcdt\x16]K\xe83\xcbc\xe0\x0c-\x126j\x1f<6\xd6\x98#\xbe\xd1\x15\x0e\x87~bj\x90\x86\x9e[D\xac\x16\xb4s<*t\xea\xb0\xd6Z\xc9\xbc\x0e\xa2b$\xc8H\x8e\xb2\n\xfe\t\xb3:FP^\xfdr\x06<\x01\x0e>H\x1a\xf1\xe4\xfa\xf2\x0b\xc9\xad\xbd\xa6\xb8\t\xb6\x83\x88\xbfK\xfa4\x1b\t\xb5\xcf\xd7\xa5\x9f\x8a\xe7\xd0\x1d%\x85.M\x0f$\x07\x06\x18\x0b\xdd\x97_\xb9\x9be\xccD\x9a)\xa82\xa6\xf7\xe4\xa0\x99\xddD\x1f\xfa\x888\xbc\xfd\xf6\x87\xb3\x98\xd9C?$\\Xq\xc2\x19\xa8x\xec\x9c_\x9bj\xc7\x9f\nX\xe9I\xffC#w\x16\x8a\xa4u\xde\x94\x9c\xf8\xd9\x19\xd8j\xe3)\xe2\x80\xc3s\x03\xe0\xe96\xd6w\x81\xeeV"U:\xad\xb0_z\x8f\xec3\xcfD\xfb+(1\xd3\xeb7\xb4\t:\xc8\xd0fQ\x8be\xc0\xee\xf2\xbe\xcac\x8d\xf9\x85\x1d\xef\xdau\x18w\xc1-#F\x9a\xf8+E\xbd;i\x01{(\xdf@\xc9IK{\xdbe.6\xe7\xec\xder\xb7\xc6\x03\x15\x9d\xf0Q[\xce\xd4\xc2\xd0\x88k@\x83\x06f\xdb\xb2\xa3\xc7\x86\x96\x1d\xdc\xa9;\x14\xa7\x17\xa6;\x18\x05\x01*\\\x8e\xb94\xf7\x91K\xbfU\x93b~=\xe3\xb5G\x9a\xdf\xd2j\x02\xda\xa6\xeb\xaa\xc0\xa8\x9cl\x91\xfc\xf1\xc0\x84\xa5\xe7>,\x85a\x1e#\xf4\xaa\x90+\xb5,ZQ=M\x1d\x03\xec\xfa\x11\xa8p\xc7l\x0bk\xfe\xac/\xd4\xba\xa3\xdf\x1d\xf5\xd0\xbb\x18\x89\x13y\xbb\x1c\xa8d[!*\xb9\xfa\x98\xd0\xa7C\x90X\x06\n\xfa6\x1eX\xc5#\x1f\xd6\x0c\x13\xb16\'\x1a.5\x06\xa7|T{3\xebW\x88\xf7\x18\x0ctV?\x81>\xaf\xcc6\xe5\r+wi\xb3\x99\xdd}Q:\xd2\xad\xf5\xf6\xb5)\xea\xdb\x1bBP\xe5\x8a\xa2\x8b\xb3a\xfb\t\xf8y\xba\x9d\xc8>h\x015\x93\xbdP\xa9\xb5\x1dpV\xdd\x07\xa8\x12\xa4\x01\xde\x0f\x80\x0e\xdd\xcd\xa8\xed\x7f\xe2\xdc\xd2\x8a\x90\x19\x02\x99>\xbd\x8fT\x7f(g\x04i\x94d\xa4)\x9c=s\x12+\xb9\xa3Z\'\x8f\xd9\xc0\x1d\x07=:Ao\x141x\x15\xb9M\xb5\xaa\xb849"\xcb\xcb\x1aVm\x03\\\x05\xfc\x15h\xd4\x15\xc2\x8eIS\xb8\xb4\x947\xa1\xa9\x9f\xcd\xab!\xd0\xeb\xfc\xf6\n\x06\xb0\xb3\xda\xceH\xc1f\xc8]~\xe5Z\x1c\xe8\xdf\xfe\xfe\xa5o\x01*o~\x11\x88\xf4X\r}\x92t\xa2\xc8\xaa\xd5Q\xe9\xe2\xf4K\xceO\x1a\'9\xb1 6\x1c\xe8\xfaQFz\xf9\xce\x81\t\xf54\xa5.\xef?\x01\xf5\xd5Y\xef*\xb6\xd4\x01\xe1\xbb\xdf\xc1\x89qL\x1a\xcf\xcb\x8fr\xe0w\xd8_\xb5\xa9\x96\x92\xd0\xd5q\x85k\xf3\x99\x17;\x83]T\x07\x91\xaa5\xd3\x9b\x02CZ\xd4C\xf7\xe5:\x90\x97\xe8&\x89E;\xd0\xac\xfdh\x19X\x8cP\n\x1f\xe5\xf14c\xdc\x8e\x87!\xd8E\xcd@i\xb7\xfc\xe8\xac\xcd\xd6\te4A\'+f\xd9\x11CI\xda\xf5\xcd\x8e\xab+\x10\xdf\xb8\xae\xa2\xd4\x18\x1d\x9cS\x87\x03\xd4k\x0c\xeb\x83\xe3\x01\x19I\x8f\xf6\x8b\x1c\\\xdbf\xbb=\x90]\xea\xd2\xd7RO\xaf\xe3\x0e0l\x8d\xb2\xa4\xb3\\<\xc6\x85\xc7\x9c\x08Z3\xd0\x9e\x926\xcf\xa7&\x80\xdc\xe8\xa6\xc7\n\x95xz\xc5\xaa_\x9f\xc6S\xed/Z\xad\xb6\xc7\xder1\x92_\x15\x8c`W-\xb8\xebc\xc1\x93\x01-\x9cKQN\xbb\x87\x86\xfeVpn+c\x96\x90\x9d3J\xc9\x81\x8eL\xea\xcf\x1e\x9f\x8a\xf2\xd7\xa6\x1aL\x1d}o\xabT\xf8m\x12\xe5u\t\xf4F\x95\x99E\xcb*\x86\x0f\x1a\x0b\xbd\x07\x88\x16\xa4\x02\x9eH?\xa0\xecY\xe0\xc6\xae\x1f\x1d\xbb\xe6Q\x8aN\xab\xdaQ\xdb\xce/v\x1d\x0b\x1d3iP^\xc9\xe3\xdd49\x04\xc3\xd7"\xa1\xed2\x01\xa7\x7f\x90L\x87\xf4\xd6]\xedLj\x95\x86\xf2[\xeaS\x10_w\x16\xaa\xed\xbd\x1at\x97\xca\xaa\x97\xbaR*n\xbe\x14\xb0\xa6\xf3\xa7\x1d\x8f\x8cy\xfah\xba\x8f\xc0\xd3f\xab\xc8o\x12\xab\xae#\xe9\xb7\xfe6\x87\xb6\xfa\xfa$I\xa5J\xef\t\x1bM\xf2z\xa4\xa4\x18)\xa0\x92O\xf9mQ\xfd\x9d\xa42\x80\x8e\x16@\xd2\xf9h\xfb^\x93\x1d\xbeno\x05\x10\x7f\xab\x14r\xf2\x08p\xc8\n\xb1\x91\xdc\x1e\x8f\xd6\xb5=Sf:\xb1\xff\x90\xe8\xd1~>\x95\x91\xa2\xccc\xf5\xc08\xa0\xcd\xfe\x92\xcb\xb6a$\xd4\x13\xb4\xce\x84\xfeGE\xce\x13\x16B\xbb\xbduF"q\xc1o\xa1>\x17\x80\xcf\xcd\x98\xe5x_\xcfI\xc1F\x12\xfe(x\xae\xae\xd4\xb1\xa4.\xb0f\xb5\x92\x14\x01\xcfmJ\xde\x1e\x1cF\xd5c\x18\xf3\xd88\xe0\xc4S$\x943\x9a\xb9<\xe8\x9b\x1a\t\xf5\xdf\xdbx\x96T\x05E\xfb 7\xe0g\x13\x9a\x06\xc4\x00\xc5\x88\xda\x1f\x89\xe3+\x81{\xa5\xe9U;\x9eM\x88\x06\xc2\t\xcfz\x02\xf2\xc7\xeb[l\xda\x8c\xa4\x14\x1a\x93u\x04\xc6\xf9\xc7\xe7\x01\xcc\xcd\x1at\x98\xeb\xafh\x9a\xa8\xe7\xc3\x05\xa4\xae\xa7\xad\xe5\x8d\xee\xcb\xbe?=K?\xf5\xacAIE\xa5\xda\xf6\xf0\xd3\x1a\x134e\x07\xd9\xc1\x86\xdavRu\x8e\r\xd9\xb0c\xde\x14\xa0\xae\x15J\x87\x0f\x00\xff5\xea\x95\xbe\x942Oz\x02[\x96C\xf8\xf5\xe0\x0f\xa2\x9d\x82\xcdg\xc5\x8f\xe7\x87\x18\x80U$K\xc7K\xe6\x1b\xbb\x07\xf4["\x9279S3\'\xbb\xa4r\xdf\xb1\x166\x97\x1b\xa5\x8co\x0e\x1f\xbb\xbe\xaf\xed\x8f\xd45\xd5\x01\x1f\x16\x82\x16\x9eG\xd9+\xe9\x16\xbbv\xda\x8e%A\xbfR\xea\xfc\x10\\\xc7\x0e\xdf\xf3\x1d\x87\xdbx=\xf7I\x02\x98\xb8\x7f\x9ee\xe0\xf7wPXC\xd0a\x92\xe8\xad\x01\xaf&\xf9\'\x1c\x04U\xb4\x16\xd0\x04\rS\xb2\xbbe\xc9\xc1\x92\xd72\xb8\x967\x81\xf8\xbe\xfd\xeeg#\xf9\xf3\xcb\xc6\x1c\xbc+\xd4\x1e\x82\xc6\xb2\x93H\xdf2\xa7\xe8J<\x83?\xca\xa5\x0e\x14\x9e\xd0c\xf4\x98\x9e\xf5n\x08x\x19\xb9\xa2\x0e\xea\xbe\xf6\xa4\xd8\xe8q\x9f\xaa\xc3\xb4\xbe\xaft\xce\xc7\x12\xef\x00#\x03<\xda7"\xf0\xa3\xec\xb4{\xa8C\x94\x1dP\x8c\x94\x8bHQ\x95\x9c\x92\xa2\x01c\x96\xa5p E\xbd\x15\xd8\xb7\x17\xc9\xab?\xf8E4\xe2w\xaa\xb7\x9e\xd0p\xdeS\xa8\xd2\x1ep\x0em\xbc\xc9\x19\x88\x14\xec\xc9R\x08\x05w\xc6\xed\xd8\x10\x02\xe8gey\x02\xba7/\xb1^\xb2#\x13)\xf3=~O\x9f\xd8A\x07\xd0\xde\xc8\x05\xbc]~\x9f9o\x8a>\xb9\x0f@\xca_\xb6TQ\xcb u\xecDwxz\x00\x98{\x08x]C\xaa\xb8\xb1;\xb6\xf8\x8a\xc6\xcf\x9a\x1f\xbc\xd2Xp:+\x84\xbb\xe7\xb5@\x19-J\x1b\xc5\x94B\xa6\x94-\xaa\xe4\x0e8\x1dK\xfc\xd2\xe5!@\x9f.r\x9ek\n\xa6\x8d\x8f\x81\xf0\xeb\x02jw\xe2\xfd\xd5\x1eh4\xa1\x18\xe1\xdc\xd2\x84\x9c\x15\xc0gA\xeb\x00\xee\xddR\xcdg\x97K\xce\xdd\x8a\xee\x80oD!\xec<\x1f\x07\xc5\xa9\xab4)F\xb2\x9c\xa0\x8c\x19\xe7\x00\xf7rMbk\x02\x8c\xdb\xe0\xbe\xc4R\xff\x96R\xf3\x91\xbe\x05@\xe6\x88\x99u\xa7\xea\x1a\xe5d\x03vQG\x90pLw\xb7\xe1\x01\xae\xa3\xb4\x1d\xeb\xb5\x98\xb0\x08@P]\xfd\x82\xf7\x97\t(\x04R\xd5wE\xa7P\xa9<\xfd3\xd8\xff\xe4c\x01^\x83\x80\x89\x1b\x90xg\xf9\xa2S\n\xa7\xec\xd9\x9b\xb1y\x90?L\xde\xd6\x1fv\xce\xf5\x08\x1cu5\xcf\xceeh\xa9I|ni\xf0\xf2#\x001\xc3\x00\x8c\x19R.>pz\xecf6\x9f9\xbf\xff\xf8\xf3\xd72\xd0G\xfd\xd0\x13\xc6\x0e\x82\x83\x0fw\x18s\x91\xf4y\x87\xb3\x81\xed\xbe\xf2K\x87C\x93\xe7\xc0H\xf5[\xb0\xd5H\xe4\x19\xfb\xc0Y\xb7H\x9dV\xb3_W\xc4Cc\x7f\x9b\xe8p"\x1f\xf1\xf2\xbd\xa5\xaap\xbf\x80\xef\xa7\x01\xf2\xbaj\xa7\x17 u\xd3\xde\x90\xe2*\xd8\xae\xb1w1\x80\xe4K@\xf5\x88$ \xae\xdc[\xf9\xd9\x8d\'\xa8R\xb7\xc4\'`\xfaB@\xf3iZE\xee%DCZs$\xae\xf4<\x9a\xe1\xef\n>\xde\x18I\xb8\x9f\x80\xc5\xa9\x88OE\xab5\x88\r\xe0y\xd6\xf3RU\x88Qp3@\xc5\x956\x87F\xae\xb73\x8d\x0c\xe7F\x8bn\t\x06\x8c\xe4\xb4lV\x0e\x18\xf2n\xc7\xdf\x01l\xef\x05\xe0z\x01-\xaat\xd2\x9d\x9cX\x9c:\xadz\xa3\x81J\x074\xb0,\xb8\x15\x14#H,7\xdf\xee\xf3\xa9[@\xc8\xa1Z\xed\xfcj,\x1ePEI}\x01\xa3\x01\n6\n\xfa\xcdjJ\xe9\xd5\x1e\x07\xcc\x8f\xc3\xf4\x06 \xa8\x0e~9\x7f)\xea\xab>LJN6/\xcfOh\xe0\x89x\xfe|\xd1A\rRj\xfe\xa4\xac\xe2\x9a\xf3\x93\x07\x8e\x04O\x01_B\xf9\x870\xe5K\xa7\xaeH\x9b\xbd\xcf\x19\xc05\x85\xa3\x1b\xb6&\xd4\xed\xa0\x8bobi\x00"\x9e\xdd\x83\xeca\xd3\'v\xd0Q\n\x973\xc6\xbb\xb4\xae\x8e\x94\x9d\x13\x03\xfe\xd2\x9a\xbb\xc0\x9c\xf3\x83`\xee\xb6\xeeQA\xfbPn\xe4\x8e\x15I\xbcW\x1d\x06t\xbe\x96X\xe1\xf0c\xf5h`Y\x17\x99\x11\x82\xed3,j6\xd2Vo\x9d\x9a\xfaY\x04\xf4\xd8\x91}q\xb11[\x12\xf50\x04\xa5\xb7ZLy\x983w\'\xa5\xf4\xfa]\xa2*x#\xe5\xc2q\xb5g\xd9\xec\x9910"\x13\xe6-\xc9z\xcb\xce\xa4\x8d\x05K\xe6\x9ap\xfd\xa1t\xdeC\x1b{\x01\xf3S\xfd \xffKW\xc0\xd6\'\x03\xb9\xf9\xc5\xf9\xc6\x1cI\x8f\xcfw\x19\x1b\xf7<Y\x0b\x81\xef+\x18\x0b\xea\xf6\x1a\x95z{\xacG\xfe\xbe\x07:\x91\xbcK@#\x99B)>i\xb1\x1d\xa6\x1fr\x14N/\xb2/\x18\x98P\xf6\x85\xa0\xfd!\xed\x89\xdf\xef0j\xcc\xb9\xa6\x97\x019%\x03\x9c%\xd9\xfaA\xc6\x00.n\xb8u~\x08\xc4\x9d\xff\x05\xf8U\xc0\xe2\x14\xe8?\x1e\xc9W\\m\xf1 W\x8f\x01$w\x82\xf8\x8c\x9f\x12\xedN\xcc\xa5i\x01\xdbOX7{\xec\r\xa0\x931\x93\xef\x96\x03\xb2\xebL\x1f\xd7\xf1\x1a\xed_@\xae\xae]\xac\x05g\xaf:~\xf1Y\xba\xc5\xeb\xf2\x8e\xaeH\x1c\x93u\x12\x86\xdb\xc95\xde\x01\x87\xde\x03\x9a\xa0*\xc0\xb7\xb2\x99\x12\xcd\xbex\xb9k\xf5\xfc\x13\xb7O\xb3IP\x88e\xaag\x1d\xe4\x90\xfb%\x07\xbd]\xe5\x8b"\xb3\xda\x98\xab\xed*\xf6}\xbf\xab\x0c\xfe\xc1\xf1\x9d\xb6"\xde5\x07\x88\xbc\xf1\xb1\x9e\xd5\xbeB\rR\xe6\x06\xe6\xc3\xd3\x03\x88Wg\x85\xc0Vu\x180\xd8#\x1f\xc9\xa7\x0e\xfc\xb2\xde.}\xbe\xa0\xff\xb2v1\x82szM\x11^5/\xf6%!Z\xf7z5x\x9aI\xd6\xa4\x8e\x06\xc2\xd5\xce\x8bv9;{\x84^I\xbb\x02\xf2\x10\xa0\xb3\x80\xd1\xb00`+\x92\xefS\xb7\x05\xdf\x88B\x91\xe6\xf6\x06\xa0\xfc+ \xd2\xe3\xa4t=\x07\xe9\x88\x8f\x08\x8c\x9c\xfd#p*MI\xf7\xa6{\xbd\xf0q\xe5\xce!\xccf\x03\xb8|\xd8\xf6\x0c\x90\x99e7`?:B\xdc\xdaF9\xad}=\x1e\xe0}+:\xb9|Fz\xbb\xd9\x00mn\x888\xb1\xc3\x1dF\x9d\x1f\x02\xc4#e\xa4^tW\xc0\x83\xacO\xb7\x9cW\xf6\xfd\x96\xe55:\x07\x8f\x14\xdd\\\xb4\xe0\x00\xea\xcc\xe6\xd3\x1b\x99E\x06\x80\xcc\xbdA\xf6E\xa2\x84\x1a\x97\'1\xa6\xc5\xc4\xb6\xd9\x8e\x13\xb6_\x92E\nO\x8b\xd4G\x8dPe\xe6\xae<\xf0W\xbf\x15\xe5\xb7\xa8\x04\xac\x19\x8b\xa4\xfa=\xbc\xbaxn\x93=\xdc\x9ce\xefPS\xffj\xf9\xea[\xd5\x86j\x1fy\x89\x1a\x1e\xeb\xd1\x98vz\xeb|\xcc`;\xc1\xc4\xddh\x14\xed\xf8\xb6\xb1\x0e\xaa\x0f\xac\xf9t#\xba\xd4&~\x82\xdd\xd1\x15\xe5\xf2\xd1o\xa8V~\xdd\x0fH\xab,\xe2\xde\xf4\x020\x16\x99\xd2,~-\x878\xa8\xd7\xb8\xc1\xd9T\xd7\x17XM4f\xd6\xe7\xa2!\xdc\xc6\x17\xf0\xaa\x15s\x1b39\xa5!\x0c\x1f;$t\xf4\xb2\xca\xde\x15^\x02t\xef<f\xd2\xa9\xe0\xdf\x9f\xf4\xcfY\xb3\xcb(X)\x8c\x92q\xad\xa3+\xd4\xf4\xb1\x10E\x0b\xb8\x16\xc9\x9df~\xd2\x96\x1f\x85x\xd5\xe0\xfc\x01i\xb3\x1b\'}\x19\x03ly\n\x18\xc9*\x18\x80\xd9T&\x15\xba%T\xdf\xd3\xd7\xbf\\\xaa\xd7V@\xe7\xd2\xff@H\xa1\x1bL\xbc\x92\xd2\xe9\x9e\xebs\x95\xe4\xbb+\xb3\xaf\xdd\x1c\xe8=G\xc4\n\xbdd\xdf\xfa\xfb\x08\xb8\x02\x06\xbb\x01\x0b\x82\xb6.\xb1\x07\xb0\xfb\xf6\x8dn61`\xcc\xcfaF/\x0c n\xd3\xd1\x07\xd6\xf3\x1d\xd5\r3\x01F\xa9\xf7\xdb\xf3\x16\xaei\x8bST\xad\x9byR\x19\x83g:A\'m\xb4H\xf22\x8f\x03\xc6\xaeH]\ro:\x00\xba/ka\xd4$\xaf\xc9\x8eg\x8ee4+\xb7\x043\xb9b_\xd1[\x1b2n\xf4p\xb1mPq\xa0ZP\x03\xce\xca8\xcd\x80\xdfZd\x1b3\xc1\xdcC\xf5C?\x9b\x10\x99\xba\x1b\xf4\x8d_H\'g\x8cwyP\x1d*\\\x8e\xe4\xccF\x80\xf5\x1fe\xf6\x06\xfe)\xae\xe0e\x97\xde-\x8d\xc5\x10\xb3\xa8ZCA\xaf\xb7\x07\x8c\xf9t]\xbf\xcaL\x0b$\xd2\xebF+\x85\xa7\xf7%@\xb7\xc4\xf2\t\x17\xbf\xcb\xaa9u \x1f.>0\x81I\x82\xd1C$R\xba&\x89\xc6]\xae\xe5M\xcc\x92\x97\xce\xb5\xff\x92\x89\x95Dv\x96\'\x81\xc81A\xd3\xdab\x16\xcb\xb7\xc6\x0f\x9c\x11}\xa5\xc8\x1f\xf6\x145\xbb<\x87\xb6\x97\xedr/\x96i\x11\xa9s\x06\x9dW\x97<\x88\xb7C\xb5\xd7\xb5\x9ft\xfc\xd4\xdf$\xeb\x84\x17H\x9a\xd7\xafK\x9a(\xc5\x0e\xdf\xa7\x8e\xe3C\r\xe0V\x80\xdb3+\x11\x81\xcd\x88n\xe5q\xd4\x1f\xb3X\xf3\xb2KD\xdb\x98%\xb7\xeb\x8dm\x03\xdf\xd2\x7f\x1d1\x02\xb9\xec\xfa\x9a\x03h6\x06q\xa0;\xaa\xdd\xfa\xd8\x02\xfa\x18\xc9ys\xd8\xd7]\xf4\xce\n\xb8\xd0L\x8a\x8a~\xdf\xc3\xfe\xa4\xf6\x07\xd0~\x08\xee\x9ag_{\x06~\xd3\xd2\xfaR\x9c.\x06o\x97C.\xc3\xbba\x16\xe7\xefM\xbc:2tZb\xa0m-\xb7\x04\x0b(`\x7f\xc7\xb8\xb9\xab\xbf\xac\x9e\xc5\xc9\x0f\xa4\x18\xc9$T<\xba_1\xb2jrqJ\x99\xba\xd95\x06g\xbc\x11\tz\x10\x90\x91n\xbaj\x1f\xf6\xfb\xfe\xe9q\xbdwmD|\xb8\x03\x0c\x1eHd\xd5\xf33\xd0\x04dB=\x87p\xcc\xe4\x9d\x96\xfb\x8f\x8flS4=\xf5Q\xb3\x17\x07-\x107\xdb\xe4\xf0\\?t\xeaA\xd897\xf8z\xae\xaaN\x9d!~\xdd\x01\xa7\xe8\x1c\xf2j\x9f\x12Pdo\x00`\xcc\x07\x0e0\x85|k\xd0C\xdb\xfbs\x03\xab\x7f-\xdf\xab\xdb\x96\xc3\xb00\xa0\xba|r\xfb\xed\x18\xdc\xd4\x03\x9c\x11\xd4V\xc8\x9d\x82\xd9\x9c\xe9\xd9(m\xd5\x82\xfc\xcb\x19\x85Gnt\xe5p\'\xc8\x0c\x08\xbd\x8b\xf5\xe0\xba\xba\x0e\x13\xd3\xad\xe2Qe\xb6\x9554\x15,\x1c\xfc\xd8P\xebQ\x9d\x94\t\xeaL\x94\xbf\xb5\xd2\x99B\x13\xb4\xf1D\xf9\xf5!\xcd\x7f\x9cZ\xbfM\xdd\x9fu\xc0\xbc\x1b\x1fk\xac\xd6\xf4\x1a\xd5\xc9\xe5f\xd1;\x01\xbbavg\xc6\\<\xdb\xc3\xabo\xad\xf1\xd5~:~i\xfb\xc7\x8e\x10?\xdf\x95\xbc75g\x06%~vF\xb5\x15\xd5\xdb\x9d\xd9\xaav\x82\x90\xd0;\xef\x0fC\xdb6\xd9&H8\xc6f\xaaE?\xaf\x9d5\xd3\xcaO\xb9\xd4\x14`\xca\xb3[r1\xf2{T\xe7g\x1b\xa8\xb6a#f\xf3\x93\x01;\x81fc\xc6\xf8\xdd\xed5\xe4}\xee\xa2\xd7\x07\x14\x8e&\x17qJ\xe2o\xf4\xead\x00\xa8\xf2\xae\xb1\x00;\x1f//]\xb6:\t\xb0up\xec\x83j#\x05\xdb\xb0\x7fX\xcb\xaa\x87z,J\xf3\xb3\xb4Gi\x8a\xa0\xe7\xe5>\xf1\xc9\xc3\xac\xbe\xf6c\xc2\xc4\x8b\xc0\xc9\xdb\x9a\xc1\x13\x03=\xf7\x05\r*t\xde\x94\xbc\\\xb4qfMT|\xed_\xa7\x9e{\xd9\x16\xde\xacH\xbbN\xfa\x11\x80\xb87M%\xc9\r\x81b\xe4\xef^\x02\xdc\xfav\xec\xf5\xfc\xd3\xfb\xa6\xf5u\xfd\xea\xd3K\xc9\xd7\x84{:F\xed\xc7\x0c\xd6\x89\x0eM\x98d\xed\xea\xb8\x15\xe4K\xda\xd9\xe7&\xa5\xc7\xcc\x8d\xbf\x12\xf5\xaa\xa6\x80\xa7!r\xe0]L\xef\xa9\xf9A\xd5\xd5\x9d\x9d\xc6Mv\xe5S\x87\xf8\xd7\xbb\x9b\xdd\x17I\xbd49\xec/\x05\xbbk!\x90i\x95\xf4\xe0\xed\xa4y\x1e\xbdF4\xbc\xb3{\xb2\x0c4/\x1a\x85\x19]\xa6\xaa\xe8\xd8:\xa0\xeb!\x80=\x17Z\xcc\xb1\xb8?\xd3#t\x0b\xfc\xd2\x13\xd0!a\x8bp\x13\xec\xad\x81\xe0\x19\x14#\xab\x0e85\xb8\x82\x85\xa5C\x1dUl\x16L\xac\xdf\xa5T\x80-\xb5\xee\x1a\x05\x1fO\xc9;\x10|x\x88\x91\xbb\xeb\xda\x13\xe0`\x08f\xb5\xa7\xda\x98\xd1\xb9\xa5S\xfah\xc8\xb3\x89\x83\x1e\xe9\xad\x0e\xfan\xc9\xea\x19\xf2M{\x90FQH|\xfb\x9b\t\xcb\xdf\xb8\x82\xa0\xc6@|\xcc\xa7\xf5+a\xa1v\x92t\xa7\xbf\x97\xf3\ng\x8bG\xa0=@\x95q\xc6\xe2\xa9\xdf5\xed\xdc\xca\xa7\x15\x9e\x8b\xc3\xed\xdc0\xcb\xbb\\x\xef\x18\x84Uw`\xe5|\xd0\xe5\xe7\xb6\xb9\\\xe7\x82\x17\xdch\xd59j\xb7T\xbd\x0f\x03\x06\x00l\x0bzo\xc7\xd5G\xc0\xc1\x8f\x03W\x01\xe1H\xea\xbclA|\x9ft\xab\xf1S!\xba\x99\xcf\xe4\xcd\x80\xab\xa3\x91t\x1b}\xa3w\xf9\x17\xcd\xae\xdb\xceX\xd3\xd3\x0c\xd3\xdf\xaf-\xd8:\xee\xb7\xbfe\x06\x87A\xc5\x80\xea\x80\xbd\xe5-<\x13\x86Pf\xbbl\x8diOnV\xd6\xfe\x12\xfc\x1c\xf5\x16\x86-\xbb\xfa]\xae\xe7\n\x10\x12\xda\x02\xc9C\xe6\'g\xd9:\x93\xbcB\x7fbz\x83\xf8\xaf\x05\x00]\x9fu\x9fd1I=\xdfs\xe3\xe4\x9ew1\xc3_\x84~\xaf\n[*p\xfd\x15\xf0\xb85\xc0\xdf\xb5\x87;\xef@\x87\xe9\xb7\x8fV\xe6\xb5\x0847,\xf3P8?\x16\x8co\xbdh\xbc\x88<c.Mx&bO(N\x13N~\xf4\xda\xe3TI\x8b8o\x9f\xed\x88\xba\x9f\xbfWM\xbe\xb0\x073]\xaf]\x91\xa5\xe1\xc5r\xce\xd9\x0c\x81j.\xde@12!\x0c\xb7kH:\xe8\xb9\xb2w\x7f\x07\x14\xcc{\x9d9$\x19\xd77\x95\x05\xa3D\xdan\xc3c\xeb\x89t\xc0\xde\x88\x98\xb3q\xdft\x82~\xae\x84\x06\xe3;\x9d{8t\x925f~\xaa\xba\x1dg\xab\x82\xdf;`|\x05\x80\xbf4\n"\xf5\xef\x9f\x95m\xa8\x07\x90\xffl|j\x80\x1dq3ce\xa9z\x1c\xb5y\xfa\xd5%\x15\x88\xb9\xb1\xfe`\xe1\xe2\x15l\xe8N\x9f\x18\xf4\x9e@Ecn\xe46\xde\x97\x8ay0\xa8&a\x82\x86v\x01!\x9e\x0fs\xa2\xec\x00g\xadd\xbfX)\xab\xf4\x93\x08\xef\x89G\xbfT\x04\xff\xbe:i\xdaN\x0b^b\xcc\x90\xcf\x04\x02\xdf\x9a\x97\xfd;\xec\\\xfcC\xb2\xc2\xec\xa2\x1a\xa5\xba\xd8\x12\xfe\xa1\xcb"{\xcc\x87\xe5\xbb\x8c}8\xd3\x1ev\x95\r\xf8T\xed\xd5qT\xda\xea\xba\xb2\xdf\x8c\xa4\x122\xcbFLEb}\xcb\xb2E\xcbk\xc8\xc0\x06K{\xc4:\x18;\x96w\xaf\x18\xd6\x9e\xfeVd+\x1c\x19\xf3bt\xdb\x11\x07\xd4\x02\xce=\xd6Y]\x1f\x95\x8f\xf1S\xd6\xb1\xbc2r\x7f\xaf(\xd1\x9d\xc4\xc6}\x0b\xb2s\xfed\x00\xcf\x05\xe50}\xbd\x92\xb6\xed9\x9c\xce\x10\x1fc\x9e\x9d\xd3\xbcq\x03\xcc\x99\x7fy(\xac\xf9\x03Z[\xa8\xee\xe5\'e\xb3\xd7\x98 \xbd\xc2\x93\x90\r<\xfc\x92\\c\xb5\xfe\xebd\x9d\xa80\x91\x82\xd88\xbc\x8c\\:\xfc\xf8Yk\xde\x88YDI\x9a\xf1^\xd9\x8adU<\xc9\x07\xe43c\x88\xbf\x92\x1eQI\x06\'\x8f\x05"c\x91\x80>\xa0\x1a#\x05\xf4\xc6\xfcy8\xc0ZeN\x93\x92D\xd5\xba(\xdb\xe3"\xdd\xb5\x1f\xd5+\x00^\x04=\xcaiX\xff\xce\'p\xaf3a\x95(W\x1d\xf9V\xed\x0b\x9e\x98Co^@\xe5e\xd4#DC\xa3\x94\xc5G\x18\x804\xbaK\xdb\xcb\x8e\xf5B\xac\x17\xcc3c\x01I\xe5fop9Z\xd3\xf1,\xa0W\xef\xc9H\xc4\x9cz\xd0Z\x15q\xf5\xae\x06\xdaC\x0fg\x91\xa7\x8d2\xdd\xf9\xe2T\n\xfbE\x93\xc7\xb5-Xg\xb1\xe73\xc0\xd7.2\x0cq\xf0\x19\xde\r\xba\xde\x04p\xe9A\xb4yE\xa5mg~o\x9dS\t\x13\x0b\xd4NJ\xf8\xdd[\x8amG{\x1c\xbd\xd8=\xadgm\xc7o\x80\x93GF\xd8\xab\x9cm\xb1y\x80\xad:\x0e\x88s\xc6\x1c\x1e\x96\xe5\x0f\xee\xfc\xc0\x80pe\xa6?\xde1\x1b=\xb8\x8eq\x89\xdaX\xb0\xb42@\xab\xe0\xf4S\xf1t\xef\x07\xc4\xf9L\xc1\xbc\xfe9\'\x1c\xeb\xbbS\xf2\x80\xeaq\x80\xe57\xa9fW\x8d\xbdXQ\xb7`\xd5\xc0\xe6\xd3\xab\x0f\xabmc\x0b\x0cU\xef\x01\xa68\xba\xf2S\xc2R\xd9\x1c\xf6\xf2\xaa\xd7Z\x99s\xe9Y\x02F$\xa7\x9fo\x0b\xd3\x12d\xa8qX*p\x1b\xecjoy\x05\xcf\xa2\x1dF\xc1=~s\x00\x1a\xff\x0cP\xb59\xf5\xf7`\x8e\x96\xed\x95\xf9M\xfcZe\xc7\x07\x19\xa7\xc2\xd3\xf98u\x1f\x04\ng7p\xcb\xc9t\xf2\x9f\xe6f\x8b\xc4\x7f\xd7\xcc\xc8\x9dn$C5Sc\xb4\xd1\xc0\xd8e\xa2\xd9\n\x0f\xe6\xeb\x87\xc7D\x17\x03\x0fh #\xe23J\r\xa0\xbd+R\xeb\xef\x9fIN\xef\xa1\xa4\xa0o\\\xea\x04\xa3`jAQ\xd4\x8f\xd7vU\x01\xfa\xf5\x14\x99\xbb\xab$F\xf6I\xa2A\xb9\xbd\x00\rn\xc3\xfe\x9bn;\xbb[\xbaI\x94\x7f\xc2!\xe6\xb9\xb6|GQ`Q\xd1~\xea5\x0c\xbc}\xe0\x0c\xb2\xdf\'`\xce|s\x96\xf6\xaehsD\xf0\xf6\xadx\xda\xd4\x11%\xa9}\xb9{F}yC6\x92\x16\xa7U<\xda7\xb2\x85~?\x8b6\xf9[8z\xe6\x06|w\xd3\x04\xcd^V\xde-?\x8f\x8aG\xccY\x9f\xcb\x02#]\x82\x04\r\xb0\x7f\x95(_\xfd\r(\x90\x914\xafk\xb0\xd7H\x0e{\xe4\xf3\x03\x7fo\xc0Ow`\xcc\x12]d`z \xe6n[\x9f\xcf\xfb\xff\xb2\xe0\x89\xadO[\xc0\x98\x9f\x7f\x0et\x98\xe9\x84\xe4\xd9\x13\x9e\xfa\x02\xf4\xfe\xfaC\xde\xbadoN\xf0D\x8en\xde\xe2\xe2l\xcc\xdf+n\x9f\xff\xc5\x02\xe8?\r\xe0C\xd6)\xff\xc19\xbdP\xa17VQ\xaf\x0f\xdc\xed\xe4\xa0\x15u\x0b\x01\x18\xf4\xc0~\xef\x9e\x94&;\xbe\xaf\xc0|l\x1d\ta\x15L\xc8O\x9c\x13\xd1\x03\xe0[D\x0f`\xa1\xbaB\xffe\xf5Q\xad\xc6\x98\xa5\xd4\xcc\xd6\xb7\xb8\x06=\x8e\x06\xb4\x14\xedw\xc9y\x96.\x98\x06\x16\x98\x8f\xb5TN\x02\x85\xa7\xdc\x1e\xb0V8oA\xc7\xe3\xa3"\x1e\x1fE\x86y\x1f\x90\xd4\xa27\xd0\xa8}#\xd1\xe12w\xdd\xa0g\xd7\xb6\xd3vl\x88\x01\xf0\xce:\xaei\x97\x82y9\xe3RA{@.{\x81EYj\xf5,\xa0LD7\xd1\xc2\xacm\x93\xbf1\xe5|\x92\x042\xde\xea=\xcf\x05\x95~\xb1\xbd\xe8P\xdd\xc43\xe8\x97E\x14UrG\xe9\xd9 \xcc\xd3\xcf\n\xf820\x0c^$l-:\x9d]/\xa2\x10\x18?\\\xc4\x9dVwtP\xd5\xc85\x95fu\x8d\xd9LwI\xfc\xec\x9c\xe9\xb8\x10\xa5N\xc7\x86\x06\x07\x15`b\xd21s\xd5\xb4}\xb6\xf7"\xfe\x04\xfa\xa1\x0e\x1d\x81O\xed\x81\x8c\xd8\xcd\xb9\xb9\x98\x981\xcc\x14\xf9{o\xaf\xbbs\x913VZ`\xd9!Q\xe6\x88\x99\xeb\x9an<_\xfb\xf5\xc4\xf6\r\x07\xf4\xc3\xbc=V\xfd\x08\x1d\xc0n\xb5(E=\x12\xe4\xa39\t\x8bL2\xf5\x87\x8f\xa3\xf5v\x97W\x14mm\xd4\x12\xdc\xb2,`\xb4c\xf7)\xf0\xf8\xa7!#Gw\xecSk\xbd\xb9\xab`F&J\x9df6\x07(\xef\x058\x85\xe5"\xf9\xced\xed\x8d\xfa\xb5\xbc\xce[\xffV\xd9\xce\x99W\xd7!s!0%8\x17s\x7f\xf3\xda\xf6\xc0\xce\x88!\xa8xb\xa7\x17\r\xbd[\xf4\x92G\xcf]t\xd1\xb9~N$b\xd7\xc9\xcd1\xff\xbb:\xae\x05\xd85ZU\x1db4\x89\xc6\xe2\xc1~NO\x94/\\t\x1e\xb8I\x14\xdd\xbb\xa1}i\x00\xfd^\xcb\x94\x8c\xba7\x8dvo\xcbu\xa9\xbey\xa0\xa6\x81\xe3\xc5\xbe\xbd\x81\xe83\x83\xec(\x1d\xcc\xf3\x19UR\xb08\xcd\xe9r\xf8\xd8\xd6\xdf\x1c\xd6\xbcs\xdf\x98Z\xce\x02\xf4k\xed(=\xf4\xa5\xe4\xb4\xbb<rC\x9d\xb8\x16\xd5\x1c\xda\x02\xde6\xed(\xfd\xae\xe0\xf5\xa4\x0bG4\x1a\xd0t:\xd3__\x1a\x96=a\x8f\xcb\xd0\xab\x9d\x81\x8d\xe3;\xc8\x94\x8e\xdbr\xe6\x9a\x95`\xb7\x17#\x94\xbe\xeb\x13lI]Li\xfc\xfadJ\xf3\x87M-\xdd\xfb\xa3\xff\xff\xe8\xff?\xfa\xff\xff\x12\x0b\x00'
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
@@ -30,7 +30,7 @@ import threading
30
30
  from .exceptions import *
31
31
  from .constants import *
32
32
  from .utils import create_session, TokenPool, calRunTime
33
- from .viz import visualize_tiles_with_shp
33
+ from .visual import visualize_tiles_with_shp
34
34
 
35
35
  # 类型别名
36
36
  Number = Union[float, int]
@@ -202,6 +202,9 @@ class TileDownloader:
202
202
  if response.content == ACCOUNT_BANNED_IMAGE_BYTES:
203
203
  raise AccountBannedError("账号被封")
204
204
 
205
+ if response.content == ABNORMAL_TRAFFIC_IMAGE_BYTES:
206
+ raise AccountBannedError("账号流量异常")
207
+
205
208
  if response.content == TILE_EMPTY_IMAGE_BYTES:
206
209
  raise TileEmptyError("空瓦片区域")
207
210
 
@@ -14,6 +14,9 @@ class QuotaExceededError(TileDownloadError):
14
14
  class AccountBannedError(TileDownloadError):
15
15
  """账号被禁"""
16
16
 
17
+ class AbnormalTrafficError(TileDownloadError):
18
+ """当前流量已达到上限"""
19
+
17
20
  class TileEmptyError(TileDownloadError):
18
21
  """下载了空瓦片区域"""
19
22
 
@@ -0,0 +1,198 @@
1
+ Metadata-Version: 2.4
2
+ Name: tilekit
3
+ Version: 0.2.1
4
+ Summary: tilekit
5
+ Author: zpz
6
+ Requires-Python: >=3.8
7
+ Description-Content-Type: text/markdown
8
+ License-File: LICENSE
9
+ Requires-Dist: numpy
10
+ Requires-Dist: torch
11
+ Requires-Dist: tqdm
12
+ Requires-Dist: opencv-python
13
+ Requires-Dist: rasterio
14
+ Requires-Dist: geopandas
15
+ Dynamic: license-file
16
+
17
+
18
+ # tilekit
19
+
20
+ A lightweight toolkit for downloading Jilin-1 (JL1) XYZ Tile System (XYZ) / Tile Map Service (TMS) tiles and saving them as georeferenced Geographic Tagged Image File Format (GeoTIFF) files.
21
+
22
+ `tilekit` wraps the low-level Hypertext Transfer Protocol (HTTP) requests, TMS/XYZ conversion, logging, and raster writing into a simple, high-level Application Programming Interface (API) based on `mercantile`, `rasterio`, and `Pillow`.
23
+
24
+ ## Features
25
+
26
+ * **🗺 Bounding box download:** Construct tile lists from a longitude/latitude (lon/lat) bounding box and zoom level.
27
+ * **📐 Shapefile-based download:** Use a polygon boundary (shapefile, European Petroleum Survey Group (EPSG): 4326) to determine the tile coverage.
28
+ * **🔁 XYZ → TMS conversion:** Handles the JL1 API’s TMS-style Y coordinate internally, while filenames remain in standard XYZ format.
29
+ * **⏸ Resume support / precheck:** Skips tiles that already exist on disk (`z/x/y.tif`) to avoid duplicate downloads.
30
+ * **🧍 Human-like throttling:** Randomized delays between requests to mimic human behavior and reduce the risk of rate limiting.
31
+ * **🧾 Structured logging:** Logs progress and errors both to the console and to `download.log` in the output folder.
32
+
33
+ ## Installation
34
+
35
+ Once published on the Python Package Index (PyPI):
36
+
37
+ ```bash
38
+ pip install tilekit
39
+ ```
40
+
41
+ ## Getting Started
42
+
43
+ ### 1. Download tiles by lon/lat bounding box
44
+
45
+ ```python
46
+ from tilekit.downloader import TileDownloader
47
+
48
+ def main():
49
+ min_lon = 114.98
50
+ max_lon = 117.20
51
+ min_lat = 38.69
52
+ max_lat = 41.18
53
+ zoom = 18
54
+
55
+ # JL1 API keys (replace with your own)
56
+ mk = "your_mk_token_here"
57
+ tk = "your_tk_token_here"
58
+
59
+ downloader = TileDownloader.from_lon_lat(
60
+ min_lat=min_lat,
61
+ max_lat=max_lat,
62
+ min_lon=min_lon,
63
+ max_lon=max_lon,
64
+ zoom=zoom,
65
+ mk=mk,
66
+ tk=tk,
67
+ )
68
+
69
+ print(f"Total tiles to download: {len(downloader.tile_list)}")
70
+
71
+ downloader.download_tiles(
72
+ output_folder=r"F:\xxx\JL1Tiles",
73
+ verbose_debug=False,
74
+ )
75
+
76
+ if __name__ == '__main__':
77
+ main()
78
+
79
+ ```
80
+
81
+ **This will:**
82
+
83
+ * Compute all tiles covering the bounding box at zoom level 18.
84
+ * Convert XYZ Y to JL1’s TMS convention internally.
85
+ * Download each tile and save it as `z/x/y.tif` with proper georeferencing.
86
+
87
+ ### 2. Download tiles based on a shapefile boundary
88
+
89
+ ```python
90
+ from tilekit.downloader import TileDownloader
91
+
92
+ def main():
93
+ zoom = 18
94
+ mk = "your_mk_token_here"
95
+ tk = "your_tk_token_here"
96
+
97
+ # Shapefile should be in EPSG:4326 (lon/lat)
98
+ shp_path = r"beijing.shp"
99
+
100
+ downloader = TileDownloader.from_shp(
101
+ shp_path=shp_path,
102
+ zoom=zoom,
103
+ mk=mk,
104
+ tk=tk,
105
+ )
106
+
107
+ print(f"Total tiles to download: {len(downloader.tile_list)}")
108
+
109
+ downloader.download_tiles(
110
+ output_folder=r"F:\xxx\JL1Tiles",
111
+ verbose_debug=False,
112
+ )
113
+
114
+ if __name__ == '__main__':
115
+ main()
116
+
117
+ ```
118
+
119
+ **`from_shp` will:**
120
+
121
+ * Read the shapefile using `geopandas`.
122
+ * Reproject to EPSG:4326 if necessary.
123
+ * Use the overall bounding box (`total_bounds`) to determine the tile range.
124
+
125
+ > **Note:** `geopandas` is only required if you use `from_shp`. You can install it via `pip install geopandas`.
126
+
127
+ ## API Overview
128
+
129
+ ### `TileDownloader`
130
+
131
+ ```python
132
+ from dataclasses import dataclass
133
+ from typing import Sequence, Optional, Union
134
+ from pathlib import Path
135
+ import mercantile
136
+
137
+ @dataclass
138
+ class TileDownloader:
139
+ tile_list: Sequence[mercantile.Tile]
140
+ mk: str = "..."
141
+ tk: str = "..."
142
+ zoom: Optional[int] = None
143
+
144
+ def download_tiles(
145
+ self,
146
+ output_folder: Union[str, Path],
147
+ tile_list: Optional[Sequence[mercantile.Tile]] = None,
148
+ verbose_debug: bool = False,
149
+ ) -> None:
150
+ ...
151
+
152
+ ```
153
+
154
+ **Key methods:**
155
+
156
+ * `TileDownloader.from_lon_lat(min_lat, max_lat, min_lon, max_lon, zoom, mk, tk)`: Build a downloader from a bounding box.
157
+ * `TileDownloader.from_shp(shp_path, zoom, mk, tk)`: Build a downloader from a shapefile boundary.
158
+ * `TileDownloader.from_XYZs(tiles, mk, tk)`: Build a downloader from an existing list of `mercantile.Tile` objects (all at the same zoom level).
159
+ * `TileDownloader.download_tiles(output_folder, tile_list=None, verbose_debug=False)`: Download all tiles and save as GeoTIFF files (`z/x/y.tif`), skipping files that already exist.
160
+
161
+ ## Output Format
162
+
163
+ Each downloaded tile is saved as a multi-band GeoTIFF:
164
+
165
+ * **Filename:** `output_folder/z/x/y.tif`
166
+ * **Coordinate reference system:** EPSG:4326
167
+ * **Transform:** Computed from the tile’s geographic bounds via `rasterio.transform.from_bounds`.
168
+ * **Compression:** Lempel-Ziv-Welch (LZW) (`Compression.lzw`).
169
+ * **Bands:** Derived from the source image (e.g., Red Green Blue (RGB) → 3 bands).
170
+
171
+ ## Requirements
172
+
173
+ **Core dependencies** (installed automatically when you install `tilekit`):
174
+
175
+ * `mercantile`
176
+ * `rasterio`
177
+ * `numpy`
178
+ * `requests`
179
+ * `Pillow`
180
+ * `tqdm`
181
+
182
+ **Optional dependencies** (for shapefile-based workflows):
183
+
184
+ * `geopandas`
185
+
186
+ ## Notes
187
+
188
+ * You must provide valid JL1 API keys (`mk`, `tk`) to access the tile service. The examples in this README use placeholder values; please replace them with your own.
189
+ * The downloader includes:
190
+ * A precheck step that skips already downloaded tiles.
191
+ * Randomized delays between requests via `human_delay` to reduce the risk of being rate-limited.
192
+
193
+
194
+
195
+ ## License
196
+
197
+ `tilekit` is released under the Apache 2.0 License.
198
+
@@ -6,7 +6,7 @@ src/tilekit/constants.py
6
6
  src/tilekit/downloader.py
7
7
  src/tilekit/exceptions.py
8
8
  src/tilekit/utils.py
9
- src/tilekit/viz.py
9
+ src/tilekit/visual.py
10
10
  src/tilekit.egg-info/PKG-INFO
11
11
  src/tilekit.egg-info/SOURCES.txt
12
12
  src/tilekit.egg-info/dependency_links.txt
tilekit-0.2.0/PKG-INFO DELETED
@@ -1,18 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: tilekit
3
- Version: 0.2.0
4
- Summary: tilekit
5
- Author: zpz
6
- Requires-Python: >=3.8
7
- Description-Content-Type: text/markdown
8
- License-File: LICENSE
9
- Requires-Dist: numpy
10
- Requires-Dist: torch
11
- Requires-Dist: tqdm
12
- Requires-Dist: opencv-python
13
- Requires-Dist: rasterio
14
- Requires-Dist: geopandas
15
- Dynamic: license-file
16
-
17
- # tilekit
18
- 专门下载吉林一号用的
tilekit-0.2.0/README.md DELETED
@@ -1,2 +0,0 @@
1
- # tilekit
2
- 专门下载吉林一号用的
@@ -1,27 +0,0 @@
1
- # 限额报错返回的 content
2
- QUOTA_EXCEEDED_IMAGE_BYTES = b'RIFFR\n\x00\x00WEBPVP8LE\n\x00\x00/\xff\xc0?\x10\xff%\x16L\xe6/\x9dA\xf7\xfc\xcf\xff\x04$t\x9c\x87\xf7\xff\xff\x9f\'\xed\xff\xefv\x84@ \x92\x12\x0c\x06\x82`l,\xee\x06\x07\xc3RV\xeb\x8c\xa2A\x94\x82u\x15\x8b\xc5\x85\xec\x9d\x8a\x8b\x96\xe1+\x8ae\xbb@x\x01\xc1\x08\x1a\x08\x1c\x19\x92?\xee8\xe8\xd9\xe7\xa9\xd7\xcb\x88\xfeO\x00_\xfd\xff\xd5\xff_\xfd\xff\xd5\xff\xffG\xa7\xa6\xd8.t1gg\xfc/\x05n\xd3\xaf\x8bcE\x06\xff>Q\xdbbY\x18=\x04\xc9\x13=bfm\x0b\xd5\xd6\xf4a\xeb\\m\tX\x05\xcc\xf0Tn\xbc\xfc\xc8\x14p/W\'\xd2\xdc.`\xd2\xfb2r\xdc4\xbd\xd6\x13\xe3\x9c\x1d\xd3\x88\x17\x8e)i\xef+\xd2B\x19\x97\x97\xde\xe6R}L\xbc\xb4\xde\xfct\x0f<\\\x7fr\xf6\xc3\xeex_\xb2 \xe9\xfb\x127\xa2b\xd8\x18r\xb0[6\xb2w\xae\xab\x15Q\x1e\xbe\xf9/\xf4\xcb\x99\xf6\xc9\'\xd1\xee\x1b`\xfb8p\xd4 H\xf9+z \xe9\xf6u\xa0\xba\x97\xe8\xa1\x8e,_\x1c\xa4U\x8e\x85\xfb\xc4H\x9a\xac$\xbd5\xf8t\x0f\x90(\xdb\xd8\xbc\x9e4QN\xf9\x00X\x1cb\x84\xc3\xfb8\xd8fE\xb5\xc1EQ(\xf5\xa7\x85\xf2O6\x846y\xdb\xbf\xd2.<\xdb\xc2\x86\xa9\xc1bo1Q\xf2\xc2\xb7\x88\xed\xcd\x87Hy/\xccj\x94OK\x1b\xf1\xa0N\x03\\NBdM\x979\xb8r\xea\xddzw\xdc\x06q\xbe\xc2\x7f\x91!\x1b\x11\xdc\xee#\x99\x0f\x89\x96\xdf;N>g\xe3\x1b\xa3\x1b\x98$\x06~\x13\x9b|\xa9t0\xf3bNl\x7f\x19\xb1\xfe\xc4\x8d\x8c\xf2A\x85\xb55\xb8\x07K\xbc\xd0\xe8\x1e\xf7&,]{\xfd\xd6z\xcf\xb7\x15\x97s#\xea\x07`\xef\xd3`\xeb6\xc4\xf7\xc4\xf9\xa5\xb5_\x8cQW?On*u\xfd\x0bK\xb8l\xd0\x7f;\t\xe1\xd5\xb0o\xb1\xff\xed\xea\x8b\xb7C\xe7\x9e\x9e\x1e-\x1c\xdc(\xea\x98o\xe9J<\x02k\xcb\x01\xa4\xa2\xb12\xf4\xd6\xfd\x1dw\xda\xd1XJ9\xe5\x99W\xd3\x9d\x9f\x9bu\xea\x10\xda\xcaa\xa2K\xa6\xe7\xdc\xcd@\xfb\xb9-\x0f%\xb2u\xe0\xf8\xe2\x90\x80K\x9f^\xfd\xacAp\x0f\x85\xafx\xdf\x1c\x8b:\xf5\x0c\xb6,\xe9\xcc\xa3G_\x87\x0b`\xa7ob\xe2\x94\x91\x8b\xd9\x08\xad^a\x88\x0c\xe5\xea\x13\xc8\x9d\x06L\xba\xca\xc8\xcb#\x03?\xc1\xc9^\xe9\xc4\x90\xacAp{\xdf]\xd0\x837\x87\xf6\xbb|7\t\xc4\x7f|\xbeH\xd4j\x06<\xbe\n\x18\x10Y}\x89DT\xc1s_\x1e\xfe\x02r|:T\xcd\xe9\xf3Y\x15\xe1\xb3\xa72\x83f\xc46\xf1\xe6\xca\xfa\x0f\x00\xf6-\xd1\x91Ch\xbc\xc3f\x15\xac\xee\xbf\xd7\x07\x1e\xf4\xec;\x81\xd0\xa66\x06z\xed\xd5/\x15`\xf4n\x86\x07\xab\x9f\xb2T\x90\\\x83\x12"+\x01\xf7\x82]6H\x0c\xecSQ\xfd\xb5\xbf\xe8c\x8d\x05\x90Z\xfekBh\xfb[\x8c\x1cLF\xd9\xd0\xa3R\x9f\x07\x9c\xeb\xc1\xe8\n\x8fU$\x99\xfeJBl\xd3\xfb\x97\x7f\x060\x99H\r[\x15\xee\xa3@\xd3\x1d\xc0\xe8\x1c,A\x80\x7f\xb4AzK\xa8\t\xba\xdb\x15\xff\x14\x03\x13N\x04\xd98i\x84\xdd\x8f\xe5\xe6cA\x13\x19!30V\x08\x87\xfd\x9b\x05G\xear\x00\xf6\xb6(\x86n\xc0\xebA\x13\xbc\xa8\x81\x81\xbb\xc0\x9b|\xa2\xa7+\x10\xdd\xc3K\xb7\xf3\x86|7t\xe4\xf9\xe28\xfa1\x1ar\xfd\x9b8\xb4f\x80\xf7y\x14Nj\x85G{\xf9\xcbBy\x1c M\x96\x135W\x02[\xfd\x97`\xec\x1a\xcc\xe5B4\xe2*eEC\\\xf9B\xa4I\x8b\xea\xc9\x05-\xa53\xbb\x1e\x04\xda\xadp\xe6\x1d\xc4i\x10Z\xcb\xfc\xea\xe3\xac\x81\xa1\x1f\xaf\x8e\x80\xceY\t\xda\x05\x07\xba\xa5\xb5\xbbf@\xd7\xf4\x16\x01\xce\xa8*\x88\x07c\xf0\xf0\x95\xa57~=\x94OJ\xd8\r\x00\xe6\xa5gI"#\x15\x9cQ\xd9\xb0\'\xd2w\x80\xe1r\x88\xf3\xfd\xc8\x86f\x04V{\xfa\xbd\xcf\x17\xa7\x90\n\xab\x14\xcey\xa0xF\x82\xaa\xa1\x8d\x04V_\xe1\x9drDO\xfe\x02\xec\x9d\x9e\x0fn\x05\xb6F\xe2A\xe3\xc9\x02\xa3l\x17\x9d\xc4\xea\xe5\xe1|\tN~\xd0\xc2\x96\xe3Q\x9d\x8d\x00\xb3\x07\x80\xeb.\xa0\xee\xa9\xe0\xe4\x07z3Qj=\x0e\x9469\x11\xe8/\x03\xf6z\x01\xa3Qp\x12\x03\xbbQ\xaf\x98\x92\x14\xf4\xded?/\x9c`\xe8\xfa\x0f"\xdc\xf8H\xc5X\xbd\xbc\x9e\xafb_I[\x8d\x9b\xfa\x89<\xbf+^l\x12\x87\xb4\x8a\xad\xa14\xb0\xd4\xcb}\x99U\xc3*\x0cM\xb7\x19\xd6\xadH\x9b\x11W}>\xb0\xff3\xaa\xdd\xcd\x19\x7f\x06]; A\xceT)YO\xdf\xedAlw\xad\xa7\xc1\x89\t\xb5\x9d\xebr\x9d\x05\xe5\xfd^\x15\xcb\x1d\x88\x12\x1c\xdcMp\xf9\x11\x06\x05\xcf\xee\xa0\x9e\x12\xb2)D\xd7`\x05\xb2\x82&\xd8\xf3\xd8oP\x1c\xf2oR\xd1\x9e\xf0\xb9\x04G\x9b\x01\x9c\x08\xdd\x8b\x87\x89\x9a\x9c\xe7\xabw^_U0~\x19\x88\xbd\xe8\x99\xb9\x1e2\x8b\xcd\x91e=\xb0{\xf4\x9d\xa4\xb9\x1fY\xbaj\xa0xI\xa7(^\x8cI\xa8\xf2\x8d\x17K\xecDl\xa5w\xbf\x00H6\xe7\xec\\\xa9\x0eH\xf0;\x15\xd2\x8c[~v\x08\xb1\x95\xf6P\x9c\xcd\x89\x0fZ\x88\xbd\xb2\xf4\xe6\xa8\x06H\xba\xed\x9f\x9e\xd5\x00\x94\x84v#\xb6\xd1%\xd3\xef\xa3/\x8c\xa3\xf58@\xf74\x17`[k\xe0\xe1\xae\x98\xc5\xa3\x8a\xe8\x99\x1dB\xa3\xaf\xf4N\x14k\x88\xfd|\x98\x8bS\x12\xaa{\x9e\xc8Mi\xc0\xaf\xaf\x15h\x10\xd8\xc4\x9b+\x81*Z\x9d\x1a~{F\xac\xaf@\x91\xf3\xc2\xff\xc7f\x80}}\x91\x1c\x85\xd0\x1e|\xb8k\xe08\xdf\xbf~\x93\x91 \xef\xa4jD\xd1yI\x0fHG\x06\xfd5\x95\xfb\x84\x07\x98\xc8c\xeb\xf3\x91@Fm7\tr&\xeaQ\xc7\xdf.^\xde\x84\xc8\x9e\xfe}#\xaf\xed\x92\xe7(\x19Rrp+\xb5}*\xba\xb2\xf9\xff\x9e\x8bAl\x0f.\xeb v\x1bX"o;l6\x80\xceFR\xc2;@{\xfd\xd3\xc4O\x1a\x84w\xfadB\x95\xaf\x03\x9csY\\\x1b\x8e\xbd0\xae\xb3\xc9\x9b\xe9r\x01\xf5Y\x88l\xd4\x06U\x1f\xe5\x81\x83\x80F\x07i\xeb+\x13\xc5\x1a.%\xb3\xf3\xcb&D\xb7\xe9]\x8d]\x83\xad+\x14\xb1\xa3\x9e\\\xbb\xe6\x1d\x06t\xa0\xffM6\t\x8f.\xab\xeeC\xdc\x19\xb9!5x1F\xad\xba{\xa79d\x93*\xc7\xc9\xf0\x0f\xecBd\x8dNT%\xbeI\x04\xcf\xa2\xbf3[B\xbd\xbdg\xe0\xcdw\x90\x86\xc8\xa6\xd4\xc9_\xec*$I\xc0x\xe9\xf6\x86\xb5\xa9s:\x95\xca\xf5?\xb4\x88\xad\xcd\x15|\x90Q\xd7\xab\xb0\xb6\x85\n\x80\xbeS\x10_>;\x0e\x98\xff\x9a\xd9\x87\xd8f\xf6\xca\xf5\x16H\t\xdb@\xebm\xa9\x19\x05i\xa1\x08@J\x85\x14\x7f\xbd\x0e\x91\x95\xf2\x87\x97\xab\x8d(]]@\x0c\xba\xcf\x07\xb0\x7f1)Hm?\x8a\x15\xb1\x1d\xf4V\xe8Q\xcf\x0f\xa7\xa0\xbc\xdeGc\x0f\x80\xcd\x15h\xb7 \xba;\xb4\xa8\xef|\x18h5\xab|\xb3\xb6\xa38\x13\x0e\x0f\xf8\xef\x9a\x11\xd78\x87\x1a\xbaj\x1dp\xf8?\xfe\xdbI\x00\x12\xd0=_{\xban\xd6s)\x1e\x915\xac\xd9\x81(\x90\xa6J\xa5\xe2\x89\xa5+\x06\x94\xff8 \xde\xeft\xd6\xde\xfb^Bd\r\xe9\xdc\xed%\xa3\xdb\r8\xbc3\xb3N\x1d\xea\x97{\xe0\x87\xb7\x08nI\x0bU\x0f1\x87\x07\xe5\xdad@\xfb\xa1^\xc3\xc6\x07}p\xde%:\x17\xdc\x14x\x8a\xc7\xd7\xdf&\xa0\xfa\xcb\x1b6\xd66y\x00\xad\xe8\x94\xbc\xc4\x12\xf1\\\xdc\x1dJQ\xd3/\xe7\xaa\xe9+\xbd\xefR\x11[m4p|\x04}\xc4\x04=\xf7!\xb96\x0b~\x7f\xa1H\xac^\x19\xfeQBh\xf5\x95\xde\xa3@\xd9\x8a\xde\x18\xd1\xc1>\xf9@g\xc0\xb5\r\x8c\x01;\xa9\rr\xaf\x1d\x91\xbd\xb19\xb1z\xb9\xd7\x0e\xd0\x12\xa9L\xf0\x03v\x7f\xa0.\x05\xe5\xf5\xcf/\x83]6\x84V\xfa\xd2\x1d\x90+\xcd\xb1\xc9;c\x19u{\xb5\tR\xde\x90\xcf\xe5\x8bE\xdd\xe9LAl3\xbaC\xb5\x19\xe7\x9eG\x02k+V|\xd6\xe93\xd2\xe8By\x9c\xf4\xf6\xe2\x06\xa2{h\xe0\xf3L3\xfa\n\xcf\x9f\x12@6%\xef\xa5\xddZ\xe0\x84G+D\x7f{.ZV\xb2\xaa\x17\x9b\xd3\x0e\xf4\x9dA\x19\xed-@\x19\xe59)D\xdfj\xe9\xf8\xb2X\x93T02\x94\x97\xa2UP9\xaaB\x99Kh.[\x151\xc0e\xaf\x9c\xe5\x98\xfa\xdb\xfem\xc7\xfc\xf6\xa8\xa3Z\xd0\xaf\x1cT\xd1 \xb4#\x0e\xa4\xa2\xb1z(\xfd\xbc\xbd.\xd4i\xfb\xfe\xaf\xa9\xd3\x86\xb2\xf9\x91d\xe0\x8f~\x15q\xb5H@kc\xc9\xb4\xa7F6R\xb4\x1bK\xf0\xcc?\xa3\x05\xc6\xeb\x9f\xdc\x07Pn\x96S\x84F\x1bJ\x05*"\x93\'\xb5\xb8\xabP\xba<\x07\xcd\xf7\xfc\xae}\x93\xb5\x06\x05\t\x88\xed\xeb\x1f\x92\xaeJen\t\xc8\xfd\xacS\xec\x90\xbbV\xeb-pt}\xe9\xa4Bt;\xde\xc9\xabE\xd7Z\x01\xa4I\'\xb0\xff/\xdfD7\xa4\xf4\xbc;\xbc?[pr\xd2\xe1\xfeZ\xbd\xa5|\xf4Fu\xeaw\xc0\x99i\x89\x13\x1f\xca\xe3Z+c\xaey\xcb\xa2\x10X\xbd\x01\xcd\xd1W\xa1kp\xfe\x15\xc4\xf9\xb2\x92\xce\x04zl\xc4|\xca%F\x0b\xafj\xa6\xeb\xbfAhGO8g_\x1f-k\x06\xdd\xa7l\xa8\x1b\x00s{\xc8Iu/\xc0\xa9\x88\xdb\x86\xc0J\xb5\xf1\xcc\x86\x9f\xe7\xe9\xc8<\x0f\\sg\xf6~\x923\x00\xdb6\x92\xc3& \xbd\x10\xa15Ft\xd2Z\x16O\xaeR\xba\x070\xacy.\xc4\xde\x7f\x80\xfa\xea\x1e\xc4w{\x98}sP\xb0\xa4;\xbb|7\x16\xee>\x86\x94`\xaa\xc2P\xeb5\t\xd0\xa1/\xa6\x9b\x8d\x86\xb3\xd2T)\xe6\xfeN0\x07\xd3\xa0\xbb\x01\xd0\xcd>IF\x80\x7f\x8f\xdcJH;<\x84c\x0e\x88\x05\xda\x9b\xb7w\xc8r"\xa0E\x88\xdfv\xf8\xe3)k\xc3\xb1n\xc0~[\x0f\xd6\xb0\xffNRy\x12\xa2\xac\x1bK\x18\xbcL\xe3\xe5\xe4\x89b\xb0\x8ez\xf3\xa1\xe7\x0e\x82}d1&\xcd\xacq\x15J\x14\xa5]\n\x9cg\xefU\xd1\x92\xde\x14\x1a\x8eK?\xcf\x0ei\xda\x7f\'=\x05\x01\x8f7X\xc2\xdf\xa2\xb5s\xb3\x1f1?\xe6\xe6\xcf\x0eHoY+\x14\xb4\x82q\xbe\x0b\x95=\x96\xeb-\x08z\xd6\x0c\xfc:^mD\xd8\xf7.!\xfa\xf1\xc2\xf7\xd5\xff_\xfd\xff\xd5\xff_\xfd\xff?v\x01\x00'
3
-
4
- # 账号禁用报错返回的 content
5
- ACCOUNT_BANNED_IMAGE_BYTES = b'RIFFL\r\x00\x00WEBPVP8L@\r\x00\x00/\xff\xc0?\x10\xff%\x16L\xe6/\x9dA\xf7\xfc\xcf\xff\x04$t\x9c\x07\xb6k\xdb\xa6\'\xcd\xb6_\xc9\x9d\x04\x02\x81@4\x10\x05"Q\x14\x8d\xcc \xa2\x82\x03\x8a\xa2\x11\x04\xcb\xa0(\x15EhAj\x9ce\xd6\xd4\x08\n\x86\xc1\x08\x8aEQ\x94\xd6\xa9(8\xc4\xa1\xf2\xe3\xee\xf4I\xde\xe9\xbe\xd7\xfb\xc9\x88\xfeO\x00?\xfc\xff\xc3\xff?\xfc\xff\xc3\xff?\xfc\xaf\x063\x7f7\xab9\xb1\xc5??\xd3\xac\xe2\xcaf\xe6*\xf5\x1b\x17\x8d\xea,Q\x02\xafGc\xcdc\xbcN\x95\x89g\xe5\xc4n\\4:_IE\xaf$5F\xd5\xec\x95@\xe2x\x1d\xe3\xe5\xe2Q\xb9\x1as\x0e.\r\xad\xa4\xe8\xb5T<I\xd9\x13\xa1\xa2\x8c\x80^\x8f\xf1\xe5\xe9\xf6{ \x1e\x95K\x8b6\xed\x8bb\xf5d\xfa\x90\x10u\xf4\xcd.\xd0`\xfa\xb4\xa9jp\xefSq\xa5\x81\x9cD\xf5\xc4\xf5\xa9EO:r\x93\x7f\xe9\xe1.\xdd\x8b\xe2\xfd\x83\xf7\xadX\nTR\xd2\xc5\x0fKNL\xf5\x12\xd4}\x9a\xf8\'\x06\xcavn\xba\xe7>\x83eA\xabz6\x1a\xe0\xb7\xc5V\xcb\xf0\xd9\xb6\x85+&\xc8Kg\xfeN\x91\x06r\x9f\xda\xde\x9bL\x1f\xedjG\xf7(\xf0{Qz4\xf6\xa1%\xf7r,y\x00\x9e\xbb\x03/\x9bh\xe9\xa6\xf3\xc5\xdb\x0b\x1a\x15\x13\x93\x84\xdcq\xb2\x9ch\xef\xfc\xf1\xa9\xc3\xc9\x97?\xbd\xd4\x005\xc3\xac\xbd\xa2{\xbe\x83\x88\n\x07j\xf6\x97\xd3\xa2$\x82\xa0\xa2\xcc@C`\xb1\xd52\x97\x0f\xe4<\x05\xda\x1eJ\xa8Y\xd3nh\xb8?;\xb1R\x16\xb7\x156\x8d\xbcy\xed\x82\xcb\r\xc0\xae7`ykG\xd5\xa6\xccv\xd4\xbf\x99\xcb\xc6\x08\xd6s\x1f?\x99\xdd\xcf\\:\xd7c]\xcd\xfc:\xe0\xb8\x0f0\xa0Z5[\x04\xc4\x9f[\x1a/x\xb7w\xea&\xac\xeeH\xe8o6\x0b\xd0\xbd\xd9\xe2J\x06#g\x7fA\xd5j\xe6\xd7\xc3uw\xd5\xd4\xc1\x85\x99\xcc\x17\xa5\x19@\xda\xa2\x11\xe0\xc8]\xb0\x9e\x9b\x85\x08u\xc3\xf9\x16r"\xa3\x1a\x96\x86\xb6\xfc]8\xb3P\x080T\'\x8b:l\xbf\x1c\xb8jG\xf5\xe6\xbf\x9c\\rU\xb7\x1d\xf5m_xZ2o\x95\xe5\xbe\x8e\x00\x91\xe9}\xdf\xb6\x9c\x90M*b\xcfQ\xa4\xf2\\bg\x97N\x15\xfb\xd0\x1dZ\x1a;8g\x9bh\x95\xc5|\x0b\x0c\xf5\xbf}R\x1fE\xc8k\xbb\x9f\xc7\xaa\x07\xe7b\xfd\xab\x89,(\xf2\x1e\xd4\xce\xdb\xff\xba\xda\xde\xbf\xea\xed\xd7\x1a\x83\xac\xd1\x1b\xe5,O%\xf4\xbca\xcf\xf2\xadMj\xc1*1>\x93\rf3\xd5=t\xbab)\xf8\xfe\xa8\xf5\xdb\xf0\xbeX`\xa8\x82p&\x0c5\xae\xbbI\xf4\xb3\x08\x95\xe0\xdf\xcb\xe6\xd7\x92\xcd\x1d\xa8\xc2\xf1\x9a*7-c\x1f.\xf0\xb0h\xe7\x83g\xcbhZ\x1b\x06c\xed\x86q-}\xe7\xaf\xb5\xd5(>i\xf2r\xb9\x8d\x92\x19!\x9eL~\xe9]\x03\xe2]\xd5\xceq\x0c\xd2\xb3\x85\xf8]#\x90-\x08\xa3\xf9\xd4\\\xa9\xb6\xa6\xc1}\xdd\x8b\xe4\x97\x14_n\xed\xe0y\xc4l\xe3\xad\xc09\x1bT\x9b\xd9\xdc\xff1P\x1d\xbb\xfa\xda\xd9\x16\xcd\xdcz\xc2\xdb\\\xe8]I\xe4\x8b\x95\x0c\xd8\x0f\xfa\x93\x95^\xf0\xe2\xd9\xc5S\x96?\x92\x91\xfe\xb1\x00+\xbe\x0e{\xdd\xc7m\xef\x8c\xa5\x85\xa1\x99\x1ak\x012.\xc0\xc9\xc2\xa8\xcb\xafK\xb5(\x7f\xb3\x06<\xb5Fp_"\xe9\xb3\x00\xd6N\x13\xf7)\x81\x93\xa9\x84\xbc\xbcm\xa4\xadQ\x86\xaf\xc0\x1d\xf7\xc4[8b\x8em\xaaQd\xa6V\xcd\x7f\xe0{\x7f\xb3F\xa0\x99\xd2\xdb\x02\x96\x8aI\x80\x9d\xbd\xb0\x8ap\xb6\x0f\xe4\xd2\\"\xcb\x9e|\xb4\n+\xb8\xee\x0f\x14\xa0\xc8\xa5\x97\xbbd\xe6\xa6\x1a\xc0V\xde\x06\x91K\x82\xbe_g\\\xb2\xcec\x84\xb3_\x8b\x19x\xf0k\x86\x01\xf6Z\xfdFpt\xf6?\x88DS\xbaBi\xad\xd0C\xed\x04$\xfe\x16x\xf8\xd6\x80<e\xd9\x8a\x0f\xb0\xf2\xc8\xa2A\xb6\'3,\xe3\x06$\xb0\xdf\xca;q\xeb:PV\xafK\xefHf\xff\xb1C\xfe#F\xa5\xd59\xdfh2\x05vw\x7f\xe9K\x13s\x15An\xee\xaf\xf1\x82\xe5M%\xff\x85c\xc6D7\xfa\x87\xa9\x80\x01\x90&\xba3\xc1tr\xd6\xa5Cyg\x0e\xec\xcb|\xf1\xe5\xdc\n\xa0n&\xc8\x9d\xb2\xa2<\xb4c\xfd\x84W,\x93\x8dj\x9c\x8d\xb8\x1b\xc1\xdc\xec3\x80\xe9\xd6:,m#;\x04\xca:\xfff\x14 \xb6\xdd[\xf4>Gn\nd\xc9\xfc;\xc1\xe0\x9d\x8e\n\x8b\xce5}V\xe6)\xff\xe3@\xc2eas?\xdc\x04\x08\xaf\x1dV\xe7\xa2\xac5;\xa7\x16N\x1aa\xf9\xcc\xebz\xa3u\xc9\xba+\r\xb8\xd0-\x9b\xda\x86yr4\x8a\xd0\xaf\x1b\xebG\x0f\xf4o\x90y\xcb\x0f\x14\xc2\xd5k\x99\x93\x12\x80\x06\xc5\xad\xaf\x98{Y\x13\t J%\xe0\xdd\x9e\xb6\xaf>\'\x8e\x8f\x06\xe0I!N\xb7\x8e\xd0\xa3?\x0e\x97\x88\xf4\xbb\x04o\xb6l\xd9k\x86\xfa}\x88\xedN\x14\xf6\xb6\x04\xe9\xcf\x99}\x12@\xdaJ\x82\xdei\xc4\xd6\xfdO\n\xaf\x0b\x81\xbf\xf2\x08o\xe6\xc4\x06#\xa3\xab\x85e\xd7\xa5L\xe8\xaao\xd5\x00F\xbf\xeb\xde\x89\x18\xa5\xb5\xb0\x16\x87\x00\xc8\x19\xfa\\\x1e\xec\xccY \x01\x06\xab\x01\x9b!\x0c\x12\xe0\xad:}\xfb\xf9\x8b\xdb\xa3\xbd\x15v\x81q~\'\x8em\x18\x8fL\x1f\x8e@i[\xbe\x1b\x00D\xc9\xe4R_<\xc1\xfb\xdb\x90\x9b\x17\x8a\tk\xc6\xef5\xe0\xec\x81\x83n\x01D\xec\x00,\xa4\rF\xd5\xfb\xcb\xb4(j\x11\r\xec\x99!c\xbdt`\xf6u\xfd\xa5\xdb\xfc\xeb\xecn\xc0\xd4\xf2\xb6G\x1bRZ\xa5\xd82~\xc6\n\x98\xe2\xa8;/\x06\x88=18\x92\x04\xa4\x0fEa\x13(ji\xffl/0Y\xcd\xad\xc3\x17f]:\x12\xbe\xae\t\x16\xfb=\x05\x90Ng\x10\xba\xe1\xe1\xd4\xcf\xf7a#\x10\xdd\xd3 \xb8\xd2\xe3\xc9&\xb3\x15"\x86\xa2Q\xd8\xc6\xfa\xd73\r\xdfl\xac]\x88\xe0e\xbeI\x00t\xf5\x04;\xfbX\x10\xde\x88\x9f\xc6\xab\r\x8c\x94\xde\xf6gb\xf0e\xe1\xb82\xfd\x13 \xee\x00Z\x94\xb5\xa9y\xf1\xde6\xc1M7\xd2V\xccKI\x04u|\xb3\xc9R\xff\xc9!\xac\xb1M\xa3\xc3\x871TNU\xe8\x13o\x80Xs\xed\xac\xcdU\nX|(\xeb\xd8\xa6(\x96{3\x012\x02f\xe0\xe8RC0\x06\xdc\xb2#\xfd\x84\xeet\xc0\xfe"!.\xf7\xdf\xde\xb9\xbf:\x99n\x07$\x99a\xd0\x88\xb1\xfa\xce*\x85\x95rw~\x9f \xb8\xff\x14H\xafn\xfc\xad\x0f\x96\x190\x03H!\xe9[=&\x80e\xbf\xde(\xd8\x87q\xfb\x95\xc9\xa2.\xe4\xce+\x90Q\xacAq\xef\xf1GCt\xc3#\x03[\x16"\xd9\xfc\x97n\xa6"\x98\xee\xc3\x16Y\xc8\xe9w\x0f\x10\xd4WD\xf1\t\xb04\x19\xf0&\x00\t\xc3&\x94xV\x11`i\xfd\xe0\xfb\xb3\n1S\x8b\xd6I\xf9s\r`<\xfc\xcc\x1f\x13\x86\x15]=\xb1\xd1W\x83\x14\x9ef,&\xe9|_\xfbA\xb2:\xc0<\x96\x88\x926\x96\xca\xac\xc9T>\x13\x14~\xf5\xa4\xe3\xfaS\xcb\xdeW\x12 \xbd\xdc\t\xc4x\xb7\tB^v\xee\xda\x9d\x08\x8e\xe6\x05a\xac\xb8\xbd\xfa\x86\x1d\xbd_\xc3\x98\x9e\xd8d\x14\xf5\xba\xd7\xdd\x86U\x9d\x9f\xeb1\xcc\xef\xc0\xf8\xbe\x10t\xafw#\xbd(\x07\xa8\x99"\xcc\x9b\xfa\xd2\xa2N\xb0\xfawr\xb4\xb2\xddG#\x1d]8\xfb\xcf\x197\xf8\xa3Q\xdc\xe6\xc73\x01\xb7\r8>\x05-c@\xc34\xfc\xf4D\x00\x91\x0b\xebB\x8b8B\xd0zg\xc7\xccfv\x0f\xb9\x04h\xfd:\xbc\x83\xa7\xe3\x89h\x8cGi\x8b\xa2\xf1\xaf\xcdq\xc8M\x1f\xf3\x89\xff\xe247/\x8e\xc7\x10\xf1>\x1f \x96\xd0\xa3\xfa\x838^\xb5\xda=\x88r\xefQ_$T\x1d \xc1\x88\xe2v\xfb\x8f\xda\xed\x8f^7}K\x06r%h\xbb\x03\x17\xe6\x02\xde\x8d\x80\xf6\xe9!Y\xc8uu"\xa2\xd7X\x0cXW\xd0a\xcb\xf0\xee\x15\x18\x01\x83_\xa0\xc0\xe3\\\x83\x1f\xad\xe5\x127:4;\xa6\x96\xf6\xc0\xf2\xafkYyu\x15@\xc9\xf4=Sh\xc6\xfac\xb8\x9a\xac/Fv"\xdfq\xb6\xeb\xd29\\\x97wD\x01\x8d9J\x0c\xd0\x01\x14~x>\xeb\xaa\x99\x02.\xf7\xf3\xaf9;4\x84\x1a\xd7<<m\xc6vn\xa6\x8d\xa0\xeb\xde\x9d\x89c(\x8e\x98\x92\xceA=\x02%]\x9d*\x93d\x8eh@\x1fh\x16D,l\x04\xfb\xb7\x95\xff\x12\xc6M\xd3\xcd\x14\x9f\x88\xeaM\x8f\xf4\xc1\xeaLH\xb7\x99\x8b\xd9\xdc\x0c`@a\x8fUB\xe1\xe8\x05\xc8\x1a\\:\x06p\xeb\x14\xd0\xd2\x03\xdc\xb8\x10\xae\xfc\x04\x11\xe1\xc3\xfe\xd2\x00\x9c\xaf\xf0v\xda\x01jw!&%\x94u\xbc\x168w\xb1\xf4\x8f\xf93\x9f\xe3\xb9\xd6T6o\x00j\x06\x80\xc4\x80\t\x9c_\xe2\xc3`\xbc\xb4\xeb\xc6a\x034\x8dt\x9e\xaaF\x14O~\xcfE\xae\x990\x88MO\x8d\xcaJ\x13\xb0\x03\xd5Ks\x95\x06\x86\x9a\x01\xa6+\x81\xf5\xaf\x00F\xcb\x80\x9f\x13B\xd3W\xce7\xeaw\xed\x80\xd8[H~\xed\xb5\x13v\xdf\xf5\xf5\xb2\xaaz\xe2\x8f\x9aP\xd8\x93%\xb1u\x1a\xd7=\r\x90\xbf\x18\t\x94\xceitb}\x00\xd0M\xef%\xac5\x9e\xa2L\xbf\xa7T*\x96\xe8\xc8\xdc?[\x06\x9a!\xdd\xa5\xf6Dh\xd3\xa1\xc0/L\x7f\n\xec\xaa\xefA>]\rh\xff\xdc\xe5\xaa\xcf}\x85\xa6fn02\xb4\x95\xbfdi\x13\xa3\x1b\xfa\'W\xb8\x06\x0eH$\xbe-\x8f\x19\x8b20\x00\xe9\xfd\xbf\xa1\xb83R\xa09p\xd5^5\xd5\xd8fM\x05\xf6\xcd\t\xa0\xea\xe1\x83\xe2:?\x94g\x13F\xe1l\x1e\x14%\xeb\xa3\xae\xf8K\x8c\xf9@g2-\x7f\xac0{\x01\xa2\x94\x94>\n\xb1\xe5\xee\xf7f\xa8x$0\xbc-L,\xff\xec\xb1#\xfd\xbd\x050,\xcc\x08O\x0b\xe1\xac\x12\x04\x8do\xe9\xcf\x89\xf9\xf9\xda\xf8rp\\\xca\xb83LM\x99LQ\x8f\x94\x97=\x9euUv\x82\xfe\xef\xcd\xf0\x8b\x0f\x12\xbb\xbeV\xd34\x04\xe0+#-9$;p1I\x96\'\xca\xd3\xacm\x9d\xe9\xd2/m \xa6.G\xb87vE(\xab\xd3ff\xbe\xdc\xdf\x11A\xe6\x11\xa0alm\xff\xfb@:\xb0f\r\xcb\xbeZ\x81(-\xa1\x8b\x0b7V\xe0*\x85\x82\xb1\xf1bx\x9c\x1aY\xd3]8l\xc2\xee\x02\xdb1\x94u\xe4R\x0c\xefv\xd0\xdd\xc4\xbeu@\xf4\x87\xf9c\xd1\xed\xd7\t\xfe6\x8b0\x1bX?\x96\xbd\xa6\x1dR\x8c1>\xa8\xf4\\\xde \x95\x8f\x1eG\x91\xdb\x96\xb4\x8e\xbf\x05E\x0b\x11\x95\xef\xdb\x0c\xd0\xea\x05\xeb\x97$Y\xe4\xa9\x85\xc4p\\<l\x15\xc3v\x84A{\x07\xf9\x99l\x0cc\xc6\xda\xde\xcdbJ\x999\xbf[\x1b;#\x0f\x88\xc7\x87I\x18\xba\x06\x96\xcfv\xe8\xba\x08\xe8f\x87\x93\tg\xe4\x8e\xdet\xcbh2\xe0\x0fb\xbdI\xe6q\x9f\x13\xed\xcf\x1ee\xd6\xb0\xd4\x1e\x97\xbaq\x8a\xb2\x17\x02\x8c\xc0\xa5\xab6\xf7\xa7\xcf\x16\xc0@\xc8q\xb2\xa0\x16\xdfj\x18\x0fB\xe7\xb6\x8b\xa6\xdb@\n\xca|\xa2\xf7\x93\x89\x03}l_\x8a\'\xad5\x12\x92\xbf~:\xbf\xb2>\x910\xae\xee|\xe6\x08\xb2!\x1d\xe2\xbc\xf5b4\xd8\xaaO\x0e~ME\xa9K\x7f,\xf35\xd2v\xd22S\x0e\xab\xa6^m\x01\xcfo\x845\xdb\xe3\xb6\xd9\xbb\x00\xeb\xd0\x85[\x80\xa8\x1c\xf0\x05\x13\x17@\xa0\xe4\x0b\xde\x1aRV\x88\x8b[\xa10\xb9\xe1\xcbO\xa4\xb7\x86A\x14\xdfn6c\xa8\xbe/\x95Yu\xf1\xb4;\x01\xb6\xbe\x18\xdeoA\x15>\xdc\x13\xb9C\xec\xf9\xcb/]l\xc5\x9eB8u\xf7\xeb\x8c\x98\x1aom\x17\x1c+\x04\xac\xd7e\xedy\xa6J\xcfD\x9d\x1a0\x1b\xad_\xd7\xa0\xcb\xa7q\x84p\xf7\xda\xad\xed\x9e\\\x88o\xe9\x15\x00W\xec\xa5f\xed\xa4@-\x16\xfb\xe9\xec\x05k\xc7\xa7}a\x11\x16H\x9b\xedN\x83\xa4\xf3\x9eL\x82\xda\xaf\xdc\x96\x8eU\xa3\x1a\x0b\x1f\x93\xfa\xad\xa23\xd0\xb9\x8a0j\xcbF]\xc0\x80\x95\xb5=W\x1d\x8eV\xd2\xfb\x8a\x81\xdbu\x8e;B=d\xbe\x80\x86\x993VB\xf6`\xa8\x1e\xff)\x02\xc099\xd8\x91\x08\xe2\xe1\xc0Y\x1b\xc0v\xa3%\x01\xf5\x98\xf6\x810\x8f5\x8d\xed\x950\xc8\xb0\x1a+\xb7kv\xde\xf14\xa1J\xe3\xc2c=\xf3\xa1D`n\x9eM\x93\xc1\xf2\'\xa35\x91\x9a\t\x83*\tk\xd2\xd5\xdf3\xeec;\xdb\xbb!\xb9G\x16\xdd02#\x01\x95\x87\xd4\x8fMOl\x1e\x8eT\xc4|\xe7E;b\xfb[\x1b\x98oo\x13^\x00C\xa1\xfa\xa9j\xea\x18\xca\x07\xb0~=\x84\xce5T\x9d\xe3F\xae\x1d\x93\xa9\xdddp\xf4}\xca$hi\x9d\xef\xc8\xd0\x1e-\xf6\x17fY\xd3\x1e54\\|\xe3\x8a\xfdx\x16,\x8b\x81\xc1\x98\xc6&p\xf6\x9d\xafh\x96\x95\xa2~\xc5\xd6\x07\x0f\xac\x89@\xf2%o\x12\t70\xdd*\xf4\xb6\xc4\xc3]=\xaa\xd8>\xd6\x18\xe3\x93\x86Y\x7f\xad\'\rH\xc9\x82\xf6\x0bQ \n\x1e\x19\xd5\x91\xde\x00Z&\x06\xdd60\x12\xd4z\x1dXVkD5kJG\xfe2C\xd2\xf9\xb9\xa4 \\\xb1\xa3\xaa]\xe3u\xc9\x1e\xd6\xf5\\MM\xbb\x10,\xd9\xa9\xae\xb2%*\xbc\xde\x8e\x04`\xc0\x12D}\x8b\x91\x99D\x80M\xe3\xad*\xad\xb6vG-\x9a\xd2\xdb\r\xd1\xa5\xea,eT\xa3\x19=4T\xa1G\xadG&\xc0\xc1\xf3\x1a\xd4\xbd>\x97\x1f\xfe\xff\xe1\xff\x1f\xfe\xff\xe1\xff\x1f\xfe\xff\xff^'
6
-
7
- #
8
- TILE_EMPTY_IMAGE_BYTES = b'RIFF\xc2\x00\x00\x00WEBPVP8X\n\x00\x00\x00\x10\x00\x00\x00\xff\x00\x00\xff\x00\x00ALPH\t\x00\x00\x00\x01\x07\x10\x11\x11\x88\x88\xfe\x07\x00VP8 \x92\x00\x00\x00P\x0f\x00\x9d\x01*\x00\x01\x00\x01\x00\x00\x00%\xa5\xbb\x85\xda\xc4m\x1d\xc1\x93\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9bD\xc6\x9a\xb0\x00\xfe\xff\xfd\xed\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00'
9
-
10
- # 请求参数异常
11
- INVALID_PARAM_IMAGE_BYTES = b'RIFF\x8a\x08\x00\x00WEBPVP8L}\x08\x00\x00/\xff\xc0?\x10\xf7E&m\x13\xff\xa6k`\xfb\xe7\x7f\xfe\x05\x04%\x92D\r>1\xac\xc0\xff\xf6\xff\xef\x93\xf6\xffw\xb9\'\x8f\x10\x12\xa6\r \xd1\xb0\xa2\xb4\xe0\x00\xd9[(\xe0\xc6\xc5vK\xc52\\8\x18\x82\x0bW(m\x10\x0b\xa6\x82,\x072\r\x04\x02\x180\xf9\xe7\x92\x1e\x87\xbf\xdd\xfb\x9cD\xf4\x7f\x02\xd8\xf4\xff\xa6\xff7\xfd\xbf\xe9\xffM\xff\xff{\xba\x90\xbdCOdo\xdbF\x8c\xe4\xf1\xa8]\xd6R\xf6\xf9\x8a_\x8f\x10\xf9E2vy\x08\xd0\xa6Ao\xef\xc4\xf4!\x19\x0bYK\x83\x1d\xeb\xe1\xa4z*\x15\xa4Z\xe5\x8b\x1b\x7f\xc4\xdfVz\x9a\xe1\xaf\x8bHu\xfa\xc0\xdf\x1c\xf2\xac\xdd\xd4\xef[\t\xa2pA+U\xfe\x8biP\xb2\x85.\xc7\xc8\x13\xe0\xcd\x05\xc4\x87\xd3\x12\xa5Rs\xf9w\xaa\xdcW\x88\xf57\x7f3A\x81]K\xd9g\xb5\x14\x855\x03=G\t^{\xb8P\xe9\xd0\x02/\xef\x82\x988\x85f\xbe\x94\x88\xeb\x89\xd2\xe3\xef\xc8\x80#\xef\x85\xda\xe60a;\x0e$\xb9~\x10\tG&U\x9c\x19\xefp=\x89\x91\x1e\xea\xfa@\x99=`\x19qm\xa7\xe4\x1d\xc0@\xf3\xa3~e\xb6d\xcfo\xae\xbb&$8d-\xf7Jh\xad\xbbWw\xff.An#P\xecy\x1d,Z\xbf:\x1b\x0c\xc8m\xc4\xb5L\xafm\xa3\x1e\xcb\x9eqw*q_\r\x1d_\xb4\x904\xd3\xa5\x11\xb6\xf9\xb3\x01Hl\x04\xc4\xb4\xaf\xb9\x0b\x81\x90\xb5G\xebQ\x01\x97\xea{\xe0\xe5\xaf\xfbB\x8dVq\xafN\xc0n\r2[8\xb6\xfb\xf9\xea\x8d\xf2\x05\x05 \x98\xceV\x08]\xdb\xc1\xdee=bz\xaf@~/\xb9\x1du!~\x93\x17\xf1mv\x19\xa0\xa5\x0bjC\xa0\xbf\x1c\t~\xfc\xc6\x04\x97\'\xfd\x08-n;\rX\x1aE\xb1\xd1e\x04\x12\x9e\xce\x99\xe4&\xc4+r}|\xc39\xf8urd\xf9\x9b\xad\xd1\x0c$9[\xad<\xb8K\x86u\xa9>\x14\x99\xcdz\xf5Y\x05t\xbc\xc4\xef\xa0\xfbZIF\x82\x9eP\x00\xd5t\xbf\x8e\x18\xa7}\xaeF\x8f\xc4\xaaKF&ON\xe6\x83\xea\x85\x99\x9f\x16\xce\xa6\xc7\x80\xa9u=\x1e\x02z\xfa\xfd\x81\xd8$\x05\x99\x8d\xf8<\\\xac\xe2\xdcS\xbc\x0b\x9cg\xe9\xba\x91\xd0\xbd\xd4\xf0\xb0\x05tw\xfc\x91\xdd\x80\xb3\xb7\xc5\xf8\x01 s\x0e\xd0\xdeY*\x80\x0b\x1b\xf3g\x03H\\\xf6C~\r\rK\xdd\xce\xa8C#\x88\xb2\xe9\x8b@\xd9[\xa3\xaaxx\xce\xe3\x07\xe0\x8c\x95\xa0\x86\xf7&\x9a[\x95\xe9lN&\xc6\xdd\xcf\x02qhr\xa8h\xe7\x86\n0\xbb\xe2$\xc8\xe04\x10\xbef\xa8\xec\'\xe9\xa5\xddz\x0f8\x9c\x06\r6\x88\xb8\xba\\\x83\xdc*G:\x81\xd6\xa6\xa2\xa1\xf5F\x9dc\xf8[\x95\xb6p\x10\x9f\x81\xceR\xb8\xd5bB^M\'\xd0U\xcd\xbc)\x00\xa2\xdc\xc3?\x9b\x97\x03\xeb\x86\x9e\xf6\x1b\xd2\xe6}(/\xac\x02\xc9\x8dv5:z\xf6\xe1\xb3\xfb\x0c<;\x17\xba\xba\xf3\xf9|\xed\xac\x97\xe8\x9a\xde\x82\xe4\x1a[6\xa6\xfa-M\x95uw\xaeA\xe2\xbc\xc6\xdc\xfb\xc5\xeff\xbb8\xb1\xec,\xdf\xade\xffg#r\xbb\xa3ke\xb2i%\xc8p\xe4Lm\xf5A\xa0ol\xb1n\xe0D\xe4Z8w\xdeZ\x16\x16@\x85\xd4\x1az\x1cW\xa2\x07\xc5\xab\xf3\xa8J\x86\xa2\x00\n\xe7\xfd\xc9\xfa\xa4\xeal6\xac\x99\xc1\x80\xec*\xa7u\xb4\x9e"\xa5\xf6\xe4\xe4\xa0\xb5\xd5K\xe3\x88\x82\x91"\xf3\xca\xadn\xa4\xb6\xf2i\x84\x17P9\xa0\t:o\xb7$\x93\xb6n\x00\xb8}\x01\x8eY\xb1T\x86\xcb\xcd\xe8C\xfb\t\xe1uj\xfa\xc7\xe6\xa5.3Q\xad\xf6\x0f\r^%\xfd\xfcpo\x00\x1d\x92\xbb\x12d|:w;]\xd9:\xbf\xb3i*\x92\x84\xee\xd9Z}\xb23\x00\x88\x9f#\xf3f(\xf2*~\xfb\x11\x08\xfe\x02\xa2\xa5w\xb9\x12\ra\xae\xb2\xbe\x0fe\x1a]\xd5l\xdfv\x12\xd1\xb6\xaa\x90\xdb\x96G@a\x9frdb"V\xad\x07h\xb3\x17\x8a\xd0+\x8b\xdd\x89\xaa\x9f\x87fB\x90^\xe3z\xe9\x03mo\xff\xec`\xbe\xe0I\xb2W\xb4+\xa9e\xb9-\xda\xef\xc4\xa7\xf1\xc3\n\xf2\xaa r\xba\x04"\x7fa\xb5n\x87;!\xd9?\x05\x1e\x95{\xf1\xd4\xd9\x14\x16x\xee\xcb@\x9e@bMS\x87G\xad\xe9P:\xdd\xee\xda\x13\xd5\x00\xf1K\xf1\xd4\xdc\xf1\x11\x11hhpZ\x92\x90Z\xff\x8aoC\t\x86\x86\x18\x14%\xda\xb3\xf4{J\xfcCQ6\x15\x92\xdc\xef#\xaau\xf5\xbe\x19\xa9\r\xba<w\xaf\xf6\xf3\xbd\x99\xf3\x81f\xd0\xae-\xe7?\xf7\xb3\xd5\xd3\xd6\x17\xb1\xe0ur\xe5\xc6Vd6\'\x10S\x83!\xa1\xdb\xd3\xee\x9f\xfffH\x0bV[\xad l\xaeHS\xa3\xb8\x0c\xc5g1\x84 \xb5\x81#\x1b\xd6\\\x1e\x0f\x97\x9c\x9a\x9c\xb0f\x08\x10C\xfb\xe74\xb0\xdb\x11\x8e\xdf\xdc\xe2\xe72\xe47\xb2<\r\xa3\xbez\xba;!\xaa\xf5\x15\x04\x8e\x89\x0fe@t\xe09\xfbH\xa9\x1a9V_\xf9r\xcf\x94\xd0=Y\xe5HB\xff\x07\xc7>\x08\xc2\x9a\x9c\xfdY\xc8\xb1\xc8?O\xb9!\xc3:zPI\xfdh\x81 4s\x85\xb4?\xdb\x85$\'ML\x7f\xdd\x8av\xe1\xa2\xaa\xf0\xaf\xde\x8253@\xed_\x08\xa49\xe6\x90\xd2y\x13.\x8eL<\x8c\xd7W/wz\xe9\x7fQ\x90j\xf3j\x08\xc1\xab\xf9\xa1W\xa6\x1av\xafoA\xc6-u\x84]\xff8y6@ud#Jn~\x12\xdf)\xc9\x117\x1e\xb1\x1e\x03\xdb{S\x90\xd9\xccW\x9e\xfd\xdf\x89\xc1\x8f-t\xb4 \xb7\xaa\x92w\xe3G\xaal\xdf\xeb\xa8\xdbD\xecK\xb9)\x99\x1c\xcc\x17h\x1d)\xdf)\xea.\xd2[>\x06\xa4\xfc6\xb7\xff;I\xae\xd6\xf6\xebn\xa1]L-\xb0}8\xa6D^\x940MQ\xa7\xe3"\x97\xd6m\xfb\x85\xb9k\xf5\x9e\xbf|\x01j\x7f\x82SH\xb6\xb8\x1a\x0c(\xe1R\xa5-\x7f\xad\x00\x84A\xce\xe0|\xfd\x86\xc1\xbfb\xba\rh{\x13*=\xe6H\x08\xbe\xb48T$\x10\x05\xb6y\r\x97\x8fkxm]\xec\xcb\x04x\xbetNz\x06\x8fF\\_\xfd#\x1d\xe0\xd0T\xf9\xbb2`\xeb\x8d5\xcfP\x0c>coK\x8f\xe5\xa3\xeb\xf1O\x10\x15\x0c\x8a\x9a\x92\x8fB\xb4\xaf\xb6\xd5\xbf9e\x7fr2%\x08.\x14J\xce\x9e\x17n\xab\t\x12\xbb\xdd\xbf\xe0\xad\x9a,\xe2\xa0\x81r+\x01U\xdd\xb3\xa7`7R\x9b\xf3\xa7\xb3a\xb8\x8a\xcc\xbe\xe9\xf24\x87\xce\x8bSo\xd5\xa7a\xf0,\xde\x02\xd9\xed8\x1b\xc0\xdc\x83\xe1\xd1\x83j"\xedU>\xb4\xf6\xe6a2\\[|\xc8k\xc8t\x00\xc4\xa5\x00\x04z\x1c9\x02s\xa7\xe3\xd1\x8c\xe2\xc5\x05\xcfQ\x93\xe3\x18R\x1b\x1b\xc8T\xd1\xde\x17\x1b\xe7\xbc\x92\xd6V\xe2\x92,sg\x03\x189\xec#yQ\xbb\xf72\x12k<Jo<\xf7\x9c\x8ezg\xb8W\xcb\x83\xebK\x1f\xcb4l\xbb\xbd:.\xbc0#\xb3j\x11\xb9j\x18\xdd\xa2\x14\xcd\xea\xe8\xaa\x04\xb4KY\x11\xebF\xe2\x1f-\xd6\x1b>\xe7\xf9\x90\xdb\xca\x9e\xa0\xae\x86\x82\xa7\xdd\x11\xee\x14\xb2\x07\x80R\xbb\x9a\x8eg\xbd\xb3\xd5z\xa8\xb5H\x10\xb5\xa7*\xbeM\x95k\xfd<\x8e\xed\xcaz\x10\x98J \xce]\xa3\x80\xbah\xf4\x96\x0c\x15\xbfs9\xde[\x9f\xec\\=?\x16>\xf6#\xbe_\\\x02\xf4\x0f\x0b\x85\xcc\xec=f\xf4Q\x97\xfd\xe8\xe4\xbc1\xf7\x87\xd71Y\x13\xb6\x82\xbf\xd9\xbb\xa8Ej5W\xf5d?\xf6|\xaa7\x00\xda\x19\xed`)(j2\xbe\xd6\xfd\r\xaf\xf3\xe4\xe6h\x0f\xa2\xf8\xa3\xa5\xf4At\xb5\xe0B\x1b\x87\x13\x13\xbb_\x02\x8f6,f_\x1a\xa4V\x8c\xef\xcb\x1a\xb6%\xb3\xf5\xa6\xf3a \xd91<\x9f\x9f\xba>\x06\x8c\xe4\x9es~(\xf0\x92\xdcrG\xff\x88#\xde\xdc\xb9r{\x1b@\xd6\xbbo\xd7\xd5G\xff\x84\xa0\xf5@\xb4\xb9\xbb\xe4\'zc\xbcH\xcc\xbfu\xb4\x0eM<\xea\xea\xa9%;\xbb\xab\x98\xfbW\x05g\xac\xc8\xb1\xc8U\xe7\r\xac\xd6&\xeb\x88,*9\xb0\x0b\xb0\xd8\x97\xdd\x1eO\xff\xf5<IR\x0e\x8f\xbf\x1f\xbe\xba\xd5\xa1\xaf\xaf\xf1\x1f\xd4\x03\x18\x8co\xebU:=\xb2\xdcn+0.\x84^\xbf\x1e\xb2lL\xff\x88\xb7\x9f\xf5\xb5\x1a\x89\xd6\xa1\xfc~9e>\xa2\xbe\x9d{\xb7|\xdc\x1a\xd0#\xd5\xaa\xc7\xcfb\xec\xc9\xdb\x1d&\xb3\xd3\xe0C\xa7C\xae\x0f\r\xfb\xef?b\x9e)\xd5\x0c\xd6!\xe9:\xd8m/\x12\x8f-*Y\x03\x1a\xf3\xc4\xedw:d^\xf7\xfcu02\xaf\x0c\xdeW\x90\xfbP6\xfd\xbf\xe9\xffM\xffo\xfa\x7f\xd3\xff\xff\x9a\x06\x00'
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
@@ -1,18 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: tilekit
3
- Version: 0.2.0
4
- Summary: tilekit
5
- Author: zpz
6
- Requires-Python: >=3.8
7
- Description-Content-Type: text/markdown
8
- License-File: LICENSE
9
- Requires-Dist: numpy
10
- Requires-Dist: torch
11
- Requires-Dist: tqdm
12
- Requires-Dist: opencv-python
13
- Requires-Dist: rasterio
14
- Requires-Dist: geopandas
15
- Dynamic: license-file
16
-
17
- # tilekit
18
- 专门下载吉林一号用的
File without changes
File without changes
File without changes
File without changes