diff --git a/README.md b/README.md index e8776d3..5e39476 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # ISAT with segment anything + # 交互式半自动图像分割标注工具 ![标注.gif](./display/标注.gif) @@ -17,6 +18,7 @@ Demo Video:[youtube](https://www.youtube.com/watch?v=yLdZCPmX-Bc) # 特点 + - 支持基于SAM的**交互式半自动标注**。 - 支持**手动标注**多边形。 - 支持标注**二次修改**。 @@ -25,52 +27,60 @@ Demo Video:[youtube](https://www.youtube.com/watch?v=yLdZCPmX-Bc) - 更多功能详见[功能说明](./docs/功能说明.md) # 安装 + ## 1. 源码运行 + ### (1) 创建虚拟环境 + ```shell conda create -n ISAT_with_segment_anything python==3.8 conda activate ISAT_with_segment_anything ``` ### (2) 安装ISAT_with_segment_anything + ```shell git clone https://github.com/yatengLG/ISAT_with_segment_anything.git cd ISAT_with_segment_anything pip install -r requirements.txt ``` + ### (3) 下载Segment anything预训练模型 + 下载预训练模型,并将模型存放于ISAT_with_segment_anything/segment_any目录下 当前支持的模型有[SAM](https://github.com/facebookresearch/segment-anything)系列,[sam-hq](https://github.com/SysCV/sam-hq)系列,[MobileSAM](https://github.com/ChaoningZhang/MobileSAM)系列。 -| 系列 | 预训练模型 | 显存占用 | 文件大小 | -|----|----|----|----| -| SAM | [sam_vit_h_4b8939.pth](https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth) | 7305M | 2.6G | -| | [sam_vit_l_0b3195.pth](https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth) | 5855M | 2.6G | -| | [sam_vit_b_01ec64.pth](https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth) | 4149M | 375M | -| sam-hq | [sam_hq_vit_h.pth](https://huggingface.co/lkeab/hq-sam/blob/main/sam_hq_vit_h.pth) | 7393M | 2.6G | -| | [sam_hq_vit_l.pth](https://huggingface.co/lkeab/hq-sam/blob/main/sam_hq_vit_l.pth) | 5939M | 1.3G | -| | [sam_hq_vit_b.pth](https://huggingface.co/lkeab/hq-sam/blob/main/sam_hq_vit_b.pth) | 4207M | 379M | -| | [sam_hq_vit_tiny.pth](https://huggingface.co/lkeab/hq-sam/blob/main/sam_hq_vit_tiny.pth) | 1463M | 43M | -| mobile-sam | [mobile_sam.pt](https://github.com/ChaoningZhang/MobileSAM/blob/master/weights/mobile_sam.pt)| 1375M | 40M | +| 系列 | 预训练模型 | 显存占用 | 文件大小 | +| ---------- | ------------------------------------------------------------------------------------------ | -------- | -------- | +| SAM | [sam_vit_h_4b8939.pth](https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth) | 7305M | 2.6G | +| | [sam_vit_l_0b3195.pth](https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth) | 5855M | 2.6G | +| | [sam_vit_b_01ec64.pth](https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth) | 4149M | 375M | +| sam-hq | [sam_hq_vit_h.pth](https://huggingface.co/lkeab/hq-sam/blob/main/sam_hq_vit_h.pth) | 7393M | 2.6G | +| | [sam_hq_vit_l.pth](https://huggingface.co/lkeab/hq-sam/blob/main/sam_hq_vit_l.pth) | 5939M | 1.3G | +| | [sam_hq_vit_b.pth](https://huggingface.co/lkeab/hq-sam/blob/main/sam_hq_vit_b.pth) | 4207M | 379M | +| | [sam_hq_vit_tiny.pth](https://huggingface.co/lkeab/hq-sam/blob/main/sam_hq_vit_tiny.pth) | 1463M | 43M | +| mobile-sam | [mobile_sam.pt](https://github.com/ChaoningZhang/MobileSAM/blob/master/weights/mobile_sam.pt) | 1375M | 40M | 下载好模型后,通过SAM-下拉列表,选择要用的模型。(切换模型需要一定时间,切换h模型大概需要5秒左右,视硬件情况而定。) ### (4) 运行软件 + ```shell python main.py ``` ## 2. windows下exe运行 + ### (1) 下载打包好的exe文件 需下载三个.zip文件,总体大小2.7G,解压缩后4.9G。 打开ISAT_with_segment_anything文件夹,双击main.exe运行。 -| | 下载链接 | -|--------|-----------------------------------------------------------| -| 百度网盘 | 链接:https://pan.baidu.com/s/1vD19PzvIT1QAJrAkSVFfhg 提取码:ISAT | +| | 下载链接 | +| -------- | ------------------------------------------------------------------ | +| 百度网盘 | 链接:https://pan.baidu.com/s/1vD19PzvIT1QAJrAkSVFfhg 提取码:ISAT | ### (2) 下载Segment anything预训练模型 @@ -80,9 +90,25 @@ python main.py 下载地址同上[下载预训练模型](https://github.com/yatengLG/ISAT_with_segment_anything/#3-下载segment-anything预训练模型) +## 3. nuitka打包说明 + +经过在windows11上的测试,合适的环境之一为: + +``` +python=3.7.10 +numpy=1.20.1 +torch=1.10.0+cu102 或任意cpu版本的torch +``` + +其它库按需安装即可,未发现冲突情况 + + # 使用 + 软件具体功能可查看:[功能说明](./docs/功能说明.md) + ## 1.标注 + ```text 1. 软件左侧选择类别(工具栏-文件-设置中,进行类别添加或修改) 2. 开始标注 @@ -99,7 +125,9 @@ python main.py 3. 点击工具栏[标注完成]按钮,完成标注(快捷键E)。 4. 点击工具栏[保存]按钮(快捷键S),写入json文件。 ``` + ## 2.修改 + ```text 1. 多边形修改 拖拽多边形顶点,修改多边形形状。 @@ -111,7 +139,9 @@ python main.py 4. 删除目标 选定目标,点击工具栏[删除]按钮(快捷键DEL),删除选定目标。 ``` + ## 3.查看 + ```text 1. 结果预览 点击工具栏[位图]按钮(快捷键SPACE),预览标注结果。 @@ -125,9 +155,12 @@ python main.py 半自动标注时,会调暗背景,凸显mask。 通过工具栏[mask alpha]数值条,调整背景与mask混合比例。 ``` + ## 4.数据转换 + 本软件用json文件保存标注结果。 使用时,可以手动解析json文件,或转换为其他数据格式。 + ```text 软件内置了转换工具 1. ISAT转VOC @@ -141,6 +174,7 @@ python main.py ``` # 引用 + ```text @misc{ISAT with segment anything, title={{ISAT with segment anything}: Image segmentation annotation tool with segment anything}, diff --git a/icons/logo.ico b/icons/logo.ico new file mode 100644 index 0000000..9199eba Binary files /dev/null and b/icons/logo.ico differ diff --git a/icons_rc.py b/icons_rc.py new file mode 100644 index 0000000..4801db9 --- /dev/null +++ b/icons_rc.py @@ -0,0 +1,2212 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 6.5.2 +# WARNING! All changes made in this file will be lost! + +from PySide6 import QtCore + +qt_resource_data = b"\ +\x00\x00\x01\xc6\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?><\ +/svg>\ +\x00\x00\x01\xd2\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\x00\x00\x02~\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\x00\x00\x02H\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\x00\x00\x0a.\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x09\xf5IDATx\x9c\x85\x97[l\x5c\xd7\ +u\x86\xbf}9\xb7\xb9\x91\x1cR\xbc\x89\xd4\xdd\x12m\ +I\x11mY\x8a\xe5:q\x9b\x04\x09\x12\x07\x06\x8c^\ +\x00\xb75\x0a\xb4h\x81\x04\x01\x02\x04\xed[\x1e\x8b\x00\ +\x05\x8a\xa2i\xd1\x87\xa2@P\xd4(\x1a\xf4\xa1n\x80\ +\xc0v\xe26\x8e\x1d\xc7\xb1%;\x94B\xddL\x91\x8a\ +I\xda$\x87w\xce\xed\xcc\x9cs\xf6\xde}\x98\xe1H\ +\xaa\x0bt?\xcf\x99\xb3\xd7\xfa\xbf\xf5\xaf\xff\x88\xf8\xc6\ +\xfb\xae\xf6\xd6\xab\x90%\xd4\xeb\x19o\xfc|\x9d\xcc8\ +\xa4\x80G\xcf\x8c\xd0\xd7\x1fa\xad\xe3\xff=\x0eV\x16\ +*\x0c\x1d\x08(\x95C\xdc\xfe3\x0e\x06\x9f<\xc6O\ +\xff{\x81w\x7f<\xc7\xd0@\xc4\xf4\xe1>\x0a\xc5\x1c\ +\xf9/~\x15]{\xebU\xd2\xcd\x0aR+\xda{\x09\ +\xb5\x8d\x1d\x8cq\x80ckM\x93\x93%\xacu8\xe7\ +\x10B\xe0\xac\x05\xe7\x10\x80\x93\x12!D\xe7E\x02l\ +\xdc`ki\x8f\x9c\xea\xc3\xb9\xce\x05\x9cu\xec\xcd\xcc\ +\xf3\xd8\xa5\x11\xae\xfcx\x96\x95\xa5*S%\xc7\xec\x8d\ +%j\xb3\xebH\x97\xb4\x11J\x01\x02\xa5%R\x0b\x84\ +\x14\x08)\x89B\x0f\x84\x00!\x90A\x80B\x11\x0e\x0c\ +\xe1\x1f\x9eD\x1f?\x8c\x9f\xebCd\x9d\xf7K\xa5\x88\ +J\x11\x99q\xbdg\x10\x02\xa1$\xf1Z\x95\xbc\xb1|\ +\xee\xb9\xb3\xf8Jr{\xb5\xce\xdd\xcd\x98\xa4\x19\xa3\x85\ +\x10\xb4\xe2\x940\xf2\x1e\xe8\xa8\x10\xe0\x9c\xc3\xa6)\xc5\ +\xa9\xd3L<\xfb\xdb\x5c\xb9\xf5\x0a\xef\xa9\x19\xb6\xe4\x0e\ +\xc6\x19\x0e\xe9#Lm\x9f\xa2\xefg\xcb\xc4;\x9bT\ +7\xf6\xd0Zt\xbb\xd5U\xc0\x81\x10\x82\xbd\xeb\xab\x9c\ +}\xfc0o\xfe\xe7\x0d\x167\x1aH\x01\x02\xd0\xedv\ +\xc6\x9d\x9b\x1b\x9c=?\x8e\xebt\xbe\xf7\xe0\xec\xad\x0d\ +\xa6O\x0d!\xc6K\xbc\xd9\xfa\x15\xff\x91\xfe\x90F{\ +\x19\x8d\x06\x04\x95\x81m\xae?\xb2\xc2\xf9\xe1\x93<\xb5\ +t\x09s\xed&\xbbW/\x83\x80V+Ci\x89\xa7\ +%N\x0al\xa3\xc5\xdc\xeb\xf3\xc4\xed\x0c)%\xceZ\ +\xfc\xd0C/\xdc\xde\xa2\xb6\xd7FH\x81\xb1\x0ek\xef\ +U\xaf\x85\xa3\xff\x91\x13\xfcS\xfa\x1a\x97_~\x9b\xd1\ +\xfe\x12#\x83\x85^\x8b\x94\xf41\xcd\x063\xe5\x0f\xf8\ +\xad\xe9\x17\x98\x18(\xb3}\xf9\x17H!\xa8l4\xd8\ +\xd9m1}\xfa\x00\xd296w[\xbc\xfc\xf6*\xed\ +\xb6A\x00Q\xce\xe7\xe2\xa5c\xc8\x95\xc5=\xacq=\ +h\xee\xa7Z\xf9y\xde\xfeK\xde,^\xa602\x863\x06!`\ +\xe9\xee6u\xd5Gt\xf48\x8d#\xe7h;\x8d\x00\ +\xa4\x92\x5cx\xe2(\xc3#%$\xe2>\xdd\xf7\xb5\x07\ +\x9c1\xe4O\x8dq\xc5\x9fEf\x96\xfeR\x08@\xb5\ +\x91t\xc6\xd29\x5c\x92\xe1\xd2\x0c\x81\xa0\x9eTyg\ +\xf8:\xcd\x17\x1eF\xc9\x00O\xf9\x8c\xff\xe1S\xfc\xe4\ +\x8fr\xcc\xfc\xde\x09>\xf3\x17\xdfd\xfc\xa1C\xa4\xed\ +\x84\x87\xcf\x8c31Y&\xcb,\xbaW\xb0\x03\xa5$\ +B\x02\x06\x84\x15\xa8\x03\x01qVEJI\x96Y\x1a\ +qJ!\xe7\xe1i\x89\x8d[\xb84C\x95\x0a\xc8b\ +\x01\x91\x1a2\x173sl\x85\xa7\xbf\xfe\xe7\xecV\xaf\ +s\xb5\xf02;f\x9b$6\xd4\xfev\x9e\xe5\x1b\xf3\ +\x8c\x8c\x0f\xf0\xf0\xe9q\x8c\xb5(\xe8^\xe0\xbe.\xf4\ +\x8e\x053\xe8PA\x8a@\x80s\x84\xbeB+\xd9%\ +\x1b\xc82\xcc^\x15[k \xa2\x80\xac\xd9d+4\ +,\x9f\x8b\xb9\x1e\xadP\xdd\xdbA\x19(\xec\x06\x5c\xff\ +\xe1[8g8;=\x89\xe7)\xb2\xcc\x00\xa0qt\ +\xe6_\x0a\x84\xe8\x1a\x8c\xb5\x94F\x87\x98\xba\xf4Yf\ +\x93y\xaa\xdb\x0d\xa2\xc8\xebH\xe3\x1c\xd6A\x9a\x1a\xa4\ +\x14\xc8\xccbm\x82n'\xe8b\x9e\xb8O\xf0w+\ +\xdf\x01\x09\xb4`\xaf\xbaKp\xcbR\xdf\xa9q\xf8\xd4\ +\x01\xc6\x0e\xf6c\x8c\xed\xd5)\x1d\xa0\xb5D\x08:\x7f\ +(\x0563\x94\x8fO\xf2\xa9\xc7~\x93C\xf9\x87\x10\ +\xcau\xc0\x13\x02c\xa1\xb2\x15\xf3Q\xa5\xce\xdaf\x83\ +\xc5\x95=\xd6wbD\x14\x22\x07K\xb8\x9c\xc7H0\ +\x8e\xdc\xd0\xcc\xcf}\xc0)\xf9\x08\xf5\xd7>Fh\xc7\ +\xc9\xa9Qz\x06\xd1=Z\x00\xc6X\xee\x1f\x02\xe5{\ +,]\xbe\xc6\x8f\xbe\xfb\xf7\xac}\xf9C\x02\xed\xe3i\ +\x89\xb1\x8e\xcd\x9d\x06\xcdV\x0a@\xdc\xca\xf0}\xc5\xf0\ +x?\xc6\xc4\x94kC\x5cH\x9e\xc4\xbd\xb4\xcb\xef\xbc\ +\xf0\xf5Z\ +B\xb3\x95!e\xc7j\xa3\xd0cx8`|\xf0\x18\ +\xcf\xae]dx.F\x9d\x89\xf1\x06\x02\xc2\xbc\xe2\xc5\ +?\xfb\x16\xeb\x95=t\x14\x90\xcb\xf9\x1c>:\xf8\x7f\ +\x90\x0er_\x02k]o\x878\xe7p\x99\xe1\xd8C\ +\xa3\x94\xbd~\xdamK\xb3\x95\xf6\xe4\x93\xc2\xd27\xa0\ +8:z\x96\xa7\xdf\xff\x14\x95\xef\xbd\xc7\xd6\xf22\x98\ +\x94\xd5\xb9eV\x7f]\xa1\xddl\xa1=\x855\x96\xf1\ +\x89~\xf2\xf9\xe0\x81\xea\xf7I\xe8\xf9\x00\x8e\xee$\x80\ +@29}\x8c\xad?\x18\xe1\xc5\xca\x0f\xa87\xdaH\ +\xa9\xc09\xacs\x1c:0\xc6\xb9\xc9s\x1c~\xa9\xc0\ +\xe2\x7f\xbdCi0 M\x0d{\xcb\x15\xae\xfc\xe0m\ +j[U\xc2|\x80R\x16!\x04c\x07\xfb?Q\xb9\ +\xb3\x0e\xe7\xba\x0cXc\xb1\xb6\x03bX\xc8\xf3\xdc\xdf\ +|\x9b\x99`\x86\xbf~\xff;\xd86(\xe5!<\x9f\ +\xac\xd5`\xb08\xc2_=\xf3/\xb8+wXZy\ +\x91\x89GG\xc8G\x1eV\x08T\x96qt\xa4\xc8\xd6\ +F\x15)\x05A\xa8\x89r>CC\xc5\x07\x19s\x10\ +\x0d\x84\xa8@w|\xc09z\xe6\x22,4\xf2)\xbf\ +X{\x8f4\x13\xf8Z\x83u\x08\x97!\xa4c\xa8\xdc\ +\xc7\xeak3\xc8k\xbf\x22\xdf\x1f\x82P\x9d\xf5\x0bx\ +Z11\xd6\xcf\x9d\xc5M\xea\x89!\x085\x83C\x05\ +\xc2\xc8\xeb]\xc0YG\xffd\x91\xe1\x93e\x90a\xc7\ +\x07\x9c\xeb.#!\x90F\xf1\xd2\x95\x7f\xe3'\x0b\xaf\ +\xe0{9:\xdel1IB\xd4W\xe0\xd2\xeec\xbc\ +\xf1\xed\x7f\xa4r\xf36B\xaa\x9e\xae\xb6\x9d`\x92\x04\ ++$if\xc9R\x83\xe7k\xc6\x0e\xf6\xf7R\x93s\ +\xe0E\x9a\xa1\xe3\x03H%\xf0\x02\x85\x04\xf0\x02\x85\xf6\ +T\x07\x0e\x01m\x1d\xa3\x90\x90%\x08\xbf\x03\x8f\xf5%\ +O\xf5}\x06\xf1\xfd\x8fH]B\x94\x0b\xee\xd1$\xc0\ +\x0a\x89p\x8e\x9d\xed\x1a\xd5F\x1b\x93Y|_12\ +Z\xba\x07\x9fs\xe4\xca!:P=\x06\xa4s\xa0\xa4\ +D\x0a\x81\x00J%MS&\x9dP\xe9\x1c\xae\x1d\xe3\ +\x15#\xa6\xa7\x9e\xe0\xc8+>\x1b\xbf^BjE\x9a\ +Y\x84\x14\xd8vJVk\xa2}\x8d\xd9\xa9qwy\ +\x8b\xcc\xd8.W\x8e\x5c>\xe8MX\x96\x1aT\xa0\xee\ +\xe5H:\x8e\xdd\xe5\xc2!\xb1\x1czb\x9a\xa3\x93\x0f\ +#\xa5FFy\x84\x80\x03\xa3\x13\x5c\xb8z\x98\x8d7\ +n \xfdN~\x9c\x9b\xdf\xa2^O\xd0\xbeF\xfa\x1e\ +\xa4\x19\xeb\x8bk,\xadV\x91Bb\x9d\xa3X\x08\xf1\ +\xba\x9d\x05\xc82\x8b\x0aU\x87B\xd1\xddA\xfb.\xd4\ +\x09\x1a\x8e\xc9\xcf\x7f\x96\xcf\x9fy\x86@\xe5pXt\ +\x18\xf2\x8d\xd3\xdf\xe2\xf1\x89'IE\xd6\x09\x9a\x02j\ +\xf5\x84\xeb\xb7\xd7\xa96ST\xe0\xa3\x02\x8f\xc5J\x95\ +\xb8\x95\xf4\xfc\xc2Zwo\xf1\x08A\xab\x95\xa2\x03\x8d\ +\x90\x02g\x1c\x1f\xdd\xa8\xa0\x95\xafim'\xb4\xdb\x86\ +P{\xbc{\xf7u\xfeu\xe1\xa7dY\x13\xe1\x15H\ +qlT\xd7\xf1wd//\xee\xb3\x12\x05\x1a%\x05\ +\xceY\x9c\xf28\xf7\xe5\x8b\xa4o\xddb\xf9\xd6RW\ +r\xc7\xf6f\x9d\xa4\x9d\xa2\xb4\xc2XKX\xf0i7\ +R\xde\xfd\xf7kT\x16\x1b\xc8\xdc\xc5\xb3\xb8(\xa2\xd5\ +h\x13\x94\xcb\xbc\xa3>\xe0\xc3\xcd\xdb\x08!\xa1\x1dc\ +\xe3&\xdf\xbb\xf5\xcf\xdc\x5c\xb8\x86\xd2\xf7\xda\x09\xa0=\ +I.\xf2\x01\x81M2\x06\x0a\x01\xcf~\xed+<\xfe\ +\xa5\xf38\xeb\xc8\x17\x03\x86\x86\x8b\x14K\x11q#!\ +W\x0a\xf1#\x8f\xd9\x1f\xcd1\x7fy\x11)%ru\ +\xb3Nt\xec \x18C\x96\x8fX\xb5;\xf8B\x83\x94\ +`-\xd2:v\xeb\xeb\xc4\xbfq\x80\xc2\xc8(\xae\xdb\ +R%\xa1\xaf\x14\xde\xdb\xae\xceQ\x9b[\xc4&)\x9f\ +~\xe6\x22\x93'\x0f\xe2{\x0a\x84 W\x08\x08#\x8f\ +\xe3\x8f\x8e\xd1\xdc\x89Yxo\x09\xe5u#@\x5cm\ +\x82\xd6\x1d.\x04(i\xf7\x05\xbc\xcf\xb8\x1c\xbb\xe9\x16\ +\xb6mp\x02r\x9e`\xbc\xa4\xc8\xe7\xfc\x074qI\ +J\xb2]C\xfb\x9aS\x17O\xe2\x07\x1a)\x05I\x92\ +\x11\x95\x02\x06\x8f\xf4\xf3\xe1/?&\xae\xb6\x10\xa2\x83\ +\x9fl\xc7m\x9cR\x9d\xcf/)\xc8\xac\xe9U\xd4\x99\ +\x13\x89m6\xa97v!M\x00\x81\x96 }\x8f\xdc\ +}\x0e\xb7\xefrIe\x0bc,\x87\xa6&\xd8\xdb\xa8\ +\xb1\xb2\xb0\x8eI\x0c\xf9\x5c@s;\xe6\xa3\x9b\x15\x84\ +\xdc\xff\x9csH\xdb\x8d\xd8\x0e\x81\xb1\x96v\x9a<\xa0\ +3\x0e\xf0|Zi\x0c&E\x00\xbb\xb1\xa58X\xc2\ +\xf7\xe4\x03?\x15R\xd0Z\xdb$\xdd\xabS(\x97p\ +B\xb3pu\x91\x0f.\xdf%\xec\xf3Y\x9a]cs\ +y\xbb\x9b':\x90J\xcf\xf7p\x9e\xc6\x00\x03'\xcf\ +\xf3\xfb\x8f\xfe)\x0eHmJf3\x12\xd3&\xcc\x14\ +\xcf]z\x9e#O_$KR\x0eM\x94\x18\x1f)\ +`\x8d\xbd\xb7H\xba\x1d3q\x8bxq\x15\xa9%#\ +'\x0e\x22\x80,\xc9X\xbe\xb5\xca\xd5Wob3\x8b\ +\xb3\x0ek\x0c~\x14\xa1\xbf\xf0\xc7\xbfK\xbcv\x97p\ +)\xc6\xeb+svl\x9c\xe9\x89'\x91\xce\xe0i\x0f\ +)$C\xd1(\xe7'/r\xf5D\x85\xe3S\x079\ +}f\xac\x1bL\xf8\xe4q\x0eSo\xe1\xda\x8e\xb1\xa9\ +\xa3,\x5c\x99'\xe7K\xccV\x9b\xa8X\xc4/t\x12\ +\xb6\x17\x85\x5c\xf8\x93\xe7\xf9\x1f\xacr\xdeZ4Ts\ +u\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x03\x09\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?><\ +path d=\x22M5 38L8 \ +41L14 35\x22 stroke\ +=\x22#0064ff\x22 strok\ +e-width=\x223\x22 stro\ +ke-linecap=\x22squa\ +re\x22 stroke-linej\ +oin=\x22miter\x22/>\ +\x00\x00\x03\x06\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?><\ +/svg>\ +\x00\x00\x074\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\ +\x00\x00\x06\xfbIDATx\x9c\xbd\x97\xd9oT\xd7\ +\x1d\xc7?\xbfs\x97\x99\xb9\xb3\xdac\x83\xed\x02\x9e\x00\ +\x06\x1c\x11PQ\xa5VPJ\x89\xca\xd2T}I\xab\ +\xfc\x01}\x05\xe5!\xad\xd4M\x91\x92\xb4Y\xa4\xaaU\ +\x1fK\x94\xb6\xa9\xaaD\xa9\xd4*\x0f%e\xabJ\xa5\ +\xaa%\x11\x098\x1b`;\x08\x1c\xcc\x18\xef\x9e1\xe3\ +\x99\xb9\xcb9}\x98\xb1Yl\xc0\xa6R\xcf\xc3y\xb8\ +\xcb\xf9}\xee\xef\xf7\xfd-W\x8a\xc5\xa2\xe1!\x974\ +7\xf3\xd0'\x80\xfa_\x8ck\x84 \x02%\xffg\x00\ +\x91\xc6v\xb4\x7f\x8a#g\x8b\x94}\x83\xf5\x90\x14+\ +\x06\x10\x01A868\xcd\xf1\x81Q>\x1a\x99\xe1\x8d\ +\xbe\x1b\x94\xeb\xfa\xa1 V\x04 \xcd\xfd\x9d\xc1i\x8e\ +]\x1a\xc3\xb3-2q\x97\x8bc\xb3\xbc\xf1\xe1(\xb3\ +\xbe^q8\x96\x0d \x02\x22\xc2\xdf\x9a\xc6mK\x9a\ +\x024X\x22|r\xa3\xcc\x1f\xfbF\xb9\x19\xac,\x1c\ +\xf6r\x8d\x1b#\xd45\x04\xda`\xa9yo@*\xe6\ +\x90\xf3b\x94\xab>\xb5P\x13h\xa1\x1e\x1ab\xb6\x10\ +\xe9\x07\xa7\xc7\x03\x01TSp\xaf\x9d\x1d\xe6z\xb9\xc6\ +\xf7\xbf\xb6\x81\xb4\xebp\xaeX&\xef\xc5\xf8B.\xc1\ +\xaeB\x0b~\x18b\x99\x88\xb7\xce_\xa3\xafX\xe2\xa5\ +\x83[\xc8{\x0e\xe1\x03 \xee\x0b\xa0\x9an\x7f\xfd\x83\ +\x22o\x9e\xbb\x86\x12!\xe9\xda\x1c\xdeY`KG\x8e\ +D\xcc\xa1\xd5\x0eA\xfb\x88k\xd0X\x0c\x95|\xfe\xfa\ +q\x910\xd2\xbc\xf4\xcd^V%\x1d\xa2\xfb0\xdcS\ +\x03\xf3\xc6\x7f\xff~\x91\xb7\xfa\xae\xd3\x99I\xe0X\xc2\ +\xb1\x8b#\xfc\xfa_Whu#\xda\x9c\x00\x1d\x05h\ +c\x884Xh\x9e\xde\xbd\x91mk\xf2\xbc74\xcd\ +\xd0L\x1d\xc4Z\xb9\x07\xe6\xd5\xfe\x87sE^?;\ +\xc4\xeat\x1cCCp\x188~i\x04/fs\xe8\ ++k\xb1\x00\xd3|'\xd2\x86B\xab\xc7\xe1=[0\ +a\x95\xad]9.\xcch\xda\xe3\x8a\xb6\x98f\xa9h\ +,\x02\x10\xc0\xb2\x14o\xf6\xdd\xe0\xd53W\xc9&l\ +\x5c\xdbblv\x0e\x03(\x05\xf5@3[\x8b@\x14\ +\x98\x08\x03\xd4\xb5\x10\xb7\xa0Z\xad\xf2\xad\x9e,5\x9d\ +\xe5r\xc9P\xf15s\x01(Q\xb4\xb8zQ\xd9V\ +w\x1b\x17\x11\x8c\x81\xael\x9c\x8el\x02\x850q\xb3\ +\x06@\xd2u\xf0C\xc3\xd6\x8e\x1c\xdf\xfbR\x17\x0e\x1a\ +\x03XJ\xf1\xf6\xa7\xa3\xfc\xee\x83\x22J\x84Zd\xb8\ +\x5c\xd2T\x83\x08\xaby\xde\xd5\xb2f\xdaW\xdc\x9d\xa0\ +\x0b\x00J\x1a\x07\x1dy\xefs^9}\x99=\x85\x16\ +~\xb4w\x13\xe9\x84K\xc5\x0fPJ\xa8\x06\x11\x8fu\ +\xb5\xf0\xec\xbe\xcd\xacoK\xa3\x9b\xefZ\x96\xc5\x81\x9e\ +<\x8f\xadJ\x12\x18a*p\x88\xf4\xad`\xaa\xdb!\ +\x02\xd5(\xe5\xb7\x87@\x04\x94R\xbc\xfa\xee\x10\xbf<\ +=\x88\xa5\x04/f\xf3\xcc\xee\x02\x87v\x16x\xf9\x1f\ +\x03\xcc\xd6\x02\x1e\xed\xc8\xf1\xd3\xc77\xd0\xdd\x12'R\ +6P\x07\xc0\x88\xa2\xb3%\xcd\xea\x94\x8b\x1fi\xf2\x09\ +\x8bP\xbb\x8c\xce\xd6@d\xc1\xb3\xda\x18\xae\x965d\ +\x14-N\xc3{\xf6\xbc\xe0~sf\x88_\x9c\x1e\xc0\ +\xb1\x14I\xd7\xe6O\xe7\xae\xa1\xb5\xe1\x99\xdd\x05\x82=\ +=\x1c\xef\x9f\xe0\xd0\xceu\xcc\xd4\x0d\x93\xc5\x0a\xdb:\ +tC\x94@\xe8\xd7Q\xb18\xa1\x06\x8c\xc6&\xc4 \ +\x8b\xca\xb2jB\x5c)k\xac\xac\x22c\xeb\x86\x07B\ +m\x18\x98\x98#\xd4\x86\xa4\xab\xc8\xc6]&+5~\ +\xfb\xee\x15\x8c1\x1c\xdeU`Ww\x8e\xfe\xc9:\xa7\ +\x06\xa70\x18\xe2N;\x9bZ\x9d\x85j\xe7\xd7k\x0b\ +Jr\x88P4\xb2C5#1/>\x11\xc1\xb3\x15\ +\x8ej\x5cP\x06p\x94\xf0\xdc\xbe\x1e\xbe\xb3}-\xf5\ +P\xe3G\x111\xa7\x91`\xe7\x8ben\xfa\x9a\xc1\xa9\ +\x1a\x7f\xffl\x8aHk\xeaA\xc4\x85\xf1\x1a\xb6\x1b\xbf\ +#\x9e\x8e\x12\xae\x94|^;;L\xce\x0e\xe9J;\ +\x0b\xf7E@\x1b\xf0\x1cE!mH(}\x0bP\x1b\ +C&f\xf1\xfc\xfeM<\xf5\xc5\xb5D\x06n\xd6\x02\ +zW\xe7xn\xdffnTBN\x0eN\xe3GQ\ +CtJ\x18\x9e\xa9p\xbd\x02\xb6\x13o\xe8\x00\x98\xac\ +CM[\x1c\xbb8\xca\xf3'.\xd1\xeaDt\xa4m\ +\x84\x86\x07\x92n\xc3x\xbci|A\x84\xf3aH\xb9\ +\x8a\x1f?\xbe\x11_\x1b\x06\xc6fy\xf1\x89^\x02#\ +\x9c\x18\x98$\x08#\x94\x08\x8e\xa5\xb0-\xa1T\xf59\ +\xfa\xf10On_\xc3*\xc7\x224P\x0d,\xde\xbf\ +6A\xa9Z\xe7\xed\xcf'\xc8%\x5c~\xb0w\x03&\ +eS\xaak\xbaS\x86\xb8\xdc2~\x07\x004*Y\ +\xc2\x16~\xb8g=s\x81\xa6\xec\xc3\xf1\x81I\xfc\xa6\ +q\x03D\xc6\xb0.\x9b\xe4\x91|\x8aR\xd5'\xf4\xab\ +\x9c\x1c\x9aamK\x8a\xf6\x5c\x0a\xad5c\xe5*q\ +Gq\xf4\xc2\x08\x22\xf0\xf4W\xd7\xd3\x9e\xb1\xb0\xcc\x9d\ +\xc6\x17\x01\xccC\xb4\xc4mZ\x12\xc2\xa7\x97g\xa9\x06\ +\x11\xb6\x9a\xcf\x15\xb0\x95P\xc8g\xd8\xd1\x95$\x0a\xaa\ +h\xad9\xd1?N\xdf\xf5A\xbe\xde\xb3\x9a\x81\xb12\ +\x916d\xe2.J\x09\xe7\x86K\x94k!\x19W\x08\ +\x97S\x8ai~\xa5`\xd8\xdd\x9d\xa4\x1aD\xf4\x8fW\ +@\x1a} \xe9:$]\x81\xa8\x862\x11\x96R\xbc\ +\xb0\x7f\x13\xe7G*\x1c9s\x85\x7f_\x1eC\x04\x82\ +\xc8\xb0.\x9b\xe0g\x07{Y\x93\xb9w[\xbeg7\ +4\x06\xe2\x16\x1c\xd8\x98akG\x9aP\x1b\x82\xc8\x90\ +\x8a\xd9t\xa7\x05\xc7\xb2@,\x22\xad\xb1\xc5\xb0k]\ +\x8a#O\xed\xe0W\xdf\xfd21\xdb\x22\x1b\xb7y\xe1\ +\xc0\x16\xb6ux\xf7\x9d\x09\xee;\x0fh\x031\x0b\xf6\ +\x16RT\x83\x90\xa9j\xc8\xbe\x8d9\xfe\xf9\xd98\x99\ +\xa4\xc7\xfe\x8dy\xca\x95J\xa3\x19\x85\x1a[\x05<\xb9\ +u5\x9e\xb5\x83\xd6\xb8b{G\x8aZ\x10\xa1\x94Z\ +(Zw/Y\xce\x8f\x89\x12\x98\x0b\x0d\xbe\x16\xfes\ +u\x8a\x9f\xbc\xf3\x09\x9ec\xf1\xca\xb7\xb7\xb1\xf7\x91,\ +A\xa4\x17\x9e\x15\xc0\xb6\x14\x880:6\xce\xe4\xc4$\ +m\xedm\xe4\xdb\xf2`@k\x8d\x8e4\x06\x83m\xdb\ +\xcb\x9b\x09\xb5\x01\xcf\x16bF850N\xa9\xea\xe3\ +\x87\x8a\x9f\x9f\xbc\x88\x1cx\x94=\x85\x0ca\x13\xc2\x00\ +A\xa4QJQ\xaf\xd5q]\x97\x99\xe9\x19l\xdb&\ +\x0cC\x8c6LOO\x03\xb0\xae{\xdd\xf2\xa7bm\ +\x1a\x8d\xe3\xd9o\xf4p\xb0\xb7\x13?\xd4\x0cM\xcd\xf2\ +\x97\x8fF\xb8Qe\xc9IXkM\x18\x86d\xb3Y\ +\xca\xa52\xa5R\x89\x89\xf1\x09\x8c1\x04A\xc0@\xff\ +\xc0\xca\xfe\x0b\x22chKX\xbc\xfcD/\xfb\xb6t\ +\x11j\xc3\xa9\x8b\xc3\xfc\xf9\xc3\x22\xb2\xc4\xe8\xe5\xba.\ +\x9d]\x9dx\x9e\xb7\x00d;6\x9e\xe7\xe1y\x1e\x8e\ +\xe3,/\x04\xb7\xafP\x1b\xf2q\x8b\x17\x0fn&\xd4\ +\x9a\xfe\xb1Yvtz\x18\x13-\xfa\xfa\xd6|+J\ +),\xcb\x22\x0cC\xfc\xc0'\x9dN#\xb75\x90e\ +\x89p\xa9e+a\xac\x122U\x0d\xe8mO\x10,\ +1\xfa\x8a\x08A\x10077G2\x99\xc4q\x9cE\ +\xd9\xf0\xd0\x00\x00\x96\x08\x22,\x99\xe7\x22\xc2\xdc\xdc\x1c\ +\xc5\xebE\x5c\xd7\xc5u]::;\x16\x01\xfc\x17\x8c\ +\x9fJ\xdcK\xe3H\xf3\x00\x00\x00\x00IEND\xae\ +B`\x82\ +\x00\x00\x02+\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +<\ +path d=\x22M38 7C33\ + 22 30 25 20 29\x22\ + stroke=\x22#0064ff\ +\x22 stroke-width=\x22\ +3\x22 stroke-lineca\ +p=\x22square\x22 strok\ +e-linejoin=\x22mite\ +r\x22/>\ +\x00\x00\x01\xe4\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\x00\x00\x01\xe4\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\x00\x00\x04~\ +\x00\ +\x00\x01\x00\x01\x00\x10\x10\x00\x00\x01\x00 \x00h\x04\x00\ +\x00\x16\x00\x00\x00(\x00\x00\x00\x10\x00\x00\x00 \x00\x00\ +\x00\x01\x00 \x00\x00\x00\x00\x00\x00\x04\x00\x00\x12\x0b\x00\ +\x00\x12\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00da^\ +\xff`Z_\xffda^\xff__^\xffXY_\ +\xffZ[_\xff[[_\xff[[_\xff[[_\ +\xff[[_\xff[[_\xff[[_\xff[[_\ +\xff[[_\xffb`^\xffda^\xff\x1b\x17\x13\ +\xff)3\x0d\xff\x19\x16\x12\xff2 \x11\xffP<\x0d\ +\xffE3\x0e\xffB1\x0e\xffD2\x0e\xffD2\x0e\ +\xffD2\x0e\xffD2\x0e\xffD2\x0e\xffD3\x0e\ +\xffA1\x0e\xff \x1a\x12\xff\x1a\x16\x13\xff% \x1f\ +\xfff\xa0\x08\xffe\xa2\x08\xffNW\x15\xffxT\x17\ +\xff\xb7\x83\x11\xff\xc2\x8d\x0f\xff\xb9\x86\x11\xff\xb9\x86\x11\ +\xff\xb8\x86\x11\xff\xba\x87\x10\xff\xba\x87\x10\xff\xb8\x86\x11\ +\xff\xc3\x8d\x0f\xfffN\x18\xff\x1d\x1c \xff$\x1e\x1d\ +\xff`\x97\x07\xffw\xc5\x00\xffn\xb9\x01\xffDp\x0d\ +\xff:2\x19\xff\x88d\x13\xff\xb4\x84\x11\xff\xb6\x85\x11\ +\xff\xb8\x85\x0f\xff\xb0\x7f\x0f\xff\xaf\x7f\x0f\xff\xad~\x0f\ +\xff\xbb\x86\x0e\xffoS\x15\xff\x1a\x1a\x1e\xff$\x1e\x1d\ +\xff`\x98\x07\xffs\xbc\x01\xffo\xb3\x03\xff|\xcc\x00\ +\xffP\x81\x0d\xff\x1e\x15\x1a\xffF2\x0c\xffR9\x0b\ +\xffvW\x12\xff\xb0\x80\x10\xff\xb3\x82\x0e\xff\xae~\x0f\ +\xff\xbc\x87\x0e\xffmR\x15\xff\x1a\x1a\x1e\xff$\x1e\x1d\ +\xff`\x98\x07\xffs\xbd\x01\xffq\xb9\x01\xffe\xa4\x06\ +\xff25\x10\xff!$-\xff\x11:j\xff\x116b\ +\xff\x17\x1a#\xffI7\x13\xff\xad~\x10\xff\xb0\x7f\x0f\ +\xff\xbb\x87\x0e\xffnR\x15\xff\x1a\x1a\x1e\xff$\x1e\x1d\ +\xff`\x98\x07\xffs\xbd\x01\xffq\xbc\x03\xff:H\x0d\ +\xff\x17 @\xff\x06h\xd2\xff\x02r\xee\xff\x02s\xef\ +\xff\x0d`\xbc\xff\x14\x1c*\xffgL\x12\xff\xb7\x85\x0f\ +\xff\xba\x86\x0e\xffnR\x15\xff\x1a\x1a\x1e\xff$\x1e\x1d\ +\xff`\x97\x07\xffv\xc2\x00\xffe\xa3\x07\xff( \x11\ +\xff\x0cT\xa5\xff\x00r\xf1\xff\x04j\xdb\xff\x04j\xdb\ +\xff\x01t\xf4\xff\x0fD\x80\xff:(\x0d\xff\xac~\x12\ +\xff\xbc\x88\x0e\xffmR\x15\xff\x1a\x1a\x1e\xff$\x1e\x1d\ +\xff`\x97\x07\xffw\xc4\x00\xffa\x9a\x07\xff$\x1e\x18\ +\xff\x09^\xbc\xff\x02n\xe6\xff\x03k\xde\xff\x04j\xdc\ +\xff\x02q\xeb\xff\x0cM\x99\xff5%\x0e\xff\xa9|\x12\ +\xff\xbd\x88\x0e\xffmR\x15\xff\x1a\x1a\x1e\xff$\x1e\x1d\ +\xff`\x98\x07\xffu\xc0\x01\xffj\xae\x06\xff,'\x0e\ +\xff\x11E\x83\xff\x00v\xf7\xff\x03m\xe2\xff\x02n\xe5\ +\xff\x00s\xf2\xff\x19;]\xff(\x1e\x11\xff\x94m\x14\ +\xff\xc1\x8b\x0d\xfflQ\x15\xff\x1a\x1a\x1e\xff$\x1e\x1d\ +\xff`\x98\x07\xffs\xbc\x01\xfft\xbf\x01\xffKm\x0d\ +\xff\x1c\x12!\xff\x10M\x91\xff\x06i\xd3\xff\x07g\xcf\ +\xff\x13@w\xff#\x16\x18\xff\x1b\x19\x1f\xffM=\x18\ +\xff\xc2\x8b\x0d\xfflQ\x15\xff\x1a\x1a\x1e\xff$\x1e\x1d\ +\xff`\x98\x07\xffs\xbe\x01\xffo\xb6\x02\xffq\xba\x02\ +\xffHf\x0d\xff'\x1e\x12\xff\x1e\x1d)\xff\x1f\x1b%\ +\xff*%\x10\xffPx\x0c\xff5@\x17\xff\x1b\x16\x1e\ +\xff\x9cr\x10\xfftV\x15\xff\x19\x19\x1e\xff$\x1e\x1d\ +\xff`\x97\x07\xffs\xbd\x01\xffo\xb5\x02\xffp\xb6\x02\ +\xffs\xbf\x01\xffe\xa3\x07\xffW\x83\x08\xffX\x86\x08\ +\xffh\xa9\x07\xffy\xca\x00\xffS|\x0c\xff\x15\x0f\x1f\ +\xff_I\x16\xffvX\x14\xff\x18\x18\x1e\xff$\x1f\x1d\ +\xffc\x9e\x06\xffu\xc1\x00\xffq\xb9\x02\xffr\xba\x01\ +\xffq\xb9\x02\xfft\xbf\x01\xffv\xc4\x01\xffv\xc4\x01\ +\xffs\xbc\x01\xffr\xbc\x01\xffj\xab\x04\xff%&\x1b\ +\xff1(\x1b\xffYE\x17\xff\x1f\x1d\x1e\xff\x22\x1a\x1e\ +\xffOu\x0d\xffm\xb2\x03\xffi\xa9\x04\xffi\xaa\x04\ +\xffi\xaa\x04\xffi\xa9\x04\xffh\xa8\x04\xffh\xa8\x04\ +\xffi\xa9\x04\xffi\xaa\x04\xffk\xae\x03\xff4@\x16\ +\xff!\x1a\x1e\xff'#\x1c\xff%!\x1d\xff$ \x1d\ +\xff$ \x1d\xff*,\x1b\xff*,\x1b\xff*,\x1b\ +\xff*,\x1b\xff*,\x1b\xff*,\x1b\xff*,\x1b\ +\xff*,\x1b\xff*,\x1b\xff+,\x1b\xff'$\x1c\ +\xff%!\x1d\xff%!\x1d\xff%!\x1d\xff\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\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x01\xe3\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\x00\x00\x02\xa9\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\x00\x00\x03W\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x000\x00\x00\x000\x08\x06\x00\x00\x00W\x02\xf9\x87\ +\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\ +\xa7\x93\x00\x00\x00\x09pHYs\x00\x00\x0d\xd7\x00\x00\ +\x0d\xd7\x01B(\x9bx\x00\x00\x00\x07tIME\x07\ +\xe7\x04\x13\x03\x14 g?\x96\xef\x00\x00\x02\xe4ID\ +AThC\xedX;\x8b\x151\x18=\xd7\x07\xae\x95\ +b%\xb6\xa2\x8d\x0f,\xc4F\x10AA\xf4\x07XY\ +\x89(XZ,\xbakqAW\xc4\xc2\xceB\xb9h\ +oi#\x88\x8dbo!\x82\x22Z\xa8 Vk%\ +\x17_\xf1|;\xe6\x92\xc9$3\xc9$\xb3\xc3\xe2d\ +w\xd8\x9b\xefy\xce\x97/\x99\xec\x05\x861T`\xa8\ +\xc0P\x81>+0r%\xbf\x06\xec\x5c\x0f\x1cW\xc0\ +V\x97\xbe\x07\xd9\xf2:\xe0\xe9\x15\xe0\x83\x9d\xbbB`\ +\x098K\xa3;|\xe6l\xe3\x9e\xe7S\x82\xbd\xb8\x00\ +<0q\x94\x08H\xe5\xc9\xf45\x0d6\xf5\x0c\xd6\x97\ +~J|{\xcc\x95\xd8`ZRyL\x83g\xfb\xbc\ +$\xbb'\xbeH\xab,?\xc1|\x07\xf8\xcc\xfdak\ +\xf3\xef=\x9d\xbfD\x80\xc2\x1dZA\xf0\x8f\x16\x81\xf1\ +*\x03u\xa6c[O\xa9\x10\x022f\x18e\xc2\xa2\ +\xaf\xed\xb1\xe6\x09\xd8-\x14\xb4\x1c\xdc\x1f\xfc-\x06[\ +\xadr\x92\x05\x05\xc9d\x14\xbd\x02&x\xc1`\xcf3\ +\xe1\x0a\x0e\x13E\xc0\x07\xd6'\x0fF\x91`\x18E \ +!Og\xae\xff\x17\x01\xdf\x86\xf5\xc9;+\xbb\x118\ +z\x05l\xb0\xf6\xdc\x06\xcd\xfdA\x13%\xdbD=\x04\ +xG\xcc;\xa2\x09Hz\x01\xad\x9f&8#(\xbe\ +\xfd\x8bq\x1a\xea\xd7-`{\x93O\x8c\xbe\x15\x81\xf0\ +\x04R\xf9\xf2\x98\x87\xfar\x038l\xcb\xdb\xce[\x11\ +\x18\xcb\x15D\x15?+\x9f\x9d\xa3\x0a^\x9b-@\xbd\ +\x90\x96*\xda\xcb\xe9\x1c,\xf4$\xf7\xfb\x0b\xe0\xb1\xc2\ +om!\x9f)\xb3\xfe\xf1\xf1\x837#K{\xdd\x04\ +\xb6\xf8\xb35k\xa2\x08H\xc5L\xf0\x06\x89e\xde\x18\ +\xf7\x16\xf30\xf0\xda\xf72\xd4\xb7b\x937\x83uY\ +\x04\x13\x18\xb3\xf2#\x85\xd9\x86\xb4\x83-*\xbcJ\x01\ +\xd2\xd67\x88\x80\x80wU\xde&\x01\x95z\xafS\xea\ +6\xb0\xb9\x12\xb7F\xd0H \x18\xbcN\x92H\xe2\x12\ +\xd4w\x9eR\xbbk0\x97T\xb5\x04\xa2\xc1g\x22\xc1\ +S\xeamhKy\x09\xf86lhe\xd2\xdbI2\ +)u\x17\xd8X\x97\xd3K\x80\xdd|\xaa\xce1H\x97\ +\xd8N\x92\xe3\x02\xd4\x0f\x82\xf4~?\xe5%@\xdf\x83\ +A \x9b\x8c2\x90\xe0\xd1w\xde\x97\xa6D \xc7\x9b\ +\xd1\x99(\x9d\xc4\xecd\xb2+^\x9a\xb3m\xf69\x01\ +\xe4\x10\xa6\x93\xd0(\xf6\x9bplB\xdb\x0c\xe5\x9b\x1c\ +\xb8K1\xda\x93\xf8\xac\xe3\xb0\x9dL\x8c\xbe\x8b\xd8\x8a\ +\xf9\xd7\xec\x04$`;\x12\xef}X\xec\x15\xf0\xd9\xe5\ +\x95\xb7#\xe1\xc4\xd0\x0f\x81\xf6+Q!a\x7f\xb1\xf5\ +\xc9\xb08\xb44\xc2\xe3\x8aGVA\xf0\xdd\xe9\xa8N\ +K\x8f\x8f&\x84\x12\x01\xbe\xf2&?\x813\xff\x0c\xe4\ +\xe8:\x99\x15o\x86`\xdc\xc4\x133L\xa9\x85\xe6\x81\ +g\x14\xdc\xcf\x90\xa7\xab\x10\x93\xab\xc0s3\xb8s\x0d\ +\xaf\x03GH\xe4\x1c_l\xbb\xbaB\x12\x13\x97 \xdf\ +I\xe5m\xf011\x06\xdb\xa1\x02C\x05\x86\x0atS\ +\x81\xbf\x22G\x9c\xdf\xb5\xb4\xa1\x9c\x00\x00\x00\x00IE\ +ND\xaeB`\x82\ +\x00\x00\x02\x8d\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\ +\x00\x00\x03^\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +<\ +path d=\x22M35.625 \ +11.7104L33.0304 \ +15.3307\x22 stroke=\ +\x22#0064ff\x22 stroke\ +-width=\x223\x22 strok\ +e-linecap=\x22squar\ +e\x22/>\ +\x00\x00\x03/\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x000\x00\x00\x000\x08\x06\x00\x00\x00W\x02\xf9\x87\ +\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\ +\xa7\x93\x00\x00\x00\x09pHYs\x00\x00\x0d\xd7\x00\x00\ +\x0d\xd7\x01B(\x9bx\x00\x00\x00\x07tIME\x07\ +\xe6\x0a\x19\x03\x13\x1b\x82\xa4d\xac\x00\x00\x02\xbcID\ +AThC\xedX\xbfk\x14A\x18}\xab\x06c\xa5\ +X\x89\x85M\xd0\xc6\x1f\xa4\x10\x0b\x0b\x09(\x88\xfe\x01\ +VV\x22\x0a\x96\x16A\x93\x14\x07\x1a\x91\x14\xe9RD\ +\x0e\xed-m\x04\xb11\x85\xad\x85\x04\x22\xa2E\x14\xc4\ +*V\xe1\x88?\xc67{;\xcb\xecdgw\xe6v\ +\x99\xdd#\xfb\x85%7\xf3}3\xdf{o\xbe\x99\x9d\ +;\xa0\xb3N\x81N\x81N\x81&\x15\x88\xf2\x92?\x02\ +\xa6\xf6\x03W\x04p$\xcf\xdf@\xdf\xd6>\xe0\xedC\ +\xe0\xab\x99{\x17\x81E\xe0\x16\x83V\xf8L\x9a\xc1\x0d\ +\xb7\x07\x04{o\x0ex\xa1\xe3\xc8\x10\x90\xca\x93\xe9:\ +\x03\x0e6\x0c\xd6\x96~@|\xa7\xf5\x958\xa0G\xd2\ +yY\x81g\xf9| \xbb7\xb6\x99\x02\xf7_e\xbe\ +i>\x93\xffX\xda\xfc\xffL\xe5\xcf\x10`\xe7q\xe5\ + \xf8W\xf3@/0\xd0\xdct,\xeb\x01\x1d\x92\x80\ +\xb4\x14\xa3lP\xf4\xf1\xb6\xb1'`\x96\x90\xd3r\x88\ +\xf7\xe0\x16\x19Zt\x11\xbbN2\xa7Ij\x0a\xf2^\ +\x81\x18\xfc&\xb3'\x8fN\xa6&L^\xd3x\x11H\ +\xc1\xeb)H\xa4I\x12^\x04\xbc\xa4\x09\x14\xbc\xb7\x08\ +\xc4\x1b\xf6\x84!-\xdbMnd\xef\x15HIH\x22\ +\x0e\xe0y\x5cE\xdc\xf6\xf1\xdfK\x80w\xc4z\xcd\x9b\ +\x80L/I\xa8\xa7\x0cN$\xc0\xb7\xff\xd0n\x08\xfc\ +Y\x02\x8e\x95\x8d\xf1\xf1\x8fD\xc09\x81\xd4\xdd\xb0Y\ +\x81\x1f\xf1z\xd4d#\x11\xe8\xc9+HR\x16\xf1\xe7\ +<+\x03I\x7f\x5c^\x15-?y\xc1\xa4\x12pO\ +\xe0\xaf\x0a\x91\x9f\xd9\x97\xfd\xe2S\x06>\x19,\xcb\xeb\ +)p\xb8 ]\xa9\xcb\x8b\x80TL\x07\xaf\x91\xd8\xe2\ +\x8d\xf1L\xdcv\x04\xaf\xc6>\x10\xf8\xe5;Fg\xe5\ +L\xa0G\xe5\xf5\x0diJ3/\xf0\xb1\x0a\x90Q\xc7\ +:\x11\x90\xe0\xf3\x947ITns\xf5\x96\x81C>\ +\xf3\x94\x12\x08\x06>A}_`\xfb\x09p\xca\x95D\ +!\x81\xd0\xe0\x15\xe89\x81O\xae%e%`\xdb\xb0\ +\xae\xca\xd4\x12\xc7\x92Z\x05&\x8a\xe6\xb2\x12\xe0\x01}\ +\xbdh`(\xdf]\x81\x1d\x82\xb4\xfe>e%@\x80\ +\xe7C\x81,\xcb\xc3\xbb\xc8\x1d[L\x86@\x1doF\ +[\xa2\x8a\xfd\xe9\xc9d*\x9ei\xb3l\xceVL\x14\ +b\xf89=\x89I\xe8\xa8\xe6\xdc\x08\x81\xc61\xc7w\ +\x15\xc7r\xd21Z.b\xc3\xe8\x9f\x8e\x93\x87\x08\xfb\ +bKb\xae\x80-\xae\xb5\xfdcO\xc0\xfca\xeb\x9b\ +&\xf5\x85\xc5\x08\xaf[\x22\xfd\x8c\xc2\xc1\x83fS\xc7\ +\x94!\xc0W^\xff7p3\x09\x90G\xd7\xb5\x96\x10\ +Hap\x13\xf7uL\x99\x12\x9a\x05\xde\xb1\xe3y\xdb\ +@kx\xfa\x0b\xc0\x9a\x8e/\xf7+\xddc\xe0\x12\x89\ +\xdc\xe6\x8b\xedd\x1b\xc8\x10\xe4g\xa9\xbc\x09\xbe\x0d\xd8\ +:\x0c\x9d\x02\x9d\x02{]\x81\xff\xd4;\x9a\x8c\xa1b\ +\xf3o\x00\x00\x00\x00IEND\xaeB`\x82\ +\x00\x00\x02\x95\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\x00\x00\x03\xee\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\ +\x00\x00\x03\xca\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\ +\x00\x00\x06\x16\ +\x00\ +\x00\x15\xb6x\xda\xedXKo\x1bU\x14>\x1e\xcf\xd8\ +^@\x95V\x95\xd8 \xd5\x02\x81\xb2AT\x05\xb1A\ +B\xd9\x80\xd8\x80\xca\xa2\xad\xd4\x82\x14\xb5\x8dc'n\ +\xe2<\xc9\xc3I\xc6\x09? \x15tQ\xb5Ba\x81\ +\x84\x90\x10YTt\x03\xc2;@T4B\x08\x15\x11\ +\xe2g\x9c\x97]O\x12?\xe2\x87z\xf9\xce\x8c\xc7\x8d\ +\x1d\xdbma\x01\x8b\x5c\xe9\xd3<\x83?=j\xf2[t\xfe\xbd\x19\x9d'\ +l\xfa\xbe7\x8dk\xf0\x17\x0c\x1b\xb4B\x80\xd4\xe2,\ +u\xd6\xaf\x07~[\x12j\xeb*\x9a\xe8\x93\x17\x13}\ +\x8a`0\x7fr\xc8\x0a\xc8\xf3\xb0\xe1\xf4\xce\xb8\xb4\xc4\ +\xfc\xf9i#\xce\x1cS\x9c\xab\xcc\xcf\xd0\xf9U\xf2\xd5\ +\xac\xcd\x1c-\xd4\xd8\xa0\xd2|\xd3\xb8\xf7(\x9dq\xaf\ +M0V\xaf\x186l\x0e*\x9d\xd5\x5c\x84\xed\xe0\xd7\ +\xd8\xffJL\xd5\x8c\x9f\x82Y?!/H\xe4\xa7H\ +\xd4\xfb\xc7\xd7\x9c\x83&?\xcf\xcd4X\x07\x8e{\xac\ +\xd7\xa6E{L~\x9bH\xf8\x94\x03\xb6f\xfd\xd2B\ +~\xdab\xfa\x13d\xfe\xdd\x09\x12\xa6\x0dM\xf7F\xa0\ +\xba\x06\x88\x9f%X\xffL\xb4\xd7\xb6\xc0\xdc\x8c\x88\xc7\ +.`K\xb8\xd1\xbb\xb2\xd3\x92\xca>p\xac\x99\x7fw\ +\x5c\x87\xd8\x01\xf8\xd8,\xb6\x1c+\xd3\x06=\x06ST\ +\x8dk\xcc\xeb\xe8\x08\xbb\xedB\x07\xb8u~\xdck\xc6\ +\x9f\x83\xff&\xbf6F\xc1\xf4\x08\xf8\xc7Hh\xa3\xcd\ +\xf9+6,\x996d&\xa5\xaa\x7f\xe0]f\xeeP\ +\xb7aC\xc8mo\x9a#\xbb~\xf0c\xffU\xf6Y\ +05B\xf3\xf7\x87I\xa4\x86\x0c~\xaeWM\xf9\xb1\ +gK\x95\x1a\xc1\xf6oOHj\xcck\xff:\xe2q\ +\xe8~W\xf85\xce\x85\xa6\xfc\x93\x96E\xf6\x7foF\ +\xb7aa\xcbG>@$\x07\x80A\xf0\x0f\xb5\xae3\ +{\xc8\x7f\xd3\x06\xd4\x93\xedh\x8f\xfd\x01\xf33\xe07\ +\xd6\xdf\xd1\xd9j~\xc6oYbn=\x07\xb0\xa6\xe0\ +\xeeX\xef#\xb1\xd1O\x82\x8f\xb0c\xbe\xd5|\xde\x0f\ +\xc8\xc70\xaf\xc1z\xbf,\x22nc\xbd\x99\x7f\xd5k\ +\xff\xade/\xe0\xfd7e\xf8\xae\xaf\xff\x9cQ\x03\xd7\ +\xfbIK\xf4\xe2}WH\xe0\xa8=\xaa\xc6\xed\xa2~\ +s-\x8b\xb8m\x15\xd8u\xaczm\xe7Z\xfa\x8e\x9c\ +5c\xcf\xfc\xe6^\x8f{h\x01\x10\xab=\x06\xa2n\ +j\x19C\xd8x\x22\xeaVD\xa4[\xa9\xda\x90\xf0\xda\ +~|do\xc5\xbe\xad\xfa\x1e\xa0\xc5\xea\xfeqS\x07\ + \xd8\x86\x88\x8b\x04\xce\xc3\xa1\xce\xe69\x14vY\xd3\ +\x91n\xd9\xe0\x07V\xbd\x8a\xd8\x99\x90\xc6\x1f\xd1\xd7;\ +Ln\xbd\xce\xce\xd6\xfa\x08\x9f\x83\xd1n\x83?tY\ +?.4\xe4\xee\x92\x96\xc1/\xc2.Y\x07\xdb\xc1k\ +\xc15-\xd3\xa2?q\x8f+<\xec1\x07jS\xa8\ +\x8bN\x86\xbb\x0c\xee}X\x0c\xb9\x8d\xfd\x88\xf3s\xe0\ +N\x03\xe0eXul\xf4K\xf72\x93F\xed\xc6\xde\ +h\xd8#y\x9f\xed\xe3\x16%\x95\x1a\xd6&p\xa8u\ +\xfc:\xc2&\xba,\x15H:\xa2niY\xcf\xc7q\ +Z\xcaM\x19u\x11\x1c\x1a\xa0\xea\xfa\x091\x06\xc2f\ +_\xaf\xe8\x8b\x96\xfb\x0b|\x0bM\xf9u\x186D\x5c\ +\x96\xe5\xea\xbeB\xbd\xc9N\xd2\x92\xde\xc7\x9b\xe9\x07\xee\ +\x1ds\x8d\xd7\xb4\x81\x0d>@k\xccO\x0f\xe0\xfb\xcd\ +F{\xbb0]\xdb\xab\xeb\xf4\x8b\xfa$\xfa\x8d\xf3\xbf\ +b\xc7\x228\xe3\xc02ps\xe5\x12\x9dh5\xaf\xa2\ +\xe5\xe6+\xda%\x88\xf8\xfbX\xd3\x1e*\xfb\xc3q8\ +\x0e\x8e\xf6\xca\xdf\x22\xce\xfd\xff\x93\xc8\xff_{\xd1\xb3\ +%\xc6\x93>'\xae\x93\x82\x9a\xfc6j\xc2\xd5r\x80\ +>\x01\xde\xc1\xef\xb6\x03\xf3\xce\x90\x15\xdfno\xa5\x86\ +\xe5\xab\xdbc\xd2\xb5\xdc$\xbd\xc7\xcfA+\x9d\x01\x12\ +\x98_\x06J@\x12\xb5\xe5r\xbd-k}\xb6\xb3\xf8\ +\xeeY\xc7wg\x19\xdf;Eh\xcd$\xea\xd1\x07\xa8\ +\xcd\xdf\x14f\xa8\x80\xde\x10(\xcf\xd2\xfb\x98\x7f\x0f\xf3\ +#8\xbe\xfePG\xdb^\x82\x86\xf9}\xad_\xc9m\ +\x0d\xc9\x81\x9dqk\x17\xfaj\x0a\xcf|\x97\x9d\xa0\x18\ +\xbe\x0f\x12\xe8q\xcf\xf1\xb3\xb0\xff\x0c\xeeo\xe3}_\ +\x89Qz\x1a\xf5\xd2\x81o\x80O\x8d\xef\x0f\xfb5\xbe\ +N\xa9t\x04\xf3\xbfE\xed]\x85\xce\x8eCc\xc7s\ +\xa3\xf4l%>6\xeeE\xb0-\x83o\xb0\x0b\xd00\ +g\xa1a3\xc0\xddx\xaf\x9d\xffR\xa3M\x95\x9e\xc2\ +\xfc[\xe0H\xa4\x06\xe9'h\xe4\xa46B\xa7\xaaZ\ +t\x8e^`M\x9e\x99\xb2\xfc\x01\x1d\xba\x02\xed\xbb\x17\ +v;.\x9a\xbf\xef\xa8t\x1cz\xeb\x0e\xf7~h\xcb\ +\xeb\xd0w\xe5\x0d/\xb9\xebt\xc1y\xc4*\xcb\x1a2\ +\xea\xb1\xdf\x8ex\xe8h\xf5[a\x92^\x05\x7f\x12\xcf\ +|\x96\xf0\xd0\xe9\x98\x87\xb6\xa1\x8d\xbe_\xb9L\xcfT\ +c\xe6\xb2\x9e\x87\x16\xcb\xc6z\x94\xd2\xc6\x80\xe2\xda\xbf\ +\xfe\xf9\x19i\x0esw\xb0n\x17\xfe\xbcBG\xa0i\ +\xbe\x84\xc6(\xa3\xa7\x5c\x0d\xb9\xa8\x1d\x9a\xa33\xe2\x92\ +\xa2\xd0\x11\xa5\xe4\xa0\x94\x86\x86\xb8\x0d\x9f\x9e\xc7\x5c\x19\ +~\xbd\x89\xb9Q\xcc\xbd\x85\xebc\x86\xee\xa2S\x98{\ +\x17(\xa3\x17m\x01y\xf4\xe2\x22\xf4\xc8\x0d\xc4\xf7\x1c\ +\xe2\xf8\x17\xe2\xf9\x0b\xfa\xec\x17X\x9b5\x9c\xffZ\xfc\ +\x88^\xdb\xef\xef\xcaEz\x196|\x8c\xb9w\x81\x1f\ +\xb8\xc7\xb1\xcfB\x90\x05}\xea\x0d\xf4\xaf\xcf\xc1\xfd3\ +r\xe4\x06\xf2\xe3\x95F\xb9}\xc7EJ\xc2E\xc7c\ +\x97\xe8\x98\xe0m[\x9b\xf7\x0e\xb6\xb7Qn\xff\x97\xe3\ +o\x0b\x0c\xb3\x17\ +\x00\x00\x02N\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\x00\x00\x03\xe2\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\ +\ +\x00\x00\x03C\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\x00\x00\x02,\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\ +\ +\x00\x00\x05\xa3\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\x00\x00\x03>\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\x00\x00\x025\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\x00\x00\x013\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\x00\x00\x01z\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\x00\x00\x02q\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\ +\ +\x00\x00\x01\xd7\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\ +\x00\x00\x01\x10\ +\x00\ +\x00\x04Bx\xda\xc5\x93Qn\x830\x0c\x86\xafby\ +\xcf%)\xa0\x0aM\x84J}\xe8\x09\xb6\x03T4@\ +6\x9at!#p\xfb9\x1bt\xe3qZ\xc5\xa4H\ +\xb1\xad\xe8\xfb\x13\xfbO\xbe\x1f.-\xf4\xd2v\xcah\ +\x81\xdb\x88#H]\x9a\xb3\xd2\xb5\xc0\xe7\xa7\xe3&\xc3\ +}\x91w}\x0d^\x9d]#0\x89\x11\x1a\xa9\xea\xc6\ +}\xc5\xbd\x92\xfe`\x06\x81\x1c8\xa4\x19-\x84J\xb5\ +\xad@m\xb4D \xbe\xee\x046\xce]\x1f\x19\xf3\xde\ +G>\x89\x8c\xadY\xcc9g\x04\xc6\x22o\x95\x960\ +lI?E\x18i'\xc6\x10\x13?\xa4\xf1g\xda9\ +k^\xa5\xc0\x07\xcewiU\xcd\x85\xcd|\xab[!\ +\xb0\xca\xd3U`\xf7\xf6~\xb2\x12\xd9\xfa\xf8\x94/\xf9\ +!\xff\x8b\x80\x95\xa5\x03\xeap\xb2#\x1e\xe1p\x9eE\ +\xf6=\x0a\x0a-\x1d\x89\x97\xcd\xff\x95\xea\x8bQd\x81\ +\x8br\xd2\xfeTM\xffCtzj\xd8\xd6\x7f\xebZ\ +\xaa7\xe3\x04\x83\x8c\x93\x81\x86\xc90\xe3d\xa0\xbb8\ +3[\xf2\xb3\xfb\xe0\xc3\xef->\x00/\xe9K\x1d\ +\x00\x00\x03i\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\x00\x00\x02\xf5\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +\x00\x00\x02\xbf\ +<\ +?xml version=\x221.\ +0\x22 encoding=\x22UTF\ +-8\x22?>\ +" + +qt_resource_name = b"\ +\x00\x04\ +\x00\x06\xfa^\ +\x00i\ +\x00c\x00o\x00n\ +\x00\x05\ +\x00o\xa6S\ +\x00i\ +\x00c\x00o\x00n\x00s\ +\x00\x15\ +\x0c\x16\xe9G\ +e\x87\ +N\xf6Y9\x00-_\x00\x00_\x00f\x00o\x00l\x00d\x00e\x00r\x00-\x00o\x00p\x00e\x00n\ +\x00.\x00s\x00v\x00g\ +\x00\x11\ +\x04O\x8c\xc7\ +S\xbb\ +^\x95\x90\xe8\x00_\x00t\x00o\x00-\x00b\x00o\x00t\x00t\x00o\x00m\x00.\x00s\x00v\x00g\ +\ +\x00\x10\ +\x0d\xe5\xef\x87\ +h!\ +\x9a\x8c\x00_\x00c\x00h\x00e\x00c\x00k\x00-\x00o\x00n\x00e\x00.\x00s\x00v\x00g\ +\x00\x10\ +\x00\xa1\xff\xa7\ +Qs\ +\x95\xed\x00_\x00c\x00l\x00o\x00s\x00e\x00-\x00o\x00n\x00e\x00.\x00s\x00v\x00g\ +\x00\x11\ +\x0c\xda\xf9g\ +\x00l\ +\x00a\x00b\x00e\x00l\x00m\x00e\x00_\x003\x002\x00x\x003\x002\x00.\x00p\x00n\x00g\ +\ +\x00\x0b\ +\x05\x9c\x97\xc7\ +R\x17\ +\x88h\x00_\x00l\x00i\x00s\x00t\x00.\x00s\x00v\x00g\ +\x00\x09\ +\x06\xe6\xa9\x87\ +b\x11\ +v\x84\x00_\x00m\x00e\x00.\x00s\x00v\x00g\ +\x00\x0d\ +\x0d\x17\x1b\x07\ +\x00V\ +\x00O\x00C\x00_\x003\x002\x00x\x003\x002\x00.\x00p\x00n\x00g\ +\x00\x16\ +\x04\xf6\x11\xe7\ +O \ +Q\xfa\x003\x00_\x00e\x00f\x00f\x00e\x00r\x00e\x00n\x00t\x00-\x00t\x00h\x00r\x00e\ +\x00e\x00.\x00s\x00v\x00g\ +\x00\x11\ +\x05\xa5\x86'\ +R \ +\x96d\x00_\x00d\x00e\x00l\x00e\x00t\x00e\x00-\x00t\x00w\x00o\x00.\x00s\x00v\x00g\ +\ +\x00\x0c\ +\x0d3%\x07\ +N\x0a\ +N\x00ke\x00_\x00b\x00a\x00c\x00k\x00.\x00s\x00v\x00g\ +\x00\x08\ +\x05\xa2B\xdf\ +\x00c\ +\x00o\x00c\x00o\x00.\x00i\x00c\x00o\ +\x00\x0c\ +\x06:\xda\x87\ +N\x0b\ +N\x00ke\x00_\x00n\x00e\x00x\x00t\x00.\x00s\x00v\x00g\ +\x00\x0e\ +\x099\xda\xe7\ +e>\ +Y'\x00_\x00z\x00o\x00o\x00m\x00-\x00i\x00n\x00.\x00s\x00v\x00g\ +\x00\x0c\ +\x0a\x9f\x02G\ +\x00i\ +\x00n\x00s\x00t\x00a\x00n\x00c\x00e\x00.\x00p\x00n\x00g\ +\x00\x0c\ +\x0f7\x8d\x07\ +_\x00\ +Qs\x00_\x00p\x00o\x00w\x00e\x00r\x00.\x00s\x00v\x00g\ +\x00\x0b\ +\x02\xa2p\xa7\ +w<\ +w[\x00_\x00e\x00y\x00e\x00s\x00.\x00s\x00v\x00g\ +\x00\x0c\ +\x05\xce'\xe7\ +\x00s\ +\x00e\x00m\x00a\x00n\x00t\x00i\x00c\x00.\x00p\x00n\x00g\ +\x00\x0d\ +\x01\xeed\x87\ +R \ +\x96d\x00_\x00d\x00e\x00l\x00e\x00t\x00e\x00.\x00s\x00v\x00g\ +\x00\x12\ +\x08\x89\x84\xe7\ +R\x17\ +\x88h\x00_\x00l\x00i\x00s\x00t\x00-\x00m\x00i\x00d\x00d\x00l\x00e\x00.\x00s\x00v\ +\x00g\ +\x00\x0b\ +\x03\xe5\x96\xa7\ +O\xdd\ +[X\x00_\x00s\x00a\x00v\x00e\x00.\x00s\x00v\x00g\ +\x00\x0d\ +\x00XW_\ +\x00M\ +\x00_\x00F\x00a\x00v\x00i\x00c\x00o\x00n\x00.\x00i\x00c\x00o\ +\x00\x15\ +\x0bm\xc7'\ +\x7f\x16\ +\x8f\x91e\x87N\xf6\x00_\x00f\x00i\x00l\x00e\x00-\x00e\x00d\x00i\x00t\x00i\x00n\x00g\ +\x00.\x00s\x00v\x00g\ +\x00\x13\ +\x0bm\xc3g\ +\x95.\ +v\xd8\x00_\x00k\x00e\x00y\x00b\x00o\x00a\x00r\x00d\x00-\x00o\x00n\x00e\x00.\x00s\ +\x00v\x00g\ +\x00\x0a\ +\x09\xe7 \x07\ +qg\ +rG\x00_\x00p\x00i\x00c\x00.\x00s\x00v\x00g\ +\x00\x16\ +\x07\xf2\xb9\xe7\ +O \ +Qe\x003\x00_\x00a\x00f\x00f\x00e\x00r\x00e\x00n\x00t\x00-\x00t\x00h\x00r\x00e\ +\x00e\x00.\x00s\x00v\x00g\ +\x00\x12\ +\x01\xf3\xd8\xa7\ +\x8b\xbe\ +\x7fn\x00_\x00s\x00e\x00t\x00t\x00i\x00n\x00g\x00-\x00t\x00w\x00o\x00.\x00s\x00v\ +\x00g\ +\x00\x1d\ +\x05\xba\x83\xc7\ +\x8fl\ +cbe\x87N\xf6\x001\x00_\x00f\x00i\x00l\x00e\x00-\x00c\x00o\x00n\x00v\x00e\x00r\ +\x00s\x00i\x00o\x00n\x00-\x00o\x00n\x00e\x00.\x00s\x00v\x00g\ +\x00\x0f\ +\x0a\xf8C\x87\ +\x7f)\ +\x5c\x0f\x00_\x00z\x00o\x00o\x00m\x00-\x00o\x00u\x00t\x00.\x00s\x00v\x00g\ +\x00\x10\ +\x05d,g\ +Qh\ +[\xbd\x00_\x00f\x00u\x00l\x00l\x00w\x00i\x00d\x00t\x00h\x00.\x00s\x00v\x00g\ +\x00\x0b\ +\x0b\x19\xb3\x87\ +\x7f\x16\ +\x8f\x91\x00_\x00e\x00d\x00i\x00t\x00.\x00s\x00v\x00g\ +\x00\x11\ +\x03@\xb4g\ +O\xdd\ +[Xxlv\xd8\x00_\x00s\x00a\x00v\x00e\x00-\x00o\x00n\x00e\x00.\x00s\x00v\x00g\ +\ +\x00\x0e\ +\x02\xb9B\x87\ +S\xbb\ +\x98v\x90\xe8\x00_\x00t\x00o\x00-\x00t\x00o\x00p\x00.\x00s\x00v\x00g\ +\x00\x0d\ +\x04\x8d\xa3g\ +\x95\x1a\ +p\xb9\x00_\x00a\x00n\x00c\x00h\x00o\x00r\x00.\x00s\x00v\x00g\ +\x00\x10\ +\x0d\x82\xebg\ +\x7f\xfb\ +\x8b\xd1\x00_\x00t\x00r\x00a\x00n\x00s\x00l\x00a\x00t\x00e\x00.\x00s\x00v\x00g\ +\x00 \ +\x0dE\x1a\xe7\ +\x8fl\ +cbe\x87N\xf6Y9\x001\x00_\x00f\x00o\x00l\x00d\x00e\x00r\x00-\x00c\x00o\x00n\ +\x00v\x00e\x00r\x00s\x00i\x00o\x00n\x00-\x00o\x00n\x00e\x00.\x00s\x00v\x00g\ +\x00\x12\ +\x01\xac\xf2\xe7\ +N\x00\ +[\xf9N\x00\x00_\x00o\x00n\x00e\x00-\x00t\x00o\x00-\x00o\x00n\x00e\x00.\x00s\x00v\ +\x00g\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x0e\x00\x02\x00\x00\x00%\x00\x00\x00\x03\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x02\xe8\x00\x01\x00\x00\x00\x01\x00\x00E\xde\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf5\ +\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x01\x00\x00\x06\x22\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf8\ +\x00\x00\x05V\x00\x00\x00\x00\x00\x01\x00\x00qH\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf7\ +\x00\x00\x02\x82\x00\x00\x00\x00\x00\x01\x00\x00;\x85\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf9\ +\x00\x00\x03\xb0\x00\x00\x00\x00\x00\x01\x00\x00W\xa7\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfd\ +\x00\x00\x02H\x00\x00\x00\x00\x00\x01\x00\x004\xf0\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfb\ +\x00\x00\x04\xa8\x00\x00\x00\x00\x00\x01\x00\x00g\xf3\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfa\ +\x00\x00\x04\x80\x00\x00\x00\x00\x00\x01\x00\x00e~\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf8\ +\x00\x00\x02\xcc\x00\x00\x00\x00\x00\x01\x00\x00B\x10\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf8\ +\x00\x00\x00N\x00\x00\x00\x00\x00\x01\x00\x00\x01\xca\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfa\ +\x00\x00\x04\xca\x00\x01\x00\x00\x00\x01\x00\x00i\xce\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfd\ +\x00\x00\x01>\x00\x00\x00\x00\x00\x01\x00\x00\x1f\xef\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf7\ +\x00\x00\x04>\x00\x00\x00\x00\x00\x01\x00\x00b\xc9\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf8\ +\x00\x00\x00\xea\x00\x00\x00\x00\x00\x01\x00\x00\x12\xa0\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf9\ +\x00\x00\x01\xb6\x00\x00\x00\x00\x00\x01\x00\x00%\xee\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf5\ +\x00\x00\x01p\x00\x00\x00\x00\x00\x01\x00\x00\x22\x1e\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf9\ +\x00\x00\x03\xda\x00\x00\x00\x00\x00\x01\x00\x00]N\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfd\ +\x00\x00\x02d\x00\x00\x00\x00\x00\x01\x00\x008R\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf6\ +\x00\x00\x01\xcc\x00\x00\x00\x00\x00\x01\x00\x00*p\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf7\ +\x00\x00\x01\x06\x00\x00\x00\x00\x00\x01\x00\x00\x15\xad\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfa\ +\x00\x00\x03~\x00\x00\x00\x00\x00\x01\x00\x00Uw\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf7\ +\x00\x00\x02\xa2\x00\x00\x00\x00\x00\x01\x00\x00>\x1e\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf8\ +\x00\x00\x01\xea\x00\x00\x00\x00\x00\x01\x00\x00,W\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfa\ +\x00\x00\x03d\x00\x00\x00\x00\x00\x01\x00\x00R0\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfb\ +\x00\x00\x02\x0c\x00\x00\x00\x00\x00\x01\x00\x00/\x04\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf6\ +\x00\x00\x04\x1a\x00\x00\x00\x00\x00\x01\x00\x00`\x90\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfc\ +\x00\x00\x04d\x00\x00\x00\x00\x00\x01\x00\x00d\x00\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfc\ +\x00\x00\x038\x00\x00\x00\x00\x00\x01\x00\x00NJ\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfd\ +\x00\x00\x03\x08\x00\x00\x00\x00\x00\x01\x00\x00K\xf8\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfc\ +\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfb\ +\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x08n\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf6\ +\x00\x00\x01\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x18\xb7\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf5\ +\x00\x00\x01\x98\x00\x00\x00\x00\x00\x01\x00\x00$\x06\ +\x00\x00\x01\x8a\x81\xd2\xc6\xf7\ +\x00\x00\x05\x10\x00\x00\x00\x00\x00\x01\x00\x00nO\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfd\ +\x00\x00\x04\xea\x00\x00\x00\x00\x00\x01\x00\x00j\xe2\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfc\ +\x00\x00\x00v\x00\x00\x00\x00\x00\x01\x00\x00\x03\xa0\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfb\ +\x00\x00\x02*\x00\x00\x00\x00\x00\x01\x00\x002_\ +\x00\x00\x01\x8a\x81\xd2\xc6\xfa\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/main.py b/main.py index 07a2a7b..4d7cfab 100644 --- a/main.py +++ b/main.py @@ -6,7 +6,6 @@ from PyQt5 import QtWidgets import os import sys os.environ['SAM_ANN_BASE_DIR'] = os.path.dirname(os.path.abspath(__file__)) -sys.path.insert(0, os.path.join(os.environ['SAM_ANN_BASE_DIR'], 'lib')) from sam_ann import MainWindow diff --git a/requirements.txt b/requirements.txt index 20ffcb5..b79b781 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,11 +1,8 @@ imgviz==1.2.6 mahotas==1.4.13 numpy==1.24.3 -opencv_python_headless==4.5.3.56 +opencv_python==4.5.3.56 Pillow==9.2.0 PyQt5==5.15.7 PyYAML==6.0 -torch==1.8.1 -torchvision==0.9.1 -pycocotools -timm \ No newline at end of file +pycocotools \ No newline at end of file diff --git a/sam_ann/isat.yaml b/sam_ann/isat.yaml index f033f5f..673acb6 100644 --- a/sam_ann/isat.yaml +++ b/sam_ann/isat.yaml @@ -20,6 +20,6 @@ label: name: cake - color: '#5c3566' name: fence -language: en +language: zh mask_alpha: 0.7 vertex_size: 2 diff --git a/sam_ann/widgets/mainwindow.py b/sam_ann/widgets/mainwindow.py index fb2afad..5f52ad0 100644 --- a/sam_ann/widgets/mainwindow.py +++ b/sam_ann/widgets/mainwindow.py @@ -130,7 +130,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.statusbar.showMessage("Segment anything only use the 3 dim with shape {} .".format(image_data.shape)) else: self.statusbar.showMessage("Segment anything don't support the image with shape {} .".format(image_data.shape)) - + self.image_changed = False self.show_image(self.current_index) # if self.current_index is not None: # self.image_changed = False @@ -360,6 +360,14 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): return if not self.image_changed: self.scene.cancel_draw() + self.actionSegment_anything.setEnabled(self.use_segment_anything) + self.actionPolygon.setEnabled(True) + self.actionSave.setEnabled(True) + self.actionBit_map.setEnabled(True) + self.actionBackspace.setEnabled(True) + self.actionFinish.setEnabled(True) + self.actionCancel.setEnabled(True) + self.actionVisible.setEnabled(True) return try: self.scene.cancel_draw()