Compare commits

...

330 Commits

Author SHA1 Message Date
ef3409419a 更新README 2024-02-05 09:05:30 +08:00
6aed0296ee 忘记修改版本号了 2024-02-04 11:06:33 +08:00
022e2f1b53 小调 2024-02-04 11:05:09 +08:00
27cf5b077a 2.2.0.1 2024-02-04 11:02:19 +08:00
c8e0d5042e 2.2.0 2024-01-30 11:19:53 +08:00
82b352d827 新增Via安装功能 2024-01-30 10:15:14 +08:00
e94ebecfa2 修复部分系统在使用程序的一些功能时发生崩溃的问题 2024-01-30 09:57:46 +08:00
123fadd7ac 新增QQ群入口 2024-01-30 09:21:36 +08:00
3fbfb38a53 新增ARM架构非飞腾CPU识别 2024-01-29 21:27:47 +08:00
83e34a983c 调整关于窗口 2024-01-29 20:41:37 +08:00
53b16c9d35 修改关于窗口背景 2024-01-29 19:30:05 +08:00
4c940403bd 新增赞赏页面 2024-01-29 19:26:54 +08:00
f82d767a19 修复 deepin 23 安装的 APK 无法正常在启动器显示图标的问题 2024-01-29 19:17:20 +08:00
d385fdd64c 适配deepin23 2024-01-29 18:55:14 +08:00
ce15113a7a 新增运行aapt脚本 2024-01-29 18:33:14 +08:00
23179c0266 精简aapt程序包 2024-01-29 18:26:52 +08:00
b8dde0ff52 进一步补充aapt 2024-01-21 17:19:28 +08:00
3df126d700 添加aapt包 2024-01-21 13:31:46 +08:00
e045169d99 添加bwrap文件以准备支持deepin23 2024-01-21 13:28:06 +08:00
414681fc0b 优化安装量统计机制 2023-11-11 10:08:09 +08:00
691d140db5 修改README链接 2023-08-17 13:59:16 +08:00
96cf7dfe74 2.1.2 2023-08-14 17:03:00 +08:00
576470f70a 引导用户到Gitee反馈bug 2023-08-14 16:55:12 +08:00
625e456e6b 修复deepin23缺失pil的问题 2023-08-14 16:46:20 +08:00
Bail
2a17547da3 修复添加应用图标时activity名称错误的问题 2023-07-28 17:58:47 +08:00
Bail
fb46147547 修复 #I6ZRZX
根据对报错信息的分析,我认为这个问题可能是由于程序退出时由于updatekiller.py已将pid文件删除,导致要退出的程序在atexit模块注册的函数要删除记录到pid时找不到pid文件,导致报错。
但经过复现尝试,发现不是杀进程时触发的。因为杀进程时被杀的进程不会执行atexit。
由于已更新至最新版本,无法通过更新进行复现。所以具体报错原因尚未探究清楚,问题尚未完全修复。
2023-07-18 21:57:53 +08:00
d37c7514f3 修改deb打包格式 2023-07-10 09:40:45 +08:00
7fe6187f98 修复bug提交问题 2023-07-09 06:41:43 +08:00
0bbb560b48 auto building 2023-07-06 15:36:29 +08:00
d583c396b1 忘改control了 2023-07-06 11:48:59 +08:00
2096022bd4 修改README 2023-07-06 11:39:08 +08:00
e3c342c07b 修复postinst在无网状态下导致uengine-loading-ubuntu出错的问题 2023-07-06 11:34:58 +08:00
ee6c7c45d8 postrm 2023-07-06 11:28:09 +08:00
76d5d60c2b 2.1.1 2023-07-06 11:16:36 +08:00
00dd3283e9 添加更新内容 2023-07-06 11:00:31 +08:00
b2998ffe80 优化postinst 2023-07-06 10:48:21 +08:00
579663c32c 修改dtk获取的url 2023-07-06 10:45:30 +08:00
717284ad14 修复UEngine在debian12无法正常开启的问题 2023-07-06 10:44:45 +08:00
197f0a9dca 修复 https://gitee.com/gfdgd-xi/uengine-runner/issues/I6B6C8 的问题 2023-06-25 12:02:30 +08:00
b1e455ca48 治标 2023-06-25 11:57:34 +08:00
86bc122c5f 修复在DEEPIN/UOS程序菜单检查到UENGINE不存在但是无法安装的问题 2023-06-23 16:51:13 +08:00
0ca2e4f01b 修改README 2023-06-03 22:09:57 +08:00
4e14f35021 修改README 2023-06-03 20:21:41 +08:00
10d94886a5 修复缺少zentiy依赖的问题 2023-06-03 17:33:53 +08:00
e57ac28cde Merge branch 'main' of https://gitee.com/gfdgd-xi/uengine-runner 2023-05-27 22:43:51 +08:00
5853fc68c2 修改README 2023-05-27 22:43:41 +08:00
aa039277a9 Repair UEngine Installer System Check Problem 2023-05-21 18:28:23 +08:00
d759f81905 修改程序文案 2023-05-13 15:04:11 +08:00
a0b673afb0 修复README格式问题 2023-05-13 13:32:52 +08:00
b9fd45980f 修改README 2023-05-13 13:21:16 +08:00
31aeb66cd4 update 2023-05-13 13:14:30 +08:00
896214d2b7 新增更新内容 2023-05-10 22:25:34 +08:00
6df4263107 更新更新内容 2023-05-10 22:20:36 +08:00
373bc98869 修改SuperSU UEngine地址 2023-05-10 21:09:17 +08:00
2a9df20b5c 修改源 2023-05-10 21:05:05 +08:00
0e4afd90d9 修改url至jihulab 2023-05-06 21:35:01 +08:00
0dc3a079ee 新增加载ashmem模块 2023-05-03 22:37:50 +08:00
898f873cec 新增安装完成的提示对话框 2023-05-03 09:27:12 +08:00
de79106d61 优化installer 2023-05-03 09:23:04 +08:00
543571d66b 优化uengine-loading-binder 2023-05-03 09:00:06 +08:00
f2acfcc4be 修改版本号 2023-05-02 21:14:16 +08:00
5a0aa5160c 取消只能在ubuntu安装的限制 2023-05-02 19:40:05 +08:00
下雨中gfd
abf6d4903f update new-deb-build/DEBIAN/control.
Signed-off-by: 下雨中gfd <gfdgdxi@foxmail.com>
2023-05-02 10:43:34 +00:00
rain-gfd
5bcb05142c change daemon 2023-05-02 17:30:06 +08:00
rain-gfd
b358b56974 change 2023-05-02 17:26:02 +08:00
rain-gfd
ef1b7800c6 repair error coding grammar 2023-05-02 17:21:13 +08:00
rain-gfd
0b2a8e7821 add sudo command 2023-05-02 17:13:26 +08:00
rain-gfd
9608ce6bfc url error 2023-05-02 17:03:24 +08:00
rain-gfd
0e21b7187d repair check kernel problem 2023-05-02 17:00:20 +08:00
b277bb25b4 更改安装包地址 2023-05-02 15:10:01 +08:00
35416ce12b 修改makefile 2023-05-02 14:07:11 +08:00
8ccd721c98 修改2048位置 2023-05-02 13:58:56 +08:00
0f6f24aa95 新增资源解压检查 2023-05-02 13:41:33 +08:00
6bdfd5a9ef 新增加载binder免密 2023-05-02 13:38:06 +08:00
27817c824e run_daemon加载binder功能 2023-05-02 13:22:17 +08:00
06c763d862 更新run_daemon 2023-05-02 13:12:47 +08:00
4937e60333 新增index文件 2023-05-02 13:10:48 +08:00
6775f5433d 更换shell地址 2023-05-02 13:09:24 +08:00
eeeff8429a 添加daemon 2023-05-02 13:07:24 +08:00
1d3ca4bf2d 新增加载新版内核的binder功能 2023-05-02 13:03:02 +08:00
59e2ccfd63 开始尝试安装器不强制要求安装内核 2023-05-02 12:58:06 +08:00
f716c22e76 修改接口地址 2023-04-30 14:06:41 +08:00
9c86d23d31 换源 2023-04-30 13:26:22 +08:00
4e3b49007d 更新帮助 2023-04-29 16:39:28 +08:00
0a2c8bbdab 更新md 2023-04-29 16:37:36 +08:00
0c1ab111a6 修改帮助标题 2023-04-29 16:35:24 +08:00
8092d608c3 end 2023-04-29 16:19:10 +08:00
c03191c50d 提交 2023-04-29 15:57:25 +08:00
e966ea673d 修改README版本号 2023-04-29 15:55:43 +08:00
a28bf45899 修改README+无法启动UEngine脚本移除功能 2023-04-29 15:54:32 +08:00
c2abc70e9e 2.0.1 2023-04-29 15:47:08 +08:00
b1b29206ce 修改2.0.1更新内容 2023-04-29 15:35:45 +08:00
7ea1d83d32 修改版本号 2023-04-29 15:22:11 +08:00
7d912978ce 新增构建时间 2023-04-29 15:21:43 +08:00
d7d01e2216 更新帮助 2023-04-24 22:02:38 +08:00
4623c16968 修改 2023-04-24 21:53:08 +08:00
452465d525 移除 2023-04-24 21:51:16 +08:00
7f13fb5c64 小改 2023-04-24 21:46:08 +08:00
500264f869 修改 2023-04-24 21:28:59 +08:00
e2bd06111c 继续移除 2023-04-24 21:20:28 +08:00
fbb5424135 修改作者信息 2023-04-19 22:07:32 +08:00
15ec74b3f3 修改作者信息 2023-04-19 22:06:21 +08:00
0f08c44e11 修改README 2023-04-19 22:01:56 +08:00
fe1d41e18a 移除文件夹 2023-04-19 21:58:01 +08:00
0b92a1411c 添加2048彩蛋 2023-04-19 21:57:17 +08:00
f20dc0d4f8 删除无用文件 2023-04-16 09:02:22 +08:00
d9c61a00dd 更新README 2023-04-16 08:59:22 +08:00
cf2742f961 new 2023-03-11 12:09:51 +08:00
7b3f8e2dca Merge branch 'main' of https://gitee.com/gfdgd-xi/uengine-runner into main 2023-03-11 11:45:25 +08:00
de6ecbe34c 移除pyc 2023-03-11 11:45:19 +08:00
1a05af36d6 !9 修复uengine-loading-ubuntu软链接残留问题
Merge pull request !9 from Bail/N/A
2023-03-02 14:13:52 +00:00
Bail
ad3fb3c5c7 修复uengine-loading-ubuntu软链接残留问题
Signed-off-by: Bail <2915289604@qq.com>
2023-02-28 15:16:15 +00:00
091ed12f53 新增移除在 Ubuntu 上安装的 UEngine 及其附属脚本 2023-02-11 21:57:54 +08:00
eace52cc35 修复postinst 2023-02-11 21:47:38 +08:00
00e306208b 新增检测移除功能 2023-02-11 19:43:24 +08:00
7b8af878ab 新增环境检测 2023-02-11 19:39:41 +08:00
e0aed7a1b5 安装器忽略非X86架构 2023-02-11 18:45:53 +08:00
59de052531 修复uengine installer识别问题 2023-02-11 18:42:47 +08:00
06e6ffa470 更新公告 2023-02-11 14:39:51 +08:00
d0dccbdae3 Merge branch 'main' of https://gitee.com/gfdgd-xi/uengine-runner into main 2023-02-08 22:47:51 +08:00
4efb9e49e8 更新公告 2023-02-08 22:47:42 +08:00
Allen
5ae1578902 update README.md.
Signed-off-by: Allen <2849413304@qq.com>
2023-01-25 00:50:28 +00:00
Allen
3ba9689387 update README.md.
Signed-off-by: Allen <2849413304@qq.com>
2023-01-25 00:48:01 +00:00
Allen
2d5b9598f8 update README.md.
Signed-off-by: Allen <2849413304@qq.com>
2023-01-25 00:47:08 +00:00
a154817071 !8 漏了个提交
Merge pull request !8 from gfdgd xi/main
2023-01-24 07:11:47 +00:00
d58b319cc8 !7 【未完成,请勿合并】修复商店换源问题
Merge pull request !7 from Bail/fixChangeSource
2023-01-24 07:08:58 +00:00
911cca5373 修复action的对钩问题 2023-01-24 15:08:36 +08:00
2da4dcfd6b 重写 2023-01-24 14:25:07 +08:00
94f7ed3487 赞赏逻辑推翻重写 2023-01-24 14:19:53 +08:00
Bail
ca6ccedb57 基本修复商店换源问题
现在对钩位置还是没有修改,只是防止了urlSources切换
2023-01-23 19:36:50 +08:00
Bail
0430ac3da2 微型应用商店适配了更新关闭进程 2023-01-23 18:46:08 +08:00
6ab330418e 更新README 2023-01-21 22:20:43 +08:00
6fc64a1f23 修改程序更新内容 2023-01-21 14:09:06 +08:00
b0fc890af8 修复ubuntu无快捷方式问题 2023-01-21 14:01:12 +08:00
0a8f3b384f 修复uengine installer的部分问题 2023-01-21 13:14:35 +08:00
4065f19fa9 新增公告 2023-01-21 09:52:42 +08:00
010722bd9b 新增公告 2023-01-21 09:52:00 +08:00
6196d4a7a4 程序关于窗口新增 GPLV3 协议显示 2023-01-21 09:34:57 +08:00
30c833c6b9 更新教程截图 2023-01-21 09:22:25 +08:00
f98eae1d70 赞赏功能 2023-01-20 21:05:56 +08:00
226838f5a7 更新Help 2023-01-20 20:08:36 +08:00
aeb3bb0310 优化脚本 2023-01-19 22:21:47 +08:00
a1d87a6365 修改提示语 2023-01-19 13:55:54 +08:00
f6aae5ab2b 更新谢明列表 2023-01-19 13:51:13 +08:00
0fb2e24047 修改control文件 2023-01-18 18:58:05 +08:00
cb23aedbfa 调整control文件内容 2023-01-18 18:55:45 +08:00
00a5d148f1 2.0.0基本完成 2023-01-18 18:53:18 +08:00
c4c4ee8722 新增图标 2023-01-18 18:46:03 +08:00
f30560bd6e 新增高级打包器 2023-01-18 18:29:02 +08:00
fc19480aa1 修复一些细节错误 2023-01-18 15:55:10 +08:00
8d4da8c4cf 更新postrm 2023-01-18 15:50:04 +08:00
e7e391600b a 2023-01-18 15:42:49 +08:00
3f756fd680 程序更新功能 2023-01-18 15:29:44 +08:00
ef0f359fa5 使用多终端 2023-01-18 15:09:57 +08:00
1b6b9e61c4 更新接口 2023-01-18 13:58:56 +08:00
ca7ec5e7ad UEngine 安装器支持安装使用 SuperSU Root 的镜像 2023-01-18 13:46:28 +08:00
a5104f8d03 标题特色 2023-01-18 13:43:43 +08:00
1a2e6e1b8f 新增程序公告 2023-01-18 13:39:08 +08:00
9dd677cff5 修复一些bug 2023-01-18 12:24:16 +08:00
20517ecdca 新增彩蛋 2023-01-18 12:16:08 +08:00
db6cc69be3 更新postinst和postrm
新文件:   com.gitee.uengine.runner.spark.deb
2023-01-16 13:43:55 +08:00
4862b7c464 Add Pages 2023-01-15 22:44:42 +08:00
0802cff1d5 添加脚本 2023-01-15 22:33:56 +08:00
1caf7fc577 Repair Desktop File Problem 2023-01-15 16:55:29 +08:00
1939b7afa1 Update UEngine Installer 2023-01-15 16:50:11 +08:00
940014952f INSTALLER支持安装ROOT镜像 2023-01-15 10:08:29 +08:00
f3d1a1e932 更新版本信息 2023-01-14 22:29:19 +08:00
167f286c88 新增入口 2023-01-14 18:02:09 +08:00
d8ddf03094 新增评分入口 2023-01-14 14:15:37 +08:00
b025cb0095 修改论坛地址 2023-01-14 14:10:50 +08:00
6bd0b0d624 初步添加程序评分功能 2023-01-14 13:55:25 +08:00
810cedb117 更新AutoConfig.py 2023-01-14 10:03:32 +08:00
54df9ae1cb 修复配置脚本解释器问题 2023-01-13 21:27:15 +08:00
41887ef2a2 修复安装器一些问题 2023-01-13 19:00:40 +08:00
201b46d8b4 change part 2023-01-13 16:07:02 +08:00
04a5b76181 change-file-mode 2023-01-13 16:03:25 +08:00
f41036441c 更新Makefile 2023-01-12 22:29:12 +08:00
8b3a95dbfd 移除req库 2023-01-12 22:18:25 +08:00
413a32b453 自动配置脚本 For UEngine 运行器初步 2023-01-12 22:16:52 +08:00
c95112ab09 补加Makefile 2023-01-12 22:04:06 +08:00
d92b7e7626 实现守护脚本开机自启动 2023-01-12 21:33:21 +08:00
ffdedddb27 更新 2023-01-12 19:12:52 +08:00
271eef3d2a 更新注释 2023-01-12 18:59:29 +08:00
9e00e622b7 Repair UEngine Install APK Bad On Ubuntu 2023-01-12 13:11:13 +08:00
f31ababaa9 修复uengine-installer语法错误 2023-01-11 11:43:00 +08:00
3f9a3a7b9f Merge branch 'main' of https://gitee.com/gfdgd-xi/uengine-runner 2023-01-10 17:48:24 +08:00
9aafc85f2f 更新Ubuntu上UEngine版本,并支持在Wayland下运行 2023-01-10 17:48:01 +08:00
b459ee6db0 !6 解决更新时需要关闭所有python应用的问题
此前程序更新时需要关闭所有python应用。我的这次改动原理是将每个进程的pid记录下来,更新时将其统一关闭。
主要代码在updatekiller.py文件中,其他文件的改动是为了适配这个文件,用于记录pid。此外,mainwindow.py还适配了更新时的操作。
目前的pid文件位于/tmp/uengine-runner.pid。
手动运行(程序运行后手动执行updatekiller.py)测试通过。由于没有发布更新,我无法进行完整测试。
我修改了部分文案,包括:

    更新临时脚本的输出提示(第1138行)
    更新按钮(第1103行)
    Makefile文件(用于将updatekiller.py添加到安装包中)

可能有些小地方没有考虑到。

(我用的编辑器是IDLE,可能和你的不一样。它会在每个文件末尾自动加上换行符,而且无法删除。)
2023-01-01 04:52:10 +00:00
Bail
3dfa0f37d1 更新临时脚本修改为带参数的路径 2023-01-01 12:44:19 +08:00
Bail
d37c400c08 解决更新时需要关闭所有python应用的问题 2023-01-01 12:16:31 +08:00
596eaf689f 更新Makefile 2022-12-18 19:23:14 +08:00
2b99554e02 README 2022-12-18 19:18:36 +08:00
37340dd3e9 1.8.3 2022-12-18 19:17:04 +08:00
6a22b1c170 更换旧版的getxml 2022-12-18 18:53:21 +08:00
951f41d57e 1.8.3 2022-12-18 18:48:30 +08:00
33be2db48f 修复奇怪问题 2022-12-18 18:00:19 +08:00
1d7bd94908 修复部分无法正确获取程序中文名和 Activity 的问题 2022-12-14 22:11:50 +08:00
Allen
ee49dcb19e !5 README美化&文件名修改
Merge pull request !5 from oieryrn/main
2022-12-14 02:15:49 +00:00
ea813fcc37 更新Makefile文件 2022-12-04 19:33:06 +08:00
oieryrn
2485438303 update README.md.
Signed-off-by: oieryrn <oieryrn@163.com>
2022-11-29 04:53:07 +00:00
oieryrn
b5e7884913 美化README 2022-11-29 12:00:06 +08:00
oieryrn
cee4ab77e2 添加README中star与fork的tag 2022-11-29 11:44:38 +08:00
oieryrn
efacc353d7 添加README中star与fork的tag 2022-11-29 11:44:01 +08:00
oieryrn
144c030036 修正README和desktop文件名 2022-11-29 11:11:04 +08:00
b028bbd8fa 更新README 2022-11-29 08:12:01 +08:00
a5a06377a2 1.8.2complete 2022-11-28 22:25:09 +08:00
041f5bda39 Merge branch 'main' of https://gitee.com/gfdgd-xi/uengine-runner into main 2022-11-28 22:10:59 +08:00
ab3693c90a 1.9.0基本完成 2022-11-28 22:10:56 +08:00
a7595ff304 !3 update README.md.
Merge pull request !3 from oieryrn/N/A
2022-11-28 14:08:36 +00:00
777ff39f69 修复打包器无参数问题 2022-11-28 21:43:27 +08:00
oieryrn
ccfdf94342 update README.md.
抖音极速版没有官网,所以放了抖音官网下载
Hyperbowl是电脑游戏,如果是手机版应该是HyperBowl Classic,但没官网
另外在文件中的uengine-install (1).desktop是不是名字错了,应该是uengine-install.desktop吧...
2022-11-28 03:36:50 +00:00
70c687d862 !2 【轻量级 PR】:update README.md.
Merge pull request !2 from oieryrn/N/A
2022-11-28 03:04:42 +00:00
oieryrn
07d89f2605 update README.md.
加入了几个测试生成图标软件的地址

Signed-off-by: oieryrn <oieryrn@163.com>
2022-11-28 03:03:25 +00:00
gfdgd xi
501028ea30 Merge pull request #14 from BailPlus/main
修复Python主版本号判断时潜在的问题
2022-11-22 18:58:59 +08:00
Bail
fed7271ff4 修复Python主版本号判断时潜在的问题 2022-11-22 16:44:07 +08:00
34c3cd31d1 重新恢复uengine-installer For Ubuntu 2022-09-10 18:42:42 +08:00
1357a1be41 修复postrm 2022-09-10 18:33:31 +08:00
474babff87 修复'添加UEngine应用快捷方式出现问题'的问题 2022-09-10 18:29:35 +08:00
daa42d637c README 2022-09-03 22:23:07 +08:00
97b05ea056 增加Python判断 2022-09-03 19:20:12 +08:00
a9954f611b deb包提交 2022-09-03 18:40:25 +08:00
gfdgd xi
76d850b318 Merge pull request #11 from BailPlus/main
修复生成root镜像的bug
2022-09-03 18:30:31 +08:00
120041c2da 1.8.1-1初步 2022-09-03 18:25:18 +08:00
Bail
3a617e1bf3 Merge branch 'gfdgd-xi:main' into main 2022-09-03 16:50:42 +08:00
107a5c4396 修复依赖缺失问题 2022-09-03 09:34:09 +08:00
注意用户
56eaff9dfb Bail修改:
将以下5个函数的deepin-terminal的"-C"参数改为"-e",
解决了BuildRootUengineImage()函数未输入密码自动回车的bug
2022-08-30 22:06:56 +08:00
eb67bbd445 更新README 2022-08-30 21:56:18 +08:00
05eefcfe9b UEngine运行器1.8.1 2022-08-30 21:26:04 +08:00
531690fa4a 修复UEngine运行器路径带空格无法安装的问题 2022-08-29 12:58:30 +08:00
c00c51e69c 改README 2022-08-21 10:41:04 +08:00
6e39f85da2 修改帮助文档 2022-08-21 10:26:45 +08:00
98a3d12937 修改帮助文档 2022-08-21 10:26:40 +08:00
e49395a2fa 1.8.1新建文件夹 2022-08-20 13:38:46 +08:00
8f6bee1346 1.8.1 2022-08-11 12:27:25 +08:00
00176f9919 新建文件夹AXVM 2022-08-03 23:07:22 +08:00
8678f122e1 Small Update 2022-07-28 20:04:59 +08:00
ae6c233239 基本完成 1.8.0的制作 2022-07-27 18:15:28 +08:00
6bf4202cc2 程序基本完成Tkinter转PyQt5以及修复键盘映射程序的无法退出和使用一段时间无法正常映射的问题 2022-07-26 14:57:48 +08:00
88ca313779 完成提取图标 2022-07-24 23:12:34 +08:00
27c39d96a9 完成主界面的QT转换以及核心两大功能安装和卸载的实现 2022-07-24 23:06:50 +08:00
b34877538a 初步迁移QT 2022-07-23 21:51:18 +08:00
eb44817201 初步Qt迁移 2022-07-23 12:44:33 +08:00
7f18273cca 1.7.0实现 2022-07-08 04:02:21 +08:00
d3970b8b28 1.7.0初步 2022-07-07 14:35:44 +08:00
293b382e9b 删除ubuntu专版安装包 2022-06-22 12:18:26 +08:00
c3800a2514 加ubuntu安装包 2022-06-21 18:28:50 +08:00
6b42f7eef6 改README 2022-06-21 18:18:35 +08:00
a6baf834c7 基本完工 2022-06-21 10:24:27 +08:00
3f9aa55d8d 即将打包 2022-06-21 10:01:24 +08:00
9660c8fb72 制作平滑升级包ing…… 2022-06-20 22:29:10 +08:00
acaa13e8ae 新增启动脚本 2022-06-20 09:22:23 +08:00
176025a3c5 更新开源许可证 2022-06-20 00:03:25 +00:00
8fb872d8ec 初步打包调试deb 2022-06-19 21:46:58 +08:00
79674c1c2f 小改deb脚本 2022-06-19 21:20:28 +08:00
b7f01d0ff6 更新了UEngine的Ubuntu安装程序 2022-06-19 21:04:16 +08:00
c030ab2c16 初步的未知来源安装开启功能完成 2022-06-19 14:03:40 +08:00
8747f69065 先立flag 2022-06-19 08:48:38 +08:00
b851b12a62 又加了一点点翻译 2022-06-18 23:01:23 +08:00
da0db9b0fb 没更新什么 2022-06-15 21:56:01 +08:00
22d1f1ab87 修改语言配置文件 2022-06-12 22:25:02 +08:00
4a5d060c43 API有误 2022-05-22 20:34:12 +08:00
d5b37e3951 更新README 2022-05-22 08:04:17 +08:00
ed2155b83e 1.6.1更新+API更新 2022-05-21 18:11:11 +08:00
05d977030c 添加忘记了的开发者名单以及添加了部分函数 2022-05-21 12:37:08 +08:00
c77bbceeb2 添加函数(包括打包deb的函数) 2022-05-21 12:06:17 +08:00
7f36a1ff3c 加了一点函数 2022-05-16 22:21:59 +08:00
d68f42c368 添加了API函数以及文档 2022-05-15 21:54:04 +08:00
c9a3db2f37 首次添加 API 接口 2022-05-15 20:14:02 +08:00
677ff4c16b 首次添加 API 接口 2022-05-15 20:13:18 +08:00
65eaf17d85 目前包没问题 2022-02-18 13:21:23 +08:00
72cf1e0881 修复巨大bug 2022-02-15 21:56:32 +08:00
c53ad469e5 deb包有一点小问题 2022-02-12 22:21:12 +08:00
34e4d83104 更新一下README 2022-02-12 22:15:17 +08:00
5b85af521e 完成1.6.0 2022-02-12 22:03:40 +08:00
158e99c3c4 即将完成! 2022-02-12 21:55:33 +08:00
5e31ca90c5 完善帮助文档 2022-02-11 19:25:47 +08:00
35fc896aaa 即将完成1.6.0 2022-02-11 16:38:03 +08:00
9510660321 新增程序彩蛋、更新窗口<初步>(昨天忘记上传了) 2022-02-09 11:50:23 +08:00
282bb35444 改一下README的老旧部分 2022-02-07 22:43:23 +08:00
bb813fc866 新增评分功能 2022-02-07 22:35:15 +08:00
d081862a4a 添加图标 2022-02-06 10:33:53 +08:00
09857468f7 1.5.3完成 2021-12-12 12:33:21 +08:00
2abc67e426 初步完成1.5.3 2021-12-12 11:28:22 +08:00
c4ab276ab5 更新 README 2021-11-28 20:47:52 +08:00
016c397529 1.5.2 2021-11-28 16:11:01 +08:00
4f0fafbf17 一点点东西 2021-10-26 20:19:42 +08:00
ad5f08ca38 改个README.md 2021-10-05 18:31:25 +08:00
618a8c4941 Merge branch 'ChangeTestUpload' into main 2021-10-05 18:29:02 +08:00
9ef3c45ff6 Change 2021-10-05 18:26:32 +08:00
ac677c1bb1 1.5.1 2021-10-05 18:16:50 +08:00
655b45de4d 初步添加反馈功能 2021-10-03 20:51:46 +08:00
278e1722a5 初步添加反馈功能 2021-10-03 20:34:07 +08:00
34937827d9 初步修复安装图标无法正常点击运行等问题 2021-10-03 17:42:30 +08:00
712f2d25cc 1.5.1初步 2021-09-26 20:16:29 +08:00
4845337d73 README 日期错误 2021-09-20 22:01:25 +08:00
4fd7840bbe 1.5.0雏形 2021-09-20 21:58:32 +08:00
4ec0887a58 初步支持英语 2021-09-20 17:10:05 +08:00
d105f85510 1.4.3 2021-09-11 16:38:31 +08:00
8057f2a596 初传 2021-09-11 15:51:23 +08:00
74831ea4c2 修改 deb 包 2021-08-30 18:05:13 +08:00
bcaae02aec 1.4.2 2021-08-30 17:51:50 +08:00
4b889b6056 1.4.2 2021-08-30 17:49:12 +08:00
76d3710963 改一下菜单栏 2021-08-27 09:18:31 +08:00
89aa00ebf5 1.4.1 2021-08-26 15:24:26 +08:00
a2038ac40e 小改README和传GITHUB 2021-08-19 16:03:43 +08:00
530c3ad384 1.4.0(1.3.3没了) 2021-08-19 14:21:03 +08:00
c9a1316022 1.4.0(1.3.3没了) 2021-08-19 14:08:05 +08:00
f5b04826c2 初步添加打包器 2021-08-19 08:49:50 +08:00
9d1f3e8176 1.3.3初步 2021-08-18 21:54:28 +08:00
a80397ee9e 添加deepin打包格式的deb包目录 2021-08-18 16:02:07 +08:00
deec28ce83 加一点命令以便操作 2021-08-18 15:14:40 +08:00
4dd48b5273 添加重启 uengine 服务、注释,以及修改部分文本 2021-08-16 09:35:08 +08:00
a28f4e6ba9 README有点问题 2021-08-16 07:40:30 +08:00
3ba28b053d 这才是真正的1.3.2 2021-08-16 07:36:36 +08:00
becf3200ec 上一个1.3.2不算,这个1.3.2待测试 2021-08-16 07:22:18 +08:00
db206335b1 Merge branch 'main' of https://gitee.com/gfdgd-xi/uengine-runner into main 2021-08-15 21:47:20 +08:00
a1eee38deb 1.3.2 2021-08-15 21:46:48 +08:00
67f8d2beca add LICENSE. 2021-08-13 10:36:36 +00:00
d01423853a Merge branch 'main' of https://gitee.com/gfdgd-xi/uengine-runner into main 2021-08-12 15:12:49 +08:00
d486fa55d8 1.3.1 2021-08-12 15:12:13 +08:00
actionchen
73d1e3b484 update README.MD 2021-08-11 17:26:57 +08:00
ce52b8579a 加个说明 2021-08-10 21:27:10 +08:00
fcc37f707e 更新一下 README.md 2021-08-10 11:09:51 +08:00
908177b69d 更新一下 README.md 2021-08-10 11:09:35 +08:00
89702f681e 忘传了点东西 2021-08-08 22:08:06 +08:00
7786c7b855 1.3.0 2021-08-08 22:02:43 +08:00
actionchen
2c75309d75 调整代码,修复了少量bug,修复了不能获取apk图标的问题 2021-08-08 17:14:48 +08:00
38b19ed2d2 1.2.2 2021-07-11 14:45:11 +08:00
dcc92846be Up 2021-07-11 13:03:33 +08:00
ec8e48aff3 Over 2021-07-11 08:55:28 +08:00
416 changed files with 33942 additions and 1157 deletions

26
.github/workflows/auto-building.yml vendored Normal file
View File

@@ -0,0 +1,26 @@
name: Auto Building Wine Runner
run-name: ${{ github.actor }} Auto Building Wine Runner 🚀
on:
push:
workflow_dispatch:
jobs:
Explore-GitHub-Actions:
runs-on: ubuntu-latest
steps:
- name: Building DEB
run: |
# 配置环境
sudo apt update
sudo apt install git dpkg-dev qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools qt5-qmake -y
git clone https://github.com/gfdgd-xi/uengine-runner
cd uengine-runner
make build
mv com.gitee.uengine.runner.spark.deb ~
- name: upload result
uses: actions/upload-artifact@v1
with:
name: com.gitee.uengine.runner.spark.deb
path: /home/runner/com.gitee.uengine.runner.spark.deb

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
__pycache__

3
.idea/.gitignore generated vendored
View File

@@ -1,3 +0,0 @@
# 默认忽略的文件
/shelf/
/workspace.xml

View File

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

4
.idea/misc.xml generated
View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7" project-jdk-type="Python SDK" />
</project>

8
.idea/modules.xml generated
View File

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

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

6
.idea/vcs.xml generated
View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

BIN
APK/Via.apk Normal file

Binary file not shown.

45
Android X86/AXVM/AXVM.pro Normal file
View File

@@ -0,0 +1,45 @@
#-------------------------------------------------
#
# Project created by QtCreator 2022-08-03T09:18:28
#
#-------------------------------------------------
QT += core gui network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = AXVM
TEMPLATE = app
# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
CONFIG += c++11
CONFIG += console
SOURCES += \
main.cpp \
mainwindow.cpp \
downloadthread.cpp \
getipserver.cpp
HEADERS += \
mainwindow.h \
downloadthread.h \
getipserver.h
FORMS += \
mainwindow.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

View File

@@ -0,0 +1,327 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.8.2, 2022-08-03T22:58:44. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{e6fddbe7-fcb3-41be-bb11-3a30892600b9}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey"/>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">桌面</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">桌面</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{b6becee2-04dc-4df3-9a41-75e9b60eccc8}</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/Desktop/uengine-runner/Android X86/build-AXVM-unknown-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/Desktop/uengine-runner/Android X86/build-AXVM-unknown-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gfdgd_xi/Desktop/uengine-runner/Android X86/build-AXVM-unknown-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">AXVM</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/gfdgd_xi/Desktop/uengine-runner/Android X86/AXVM/AXVM.pro</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">AXVM.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseTerminal">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/gfdgd_xi/Desktop/uengine-runner/Android X86/build-AXVM-unknown-Debug</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">20</value>
</data>
<data>
<variable>Version</variable>
<value type="int">20</value>
</data>
</qtcreator>

View File

@@ -0,0 +1,24 @@
QMAKE_CXX.QT_COMPILER_STDCXX = 201402L
QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 8
QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 3
QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0
QMAKE_CXX.COMPILER_MACROS = \
QT_COMPILER_STDCXX \
QMAKE_GCC_MAJOR_VERSION \
QMAKE_GCC_MINOR_VERSION \
QMAKE_GCC_PATCH_VERSION
QMAKE_CXX.INCDIRS = \
/usr/include/c++/8 \
/usr/include/x86_64-linux-gnu/c++/8 \
/usr/include/c++/8/backward \
/usr/lib/gcc/x86_64-linux-gnu/8/include \
/usr/local/include \
/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed \
/usr/include/x86_64-linux-gnu \
/usr/include
QMAKE_CXX.LIBDIRS = \
/usr/lib/gcc/x86_64-linux-gnu/8 \
/usr/lib/x86_64-linux-gnu \
/usr/lib \
/lib/x86_64-linux-gnu \
/lib

BIN
Android X86/AXVM/build/AXVM Executable file

Binary file not shown.

View File

@@ -0,0 +1,516 @@
#############################################################################
# Makefile for building: AXVM
# Generated by qmake (3.1) (Qt 5.15.3)
# Project: ../AXVM.pro
# Template: app
# Command: /usr/lib/qt5/bin/qmake -o Makefile ../AXVM.pro
#############################################################################
MAKEFILE = Makefile
EQ = =
####### Compiler, tools and options
CC = gcc
CXX = g++
DEFINES = -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB
CFLAGS = -pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES)
CXXFLAGS = -pipe -O2 -std=gnu++11 -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES)
INCPATH = -I../../AXVM -I. -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++
QMAKE = /usr/lib/qt5/bin/qmake
DEL_FILE = rm -f
CHK_DIR_EXISTS= test -d
MKDIR = mkdir -p
COPY = cp -f
COPY_FILE = cp -f
COPY_DIR = cp -f -R
INSTALL_FILE = install -m 644 -p
INSTALL_PROGRAM = install -m 755 -p
INSTALL_DIR = cp -f -R
QINSTALL = /usr/lib/qt5/bin/qmake -install qinstall
QINSTALL_PROGRAM = /usr/lib/qt5/bin/qmake -install qinstall -exe
DEL_FILE = rm -f
SYMLINK = ln -f -s
DEL_DIR = rmdir
MOVE = mv -f
TAR = tar -cf
COMPRESS = gzip -9f
DISTNAME = AXVM1.0.0
DISTDIR = /home/gfdgd_xi/Desktop/uengine-runner/Android\ X86/AXVM/build/.tmp/AXVM1.0.0
LINK = g++
LFLAGS = -Wl,-O1
LIBS = $(SUBLIBS) /usr/lib/x86_64-linux-gnu/libQt5Widgets.so /usr/lib/x86_64-linux-gnu/libQt5Gui.so /usr/lib/x86_64-linux-gnu/libQt5Network.so /usr/lib/x86_64-linux-gnu/libQt5Core.so -lGL -lpthread
AR = ar cqs
RANLIB =
SED = sed
STRIP = strip
####### Output directory
OBJECTS_DIR = ./
####### Files
SOURCES = ../main.cpp \
../mainwindow.cpp \
../downloadthread.cpp \
../getipserver.cpp moc_mainwindow.cpp
OBJECTS = main.o \
mainwindow.o \
downloadthread.o \
getipserver.o \
moc_mainwindow.o
DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcommon.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwm.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_packetprotocol_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldebug_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlmodels.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlmodels_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickcontrols2.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickshapes_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quicktemplates2.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \
../.qmake.stash \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources_functions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \
../../AXVM.pro ../mainwindow.h \
../downloadthread.h \
../getipserver.h ../main.cpp \
../mainwindow.cpp \
../downloadthread.cpp \
../getipserver.cpp
QMAKE_TARGET = AXVM
DESTDIR =
TARGET = AXVM
first: all
####### Build rules
AXVM: ui_mainwindow.h $(OBJECTS)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
Makefile: ../AXVM.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcommon.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwm.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_packetprotocol_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldebug_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlmodels.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlmodels_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickcontrols2.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickshapes_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quicktemplates2.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \
.qmake.stash \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources_functions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \
../AXVM.pro
$(QMAKE) -o Makefile ../AXVM.pro
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcommon.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkcore.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkgui.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwidget.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dtkwm.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_packetprotocol_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldebug_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmldevtools_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlmodels.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlmodels_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmlworkerscript_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickcontrols2.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickparticles_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickshapes_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quicktemplates2.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xkbcommon_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf:
.qmake.stash:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources_functions.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf:
../AXVM.pro:
qmake: FORCE
@$(QMAKE) -o Makefile ../AXVM.pro
qmake_all: FORCE
all: Makefile AXVM
dist: distdir FORCE
(cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR)
distdir: FORCE
@test -d $(DISTDIR) || mkdir -p $(DISTDIR)
$(COPY_FILE) --parents $(DIST) $(DISTDIR)/
$(COPY_FILE) --parents /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp $(DISTDIR)/
$(COPY_FILE) --parents ../mainwindow.h ../downloadthread.h ../getipserver.h $(DISTDIR)/
$(COPY_FILE) --parents ../main.cpp ../mainwindow.cpp ../downloadthread.cpp ../getipserver.cpp $(DISTDIR)/
$(COPY_FILE) --parents ../mainwindow.ui $(DISTDIR)/
clean: compiler_clean
-$(DEL_FILE) $(OBJECTS)
-$(DEL_FILE) *~ core *.core
distclean: clean
-$(DEL_FILE) $(TARGET)
-$(DEL_FILE) .qmake.stash
-$(DEL_FILE) Makefile
####### Sub-libraries
mocclean: compiler_moc_header_clean compiler_moc_objc_header_clean compiler_moc_source_clean
mocables: compiler_moc_header_make_all compiler_moc_objc_header_make_all compiler_moc_source_make_all
check: first
benchmark: first
compiler_rcc_make_all:
compiler_rcc_clean:
compiler_moc_predefs_make_all: moc_predefs.h
compiler_moc_predefs_clean:
-$(DEL_FILE) moc_predefs.h
moc_predefs.h: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
g++ -pipe -O2 -std=gnu++11 -Wall -Wextra -dM -E -o moc_predefs.h /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
compiler_moc_header_make_all: moc_mainwindow.cpp
compiler_moc_header_clean:
-$(DEL_FILE) moc_mainwindow.cpp
moc_mainwindow.cpp: ../mainwindow.h \
../downloadthread.h \
moc_predefs.h \
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include '/home/gfdgd_xi/Desktop/uengine-runner/Android X86/AXVM/build/moc_predefs.h' -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I'/home/gfdgd_xi/Desktop/uengine-runner/Android X86/AXVM' -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/8 -I/usr/include/x86_64-linux-gnu/c++/8 -I/usr/include/c++/8/backward -I/usr/lib/gcc/x86_64-linux-gnu/8/include -I/usr/local/include -I/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed -I/usr/include/x86_64-linux-gnu -I/usr/include ../mainwindow.h -o moc_mainwindow.cpp
compiler_moc_objc_header_make_all:
compiler_moc_objc_header_clean:
compiler_moc_source_make_all:
compiler_moc_source_clean:
compiler_uic_make_all: ui_mainwindow.h
compiler_uic_clean:
-$(DEL_FILE) ui_mainwindow.h
ui_mainwindow.h: ../mainwindow.ui \
/usr/lib/qt5/bin/uic
/usr/lib/qt5/bin/uic ../mainwindow.ui -o ui_mainwindow.h
compiler_yacc_decl_make_all:
compiler_yacc_decl_clean:
compiler_yacc_impl_make_all:
compiler_yacc_impl_clean:
compiler_lex_make_all:
compiler_lex_clean:
compiler_clean: compiler_moc_predefs_clean compiler_moc_header_clean compiler_uic_clean
####### Compile
main.o: ../main.cpp ../mainwindow.h \
../downloadthread.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o ../main.cpp
mainwindow.o: ../mainwindow.cpp ../mainwindow.h \
../downloadthread.h \
ui_mainwindow.h \
../getipserver.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o mainwindow.o ../mainwindow.cpp
downloadthread.o: ../downloadthread.cpp ../downloadthread.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o downloadthread.o ../downloadthread.cpp
getipserver.o: ../getipserver.cpp ../getipserver.h \
../mainwindow.h \
../downloadthread.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o getipserver.o ../getipserver.cpp
moc_mainwindow.o: moc_mainwindow.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mainwindow.o moc_mainwindow.cpp
####### Install
install_target: first FORCE
@test -d $(INSTALL_ROOT)/opt/AXVM/bin || mkdir -p $(INSTALL_ROOT)/opt/AXVM/bin
$(QINSTALL_PROGRAM) $(QMAKE_TARGET) $(INSTALL_ROOT)/opt/AXVM/bin/$(QMAKE_TARGET)
-$(STRIP) $(INSTALL_ROOT)/opt/AXVM/bin/$(QMAKE_TARGET)
uninstall_target: FORCE
-$(DEL_FILE) $(INSTALL_ROOT)/opt/AXVM/bin/$(QMAKE_TARGET)
-$(DEL_DIR) $(INSTALL_ROOT)/opt/AXVM/bin/
install: install_target FORCE
uninstall: uninstall_target FORCE
FORCE:

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,124 @@
/****************************************************************************
** Meta object code from reading C++ file 'mainwindow.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.15.3)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../mainwindow.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'mainwindow.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.15.3. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_MainWindow_t {
QByteArrayData data[4];
char stringdata0[48];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_MainWindow_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_MainWindow_t qt_meta_stringdata_MainWindow = {
{
QT_MOC_LITERAL(0, 0, 10), // "MainWindow"
QT_MOC_LITERAL(1, 11, 23), // "on_pushButton_2_clicked"
QT_MOC_LITERAL(2, 35, 0), // ""
QT_MOC_LITERAL(3, 36, 11) // "ChangeValue"
},
"MainWindow\0on_pushButton_2_clicked\0\0"
"ChangeValue"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_MainWindow[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
2, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
// slots: name, argc, parameters, tag, flags
1, 0, 24, 2, 0x08 /* Private */,
3, 0, 25, 2, 0x08 /* Private */,
// slots: parameters
QMetaType::Void,
QMetaType::Void,
0 // eod
};
void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<MainWindow *>(_o);
(void)_t;
switch (_id) {
case 0: _t->on_pushButton_2_clicked(); break;
case 1: _t->ChangeValue(); break;
default: ;
}
}
(void)_a;
}
QT_INIT_METAOBJECT const QMetaObject MainWindow::staticMetaObject = { {
QMetaObject::SuperData::link<QMainWindow::staticMetaObject>(),
qt_meta_stringdata_MainWindow.data,
qt_meta_data_MainWindow,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *MainWindow::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *MainWindow::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_MainWindow.stringdata0))
return static_cast<void*>(this);
return QMainWindow::qt_metacast(_clname);
}
int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QMainWindow::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 2)
qt_static_metacall(this, _c, _id, _a);
_id -= 2;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 2)
*reinterpret_cast<int*>(_a[0]) = -1;
_id -= 2;
}
return _id;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE

Binary file not shown.

View File

@@ -0,0 +1,375 @@
#define __DBL_MIN_EXP__ (-1021)
#define __FLT32X_MAX_EXP__ 1024
#define __cpp_attributes 200809
#define __UINT_LEAST16_MAX__ 0xffff
#define __ATOMIC_ACQUIRE 2
#define __FLT128_MAX_10_EXP__ 4932
#define __FLT_MIN__ 1.17549435082228750796873653722224568e-38F
#define __GCC_IEC_559_COMPLEX 2
#define __UINT_LEAST8_TYPE__ unsigned char
#define __SIZEOF_FLOAT80__ 16
#define __INTMAX_C(c) c ## L
#define __CHAR_BIT__ 8
#define __UINT8_MAX__ 0xff
#define __WINT_MAX__ 0xffffffffU
#define __FLT32_MIN_EXP__ (-125)
#define __cpp_static_assert 200410
#define __ORDER_LITTLE_ENDIAN__ 1234
#define __SIZE_MAX__ 0xffffffffffffffffUL
#define __WCHAR_MAX__ 0x7fffffff
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
#define __DBL_DENORM_MIN__ double(4.94065645841246544176568792868221372e-324L)
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
#define __GCC_ATOMIC_CHAR_LOCK_FREE 2
#define __GCC_IEC_559 2
#define __FLT32X_DECIMAL_DIG__ 17
#define __FLT_EVAL_METHOD__ 0
#define __unix__ 1
#define __cpp_binary_literals 201304
#define __FLT64_DECIMAL_DIG__ 17
#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
#define __x86_64 1
#define __cpp_variadic_templates 200704
#define __UINT_FAST64_MAX__ 0xffffffffffffffffUL
#define __SIG_ATOMIC_TYPE__ int
#define __DBL_MIN_10_EXP__ (-307)
#define __FINITE_MATH_ONLY__ 0
#define __GNUC_PATCHLEVEL__ 0
#define __FLT32_HAS_DENORM__ 1
#define __UINT_FAST8_MAX__ 0xff
#define __has_include(STR) __has_include__(STR)
#define __DEC64_MAX_EXP__ 385
#define __INT8_C(c) c
#define __INT_LEAST8_WIDTH__ 8
#define __UINT_LEAST64_MAX__ 0xffffffffffffffffUL
#define __SHRT_MAX__ 0x7fff
#define __LDBL_MAX__ 1.18973149535723176502126385303097021e+4932L
#define __FLT64X_MAX_10_EXP__ 4932
#define __UINT_LEAST8_MAX__ 0xff
#define __GCC_ATOMIC_BOOL_LOCK_FREE 2
#define __FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128
#define __UINTMAX_TYPE__ long unsigned int
#define __linux 1
#define __DEC32_EPSILON__ 1E-6DF
#define __FLT_EVAL_METHOD_TS_18661_3__ 0
#define __OPTIMIZE__ 1
#define __unix 1
#define __UINT32_MAX__ 0xffffffffU
#define __GXX_EXPERIMENTAL_CXX0X__ 1
#define __LDBL_MAX_EXP__ 16384
#define __FLT128_MIN_EXP__ (-16381)
#define __WINT_MIN__ 0U
#define __linux__ 1
#define __FLT128_MIN_10_EXP__ (-4931)
#define __INT_LEAST16_WIDTH__ 16
#define __SCHAR_MAX__ 0x7f
#define __FLT128_MANT_DIG__ 113
#define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1)
#define __INT64_C(c) c ## L
#define __DBL_DIG__ 15
#define __GCC_ATOMIC_POINTER_LOCK_FREE 2
#define __FLT64X_MANT_DIG__ 64
#define __SIZEOF_INT__ 4
#define __SIZEOF_POINTER__ 8
#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2
#define __USER_LABEL_PREFIX__
#define __FLT64X_EPSILON__ 1.08420217248550443400745280086994171e-19F64x
#define __STDC_HOSTED__ 1
#define __LDBL_HAS_INFINITY__ 1
#define __FLT32_DIG__ 6
#define __FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F
#define __GXX_WEAK__ 1
#define __SHRT_WIDTH__ 16
#define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L
#define __DEC32_MAX__ 9.999999E96DF
#define __cpp_threadsafe_static_init 200806
#define __FLT64X_DENORM_MIN__ 3.64519953188247460252840593361941982e-4951F64x
#define __FLT32X_HAS_INFINITY__ 1
#define __INT32_MAX__ 0x7fffffff
#define __INT_WIDTH__ 32
#define __SIZEOF_LONG__ 8
#define __STDC_IEC_559__ 1
#define __STDC_ISO_10646__ 201706L
#define __UINT16_C(c) c
#define __PTRDIFF_WIDTH__ 64
#define __DECIMAL_DIG__ 21
#define __FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64
#define __gnu_linux__ 1
#define __INTMAX_WIDTH__ 64
#define __FLT64_MIN_EXP__ (-1021)
#define __has_include_next(STR) __has_include_next__(STR)
#define __FLT64X_MIN_10_EXP__ (-4931)
#define __LDBL_HAS_QUIET_NAN__ 1
#define __FLT64_MANT_DIG__ 53
#define __GNUC__ 8
#define __GXX_RTTI 1
#define __MMX__ 1
#define __cpp_delegating_constructors 200604
#define __FLT_HAS_DENORM__ 1
#define __SIZEOF_LONG_DOUBLE__ 16
#define __BIGGEST_ALIGNMENT__ 16
#define __STDC_UTF_16__ 1
#define __FLT64_MAX_10_EXP__ 308
#define __FLT32_HAS_INFINITY__ 1
#define __DBL_MAX__ double(1.79769313486231570814527423731704357e+308L)
#define __cpp_raw_strings 200710
#define __INT_FAST32_MAX__ 0x7fffffffffffffffL
#define __DBL_HAS_INFINITY__ 1
#define __DEC32_MIN_EXP__ (-94)
#define __INTPTR_WIDTH__ 64
#define __FLT32X_HAS_DENORM__ 1
#define __INT_FAST16_TYPE__ long int
#define __LDBL_HAS_DENORM__ 1
#define __cplusplus 201103L
#define __cpp_ref_qualifiers 200710
#define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL
#define __INT_LEAST32_MAX__ 0x7fffffff
#define __DEC32_MIN__ 1E-95DF
#define __DEPRECATED 1
#define __cpp_rvalue_references 200610
#define __DBL_MAX_EXP__ 1024
#define __WCHAR_WIDTH__ 32
#define __FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32
#define __DEC128_EPSILON__ 1E-33DL
#define __SSE2_MATH__ 1
#define __ATOMIC_HLE_RELEASE 131072
#define __PTRDIFF_MAX__ 0x7fffffffffffffffL
#define __amd64 1
#define __ATOMIC_HLE_ACQUIRE 65536
#define __FLT32_HAS_QUIET_NAN__ 1
#define __GNUG__ 8
#define __LONG_LONG_MAX__ 0x7fffffffffffffffLL
#define __SIZEOF_SIZE_T__ 8
#define __cpp_rvalue_reference 200610
#define __cpp_nsdmi 200809
#define __FLT64X_MIN_EXP__ (-16381)
#define __SIZEOF_WINT_T__ 4
#define __LONG_LONG_WIDTH__ 64
#define __cpp_initializer_lists 200806
#define __FLT32_MAX_EXP__ 128
#define __cpp_hex_float 201603
#define __GCC_HAVE_DWARF2_CFI_ASM 1
#define __GXX_ABI_VERSION 1013
#define __FLT128_HAS_INFINITY__ 1
#define __FLT_MIN_EXP__ (-125)
#define __cpp_lambdas 200907
#define __FLT64X_HAS_QUIET_NAN__ 1
#define __INT_FAST64_TYPE__ long int
#define __FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64
#define __DBL_MIN__ double(2.22507385850720138309023271733240406e-308L)
#define __LP64__ 1
#define __FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x
#define __DECIMAL_BID_FORMAT__ 1
#define __FLT64_MIN_10_EXP__ (-307)
#define __FLT64X_DECIMAL_DIG__ 21
#define __DEC128_MIN__ 1E-6143DL
#define __REGISTER_PREFIX__
#define __UINT16_MAX__ 0xffff
#define __DBL_HAS_DENORM__ 1
#define __FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32
#define __UINT8_TYPE__ unsigned char
#define __FLT_MANT_DIG__ 24
#define __LDBL_DECIMAL_DIG__ 21
#define __VERSION__ "8.3.0"
#define __UINT64_C(c) c ## UL
#define __cpp_unicode_characters 200704
#define _STDC_PREDEF_H 1
#define __GCC_ATOMIC_INT_LOCK_FREE 2
#define __FLT128_MAX_EXP__ 16384
#define __FLT32_MANT_DIG__ 24
#define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__
#define __STDC_IEC_559_COMPLEX__ 1
#define __FLT128_HAS_DENORM__ 1
#define __FLT128_DIG__ 33
#define __SCHAR_WIDTH__ 8
#define __INT32_C(c) c
#define __DEC64_EPSILON__ 1E-15DD
#define __ORDER_PDP_ENDIAN__ 3412
#define __DEC128_MIN_EXP__ (-6142)
#define __FLT32_MAX_10_EXP__ 38
#define __INT_FAST32_TYPE__ long int
#define __UINT_LEAST16_TYPE__ short unsigned int
#define __FLT64X_HAS_INFINITY__ 1
#define unix 1
#define __INT16_MAX__ 0x7fff
#define __cpp_rtti 199711
#define __SIZE_TYPE__ long unsigned int
#define __UINT64_MAX__ 0xffffffffffffffffUL
#define __FLT64X_DIG__ 18
#define __INT8_TYPE__ signed char
#define __ELF__ 1
#define __GCC_ASM_FLAG_OUTPUTS__ 1
#define __FLT_RADIX__ 2
#define __INT_LEAST16_TYPE__ short int
#define __LDBL_EPSILON__ 1.08420217248550443400745280086994171e-19L
#define __UINTMAX_C(c) c ## UL
#define __GLIBCXX_BITSIZE_INT_N_0 128
#define __k8 1
#define __SIG_ATOMIC_MAX__ 0x7fffffff
#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
#define __SIZEOF_PTRDIFF_T__ 8
#define __FLT32X_MANT_DIG__ 53
#define __x86_64__ 1
#define __FLT32X_MIN_EXP__ (-1021)
#define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF
#define __INT_FAST16_MAX__ 0x7fffffffffffffffL
#define __FLT64_DIG__ 15
#define __UINT_FAST32_MAX__ 0xffffffffffffffffUL
#define __UINT_LEAST64_TYPE__ long unsigned int
#define __FLT_HAS_QUIET_NAN__ 1
#define __FLT_MAX_10_EXP__ 38
#define __LONG_MAX__ 0x7fffffffffffffffL
#define __FLT64X_HAS_DENORM__ 1
#define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL
#define __FLT_HAS_INFINITY__ 1
#define __cpp_unicode_literals 200710
#define __UINT_FAST16_TYPE__ long unsigned int
#define __DEC64_MAX__ 9.999999999999999E384DD
#define __INT_FAST32_WIDTH__ 64
#define __CHAR16_TYPE__ short unsigned int
#define __PRAGMA_REDEFINE_EXTNAME 1
#define __SIZE_WIDTH__ 64
#define __SEG_FS 1
#define __INT_LEAST16_MAX__ 0x7fff
#define __DEC64_MANT_DIG__ 16
#define __INT64_MAX__ 0x7fffffffffffffffL
#define __UINT_LEAST32_MAX__ 0xffffffffU
#define __SEG_GS 1
#define __FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32
#define __GCC_ATOMIC_LONG_LOCK_FREE 2
#define __SIG_ATOMIC_WIDTH__ 32
#define __INT_LEAST64_TYPE__ long int
#define __INT16_TYPE__ short int
#define __INT_LEAST8_TYPE__ signed char
#define __DEC32_MAX_EXP__ 97
#define __INT_FAST8_MAX__ 0x7f
#define __FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128
#define __INTPTR_MAX__ 0x7fffffffffffffffL
#define linux 1
#define __cpp_range_based_for 200907
#define __FLT64_HAS_QUIET_NAN__ 1
#define __FLT32_MIN_10_EXP__ (-37)
#define __SSE2__ 1
#define __EXCEPTIONS 1
#define __LDBL_MANT_DIG__ 64
#define __DBL_HAS_QUIET_NAN__ 1
#define __FLT64_HAS_INFINITY__ 1
#define __FLT64X_MAX__ 1.18973149535723176502126385303097021e+4932F64x
#define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
#define __code_model_small__ 1
#define __k8__ 1
#define __INTPTR_TYPE__ long int
#define __UINT16_TYPE__ short unsigned int
#define __WCHAR_TYPE__ int
#define __SIZEOF_FLOAT__ 4
#define __UINTPTR_MAX__ 0xffffffffffffffffUL
#define __INT_FAST64_WIDTH__ 64
#define __DEC64_MIN_EXP__ (-382)
#define __cpp_decltype 200707
#define __FLT32_DECIMAL_DIG__ 9
#define __INT_FAST64_MAX__ 0x7fffffffffffffffL
#define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1
#define __FLT_DIG__ 6
#define __FLT64X_MAX_EXP__ 16384
#define __UINT_FAST64_TYPE__ long unsigned int
#define __INT_MAX__ 0x7fffffff
#define __amd64__ 1
#define __INT64_TYPE__ long int
#define __FLT_MAX_EXP__ 128
#define __ORDER_BIG_ENDIAN__ 4321
#define __DBL_MANT_DIG__ 53
#define __cpp_inheriting_constructors 201511
#define __SIZEOF_FLOAT128__ 16
#define __INT_LEAST64_MAX__ 0x7fffffffffffffffL
#define __DEC64_MIN__ 1E-383DD
#define __WINT_TYPE__ unsigned int
#define __UINT_LEAST32_TYPE__ unsigned int
#define __SIZEOF_SHORT__ 2
#define __SSE__ 1
#define __LDBL_MIN_EXP__ (-16381)
#define __FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64
#define __WINT_WIDTH__ 32
#define __INT_LEAST8_MAX__ 0x7f
#define __FLT32X_MAX_10_EXP__ 308
#define __SIZEOF_INT128__ 16
#define __LDBL_MAX_10_EXP__ 4932
#define __ATOMIC_RELAXED 0
#define __DBL_EPSILON__ double(2.22044604925031308084726333618164062e-16L)
#define __FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128
#define _LP64 1
#define __UINT8_C(c) c
#define __FLT64_MAX_EXP__ 1024
#define __INT_LEAST32_TYPE__ int
#define __SIZEOF_WCHAR_T__ 4
#define __FLT128_HAS_QUIET_NAN__ 1
#define __INT_FAST8_TYPE__ signed char
#define __FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x
#define __GNUC_STDC_INLINE__ 1
#define __FLT64_HAS_DENORM__ 1
#define __FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32
#define __DBL_DECIMAL_DIG__ 17
#define __STDC_UTF_32__ 1
#define __INT_FAST8_WIDTH__ 8
#define __FXSR__ 1
#define __DEC_EVAL_METHOD__ 2
#define __FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x
#define __cpp_runtime_arrays 198712
#define __UINT64_TYPE__ long unsigned int
#define __UINT32_C(c) c ## U
#define __INTMAX_MAX__ 0x7fffffffffffffffL
#define __cpp_alias_templates 200704
#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
#define __FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F
#define __INT8_MAX__ 0x7f
#define __LONG_WIDTH__ 64
#define __UINT_FAST32_TYPE__ long unsigned int
#define __CHAR32_TYPE__ unsigned int
#define __FLT_MAX__ 3.40282346638528859811704183484516925e+38F
#define __cpp_constexpr 200704
#define __INT32_TYPE__ int
#define __SIZEOF_DOUBLE__ 8
#define __cpp_exceptions 199711
#define __FLT_MIN_10_EXP__ (-37)
#define __FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64
#define __INT_LEAST32_WIDTH__ 32
#define __INTMAX_TYPE__ long int
#define __DEC128_MAX_EXP__ 6145
#define __FLT32X_HAS_QUIET_NAN__ 1
#define __ATOMIC_CONSUME 1
#define __GNUC_MINOR__ 3
#define __GLIBCXX_TYPE_INT_N_0 __int128
#define __INT_FAST16_WIDTH__ 64
#define __UINTMAX_MAX__ 0xffffffffffffffffUL
#define __DEC32_MANT_DIG__ 7
#define __FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x
#define __DBL_MAX_10_EXP__ 308
#define __LDBL_DENORM_MIN__ 3.64519953188247460252840593361941982e-4951L
#define __INT16_C(c) c
#define __STDC__ 1
#define __FLT32X_DIG__ 15
#define __PTRDIFF_TYPE__ long int
#define __ATOMIC_SEQ_CST 5
#define __UINT32_TYPE__ unsigned int
#define __FLT32X_MIN_10_EXP__ (-307)
#define __UINTPTR_TYPE__ long unsigned int
#define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD
#define __DEC128_MANT_DIG__ 34
#define __LDBL_MIN_10_EXP__ (-4931)
#define __FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128
#define __SSE_MATH__ 1
#define __SIZEOF_LONG_LONG__ 8
#define __cpp_user_defined_literals 200809
#define __FLT128_DECIMAL_DIG__ 36
#define __GCC_ATOMIC_LLONG_LOCK_FREE 2
#define __FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x
#define __LDBL_DIG__ 18
#define __FLT_DECIMAL_DIG__ 9
#define __UINT_FAST16_MAX__ 0xffffffffffffffffUL
#define __GCC_ATOMIC_SHORT_LOCK_FREE 2
#define __INT_LEAST64_WIDTH__ 64
#define __UINT_FAST8_TYPE__ unsigned char
#define _GNU_SOURCE 1
#define __ATOMIC_ACQ_REL 4
#define __ATOMIC_RELEASE 3

View File

@@ -0,0 +1,195 @@
/********************************************************************************
** Form generated from reading UI file 'mainwindow.ui'
**
** Created by: Qt User Interface Compiler version 5.15.3
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QListView>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QSpacerItem>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QTabWidget>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_MainWindow
{
public:
QWidget *centralWidget;
QVBoxLayout *verticalLayout_2;
QTabWidget *tabWidget;
QWidget *tab;
QGridLayout *gridLayout;
QHBoxLayout *horizontalLayout_2;
QLabel *label_2;
QHBoxLayout *horizontalLayout_3;
QLabel *label;
QLineEdit *lineEdit;
QPushButton *pushButton_3;
QSpacerItem *verticalSpacer;
QWidget *tab_2;
QHBoxLayout *horizontalLayout;
QListView *listView;
QVBoxLayout *verticalLayout;
QSpacerItem *verticalSpacer_3;
QPushButton *pushButton_2;
QPushButton *pushButton;
QSpacerItem *verticalSpacer_2;
QListView *urlImageList;
QWidget *tab_3;
QStatusBar *statusBar;
void setupUi(QMainWindow *MainWindow)
{
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
MainWindow->resize(683, 416);
centralWidget = new QWidget(MainWindow);
centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
verticalLayout_2 = new QVBoxLayout(centralWidget);
verticalLayout_2->setSpacing(6);
verticalLayout_2->setContentsMargins(11, 11, 11, 11);
verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2"));
tabWidget = new QTabWidget(centralWidget);
tabWidget->setObjectName(QString::fromUtf8("tabWidget"));
tabWidget->setTabPosition(QTabWidget::West);
tabWidget->setElideMode(Qt::ElideNone);
tab = new QWidget();
tab->setObjectName(QString::fromUtf8("tab"));
gridLayout = new QGridLayout(tab);
gridLayout->setSpacing(6);
gridLayout->setContentsMargins(11, 11, 11, 11);
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
horizontalLayout_2 = new QHBoxLayout();
horizontalLayout_2->setSpacing(6);
horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2"));
label_2 = new QLabel(tab);
label_2->setObjectName(QString::fromUtf8("label_2"));
horizontalLayout_2->addWidget(label_2);
gridLayout->addLayout(horizontalLayout_2, 1, 0, 1, 1);
horizontalLayout_3 = new QHBoxLayout();
horizontalLayout_3->setSpacing(6);
horizontalLayout_3->setObjectName(QString::fromUtf8("horizontalLayout_3"));
label = new QLabel(tab);
label->setObjectName(QString::fromUtf8("label"));
horizontalLayout_3->addWidget(label);
lineEdit = new QLineEdit(tab);
lineEdit->setObjectName(QString::fromUtf8("lineEdit"));
horizontalLayout_3->addWidget(lineEdit);
pushButton_3 = new QPushButton(tab);
pushButton_3->setObjectName(QString::fromUtf8("pushButton_3"));
horizontalLayout_3->addWidget(pushButton_3);
gridLayout->addLayout(horizontalLayout_3, 0, 0, 1, 1);
verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
gridLayout->addItem(verticalSpacer, 2, 0, 1, 1);
tabWidget->addTab(tab, QString());
tab_2 = new QWidget();
tab_2->setObjectName(QString::fromUtf8("tab_2"));
horizontalLayout = new QHBoxLayout(tab_2);
horizontalLayout->setSpacing(6);
horizontalLayout->setContentsMargins(11, 11, 11, 11);
horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
listView = new QListView(tab_2);
listView->setObjectName(QString::fromUtf8("listView"));
horizontalLayout->addWidget(listView);
verticalLayout = new QVBoxLayout();
verticalLayout->setSpacing(6);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
verticalSpacer_3 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
verticalLayout->addItem(verticalSpacer_3);
pushButton_2 = new QPushButton(tab_2);
pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));
verticalLayout->addWidget(pushButton_2);
pushButton = new QPushButton(tab_2);
pushButton->setObjectName(QString::fromUtf8("pushButton"));
verticalLayout->addWidget(pushButton);
verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
verticalLayout->addItem(verticalSpacer_2);
horizontalLayout->addLayout(verticalLayout);
urlImageList = new QListView(tab_2);
urlImageList->setObjectName(QString::fromUtf8("urlImageList"));
horizontalLayout->addWidget(urlImageList);
tabWidget->addTab(tab_2, QString());
tab_3 = new QWidget();
tab_3->setObjectName(QString::fromUtf8("tab_3"));
tabWidget->addTab(tab_3, QString());
verticalLayout_2->addWidget(tabWidget);
MainWindow->setCentralWidget(centralWidget);
statusBar = new QStatusBar(MainWindow);
statusBar->setObjectName(QString::fromUtf8("statusBar"));
MainWindow->setStatusBar(statusBar);
retranslateUi(MainWindow);
tabWidget->setCurrentIndex(1);
QMetaObject::connectSlotsByName(MainWindow);
} // setupUi
void retranslateUi(QMainWindow *MainWindow)
{
MainWindow->setWindowTitle(QCoreApplication::translate("MainWindow", "MainWindow", nullptr));
label_2->setText(QCoreApplication::translate("MainWindow", "TextLabel", nullptr));
label->setText(QCoreApplication::translate("MainWindow", "TextLabel", nullptr));
pushButton_3->setText(QCoreApplication::translate("MainWindow", "PushButton", nullptr));
tabWidget->setTabText(tabWidget->indexOf(tab), QCoreApplication::translate("MainWindow", "\346\223\215\344\275\234", nullptr));
pushButton_2->setText(QCoreApplication::translate("MainWindow", "<<", nullptr));
pushButton->setText(QCoreApplication::translate("MainWindow", ">>", nullptr));
tabWidget->setTabText(tabWidget->indexOf(tab_2), QCoreApplication::translate("MainWindow", "\346\226\260\345\273\272\346\250\241\346\213\237\345\231\250", nullptr));
tabWidget->setTabText(tabWidget->indexOf(tab_3), QCoreApplication::translate("MainWindow", "\345\205\263\344\272\216", nullptr));
} // retranslateUi
};
namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_MAINWINDOW_H

View File

@@ -0,0 +1,196 @@
#define SETTINGSTEP 6
#include "downloadthread.h"
#include <QProgressDialog>
#include <QFile>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QEventLoop>
#include <QTimer>
#include <QNetworkReply>
#include <QMessageBox>
#include <QCoreApplication>
// 文件操作
#include <QDir>
// 命令执行
#include <QProcess>
// 获取内存总量
#if defined(Q_OS_LINUX) // 区分系统平台
#include "sys/statfs.h" // Linux 上
#else // Windows 上
#pragma comment(lib, "Kernel32.lib")
#pragma comment(lib, "Psapi.lib")
#include <windows.h>
#include <tlhelp32.h>
#endif
DownloadThread::DownloadThread(QProgressDialog *progressDialog, QString url, QString name, QString mouse, bool NotDownload){
dialog = progressDialog;
fileUrl = url;
vmName = name;
setMouse = mouse;
notDownload = NotDownload;
}
// 文件下载
void DownloadThread::run(){
// 创建文件夹
QDir dir;
QString configDir = QCoreApplication::applicationDirPath() + "/VM";
if(!dir.exists(configDir)){
// 文件不存在
dir.mkpath(configDir);
}
configDir = QCoreApplication::applicationDirPath() + "/VM/" + vmName;
if(!dir.exists(configDir)){
// 文件不存在
dir.mkpath(configDir);
}
QString savePath = configDir + "/vm.ova";
// 文件下载
int timeout = 0;
QFile f(savePath);
if(!f.open(QIODevice::WriteOnly)){
emit MessageBoxError("文件无法写入");
f.close();
delete dialog;
dialog->close();
return;
}
if(notDownload){
qDebug() << "b";
SettingVirtualMachine(savePath);
return;
}
QNetworkAccessManager m;
QNetworkRequest req;
// 响应 https就是不行
//QSslConfiguration conf = req.sslConfiguration();
//conf.setPeerVerifyMode(QSslSocket::VerifyNone);
//conf.setProtocol(QSsl::TlsV1_1);
//req.setSslConfiguration(conf);
req.setUrl(QUrl("https://code.gitlink.org.cn/gfdgd_xi/wine-mirrors/raw/branch/master/spark-wine7-devel-7.14.7z"));
// 下载文件
QNetworkReply *reply = m.get(req);
QEventLoop loop;
QTimer t;
qDebug() << reply->rawHeader(QString("Content-Length").toUtf8());
connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
connect(reply, &QNetworkReply::downloadProgress, [=, &f, &t](qint64 bytesRead, qint64 totalBytes){
f.write(reply->readAll());
dialog->setValue((float)bytesRead / totalBytes * 100);
dialog->setLabelText(QString::number(bytesRead / 1024 / 1024) + "MB/" + QString::number(totalBytes / 1024 / 1024) + "MB");
if(t.isActive()){
t.start(timeout);
}
});
if(timeout > 0){
connect(&t, &QTimer::timeout, &loop, &QEventLoop::quit);
t.start(timeout);
}
loop.exec();
if(reply->error() != QNetworkReply::NoError){
emit MessageBoxError("下载失败");
f.close();
delete reply;
delete dialog;
dialog->close();
return;
}
f.close();
delete reply;
SettingVirtualMachine(savePath);
}
void DownloadThread::SettingVirtualMachine(QString savePath){
// 设置虚拟机
dialog->setLabelText("设置虚拟机");
dialog->setWindowTitle("正在设置“" + vmName + "");
dialog->setValue(100 / SETTINGSTEP * 0);
dialog->show();
// 拷贝 OVA 文件
if(notDownload){
if(QFile::exists(savePath)){
QFile::remove(savePath);
}
if(!QFile::copy(fileUrl, savePath)){
emit MessageBoxError("文件复制错误,无法继续");
}
}
// 导入 OVA 镜像
QProcess progress;
QStringList command;
dialog->setValue(100 / SETTINGSTEP * 1);
command << "import" << savePath;
progress.start("VBoxManage", command);
progress.waitForFinished();
qDebug() << "正常信息:\n";
qDebug() << progress.readAllStandardOutput();
qDebug() << "错误信息:\n";
qDebug() << progress.readAllStandardError();
// 获取内存
dialog->setValue(100 / SETTINGSTEP * 2);
int memtotal = 0;
#if defined (Q_OS_LINUX) // 在 Linux 下读取总内存
progress.start("free -m");
progress.waitForFinished();
progress.readLine(); // 忽略第一行
QString memoryInfo = progress.readLine(); // 只读取第 2 行
qDebug() << memoryInfo;
memoryInfo.replace("\n", ""); // 忽略换行符
memoryInfo.replace(QRegExp("( ){1,}"), " "); // 将连续的空格换为单个空格
auto memoryList = memoryInfo.split(" "); // 根据空格切割内容
qDebug() << memoryList;
if(memoryList.size() >= 2){ // 保证至少有两个
// 理论上列表应该出现的是如下的内容
// ["Mem:", "13998", "9622", "197", "803", "4179", "3331"]
// 因此要读[1]
memtotal = memoryList[1].toDouble();
}
else{
emit MessageBoxError("内存读取错误,请自行打开 VirtualBox 设置内存");
return;
}
#endif
// 设置内存
// 示例命令VBoxManage modifyvm [name] --memory 4096
command.clear(); // 清空参数列表
command << "modifyvm" << vmName << "--memory" << QString::number(memtotal / 2);
progress.start("VBoxManage", command);
progress.waitForFinished();
// 设置显卡,默认的 VMSVGA 在 Android X86 上运行有很多问题,应设为 VBoxVGA
// 示例命令VBoxManage modifyvm [name] --graphicscontroller vboxvga
dialog->setValue(100 / SETTINGSTEP * 3);
command.clear(); // 清空参数列表
command << "modifyvm" << vmName << "--graphicscontroller" << "vboxvga";
qDebug() << command;
progress.start("VBoxManage", command);
progress.waitForFinished();
// 设置声卡
// VBoxManage modifyvm [name] --audio pulse --audiocontroller hda --audioin on --audioout on
dialog->setValue(100 / SETTINGSTEP * 4);
command.clear(); // 清空参数列表
command << "modifyvm" << vmName << "--audio" << "pulse" << "--audiocontroller" << "hda" << "--audioin" << "on" << "--audioout" << "on";
progress.start("VBoxManage", command);
progress.waitForFinished();
// 设置显存
// VBoxManage modifyvm [name] --vram 128
dialog->setValue(100 / SETTINGSTEP * 5);
command.clear(); // 清空参数列表
command << "modifyvm" << vmName << "--vram" << "128";
progress.start("VBoxManage", command);
progress.waitForFinished();
// 设置鼠标
// VBoxManage modifyvm [name] --mouse ps2
dialog->setValue(100 / SETTINGSTEP * 6);
if(setMouse == "ps2"){
command.clear(); // 清空参数列表
command << "modifyvm" << vmName << "--mouse" << "ps2";
progress.start("VBoxManage", command);
progress.waitForFinished();
}
// 结束
dialog->setValue(100);
emit MessageBoxOpenVM(vmName);
dialog->close();
delete dialog;
}

View File

@@ -0,0 +1,33 @@
/*
* 重写 QThread 以实现多线程下载功能
*/
#ifndef DOWNLOADTHREAD_H
#define DOWNLOADTHREAD_H
#include <QObject>
#include <QThread>
#include <QProgressDialog>
class DownloadThread : public QThread // 继承 QThread
{
public:
DownloadThread(QProgressDialog *dialog, QString url, QString save, QString mouse, bool NotDownload);
void SettingVirtualMachine(QString savePath);
QProgressDialog *dialog;
QString fileUrl;
QString vmName;
QString setMouse;
bool notDownload;
QString notDownloadPath;
protected:
void run(); // 核心
signals:
// 防止非主线程刷新控件导致程序退出
void MessageBoxInfo(QString info);
void MessageBoxError(QString info);
void MessageBoxOpenVM(QString vmName);
};
#endif // DOWNLOADTHREAD_H

View File

@@ -0,0 +1,44 @@
#include "getipserver.h"
#include <QTcpServer>
#include <mainwindow.h>
#include <QtNetwork>
#include <QHostAddress>
#include <QMessageBox>
GetIPServer::GetIPServer(QLabel *localIp)
{
lock = false;
tcp = new QTcpServer();
QHostAddress ip("0.0.0.0");
tcp->listen(QHostAddress::Any, 30201);
// 获取 IP 地址
QString IpAddress;
foreach (QHostAddress address, QNetworkInterface::allAddresses())
{
if(address.protocol() == QAbstractSocket::IPv4Protocol && address.toString() != "127.0.0.1" && address.toString() != "192.168.250.1"){
IpAddress = address.toString();
}
}
qDebug() << "服务器IP" << IpAddress;
qDebug() << "服务器端口:" << tcp->serverPort();
localIp->setText("访问http://" + IpAddress + ":" + QString::number(tcp->serverPort()) + " 连接");
connect(tcp, &QTcpServer::newConnection, this, [this](){
tcpSocket = tcp->nextPendingConnection();
QString ipAddress = QHostAddress(tcpSocket->peerAddress().toIPv4Address()).toString();
qDebug() << ipAddress;
qDebug() << tcpSocket->peerPort();
tcpSocket->write("HTTP/1.1 200 OK"\
"Content-Type: text/html;charset=utf-8"\
"\n\n");
tcpSocket->write(QString("<html><body><p>IP Address: " + ipAddress + "</p><p>Get Port: " + QString::number(tcpSocket->peerPort()) + "</p></body></html>").toLocal8Bit());
tcpSocket->close();
if(lock){
return;
}
lock = true;
QMessageBox::question(NULL, "提示", "IP地址为“" + ipAddress + "”想要连接,是否连接?");
lock = false;
});
qDebug() << "a";
}

View File

@@ -0,0 +1,20 @@
#ifndef GETIPSERVER_H
#define GETIPSERVER_H
#include <mainwindow.h>
#include <QTcpServer>
#include <QLabel>
class GetIPServer : public QMainWindow
{
public:
GetIPServer(QLabel *localIp);
void ConnectClient();
private:
bool lock;
QTcpServer *tcp;
QTcpSocket *tcpSocket;
};
#endif // GETIPSERVER_H

11
Android X86/AXVM/main.cpp Normal file
View File

@@ -0,0 +1,11 @@
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}

View File

@@ -0,0 +1,149 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QStringListModel>
#include <QStandardItem>
#include <QThread>
#include <QInputDialog>
#include <QFileDialog>
// 用于镜像信息获取
#include <QNetworkReply>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
// 用于解析 JSON 数据
#include <QJsonObject>
#include <QJsonDocument>
#include <QJsonArray>
// 用于下载文件
#include <QProgressDialog>
#include "downloadthread.h"
#include <QLoggingCategory>
// 用于执行命令
#include <QProcess>
// 用于 Mini HTTP 服务器搭建
#include <getipserver.h>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QLoggingCategory::defaultCategory()->setEnabled(QtDebugMsg, true);
// 获取网络镜像列表
QEventLoop loop;
QNetworkAccessManager manager;
QNetworkReply *reply = manager.get(QNetworkRequest(QUrl("http://120.25.153.144/AXVM/list.json")));
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();
// 解析获取数据并显示
QString imageJsonList = reply->readAll();
QJsonDocument imageList = QJsonDocument::fromJson(imageJsonList.toUtf8());
name = imageList.array();
QStringList nameList;
QStandardItemModel *nameListModel = new QStandardItemModel(this);
int size = name.size();
qDebug() << size;
for (int i = 0; i < size; ++i) {
QJsonValue value = name.at(i);
QJsonArray obj = value.toArray();
QStandardItem *item = new QStandardItem(obj.at(0).toString());
nameListModel->appendRow(item);
}
ui->urlImageList->setModel(nameListModel);
// 允许 qDebug() 输出
QLoggingCategory::defaultCategory()->setEnabled(QtDebugMsg, true);
GetIPServer *ip = new GetIPServer(ui->localIP);
}
MainWindow::~MainWindow()
{
delete ui;
}
// 安装事件
void MainWindow::on_pushButton_2_clicked()
{
if(ui->urlImageList->selectionModel()->currentIndex().row() == -1){ // 未选择任何选项
QMessageBox::information(this, "提示", "您未选择任何项");
return;
}
downloadDialog = new QProgressDialog("", "无用的按钮", 0, 100, this);
downloadDialog->setWindowTitle("正在下载“" + name.at(ui->urlImageList->selectionModel()->currentIndex().row()).toArray().at(0).toString() + "");
downloadDialog->show();
if(name.at(ui->urlImageList->selectionModel()->currentIndex().row()).toArray().at(3).isArray()){
if(QMessageBox::question(this, "提示", "推荐您手动下载格式包,是否手动获取链接并下载?") == QMessageBox::Yes){
QJsonArray urlList = name.at(ui->urlImageList->selectionModel()->currentIndex().row()).toArray().at(3).toArray();
QString urlThings = "";
for(int i = 0; i < urlList.size(); i=i+2){
urlThings += urlList.at(i).toString() + "" + urlList.at(i + 1).toString();
}
QString choose = QInputDialog::getMultiLineText(this,
"" + name.at(ui->urlImageList->selectionModel()->currentIndex().row()).toArray().at(0).toString() + "”下载链接",
"请在下面任选一个链接复制到浏览器地址栏进行下载下载完成后按下“OK”按钮选择下载的 OVA 文件如果想要取消操作请按“Cancal”",
urlThings);
if(choose == ""){ // 忽略取消
downloadDialog->close();
delete downloadDialog;
return;
}
QString path = QFileDialog::getOpenFileName(this, "浏览 OVA 文件", "~", "OVA文件(*.ova);;全部文件(*.*)");
if(path == ""){ // 忽略取消
downloadDialog->close();
delete downloadDialog;
return;
}
thread = new DownloadThread(downloadDialog,
path,
name.at(ui->urlImageList->selectionModel()->currentIndex().row()).toArray().at(0).toString(),
name.at(ui->urlImageList->selectionModel()->currentIndex().row()).toArray().at(2).toString(),
true);
//connect(thread, &DownloadThread::MessageBoxInfo, this, [this](QString info){QMessageBox::information(this, "提示", info);});
//connect(thread, &DownloadThread::MessageBoxError, this, [this](QString info){QMessageBox::critical(this, "错误", info);});
/*connect(thread, &DownloadThread::MessageBoxOpenVM, this, [this](QString vmName){
if(QMessageBox::question(this, "提示", "安装成功!是否现在马上启动虚拟机?") == QMessageBox::Yes){
QProcess process;
QStringList command;
command << "startvm" << vmName;
process.start("VBoxManage", command);
process.waitForFinished();
qDebug() << process.readAllStandardError();
qDebug() << process.readAllStandardOutput();
}});*/
thread->start();
return;
}
}
thread = new DownloadThread(downloadDialog,
name.at(ui->urlImageList->selectionModel()->currentIndex().row()).toArray().at(1).toString(),
name.at(ui->urlImageList->selectionModel()->currentIndex().row()).toArray().at(0).toString(),
name.at(ui->urlImageList->selectionModel()->currentIndex().row()).toArray().at(2).toString(),
false);
//connect(thread, &DownloadThread::MessageBoxInfo, this, &MainWindow::MessageBoxInfo);
//connect(thread, &DownloadThread::MessageBoxError, this, &MainWindow::MessageBoxError);
//connect(thread, &DownloadThread::MessageBoxOpenVM, this, &MainWindow::OpenVM);
thread->start();
}
void DownloadThread::MessageBoxInfo(QString info){
QMessageBox::information(NULL, "提示", info);
}
void DownloadThread::MessageBoxError(QString info){
QMessageBox::critical(NULL, "错误", info);
}
void DownloadThread::MessageBoxOpenVM(QString vmName)
{
if(QMessageBox::question(NULL, "提示", "安装成功!是否现在马上启动虚拟机?") == QMessageBox::Yes){
QProcess process;
QStringList command;
command << "startvm" << vmName;
process.start("VBoxManage", command);
process.waitForFinished();
qDebug() << process.readAllStandardError();
qDebug() << process.readAllStandardOutput();
}
}
void MainWindow::on_centralWidget_destroyed()
{
}

View File

@@ -0,0 +1,38 @@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include "downloadthread.h"
#include <QMainWindow>
#include <QNetworkReply>
#include <QProgressDialog>
#include <QJsonArray>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_pushButton_2_clicked();
//void OpenVM(QString vmName);
//void MessageBoxInfo(QString info);
//void MessageBoxError(QString info);
void on_centralWidget_destroyed();
private:
Ui::MainWindow *ui;
DownloadThread *thread;
QProgressDialog *downloadDialog;
QJsonArray name;
};
#endif // MAINWINDOW_H

View File

@@ -0,0 +1,279 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>683</width>
<height>416</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralWidget">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="tabPosition">
<enum>QTabWidget::West</enum>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<property name="elideMode">
<enum>Qt::ElideNone</enum>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>操作</string>
</attribute>
<layout class="QGridLayout" name="gridLayout" columnstretch="0">
<item row="3" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="label_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>选择虚拟机:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBox"/>
</item>
<item>
<widget class="QPushButton" name="pushButton_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>IP地址</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit"/>
</item>
<item>
<widget class="QPushButton" name="pushButton_3">
<property name="text">
<string>连接</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="4" column="0">
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="4">
<widget class="QPushButton" name="pushButton_11">
<property name="text">
<string>重置虚拟机</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="pushButton_8">
<property name="text">
<string>开启虚拟机</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="pushButton_10">
<property name="text">
<string>设置虚拟机</string>
</property>
</widget>
</item>
<item row="0" column="5">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="pushButton_9">
<property name="text">
<string>关闭虚拟机</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QPushButton" name="pushButton_12">
<property name="text">
<string>重置虚拟机配置</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>安装/卸载应用:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_2"/>
</item>
<item>
<widget class="QPushButton" name="pushButton_6">
<property name="text">
<string>安装</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_5">
<property name="text">
<string>浏览</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_4">
<property name="text">
<string>卸载</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="localIP">
<property name="text">
<string>访问http://127.0.0.1:30201 连接</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="5" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>新建模拟器</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QListView" name="listView"/>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>&lt;&lt;</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>&gt;&gt;</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QListView" name="urlImageList"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_3">
<attribute name="title">
<string>关于</string>
</attribute>
</widget>
</widget>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>©2022~Nowgfdgd xi</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QStatusBar" name="statusBar"/>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>

129
Android X86/main.py Executable file
View File

@@ -0,0 +1,129 @@
import os
import sys
import threading
#import ttkthemes
import tkinter as tk
import tkinter.ttk as ttk
import tkinter.messagebox as messagebox
class AddVirtualMachine():
def ShowWindow():
messgae = tk.Toplevel()
chooseImageString = tk.StringVar()
chooseImageString.set("请选择……")
nameTips = tk.Label(messgae, text="虚拟机名称")
nameEntry = tk.Entry(messgae, width=50)
memoryTips = tk.Label(messgae, text="虚拟机内存分配")
memoryDefultValue = tk.Checkbutton(messgae, text="默认值")
memoryValue = tk.Scale(messgae, from_=1, orient=tk.HORIZONTAL)
chooseImageTips = tk.Label(messgae, text="选择虚拟机镜像:")
chooseImage = tk.OptionMenu(messgae, chooseImageString, [""])
quicklyFasterSpeed = tk.Checkbutton(messgae, text="启动 kvm 加速")
tipsThings = tk.Label(messgae, text="虚拟机备注:")
tipsThingsTips = tk.Text(messgae, height=5, width=50)
controlFrame = tk.Frame(messgae)
cancal = tk.Button(controlFrame ,text="取消")
ok = tk.Button(controlFrame, text="确定")
messgae.title("添加 Android X86 虚拟机")
messgae.resizable(0, 0)
memoryValue.set(33)
cancal.grid(row=0, column=0)
ok.grid(row=0, column=1)
nameTips.grid(row=0, column=0)
nameEntry.grid(row=0, column=1, columnspan=3)
memoryTips.grid(row=1, column=0)
memoryDefultValue.grid(row=1, column=1)
memoryValue.grid(row=1, column=2)
chooseImageTips.grid(row=2, column=0)
chooseImage.grid(row=2, column=1)
quicklyFasterSpeed.grid(row=2, column=2)
tipsThings.grid(row=3, column=0)
tipsThingsTips.grid(row=3, column=1, columnspan=3, rowspan=2, sticky=tk.W)
controlFrame.grid(row=5, column=3, sticky=tk.E)
#controlFrame.grid(row=5, column=2)
messgae.mainloop()
class DelVirtualMachine():
def Tips():
if messagebox.askokcancel(title="提示", message="你确定要删除此虚拟机吗?\n删除后将无法恢复!"):
messagebox.showinfo(title="提示", message="删除完毕!")
class AddVirtualImage():
def ShowWindow():
message = tk.Toplevel()
urlImageDownloadTips = tk.Label(message, text="可下载镜像:")
urlImageDownloadList = ttk.Treeview(message)
addImage = tk.Button(message, text="")
delImage = tk.Button(message, text="")
ImageTips = tk.Label(message, text="已下载镜像:")
ImageList = ttk.Treeview(message)
ok = tk.Button(message, text="确定")
message.title("下载新的镜像")
message.resizable(0, 0)
urlImageDownloadTips.grid(row=0, column=0, sticky=tk.W)
urlImageDownloadList.grid(row=1, column=0, rowspan=4)
addImage.grid(row=2, column=1)
delImage.grid(row=3, column=1)
ImageTips.grid(row=0, column=2, sticky=tk.W)
ImageList.grid(row=1, column=2, rowspan=4)
ok.grid(row=5, column=2, sticky=tk.E)
message.mainloop()
class SettingVirtualMachine():
pass
def RunVirtualMachine():
threading.Thread(target=os.system, args=["kvm --cdrom {} --hda {} -m {}G".format("", "", "")]).start()
window = tk.Tk()
virtualMachineList = ttk.Treeview(window)
addVirtualMachine = tk.Button(window, text="", command=AddVirtualMachine.ShowWindow)
delVirtualMachine = tk.Button(window, text="", command=DelVirtualMachine.Tips)
addVirtualMachineImage = tk.Button(window, text="", command=AddVirtualImage.ShowWindow)
settingVirtualMachine = tk.Button(window, text="⚙️")
runVirtualMachine = tk.Button(window, text="", command=RunVirtualMachine)
tipsThings = tk.Text(window, height=5, width=30)
menu = tk.Menu(window)
programMenu = tk.Menu(menu, tearoff=0)
yuanMenu = tk.Menu(menu, tearoff=0)
menu.add_cascade(label="程序", menu=programMenu)
menu.add_cascade(label="", menu=yuanMenu)
programMenu.add_command(label="退出程序", command=sys.exit)
yuanMenu.add_command(label="更换源")
yuanMenu.add_command(label="修改默认源")
#window.configure(bg="white")
#ttkthemes.ThemedStyle(window).set_theme("ubuntu")
window.title("Android X86 Runner")
window.resizable(0, 0)
window.config(menu=menu)
runVirtualMachine.configure(foreground="green")
#tipsThings.configure(bg="white", foreground="black", state=tk.DISABLED)
virtualMachineList.grid(row=0, column=0, rowspan=3)
addVirtualMachine.grid(row=0, column=1)
delVirtualMachine.grid(row=0, column=2)
addVirtualMachineImage.grid(row=0, column=3)
settingVirtualMachine.grid(row=0, column=4)
runVirtualMachine.grid(row=0, column=5)
tipsThings.grid(row=2, column=1, columnspan=5, sticky=tk.W)
window.mainloop()

606
AutoConfig.py Executable file
View File

@@ -0,0 +1,606 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi
# 版本2.4.0
# 更新时间2022年10月25日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
#################
# 引入所需的库
#################
import os
import sys
import base64
import json
import traceback
import urllib.request
import requests
import updatekiller
import PyQt5.QtWidgets as QtWidgets
from UI.AutoConfig import *
from Model import *
try:
import PyQt5.QtWebEngineWidgets as QtWebEngineWidgets
webeng = True
except:
print("未安装 QtWebEngine") #这样更容易排查问题
webeng = False
print("""太常引·建康中秋夜为吕叔潜赋
一轮秋影转金波,飞镜又重磨。把酒问姮娥:被白发、欺人奈何?
乘风好去,长空万里,直下看山河。斫去桂婆娑,人道是、清光更多。""")
print("")
print("""译文:一轮缓缓移动的秋月洒下万里金波,就像那刚磨亮的铜镜又飞上了天廓。我举起酒杯问那月中的嫦娥:怎么办呢?白发日增,好像故意欺负我。
我要乘风飞上万里长空,俯视祖国的大好山河。还要砍去月中摇曳的桂树枝柯,人们说,这将使月亮洒下人间的光辉更多。""")
print("================================")
urlSourcesList = [
"http://config.uengine-runner.gfdgdxi.top/", # Github 源
"https://gitee.com/gfdgd-xi/uengine-wine-runner-auto-configuration-script/raw/master/", # Gitee 源
"https://code.gitlink.org.cn/gfdgd_xi/uengine-runner-list/raw/branch/master/auto", # Gitlink 源
"http://gfdgdxi.msns.cn/uengine-runner-list/auto/", # 备用源1纯 IPv6 源
"http://gfdgdxi.free.idcfengye.com/uengine-runner-auto-configuration-script/", # 备用源2
"http://gfdgdxi.free.idcfengye.com/uengine-runner-list/auto/", # 备用源 3
"http://127.0.0.1/uengine-runner-list/auto/" # 本地测试源
]
urlSourcesIndex = 0
urlSources = urlSourcesList[0]
lists = []
class ProgramRunStatusUpload():
msgWindow = None
starLayout = None
fen = None
starList = []
sha1Value = ""
programName = None
def ChangeStar():
if ProgramRunStatusUpload.fen.currentIndex() > 5:
for i in ProgramRunStatusUpload.starList:
i.setText(f"<img src='{programPath}/Icon/BadStar.svg' width=25>")
return
for i in range(ProgramRunStatusUpload.fen.currentIndex()):
ProgramRunStatusUpload.starList[i].setText(f"<img src='{programPath}/Icon/Star.svg' width=25>")
head = ProgramRunStatusUpload.fen.currentIndex()
end = len(ProgramRunStatusUpload.starList)
for i in range(head, end):
ProgramRunStatusUpload.starList[i].setText(f"<img src='{programPath}/Icon/UnStar.svg' width=25>")
def ShowWindow(sha="", title=""):
ProgramRunStatusUpload.starList = []
ProgramRunStatusUpload.sha1Value = sha
ProgramRunStatusUpload.msgWindow = QtWidgets.QMainWindow()
msgWidget = QtWidgets.QWidget()
msgWidgetLayout = QtWidgets.QGridLayout()
ProgramRunStatusUpload.programName = QtWidgets.QLineEdit()
ProgramRunStatusUpload.fen = QtWidgets.QComboBox()
ProgramRunStatusUpload.starLayout = QtWidgets.QHBoxLayout()
upload = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "上传"))
upload.clicked.connect(ProgramRunStatusUpload.Upload)
if title != "":
ProgramRunStatusUpload.programName.setText(title)
ProgramRunStatusUpload.programName.setDisabled(True)
# 生成星星列表
for i in [1, 1, 1, 1, 0]:
ProgramRunStatusUpload.starList.append(QtWidgets.QLabel(f"<img src='{programPath}/Icon/{['Un', ''][i]}Star.svg' width=25>"))
ProgramRunStatusUpload.starLayout.addWidget(ProgramRunStatusUpload.starList[-1])
ProgramRunStatusUpload.starLayout.addItem(QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum))
ProgramRunStatusUpload.programName.setPlaceholderText(QtCore.QCoreApplication.translate("U", "如果这个程序和程序名确实是合法还是检测到敏感词改为“NULL”即可"))
ProgramRunStatusUpload.fen.addItems(["0分", "1分", "2分", "3分", "4分", "5分"])
ProgramRunStatusUpload.fen.setCurrentIndex(4)
ProgramRunStatusUpload.fen.currentIndexChanged.connect(ProgramRunStatusUpload.ChangeStar)
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "程序名:")), 0, 0)
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "评分:")), 1, 0)
msgWidgetLayout.addWidget(ProgramRunStatusUpload.programName, 0, 1)
msgWidgetLayout.addWidget(ProgramRunStatusUpload.fen, 1, 1)
msgWidgetLayout.addLayout(ProgramRunStatusUpload.starLayout, 2, 1)
msgWidgetLayout.addWidget(upload, 3, 1)
msgWidget.setLayout(msgWidgetLayout)
ProgramRunStatusUpload.msgWindow.setCentralWidget(msgWidget)
ProgramRunStatusUpload.msgWindow.setWindowTitle(QtCore.QCoreApplication.translate("U", "上传程序运行情况"))
ProgramRunStatusUpload.msgWindow.setWindowIcon(QtGui.QIcon(iconPath))
ProgramRunStatusUpload.msgWindow.show()
def Upload():
try:
#if ProgramRunStatusUpload.sha1Value == "":
#ProgramRunStatusUpload.sha1Value = ProgramRunStatusUpload.GetSHA1(e2.currentText())
QtWidgets.QMessageBox.information(None, QtCore.QCoreApplication.translate("U", "提示"), requests.post(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0OjMwMjUwL2Jhc2g=").decode("utf-8"), {
"BashName": ProgramRunStatusUpload.sha1Value,
"Fen": ProgramRunStatusUpload.fen.currentIndex()
}).json()["Error"])
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(None, QtCore.QCoreApplication.translate("U", "错误"), QtCore.QCoreApplication.translate("U", "数据上传失败!"))
class InformationWindow():
def ShowWindow():
#webeng = False
# 获取选中项
try:
choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
except:
QtWidgets.QMessageBox.critical(window, "错误", "您未选择任何配置文件")
return
fileName = ""
for i in lists:
print(i)
if i[0] == choose:
fileName = i[1]
break
aboutHtml = ""
try:
get = requests.get(f"{urlSources}/information/{fileName}.txt")
if get.status_code / 100 != 2 and get.status_code / 100 != 3:
int("Bad")
about = get.text
aboutHtml = str(about)
if not "<" in about:
# 非 Html 标签
for i in about.splitlines():
about += f"<p>{i}</p>\n"
#about = f"<pre>{about}</pre>"
about = f"<h1>关于“{choose}”的介绍</h1>\n{about}"
except:
traceback.print_exc()
about = f"<h1>关于“{choose}”的介绍</h1>\n<p>暂无此程序的介绍</p>"
try:
import requests as r
fenlists = requests.get("http://data.download.gfdgdxi.top/BashAppFen/" + urllib.request.quote(fileName) + base64.b64decode("L2FsbC5qc29u").decode("utf-8"), timeout=1000).json()
tipsInfo = ""
except:
fenlists = [0, 0, 0, 0, 0]
tipsInfo = "暂时无人提交此脚本运行情况,是否立即提交?"
maxHead = fenlists.index(max(fenlists))
allNumber = 0
for i in fenlists:
allNumber += i
try:
maxNumber = max(fenlists) / allNumber * 100
if tipsInfo == "":
tipsInfo = f"{maxNumber}%的用户选择了这个评分"
except:
pass
end = 5
starHtml = ""
if maxHead > 5:
for i in range(end):
if webeng:
starHtml += f"<img src='http://wine-runner.gfdgdxi.top/Icon/BadStar.svg' width=50>\n"
else:
starHtml += f"<img src='{programPath}/Icon/BadStar.svg' width=50>\n"
else:
for i in range(maxHead):
if webeng:
starHtml += f"<img src='http://wine-runner.gfdgdxi.top/Icon/Star.svg' width=50>\n"
else:
starHtml += f"<img src='{programPath}/Icon/Star.svg' width=50>\n"
head = maxHead
for i in range(head, end):
if webeng:
starHtml += f"<img src='http://wine-runner.gfdgdxi.top/Icon/UnStar.svg' width=50>"
else:
starHtml += f"<img src='{programPath}/Icon/UnStar.svg' width=50>"
about += f"\n<hr/><h1>评分情况</h1>\n<p align='center'>{starHtml}</p>\n<p align='center'>{tipsInfo}</p>"
message = QtWidgets.QDialog()
messageLayout = QtWidgets.QVBoxLayout()
if webeng:
informationText = QtWebEngineWidgets.QWebEngineView()
print(aboutHtml)
if aboutHtml[:7] == "Visit: ":
url = aboutHtml[7:].splitlines()[0]
print(url)
informationText.setUrl(QtCore.QUrl(url.strip()))
else:
#informationText.linkClicked.connect(lambda: print("a"))
try:
with open("/tmp/deepin-wine-runner-information.html", "w") as file:
file.write(about)
informationText.setUrl(QtCore.QUrl("file:///tmp/deepin-wine-runner-information.html"))
except:
traceback.print_exc()
informationText.setHtml(about)
#informationText.urlChanged.connect(lambda: informationText.setUrl(QtCore.QUrl("https://gfdgd-xi.github.io")))
else:
informationText = QtWidgets.QTextBrowser()
informationText.setHtml(about)
uploadFen = QtWidgets.QPushButton("提交评分")
uploadFen.clicked.connect(lambda: ProgramRunStatusUpload.ShowWindow(fileName, choose))
#informationText.setUrl(QtCore.QUrl("https://gfdgd-xi.github.io"))
messageLayout.addWidget(informationText)
messageLayout.addWidget(uploadFen)
message.setWindowTitle(f"关于“{choose}”的介绍")
message.resize(int(message.frameSize().width() * 1.5), int(message.frameSize().height()))
message.setLayout(messageLayout)
#message.setWindowModality(ApplicationModal);
message.show()
message.exec_()
def Add(lists: list):
global pinLunLayout
pinLunLayout1 = QtWidgets.QVBoxLayout()
pinLunLayout = QtWidgets.QWidget()
pinLunLayout.setLayout(pinLunLayout1)
for i in range(pinLunLayout1.count()):
pinLunLayout1.removeItem(pinLunLayout1.itemAt(i))
for i in lists:
widget = QtWidgets.QWidget()
inLayout = QtWidgets.QGridLayout()
inLayout.addWidget(QtWidgets.QLabel("<hr>"), 0, 0, 1, 3)
inLayout.addWidget(QtWidgets.QLabel(f"<b>{i[0]}</b>"), 1, 0)
inLayout.addWidget(QtWidgets.QLabel(f"<p align='right'><b>第{i[1]}层</b></p>"), 1, 2)
inLayout.addWidget(QtWidgets.QLabel(i[2]), 2, 0, 1, 3)
widget.setLayout(inLayout)
pinLunLayout1.addWidget(widget)
#pinLunLayout.addWidget(QtWidgets.QLabel("<hr/>"))
# pinLunLayout = widget
all = 0
now = 0
class ProgramRunStatusShow():
msgWindow = None
pingLunLayout = None
def ShowWindow():
global lists
global all
global now
global leftButton
global rightButton
# 获取选中项
try:
choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
except:
QtWidgets.QMessageBox.critical(window, "错误", "您未选择任何配置文件")
return
fileName = ""
for i in lists:
print(i)
if i[0] == choose:
fileName = i[1]
break
try:
fenlists = requests.get("http://data.download.gfdgdxi.top/BashAppFen/" + urllib.request.quote(fileName) + base64.b64decode("L2FsbC5qc29u").decode("utf-8")).json()
tipsInfo = ""
except:
#traceback.print_exc()
fenlists = [0, 0, 0, 0, 0]
tipsInfo = "暂时无人提交此脚本评分,是否立即提交?"
maxHead = fenlists.index(max(fenlists))
allNumber = 0
for i in fenlists:
allNumber += i
try:
maxNumber = max(fenlists) / allNumber * 100
if tipsInfo == "":
tipsInfo = f"{maxNumber}%的用户选择了这个评分"
except:
pass
ProgramRunStatusShow.msgWindow = QtWidgets.QMainWindow()
msgWidget = QtWidgets.QWidget()
msgWidgetLayout = QtWidgets.QGridLayout()
starLayout = QtWidgets.QHBoxLayout()
uploadButton = QtWidgets.QPushButton(QtCore.QCoreApplication.translate("U", "点此提交评分"))
uploadButton.clicked.connect(lambda: ProgramRunStatusUpload.ShowWindow(fileName, choose))
msgWidgetLayout.addWidget(QtWidgets.QLabel(QtCore.QCoreApplication.translate("U", "综合评价:")), 0, 0, 2, 1)
msgWidgetLayout.addLayout(starLayout, 0, 1, 2, 1)
msgWidgetLayout.addWidget(QtWidgets.QLabel(tipsInfo), 0, 2)
#msgWidgetLayout.addWidget(QtWidgets.QLabel("" if dateVersion == "" else f"数据版本:{dateVersion}"), 2, 0, 1, 2)
msgWidgetLayout.addWidget(uploadButton, 1, 2)
end = 5
if maxHead > 5:
for i in range(end):
starLayout.addWidget(QtWidgets.QLabel(f"<img src='{programPath}/Icon/BadStar.svg' width=50>"))
else:
for i in range(maxHead):
starLayout.addWidget(QtWidgets.QLabel(f"<img src='{programPath}/Icon/Star.svg' width=50>"))
head = maxHead
for i in range(head, end):
starLayout.addWidget(QtWidgets.QLabel(f"<img src='{programPath}/Icon/UnStar.svg' width=50>"))
pingLun = QtWidgets.QWidget()
msgWidgetLayout.addWidget(pingLun, 4, 0, 1, 3)
pingLunLayout = QtWidgets.QGridLayout()
pingLunInfo = QtWidgets.QTextEdit()
#pingLunInfo.document().setMaximumBlockCount(5)
uploadButton = QtWidgets.QPushButton("评论")
pingLunLayout.addWidget(pingLunInfo, 0, 0, 1, 3)
pingLunLayout.addWidget(uploadButton, 1, 2)
pingLunInfo.setPlaceholderText("""在此输入评论,须知:
※1、不得含有色情、暴力、侮辱等违法内容以及不得有广告推广等内容
※2、字数至少 15 字,但不得超过 250 字,评论内容最多 5 行,且评论内容将会进行审核,意味着评论不会实时生效显示
※3、如果审核不通过将会被屏蔽并拉入黑名单以及公开发布 IP 地址,评论前请三思!""")
leftButton = QtWidgets.QPushButton("上一页")
rightButton = QtWidgets.QPushButton("下一页")
if maxHead == 0:
#pingLun.setDisabled(True)
pass
else:
# 显示最新的3条评论
try:
all = int(requests.get(f"http://bashpinlun.gfdgdxi.top/{urllib.request.quote(fileName)}/data.txt").text)
now = all - 3
print(all)
if all < 3:
start = 0
rightButton.setDisabled(True)
else:
start = all - 3
uploadList = []
for i in range(all - 1, start - 1, -1):
print(f"{i + 1} 条评论:")
info = requests.get(f"http://bashpinlun.gfdgdxi.top/{urllib.request.quote(fileName)}/pf-{i}.txt").text.strip()
print(info)
uploadList.append([f"用户{i + 1}", i + 1, info])
Add(uploadList)
except:
traceback.print_exc()
try:
ProgramRunStatusShow.pingLunLayout = pingLunLayout
pingLunLayout.addWidget(pinLunLayout, 2, 0, 1, 3)
except:
leftButton.setDisabled(True)
rightButton.setDisabled(True)
leftButton.clicked.connect(Left)
rightButton.clicked.connect(Right)
pingLunLayout.addWidget(leftButton, 3, 0)
pingLunLayout.addWidget(rightButton, 3, 2)
leftButton.setDisabled(True)
pingLun.setLayout(pingLunLayout)
msgWidget.setLayout(msgWidgetLayout)
uploadButton.clicked.connect(lambda: ProgramRunStatusShow.Upload(pingLunInfo.toPlainText(), fileName))
ProgramRunStatusShow.msgWindow.setCentralWidget(msgWidget)
ProgramRunStatusShow.msgWindow.setWindowIcon(QtGui.QIcon(iconPath))
ProgramRunStatusShow.msgWindow.setWindowTitle(f"脚本“{choose}”运行情况")
ProgramRunStatusShow.msgWindow.show()
def Upload(info, name):
print(f"脚本:{name}")
print(f"评论:{info}")
try:
res = requests.post(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0OjMwMjUwL1BpbmdMdW4=").decode("utf-8"), {"PinLun": info, "Version": name}).json()
print(res)
if res["ExitCode"]:
QtWidgets.QMessageBox.critical(ProgramRunStatusShow.msgWindow, "错误", res["Error"])
return
QtWidgets.QMessageBox.information(ProgramRunStatusShow.msgWindow, "提示", res["Error"])
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(ProgramRunStatusShow.msgWindow, "错误", "提交失败")
def UpdateFen():
global now
fileName = ""
# 获取选中项
try:
choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
except:
QtWidgets.QMessageBox.critical(window, "错误", "您未选择任何配置文件")
return
for i in lists:
print(i)
if i[0] == choose:
fileName = i[1]
break
uploadList = []
for i in range(now + 2, now - 1, -1):
print(f"{i + 1} 条评论:")
info = requests.get(f"http://bashpinlun.gfdgdxi.top/{urllib.request.quote(fileName)}/pf-{i}.txt").text.strip()
print(info)
uploadList.append([f"用户{i + 1}", i + 1, info])
#ProgramRunStatusShow.pingLunLayout.removeItem(ProgramRunStatusShow.pingLunLayout.itemAt(2))
ProgramRunStatusShow.pingLunLayout.removeWidget(pinLunLayout)
pinLunLayout.hide()
#pinLunLayout.
Add(uploadList)
#l = QtWidgets.QGridLayout()
#l.removeWidget(pinLunLayout)
ProgramRunStatusShow.pingLunLayout.addWidget(pinLunLayout, 2, 0, 1, 3)
def Left():
global now
global all
if now + 6 >= all:
now = all - 3
leftButton.setDisabled(True)
rightButton.setEnabled(True)
else:
now += 3
leftButton.setEnabled(True)
rightButton.setEnabled(True)
UpdateFen()
print(all)
print(now)
def Right():
global now
if now - 3 < 0:
now = 0
rightButton.setDisabled(True)
leftButton.setEnabled(True)
else:
now -= 3
leftButton.setEnabled(True)
rightButton.setEnabled(True)
UpdateFen()
def UploadFen():
global lists
# 获取选中项
try:
choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
except:
QtWidgets.QMessageBox.critical(window, "错误", "您未选择任何配置文件")
return
fileName = ""
for i in lists:
print(i)
if i[0] == choose:
fileName = i[1]
break
ProgramRunStatusUpload.ShowWindow(fileName, choose)
class Connect:
def SearchBotton_Clicked():
nmodel = QtGui.QStandardItemModel(window)
if ui.searchThings.text() == "":
# 显示全部内容
for i in lists:
nmodel.appendRow(QtGui.QStandardItem(i[0]))
ui.searchList.setModel(nmodel)
return
for i in lists:
# 显示筛选的内容
if ui.searchThings.text().upper() in i[0].upper():
nmodel.appendRow(QtGui.QStandardItem(i[0]))
ui.searchList.setModel(nmodel)
def RunBotton_Clicked():
# 获取选中项
try:
choose = ui.searchList.selectionModel().selectedIndexes()[0].data()
except:
QtWidgets.QMessageBox.critical(window, "错误", "您未选择任何配置文件")
return
fileName = ""
for i in lists:
print(i)
if i[0] == choose:
fileName = i[1]
break
# 下载脚本
things = ""
try:
print(f"{urlSources}/{fileName}")
file = open("/tmp/wine-runner-auto-config.wsh", "w")
things = requests.get(f"{urlSources}/{fileName}").text
file.write(things)
file.close()
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(window, "错误", "无法获取配置文件")
return
# 判断版本以启动对应的解释器
# 做到新旧兼容
if "($" in things:
print("a")
OpenTerminal(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/ConfigLanguareRunner.py' '/tmp/wine-runner-auto-config.wsh' --system")
print(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/ConfigLanguareRunner.py' '/tmp/wine-runner-auto-config.wsh' --system")
# 执行脚本
print(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/AutoShell/main.py' '/tmp/wine-runner-auto-config.wsh'")
OpenTerminal(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/AutoShell/main.py' '/tmp/wine-runner-auto-config.wsh'")
#process = QtCore.QProcess()
#process.start(f"{programPath}/launch.sh", ["deepin-terminal", "-e", "env", f"WINE={wine}", f"WINEPREFIX={wineprefix}", f"{programPath}/ConfigLanguareRunner.py", "/tmp/wine-runner-auto-config.wsh", "--system"])
#process.waitForFinished()
def OpenFile_Triggered():
path = QtWidgets.QFileDialog.getOpenFileName(window, "提示", homePath, "配置文件(*.sh *.wsh);;全部文件(*.*)")
if path[0] == "":
return
try:
things = ""
with open(path) as file:
things = file.read()
except:
traceback.print_exc()
# 判断版本以启动对应的解释器
# 做到新旧兼容
if "($" in things:
OpenTerminal(f"env WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/ConfigLanguareRunner.py' '{path[0]}' --system")
# 执行脚本
OpenTerminal(f"env WINEARCH='{os.getenv('WINEARCH')}' WINEDEBUG='{os.getenv('WINEDEBUG')}' WINE='{wine}' WINEPREFIX='{wineprefix}' '{programPath}/AutoShell/main.py' '{path[0]}'")
#process = QtCore.QProcess()
#process.start(f"{programPath}/launch.sh", ["deepin-terminal", "-e", "env", f"WINE={wine}", f"WINEPREFIX={wineprefix}", f"{programPath}/ConfigLanguareRunner.py", path[0], "--system"])
#process.waitForFinished()
# 读取文本文档
def readtxt(path):
f = open(path, "r") # 设置文件对象
str = f.read() # 获取内容
f.close() # 关闭文本对象
return str # 返回结果
def ChangeSources():
global urlSources
global urlSourcesIndex
sources = [ui.actionGithub, ui.actionGitee, ui.actionGitlink, ui.action_IPv6, ui.action_2, ui.action_3, ui.action]
for i in range(0, len(sources)):
if sources[i].isChecked():
old_urlSources = urlSources #先备份
urlSources = urlSourcesList[i] #然后切换尝试
# 解析云列表
try:
# 获取列表
lists = json.loads(requests.get(f"{urlSources}/list.json").text)
# 解释列表并显示在 GUI 上
nmodel = QtGui.QStandardItemModel(window)
for i in lists:
nmodel.appendRow(QtGui.QStandardItem(i[0]))
ui.searchList.setModel(nmodel)
urlSourcesIndex = i
except:
#[ui.actionGitlink, ui.actionGitee, ui.actionGithub, ui.action_IPv6, ui.action_2, ui.action_3, ui.action][urlSourcesIndex].setChecked(True)
traceback.print_exc()
QtWidgets.QMessageBox.critical(window, "提示", "无法连接服务器")
urlSources = old_urlSources #如果源不可用则换回来
break
if __name__ == "__main__":
homePath = os.path.expanduser('~')
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
information = json.loads(readtxt(f"{programPath}/information.json"))
version = information["Version"]
wine = "deepin-wine6-stable"
wineprefix = f"{homePath}/.wine"
try:
wine = sys.argv[1]
wineprefix = sys.argv[2]
except:
pass
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
pinLunLayout = QtWidgets.QHBoxLayout()
ui.setupUi(window)
window.setWindowTitle(f"UEngine 运行器 {version}——微型应用商店")
window.setWindowIcon(QtGui.QIcon(f"{programPath}/deepin-wine-runner.svg"))
iconPath = "{}/runner.svg".format(programPath)
window.show()
#ui.actionGitlink.setExclusive(True)
sourcesGroup = QtWidgets.QActionGroup(window)
sourcesGroup.addAction(ui.actionGitlink)
sourcesGroup.addAction(ui.actionGitee)
sourcesGroup.addAction(ui.actionGithub)
sourcesGroup.addAction(ui.action_IPv6)
sourcesGroup.addAction(ui.action_2)
sourcesGroup.addAction(ui.action_3)
sourcesGroup.addAction(ui.action)
sourcesGroup.triggered.connect(ChangeSources)
sourcesGroup.setExclusive(True)
#for i in [ui.actionGitlink, ui.actionGitee, ui.actionGithub, ui.action_IPv6, ui.action]:
#i.triggered.connect(ChangeSources)
#pass
# 连接信号和槽
ui.saerchBotton.clicked.connect(Connect.SearchBotton_Clicked)
#ui.uploadFen.clicked.connect(UploadFen)
ui.getInfoButton.clicked.connect(InformationWindow.ShowWindow)
ui.runBotton.clicked.connect(Connect.RunBotton_Clicked)
ui.openFile.triggered.connect(Connect.OpenFile_Triggered)
ui.exitProgram.triggered.connect(window.close)
ui.getFen.clicked.connect(ProgramRunStatusShow.ShowWindow)
# 解析云列表
try:
# 获取列表
lists = json.loads(requests.get(f"{urlSources}/list.json").text)
# 解释列表并显示在 GUI 上
nmodel = QtGui.QStandardItemModel(window)
for i in lists:
nmodel.appendRow(QtGui.QStandardItem(i[0]))
ui.searchList.setModel(nmodel)
except:
traceback.print_exc()
QtWidgets.QMessageBox.critical(window, "提示", "无法连接服务器")
app.exec_()

14
AutoShell/command/download Executable file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

14
AutoShell/command/error Executable file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

14
AutoShell/command/info Executable file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

14
AutoShell/command/installapk Executable file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

14
AutoShell/command/pause Executable file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

14
AutoShell/command/programforum Executable file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

14
AutoShell/command/thank Executable file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

14
AutoShell/command/version Executable file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

14
AutoShell/command/warning Executable file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env python3
# 加入路径
import os
import sys
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
sys.path.append(f"{programPath}/../../")
import ConfigLanguareRunner
# 符号转移
argv = []
for i in sys.argv[1:]:
argv.append(i.replace(" ", "\\ "))
com = ConfigLanguareRunner.Command(f"{os.path.basename(sys.argv[0])} {' '.join(argv)}")
com.Run(com.GetCommandList(), os.getenv("WINEPREFIX"), os.getenv("WINE"))
sys.exit(int(ConfigLanguareRunner.programEnv[9][1]))

75
AutoShell/main.py Executable file
View File

@@ -0,0 +1,75 @@
#!/usr/bin/env python3
import os
import sys
import time
import json
import platform
# 读取文本文档
def readtxt(path):
f = open(path, "r") # 设置文件对象
str = f.read() # 获取内容
f.close() # 关闭文本对象
return str # 返回结果
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
information = json.loads(readtxt(f"{programPath}/../information.json"))
version = information["Version"]
thankText = ""
for i in information["Contribute"]:
thankText += f"{i}\n"
programEnv = [
["WINEPREFIX", f"{os.path.expanduser('~')}/.wine"],
["WINE", "deepin-wine6-stable"],
["DANGER", "0"],
["PROGRAMPATH", programPath],
["VERSION", version],
["THANK", thankText.replace("\n", "\\n")],
["MAKER", "gfdgd xi"],
["COPYRIGHT", f"©2020~{time.strftime('%Y')} gfdgd xi"],
["PLATFORM", platform.system()],
["DEBUG", str(int("--debug" in sys.argv))]
]
'''programEnv = [
["($WINEPREFIX)", f"{os.path.expanduser('~')}/.wine"],
["($WINE)", "deepin-wine6-stable"],
["($DANGER)", "0"],
["($HOME)", os.path.expanduser('~')],
["($PROGRAMPATH)", programPath],
["($VERSION)", version],
["($THANK)", thankText],
["($MAKER)", "gfdgd xi"],
["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} gfdgd xi"],
["?", "0"],
["PLATFORM)", platform.system()],
["DEBUG)", str(int("--debug" in sys.argv))]
]'''
optionAll = 0
if "--debug" in sys.argv:
optionAll += 1
if "--system" in sys.argv:
programEnv.append(["DANGER", "1"])
optionAll += 1
if os.getenv("WINE") != None:
programEnv.append(["WINE", os.getenv("WINE")])
if os.getenv("WINEPREFIX") != None:
programEnv.append(["WINEPREFIX", os.getenv("WINEPREFIX")])
# 生成可以使用的参数
commandEnv = ""
for i in programEnv:
commandEnv += f"{i[0]}=\"{i[1]}\" "
commandEnv += f"PATH=\"{programPath}/command:$PATH\" "
if len(sys.argv) - optionAll < 2:
print("Wine 运行器自动配置文件解析器交互环境(基于 Bash")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi")
print("--------------------------------------------------------------")
os.system(f"{commandEnv} bash ")
exit()
command = ""
for i in sys.argv[1:]:
command += f"\"{i}\" "
print("UEngine 运行器自动配置文件解析器(基于 Bash")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi")
print("--------------------------------------------------------------")
os.system(f"{commandEnv} bash {command}")

26
CompareVersion.py Executable file
View File

@@ -0,0 +1,26 @@
#!/usr/bin/env python3
import sys
if len(sys.argv) <= 2:
print("参数不足")
exit()
# 忽略 - (别问为什么)
if "-" in sys.argv[1]:
sys.argv[1] = sys.argv[1][:sys.argv[1].index("-")]
if "-" in sys.argv[2]:
sys.argv[2] = sys.argv[2][:sys.argv[2].index("-")]
firstVersion = sys.argv[1].split(".")
secondVersion = sys.argv[2].split(".")
for i in range(len(firstVersion)):
first = int(firstVersion[i])
try:
second = int(secondVersion[i])
except:
second = 0
if first > second:
print(f"{sys.argv[1]} > {sys.argv[2]}")
sys.exit(0)
if first < second:
print(f"{sys.argv[1]} < {sys.argv[2]}")
sys.exit(2)
print(f"{sys.argv[1]} = {sys.argv[2]}")
sys.exit(1)

View File

@@ -0,0 +1,47 @@
{
"installdll": "安装指定 dll 在指定容器\n参数数量1\n参数介绍dll名称或在从互联网获取DLL工具的编号如 7012 xolehlp.dll 平台2003 架构64 的 7012",
"stopdll": "不允许指定 dll/exe 运行\n参数数量1\n参数介绍dll/exe 名称,如 example.exe",
"installfont": "安装指定字体到指定容器\n参数数量1\n在字体商店的编号如 5 msyhbd.ttc 的 5",
"installsparkcorefont": "安装星火应用商店的“微软核心字体”\n参数数量0\n参数介绍无",
"installmono": "安装最新版本的 mono 到指定容器\n参数数量0\n参数介绍无",
"installgecko": "安装最新版本的 gecko 到指定容器\n参数数量0\n参数介绍无",
"installvcpp": "安装指定的 VCPP 运行库到指定容器\n参数数量1\n参数介绍在安装 Visual Studio C++ 工具的编号,如 10 Visual Studio C++ 2015、2017、2019 和 2022 X64 的 10",
"installnet": "安装指定的 .net framework 运行库到指定容器\n参数数量1\n参数介绍在安装 .net framework 工具的编号,如 3 .net framework 4.5.1 Offline Installer 的 3",
"installmsxml": "安装指定的 MSXML 运行库到指定容器\n参数数量1\n参数介绍在安装 MSXML 工具的编号,如 1、MSXML 4.0 SP3 的 1",
"echo": "显示内容\n参数数量≥1\n参数介绍接要显示的内容",
"info": "显示提示对话框\n参数数量2\n参数介绍标题+显示内容",
"error": "显示错误对话框\n参数数量2\n参数介绍标题+显示内容",
"warning": "显示警告对话框\n参数数量2\n参数介绍标题+显示内容",
"exit": "退出程序\n参数数量0\n参数介绍无",
"bat": "执行 cmd 命令在 Wine 容器内(在 Windows 将在系统执行命令)\n参数数量≥1\n参数介绍接要执行的命令",
"bash": "执行 bash 命令(在 Windows 系统将执行 cmd 命令)\n参数数量≥1\n参数介绍接要执行的命令",
"version": "显示解释器版本Wine 运行器版本)\n参数数量0\n参数介绍无",
"thank": "显示谢明列表\n参数数量0\n参数介绍无",
"pause": "按回车键后继续\n参数数量0\n参数介绍无",
"download": "使用 aria2 下载文件\n参数数量≥1 && ≤3\n参数介绍下载URL+保存在的文件夹+保存的文件名",
"installdxvk": "安装 dxvk 到指定容器\n参数数量0\n参数介绍无",
"createbotton": "在指定目录创建容器\n参数数量0\n参数介绍无",
"reg": "导入 .reg 文件\n参数数量0\n参数介绍reg 文件路径",
"enabledopengl": "开启 OpenGL\n参数数量0\n参数介绍无",
"disbledopengl": "关闭 OpenGL\n参数数量0\n参数介绍无",
"winecfg": "显示“Wine 设置”\n参数数量0\n参数介绍无",
"winver": "显示“关于 Wine”\n参数数量0\n参数介绍无",
"changeversion": "更改 Wine 容器系统版本(未实现)\n参数数量无\n参数介绍无",
"cat": "显示指定文件只支持显示编码为UTF-8的文件\n参数数量1\n参数介绍无",
"enabledhttpproxy": "设置指定容器代理\n参数数量2\n参数介绍代理服务器地址+端口",
"disbledhttpproxy": "禁用指定容器代理\n参数数量0\n参数介绍无",
"enabledwinecrashdialog": "启用 Wine 容器程序崩溃提示窗口\n参数数量0\n参数介绍无",
"disbledwinecrashdialog": "禁用 Wine 容器程序崩溃提示窗口\n参数数量0\n参数介绍无",
"disbledWinebottlecreatelink": "禁止 Wine 容器生成快捷方式\n参数数量0\n参数介绍无",
"enabledWinebottlecreatelink": "允许 Wine 容器生成快捷方式\n参数数量0\n参数介绍无",
"killall": "杀死指定进程\n参数数量1\n参数介绍进程名",
"control": "打开控制面板\n参数数量0\n参数介绍无",
"taskmgr": "打开任务管理器\n参数数量0\n参数介绍无",
"killallwineserver": "杀死所有 Wine 程序\n参数数量0\n参数介绍无",
"installvb": "安装指定的 VB 运行库到指定容器\n参数数量1\n参数介绍在安装 Visual Basic Runtime 工具的编号,如 4 Visual Basic Runtime Visual Basic 6",
"installother": "安装未归类的运行库到指定容器\n参数数量1\n参数介绍在安装其它运行库工具的编号如 2 MFC运行库",
"decompressionbottle": "解压用 wine 打包的 deb 包内的容器到指定路径\n参数数量2\n参数介绍deb 包路径+要解压到的路径",
"programforum": "打开程序论坛\n参数数量0\n参数介绍无",
"installmsi": "安装 MSI 文件到指定容器\n参数数量1\n参数介绍msi 文件路径",
"installapk": "安装 APK 文件到 UEngine\n参数数量1\n参数介绍apk 文件路径"
}

673
ConfigLanguareRunner.py Executable file
View File

@@ -0,0 +1,673 @@
#!/usr/bin/env python3
# 使用系统默认的 python3 运行
###########################################################################################
# 作者gfdgd xi
# 版本3.0.1
# 更新时间2022年10月05日
# 感谢:感谢 wine 以及 deepin-wine 团队,提供了 wine 和 deepin-wine 给大家使用,让我能做这个程序
# 基于 Python3 构建
###########################################################################################
import os
import sys
import time
import json
import random
import api as uengineapi
import platform
import traceback
import webbrowser
import subprocess
import PyQt5.QtWidgets as QtWidgets
# 读取文本文档
def readtxt(path):
f = open(path, "r") # 设置文件对象
str = f.read() # 获取内容
f.close() # 关闭文本对象
return str # 返回结果
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
information = json.loads(readtxt(f"{programPath}/information.json"))
version = information["Version"]
thankText = ""
helpList = json.loads(readtxt(f"{programPath}/ConfigLanguareRunner-help.json"))
for i in information["Contribute"]:
thankText += f"{i}\n"
programEnv = [
["($WINEPREFIX)", f"{os.path.expanduser('~')}/.wine"],
["($WINE)", "deepin-wine6-stable"],
#["($DANGER)", "0"],
["($DANGER)", "1"],
["($HOME)", os.path.expanduser('~')],
["($PROGRAMPATH)", programPath],
["($VERSION)", version],
["($THANK)", thankText],
["($MAKER)", "gfdgd xi"],
["($COPYRIGHT)", f"©2020~{time.strftime('%Y')} gfdgd xi"],
["($?)", "0"],
["($PLATFORM)", platform.system()],
["($DEBUG)", "1"]
#["($DEBUG)", str(int("--debug" in sys.argv))]
]
readOnlyEnv = [
"($DANGER)",
"($HOME)",
"($PROGRAMPATH)",
"($VERSION)",
"($THANK)",
"($MAKER)",
"($COPYRIGHT)",
"($?)",
"($SYSTEM)",
"($DEBUG)"
]
def FindFile(file, name):
for i in os.listdir(file):
path = f"{file}/{i}"
if os.path.isdir(path):
returnPath = FindFile(path, name)
if returnPath != None:
return returnPath.replace("//", "/")
if os.path.isfile(path):
if i == name:
return path
return None
def Debug():
if "--debug" in sys.argv:
traceback.print_exc()
class Command():
# 有风险的命令
dangerCommand = [
"bash",
"bat",
"download",
"reg"
]
# 可以被使用的命令
commandList = [
"installdll",
"installfont",
"installsparkcorefont",
"installmono",
"installgecko",
"installvcpp",
"installnet",
"installmsxml",
"echo",
"info",
"error",
"warning",
"exit",
"bash",
"bat",
"version",
"thank",
"pause",
"download",
"installdxvk",
"createbotton",
"reg",
"enabledopengl",
"disbledopengl",
"winecfg",
"winver",
"changeversion",
"stopdll",
"cat",
"taskmgr",
"control",
"killall",
"killallwineserver",
"enabledhttpproxy",
"disbledhttpproxy",
"enabledwinecrashdialog",
"disbledwinecrashdialog",
"disbledWinebottlecreatelink",
"enabledWinebottlecreatelink",
"installvb",
"installother",
"decompressionbottle",
"programforum",
"installmsi",
"installapk"
]
def __init__(self, commandString: str) -> None:
self.commandString = commandString
# 解析器
# 命令字符串转可供解析的列表
def GetCommandList(self) -> list:
shellList = []
shellFirstShell = self.commandString.split("\n")
# 转换成可以执行的数组
for l in range(0, len(shellFirstShell)):
i = shellFirstShell[l]
# 判断有没有注释
if "#" in i:
# 忽略注释
i = i[:i.index("#")]
# 删除前后空格
i = i.strip()
# 如果是空行
if i == "":
# 忽略此行,此行不做处理
continue
# 空格转义
i = i.replace("\\ ", "@Space@")
# 解析
i = i.split()
# 判断是否为合法的参数,否则提示并忽略
if not i[0] in self.commandList and i[0][0] != "(":
print(f"{l + 1}命令{i[0]}不存在,忽略")
programEnv[9][1] = "-2"
continue
if programEnv[2][1] == "0" and i[0] in self.dangerCommand:
print(f"{l + 1}命令{i[0]}目前解析器不允许运行,忽略")
print("如果需要运行可以在配置面板开启“允许修改系统”选项针对GUI用户")
print("或添加参数 --system终端调用运行用户")
programEnv[9][1] = "-1"
continue
rightList = []
for k in i:
# 处理符号转义
rightList.append(k.replace("@Space@", " ").replace("\\n", "\n").replace("\\r", "\r"))
shellList.append(rightList)
return shellList
# 运行器
class Run():
close = False
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
def Exit(self):
self.close = True
return 0
def InstallDll(self) -> int:
import InstallDll
# 如果是数字
number = False
try:
int(self.command[1])
number = True
except:
pass
if number:
return InstallDll.Download(self.wineBottonPath, InstallDll.GetNameByNumber(int(self.command[1])), InstallDll.GetUrlByNumber(int(self.command[1])), self.wine)
return InstallDll.Download(self.wineBottonPath, self.command[1], InstallDll.GetUrlByName(self.command[1]), self.wine)
def InstallDxvk(self):
if not os.path.exists(f"{programPath}/dxvk"):
if os.system(f"7z x \"{programPath}/dxvk.7z\" -o\"{programPath}\""):
print("错误:无法解压资源")
return 1
os.remove(f"{programPath}/dxvk.7z")
return os.system(f"env 'WINE={self.wine}' 'WINE64={self.wine}' 'WINEPREFIX={self.wineBottonPath}' bash '{programPath}/dxvk/auto.sh' install")
def Thank(self) -> int:
for i in information["Contribute"]:
print(i)
return 0
def InstallFont(self) -> int:
import InstallFont
return InstallFont.Download(self.wineBottonPath, int(self.command[1]))
def InstallMono(self) -> int:
return os.system(f"ENTERNOTSHOW=0 '{self.programPath}/InstallMono.py' '{self.wineBottonPath}' '{self.wine}' mono")
def InstallGecko(self) -> int:
return os.system(f"ENTERNOTSHOW=0 '{self.programPath}/InstallMono.py' '{self.wineBottonPath}' '{self.wine}' gecko")
def InstallVCPP(self) -> int:
import InstallVisualCPlusPlus
return InstallVisualCPlusPlus.Download(self.wineBottonPath, int(self.command[1]), self.wine)
def InstallNet(self) -> int:
import InstallNetFramework
return InstallNetFramework.Download(self.wineBottonPath, int(self.command[1]), self.wine)
def InstallMsxml(self) -> int:
import InstallMsxml
return InstallMsxml.Download(self.wineBottonPath, int(self.command[1]), self.wine)
def Info(self) -> int:
QtWidgets.QMessageBox.information(None, self.command[1], self.command[2])
return 0
def StopDll(self) -> int:
return os.system(f"WINEPREFIX='{self.wineBottonPath}' '{self.wine}' reg add 'HKEY_CURRENT_USER\Software\Wine\DllOverrides' /v {os.path.splitext(self.command[1])[0]} /f")
def CreateBotton(self):
self.command = ["bat", "exit"]
self.Bat()
return 0
def InstallSparkCoreFont(self):
if not os.system("which aptss"):
# 最新版本星火应用商店处理
os.system("pkexec bash aptss ssupdate")
return os.system("pkexec bash aptss install ms-core-fonts")
if not os.system("which ss-apt-fast"):
# 稍久的版本
os.system("pkexec ss-apt-fast update")
return os.system("pkexec bash ss-apt-fast install ms-core-fonts")
# 不知道什么版本的处理方法
if not os.system("which apt-fast"):
# 稍久的版本
os.system("pkexec apt-fast update")
return os.system("pkexec apt-fast install ms-core-fonts")
os.system("pkexec apt update")
return os.system("pkexec apt install ms-core-fonts")
def Echo(self) -> int:
del self.command[0]
print(" ".join(self.command))
return 0
def Warning(self):
QtWidgets.QMessageBox.warning(None, self.command[1], self.command[2])
return 0
def Error(self):
QtWidgets.QMessageBox.critical(None, self.command[1], self.command[2])
return 0
def Bash(self):
command = ""
for i in self.command[1:]:
command += f"'{i}' "
return os.system(command)
def Bat(self) -> int:
# Windows 直接转换为以 cmd 运行
if platform.system() == "Windows":
# 直接调用 Bash 函数
return self.Bash()
command = ["WINEPREFIX='($WINEPREFIX)'", "($WINE)"]
for i in programEnv:
for k in range(len(command)):
command[k] = command[k].replace(i[0], i[1])
for i in self.command[1:]:
command.append(i)
commandStr = command[0] + " "
for i in command[1:]:
commandStr += f"'{i}' "
return os.system(commandStr)
def Version(self):
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} RacoonGX 团队By gfdgd xi")
return 0
def Pause(self) -> int:
input("按回车键继续……")
return 0
def Download(self) -> int:
command = f"aria2c -x 16 -s 16 -c '{self.command[1]}' "
try:
command += f"-d '{self.command[2]}' "
command += f"-o '{self.command[3]}' "
except:
pass
return os.system(command)
def Reg(self) -> int:
self.command = ["bat", "regedit", "/s", self.command[1]]
return self.Bat()
def EnabledOpenGl(self) -> int:
self.command = ["reg", f"z:{programPath}/EnabledOpengl.reg"]
return self.Reg()
def DisbledOpenGl(self) -> int:
self.command = ["reg", f"z:{programPath}/DisabledOpengl.reg"]
return self.Reg()
def Winver(self):
self.command = ["bat", "winver"]
return self.Bat()
def Winecfg(self):
self.command = ["bat", "winecfg"]
return self.Bat()
def ChangeVersion(self):
# 判断是否为正确的版本
if not os.path.exists(f"{programPath}/ChangeWineBottonVersion/{self.command[1]}.reg"):
print("错误:您选择的版本错误,目前只支持以下版本")
for i in os.listdir(f"{programPath}/ChangeWineBottonVersion"):
print(i.replace(".reg", ""), end=" ")
print()
return 1
self.command = ["reg", f"z:/{programPath}/ChangeWineBottonVersion/{self.command[1]}.reg"]
return self.Reg()
def Cat(self):
try:
file = open(self.command[1], "r")
print(file.read())
file.close()
return 0
except:
print("文件读取错误")
Debug()
return 1
def Taskmgr(self):
self.command = ["bat", "taskmgr"]
return self.Bat()
def Control(self):
self.command = ["bat", "control"]
return self.Bat()
def Killall(self):
return os.system(f"killall -9 {self.command[1]}")
def KillallWineServer(self):
command = ["WINEPREFIX='($WINEPREFIX)'", "($WINE)", "-k"]
for i in programEnv:
for k in range(len(command)):
command[k] = command[k].replace(i[0], i[1])
if "box86" in command[1] or "exagear" in command[1] or "box64" in command[1]:
print("不支持此 Wine")
return 1
if os.path.exists(command[1]):
# 文件存在
command[1] = f"{os.path.dirname(command[1])}/wineserver"
else:
# 读 which
command[1] = f"{os.path.dirname(subprocess.getoutput(f'which {command[1]}').strip())}/wineserver"
commandStr = command[0] + " "
for i in command[1:]:
commandStr += f"'{i}' "
return os.system(commandStr)
def EnabledWineBottleCreateLink(self):
self.command = ["bat", "reg", "delete", "HKEY_CURRENT_USER\Software\Wine\DllOverrides", "/v", "winemenubuilder.exe", "/f"]
return self.Bat()
def DisbledWineBottleCreateLink(self):
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Wine\DllOverrides", "/v", "winemenubuilder.exe", "/f"]
return self.Bat()
def DisbledWineCrashDialog(self):
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Wine\WineDbg", "/v", "ShowCrashDialog", "/t", "REG_DWORD", "/d", "00000000", "/f"]
return self.Bat()
def EnabledWineCrashDialog(self):
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Wine\WineDbg", "/v", "ShowCrashDialog", "/t", "REG_DWORD", "/d", "00000001", "/f"]
return self.Bat()
def EnabledHttpProxy(self):
proxyServerAddress = self.command[1]
port = self.command[2]
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "/v", "ProxyEnable", "/t", "REG_DWORD", "/d", "00000001", "/f"]
self.Bat()
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "/v", "ProxyServer", "/d", f"{proxyServerAddress}:{port}", "/f"]
return self.Bat()
def DecompressionBottle(self):
tempDebDir = f"/tmp/wine-runner-unpack-deb-{random.randint(0, 1000)}"
if os.system(f"dpkg -x '{self.command[1]}' '{tempDebDir}'"):
return 1
zippath = FindFile(tempDebDir, "files.7z")
if zippath == None:
return 2
# 解压文件
os.system(f"mkdir -p '{self.command[2]}'")
fi = os.system(f"7z x -y '{zippath}' -o'{self.command[2]}'")
os.system(f"rm -rfv '{tempDebDir}'")
return fi
def DisbledHttpProxy(self):
self.command = ["bat", "reg", "add", "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "/v", "ProxyEnable", "/t", "REG_DWORD", "/d", "00000000", "/f"]
return self.Bat()
def InstallVB(self):
import InstallVisualBasicRuntime
return InstallVisualBasicRuntime.Download(self.wineBottonPath, int(self.command[1]), self.wine)
def InstallOther(self):
import InstallOther
return InstallOther.Download(self.wineBottonPath, int(self.command[1]), self.wine)
def ProgramForum(self):
webbrowser.open_new_tab("https://gfdgdxi.flarum.cloud/")
return
def InstallMSI(self):
self.command = ["bat", "msiexec", "/i", self.command[1]]
return self.Bat()
def InstallApk(self):
if os.system("which uengine > /dev/null"):
print("未安装 UEngine无法使用该命令")
return 1
apk = uengineapi.APK(self.command[1])
result = apk.install()
homePath = os.getenv("HOME")
if not os.path.exists(f"{homePath}/.local/share/applications/uengine"):
os.makedirs(f"{homePath}/.local/share/applications/uengine")
if not os.path.exists(f"{homePath}/.local/share/icons/hicolor/apps"):
os.makedirs(f"{homePath}/.local/share/icons/hicolor/apps")
package = apk.packageName()
apk.saveApkIcon(f"{homePath}/.local/share/icons/hicolor/apps/{package}.png")
apk.saveDesktopFile(f"{homePath}/.local/share/applications/uengine/{package}.desktop", f"{homePath}/.local/share/icons/hicolor/apps/{package}.png")
return result
# 可以运行的命令的映射关系
# 可以被使用的命令的映射
commandList = {
"installdll": InstallDll,
"installfont": InstallFont,
"installsparkcorefont": InstallSparkCoreFont,
"installmono": InstallMono,
"installgecko": InstallGecko,
"installvcpp": InstallVCPP,
"installnet": InstallNet,
"installmsxml": InstallMsxml,
"echo": Echo,
"info": Info,
"warning": Warning,
"error": Error,
"exit": Exit,
"bash": Bash,
"bat": Bat,
"version": Version,
"thank": Thank,
"pause": Pause,
"download": Download,
"installdxvk": InstallDxvk,
"createbotton": CreateBotton,
"reg": Reg,
"enabledopengl": EnabledOpenGl,
"disbledopengl": DisbledOpenGl,
"winecfg": Winecfg,
"winver": Winver,
"changeversion": ChangeVersion,
"stopdll": StopDll,
"cat": Cat,
"taskmgr": Taskmgr,
"control": Control,
"killallwineserver": KillallWineServer,
"enabledhttpproxy": EnabledHttpProxy,
"disbledhttpproxy": DisbledHttpProxy,
"enabledwinecrashdialog": EnabledWineCrashDialog,
"disbledwinecrashdialog": DisbledWineCrashDialog,
"disbledWinebottlecreatelink": DisbledWineBottleCreateLink,
"enabledWinebottlecreatelink": EnabledWineBottleCreateLink,
"installvb": InstallVB,
"installother": InstallOther,
"decompressionbottle": DecompressionBottle,
"programforum": ProgramForum,
"installmsi": InstallMSI,
"installapk": InstallApk
}
# 参数数列表
commandInfo = {
"killall": [1],
"installdll": [1],
"installfont": [1],
"installsparkcorefont": [0],
"installmono": [0],
"installgecko": [0],
"installvcpp": [1],
"installnet": [1],
"installmsxml": [1],
"echo": [1],
"info": [2],
"warning": [2],
"error": [2],
"exit": [0],
"bash": [1],
"bat": [1],
"version": [0],
"thank": [0],
"pause": [0],
"download": [1],
"installdxvk": [0],
"createbotton": [0],
"reg": [1],
"enabledopengl": [0],
"disbledopengl": [0],
"winecfg": [0],
"winver": [0],
"changeversion": [1],
"stopdll": [1],
"cat": [1],
"taskmgr": [0],
"control": [0],
"killallwineserver": [0],
"enabledhttpproxy": [2],
"disbledhttpproxy": [0],
"enabledwinecrashdialog": [0],
"disbledwinecrashdialog": [0],
"disbledWinebottlecreatelink": [0],
"enabledWinebottlecreatelink": [0],
"installvb": [1],
"installother": [1],
"decompressionbottle": [2],
"programforum": [0],
"installmsi": [1],
"installapk": [1]
}
windowsUnrun = [
"createbotton",
"installdll",
"installmono",
"installgecko",
"winecfg",
"stopdll",
"changeversion",
"enabledopengl",
"disbledopengl",
"installdxvk",
"installfont",
"installsparkcorefont",
"decompressionbottle",
"installapk"
]
# 解析
def __init__(self, command: list, wineBottonPath: str, wine: str) -> int:
self.wineBottonPath = wineBottonPath
self.wine = wine
for i in command:
self.command = i
# 变量解析
if self.command[0][0] == "(" and "=" in self.command[0]:
env = i[0][: i[0].index("=")]
value = i[0][i[0].index("=") + 1:]
# 判断是不是只读变量
if env in readOnlyEnv:
print(f"运行命令{' '.join(self.command)}出现错误")
print(f"变量 {env} 只读,无法修改,忽略")
continue
change = False
for k in range(len(programEnv)):
# 修改变量
if env == programEnv[k][0]:
programEnv[k][1] = value
change = True
break
if not change:
# 添加变量
programEnv.append([f"{env}", value])
continue
# 解析命令是否可以在 Windows 使用(只限在 Windows 系统时)
if platform.system() == "Windows" and i[0] in self.windowsUnrun:
print("此命令不支持在 Windows 上运行")
programEnv[9][1] = "-5"
continue
# 获取程序帮助信息
try:
if i[1] == "--help":
print(helpList[i[0]].replace("\\n", "\n"))
continue
except:
pass
# 正常命令解析
if len(i) -1 < self.commandInfo[i[0]][0]:
print("参数不足")
programEnv[9][1] = "-3"
continue
# 替换环境变量
for a in range(1, len(i)):
for b in programEnv:
if b[0] in i[a]:
i[a] = i[a].replace(b[0], b[1])
try:
commandReturn = self.commandList[i[0]](self)
except:
traceback.print_exc()
commandReturn = 1
if commandReturn:
print(f"运行命令{' '.join(self.command)}出现错误,返回值:", commandReturn)
programEnv[9][1] = str(commandReturn)
if self.close:
break
app = QtWidgets.QApplication(sys.argv)
if os.getenv("WINE") != None:
programEnv[1][1] = os.getenv("WINE")
if os.getenv("WINEPREFIX") != None:
programEnv[0][1] = os.getenv("WINEPREFIX")
if __name__ == "__main__":
optionAll = 0
if "--debug" in sys.argv:
optionAll += 1
if "--system" in sys.argv:
programEnv[2][1] = "1"
optionAll += 1
if len(sys.argv) - optionAll < 2:
print("Wine 运行器自动配置文件解析器交互环境")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} RacoonGX 团队By gfdgd xi")
print("--------------------------------------------------------------")
while True:
commandLine = input(">")
if commandLine == "exit":
break
com = Command(commandLine)
com.Run(com.GetCommandList(), programEnv[0][1], programEnv[1][1])
sys.exit(int(programEnv[9][1]))
# 读取文件
try:
file = open(sys.argv[1], "r")
com = Command(file.read())
file.close()
except:
print("错误:无法读取该文件,无法继续")
sys.exit(1)
print("UEngine 运行器自动配置文件解析器")
print(f"版本:{version}")
print(f"©2020~{time.strftime('%Y')} gfdgd xi")
print("--------------------------------------------------------------")
com.Run(com.GetCommandList(), programEnv[0][1], programEnv[1][1])
sys.exit(int(programEnv[9][1]))

16
Download.py Executable file
View File

@@ -0,0 +1,16 @@
#!/usr/bin/env python3
import os
import sys
import json
import base64
import requests
print("""浣溪沙
一曲新词酒一杯,去年天气旧亭台。夕阳西下几时回?
无可奈何花落去,似曾相识燕归来。小园香径独徘徊。""")
print("")
print("听一支新曲喝一杯美酒,还是去年的天气旧日的亭台,西落的夕阳何时再回来?那花儿落去我也无可奈何,那归来的燕子似曾相识,在小园的花径上独自徘徊。")
print("================================")
programPath = os.path.split(os.path.realpath(__file__))[0] # 返回 string
with open(f"{programPath}/information.json") as file:
version = json.loads(file.read())["Version"]
print(requests.get(base64.b64decode("aHR0cDovLzEyMC4yNS4xNTMuMTQ0L3VlbmdpbmUtcnVubmVyL0luc3RhbGwucGhwP1ZlcnNpb249").decode("utf-8") + version).text)

BIN
Help/1-1-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
Help/1-1-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
Help/1-1-3.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
Help/1-1-4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

BIN
Help/1-1-5.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
Help/1-2-1.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
Help/1-2-2.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
Help/1-3-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
Help/1-4-1.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
Help/1-5-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
Help/1-5-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

BIN
Help/1-6-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
Help/1-6-2.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
Help/1-6-3.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
Help/1-7-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
Help/1-8-1.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

BIN
Help/1-9-1.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
Help/1-9-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
Help/1-9-3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
Help/1-9-4.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

BIN
Help/1-9-5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
Help/1-9-6.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

BIN
Help/1-9-7.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
Help/2-1-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
Help/2-1-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
Help/2-1-3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
Help/2-1-4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
Help/2-1-5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

1
Help/2048/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.sass-cache/

19
Help/2048/.jshintrc Normal file
View File

@@ -0,0 +1,19 @@
{
"esnext": true,
"indent": 2,
"maxlen": 80,
"freeze": true,
"camelcase": true,
"unused": true,
"eqnull": true,
"proto": true,
"supernew": true,
"noyield": true,
"evil": true,
"node": true,
"boss": true,
"expr": true,
"loopfunc": true,
"white": true,
"maxdepth": 4
}

33
Help/2048/CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,33 @@
# Contributing
Changes and improvements are more than welcome! Feel free to fork and open a pull request.
Please follow the house rules to have a bigger chance of your contribution being merged.
## House rules
### How to make changes
- To make changes, create a new branch based on `master` (do not create one from `gh-pages` unless strictly necessary) and make them there, then create a Pull Request to master.
`gh-pages` is different from master in that it contains sharing features, analytics and other things that have no direct bearing with the game. `master` is the "pure" version of the game.
- If you want to modify the CSS, please edit the SCSS files present in `style/`: `main.scss` and others. Don't edit the `main.css`, because it's supposed to be generated.
In order to compile your SCSS modifications, you need to use the `sass` gem (install it by running `gem install sass` once Ruby is installed).
To run SASS, simply use the following command:
`sass --unix-newlines --watch style/main.scss`
SASS will automatically recompile your css when changed.
- `Rakefile` contains some tasks that help during development. Feel free to add useful tasks if needed.
- Please use 2-space indentation when editing the JavaScript. A `.jshintrc` file is present, which will help your code to follow the guidelines if you install and run `jshint`.
- Please test your modification thoroughly before submitting your Pull Request.
### Changes that might not be accepted
We have to be conservative with the core game. This means that some modifications won't be merged, or will have to be evaluated carefully before being merged:
- Undo/redo features
- Save/reload features
- Changes to how the tiles look or their contents
- Changes to the layout
- Changes to the grid size
### Changes that are welcome
- Bug fixes
- Compatibility improvements
- "Under the hood" enhancements
- Small changes that don't have an impact on the core gameplay

21
Help/2048/LICENSE.txt Normal file
View File

@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2014 Gabriele Cirulli
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

38
Help/2048/README.md Normal file
View File

@@ -0,0 +1,38 @@
# 2048
A small clone of [1024](https://play.google.com/store/apps/details?id=com.veewo.a1024), based on [Saming's 2048](http://saming.fr/p/2048/) (also a clone).
Made just for fun. [Play it here!](http://gabrielecirulli.github.io/2048/)
The official app can also be found on the [Play Store](https://play.google.com/store/apps/details?id=com.gabrielecirulli.app2048) and [App Store!](https://itunes.apple.com/us/app/2048-by-gabriele-cirulli/id868076805)
### Contributions
[Anna Harren](https://github.com/iirelu/) and [sigod](https://github.com/sigod) are maintainers for this repository.
Other notable contributors:
- [TimPetricola](https://github.com/TimPetricola) added best score storage
- [chrisprice](https://github.com/chrisprice) added custom code for swipe handling on mobile
- [marcingajda](https://github.com/marcingajda) made swipes work on Windows Phone
- [mgarciaisaia](https://github.com/mgarciaisaia) added support for Android 2.3
Many thanks to [rayhaanj](https://github.com/rayhaanj), [Mechazawa](https://github.com/Mechazawa), [grant](https://github.com/grant), [remram44](https://github.com/remram44) and [ghoullier](https://github.com/ghoullier) for the many other good contributions.
### Screenshot
<p align="center">
<img src="https://cloud.githubusercontent.com/assets/1175750/8614312/280e5dc2-26f1-11e5-9f1f-5891c3ca8b26.png" alt="Screenshot"/>
</p>
That screenshot is fake, by the way. I never reached 2048 :smile:
## Contributing
Changes and improvements are more than welcome! Feel free to fork and open a pull request. Please make your changes in a specific branch and request to pull into `master`! If you can, please make sure the game fully works before sending the PR, as that will help speed up the process.
You can find the same information in the [contributing guide.](https://github.com/gabrielecirulli/2048/blob/master/CONTRIBUTING.md)
## License
2048 is licensed under the [MIT license.](https://github.com/gabrielecirulli/2048/blob/master/LICENSE.txt)
## Donations
I made this in my spare time, and it's hosted on GitHub (which means I don't have any hosting costs), but if you enjoyed the game and feel like buying me coffee, you can donate at my BTC address: `1Ec6onfsQmoP9kkL3zkpB6c5sA4PVcXU2i`. Thank you very much!

11
Help/2048/Rakefile Normal file
View File

@@ -0,0 +1,11 @@
require "date"
namespace :appcache do
desc "update the date in the appcache file (in the gh-pages branch)"
task :update do
appcache = File.read("cache.appcache")
updated = "# Updated: #{DateTime.now}"
File.write("cache.appcache", appcache.sub(/^# Updated:.*$/, updated))
end
end

BIN
Help/2048/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

99
Help/2048/index.html Normal file
View File

@@ -0,0 +1,99 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>2048</title>
<link href="style/main.css" rel="stylesheet" type="text/css">
<link rel="shortcut icon" href="favicon.ico">
<link rel="apple-touch-icon" href="meta/apple-touch-icon.png">
<link rel="apple-touch-startup-image" href="meta/apple-touch-startup-image-640x1096.png" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)"> <!-- iPhone 5+ -->
<link rel="apple-touch-startup-image" href="meta/apple-touch-startup-image-640x920.png" media="(device-width: 320px) and (device-height: 480px) and (-webkit-device-pixel-ratio: 2)"> <!-- iPhone, retina -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0, maximum-scale=1, user-scalable=no, minimal-ui">
</head>
<body>
<div class="container">
<div class="heading">
<h1 class="title">2048</h1>
<div class="scores-container">
<div class="score-container">0</div>
<div class="best-container">0</div>
</div>
</div>
<div class="above-game">
<p class="game-intro">Join the numbers and get to the <strong>2048 tile!</strong></p>
<a class="restart-button">New Game</a>
</div>
<div class="game-container">
<div class="game-message">
<p></p>
<div class="lower">
<a class="keep-playing-button">Keep going</a>
<a class="retry-button">Try again</a>
</div>
</div>
<div class="grid-container">
<div class="grid-row">
<div class="grid-cell"></div>
<div class="grid-cell"></div>
<div class="grid-cell"></div>
<div class="grid-cell"></div>
</div>
<div class="grid-row">
<div class="grid-cell"></div>
<div class="grid-cell"></div>
<div class="grid-cell"></div>
<div class="grid-cell"></div>
</div>
<div class="grid-row">
<div class="grid-cell"></div>
<div class="grid-cell"></div>
<div class="grid-cell"></div>
<div class="grid-cell"></div>
</div>
<div class="grid-row">
<div class="grid-cell"></div>
<div class="grid-cell"></div>
<div class="grid-cell"></div>
<div class="grid-cell"></div>
</div>
</div>
<div class="tile-container">
</div>
</div>
<p class="game-explanation">
<strong class="important">How to play:</strong> Use your <strong>arrow keys</strong> to move the tiles. When two tiles with the same number touch, they <strong>merge into one!</strong>
</p>
<hr>
<p>
<strong class="important">Note:</strong> This site is the official version of 2048. You can play it on your phone via <a href="http://git.io/2048">http://git.io/2048.</a> All other apps or sites are derivatives or fakes, and should be used with caution.
</p>
<hr>
<p>
Created by <a href="http://gabrielecirulli.com" target="_blank">Gabriele Cirulli.</a> Based on <a href="https://itunes.apple.com/us/app/1024!/id823499224" target="_blank">1024 by Veewo Studio</a> and conceptually similar to <a href="http://asherv.com/threes/" target="_blank">Threes by Asher Vollmer.</a>
</p>
</div>
<script src="js/bind_polyfill.js"></script>
<script src="js/classlist_polyfill.js"></script>
<script src="js/animframe_polyfill.js"></script>
<script src="js/keyboard_input_manager.js"></script>
<script src="js/html_actuator.js"></script>
<script src="js/grid.js"></script>
<script src="js/tile.js"></script>
<script src="js/local_storage_manager.js"></script>
<script src="js/game_manager.js"></script>
<script src="js/application.js"></script>
</body>
</html>

View File

@@ -0,0 +1,28 @@
(function () {
var lastTime = 0;
var vendors = ['webkit', 'moz'];
for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] ||
window[vendors[x] + 'CancelRequestAnimationFrame'];
}
if (!window.requestAnimationFrame) {
window.requestAnimationFrame = function (callback) {
var currTime = new Date().getTime();
var timeToCall = Math.max(0, 16 - (currTime - lastTime));
var id = window.setTimeout(function () {
callback(currTime + timeToCall);
},
timeToCall);
lastTime = currTime + timeToCall;
return id;
};
}
if (!window.cancelAnimationFrame) {
window.cancelAnimationFrame = function (id) {
clearTimeout(id);
};
}
}());

View File

@@ -0,0 +1,4 @@
// Wait till the browser is ready to render the game (avoids glitches)
window.requestAnimationFrame(function () {
new GameManager(4, KeyboardInputManager, HTMLActuator, LocalStorageManager);
});

View File

@@ -0,0 +1,9 @@
Function.prototype.bind = Function.prototype.bind || function (target) {
var self = this;
return function (args) {
if (!(args instanceof Array)) {
args = [args];
}
self.apply(target, args);
};
};

View File

@@ -0,0 +1,71 @@
(function () {
if (typeof window.Element === "undefined" ||
"classList" in document.documentElement) {
return;
}
var prototype = Array.prototype,
push = prototype.push,
splice = prototype.splice,
join = prototype.join;
function DOMTokenList(el) {
this.el = el;
// The className needs to be trimmed and split on whitespace
// to retrieve a list of classes.
var classes = el.className.replace(/^\s+|\s+$/g, '').split(/\s+/);
for (var i = 0; i < classes.length; i++) {
push.call(this, classes[i]);
}
}
DOMTokenList.prototype = {
add: function (token) {
if (this.contains(token)) return;
push.call(this, token);
this.el.className = this.toString();
},
contains: function (token) {
return this.el.className.indexOf(token) != -1;
},
item: function (index) {
return this[index] || null;
},
remove: function (token) {
if (!this.contains(token)) return;
for (var i = 0; i < this.length; i++) {
if (this[i] == token) break;
}
splice.call(this, i, 1);
this.el.className = this.toString();
},
toString: function () {
return join.call(this, ' ');
},
toggle: function (token) {
if (!this.contains(token)) {
this.add(token);
} else {
this.remove(token);
}
return this.contains(token);
}
};
window.DOMTokenList = DOMTokenList;
function defineElementGetter(obj, prop, getter) {
if (Object.defineProperty) {
Object.defineProperty(obj, prop, {
get: getter
});
} else {
obj.__defineGetter__(prop, getter);
}
}
defineElementGetter(HTMLElement.prototype, 'classList', function () {
return new DOMTokenList(this);
});
})();

View File

@@ -0,0 +1,272 @@
function GameManager(size, InputManager, Actuator, StorageManager) {
this.size = size; // Size of the grid
this.inputManager = new InputManager;
this.storageManager = new StorageManager;
this.actuator = new Actuator;
this.startTiles = 2;
this.inputManager.on("move", this.move.bind(this));
this.inputManager.on("restart", this.restart.bind(this));
this.inputManager.on("keepPlaying", this.keepPlaying.bind(this));
this.setup();
}
// Restart the game
GameManager.prototype.restart = function () {
this.storageManager.clearGameState();
this.actuator.continueGame(); // Clear the game won/lost message
this.setup();
};
// Keep playing after winning (allows going over 2048)
GameManager.prototype.keepPlaying = function () {
this.keepPlaying = true;
this.actuator.continueGame(); // Clear the game won/lost message
};
// Return true if the game is lost, or has won and the user hasn't kept playing
GameManager.prototype.isGameTerminated = function () {
return this.over || (this.won && !this.keepPlaying);
};
// Set up the game
GameManager.prototype.setup = function () {
var previousState = this.storageManager.getGameState();
// Reload the game from a previous game if present
if (previousState) {
this.grid = new Grid(previousState.grid.size,
previousState.grid.cells); // Reload grid
this.score = previousState.score;
this.over = previousState.over;
this.won = previousState.won;
this.keepPlaying = previousState.keepPlaying;
} else {
this.grid = new Grid(this.size);
this.score = 0;
this.over = false;
this.won = false;
this.keepPlaying = false;
// Add the initial tiles
this.addStartTiles();
}
// Update the actuator
this.actuate();
};
// Set up the initial tiles to start the game with
GameManager.prototype.addStartTiles = function () {
for (var i = 0; i < this.startTiles; i++) {
this.addRandomTile();
}
};
// Adds a tile in a random position
GameManager.prototype.addRandomTile = function () {
if (this.grid.cellsAvailable()) {
var value = Math.random() < 0.9 ? 2 : 4;
var tile = new Tile(this.grid.randomAvailableCell(), value);
this.grid.insertTile(tile);
}
};
// Sends the updated grid to the actuator
GameManager.prototype.actuate = function () {
if (this.storageManager.getBestScore() < this.score) {
this.storageManager.setBestScore(this.score);
}
// Clear the state when the game is over (game over only, not win)
if (this.over) {
this.storageManager.clearGameState();
} else {
this.storageManager.setGameState(this.serialize());
}
this.actuator.actuate(this.grid, {
score: this.score,
over: this.over,
won: this.won,
bestScore: this.storageManager.getBestScore(),
terminated: this.isGameTerminated()
});
};
// Represent the current game as an object
GameManager.prototype.serialize = function () {
return {
grid: this.grid.serialize(),
score: this.score,
over: this.over,
won: this.won,
keepPlaying: this.keepPlaying
};
};
// Save all tile positions and remove merger info
GameManager.prototype.prepareTiles = function () {
this.grid.eachCell(function (x, y, tile) {
if (tile) {
tile.mergedFrom = null;
tile.savePosition();
}
});
};
// Move a tile and its representation
GameManager.prototype.moveTile = function (tile, cell) {
this.grid.cells[tile.x][tile.y] = null;
this.grid.cells[cell.x][cell.y] = tile;
tile.updatePosition(cell);
};
// Move tiles on the grid in the specified direction
GameManager.prototype.move = function (direction) {
// 0: up, 1: right, 2: down, 3: left
var self = this;
if (this.isGameTerminated()) return; // Don't do anything if the game's over
var cell, tile;
var vector = this.getVector(direction);
var traversals = this.buildTraversals(vector);
var moved = false;
// Save the current tile positions and remove merger information
this.prepareTiles();
// Traverse the grid in the right direction and move tiles
traversals.x.forEach(function (x) {
traversals.y.forEach(function (y) {
cell = { x: x, y: y };
tile = self.grid.cellContent(cell);
if (tile) {
var positions = self.findFarthestPosition(cell, vector);
var next = self.grid.cellContent(positions.next);
// Only one merger per row traversal?
if (next && next.value === tile.value && !next.mergedFrom) {
var merged = new Tile(positions.next, tile.value * 2);
merged.mergedFrom = [tile, next];
self.grid.insertTile(merged);
self.grid.removeTile(tile);
// Converge the two tiles' positions
tile.updatePosition(positions.next);
// Update the score
self.score += merged.value;
// The mighty 2048 tile
if (merged.value === 2048) self.won = true;
} else {
self.moveTile(tile, positions.farthest);
}
if (!self.positionsEqual(cell, tile)) {
moved = true; // The tile moved from its original cell!
}
}
});
});
if (moved) {
this.addRandomTile();
if (!this.movesAvailable()) {
this.over = true; // Game over!
}
this.actuate();
}
};
// Get the vector representing the chosen direction
GameManager.prototype.getVector = function (direction) {
// Vectors representing tile movement
var map = {
0: { x: 0, y: -1 }, // Up
1: { x: 1, y: 0 }, // Right
2: { x: 0, y: 1 }, // Down
3: { x: -1, y: 0 } // Left
};
return map[direction];
};
// Build a list of positions to traverse in the right order
GameManager.prototype.buildTraversals = function (vector) {
var traversals = { x: [], y: [] };
for (var pos = 0; pos < this.size; pos++) {
traversals.x.push(pos);
traversals.y.push(pos);
}
// Always traverse from the farthest cell in the chosen direction
if (vector.x === 1) traversals.x = traversals.x.reverse();
if (vector.y === 1) traversals.y = traversals.y.reverse();
return traversals;
};
GameManager.prototype.findFarthestPosition = function (cell, vector) {
var previous;
// Progress towards the vector direction until an obstacle is found
do {
previous = cell;
cell = { x: previous.x + vector.x, y: previous.y + vector.y };
} while (this.grid.withinBounds(cell) &&
this.grid.cellAvailable(cell));
return {
farthest: previous,
next: cell // Used to check if a merge is required
};
};
GameManager.prototype.movesAvailable = function () {
return this.grid.cellsAvailable() || this.tileMatchesAvailable();
};
// Check for available matches between tiles (more expensive check)
GameManager.prototype.tileMatchesAvailable = function () {
var self = this;
var tile;
for (var x = 0; x < this.size; x++) {
for (var y = 0; y < this.size; y++) {
tile = this.grid.cellContent({ x: x, y: y });
if (tile) {
for (var direction = 0; direction < 4; direction++) {
var vector = self.getVector(direction);
var cell = { x: x + vector.x, y: y + vector.y };
var other = self.grid.cellContent(cell);
if (other && other.value === tile.value) {
return true; // These two tiles can be merged
}
}
}
}
}
return false;
};
GameManager.prototype.positionsEqual = function (first, second) {
return first.x === second.x && first.y === second.y;
};

117
Help/2048/js/grid.js Normal file
View File

@@ -0,0 +1,117 @@
function Grid(size, previousState) {
this.size = size;
this.cells = previousState ? this.fromState(previousState) : this.empty();
}
// Build a grid of the specified size
Grid.prototype.empty = function () {
var cells = [];
for (var x = 0; x < this.size; x++) {
var row = cells[x] = [];
for (var y = 0; y < this.size; y++) {
row.push(null);
}
}
return cells;
};
Grid.prototype.fromState = function (state) {
var cells = [];
for (var x = 0; x < this.size; x++) {
var row = cells[x] = [];
for (var y = 0; y < this.size; y++) {
var tile = state[x][y];
row.push(tile ? new Tile(tile.position, tile.value) : null);
}
}
return cells;
};
// Find the first available random position
Grid.prototype.randomAvailableCell = function () {
var cells = this.availableCells();
if (cells.length) {
return cells[Math.floor(Math.random() * cells.length)];
}
};
Grid.prototype.availableCells = function () {
var cells = [];
this.eachCell(function (x, y, tile) {
if (!tile) {
cells.push({ x: x, y: y });
}
});
return cells;
};
// Call callback for every cell
Grid.prototype.eachCell = function (callback) {
for (var x = 0; x < this.size; x++) {
for (var y = 0; y < this.size; y++) {
callback(x, y, this.cells[x][y]);
}
}
};
// Check if there are any cells available
Grid.prototype.cellsAvailable = function () {
return !!this.availableCells().length;
};
// Check if the specified cell is taken
Grid.prototype.cellAvailable = function (cell) {
return !this.cellOccupied(cell);
};
Grid.prototype.cellOccupied = function (cell) {
return !!this.cellContent(cell);
};
Grid.prototype.cellContent = function (cell) {
if (this.withinBounds(cell)) {
return this.cells[cell.x][cell.y];
} else {
return null;
}
};
// Inserts a tile at its position
Grid.prototype.insertTile = function (tile) {
this.cells[tile.x][tile.y] = tile;
};
Grid.prototype.removeTile = function (tile) {
this.cells[tile.x][tile.y] = null;
};
Grid.prototype.withinBounds = function (position) {
return position.x >= 0 && position.x < this.size &&
position.y >= 0 && position.y < this.size;
};
Grid.prototype.serialize = function () {
var cellState = [];
for (var x = 0; x < this.size; x++) {
var row = cellState[x] = [];
for (var y = 0; y < this.size; y++) {
row.push(this.cells[x][y] ? this.cells[x][y].serialize() : null);
}
}
return {
size: this.size,
cells: cellState
};
};

View File

@@ -0,0 +1,139 @@
function HTMLActuator() {
this.tileContainer = document.querySelector(".tile-container");
this.scoreContainer = document.querySelector(".score-container");
this.bestContainer = document.querySelector(".best-container");
this.messageContainer = document.querySelector(".game-message");
this.score = 0;
}
HTMLActuator.prototype.actuate = function (grid, metadata) {
var self = this;
window.requestAnimationFrame(function () {
self.clearContainer(self.tileContainer);
grid.cells.forEach(function (column) {
column.forEach(function (cell) {
if (cell) {
self.addTile(cell);
}
});
});
self.updateScore(metadata.score);
self.updateBestScore(metadata.bestScore);
if (metadata.terminated) {
if (metadata.over) {
self.message(false); // You lose
} else if (metadata.won) {
self.message(true); // You win!
}
}
});
};
// Continues the game (both restart and keep playing)
HTMLActuator.prototype.continueGame = function () {
this.clearMessage();
};
HTMLActuator.prototype.clearContainer = function (container) {
while (container.firstChild) {
container.removeChild(container.firstChild);
}
};
HTMLActuator.prototype.addTile = function (tile) {
var self = this;
var wrapper = document.createElement("div");
var inner = document.createElement("div");
var position = tile.previousPosition || { x: tile.x, y: tile.y };
var positionClass = this.positionClass(position);
// We can't use classlist because it somehow glitches when replacing classes
var classes = ["tile", "tile-" + tile.value, positionClass];
if (tile.value > 2048) classes.push("tile-super");
this.applyClasses(wrapper, classes);
inner.classList.add("tile-inner");
inner.textContent = tile.value;
if (tile.previousPosition) {
// Make sure that the tile gets rendered in the previous position first
window.requestAnimationFrame(function () {
classes[2] = self.positionClass({ x: tile.x, y: tile.y });
self.applyClasses(wrapper, classes); // Update the position
});
} else if (tile.mergedFrom) {
classes.push("tile-merged");
this.applyClasses(wrapper, classes);
// Render the tiles that merged
tile.mergedFrom.forEach(function (merged) {
self.addTile(merged);
});
} else {
classes.push("tile-new");
this.applyClasses(wrapper, classes);
}
// Add the inner part of the tile to the wrapper
wrapper.appendChild(inner);
// Put the tile on the board
this.tileContainer.appendChild(wrapper);
};
HTMLActuator.prototype.applyClasses = function (element, classes) {
element.setAttribute("class", classes.join(" "));
};
HTMLActuator.prototype.normalizePosition = function (position) {
return { x: position.x + 1, y: position.y + 1 };
};
HTMLActuator.prototype.positionClass = function (position) {
position = this.normalizePosition(position);
return "tile-position-" + position.x + "-" + position.y;
};
HTMLActuator.prototype.updateScore = function (score) {
this.clearContainer(this.scoreContainer);
var difference = score - this.score;
this.score = score;
this.scoreContainer.textContent = this.score;
if (difference > 0) {
var addition = document.createElement("div");
addition.classList.add("score-addition");
addition.textContent = "+" + difference;
this.scoreContainer.appendChild(addition);
}
};
HTMLActuator.prototype.updateBestScore = function (bestScore) {
this.bestContainer.textContent = bestScore;
};
HTMLActuator.prototype.message = function (won) {
var type = won ? "game-won" : "game-over";
var message = won ? "You win!" : "Game over!";
this.messageContainer.classList.add(type);
this.messageContainer.getElementsByTagName("p")[0].textContent = message;
};
HTMLActuator.prototype.clearMessage = function () {
// IE only takes one value to remove at a time.
this.messageContainer.classList.remove("game-won");
this.messageContainer.classList.remove("game-over");
};

View File

@@ -0,0 +1,144 @@
function KeyboardInputManager() {
this.events = {};
if (window.navigator.msPointerEnabled) {
//Internet Explorer 10 style
this.eventTouchstart = "MSPointerDown";
this.eventTouchmove = "MSPointerMove";
this.eventTouchend = "MSPointerUp";
} else {
this.eventTouchstart = "touchstart";
this.eventTouchmove = "touchmove";
this.eventTouchend = "touchend";
}
this.listen();
}
KeyboardInputManager.prototype.on = function (event, callback) {
if (!this.events[event]) {
this.events[event] = [];
}
this.events[event].push(callback);
};
KeyboardInputManager.prototype.emit = function (event, data) {
var callbacks = this.events[event];
if (callbacks) {
callbacks.forEach(function (callback) {
callback(data);
});
}
};
KeyboardInputManager.prototype.listen = function () {
var self = this;
var map = {
38: 0, // Up
39: 1, // Right
40: 2, // Down
37: 3, // Left
75: 0, // Vim up
76: 1, // Vim right
74: 2, // Vim down
72: 3, // Vim left
87: 0, // W
68: 1, // D
83: 2, // S
65: 3 // A
};
// Respond to direction keys
document.addEventListener("keydown", function (event) {
var modifiers = event.altKey || event.ctrlKey || event.metaKey ||
event.shiftKey;
var mapped = map[event.which];
if (!modifiers) {
if (mapped !== undefined) {
event.preventDefault();
self.emit("move", mapped);
}
}
// R key restarts the game
if (!modifiers && event.which === 82) {
self.restart.call(self, event);
}
});
// Respond to button presses
this.bindButtonPress(".retry-button", this.restart);
this.bindButtonPress(".restart-button", this.restart);
this.bindButtonPress(".keep-playing-button", this.keepPlaying);
// Respond to swipe events
var touchStartClientX, touchStartClientY;
var gameContainer = document.getElementsByClassName("game-container")[0];
gameContainer.addEventListener(this.eventTouchstart, function (event) {
if ((!window.navigator.msPointerEnabled && event.touches.length > 1) ||
event.targetTouches.length > 1) {
return; // Ignore if touching with more than 1 finger
}
if (window.navigator.msPointerEnabled) {
touchStartClientX = event.pageX;
touchStartClientY = event.pageY;
} else {
touchStartClientX = event.touches[0].clientX;
touchStartClientY = event.touches[0].clientY;
}
event.preventDefault();
});
gameContainer.addEventListener(this.eventTouchmove, function (event) {
event.preventDefault();
});
gameContainer.addEventListener(this.eventTouchend, function (event) {
if ((!window.navigator.msPointerEnabled && event.touches.length > 0) ||
event.targetTouches.length > 0) {
return; // Ignore if still touching with one or more fingers
}
var touchEndClientX, touchEndClientY;
if (window.navigator.msPointerEnabled) {
touchEndClientX = event.pageX;
touchEndClientY = event.pageY;
} else {
touchEndClientX = event.changedTouches[0].clientX;
touchEndClientY = event.changedTouches[0].clientY;
}
var dx = touchEndClientX - touchStartClientX;
var absDx = Math.abs(dx);
var dy = touchEndClientY - touchStartClientY;
var absDy = Math.abs(dy);
if (Math.max(absDx, absDy) > 10) {
// (right : left) : (down : up)
self.emit("move", absDx > absDy ? (dx > 0 ? 1 : 3) : (dy > 0 ? 2 : 0));
}
});
};
KeyboardInputManager.prototype.restart = function (event) {
event.preventDefault();
this.emit("restart");
};
KeyboardInputManager.prototype.keepPlaying = function (event) {
event.preventDefault();
this.emit("keepPlaying");
};
KeyboardInputManager.prototype.bindButtonPress = function (selector, fn) {
var button = document.querySelector(selector);
button.addEventListener("click", fn.bind(this));
button.addEventListener(this.eventTouchend, fn.bind(this));
};

View File

@@ -0,0 +1,63 @@
window.fakeStorage = {
_data: {},
setItem: function (id, val) {
return this._data[id] = String(val);
},
getItem: function (id) {
return this._data.hasOwnProperty(id) ? this._data[id] : undefined;
},
removeItem: function (id) {
return delete this._data[id];
},
clear: function () {
return this._data = {};
}
};
function LocalStorageManager() {
this.bestScoreKey = "bestScore";
this.gameStateKey = "gameState";
var supported = this.localStorageSupported();
this.storage = supported ? window.localStorage : window.fakeStorage;
}
LocalStorageManager.prototype.localStorageSupported = function () {
var testKey = "test";
try {
var storage = window.localStorage;
storage.setItem(testKey, "1");
storage.removeItem(testKey);
return true;
} catch (error) {
return false;
}
};
// Best score getters/setters
LocalStorageManager.prototype.getBestScore = function () {
return this.storage.getItem(this.bestScoreKey) || 0;
};
LocalStorageManager.prototype.setBestScore = function (score) {
this.storage.setItem(this.bestScoreKey, score);
};
// Game state getters/setters and clearing
LocalStorageManager.prototype.getGameState = function () {
var stateJSON = this.storage.getItem(this.gameStateKey);
return stateJSON ? JSON.parse(stateJSON) : null;
};
LocalStorageManager.prototype.setGameState = function (gameState) {
this.storage.setItem(this.gameStateKey, JSON.stringify(gameState));
};
LocalStorageManager.prototype.clearGameState = function () {
this.storage.removeItem(this.gameStateKey);
};

27
Help/2048/js/tile.js Normal file
View File

@@ -0,0 +1,27 @@
function Tile(position, value) {
this.x = position.x;
this.y = position.y;
this.value = value || 2;
this.previousPosition = null;
this.mergedFrom = null; // Tracks tiles that merged together
}
Tile.prototype.savePosition = function () {
this.previousPosition = { x: this.x, y: this.y };
};
Tile.prototype.updatePosition = function (position) {
this.x = position.x;
this.y = position.y;
};
Tile.prototype.serialize = function () {
return {
position: {
x: this.x,
y: this.y
},
value: this.value
};
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

View File

@@ -0,0 +1,640 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
<defs>
<font id="clear_sansbold" horiz-adv-x="1217" >
<font-face units-per-em="2048" ascent="1489" descent="-559" />
<missing-glyph horiz-adv-x="492" />
<glyph unicode="&#xfb01;" horiz-adv-x="1208" d="M35 844v205h133v102q0 195 96.5 282t290.5 87q91 0 193 -25l-50 -225q-72 24 -139 24q-76 0 -104.5 -31.5t-28.5 -111.5v-102h213v-205h-213v-844h-258v844h-133zM790 1335q0 70 32 100.5t109 30.5q78 0 112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34 t-29.5 97zM804 0v1049h258v-1049h-258z" />
<glyph unicode="&#xfb02;" horiz-adv-x="1208" d="M35 844v205h133v102q0 195 96.5 282t290.5 87q91 0 193 -25l-50 -225q-72 24 -139 24q-76 0 -104.5 -31.5t-28.5 -111.5v-102h213v-205h-213v-844h-258v844h-133zM804 0v1489h258v-1489h-258z" />
<glyph unicode="&#xfb03;" horiz-adv-x="1868" d="M35 844v205h133v102q0 195 96.5 282t290.5 87q91 0 193 -25l-50 -225q-72 24 -139 24q-76 0 -104.5 -31.5t-28.5 -111.5v-102h213v-205h-213v-844h-258v844h-133zM694 844v205h133v102q0 195 96.5 282t290.5 87q91 0 193 -25l-50 -225q-72 24 -139 24q-76 0 -104.5 -31.5 t-28.5 -111.5v-102h213v-205h-213v-844h-258v844h-133zM1450 1335q0 70 32 100.5t109 30.5q78 0 112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97zM1464 0v1049h258v-1049h-258z" />
<glyph unicode="&#xfb04;" horiz-adv-x="1868" d="M35 844v205h133v102q0 195 96.5 282t290.5 87q91 0 193 -25l-50 -225q-72 24 -139 24q-76 0 -104.5 -31.5t-28.5 -111.5v-102h213v-205h-213v-844h-258v844h-133zM694 844v205h133v102q0 195 96.5 282t290.5 87q91 0 193 -25l-50 -225q-72 24 -139 24q-76 0 -104.5 -31.5 t-28.5 -111.5v-102h213v-205h-213v-844h-258v844h-133zM1464 0v1489h258v-1489h-258z" />
<glyph horiz-adv-x="0" />
<glyph unicode="&#xd;" horiz-adv-x="492" />
<glyph horiz-adv-x="0" />
<glyph horiz-adv-x="0" />
<glyph unicode=" " horiz-adv-x="492" />
<glyph unicode="&#x09;" horiz-adv-x="492" />
<glyph unicode="&#xa0;" horiz-adv-x="492" />
<glyph unicode="!" horiz-adv-x="584" d="M129 139q0 82 36 118t126 36q92 0 128 -35t36 -119q0 -86 -39 -119.5t-125 -33.5q-94 0 -128 37.5t-34 115.5zM152 1384h280l-31 -944h-215z" />
<glyph unicode="&#x22;" horiz-adv-x="977" d="M137 1384h275l-45 -612h-185zM565 1384h275l-45 -612h-185z" />
<glyph unicode="#" horiz-adv-x="1405" d="M72 383v180h280l70 258h-234v180h283l104 385h193l-104 -385h247l105 385h192l-104 -385h229v-180h-278l-70 -258h232v-180h-279l-104 -383h-193l104 383h-247l-105 -383h-192l104 383h-233zM545 563h248l69 258h-248z" />
<glyph unicode="$" horiz-adv-x="1280" d="M123 291l205 139q37 -49 99 -94t134 -53v315q-164 41 -246.5 86.5t-125 112.5t-42.5 159q0 160 111 247t303 104v106h180v-106q144 -11 247.5 -69t162.5 -155l-193 -137q-34 47 -90.5 87t-126.5 50v-280q191 -50 269 -96t118.5 -112.5t40.5 -164.5q0 -166 -111.5 -258 t-316.5 -109v-196h-180v192q-310 32 -438 232zM414 971q0 -39 30.5 -68t116.5 -53v237q-65 -4 -106 -32.5t-41 -83.5zM741 281q74 8 118 41.5t44 85.5q0 51 -34.5 83.5t-127.5 61.5v-272z" />
<glyph unicode="%" horiz-adv-x="2163" d="M88 963q0 221 101.5 335.5t289.5 114.5q192 0 292.5 -116t100.5 -334q0 -216 -101 -330.5t-292 -114.5q-185 0 -288 114.5t-103 330.5zM334 963q0 -152 37 -208.5t108 -56.5q80 0 114 63.5t34 201.5q0 136 -32 203t-116 67q-78 0 -111.5 -64.5t-33.5 -205.5zM590 -51 l747 1487h238l-750 -1487h-235zM1290 414q0 219 100 334.5t291 115.5q193 0 293.5 -116t100.5 -334q0 -216 -102.5 -330.5t-291.5 -114.5q-185 0 -288 114.5t-103 330.5zM1536 414q0 -152 37 -208t108 -56q81 0 114.5 63.5t33.5 200.5q0 97 -16 158t-45 86.5t-87 25.5 q-78 0 -111.5 -64.5t-33.5 -205.5z" />
<glyph unicode="&#x26;" horiz-adv-x="1417" d="M92 373q0 131 57.5 217t231.5 194q-59 72 -101 148t-42 153q0 160 106 244t303 84q165 0 271 -74t106 -209q0 -72 -31 -136t-85 -120t-165 -129l263 -309q64 87 102 230l227 -52q-51 -211 -176 -356l217 -258h-327l-72 86q-72 -49 -158 -82t-215 -33q-237 0 -374.5 109 t-137.5 293zM358 371q0 -90 67 -140.5t183 -50.5q129 0 226 76l-308 356q-94 -59 -131 -114.5t-37 -126.5zM500 1096q0 -41 23.5 -81t70.5 -93q65 43 103.5 77.5t52.5 61t14 67.5t-34 68t-89 27q-70 0 -105.5 -34t-35.5 -93z" />
<glyph unicode="'" horiz-adv-x="549" d="M137 1384h275l-45 -612h-185z" />
<glyph unicode="(" horiz-adv-x="856" d="M113 561q0 528 409 961h293q-217 -205 -337 -438.5t-120 -522.5t120 -520t337 -436h-293q-409 433 -409 956z" />
<glyph unicode=")" horiz-adv-x="856" d="M41 -395q217 205 337 436t120 520t-120 522.5t-337 438.5h293q409 -433 409 -961q0 -523 -409 -956h-293z" />
<glyph unicode="*" horiz-adv-x="911" d="M31 983l282 141l-282 146l90 149l258 -159l-10 260h174l-13 -260l261 159l90 -151l-283 -142l283 -143l-90 -149l-259 159l11 -260h-174l12 260l-260 -159z" />
<glyph unicode="+" horiz-adv-x="1427" d="M133 479v205h479v479h205v-479h477v-205h-477v-477h-205v477h-479z" />
<glyph unicode="," horiz-adv-x="584" d="M129 145q0 74 35 117t131 43q160 0 160 -180q0 -123 -42 -234.5t-91 -183.5h-177q41 69 72.5 151t36.5 132q-66 4 -95.5 42t-29.5 113z" />
<glyph unicode="-" horiz-adv-x="786" d="M82 399v254h623v-254h-623z" />
<glyph unicode="." horiz-adv-x="584" d="M129 145q0 82 36 121t126 39q92 0 128 -38t36 -122q0 -86 -39 -122.5t-125 -36.5q-94 0 -128 41t-34 118z" />
<glyph unicode="/" horiz-adv-x="1036" d="M-12 -299l690 1819h256l-692 -1819h-254z" />
<glyph unicode="0" horiz-adv-x="1280" d="M100 690q0 371 131 547t408 176q279 0 410 -175t131 -546q0 -373 -131 -548t-410 -175q-277 0 -408 175t-131 546zM391 690q0 -248 59.5 -363.5t188.5 -115.5t189.5 116.5t60.5 364.5t-60.5 363.5t-189.5 115.5t-188.5 -116.5t-59.5 -364.5z" />
<glyph unicode="1" horiz-adv-x="1280" d="M248 928v190q144 9 217.5 34.5t117 79.5t68.5 152h215v-1384h-282v928h-336z" />
<glyph unicode="2" horiz-adv-x="1204" d="M102 1178q85 127 201.5 181t290.5 54q214 0 337.5 -100t123.5 -281q0 -133 -48.5 -233.5t-138 -195t-223 -208.5t-164.5 -137h619v-258h-994v236q163 137 297 262t207 207.5t113.5 158t40.5 158.5q0 65 -49 103t-135 38q-93 0 -152 -43t-98 -102z" />
<glyph unicode="3" horiz-adv-x="1204" d="M66 195l227 155q37 -57 92 -92t150 -35q120 0 174.5 46t54.5 141q0 192 -254 192h-123v242h107q127 0 185 50t58 130q0 59 -42 98t-138 39t-153.5 -30.5t-98.5 -92.5l-225 158q82 111 198.5 164t299.5 53q139 0 242.5 -43.5t156.5 -120.5t53 -176q0 -271 -280 -340 q137 -9 221 -103.5t84 -240.5q0 -213 -139.5 -315.5t-383.5 -102.5q-174 0 -294.5 63.5t-171.5 160.5z" />
<glyph unicode="4" horiz-adv-x="1280" d="M63 229v260l676 895h289v-913h170v-242h-170v-229h-270v229h-695zM338 471h420v543z" />
<glyph unicode="5" horiz-adv-x="1204" d="M49 199l225 159q77 -135 261 -135q276 0 276 238q0 100 -72.5 157.5t-201.5 57.5q-138 0 -209 -74h-197l82 782h809v-258h-584l-28 -243q95 39 211 39q222 0 350.5 -119t128.5 -348q0 -226 -144.5 -355t-416.5 -129q-339 0 -490 228z" />
<glyph unicode="6" horiz-adv-x="1204" d="M100 608q0 392 147 598.5t429 206.5q267 0 395 -113l-160 -217q-49 43 -104 65.5t-131 22.5q-135 0 -196.5 -92t-78.5 -262q80 54 143.5 75t151.5 21q195 0 309.5 -119.5t114.5 -344.5q0 -222 -134 -350t-363 -128q-250 0 -386.5 165.5t-136.5 471.5zM393 598 q0 -153 23 -225t73 -116t136 -44q94 0 153.5 50t59.5 179q0 106 -59 169t-158 63q-78 0 -137.5 -25.5t-90.5 -50.5z" />
<glyph unicode="7" horiz-adv-x="1280" d="M113 1126v258h1038v-172l-520 -1212h-316l510 1126h-712z" />
<glyph unicode="8" horiz-adv-x="1204" d="M84 375q0 123 69.5 215t186.5 145q-112 55 -167.5 133.5t-55.5 169.5q0 183 128 279t357 96q223 0 353 -93t130 -280q0 -62 -29.5 -115t-76.5 -96t-143 -96q115 -56 170 -105t83.5 -112t28.5 -141q0 -192 -133.5 -298t-382.5 -106q-246 0 -382 101.5t-136 302.5zM367 373 q0 -78 56 -128t179 -50t178.5 52t55.5 128q0 86 -57.5 143t-176.5 113q-127 -56 -181 -113t-54 -145zM393 1042q0 -45 20 -76t66.5 -65.5t122.5 -64.5q117 51 162 100t45 100q0 66 -48 111t-159 45q-119 0 -164 -45t-45 -105z" />
<glyph unicode="9" horiz-adv-x="1204" d="M84 936q0 216 133.5 346.5t353.5 130.5q271 0 402 -169t131 -468q0 -386 -146.5 -595.5t-427.5 -209.5q-278 0 -413 115l157 215q101 -88 256 -88q233 0 273 354q-60 -41 -122.5 -68.5t-150.5 -27.5q-213 0 -329.5 120t-116.5 345zM365 942q0 -105 58.5 -168t160.5 -63 q78 0 137 25.5t90 49.5q0 211 -55.5 298t-180.5 87q-98 0 -154 -60.5t-56 -168.5z" />
<glyph unicode=":" horiz-adv-x="584" d="M129 145q0 82 36 121t126 39q92 0 128 -38t36 -122q0 -86 -39 -122.5t-125 -36.5q-94 0 -128 41t-34 118zM129 889q0 82 36 121t126 39q92 0 128 -38t36 -122q0 -86 -39 -123t-125 -37q-94 0 -128 41t-34 119z" />
<glyph unicode=";" horiz-adv-x="584" d="M129 145q0 74 35 117t131 43q160 0 160 -180q0 -123 -42 -234.5t-91 -183.5h-177q41 69 72.5 151t36.5 132q-66 4 -95.5 42t-29.5 113zM129 889q0 82 36 121t126 39q92 0 128 -38t36 -122q0 -86 -39 -123t-125 -37q-94 0 -128 41t-34 119z" />
<glyph unicode="&#x3c;" horiz-adv-x="1427" d="M131 481v203l1163 479v-225l-866 -354l866 -355v-225z" />
<glyph unicode="=" horiz-adv-x="1427" d="M133 233v205h1161v-205h-1161zM133 725v205h1161v-205h-1161z" />
<glyph unicode="&#x3e;" horiz-adv-x="1427" d="M131 4v225l866 355l-866 354v225l1163 -479v-203z" />
<glyph unicode="?" horiz-adv-x="1071" d="M35 1165q69 123 184 185.5t291 62.5q238 0 363.5 -98.5t125.5 -276.5q0 -99 -40.5 -176t-114.5 -140t-240 -144v-179h-272v301q163 68 235 112t107 93t35 113q0 153 -197 153q-90 0 -144.5 -35.5t-99.5 -109.5zM309 139q0 82 36 118t126 36q92 0 128 -36t36 -118 q0 -86 -39 -119.5t-125 -33.5q-94 0 -128 37.5t-34 115.5z" />
<glyph unicode="@" horiz-adv-x="1950" d="M104 553q0 239 114 436.5t319 310.5t452 113q402 0 629 -223t227 -621q0 -169 -45 -292t-135.5 -192t-224.5 -69q-99 0 -164.5 27t-93.5 98q-141 -98 -283 -98q-127 0 -215 59t-134 166.5t-46 249.5q0 231 113 367.5t315 136.5q113 0 231 -70v41h215v-696q0 -66 22.5 -81 t51.5 -15q64 0 106 46t64.5 128t22.5 186q0 328 -168.5 499t-485.5 171q-195 0 -353 -88t-245.5 -244.5t-87.5 -347.5q0 -207 84.5 -361t238 -235.5t359.5 -81.5q123 0 228.5 9t220.5 36l39 -180q-190 -47 -490 -47q-260 0 -460 104.5t-310.5 302t-110.5 455.5zM725 520 q0 -143 55 -209.5t158 -66.5q89 0 223 92v422q-114 69 -198 69q-117 0 -177.5 -72.5t-60.5 -234.5z" />
<glyph unicode="A" horiz-adv-x="1337" d="M27 0l458 1384h367l459 -1384h-289l-92 281h-533l-90 -281h-280zM477 528h373l-186 572z" />
<glyph unicode="B" horiz-adv-x="1298" d="M150 0v1384h489q266 0 381 -77.5t115 -245.5q0 -129 -62.5 -209t-195.5 -107q174 -24 253.5 -110t79.5 -234q0 -208 -143 -304.5t-397 -96.5h-520zM432 250h143q165 0 227.5 16t91 54t28.5 106q0 93 -63 131.5t-236 38.5h-191v-346zM432 842h172q125 0 185.5 35t60.5 122 q0 79 -58 109.5t-180 30.5h-180v-297z" />
<glyph unicode="C" horiz-adv-x="1333" d="M96 692q0 369 163 545t470 176q203 0 331 -68.5t195 -179.5l-219 -170q-48 72 -88 104t-91 48t-122 16q-170 0 -259 -108.5t-89 -362.5q0 -237 83.5 -354t266.5 -117q123 0 191.5 47t124.5 125l223 -164q-89 -133 -218.5 -195.5t-318.5 -62.5q-643 0 -643 721z" />
<glyph unicode="D" horiz-adv-x="1313" d="M137 0v1384h418q245 0 389.5 -71t213.5 -221.5t69 -399.5q0 -250 -69 -402t-208 -221t-391 -69h-422zM420 258h108q167 0 251.5 38.5t120.5 128.5t36 269q0 181 -35.5 268.5t-120.5 125.5t-252 38h-108v-868z" />
<glyph unicode="E" horiz-adv-x="1149" d="M150 0v1384h899v-249h-617v-295h520v-250h-520v-332h617v-258h-899z" />
<glyph unicode="F" horiz-adv-x="1104" d="M150 0v1384h890v-258h-608v-299h510v-249h-510v-578h-282z" />
<glyph unicode="G" horiz-adv-x="1415" d="M96 680q0 733 645 733q188 0 328 -63t213 -185l-217 -170q-53 86 -129 127t-191 41q-189 0 -273.5 -121.5t-84.5 -361.5q0 -238 83.5 -348.5t268.5 -110.5q140 0 258 58v215h-270v249h553v-612q-96 -72 -238.5 -116t-293.5 -44q-324 0 -488 169t-164 540z" />
<glyph unicode="H" horiz-adv-x="1409" d="M150 0v1384h282v-538h545v538h283v-1384h-283v588h-545v-588h-282z" />
<glyph unicode="I" horiz-adv-x="872" d="M102 0v217h193v950h-193v217h668v-217h-192v-950h192v-217h-668z" />
<glyph unicode="J" horiz-adv-x="924" d="M20 23l86 251q32 -17 102.5 -36t110.5 -19q74 0 107 20t47 70t14 144v931h283v-1007q0 -219 -110.5 -313.5t-346.5 -94.5q-51 0 -142 15t-151 39z" />
<glyph unicode="K" horiz-adv-x="1280" d="M150 0v1384h282v-540l453 540h329l-516 -596l553 -788h-352l-383 578l-84 -97v-481h-282z" />
<glyph unicode="L" horiz-adv-x="1038" d="M150 0v1384h282v-1126h582v-258h-864z" />
<glyph unicode="M" horiz-adv-x="1667" d="M150 0v1384h325l361 -657l364 657h318v-1384h-273v930l-332 -578h-163l-328 578v-930h-272z" />
<glyph unicode="N" horiz-adv-x="1411" d="M150 0v1384h366l469 -933v933h277v-1384h-332l-504 989v-989h-276z" />
<glyph unicode="O" horiz-adv-x="1364" d="M86 692q0 344 144.5 532.5t451.5 188.5q309 0 452.5 -188.5t143.5 -532.5q0 -361 -152.5 -541t-443.5 -180q-307 0 -451.5 189.5t-144.5 531.5zM377 692q0 -246 70.5 -358.5t234.5 -112.5q166 0 235.5 112.5t69.5 358.5t-69.5 358.5t-235.5 112.5t-235.5 -112.5 t-69.5 -358.5z" />
<glyph unicode="P" horiz-adv-x="1239" d="M150 0v1384h520q235 0 363 -109.5t128 -354.5q0 -250 -117.5 -371t-381.5 -121h-230v-428h-282zM432 674h115q155 0 214.5 21.5t84 72.5t24.5 150q0 117 -64.5 169t-232.5 52h-141v-465z" />
<glyph unicode="Q" horiz-adv-x="1364" d="M86 692q0 346 144.5 533.5t453.5 187.5q307 0 450.5 -188.5t143.5 -532.5q0 -611 -428 -706q10 -54 43 -78.5t119 -24.5q45 0 104.5 9.5t100.5 21.5l65 -227q-34 -11 -118 -23t-160 -12q-399 0 -461 330q-213 32 -335 205t-122 505zM377 692q0 -246 69.5 -358.5 t237.5 -112.5t235.5 114t67.5 357q0 246 -69.5 358.5t-233.5 112.5q-170 0 -238.5 -112.5t-68.5 -358.5z" />
<glyph unicode="R" horiz-adv-x="1284" d="M150 0v1384h503q267 0 390.5 -96t123.5 -315q0 -177 -74.5 -282t-211.5 -134l370 -557h-323l-353 524h-143v-524h-282zM432 770h207q95 0 146 18t73.5 56t22.5 117q0 106 -53.5 142t-176.5 36h-219v-369z" />
<glyph unicode="S" horiz-adv-x="1229" d="M66 229l217 166q48 -68 91 -102t102 -53t136 -19q115 0 179.5 39.5t64.5 120.5q0 46 -22.5 77t-67.5 53.5t-156 51.5q-108 29 -203.5 58.5t-165 76.5t-109.5 118t-40 179q0 197 133 307.5t381 110.5q359 0 508 -246l-215 -168q-57 88 -128 126t-169 38t-159.5 -35.5 t-61.5 -111.5q0 -67 64 -102.5t223 -71.5q88 -23 174 -49.5t153.5 -73.5t108.5 -123t41 -195q0 -208 -136.5 -319t-402.5 -111q-184 0 -319.5 61t-220.5 197z" />
<glyph unicode="T" horiz-adv-x="1204" d="M35 1126v258h1134v-258h-426v-1126h-282v1126h-426z" />
<glyph unicode="U" horiz-adv-x="1438" d="M150 578v806h282v-786q0 -141 27 -222t86 -119t172 -38q161 0 225 85.5t64 289.5v790h282v-806q0 -325 -132 -467t-437 -142q-302 0 -435.5 140.5t-133.5 468.5z" />
<glyph unicode="V" horiz-adv-x="1243" d="M27 1384h286l312 -1032l311 1032h281l-431 -1384h-333z" />
<glyph unicode="W" horiz-adv-x="1833" d="M43 1384h281l221 -903l229 903h279l231 -909l227 909h279l-358 -1384h-289l-232 915l-233 -915h-285z" />
<glyph unicode="X" horiz-adv-x="1286" d="M29 0l463 694l-451 690h321l287 -466l297 466h311l-454 -684l452 -700h-317l-297 477l-301 -477h-311z" />
<glyph unicode="Y" horiz-adv-x="1188" d="M18 1384h308l270 -579l276 579h297l-434 -856v-528h-284v522z" />
<glyph unicode="Z" horiz-adv-x="1147" d="M72 0v238l635 888h-605v258h942v-227l-641 -899h658v-258h-989z" />
<glyph unicode="[" horiz-adv-x="764" d="M154 -395v1884h548v-207h-309v-1470h309v-207h-548z" />
<glyph unicode="\" horiz-adv-x="1036" d="M102 1520h256l691 -1819h-254z" />
<glyph unicode="]" horiz-adv-x="764" d="M61 -188h310v1470h-310v207h549v-1884h-549v207z" />
<glyph unicode="^" horiz-adv-x="1300" d="M123 594l434 790h186l435 -790h-220l-307 557l-309 -557h-219z" />
<glyph unicode="_" horiz-adv-x="1024" d="M-10 -154h1044v-102h-1044v102z" />
<glyph unicode="`" horiz-adv-x="1044" d="M195 1569h315l188 -361h-204z" />
<glyph unicode="a" horiz-adv-x="1139" d="M84 295q0 112 45.5 185t135 114.5t257.5 58.5l221 21v47q0 88 -53 120.5t-155 32.5q-84 0 -144.5 -28t-89.5 -80l-201 129q53 89 166 136.5t273 47.5q245 0 353.5 -85.5t108.5 -280.5v-713h-237v109q-153 -140 -328 -140q-174 0 -263 91.5t-89 234.5zM350 299 q0 -72 40 -98.5t106 -26.5q47 0 114.5 29.5t132.5 83.5v200l-131 -12q-139 -12 -200.5 -53t-61.5 -123z" />
<glyph unicode="b" d="M145 0v1489h258v-524q142 114 314 114q211 0 309 -145.5t98 -401.5q0 -261 -109.5 -412t-312.5 -151q-80 0 -174.5 36.5t-150.5 92.5l-35 -98h-197zM403 291q43 -37 104.5 -65.5t119.5 -28.5q111 0 171 84.5t60 246.5t-51 243t-164 81q-63 0 -127.5 -29.5t-112.5 -72.5 v-459z" />
<glyph unicode="c" horiz-adv-x="1059" d="M92 518q0 265 126 413t378 148q135 0 240.5 -44t160.5 -136l-192 -137q-35 47 -82 69.5t-121 22.5q-132 0 -188 -81t-56 -251t57.5 -248.5t196.5 -78.5q60 0 110 17t95 75l195 -137q-60 -89 -158 -135t-248 -46q-254 0 -384 138.5t-130 410.5z" />
<glyph unicode="d" d="M92 516q0 267 115.5 415t324.5 148q74 0 152 -30.5t129 -77.5v518h258v-1489h-237v102q-72 -61 -152 -97t-182 -36q-198 0 -303 143t-105 404zM358 520q0 -151 51.5 -237t159.5 -86q64 0 130.5 29.5t113.5 72.5v459q-41 37 -101.5 65.5t-123.5 28.5q-104 0 -167 -89.5 t-63 -242.5z" />
<glyph unicode="e" horiz-adv-x="1143" d="M92 516q0 563 504 563q224 0 341.5 -126.5t117.5 -368.5v-127h-697q7 -140 68 -201t192 -61q76 0 133.5 19t100.5 73l192 -137q-63 -91 -163.5 -136t-274.5 -45q-259 0 -386.5 136t-127.5 411zM365 635h434q0 239 -209 239q-69 0 -113 -23.5t-70.5 -70t-41.5 -145.5z" />
<glyph unicode="f" horiz-adv-x="659" d="M35 844v205h133v102q0 195 96.5 282t290.5 87q91 0 193 -25l-50 -225q-72 24 -139 24q-76 0 -104.5 -31.5t-28.5 -111.5v-102h213v-205h-213v-844h-258v844h-133z" />
<glyph unicode="g" d="M92 535q0 162 51.5 285.5t151 191t240.5 67.5q83 0 166 -36.5t139 -92.5l34 99h197v-1029q0 -210 -129 -312.5t-414 -102.5q-235 0 -411 90l76 211q163 -76 335 -76q160 0 222.5 46t62.5 155v86q-128 -117 -309 -117q-192 0 -302 138t-110 397zM358 539q0 -160 57.5 -236 t149.5 -76q128 0 248 103v428q-106 94 -231 94q-94 0 -159 -86t-65 -227z" />
<glyph unicode="h" d="M145 0v1489h258v-576q82 82 175 124t182 42q176 0 247.5 -99t71.5 -280v-700h-258v578q0 166 -31 220t-110 54q-115 0 -277 -152v-700h-258z" />
<glyph unicode="i" horiz-adv-x="549" d="M131 1335q0 70 32 100.5t109 30.5q78 0 112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97zM145 0v1049h258v-1049h-258z" />
<glyph unicode="j" horiz-adv-x="563" d="M-162 -365l56 224q73 -29 151 -29t96.5 48t18.5 159v1012h258v-1094q0 -188 -84 -269t-275 -81q-43 0 -113 9.5t-108 20.5zM145 1335q0 70 32 100.5t110 30.5t111.5 -29.5t33.5 -101.5q0 -73 -36 -102t-109 -29q-82 0 -112 34t-30 97z" />
<glyph unicode="k" horiz-adv-x="1100" d="M145 0v1489h258v-852l353 412h299l-396 -441l418 -608h-293l-280 434l-101 -108v-326h-258z" />
<glyph unicode="l" horiz-adv-x="549" d="M145 0v1489h258v-1489h-258z" />
<glyph unicode="m" horiz-adv-x="1790" d="M145 0v1049h258v-136q72 78 151 122t175 44q131 0 193.5 -45t85.5 -133q90 90 168.5 134t183.5 44q153 0 223 -87t70 -292v-700h-258v618q0 93 -11 145t-33.5 70.5t-74.5 18.5q-59 0 -125 -44t-123 -108v-700h-258v618q0 102 -9 147.5t-32 66t-78 20.5q-48 0 -111 -36.5 t-137 -115.5v-700h-258z" />
<glyph unicode="n" d="M145 0v1049h258v-136q82 82 175 124t182 42q161 0 240 -88t79 -291v-700h-258v578q0 164 -29.5 219t-111.5 55q-115 0 -277 -152v-700h-258z" />
<glyph unicode="o" horiz-adv-x="1190" d="M92 522q0 266 121 411.5t383 145.5q260 0 381 -145.5t121 -411.5q0 -262 -121 -407.5t-381 -145.5q-504 0 -504 553zM358 522q0 -168 55.5 -247.5t182.5 -79.5q125 0 180 78.5t55 248.5q0 173 -54 252.5t-181 79.5q-126 0 -182 -81.5t-56 -250.5z" />
<glyph unicode="p" d="M145 -395v1444h238v-103q72 62 151.5 97.5t182.5 35.5q199 0 303 -140t104 -407q0 -169 -51 -298t-146 -197t-227 -68q-174 0 -297 109v-473h-258zM403 291q41 -37 101.5 -65.5t124.5 -28.5q106 0 167.5 90.5t61.5 240.5q0 153 -53 238.5t-158 85.5q-63 0 -129.5 -29.5 t-114.5 -72.5v-459z" />
<glyph unicode="q" d="M92 516q0 266 114 414.5t324 148.5q95 0 178 -40t132 -89l34 99h197v-1444h-258v479q-141 -115 -313 -115q-198 0 -303 140t-105 407zM358 520q0 -153 50 -238t161 -85q64 0 130.5 29.5t113.5 72.5v459q-47 43 -107.5 68.5t-117.5 25.5q-104 0 -167 -89.5t-63 -242.5z " />
<glyph unicode="r" horiz-adv-x="840" d="M145 0v1049h258v-150q66 72 142 119t170 47q80 0 114 -21l-51 -247q-40 20 -106 20q-72 0 -136.5 -34.5t-132.5 -100.5v-682h-258z" />
<glyph unicode="s" horiz-adv-x="1026" d="M76 152l192 135q47 -64 108.5 -85.5t131.5 -21.5q184 0 184 107q0 47 -52 72.5t-163 52.5q-209 46 -294 130t-85 218q0 139 106.5 229t313.5 90q141 0 248.5 -45t165.5 -135l-193 -137q-69 106 -225 106q-80 0 -121 -27.5t-41 -70.5q0 -41 37 -65.5t146 -51.5 q179 -44 255.5 -87.5t116 -108t39.5 -158.5q0 -104 -52.5 -178t-149 -113t-220.5 -39q-329 0 -448 183z" />
<glyph unicode="t" horiz-adv-x="739" d="M31 844v205h133v292h258v-292h244v-205h-244v-494q0 -98 30.5 -133t86.5 -35q71 0 141 29l45 -211q-104 -31 -219 -31q-182 0 -262 82t-80 266v527h-133z" />
<glyph unicode="u" d="M137 348v701h258v-578q0 -111 13 -170t42.5 -81.5t86.5 -22.5q115 0 276 151v701h258v-1049h-258v135q-68 -73 -166.5 -119.5t-189.5 -46.5q-178 0 -249 98.5t-71 280.5z" />
<glyph unicode="v" horiz-adv-x="1040" d="M27 1049h264l233 -691l232 691h258l-377 -1049h-238z" />
<glyph unicode="w" horiz-adv-x="1565" d="M27 1049h268l162 -676l235 676h195l237 -670l156 670h258l-281 -1049h-235l-236 668l-237 -668h-236z" />
<glyph unicode="x" horiz-adv-x="1079" d="M31 0l362 518l-356 531h301l209 -332l215 332h285l-361 -517l363 -532h-306l-208 334l-218 -334h-286z" />
<glyph unicode="y" horiz-adv-x="1085" d="M-20 -365l55 224q84 -29 151 -29q58 0 102 35t91 145l27 62l-379 977h268l248 -670l254 670h262l-451 -1121q-55 -135 -107 -200t-121.5 -94t-174.5 -29q-114 0 -225 30z" />
<glyph unicode="z" horiz-adv-x="930" d="M57 0v188l490 656h-477v205h786v-187l-491 -657h507v-205h-815z" />
<glyph unicode="{" horiz-adv-x="915" d="M102 453v221h39q111 0 170.5 77.5t59.5 223.5v139q0 197 95 301.5t318 104.5h70v-207h-41q-117 0 -160 -48t-43 -165v-166q0 -137 -64.5 -231.5t-174.5 -141.5q108 -39 173.5 -137t65.5 -234v-165q0 -117 43 -165t160 -48h41v-207h-70q-221 0 -317 103.5t-96 301.5v142 q0 141 -59.5 221t-170.5 80h-39z" />
<glyph unicode="|" horiz-adv-x="801" d="M281 -395v1915h239v-1915h-239z" />
<glyph unicode="}" horiz-adv-x="915" d="M61 -188h41q117 0 160 48t43 165v165q0 136 65.5 234t174.5 137q-111 47 -175.5 141.5t-64.5 231.5v166q0 117 -43 165t-160 48h-41v207h70q223 0 318.5 -104.5t95.5 -301.5v-139q0 -146 59.5 -223.5t169.5 -77.5h39v-221h-39q-110 0 -169.5 -80t-59.5 -221v-142 q0 -198 -96.5 -301.5t-317.5 -103.5h-70v207z" />
<glyph unicode="~" horiz-adv-x="1386" d="M143 580v229q56 47 106 73t95 38t117 12q65 0 128.5 -24.5t122 -54.5t114 -54.5t106.5 -24.5q80 0 154.5 38t156.5 110v-222q-67 -53 -141 -92t-166 -39q-72 0 -137.5 24.5t-126 54.5t-114.5 54.5t-101 24.5q-92 0 -170 -45t-144 -102z" />
<glyph unicode="&#xa1;" horiz-adv-x="584" d="M129 954q0 78 34 116t128 38q86 0 125 -34t39 -120q0 -82 -36 -117.5t-128 -35.5q-90 0 -126 35.5t-36 117.5zM152 -395l34 1059h215l31 -1059h-280z" />
<glyph unicode="&#xa2;" horiz-adv-x="1059" d="M92 518q0 265 126 413t378 148h18l48 209h180l-54 -237q145 -49 209 -152l-192 -137q-27 35 -66 61l-139 -628h12q60 0 110 17t95 75l195 -137q-60 -89 -158 -135t-248 -46l-55 2l-51 -231h-183l60 266q-152 57 -218.5 189.5t-66.5 322.5zM358 522q0 -196 74 -270 l133 600q-107 -9 -157 -86t-50 -244z" />
<glyph unicode="&#xa3;" horiz-adv-x="1280" d="M100 0v213q65 13 103 58.5t55.5 110t17.5 183.5h-151v189h137l-11 44q-42 128 -42 228q0 187 135 287t367 100q176 0 296.5 -61.5t184.5 -167.5l-217 -131q-41 65 -111.5 104t-152.5 39q-119 0 -176.5 -54.5t-57.5 -144.5q0 -73 44 -202l11 -41h379v-189h-370 q0 -224 -117 -325h784v-240h-1108z" />
<glyph unicode="&#xa4;" horiz-adv-x="1280" d="M139 281l142 135q-72 115 -72 231q0 125 72 232l-142 137l123 125l141 -140q105 72 236 72q57 0 119.5 -17.5t115.5 -54.5l142 140l125 -125l-144 -137q72 -109 72 -232q0 -122 -72 -231l144 -135l-125 -125l-142 139q-103 -72 -235 -72q-131 0 -236 72l-141 -139z M385 649q0 -102 75 -177t179 -75q65 0 124.5 33.5t94.5 93t35 125.5q0 104 -76.5 177t-175.5 73q-102 0 -179 -72t-77 -178z" />
<glyph unicode="&#xa5;" horiz-adv-x="1280" d="M45 1384h307l291 -538l295 538h297l-307 -538h211v-178h-314l-45 -80v-31h359v-176h-359v-381h-282v381h-361v176h361v27l-47 84h-314v178h213z" />
<glyph unicode="&#xa6;" horiz-adv-x="801" d="M281 283h239v-678h-239v678zM281 842v678h239v-678h-239z" />
<glyph unicode="&#xa7;" horiz-adv-x="1110" d="M92 545q0 188 211 307q-72 53 -110.5 110.5t-38.5 129.5q0 149 105.5 235t322.5 86q282 0 407 -160l-176 -131q-84 84 -227 84q-92 0 -133 -27.5t-41 -68.5q0 -31 45 -69.5t252 -166.5q128 -79 186.5 -133t90.5 -112.5t32 -126.5q0 -191 -211 -307q78 -60 113.5 -117.5 t35.5 -120.5q0 -162 -112.5 -243t-308.5 -81q-160 0 -257.5 43t-156.5 117l176 131q75 -84 233 -84q72 0 120 23.5t48 68.5t-74.5 97.5t-222.5 142.5q-153 92 -231 176t-78 197zM336 549q0 -41 67.5 -94.5t208.5 -139.5q68 41 115 89t47 90q0 24 -15.5 46.5t-48 49t-85 59.5 t-127.5 80q-80 -49 -121 -91t-41 -89z" />
<glyph unicode="&#xa8;" horiz-adv-x="1044" d="M152 1335q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM596 1335q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xa9;" horiz-adv-x="1802" d="M96 610q0 217 106 402.5t293.5 293t405.5 107.5q217 0 403 -106.5t293 -292.5t107 -404q0 -217 -105.5 -403t-292.5 -295t-405 -109q-219 0 -406 108.5t-293 295t-106 403.5zM258 610q0 -176 87.5 -328t235 -237.5t320.5 -85.5t320.5 85.5t235 237t87.5 328.5 q0 173 -86 323.5t-235.5 237t-321.5 86.5q-174 0 -323 -87t-234.5 -237.5t-85.5 -322.5zM504 612q0 217 100.5 331t317.5 114q133 0 209.5 -51.5t134.5 -143.5l-176 -100q-33 47 -67 78.5t-103 31.5q-109 0 -155 -59t-46 -201q0 -143 48 -200.5t155 -57.5q65 0 104 29t76 78 l180 -96q-71 -88 -118.5 -123.5t-106 -53.5t-131.5 -18q-422 0 -422 442z" />
<glyph unicode="&#xaa;" horiz-adv-x="834" d="M92 1014q0 105 65 164t222 73l129 13v20q0 49 -27.5 67.5t-93.5 18.5q-65 0 -95 -21.5t-46 -50.5l-148 93q31 53 100.5 91t192.5 38q146 0 224.5 -50.5t78.5 -191.5v-461h-174v57q-95 -75 -196 -75q-117 0 -174.5 59.5t-57.5 155.5zM285 1018q0 -39 19.5 -54.5 t57.5 -15.5q64 0 146 66v110l-68 -6q-90 -8 -122.5 -31.5t-32.5 -68.5z" />
<glyph unicode="&#xab;" horiz-adv-x="1436" d="M61 524l420 471h299l-420 -471l420 -471h-299zM635 524l420 471h299l-420 -471l420 -471h-299z" />
<glyph unicode="&#xac;" horiz-adv-x="1427" d="M133 801v205h1161v-682h-207v477h-954z" />
<glyph unicode="&#xad;" horiz-adv-x="786" d="M82 399v254h623v-254h-623z" />
<glyph unicode="&#xae;" horiz-adv-x="1802" d="M96 610q0 217 106 402.5t293.5 293t405.5 107.5q217 0 403 -106.5t293 -292.5t107 -404q0 -217 -105.5 -403t-292.5 -295t-405 -109q-219 0 -406 108.5t-293 295t-106 403.5zM258 610q0 -176 87.5 -328t235 -237.5t320.5 -85.5t320.5 85.5t235 237t87.5 328.5 q0 173 -86 323.5t-235.5 237t-321.5 86.5q-174 0 -323 -87t-234.5 -237.5t-85.5 -322.5zM588 201v850h305q178 0 260 -63t82 -197q0 -185 -145 -246l239 -344h-250l-211 307h-75v-307h-205zM793 682h96q54 0 81 7t39.5 25.5t12.5 65.5t-21.5 70.5t-103.5 23.5h-104v-192z " />
<glyph unicode="&#xaf;" horiz-adv-x="1044" d="M186 1255v185h672v-185h-672z" />
<glyph unicode="&#xb0;" horiz-adv-x="868" d="M123 1241q0 130 91.5 219.5t219.5 89.5q129 0 220 -90.5t91 -218.5q0 -83 -40.5 -154.5t-114 -115t-154.5 -43.5q-83 0 -157 42.5t-115 114t-41 156.5zM303 1241q0 -55 38 -94t95 -39q53 0 91 39t38 92q0 55 -38 93t-91 38q-59 0 -96 -39t-37 -90z" />
<glyph unicode="&#xb1;" horiz-adv-x="1427" d="M133 0v205h1161v-205h-1161zM133 829v205h479v479h205v-479h477v-205h-477v-477h-205v477h-479z" />
<glyph unicode="&#xb2;" horiz-adv-x="938" d="M76 1348q133 172 377 172q180 0 262 -71t82 -179q0 -60 -16 -107.5t-52.5 -92.5t-130.5 -115t-166 -111h397v-197h-737v182l108 78q228 160 283.5 217t55.5 113q0 78 -97 78q-101 0 -170 -88z" />
<glyph unicode="&#xb3;" horiz-adv-x="938" d="M59 801l199 102q64 -88 164 -88q72 0 98.5 32t26.5 66q0 91 -141 91h-115v176h102q92 0 124 22.5t32 63.5q0 28 -27.5 48.5t-85.5 20.5q-103 0 -168 -78l-182 107q61 74 143 115t224 41q172 0 255 -67t83 -159q0 -71 -38 -116t-124 -74q92 -23 134 -77t42 -126 q0 -137 -102.5 -203.5t-282.5 -66.5q-127 0 -221.5 49t-139.5 121z" />
<glyph unicode="&#xb4;" horiz-adv-x="1044" d="M348 1208l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xb5;" horiz-adv-x="1202" d="M131 -395v1444h258v-750q29 -39 83 -69.5t114 -30.5q131 0 227 120v730h256v-1049h-238l-4 111q-49 -70 -104 -106t-133 -36q-62 0 -109 17.5t-92 52.5v-434h-258z" />
<glyph unicode="&#xb6;" horiz-adv-x="1321" d="M41 1047q0 206 134 324t378 118h727v-207h-188v-1677h-234v1677h-162v-1677h-233v1001q-204 22 -313 138t-109 303z" />
<glyph unicode="&#xb7;" horiz-adv-x="584" d="M129 743q0 82 36 121t126 39q92 0 128 -38t36 -122q0 -86 -39 -122.5t-125 -36.5q-94 0 -128 41t-34 118z" />
<glyph unicode="&#xb8;" horiz-adv-x="1044" d="M199 -350l69 145q106 -45 193 -45q53 0 74.5 11.5t21.5 35.5q0 63 -180 72l88 170h170l-31 -62q62 -14 104 -61t42 -121q0 -190 -287 -190q-174 0 -264 45z" />
<glyph unicode="&#xb9;" horiz-adv-x="938" d="M170 1200v152q97 3 150 17t82 43t49 91h200v-856h-252v553h-229z" />
<glyph unicode="&#xba;" horiz-adv-x="842" d="M92 1157q0 172 80 267.5t250 95.5q168 0 248 -95.5t80 -267.5q0 -170 -80 -264t-248 -94q-172 0 -251 95t-79 263zM285 1157q0 -100 31.5 -148t105.5 -48q72 0 103.5 47.5t31.5 148.5q0 119 -39 160t-96 41q-60 0 -98.5 -41t-38.5 -160z" />
<glyph unicode="&#xbb;" horiz-adv-x="1436" d="M82 53l420 471l-420 471h299l420 -471l-420 -471h-299zM655 53l420 471l-420 471h299l420 -471l-420 -471h-299z" />
<glyph unicode="&#xbc;" horiz-adv-x="2095" d="M45 1085v152q97 3 150 17t82 43t49 91h200v-856h-252v553h-229zM469 -51l747 1489h238l-750 -1489h-235zM1155 160v166l492 530h227v-524h115v-172h-115v-160h-232v160h-487zM1386 332h256v276z" />
<glyph unicode="&#xbd;" horiz-adv-x="2095" d="M43 1085v152q97 3 150 17t82 43t49 91h200v-856h-252v553h-229zM406 -51l747 1489h238l-750 -1489h-235zM1213 701q133 172 377 172q180 0 262 -71t82 -179q0 -60 -16 -107.5t-52.5 -92.5t-130.5 -115t-166 -111h397v-197h-737v182l108 78q228 160 283.5 217t55.5 113 q0 78 -97 78q-101 0 -170 -88z" />
<glyph unicode="&#xbe;" horiz-adv-x="2095" d="M59 686l199 102q64 -88 164 -88q72 0 98.5 32t26.5 66q0 91 -141 91h-115v176h102q92 0 124 22.5t32 63.5q0 28 -27.5 48.5t-85.5 20.5q-103 0 -168 -78l-182 107q61 74 143 115t224 41q172 0 255 -67t83 -159q0 -71 -38 -116t-124 -74q92 -23 134 -77t42 -126 q0 -137 -102.5 -203.5t-282.5 -66.5q-127 0 -221.5 49t-139.5 121zM592 -51l747 1489h238l-750 -1489h-235zM1202 160v166l492 530h227v-524h115v-172h-115v-160h-232v160h-487zM1433 332h256v276z" />
<glyph unicode="&#xbf;" horiz-adv-x="1071" d="M72 0q0 105 39 185t112.5 145.5t243.5 154.5v179h272v-302q-55 -28 -120.5 -61t-122 -75t-95.5 -94t-39 -120q0 -78 44.5 -122t152.5 -44q90 0 144.5 37t99.5 111l233 -139q-69 -123 -184 -186.5t-291 -63.5q-237 0 -363 103.5t-126 291.5zM436 954q0 86 39 120t125 34 q94 0 128 -38t34 -116q0 -82 -36 -117.5t-126 -35.5q-92 0 -128 35.5t-36 117.5z" />
<glyph unicode="&#xc0;" horiz-adv-x="1337" d="M27 0l458 1384h367l459 -1384h-289l-92 281h-533l-90 -281h-280zM373 1905h315l188 -361h-204zM477 528h373l-186 572z" />
<glyph unicode="&#xc1;" horiz-adv-x="1337" d="M27 0l458 1384h367l459 -1384h-289l-92 281h-533l-90 -281h-280zM477 528h373l-186 572zM491 1544l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xc2;" horiz-adv-x="1337" d="M27 0l458 1384h367l459 -1384h-289l-92 281h-533l-90 -281h-280zM305 1544l235 361h244l236 -361h-211l-146 174l-149 -174h-209zM477 528h373l-186 572z" />
<glyph unicode="&#xc3;" horiz-adv-x="1337" d="M27 0l458 1384h367l459 -1384h-289l-92 281h-533l-90 -281h-280zM254 1567q5 155 73 236t189 81q61 0 104 -22.5t77 -48t62.5 -48t61.5 -22.5q35 0 51.5 35t16.5 92h182q-10 -165 -75.5 -243.5t-188.5 -78.5q-66 0 -109 22.5t-75.5 50.5t-59.5 50.5t-60 22.5 q-67 0 -67 -127h-182zM477 528h373l-186 572z" />
<glyph unicode="&#xc4;" horiz-adv-x="1337" d="M27 0l458 1384h367l459 -1384h-289l-92 281h-533l-90 -281h-280zM293 1671q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM477 528h373l-186 572zM737 1671q0 70 31.5 100.5t109.5 30.5t112 -29.5 t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xc5;" horiz-adv-x="1337" d="M27 0l458 1384h367l459 -1384h-289l-92 281h-533l-90 -281h-280zM434 1716q0 107 57.5 166.5t171.5 59.5q119 0 175.5 -60.5t56.5 -165.5q0 -110 -59.5 -167.5t-172.5 -57.5q-117 0 -173 60.5t-56 164.5zM477 528h373l-186 572zM577 1716q0 -90 86 -90q88 0 88 90t-88 90 q-86 0 -86 -90z" />
<glyph unicode="&#xc6;" horiz-adv-x="1810" d="M20 0l555 1384h1135v-249h-567v-301h469v-250h-469v-326h567v-258h-850v360h-409l-144 -360h-287zM547 608h313v527h-104z" />
<glyph unicode="&#xc7;" horiz-adv-x="1333" d="M96 692q0 369 163 545t470 176q203 0 331 -68.5t195 -179.5l-219 -170q-48 72 -88 104t-91 48t-122 16q-170 0 -259 -108.5t-89 -362.5q0 -237 83.5 -354t266.5 -117q123 0 191.5 47t124.5 125l223 -164q-66 -96 -165 -164.5t-263 -87.5q61 -14 103 -61t42 -121 q0 -190 -286 -190q-172 0 -265 45l70 145q106 -45 193 -45q53 0 74.5 11.5t21.5 35.5q0 63 -180 72l53 104q-578 37 -578 719z" />
<glyph unicode="&#xc8;" horiz-adv-x="1149" d="M150 0v1384h899v-249h-617v-295h520v-250h-520v-332h617v-258h-899zM267 1905h315l188 -361h-204z" />
<glyph unicode="&#xc9;" horiz-adv-x="1149" d="M150 0v1384h899v-249h-617v-295h520v-250h-520v-332h617v-258h-899zM426 1544l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xca;" horiz-adv-x="1149" d="M150 0v1384h899v-249h-617v-295h520v-250h-520v-332h617v-258h-899zM236 1544l235 361h244l236 -361h-211l-146 174l-149 -174h-209z" />
<glyph unicode="&#xcb;" horiz-adv-x="1149" d="M150 0v1384h899v-249h-617v-295h520v-250h-520v-332h617v-258h-899zM228 1671q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM672 1671q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102 t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xcc;" horiz-adv-x="872" d="M80 1905h315l188 -361h-204zM102 0v217h193v950h-193v217h668v-217h-192v-950h192v-217h-668z" />
<glyph unicode="&#xcd;" horiz-adv-x="872" d="M102 0v217h193v950h-193v217h668v-217h-192v-950h192v-217h-668zM270 1544l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xce;" horiz-adv-x="872" d="M78 1544l235 361h244l236 -361h-211l-146 174l-149 -174h-209zM102 0v217h193v950h-193v217h668v-217h-192v-950h192v-217h-668z" />
<glyph unicode="&#xcf;" horiz-adv-x="872" d="M72 1671q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM102 0v217h193v950h-193v217h668v-217h-192v-950h192v-217h-668zM516 1671q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102 t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xd0;" horiz-adv-x="1399" d="M2 580v225h148v579h434q263 0 416.5 -70.5t228 -222.5t74.5 -399q0 -250 -74.5 -402t-224.5 -221t-418 -69h-436v580h-148zM432 258h127q184 0 278 40t134.5 130t40.5 266t-39 264.5t-132 128t-282 39.5h-127v-321h322v-225h-322v-322z" />
<glyph unicode="&#xd1;" horiz-adv-x="1411" d="M150 0v1384h366l469 -933v933h277v-1384h-332l-504 989v-989h-276zM285 1526q5 155 73 236t189 81q61 0 104 -22.5t77 -48t62.5 -48t61.5 -22.5q35 0 51.5 35t16.5 92h182q-10 -165 -75.5 -243.5t-188.5 -78.5q-66 0 -109 22.5t-75.5 50.5t-59.5 50.5t-60 22.5 q-67 0 -67 -127h-182z" />
<glyph unicode="&#xd2;" horiz-adv-x="1364" d="M86 692q0 344 144.5 532.5t451.5 188.5q309 0 452.5 -188.5t143.5 -532.5q0 -361 -152.5 -541t-443.5 -180q-307 0 -451.5 189.5t-144.5 531.5zM371 1905h315l188 -361h-204zM377 692q0 -246 70.5 -358.5t234.5 -112.5q166 0 235.5 112.5t69.5 358.5t-69.5 358.5 t-235.5 112.5t-235.5 -112.5t-69.5 -358.5z" />
<glyph unicode="&#xd3;" horiz-adv-x="1364" d="M86 692q0 344 144.5 532.5t451.5 188.5q309 0 452.5 -188.5t143.5 -532.5q0 -361 -152.5 -541t-443.5 -180q-307 0 -451.5 189.5t-144.5 531.5zM377 692q0 -246 70.5 -358.5t234.5 -112.5q166 0 235.5 112.5t69.5 358.5t-69.5 358.5t-235.5 112.5t-235.5 -112.5 t-69.5 -358.5zM530 1544l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xd4;" horiz-adv-x="1364" d="M86 692q0 344 144.5 532.5t451.5 188.5q309 0 452.5 -188.5t143.5 -532.5q0 -361 -152.5 -541t-443.5 -180q-307 0 -451.5 189.5t-144.5 531.5zM334 1544l235 361h244l236 -361h-211l-146 174l-149 -174h-209zM377 692q0 -246 70.5 -358.5t234.5 -112.5 q166 0 235.5 112.5t69.5 358.5t-69.5 358.5t-235.5 112.5t-235.5 -112.5t-69.5 -358.5z" />
<glyph unicode="&#xd5;" horiz-adv-x="1364" d="M86 692q0 344 144.5 532.5t451.5 188.5q309 0 452.5 -188.5t143.5 -532.5q0 -361 -152.5 -541t-443.5 -180q-307 0 -451.5 189.5t-144.5 531.5zM283 1567q5 155 73 236t189 81q61 0 104 -22.5t77 -48t62.5 -48t61.5 -22.5q35 0 51.5 35t16.5 92h182 q-10 -165 -75.5 -243.5t-188.5 -78.5q-66 0 -109 22.5t-75.5 50.5t-59.5 50.5t-60 22.5q-67 0 -67 -127h-182zM377 692q0 -246 70.5 -358.5t234.5 -112.5q166 0 235.5 112.5t69.5 358.5t-69.5 358.5t-235.5 112.5t-235.5 -112.5t-69.5 -358.5z" />
<glyph unicode="&#xd6;" horiz-adv-x="1364" d="M86 692q0 344 144.5 532.5t451.5 188.5q309 0 452.5 -188.5t143.5 -532.5q0 -361 -152.5 -541t-443.5 -180q-307 0 -451.5 189.5t-144.5 531.5zM332 1671q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97z M377 692q0 -246 70.5 -358.5t234.5 -112.5q166 0 235.5 112.5t69.5 358.5t-69.5 358.5t-235.5 112.5t-235.5 -112.5t-69.5 -358.5zM776 1671q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xd7;" horiz-adv-x="1427" d="M129 145l438 437l-438 436l145 145l439 -436l438 436l145 -145l-438 -436l438 -437l-145 -145l-438 438l-439 -438z" />
<glyph unicode="&#xd8;" horiz-adv-x="1364" d="M27 -115l194 285q-135 180 -135 522q0 344 144.5 532.5t451.5 188.5q201 0 334 -84l108 160h199l-184 -270q139 -182 139 -527q0 -361 -152.5 -541t-443.5 -180q-207 0 -338 86l-117 -172h-200zM377 692q0 -157 26 -256l461 674q-69 53 -182 53q-166 0 -235.5 -112.5 t-69.5 -358.5zM496 276q67 -55 186 -55q166 0 235.5 112.5t69.5 358.5q0 158 -29 262z" />
<glyph unicode="&#xd9;" horiz-adv-x="1438" d="M150 578v806h282v-786q0 -141 27 -222t86 -119t172 -38q161 0 225 85.5t64 289.5v790h282v-806q0 -325 -132 -467t-437 -142q-302 0 -435.5 140.5t-133.5 468.5zM392 1905h315l188 -361h-204z" />
<glyph unicode="&#xda;" horiz-adv-x="1438" d="M150 578v806h282v-786q0 -141 27 -222t86 -119t172 -38q161 0 225 85.5t64 289.5v790h282v-806q0 -325 -132 -467t-437 -142q-302 0 -435.5 140.5t-133.5 468.5zM551 1544l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xdb;" horiz-adv-x="1438" d="M150 578v806h282v-786q0 -141 27 -222t86 -119t172 -38q161 0 225 85.5t64 289.5v790h282v-806q0 -325 -132 -467t-437 -142q-302 0 -435.5 140.5t-133.5 468.5zM365 1544l235 361h244l236 -361h-211l-146 174l-149 -174h-209z" />
<glyph unicode="&#xdc;" horiz-adv-x="1438" d="M150 578v806h282v-786q0 -141 27 -222t86 -119t172 -38q161 0 225 85.5t64 289.5v790h282v-806q0 -325 -132 -467t-437 -142q-302 0 -435.5 140.5t-133.5 468.5zM353 1671q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29 q-82 0 -111.5 34t-29.5 97zM797 1671q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xdd;" horiz-adv-x="1188" d="M18 1384h308l270 -579l276 579h297l-434 -856v-528h-284v522zM424 1544l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xde;" horiz-adv-x="1239" d="M150 0v1384h282v-200h238q235 0 363 -109.5t128 -355.5q0 -250 -117.5 -371t-381.5 -121h-230v-227h-282zM432 473h115q155 0 214 21.5t84 71.5t25 151q0 81 -30 129.5t-91 70t-176 21.5h-141v-465z" />
<glyph unicode="&#xdf;" d="M145 0v1020q0 252 117.5 376t355.5 124q203 0 313.5 -91t110.5 -255q0 -123 -53 -196t-129 -106q122 -27 193 -136.5t71 -262.5q0 -250 -93 -377t-312 -127q-47 0 -103.5 10.5t-89.5 20.5v227q86 -30 154 -30q88 0 131 63.5t43 220.5q0 108 -28.5 160.5t-92.5 74 t-190 21.5v224q93 0 143 18.5t72 57t22 118.5q0 70 -43 106.5t-123 36.5q-104 0 -157.5 -59t-53.5 -211v-1028h-258z" />
<glyph unicode="&#xe0;" horiz-adv-x="1139" d="M84 295q0 112 45.5 185t135 114.5t257.5 58.5l221 21v47q0 88 -53 120.5t-155 32.5q-84 0 -144.5 -28t-89.5 -80l-201 129q53 89 166 136.5t273 47.5q245 0 353.5 -85.5t108.5 -280.5v-713h-237v109q-153 -140 -328 -140q-174 0 -263 91.5t-89 234.5zM207 1569h315 l188 -361h-204zM350 299q0 -72 40 -98.5t106 -26.5q47 0 114.5 29.5t132.5 83.5v200l-131 -12q-139 -12 -200.5 -53t-61.5 -123z" />
<glyph unicode="&#xe1;" horiz-adv-x="1139" d="M84 295q0 112 45.5 185t135 114.5t257.5 58.5l221 21v47q0 88 -53 120.5t-155 32.5q-84 0 -144.5 -28t-89.5 -80l-201 129q53 89 166 136.5t273 47.5q245 0 353.5 -85.5t108.5 -280.5v-713h-237v109q-153 -140 -328 -140q-174 0 -263 91.5t-89 234.5zM350 299 q0 -72 40 -98.5t106 -26.5q47 0 114.5 29.5t132.5 83.5v200l-131 -12q-139 -12 -200.5 -53t-61.5 -123zM366 1208l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xe2;" horiz-adv-x="1139" d="M84 295q0 112 45.5 185t135 114.5t257.5 58.5l221 21v47q0 88 -53 120.5t-155 32.5q-84 0 -144.5 -28t-89.5 -80l-201 129q53 89 166 136.5t273 47.5q245 0 353.5 -85.5t108.5 -280.5v-713h-237v109q-153 -140 -328 -140q-174 0 -263 91.5t-89 234.5zM195 1208l235 361 h244l236 -361h-211l-146 174l-149 -174h-209zM350 299q0 -72 40 -98.5t106 -26.5q47 0 114.5 29.5t132.5 83.5v200l-131 -12q-139 -12 -200.5 -53t-61.5 -123z" />
<glyph unicode="&#xe3;" horiz-adv-x="1139" d="M84 295q0 112 45.5 185t135 114.5t257.5 58.5l221 21v47q0 88 -53 120.5t-155 32.5q-84 0 -144.5 -28t-89.5 -80l-201 129q53 89 166 136.5t273 47.5q245 0 353.5 -85.5t108.5 -280.5v-713h-237v109q-153 -140 -328 -140q-174 0 -263 91.5t-89 234.5zM150 1231 q5 155 73 236t189 81q61 0 104 -22.5t77 -48t62.5 -48t61.5 -22.5q35 0 51.5 35t16.5 92h182q-10 -165 -75.5 -243.5t-188.5 -78.5q-66 0 -109 22.5t-75.5 50.5t-59.5 50.5t-60 22.5q-67 0 -67 -127h-182zM350 299q0 -72 40 -98.5t106 -26.5q47 0 114.5 29.5t132.5 83.5v200 l-131 -12q-139 -12 -200.5 -53t-61.5 -123z" />
<glyph unicode="&#xe4;" horiz-adv-x="1139" d="M84 295q0 112 45.5 185t135 114.5t257.5 58.5l221 21v47q0 88 -53 120.5t-155 32.5q-84 0 -144.5 -28t-89.5 -80l-201 129q53 89 166 136.5t273 47.5q245 0 353.5 -85.5t108.5 -280.5v-713h-237v109q-153 -140 -328 -140q-174 0 -263 91.5t-89 234.5zM168 1335 q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM350 299q0 -72 40 -98.5t106 -26.5q47 0 114.5 29.5t132.5 83.5v200l-131 -12q-139 -12 -200.5 -53t-61.5 -123zM612 1335q0 70 31.5 100.5t109.5 30.5 t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xe5;" horiz-adv-x="1139" d="M84 295q0 112 45.5 185t135 114.5t257.5 58.5l221 21v47q0 88 -53 120.5t-155 32.5q-84 0 -144.5 -28t-89.5 -80l-201 129q53 89 166 136.5t273 47.5q245 0 353.5 -85.5t108.5 -280.5v-713h-237v109q-153 -140 -328 -140q-174 0 -263 91.5t-89 234.5zM309 1378 q0 107 57.5 166.5t171.5 59.5q119 0 175.5 -60.5t56.5 -165.5q0 -110 -59.5 -167.5t-172.5 -57.5q-117 0 -173 60.5t-56 164.5zM350 299q0 -72 40 -98.5t106 -26.5q47 0 114.5 29.5t132.5 83.5v200l-131 -12q-139 -12 -200.5 -53t-61.5 -123zM452 1378q0 -90 86 -90 q88 0 88 90t-88 90q-86 0 -86 -90z" />
<glyph unicode="&#xe6;" horiz-adv-x="1786" d="M84 303q0 157 105.5 244t332.5 106l221 21v47q0 86 -52 119.5t-148 33.5q-109 0 -162 -32.5t-80 -75.5l-201 129q53 89 164.5 136.5t276.5 47.5q254 0 356 -123q121 123 350 123q220 0 335.5 -127.5t115.5 -367.5v-127h-697q7 -140 67 -201t196 -61q73 0 130.5 19 t100.5 73l193 -137q-64 -91 -162.5 -136t-257.5 -45q-299 0 -428 168q-97 -82 -196 -125t-212 -43q-170 0 -259 91.5t-89 242.5zM350 299q0 -125 139 -125q64 0 140 25.5t141 76.5q-13 40 -20 113t-7 98l-131 -12q-139 -12 -200.5 -53t-61.5 -123zM1008 635h434 q0 239 -211 239q-113 0 -160 -64.5t-63 -174.5z" />
<glyph unicode="&#xe7;" horiz-adv-x="1059" d="M92 518q0 265 126 413t378 148q135 0 240.5 -44t160.5 -136l-192 -137q-35 47 -82 69.5t-121 22.5q-132 0 -188 -81t-56 -251t57.5 -248.5t196.5 -78.5q60 0 110 17t95 75l195 -137q-105 -153 -318 -177q56 -16 93.5 -62t37.5 -116q0 -190 -286 -190q-172 0 -265 45 l70 145q106 -45 193 -45q53 0 74.5 11.5t21.5 35.5q0 63 -180 72l55 106q-416 56 -416 543z" />
<glyph unicode="&#xe8;" horiz-adv-x="1143" d="M92 516q0 563 504 563q224 0 341.5 -126.5t117.5 -368.5v-127h-697q7 -140 68 -201t192 -61q76 0 133.5 19t100.5 73l192 -137q-63 -91 -163.5 -136t-274.5 -45q-259 0 -386.5 136t-127.5 411zM248 1569h315l188 -361h-204zM365 635h434q0 239 -209 239q-69 0 -113 -23.5 t-70.5 -70t-41.5 -145.5z" />
<glyph unicode="&#xe9;" horiz-adv-x="1143" d="M92 516q0 563 504 563q224 0 341.5 -126.5t117.5 -368.5v-127h-697q7 -140 68 -201t192 -61q76 0 133.5 19t100.5 73l192 -137q-63 -91 -163.5 -136t-274.5 -45q-259 0 -386.5 136t-127.5 411zM365 635h434q0 239 -209 239q-69 0 -113 -23.5t-70.5 -70t-41.5 -145.5z M407 1208l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xea;" horiz-adv-x="1143" d="M92 516q0 563 504 563q224 0 341.5 -126.5t117.5 -368.5v-127h-697q7 -140 68 -201t192 -61q76 0 133.5 19t100.5 73l192 -137q-63 -91 -163.5 -136t-274.5 -45q-259 0 -386.5 136t-127.5 411zM232 1208l235 361h244l236 -361h-211l-146 174l-149 -174h-209zM365 635h434 q0 239 -209 239q-69 0 -113 -23.5t-70.5 -70t-41.5 -145.5z" />
<glyph unicode="&#xeb;" horiz-adv-x="1143" d="M92 516q0 563 504 563q224 0 341.5 -126.5t117.5 -368.5v-127h-697q7 -140 68 -201t192 -61q76 0 133.5 19t100.5 73l192 -137q-63 -91 -163.5 -136t-274.5 -45q-259 0 -386.5 136t-127.5 411zM220 1335q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5 q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM365 635h434q0 239 -209 239q-69 0 -113 -23.5t-70.5 -70t-41.5 -145.5zM664 1335q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xec;" horiz-adv-x="549" d="M-53 1569h315l188 -361h-204zM145 0v1049h258v-1049h-258z" />
<glyph unicode="&#xed;" horiz-adv-x="549" d="M127 1208l189 361h315l-299 -361h-205zM145 0v1049h258v-1049h-258z" />
<glyph unicode="&#xee;" horiz-adv-x="549" d="M-80 1208l235 361h244l236 -361h-211l-146 174l-149 -174h-209zM145 0v1049h258v-1049h-258z" />
<glyph unicode="&#xef;" horiz-adv-x="549" d="M-92 1335q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM145 0v1049h258v-1049h-258zM352 1335q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xf0;" horiz-adv-x="1190" d="M92 520q0 156 55 278t158 186.5t238 64.5q41 0 94 -18.5t94 -49.5q-15 39 -65.5 122t-90.5 130l-225 -94l-67 149l180 76q-34 48 -184 156h274q49 -29 98 -78l187 78l69 -148l-131 -55q142 -147 232 -360t90 -435q0 -267 -126.5 -410t-375.5 -143q-247 0 -375.5 138 t-128.5 413zM358 520q0 -158 54.5 -241.5t183.5 -83.5t182 83.5t53 243.5q0 303 -237 303q-116 0 -176 -77.5t-60 -227.5z" />
<glyph unicode="&#xf1;" d="M145 0v1049h258v-136q82 82 175 124t182 42q161 0 240 -88t79 -291v-700h-258v578q0 164 -29.5 219t-111.5 55q-115 0 -277 -152v-700h-258zM197 1231q5 155 73 236t189 81q61 0 104 -22.5t77 -48t62.5 -48t61.5 -22.5q35 0 51.5 35t16.5 92h182q-10 -165 -75.5 -243.5 t-188.5 -78.5q-66 0 -109 22.5t-75.5 50.5t-59.5 50.5t-60 22.5q-67 0 -67 -127h-182z" />
<glyph unicode="&#xf2;" horiz-adv-x="1190" d="M92 522q0 266 121 411.5t383 145.5q260 0 381 -145.5t121 -411.5q0 -262 -121 -407.5t-381 -145.5q-504 0 -504 553zM269 1569h315l188 -361h-204zM358 522q0 -168 55.5 -247.5t182.5 -79.5q125 0 180 78.5t55 248.5q0 173 -54 252.5t-181 79.5q-126 0 -182 -81.5 t-56 -250.5z" />
<glyph unicode="&#xf3;" horiz-adv-x="1190" d="M92 522q0 266 121 411.5t383 145.5q260 0 381 -145.5t121 -411.5q0 -262 -121 -407.5t-381 -145.5q-504 0 -504 553zM358 522q0 -168 55.5 -247.5t182.5 -79.5q125 0 180 78.5t55 248.5q0 173 -54 252.5t-181 79.5q-126 0 -182 -81.5t-56 -250.5zM428 1208l189 361h315 l-299 -361h-205z" />
<glyph unicode="&#xf4;" horiz-adv-x="1190" d="M92 522q0 266 121 411.5t383 145.5q260 0 381 -145.5t121 -411.5q0 -262 -121 -407.5t-381 -145.5q-504 0 -504 553zM242 1208l235 361h244l236 -361h-211l-146 174l-149 -174h-209zM358 522q0 -168 55.5 -247.5t182.5 -79.5q125 0 180 78.5t55 248.5q0 173 -54 252.5 t-181 79.5q-126 0 -182 -81.5t-56 -250.5z" />
<glyph unicode="&#xf5;" horiz-adv-x="1190" d="M92 522q0 266 121 411.5t383 145.5q260 0 381 -145.5t121 -411.5q0 -262 -121 -407.5t-381 -145.5q-504 0 -504 553zM191 1231q5 155 73 236t189 81q61 0 104 -22.5t77 -48t62.5 -48t61.5 -22.5q35 0 51.5 35t16.5 92h182q-10 -165 -75.5 -243.5t-188.5 -78.5 q-66 0 -109 22.5t-75.5 50.5t-59.5 50.5t-60 22.5q-67 0 -67 -127h-182zM358 522q0 -168 55.5 -247.5t182.5 -79.5q125 0 180 78.5t55 248.5q0 173 -54 252.5t-181 79.5q-126 0 -182 -81.5t-56 -250.5z" />
<glyph unicode="&#xf6;" horiz-adv-x="1190" d="M92 522q0 266 121 411.5t383 145.5q260 0 381 -145.5t121 -411.5q0 -262 -121 -407.5t-381 -145.5q-504 0 -504 553zM230 1335q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM358 522q0 -168 55.5 -247.5 t182.5 -79.5q125 0 180 78.5t55 248.5q0 173 -54 252.5t-181 79.5q-126 0 -182 -81.5t-56 -250.5zM674 1335q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xf7;" horiz-adv-x="1427" d="M133 479v205h1161v-205h-1161zM592 2v252h246v-252h-246zM592 911v252h246v-252h-246z" />
<glyph unicode="&#xf8;" horiz-adv-x="1190" d="M92 522q0 266 121 411.5t383 145.5q141 0 246 -47l61 92h182l-118 -180q131 -145 131 -422q0 -262 -121 -407.5t-381 -145.5q-144 0 -248 45l-59 -90h-183l117 176q-131 141 -131 422zM358 522q0 -103 23 -184l328 493q-45 23 -113 23q-126 0 -182 -81.5t-56 -250.5z M483 215q47 -20 113 -20q125 0 180 78.5t55 248.5q0 108 -22 185z" />
<glyph unicode="&#xf9;" d="M137 348v701h258v-578q0 -111 13 -170t42.5 -81.5t86.5 -22.5q115 0 276 151v701h258v-1049h-258v135q-68 -73 -166.5 -119.5t-189.5 -46.5q-178 0 -249 98.5t-71 280.5zM281 1569h315l188 -361h-204z" />
<glyph unicode="&#xfa;" d="M137 348v701h258v-578q0 -111 13 -170t42.5 -81.5t86.5 -22.5q115 0 276 151v701h258v-1049h-258v135q-68 -73 -166.5 -119.5t-189.5 -46.5q-178 0 -249 98.5t-71 280.5zM440 1208l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xfb;" d="M137 348v701h258v-578q0 -111 13 -170t42.5 -81.5t86.5 -22.5q115 0 276 151v701h258v-1049h-258v135q-68 -73 -166.5 -119.5t-189.5 -46.5q-178 0 -249 98.5t-71 280.5zM244 1208l235 361h244l236 -361h-211l-146 174l-149 -174h-209z" />
<glyph unicode="&#xfc;" d="M137 348v701h258v-578q0 -111 13 -170t42.5 -81.5t86.5 -22.5q115 0 276 151v701h258v-1049h-258v135q-68 -73 -166.5 -119.5t-189.5 -46.5q-178 0 -249 98.5t-71 280.5zM232 1335q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29 q-82 0 -111.5 34t-29.5 97zM676 1335q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#xfd;" horiz-adv-x="1085" d="M-20 -365l55 224q84 -29 151 -29q58 0 102 35t91 145l27 62l-379 977h268l248 -670l254 670h262l-451 -1121q-55 -135 -107 -200t-121.5 -94t-174.5 -29q-114 0 -225 30zM368 1208l189 361h315l-299 -361h-205z" />
<glyph unicode="&#xfe;" d="M145 -395v1884h258v-533q127 123 316 123q198 0 301.5 -141.5t103.5 -405.5q0 -169 -51 -298t-146 -197t-227 -68q-174 0 -297 109v-473h-258zM403 291q41 -37 101.5 -65.5t124.5 -28.5q106 0 167.5 90.5t61.5 240.5q0 153 -53 238.5t-158 85.5q-63 0 -129.5 -29.5 t-114.5 -72.5v-459z" />
<glyph unicode="&#xff;" horiz-adv-x="1085" d="M-20 -365l55 224q84 -29 151 -29q58 0 102 35t91 145l27 62l-379 977h268l248 -670l254 670h262l-451 -1121q-55 -135 -107 -200t-121.5 -94t-174.5 -29q-114 0 -225 30zM179 1335q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29 q-82 0 -111.5 34t-29.5 97zM623 1335q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#x152;" horiz-adv-x="1919" d="M96 692q0 344 151.5 532.5t459.5 188.5q121 0 247 -29h865v-249h-568v-301h467v-250h-467v-326h568v-258h-861q-106 -29 -251 -29q-312 0 -461.5 189.5t-149.5 531.5zM387 692q0 -246 78 -358.5t264 -112.5q78 0 130 14.5t108 49.5v813q-100 65 -238 65q-182 0 -262 -110 t-80 -361z" />
<glyph unicode="&#x153;" horiz-adv-x="1874" d="M92 522q0 269 121 413t373 144q244 0 377 -149q57 63 144 106t230 43q219 0 334 -128.5t115 -366.5v-127h-696q6 -140 66.5 -201t193.5 -61q73 0 131.5 19t101.5 73l193 -137q-64 -91 -162 -136t-260 -45q-264 0 -391 152q-139 -152 -367 -152q-264 0 -384 146.5 t-120 406.5zM358 522q0 -168 55.5 -247.5t182.5 -79.5q117 0 176 74.5t59 252.5q0 184 -58 258t-177 74q-126 0 -182 -81.5t-56 -250.5zM1096 635h434q0 239 -209 239q-68 0 -113 -23.5t-71 -70.5t-41 -145z" />
<glyph unicode="&#x178;" horiz-adv-x="1188" d="M18 1384h308l270 -579l276 579h297l-434 -856v-528h-284v522zM226 1671q0 70 31.5 100.5t109.5 30.5t111.5 -29.5t33.5 -101.5q0 -73 -35.5 -102t-109.5 -29q-82 0 -111.5 34t-29.5 97zM670 1671q0 70 31.5 100.5t109.5 30.5t112 -29.5t34 -101.5q0 -73 -36 -102 t-110 -29q-82 0 -111.5 34t-29.5 97z" />
<glyph unicode="&#x2c6;" horiz-adv-x="1044" d="M164 1208l235 361h244l236 -361h-211l-146 174l-149 -174h-209z" />
<glyph unicode="&#x2dc;" horiz-adv-x="1044" d="M113 1231q5 155 73 236t189 81q61 0 104 -22.5t77 -48t62.5 -48t61.5 -22.5q35 0 51.5 35t16.5 92h182q-10 -165 -75.5 -243.5t-188.5 -78.5q-66 0 -109 22.5t-75.5 50.5t-59.5 50.5t-60 22.5q-67 0 -67 -127h-182z" />
<glyph unicode="&#x2000;" horiz-adv-x="971" />
<glyph unicode="&#x2001;" horiz-adv-x="1942" />
<glyph unicode="&#x2002;" horiz-adv-x="971" />
<glyph unicode="&#x2003;" horiz-adv-x="1942" />
<glyph unicode="&#x2004;" horiz-adv-x="647" />
<glyph unicode="&#x2005;" horiz-adv-x="485" />
<glyph unicode="&#x2006;" horiz-adv-x="323" />
<glyph unicode="&#x2007;" horiz-adv-x="323" />
<glyph unicode="&#x2008;" horiz-adv-x="242" />
<glyph unicode="&#x2009;" horiz-adv-x="388" />
<glyph unicode="&#x200a;" horiz-adv-x="107" />
<glyph unicode="&#x2010;" horiz-adv-x="786" d="M82 399v254h623v-254h-623z" />
<glyph unicode="&#x2011;" horiz-adv-x="786" d="M82 399v254h623v-254h-623z" />
<glyph unicode="&#x2012;" horiz-adv-x="786" d="M82 399v254h623v-254h-623z" />
<glyph unicode="&#x2013;" horiz-adv-x="1044" d="M31 424v205h983v-205h-983z" />
<glyph unicode="&#x2014;" horiz-adv-x="2068" d="M31 424v205h2007v-205h-2007z" />
<glyph unicode="&#x2018;" horiz-adv-x="584" d="M129 967q0 123 42 234.5t91 182.5h193q-62 -86 -91.5 -164.5t-33.5 -117.5q65 -4 95 -42t30 -114q0 -74 -35 -117t-131 -43q-160 0 -160 181z" />
<glyph unicode="&#x2019;" horiz-adv-x="584" d="M129 815q61 86 91 165t34 118q-66 4 -95.5 42t-29.5 113q0 74 35 117t131 43q160 0 160 -180q0 -123 -42 -234.5t-91 -183.5h-193z" />
<glyph unicode="&#x201a;" horiz-adv-x="584" d="M129 145q0 74 35 117t131 43q160 0 160 -180q0 -123 -42 -234.5t-91 -183.5h-193q61 86 91 165t34 118q-66 4 -95.5 42t-29.5 113z" />
<glyph unicode="&#x201c;" horiz-adv-x="1047" d="M129 967q0 123 42 234.5t91 182.5h193q-62 -86 -91.5 -164.5t-33.5 -117.5q65 -4 95 -42t30 -114q0 -74 -35 -117t-131 -43q-160 0 -160 181zM592 967q0 123 42 234.5t91 182.5h193q-62 -86 -91.5 -164.5t-33.5 -117.5q65 -4 95 -42t30 -114q0 -74 -35 -117t-131 -43 q-160 0 -160 181z" />
<glyph unicode="&#x201d;" horiz-adv-x="1047" d="M129 815q61 86 91 165t34 118q-66 4 -95.5 42t-29.5 113q0 74 35 117t131 43q160 0 160 -180q0 -123 -42 -234.5t-91 -183.5h-193zM592 815q61 86 91 165t34 118q-66 4 -95.5 42t-29.5 113q0 74 35 117t131 43q160 0 160 -180q0 -123 -42 -234.5t-92 -183.5h-192z" />
<glyph unicode="&#x201e;" horiz-adv-x="1047" d="M129 145q0 74 35 117t131 43q160 0 160 -180q0 -123 -42 -234.5t-91 -183.5h-193q61 86 91 165t34 118q-66 4 -95.5 42t-29.5 113zM592 145q0 74 35 117t131 43q160 0 160 -180q0 -123 -42 -234.5t-92 -183.5h-192q61 86 91 165t34 118q-66 4 -95.5 42t-29.5 113z" />
<glyph unicode="&#x2022;" horiz-adv-x="760" d="M92 745q0 78 38.5 145t106.5 105.5t144 38.5q115 0 201 -83t86 -206q0 -118 -84 -202t-203 -84q-76 0 -143 37.5t-106.5 104.5t-39.5 144z" />
<glyph unicode="&#x2026;" horiz-adv-x="2068" d="M188 145q0 82 36 121t126 39q92 0 128 -38t36 -122q0 -86 -39 -122.5t-125 -36.5q-94 0 -128 41t-34 118zM870 145q0 82 36 121t126 39q92 0 128 -38t36 -122q0 -86 -39 -122.5t-125 -36.5q-94 0 -128 41t-34 118zM1552 145q0 82 36 121t126 39q92 0 128 -38t36 -122 q0 -86 -39 -122.5t-125 -36.5q-94 0 -128 41t-34 118z" />
<glyph unicode="&#x202f;" horiz-adv-x="388" />
<glyph unicode="&#x2039;" horiz-adv-x="862" d="M61 524l420 471h299l-420 -471l420 -471h-299z" />
<glyph unicode="&#x203a;" horiz-adv-x="862" d="M82 53l420 471l-420 471h299l420 -471l-420 -471h-299z" />
<glyph unicode="&#x205f;" horiz-adv-x="485" />
<glyph unicode="&#x20ac;" horiz-adv-x="1280" d="M20 444l39 191h58v119h-97l43 190h76q96 469 592 469q197 0 321 -68.5t189 -179.5l-201 -161q-53 78 -90.5 107.5t-85.5 44.5t-116 15q-132 0 -206.5 -55t-107.5 -172h522l-43 -190h-505v-119h487l-39 -191h-424q35 -127 110.5 -179t205.5 -52q92 0 162 40t143 146 l209 -149q-80 -118 -149 -174t-157 -80.5t-215 -24.5q-505 0 -602 473h-119z" />
<glyph unicode="&#x2122;" horiz-adv-x="1692" d="M43 1208v176h639v-176h-219v-538h-199v538h-221zM836 670v714h215l149 -303l152 303h215v-714h-193v391l-117 -232h-110l-119 234v-393h-192z" />
<glyph unicode="&#x25fc;" horiz-adv-x="1050" d="M0 0v1050h1050v-1050h-1050z" />
<hkern u1="&#x28;" u2="j" k="-164" />
<hkern u1="&#x2a;" u2="&#xc5;" k="123" />
<hkern u1="&#x2a;" u2="&#xc4;" k="123" />
<hkern u1="&#x2a;" u2="&#xc3;" k="123" />
<hkern u1="&#x2a;" u2="&#xc2;" k="123" />
<hkern u1="&#x2a;" u2="&#xc1;" k="123" />
<hkern u1="&#x2a;" u2="&#xc0;" k="123" />
<hkern u1="&#x2a;" u2="T" k="-92" />
<hkern u1="&#x2a;" u2="J" k="174" />
<hkern u1="&#x2a;" u2="A" k="123" />
<hkern u1="A" u2="&#x3f;" k="102" />
<hkern u1="A" u2="&#x2a;" k="123" />
<hkern u1="F" u2="&#xef;" k="-61" />
<hkern u1="F" u2="&#xee;" k="-20" />
<hkern u1="K" u2="&#xef;" k="-10" />
<hkern u1="K" u2="&#xee;" k="41" />
<hkern u1="L" u2="&#xd8;" k="10" />
<hkern u1="L" u2="&#x3f;" k="102" />
<hkern u1="L" u2="&#x2a;" k="205" />
<hkern u1="T" u2="&#xef;" k="-123" />
<hkern u1="T" u2="&#xee;" k="-61" />
<hkern u1="T" u2="&#xe4;" k="123" />
<hkern u1="T" u2="&#xe3;" k="123" />
<hkern u1="T" u2="&#xe2;" k="164" />
<hkern u1="T" u2="&#x3f;" k="-82" />
<hkern u1="T" u2="&#x2a;" k="-92" />
<hkern u1="V" u2="&#xef;" k="-72" />
<hkern u1="V" u2="&#xee;" k="-10" />
<hkern u1="W" u2="&#xef;" k="-72" />
<hkern u1="W" u2="&#xee;" k="-10" />
<hkern u1="X" u2="&#xef;" k="-82" />
<hkern u1="X" u2="&#xee;" k="-41" />
<hkern u1="Y" u2="&#xef;" k="-102" />
<hkern u1="Y" u2="&#xee;" k="-20" />
<hkern u1="[" u2="j" k="-164" />
<hkern u1="f" u2="&#xef;" k="-225" />
<hkern u1="f" u2="&#xee;" k="-102" />
<hkern u1="f" u2="&#xec;" k="-82" />
<hkern u1="f" u2="&#x3f;" k="-123" />
<hkern u1="f" u2="&#x2a;" k="-143" />
<hkern u1="f" u2="&#x21;" k="-61" />
<hkern u1="j" u2="&#xff;" k="-41" />
<hkern u1="j" u2="&#xfd;" k="-41" />
<hkern u1="j" u2="y" k="-41" />
<hkern u1="&#x7b;" u2="j" k="-164" />
<hkern u1="&#xa1;" u2="&#x178;" k="102" />
<hkern u1="&#xa1;" u2="&#xdd;" k="102" />
<hkern u1="&#xa1;" u2="Y" k="102" />
<hkern u1="&#xa1;" u2="W" k="61" />
<hkern u1="&#xa1;" u2="V" k="61" />
<hkern u1="&#xbf;" u2="&#x178;" k="184" />
<hkern u1="&#xbf;" u2="&#xdd;" k="184" />
<hkern u1="&#xbf;" u2="Y" k="184" />
<hkern u1="&#xbf;" u2="W" k="123" />
<hkern u1="&#xbf;" u2="V" k="123" />
<hkern u1="&#xbf;" u2="T" k="184" />
<hkern u1="&#xc0;" u2="&#x3f;" k="102" />
<hkern u1="&#xc0;" u2="&#x2a;" k="123" />
<hkern u1="&#xc1;" u2="&#x3f;" k="102" />
<hkern u1="&#xc1;" u2="&#x2a;" k="123" />
<hkern u1="&#xc2;" u2="&#x3f;" k="102" />
<hkern u1="&#xc2;" u2="&#x2a;" k="123" />
<hkern u1="&#xc3;" u2="&#x3f;" k="102" />
<hkern u1="&#xc3;" u2="&#x2a;" k="123" />
<hkern u1="&#xc4;" u2="&#x3f;" k="102" />
<hkern u1="&#xc4;" u2="&#x2a;" k="123" />
<hkern u1="&#xc5;" u2="&#x3f;" k="102" />
<hkern u1="&#xc5;" u2="&#x2a;" k="123" />
<hkern u1="&#xdd;" u2="&#xef;" k="-102" />
<hkern u1="&#xdd;" u2="&#xee;" k="-20" />
<hkern u1="&#xde;" u2="X" k="123" />
<hkern u1="&#xde;" u2="W" k="31" />
<hkern u1="&#xde;" u2="V" k="31" />
<hkern u1="&#xde;" u2="T" k="82" />
<hkern u1="&#x178;" u2="&#xef;" k="-102" />
<hkern u1="&#x178;" u2="&#xee;" k="-20" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="T" k="164" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="V" k="82" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="W" k="61" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="Y,Yacute,Ydieresis" k="113" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quotedbl,quotesingle" k="123" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="-41" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="colon,semicolon" k="-41" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="20" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="41" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="t" k="31" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="z" k="-31" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="trademark" k="164" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quoteleft,quotedblleft" k="184" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quoteright,quotedblright" k="164" />
<hkern g1="B" g2="J" k="61" />
<hkern g1="B" g2="T" k="41" />
<hkern g1="B" g2="V" k="41" />
<hkern g1="B" g2="W" k="41" />
<hkern g1="B" g2="Y,Yacute,Ydieresis" k="51" />
<hkern g1="C,Ccedilla" g2="J" k="20" />
<hkern g1="C,Ccedilla" g2="V" k="31" />
<hkern g1="C,Ccedilla" g2="W" k="31" />
<hkern g1="C,Ccedilla" g2="X" k="31" />
<hkern g1="C,Ccedilla" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="F" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="102" />
<hkern g1="F" g2="J" k="246" />
<hkern g1="F" g2="X" k="41" />
<hkern g1="F" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="231" />
<hkern g1="F" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="20" />
<hkern g1="F" g2="t" k="20" />
<hkern g1="F" g2="z" k="61" />
<hkern g1="F" g2="S" k="20" />
<hkern g1="F" g2="Z" k="41" />
<hkern g1="F" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="41" />
<hkern g1="F" g2="i,j,igrave,iacute,icircumflex,idieresis" k="41" />
<hkern g1="F" g2="m,n,p,r,ntilde" k="72" />
<hkern g1="F" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="F" g2="s" k="82" />
<hkern g1="F" g2="u,ugrave,uacute,ucircumflex,udieresis" k="41" />
<hkern g1="F" g2="v" k="41" />
<hkern g1="F" g2="w" k="41" />
<hkern g1="F" g2="x" k="82" />
<hkern g1="F" g2="y,yacute,ydieresis" k="61" />
<hkern g1="G" g2="J" k="51" />
<hkern g1="G" g2="T" k="41" />
<hkern g1="G" g2="V" k="41" />
<hkern g1="G" g2="W" k="41" />
<hkern g1="G" g2="X" k="31" />
<hkern g1="G" g2="Y,Yacute,Ydieresis" k="61" />
<hkern g1="J" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="41" />
<hkern g1="J" g2="J" k="61" />
<hkern g1="J" g2="X" k="20" />
<hkern g1="J" g2="AE" k="61" />
<hkern g1="K" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="41" />
<hkern g1="K" g2="T" k="31" />
<hkern g1="K" g2="V" k="51" />
<hkern g1="K" g2="W" k="51" />
<hkern g1="K" g2="X" k="41" />
<hkern g1="K" g2="Y,Yacute,Ydieresis" k="82" />
<hkern g1="K" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="41" />
<hkern g1="K" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="41" />
<hkern g1="K" g2="t" k="61" />
<hkern g1="K" g2="S" k="51" />
<hkern g1="K" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="61" />
<hkern g1="K" g2="i,j,igrave,iacute,icircumflex,idieresis" k="41" />
<hkern g1="K" g2="m,n,p,r,ntilde" k="41" />
<hkern g1="K" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="41" />
<hkern g1="K" g2="s" k="61" />
<hkern g1="K" g2="u,ugrave,uacute,ucircumflex,udieresis" k="61" />
<hkern g1="K" g2="v" k="51" />
<hkern g1="K" g2="w" k="51" />
<hkern g1="K" g2="y,yacute,ydieresis" k="102" />
<hkern g1="K" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="20" />
<hkern g1="L" g2="T" k="143" />
<hkern g1="L" g2="V" k="102" />
<hkern g1="L" g2="W" k="102" />
<hkern g1="L" g2="Y,Yacute,Ydieresis" k="143" />
<hkern g1="L" g2="quotedbl,quotesingle" k="287" />
<hkern g1="L" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="-20" />
<hkern g1="L" g2="colon,semicolon" k="-41" />
<hkern g1="L" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="20" />
<hkern g1="L" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="41" />
<hkern g1="L" g2="t" k="31" />
<hkern g1="L" g2="trademark" k="287" />
<hkern g1="L" g2="quoteleft,quotedblleft" k="328" />
<hkern g1="L" g2="quoteright,quotedblright" k="328" />
<hkern g1="L" g2="S" k="10" />
<hkern g1="L" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" />
<hkern g1="L" g2="v" k="61" />
<hkern g1="L" g2="w" k="61" />
<hkern g1="L" g2="y,yacute,ydieresis" k="102" />
<hkern g1="L" g2="copyright,registered" k="61" />
<hkern g1="P,Thorn" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="102" />
<hkern g1="P,Thorn" g2="J" k="164" />
<hkern g1="P,Thorn" g2="T" k="20" />
<hkern g1="P,Thorn" g2="V" k="-10" />
<hkern g1="P,Thorn" g2="W" k="-10" />
<hkern g1="P,Thorn" g2="X" k="20" />
<hkern g1="P,Thorn" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="266" />
<hkern g1="P,Thorn" g2="S" k="-20" />
<hkern g1="P,Thorn" g2="Z" k="41" />
<hkern g1="P,Thorn" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="20" />
<hkern g1="P,Thorn" g2="AE" k="82" />
<hkern g1="P,Thorn" g2="I,Igrave,Iacute,Icircumflex,Idieresis" k="41" />
<hkern g1="R" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="41" />
<hkern g1="R" g2="T" k="20" />
<hkern g1="R" g2="V" k="41" />
<hkern g1="R" g2="W" k="41" />
<hkern g1="R" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="S" g2="J" k="41" />
<hkern g1="S" g2="T" k="41" />
<hkern g1="S" g2="V" k="31" />
<hkern g1="S" g2="W" k="31" />
<hkern g1="S" g2="X" k="20" />
<hkern g1="S" g2="Y,Yacute,Ydieresis" k="61" />
<hkern g1="T" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="164" />
<hkern g1="T" g2="J" k="143" />
<hkern g1="T" g2="X" k="20" />
<hkern g1="T" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="184" />
<hkern g1="T" g2="colon,semicolon" k="82" />
<hkern g1="T" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="51" />
<hkern g1="T" g2="t" k="20" />
<hkern g1="T" g2="z" k="156" />
<hkern g1="T" g2="trademark" k="-82" />
<hkern g1="T" g2="quoteleft,quotedblleft" k="-41" />
<hkern g1="T" g2="quoteright,quotedblright" k="-41" />
<hkern g1="T" g2="S" k="41" />
<hkern g1="T" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="205" />
<hkern g1="T" g2="i,j,igrave,iacute,icircumflex,idieresis" k="41" />
<hkern g1="T" g2="m,n,p,r,ntilde" k="184" />
<hkern g1="T" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="205" />
<hkern g1="T" g2="s" k="205" />
<hkern g1="T" g2="u,ugrave,uacute,ucircumflex,udieresis" k="143" />
<hkern g1="T" g2="v" k="184" />
<hkern g1="T" g2="w" k="184" />
<hkern g1="T" g2="x" k="205" />
<hkern g1="T" g2="y,yacute,ydieresis" k="143" />
<hkern g1="T" g2="AE" k="184" />
<hkern g1="T" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="20" />
<hkern g1="T" g2="copyright,registered" k="102" />
<hkern g1="T" g2="hyphen,endash,emdash" k="102" />
<hkern g1="T" g2="guillemotleft,guilsinglleft" k="143" />
<hkern g1="T" g2="guillemotright,guilsinglright" k="61" />
<hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="41" />
<hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="J" k="51" />
<hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="X" k="41" />
<hkern g1="W" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="61" />
<hkern g1="W" g2="J" k="143" />
<hkern g1="W" g2="X" k="20" />
<hkern g1="W" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="W" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="143" />
<hkern g1="W" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="20" />
<hkern g1="W" g2="t" k="20" />
<hkern g1="W" g2="z" k="41" />
<hkern g1="W" g2="S" k="10" />
<hkern g1="W" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="61" />
<hkern g1="W" g2="m,n,p,r,ntilde" k="61" />
<hkern g1="W" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="W" g2="s" k="61" />
<hkern g1="W" g2="u,ugrave,uacute,ucircumflex,udieresis" k="61" />
<hkern g1="W" g2="x" k="31" />
<hkern g1="W" g2="y,yacute,ydieresis" k="20" />
<hkern g1="W" g2="AE" k="41" />
<hkern g1="W" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="20" />
<hkern g1="W" g2="b,h,k,l,germandbls,thorn" k="31" />
<hkern g1="X" g2="T" k="20" />
<hkern g1="X" g2="V" k="20" />
<hkern g1="X" g2="W" k="20" />
<hkern g1="X" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="X" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="41" />
<hkern g1="X" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="41" />
<hkern g1="X" g2="S" k="20" />
<hkern g1="X" g2="m,n,p,r,ntilde" k="31" />
<hkern g1="X" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="X" g2="u,ugrave,uacute,ucircumflex,udieresis" k="82" />
<hkern g1="X" g2="v" k="41" />
<hkern g1="X" g2="w" k="41" />
<hkern g1="X" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="31" />
<hkern g1="X" g2="copyright,registered" k="61" />
<hkern g1="Y,Yacute,Ydieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="113" />
<hkern g1="Y,Yacute,Ydieresis" g2="J" k="184" />
<hkern g1="Y,Yacute,Ydieresis" g2="V" k="41" />
<hkern g1="Y,Yacute,Ydieresis" g2="W" k="41" />
<hkern g1="Y,Yacute,Ydieresis" g2="X" k="41" />
<hkern g1="Y,Yacute,Ydieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="205" />
<hkern g1="Y,Yacute,Ydieresis" g2="colon,semicolon" k="41" />
<hkern g1="Y,Yacute,Ydieresis" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="61" />
<hkern g1="Y,Yacute,Ydieresis" g2="t" k="31" />
<hkern g1="Y,Yacute,Ydieresis" g2="z" k="102" />
<hkern g1="Y,Yacute,Ydieresis" g2="S" k="61" />
<hkern g1="Y,Yacute,Ydieresis" g2="Z" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="123" />
<hkern g1="Y,Yacute,Ydieresis" g2="i,j,igrave,iacute,icircumflex,idieresis" k="41" />
<hkern g1="Y,Yacute,Ydieresis" g2="m,n,p,r,ntilde" k="133" />
<hkern g1="Y,Yacute,Ydieresis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="143" />
<hkern g1="Y,Yacute,Ydieresis" g2="s" k="123" />
<hkern g1="Y,Yacute,Ydieresis" g2="u,ugrave,uacute,ucircumflex,udieresis" k="102" />
<hkern g1="Y,Yacute,Ydieresis" g2="v" k="82" />
<hkern g1="Y,Yacute,Ydieresis" g2="w" k="82" />
<hkern g1="Y,Yacute,Ydieresis" g2="x" k="82" />
<hkern g1="Y,Yacute,Ydieresis" g2="AE" k="143" />
<hkern g1="Y,Yacute,Ydieresis" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="copyright,registered" k="82" />
<hkern g1="Y,Yacute,Ydieresis" g2="guillemotleft,guilsinglleft" k="102" />
<hkern g1="Y,Yacute,Ydieresis" g2="b,h,k,l,germandbls,thorn" k="41" />
<hkern g1="Z" g2="Y,Yacute,Ydieresis" k="31" />
<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring" g2="t" k="20" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="20" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="quoteleft,quotedblleft" k="61" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="quoteright,quotedblright" k="61" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="v" k="20" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="x" k="31" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="y,yacute,ydieresis" k="10" />
<hkern g1="h,m,n,ntilde" g2="v" k="10" />
<hkern g1="h,m,n,ntilde" g2="w" k="10" />
<hkern g1="f" g2="quotedbl,quotesingle" k="-123" />
<hkern g1="f" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="41" />
<hkern g1="f" g2="trademark" k="-164" />
<hkern g1="f" g2="quoteleft,quotedblleft" k="-102" />
<hkern g1="f" g2="quoteright,quotedblright" k="-123" />
<hkern g1="f" g2="parenright,bracketright,braceright" k="-164" />
<hkern g1="k" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="31" />
<hkern g1="k" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="41" />
<hkern g1="k" g2="s" k="20" />
<hkern g1="k" g2="v" k="20" />
<hkern g1="k" g2="w" k="20" />
<hkern g1="r" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="266" />
<hkern g1="r" g2="quoteleft,quotedblleft" k="-41" />
<hkern g1="r" g2="quoteright,quotedblright" k="-41" />
<hkern g1="r" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="20" />
<hkern g1="r" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="41" />
<hkern g1="r" g2="s" k="20" />
<hkern g1="r" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="-20" />
<hkern g1="r" g2="guillemotright,guilsinglright" k="-41" />
<hkern g1="s" g2="t" k="20" />
<hkern g1="s" g2="v" k="41" />
<hkern g1="s" g2="w" k="41" />
<hkern g1="s" g2="x" k="20" />
<hkern g1="t" g2="z" k="-31" />
<hkern g1="t" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="-20" />
<hkern g1="t" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" />
<hkern g1="t" g2="u,ugrave,uacute,ucircumflex,udieresis" k="10" />
<hkern g1="t" g2="v" k="10" />
<hkern g1="t" g2="w" k="10" />
<hkern g1="t" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="10" />
<hkern g1="w" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="61" />
<hkern g1="w" g2="s" k="20" />
<hkern g1="w" g2="y,yacute,ydieresis" k="10" />
<hkern g1="x" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="31" />
<hkern g1="y,yacute,ydieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="143" />
<hkern g1="y,yacute,ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="31" />
<hkern g1="y,yacute,ydieresis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="41" />
<hkern g1="y,yacute,ydieresis" g2="s" k="31" />
<hkern g1="y,yacute,ydieresis" g2="v" k="20" />
<hkern g1="y,yacute,ydieresis" g2="w" k="20" />
<hkern g1="y,yacute,ydieresis" g2="x" k="31" />
<hkern g1="y,yacute,ydieresis" g2="parenright,bracketright,braceright" k="61" />
<hkern g1="z" g2="z" k="-31" />
<hkern g1="colon,semicolon" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="-41" />
<hkern g1="colon,semicolon" g2="J" k="-41" />
<hkern g1="colon,semicolon" g2="T" k="82" />
<hkern g1="colon,semicolon" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="-41" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="J" k="-41" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="T" k="184" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="V" k="143" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="W" k="143" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="Y,Yacute,Ydieresis" k="205" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="quoteleft,quotedblleft" k="174" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="quoteright,quotedblright" k="174" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="v" k="61" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="w" k="61" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="AE" k="-61" />
<hkern g1="guillemotleft,guilsinglleft" g2="T" k="61" />
<hkern g1="guillemotright,guilsinglright" g2="T" k="143" />
<hkern g1="guillemotright,guilsinglright" g2="Y,Yacute,Ydieresis" k="102" />
<hkern g1="hyphen,endash,emdash" g2="T" k="102" />
<hkern g1="parenleft,bracketleft,braceleft" g2="y,yacute,ydieresis" k="-61" />
<hkern g1="quoteleft,quotedblleft" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="184" />
<hkern g1="quoteleft,quotedblleft" g2="J" k="246" />
<hkern g1="quoteleft,quotedblleft" g2="T" k="-41" />
<hkern g1="quoteleft,quotedblleft" g2="quoteleft,quotedblleft" k="113" />
<hkern g1="quoteleft,quotedblleft" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="quoteleft,quotedblleft" g2="AE" k="184" />
<hkern g1="quoteright,quotedblright" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="184" />
<hkern g1="quoteright,quotedblright" g2="J" k="246" />
<hkern g1="quoteright,quotedblright" g2="T" k="-41" />
<hkern g1="quoteright,quotedblright" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="174" />
<hkern g1="quoteright,quotedblright" g2="quoteright,quotedblright" k="113" />
<hkern g1="quoteright,quotedblright" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="quoteright,quotedblright" g2="AE" k="184" />
<hkern g1="quotedbl,quotesingle" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="123" />
<hkern g1="quotedbl,quotesingle" g2="J" k="225" />
<hkern g1="V" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="82" />
<hkern g1="V" g2="J" k="143" />
<hkern g1="V" g2="X" k="20" />
<hkern g1="V" g2="Y,Yacute,Ydieresis" k="41" />
<hkern g1="V" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="143" />
<hkern g1="V" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="20" />
<hkern g1="V" g2="t" k="20" />
<hkern g1="V" g2="z" k="41" />
<hkern g1="V" g2="S" k="10" />
<hkern g1="V" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="61" />
<hkern g1="V" g2="m,n,p,r,ntilde" k="61" />
<hkern g1="V" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="61" />
<hkern g1="V" g2="s" k="61" />
<hkern g1="V" g2="u,ugrave,uacute,ucircumflex,udieresis" k="61" />
<hkern g1="V" g2="x" k="31" />
<hkern g1="V" g2="y,yacute,ydieresis" k="20" />
<hkern g1="V" g2="AE" k="41" />
<hkern g1="V" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="20" />
<hkern g1="V" g2="b,h,k,l,germandbls,thorn" k="31" />
<hkern g1="v" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="61" />
<hkern g1="v" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="20" />
<hkern g1="v" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" />
<hkern g1="v" g2="s" k="20" />
<hkern g1="v" g2="y,yacute,ydieresis" k="10" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,670 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
<defs>
<font id="clear_sans_lightregular" horiz-adv-x="541" >
<font-face units-per-em="2048" ascent="1489" descent="-559" />
<missing-glyph horiz-adv-x="539" />
<glyph unicode="&#xfb01;" horiz-adv-x="1110" d="M47 938v111h164v116q0 91 15 158t49.5 111t90 65t136.5 21q60 0 114.5 -14.5t90.5 -32.5l-43 -109q-14 8 -33.5 16t-41 14t-44 9.5t-43.5 3.5q-46 0 -77 -13t-50 -42t-27 -76t-8 -115v-112h244v-111h-244v-938h-129v938h-164zM772 1305q0 45 20 65.5t70 20.5 q51 0 71.5 -20t20.5 -66q0 -51 -21.5 -69.5t-70.5 -18.5q-51 0 -70.5 23t-19.5 65zM798 0v1049h129v-1049h-129z" />
<glyph unicode="&#xfb02;" horiz-adv-x="1135" d="M47 938v111h164v116q0 91 15 158t49.5 111t90 65t136.5 21q60 0 114.5 -14.5t90.5 -32.5l-43 -109q-14 8 -33.5 16t-41 14t-44 9.5t-43.5 3.5q-46 0 -77 -13t-50 -42t-27 -76t-8 -115v-112h244v-111h-244v-938h-129v938h-164zM811 0v1489h129v-1489h-129z" />
<glyph unicode="&#xfb03;" horiz-adv-x="1729" d="M47 938v111h164v116q0 91 15 158t49.5 111t90 65t136.5 21q60 0 114.5 -14.5t90.5 -32.5l-43 -109q-14 8 -33.5 16t-41 14t-44 9.5t-43.5 3.5q-46 0 -77 -13t-50 -42t-27 -76t-8 -115v-112h244v-111h-244v-938h-129v938h-164zM665 938v111h164v116q0 91 15 158t49.5 111 t90 65t136.5 21q60 0 114.5 -14.5t90.5 -32.5l-43 -109q-14 8 -33.5 16t-41 14t-44 9.5t-43.5 3.5q-46 0 -77 -13t-50 -42t-27 -76t-8 -115v-112h244v-111h-244v-938h-129v938h-164zM1391 1305q0 45 20 65.5t70 20.5q51 0 71.5 -20t20.5 -66q0 -51 -21.5 -69.5t-70.5 -18.5 q-51 0 -70.5 23t-19.5 65zM1417 0v1049h129v-1049h-129z" />
<glyph unicode="&#xfb04;" horiz-adv-x="1753" d="M47 938v111h164v116q0 91 15 158t49.5 111t90 65t136.5 21q60 0 114.5 -14.5t90.5 -32.5l-43 -109q-14 8 -33.5 16t-41 14t-44 9.5t-43.5 3.5q-46 0 -77 -13t-50 -42t-27 -76t-8 -115v-112h244v-111h-244v-938h-129v938h-164zM665 938v111h164v116q0 91 15 158t49.5 111 t90 65t136.5 21q60 0 114.5 -14.5t90.5 -32.5l-43 -109q-14 8 -33.5 16t-41 14t-44 9.5t-43.5 3.5q-46 0 -77 -13t-50 -42t-27 -76t-8 -115v-112h244v-111h-244v-938h-129v938h-164zM1430 0v1489h129v-1489h-129z" />
<glyph horiz-adv-x="0" />
<glyph unicode="&#xd;" horiz-adv-x="539" />
<glyph horiz-adv-x="0" />
<glyph horiz-adv-x="0" />
<glyph unicode=" " horiz-adv-x="539" />
<glyph unicode="&#x09;" horiz-adv-x="539" />
<glyph unicode="&#xa0;" horiz-adv-x="539" />
<glyph unicode="!" d="M168 78q0 49 23 70.5t77 21.5q57 0 80 -22t23 -70q0 -53 -25 -72.5t-78 -19.5q-29 0 -48.5 6t-31 18t-16 29t-4.5 39zM195 1384h149l-18 -1005h-107z" />
<glyph unicode="&#x22;" horiz-adv-x="892" d="M197 1452h166l-37 -520h-94zM529 1452h166l-37 -520h-94z" />
<glyph unicode="#" horiz-adv-x="1466" d="M119 397v95h289l108 399h-280v96h305l104 397h103l-105 -397h336l106 397h103l-105 -397h265v-96h-289l-107 -399h279v-95h-307l-107 -397h-102l104 397h-336l-106 -397h-101l105 397h-262zM508 492h340l108 399h-338z" />
<glyph unicode="$" horiz-adv-x="1255" d="M199 324l106 61q16 -32 40.5 -64t59 -59t81 -46.5t106.5 -25.5v476q-100 21 -169.5 50.5t-113 69t-63 89.5t-19.5 112t21 118.5t65.5 100.5t113.5 71.5t165 31.5v104h102v-104q72 -4 129.5 -21t103 -46t80.5 -69.5t64 -91.5l-108 -59q-19 37 -43.5 68t-57 55t-74.5 38.5 t-94 18.5v-438q78 -18 148 -43t122 -65t82.5 -98t30.5 -142q0 -81 -30 -142t-81.5 -102.5t-121.5 -63.5t-150 -26v-215h-102v215q-83 4 -146 28t-110 58.5t-80 75.5t-57 80zM356 989q0 -48 20 -81t53 -56t75.5 -38t87.5 -26v414q-66 -4 -111 -21t-73 -44.5t-40 -65 t-12 -82.5zM694 190q48 3 93.5 17t81 40.5t57.5 67.5t22 99q0 88 -61 142.5t-193 86.5v-453z" />
<glyph unicode="%" horiz-adv-x="2052" d="M123 975q0 224 90.5 331t263.5 107q181 0 269 -114t88 -324q0 -218 -88.5 -328t-268.5 -110q-185 0 -269.5 107.5t-84.5 330.5zM256 975q0 -86 10.5 -149.5t35.5 -105t67.5 -61.5t107.5 -20q64 0 107 21t69 63t37.5 105t11.5 147q0 66 -8.5 126.5t-32.5 106.5t-68 73.5 t-116 27.5q-65 0 -108 -21.5t-68 -63.5t-35 -104.5t-10 -144.5zM565 -51l799 1487h125l-801 -1487h-123zM1219 408q0 224 90 331t264 107q181 0 267.5 -112.5t86.5 -325.5q0 -439 -354 -439q-94 0 -161 27.5t-110 82t-63 137t-20 192.5zM1350 408q0 -85 10.5 -148t36 -105 t68.5 -62.5t108 -20.5q63 0 105.5 20.5t69 62.5t37.5 105t11 148q0 67 -8 127t-32 106t-68 73t-115 27q-65 0 -108 -21t-68.5 -63t-36 -104.5t-10.5 -144.5z" />
<glyph unicode="&#x26;" horiz-adv-x="1430" d="M160 352q0 72 18.5 126.5t59 102.5t105.5 94.5t157 100.5q-44 51 -76.5 95.5t-54.5 85t-32.5 77.5t-10.5 74q0 152 89.5 228.5t262.5 76.5q81 0 141.5 -20.5t101 -56t60.5 -83.5t20 -102q0 -62 -21 -116.5t-60.5 -103.5t-97.5 -93.5t-132 -87.5l371 -439q42 53 79 127 t62 170l121 -30q-28 -116 -77 -210t-103 -153l184 -215h-172l-104 123q-39 -32 -82.5 -59.5t-93.5 -48t-109.5 -32.5t-130.5 -12q-117 0 -205.5 28.5t-148.5 79t-90.5 120.5t-30.5 153zM297 352q0 -65 26.5 -114.5t72.5 -84t108.5 -52t134.5 -17.5q108 0 191.5 37.5 t142.5 93.5l-395 471q-91 -54 -146 -95t-85 -78t-40 -75t-10 -86zM459 1112q0 -60 40 -123.5t115 -148.5q72 40 121 79.5t78.5 78t42 76t12.5 75.5q0 34 -12 63t-36.5 50t-61.5 33t-86 12q-69 0 -111 -19t-64.5 -48t-30 -63t-7.5 -65z" />
<glyph unicode="'" horiz-adv-x="561" d="M197 1452h165l-34 -520h-95z" />
<glyph unicode="(" horiz-adv-x="766" d="M170 561q0 144 21.5 273.5t64.5 247t108.5 226t153.5 210.5h146q-95 -94 -164.5 -204t-115.5 -232t-68.5 -253.5t-22.5 -267.5q0 -135 22 -260.5t67.5 -243.5t115.5 -230.5t166 -221.5h-146q-91 111 -156.5 220.5t-108 225t-63 241t-20.5 269.5z" />
<glyph unicode=")" horiz-adv-x="797" d="M131 -395q193 213 282 449.5t89 506.5q0 275 -90.5 517t-280.5 440h145q88 -102 154 -210.5t110 -226t65.5 -247t21.5 -273.5q0 -147 -22 -274.5t-66 -243t-109.5 -223.5t-153.5 -215h-145z" />
<glyph unicode="*" horiz-adv-x="967" d="M123 1016l285 155l-285 156l45 78l272 -158l-4 273h92l-4 -273l275 158l45 -78l-287 -156l287 -155l-45 -78l-275 160l4 -273h-92l4 273l-272 -160z" />
<glyph unicode="+" horiz-adv-x="1427" d="M178 528v111h477v481h111v-481h481v-111h-481v-477h-111v477h-477z" />
<glyph unicode="," d="M172 78q0 46 22 69t74 23q101 0 101 -115q0 -56 -10.5 -107.5t-26 -95t-34.5 -75.5t-36 -49h-76q20 22 35.5 54t26 67t15.5 71t5 66q-55 0 -75.5 22t-20.5 70z" />
<glyph unicode="-" horiz-adv-x="848" d="M113 463v127h622v-127h-622z" />
<glyph unicode="." d="M172 78q0 48 22 70t74 22q54 0 77.5 -21.5t23.5 -70.5q0 -53 -25 -72.5t-76 -19.5q-55 0 -75.5 23.5t-20.5 68.5z" />
<glyph unicode="/" horiz-adv-x="952" d="M18 -299l727 1819h123l-729 -1819h-121z" />
<glyph unicode="0" horiz-adv-x="1255" d="M137 686q0 185 29.5 320.5t89.5 223.5t152.5 130.5t218.5 42.5t218.5 -42.5t153 -130.5t90 -223t29.5 -319q0 -368 -119.5 -543.5t-371.5 -175.5q-126 0 -218.5 42.5t-152.5 131t-89.5 223.5t-29.5 320zM281 686q0 -156 21 -269t63.5 -186t107.5 -108t154 -35 q88 0 153 35t108 108.5t64 186.5t21 270t-21 269.5t-64 185t-108 107t-153 34.5q-91 0 -156.5 -35t-107.5 -108.5t-62 -186.5t-20 -268z" />
<glyph unicode="1" horiz-adv-x="1255" d="M297 1004v112q80 4 142 27t107.5 59.5t75 83.5t44.5 98h98v-1384h-133v1128q-28 -30 -66 -53.5t-82 -39t-91.5 -23.5t-94.5 -8z" />
<glyph unicode="2" horiz-adv-x="1180" d="M152 1178q18 35 49.5 76t83 76.5t124.5 59t173 23.5q85 0 162 -21t135 -67.5t92.5 -120t34.5 -178.5q0 -59 -12 -111t-34.5 -99.5t-54 -93t-71.5 -91.5q-43 -48 -92 -100.5t-111 -113.5t-141 -133.5t-181 -160.5h742v-123h-895v143q76 64 160.5 141.5t165.5 157 t152.5 155.5t119.5 138q46 62 76 130.5t30 156.5q0 67 -21.5 118t-59.5 84.5t-90.5 50.5t-113.5 17q-112 0 -187 -48.5t-122 -133.5z" />
<glyph unicode="3" horiz-adv-x="1180" d="M121 164l106 72q21 -31 52.5 -57.5t70 -46t83 -31t91.5 -11.5q87 0 151 18t106 56.5t62.5 98.5t20.5 143q0 136 -84 206t-268 70h-92v119h76q77 0 140.5 17t108.5 50t70 82t25 113q0 117 -74.5 173t-206.5 56q-111 0 -187.5 -43.5t-127.5 -124.5l-113 72q25 42 62.5 81 t90 69t122.5 48.5t161 18.5q110 0 188.5 -26t129 -71t74.5 -105.5t24 -129.5q0 -137 -70 -216.5t-204 -114.5q64 -6 118.5 -31.5t94.5 -69.5t63 -107t23 -145q0 -106 -32 -185.5t-93.5 -133t-150.5 -80.5t-204 -27q-61 0 -122.5 13t-116 38t-98.5 61t-70 81z" />
<glyph unicode="4" horiz-adv-x="1255" d="M66 346v133l743 905h111v-919h200v-119h-200v-346h-132v346h-722zM203 465h585v706z" />
<glyph unicode="5" horiz-adv-x="1180" d="M143 162l111 76q18 -29 47 -56t66 -47.5t81.5 -32.5t94.5 -12q87 0 149 26t102 71.5t59 108t19 136.5q0 80 -24.5 136.5t-67 92.5t-101 53t-126.5 17q-74 0 -138 -19t-118 -55h-72l74 727h682v-122h-571l-48 -465q22 11 50.5 20.5t58.5 16t59.5 10.5t55.5 4 q99 0 178.5 -26.5t135.5 -78t86 -128.5t30 -179q0 -108 -30.5 -194.5t-90 -146.5t-147 -92t-201.5 -32q-75 0 -139 15.5t-115.5 42t-89.5 61t-60 72.5z" />
<glyph unicode="6" horiz-adv-x="1180" d="M133 670q0 153 30 288t93.5 236t163 160t239.5 59q110 0 193.5 -34.5t153.5 -108.5l-88 -101q-28 30 -56 53.5t-59.5 39t-67.5 24t-80 8.5q-90 0 -157.5 -39t-113 -109.5t-71 -168.5t-32.5 -215q28 19 66 38.5t84 35.5t98 26t108 10q94 0 171.5 -24t132 -75.5 t84.5 -131.5t30 -192q0 -114 -30 -203t-87 -150t-140.5 -93t-191.5 -32q-128 -1 -217.5 44t-146.5 133.5t-83 219.5t-26 302zM281 653q0 -163 22 -271t64 -173t102.5 -92t138.5 -27q79 0 137 25t95.5 70.5t56 110.5t18.5 146q0 89 -22.5 149t-63 96t-98 51.5t-127.5 15.5 q-39 0 -82 -8t-85.5 -21.5t-82.5 -32t-73 -39.5z" />
<glyph unicode="7" horiz-adv-x="1255" d="M152 1262v122h929v-129l-530 -1255h-150l543 1262h-792z" />
<glyph unicode="8" horiz-adv-x="1180" d="M121 346q0 140 82.5 234.5t245.5 156.5q-65 31 -119 61.5t-92.5 68.5t-60 86.5t-21.5 115.5q0 76 26.5 139.5t80.5 109t136 70.5t193 25q213 0 323.5 -87.5t110.5 -254.5q0 -73 -26.5 -126.5t-68.5 -93t-93.5 -67.5t-100.5 -49q72 -34 132 -69t102.5 -79.5t66 -102.5 t23.5 -138q0 -94 -32 -164t-92.5 -117t-147.5 -70.5t-197 -23.5q-236 0 -353.5 96t-117.5 279zM258 344q0 -120 82.5 -190t251.5 -70q170 0 251 70t81 192q0 58 -19.5 103t-60 83t-103 72.5t-147.5 73.5q-83 -30 -146 -63t-105 -73t-63.5 -88.5t-21.5 -109.5zM293 1073 q0 -39 13 -72t47 -65t93.5 -65.5t151.5 -73.5q73 27 127.5 55t91 60t54.5 69.5t18 85.5q0 52 -17.5 95t-54 73.5t-92.5 47.5t-133 17q-78 0 -134.5 -16.5t-93 -46.5t-54 -71.5t-17.5 -92.5z" />
<glyph unicode="9" horiz-adv-x="1180" d="M123 936q0 114 30.5 202.5t88 149.5t141 93t190.5 32q129 0 219 -45t146 -132.5t81 -216t25 -294.5q0 -104 -12.5 -200.5t-39.5 -180.5t-69 -152.5t-100.5 -117.5t-135.5 -76t-173 -27q-119 0 -206 40.5t-152 111.5l88 98q27 -30 56 -54t62 -41.5t71.5 -26.5t84.5 -9 q94 0 162.5 39t114.5 109t70.5 168t31.5 217q-29 -20 -67 -40t-83.5 -36t-97 -26.5t-106.5 -10.5q-95 0 -172.5 24.5t-132.5 76.5t-85 132.5t-30 192.5zM262 942q0 -90 22.5 -150t64 -95.5t98.5 -50.5t126 -15q39 0 82.5 8t86 21.5t83 31t74.5 37.5q0 135 -16.5 240.5 t-55 177.5t-101.5 109.5t-155 37.5q-79 0 -137 -25t-96.5 -71t-57 -111t-18.5 -145z" />
<glyph unicode=":" d="M172 78q0 48 22 70t74 22q54 0 77.5 -21.5t23.5 -70.5q0 -53 -25 -72.5t-76 -19.5q-55 0 -75.5 23.5t-20.5 68.5zM172 956q0 50 22 71.5t74 21.5q54 0 77.5 -21.5t23.5 -71.5q0 -52 -25 -72t-76 -20q-55 0 -75.5 24.5t-20.5 67.5z" />
<glyph unicode=";" d="M172 78q0 46 22 69t74 23q53 0 77 -28t24 -87q0 -56 -10.5 -107.5t-26 -95t-34.5 -75.5t-36 -49h-76q20 22 35.5 54t26 67t15.5 71t5 66q-55 0 -75.5 22t-20.5 70zM172 956q0 50 22 71.5t74 21.5q54 0 77.5 -21.5t23.5 -71.5q0 -52 -25 -72t-76 -20q-55 0 -75.5 24.5 t-20.5 67.5z" />
<glyph unicode="&#x3c;" horiz-adv-x="1427" d="M180 543v88l1067 454v-120l-897 -379l897 -377v-121z" />
<glyph unicode="=" horiz-adv-x="1427" d="M178 305v111h1069v-111h-1069zM178 756v110h1069v-110h-1069z" />
<glyph unicode="&#x3e;" horiz-adv-x="1427" d="M180 88v121l897 377l-897 379v120l1067 -454v-88z" />
<glyph unicode="?" horiz-adv-x="1036" d="M86 1225q21 39 56.5 73t84 59.5t110 40.5t136.5 15q93 0 172.5 -22t138 -66.5t92 -111t33.5 -156.5q0 -85 -29 -152.5t-83 -125t-131 -109.5t-172 -105v-213h-127v271q106 54 181.5 102.5t124 97.5t71 103.5t22.5 120.5q0 56 -18.5 101t-55.5 77t-91 49.5t-126 17.5 q-59 0 -104 -11.5t-79 -31t-58 -44.5t-39 -52zM330 78q0 49 23 70.5t77 21.5q57 0 79.5 -21.5t22.5 -70.5q0 -53 -24.5 -72.5t-77.5 -19.5q-29 0 -48.5 6t-31 18t-16 29t-4.5 39z" />
<glyph unicode="@" horiz-adv-x="1927" d="M129 553q0 123 29 235t83 207.5t131 172.5t172 131.5t206.5 84t234.5 29.5q201 0 356 -57.5t260.5 -165.5t159.5 -262.5t54 -347.5q0 -105 -19 -206t-63 -180.5t-115.5 -128.5t-175.5 -49q-53 0 -92.5 9t-67 28t-44 49.5t-24.5 73.5q-74 -60 -152.5 -96.5t-156.5 -36.5 q-103 0 -172.5 41t-112 108t-61 151t-18.5 171q0 114 25 207.5t76 160t127.5 102.5t180.5 36q42 0 80.5 -10t72.5 -24.5t60.5 -31t44.5 -30.5v67h129v-739q0 -37 6.5 -61.5t20 -39.5t34.5 -21.5t50 -6.5q65 0 111.5 38t76.5 101t44 144.5t14 168.5q0 168 -43 303.5t-131 230 t-220.5 145.5t-312.5 51q-110 0 -207.5 -26t-179.5 -74t-146.5 -116t-110 -151.5t-69.5 -181.5t-24 -205q0 -178 52 -318t148 -237t231 -148t302 -51q119 0 222 11t194 32l26 -110q-45 -10 -98 -17.5t-110 -12t-117 -7t-119 -2.5q-188 0 -345 58t-269.5 168t-175 270.5 t-62.5 365.5zM672 518q0 -65 11 -128.5t39.5 -114t77.5 -82t126 -31.5q37 0 74.5 11.5t73.5 30t69.5 40.5t62.5 43v524q-24 17 -53.5 33.5t-61.5 30t-64.5 22t-61.5 8.5q-81 0 -137 -26t-90.5 -76t-50 -122t-15.5 -163z" />
<glyph unicode="A" horiz-adv-x="1264" d="M63 0l480 1384h174l483 -1384h-147l-135 399h-578l-135 -399h-142zM381 522h493l-247 731z" />
<glyph unicode="B" horiz-adv-x="1257" d="M199 0v1384h395q125 0 210 -19.5t137 -58.5t74.5 -97t22.5 -136q0 -67 -14 -118.5t-41.5 -90t-67 -65t-90.5 -43.5q65 -9 121 -33.5t97 -67t64 -103.5t23 -144q0 -107 -34 -184t-99.5 -127t-162 -73.5t-220.5 -23.5h-415zM334 123h219q102 0 182.5 11t136.5 41.5 t85.5 86.5t29.5 146q0 86 -28 137.5t-80 79.5t-124.5 36.5t-162.5 8.5h-258v-547zM334 791h221q177 0 259.5 59.5t82.5 191.5q0 63 -17 105.5t-56 68.5t-103 37t-158 11h-229v-473z" />
<glyph unicode="C" horiz-adv-x="1315" d="M145 692q0 174 34 308.5t105 226t180.5 139t260.5 47.5q97 0 173 -19t133.5 -54t100 -84t74.5 -109l-116 -74q-26 48 -58 87.5t-75.5 68.5t-100 45t-131.5 16q-118 0 -201 -39.5t-135 -116t-76 -187.5t-24 -255t24 -255t77 -187.5t137 -116t204 -39.5q84 0 145.5 20 t105.5 52t74.5 71.5t53.5 79.5l115 -71q-33 -59 -75 -109t-100 -87t-135.5 -58t-181.5 -21q-302 0 -445 181t-143 540z" />
<glyph unicode="D" horiz-adv-x="1282" d="M186 0v1384h324q163 0 282.5 -35t198.5 -116t117.5 -213.5t38.5 -327.5q0 -203 -41.5 -336.5t-122 -212.5t-199 -111t-272.5 -32h-326zM322 123h176q136 0 232 28.5t156 95.5t87.5 176.5t27.5 270.5q0 157 -26.5 265.5t-86 176t-155.5 97t-235 29.5h-176v-1139z" />
<glyph unicode="E" horiz-adv-x="1155" d="M199 0v1384h819v-122h-684v-467h588v-123h-588v-549h684v-123h-819z" />
<glyph unicode="F" horiz-adv-x="1110" d="M199 0v1384h811v-122h-676v-461h577v-123h-577v-678h-135z" />
<glyph unicode="G" horiz-adv-x="1378" d="M145 694q0 167 31 300t100 226t179 143t268 50q98 0 173 -19.5t131 -55t97 -84.5t72 -107l-115 -74q-27 53 -60.5 93.5t-77.5 68t-100 41.5t-126 14q-113 0 -194 -37.5t-133 -112.5t-76.5 -187t-24.5 -261q0 -140 23 -251t76 -188t139.5 -118t213.5 -41q42 0 81 4.5 t77 14t77.5 24t82.5 33.5v389h-369v123h504v-588q-58 -30 -109.5 -53t-104.5 -38.5t-112 -23.5t-131 -8q-164 0 -276.5 50.5t-183 144.5t-101.5 227.5t-31 300.5z" />
<glyph unicode="H" horiz-adv-x="1341" d="M199 0v1384h135v-606h674v606h135v-1384h-135v655h-674v-655h-135z" />
<glyph unicode="I" horiz-adv-x="719" d="M102 0v119h189v1147h-189v118h514v-118h-190v-1147h190v-119h-514z" />
<glyph unicode="J" horiz-adv-x="864" d="M66 18l51 119q17 -9 40.5 -17t49.5 -14.5t52.5 -10t49.5 -3.5q70 0 113.5 21.5t67.5 66t32 112.5t8 161v931h136v-989q0 -104 -18 -183.5t-59.5 -133.5t-110 -81.5t-169.5 -27.5q-31 0 -64.5 4t-65.5 10.5t-61.5 15.5t-51.5 19z" />
<glyph unicode="K" horiz-adv-x="1255" d="M199 0v1384h135v-739l661 739h170l-587 -649l612 -735h-176l-527 639l-153 -164v-475h-135z" />
<glyph unicode="L" horiz-adv-x="1038" d="M199 0v1384h135v-1261h649v-123h-784z" />
<glyph unicode="M" horiz-adv-x="1556" d="M199 0v1384h190l391 -806l389 806h189v-1384h-131v1219l-406 -828h-90l-401 828v-1219h-131z" />
<glyph unicode="N" horiz-adv-x="1374" d="M199 0v1384h196l647 -1165v1165h134v-1384h-160l-686 1235v-1235h-131z" />
<glyph unicode="O" horiz-adv-x="1364" d="M135 692q0 166 29.5 299.5t94.5 227t169 144t254 50.5t254.5 -50t169.5 -143t94 -226.5t29 -301.5q0 -167 -29 -300.5t-94 -227t-169.5 -143.5t-254.5 -50t-254 50t-169 144t-94.5 227t-29.5 300zM279 692q0 -144 21 -255t68.5 -187.5t124.5 -116t189 -39.5 q111 0 188 39.5t124 115.5t68 187.5t21 255.5t-21 255.5t-68 187.5t-124 115.5t-188 39.5q-112 0 -189 -39t-124.5 -115t-68.5 -187.5t-21 -256.5z" />
<glyph unicode="P" horiz-adv-x="1153" d="M199 0v1384h383q238 0 350 -107.5t112 -324.5q0 -126 -29 -214t-88.5 -143.5t-149.5 -80.5t-212 -25h-231v-489h-135zM334 612h209q93 0 160 15t110.5 52.5t64.5 102.5t21 166q0 90 -22.5 150.5t-65 96.5t-103.5 51.5t-139 15.5h-235v-650z" />
<glyph unicode="Q" horiz-adv-x="1364" d="M135 692q0 169 30 303t96 227t170.5 142t252.5 49q144 0 247.5 -47.5t169.5 -139.5t97 -226t31 -308q0 -156 -25 -282t-80.5 -218t-143.5 -148t-214 -71q14 -39 35.5 -70.5t53.5 -53.5t75.5 -34t101.5 -12q17 0 38.5 2t43.5 6t42.5 9t35.5 10l41 -113q-48 -18 -102.5 -26 t-102.5 -8q-87 0 -154.5 19.5t-118 56.5t-85 91t-56.5 123q-121 11 -211 59.5t-149.5 137t-89 218.5t-29.5 304zM279 692q0 -144 21 -255t68.5 -187.5t124.5 -116t189 -39.5t188.5 39.5t124 115.5t68 187.5t20.5 255.5t-21 255.5t-68 187.5t-124 115.5t-188 39.5 q-112 0 -189 -39.5t-124.5 -115.5t-68.5 -187.5t-21 -255.5z" />
<glyph unicode="R" horiz-adv-x="1212" d="M199 0v1384h393q114 0 200.5 -20t145.5 -65.5t89 -119t30 -180.5q0 -92 -19.5 -159.5t-57 -114.5t-92 -75.5t-124.5 -43.5l377 -606h-162l-354 586h-291v-586h-135zM334 707h250q94 0 157 15.5t101 49.5t54.5 88.5t16.5 132.5q0 73 -17 124.5t-55 84t-99.5 47.5 t-151.5 15h-256v-557z" />
<glyph unicode="S" horiz-adv-x="1225" d="M111 248l116 69q20 -40 52 -79.5t78 -71.5t107.5 -52t141.5 -20q73 0 136.5 15t110.5 47t74 81.5t27 118.5q0 64 -21 108.5t-64 77t-109 56.5t-156 47q-120 31 -207 60.5t-144 71t-84.5 101t-27.5 150.5q0 86 28 157t84.5 121.5t141.5 78.5t199 28q86 0 156 -17.5 t126 -50t100 -78.5t79 -104l-113 -76q-26 45 -59 82.5t-75 64.5t-94.5 41.5t-117.5 14.5q-79 0 -138 -18t-98 -51t-58 -80t-19 -105q0 -56 17.5 -93.5t58.5 -65t109 -50t169 -47.5q107 -27 192 -58t144.5 -77t91 -113.5t31.5 -169.5q0 -107 -38 -181t-103 -121t-153 -68 t-188 -21q-105 0 -184 21t-138.5 57.5t-103 87.5t-77.5 111z" />
<glyph unicode="T" horiz-adv-x="1174" d="M43 1262v122h1085v-122h-475v-1262h-135v1262h-475z" />
<glyph unicode="U" horiz-adv-x="1378" d="M193 578v806h135v-786q0 -144 17 -241t59 -156.5t111.5 -85t174.5 -25.5q106 0 175.5 25.5t110 85t57 156t16.5 237.5v790h135v-806q0 -170 -26 -286.5t-84.5 -188t-152.5 -103t-229 -31.5q-141 0 -237 32.5t-154 105t-83 188.5t-25 283z" />
<glyph unicode="V" horiz-adv-x="1214" d="M63 1384h142l401 -1241l406 1241h139l-463 -1384h-170z" />
<glyph unicode="W" horiz-adv-x="1718" d="M80 1384h137l277 -1202l278 1202h168l287 -1212l278 1212h133l-325 -1384h-176l-281 1204l-283 -1204h-170z" />
<glyph unicode="X" horiz-adv-x="1169" d="M66 0l444 694l-432 690h155l357 -585l362 585h152l-440 -686l440 -698h-156l-364 594l-371 -594h-147z" />
<glyph unicode="Y" horiz-adv-x="1126" d="M51 1384h150l362 -720l367 720h145l-444 -847v-537h-137v530z" />
<glyph unicode="Z" horiz-adv-x="1171" d="M102 0v129l779 1133h-748v122h905v-122l-784 -1139h801v-123h-953z" />
<glyph unicode="[" horiz-adv-x="825" d="M215 -395v1884h457v-107h-338v-1673h338v-104h-457z" />
<glyph unicode="\" horiz-adv-x="952" d="M82 1520h125l727 -1819h-123z" />
<glyph unicode="]" horiz-adv-x="825" d="M154 -291h335v1673h-335v107h456v-1884h-456v104z" />
<glyph unicode="^" horiz-adv-x="1214" d="M154 594l389 790h129l389 -790h-121l-332 676l-334 -676h-120z" />
<glyph unicode="_" horiz-adv-x="1024" d="M-10 -164h1044v-92h-1044v92z" />
<glyph unicode="`" horiz-adv-x="1106" d="M326 1569h176l186 -361h-104z" />
<glyph unicode="a" horiz-adv-x="1079" d="M121 295q0 82 24 143t75 103.5t130.5 67.5t190.5 36l235 23v53q0 66 -15 112.5t-47.5 76.5t-83 43.5t-120.5 13.5q-59 0 -102.5 -10.5t-75 -28t-52.5 -40.5t-36 -48l-103 63q22 36 52.5 68t75 56t104 38t139.5 14q106 0 180.5 -20t122 -63.5t69 -113t21.5 -169.5v-713 h-129v152q-45 -39 -87 -72.5t-85.5 -58t-90 -38.5t-99.5 -14q-74 0 -129 22.5t-91.5 65t-54.5 103t-18 135.5zM254 299q0 -114 46 -165.5t144 -51.5q37 0 72.5 11t74.5 33.5t84 58t101 83.5v293l-188 -18q-90 -9 -153.5 -25.5t-103.5 -45t-58.5 -71t-18.5 -102.5z" />
<glyph unicode="b" horiz-adv-x="1151" d="M182 0v1489h129v-555q31 31 67.5 58t77 46t84.5 30t89 11q107 0 182 -42.5t122 -116.5t68 -173.5t21 -214.5q0 -123 -24 -226.5t-74 -178.5t-126.5 -116.5t-181.5 -41.5q-78 0 -157.5 36t-147.5 99v-104h-129zM311 225q69 -65 145.5 -104t147.5 -39q62 0 114.5 26 t90.5 80.5t59 138.5t21 201q0 101 -16 182t-50 137.5t-87 87t-128 30.5q-78 0 -153.5 -43t-143.5 -111v-586z" />
<glyph unicode="c" horiz-adv-x="1016" d="M129 520q0 128 24.5 231.5t77 176t135 112t199.5 39.5q124 0 207.5 -49t140.5 -151l-106 -64q-21 39 -45 67.5t-53.5 47t-65.5 28t-82 9.5q-157 0 -228 -114t-71 -337q0 -98 15.5 -178t51 -137.5t94 -89t144.5 -31.5q49 0 86.5 10.5t67.5 30.5t54 48.5t46 63.5l105 -65 q-25 -47 -58 -84t-77 -62.5t-99.5 -39t-124.5 -13.5q-123 0 -206.5 42t-135 115.5t-74 174.5t-22.5 219z" />
<glyph unicode="d" horiz-adv-x="1151" d="M129 516q0 109 23.5 210.5t73 180t126 125.5t183.5 47q90 0 163 -33.5t142 -87.5v531h129v-1489h-129v115q-32 -31 -69.5 -57.5t-78.5 -46t-85 -31t-89 -11.5q-98 0 -171 37t-121.5 107.5t-72.5 172t-24 230.5zM262 520q0 -99 15 -180t47.5 -138t83.5 -88.5t124 -31.5 q43 0 84.5 12.5t80.5 34t75 49.5t68 60v600q-75 60 -148 93.5t-145 33.5q-65 0 -118 -30.5t-90 -87.5t-57 -139.5t-20 -187.5z" />
<glyph unicode="e" horiz-adv-x="1051" d="M129 516q0 133 23 237.5t73.5 177t131 110.5t196.5 38q102 0 175 -32t119.5 -92.5t68.5 -148t22 -198.5v-84h-676q0 -115 14.5 -199t49 -138.5t91.5 -80.5t142 -26q42 0 77 7.5t65.5 25t58.5 45t55 67.5l103 -67q-28 -45 -61.5 -80t-77 -59t-99 -37t-127.5 -13 q-104 0 -183 30t-132.5 95.5t-81 169.5t-27.5 252zM264 629h547q-3 177 -66 259.5t-196 82.5q-69 0 -119.5 -20t-85 -62t-54 -106.5t-26.5 -153.5z" />
<glyph unicode="f" horiz-adv-x="618" d="M47 938v111h164v116q0 91 15 158t49.5 111t90 65t136.5 21q60 0 114.5 -14.5t90.5 -32.5l-43 -109q-14 8 -33.5 16t-41 14t-44 9.5t-43.5 3.5q-46 0 -77 -13t-50 -42t-27 -76t-8 -115v-112h244v-111h-244v-938h-129v938h-164z" />
<glyph unicode="g" horiz-adv-x="1151" d="M129 535q0 114 24 213t74.5 172.5t128 116t185.5 42.5q83 0 158 -32.5t141 -88.5v91h129v-1026q0 -111 -24 -190.5t-73.5 -130t-125.5 -74t-181 -23.5q-127 0 -220 29.5t-148 72.5l55 100q51 -42 128 -68t185 -26q75 0 127 17t85 53.5t48 94t15 138.5v127 q-30 -29 -66.5 -55t-78 -45.5t-86.5 -31t-93 -11.5q-101 0 -174 36t-120 104.5t-70 168t-23 226.5zM262 539q0 -79 9 -155.5t38 -136.5t83 -97t143 -37q46 0 88.5 13.5t81 35.5t72.5 49.5t63 54.5v574q-73 57 -143.5 91t-145.5 34q-76 0 -130.5 -31t-90 -87.5t-52 -135 t-16.5 -172.5z" />
<glyph unicode="h" horiz-adv-x="1137" d="M182 0v1489h129v-606q44 41 89 77t91.5 62.5t93.5 41.5t95 15q84 0 139 -25t87 -73.5t44.5 -119t12.5 -161.5v-700h-129v651q0 89 -8 148t-28 94t-54.5 49t-86.5 14q-69 0 -160 -51.5t-186 -142.5v-762h-129z" />
<glyph unicode="i" horiz-adv-x="494" d="M156 1305q0 45 20 65.5t70 20.5q51 0 71.5 -20t20.5 -66q0 -51 -21.5 -69.5t-70.5 -18.5q-51 0 -70.5 23t-19.5 65zM182 0v1049h129v-1049h-129z" />
<glyph unicode="j" horiz-adv-x="508" d="M-141 -365l32 107q36 -14 73 -21.5t79 -7.5q43 0 72 14t46 44t24.5 76.5t7.5 111.5v1090h129v-1104q0 -86 -13.5 -149.5t-46 -106t-87.5 -63.5t-138 -21q-40 0 -86 7.5t-92 22.5zM166 1305q0 45 21.5 65.5t70.5 20.5q51 0 71.5 -20t20.5 -66q0 -51 -22 -69.5t-70 -18.5 q-53 0 -72.5 23t-19.5 65z" />
<glyph unicode="k" horiz-adv-x="1022" d="M182 0v1489h129v-973l469 533h160l-426 -471l449 -578h-162l-371 489l-119 -131v-358h-129z" />
<glyph unicode="l" horiz-adv-x="518" d="M195 0v1489h129v-1489h-129z" />
<glyph unicode="m" horiz-adv-x="1673" d="M182 0v1049h129v-166q39 42 80 78t82.5 62t84.5 41t87 15q106 0 167.5 -50.5t80.5 -160.5q44 48 85 87t83.5 66.5t87.5 42.5t96 15q80 0 129.5 -28t77.5 -78.5t37.5 -120t9.5 -152.5v-700h-129v645q0 94 -6 154.5t-23 95.5t-46.5 48t-75.5 13q-40 0 -77.5 -14 t-75.5 -39.5t-77.5 -61t-83.5 -79.5v-762h-129v651q0 93 -7 152.5t-24 93t-47.5 46.5t-76.5 13q-38 0 -77 -16t-78 -43t-78 -62t-77 -73v-762h-129z" />
<glyph unicode="n" horiz-adv-x="1137" d="M182 0v1049h129v-166q45 43 90.5 79t92 62t93.5 40.5t95 14.5q84 0 138 -25t86 -73.5t44.5 -119t12.5 -161.5v-700h-129v651q0 88 -8 147t-28 94t-54.5 49.5t-86.5 14.5q-69 0 -160 -51.5t-186 -142.5v-762h-129z" />
<glyph unicode="o" horiz-adv-x="1141" d="M129 522q0 122 24 224.5t77 176.5t137 115t204 41q117 0 200.5 -39.5t137 -112.5t78.5 -175.5t25 -229.5q0 -125 -24 -226.5t-77 -174.5t-137 -112.5t-203 -39.5t-203 39.5t-137 112.5t-77.5 174.5t-24.5 226.5zM262 522q0 -104 16.5 -186t53 -139t95.5 -87t144 -30 q83 0 141.5 29.5t95 86.5t53 139t16.5 187q0 106 -16 189t-52 140t-94.5 86.5t-143.5 29.5q-86 0 -145 -30.5t-95.5 -88t-52.5 -140t-16 -186.5z" />
<glyph unicode="p" horiz-adv-x="1151" d="M182 -395v1444h129v-115q31 31 67.5 58t77 46t84.5 30t89 11q106 0 180.5 -42.5t121.5 -116.5t69 -173.5t22 -214.5q0 -123 -25 -226.5t-76 -178.5t-128.5 -116.5t-182.5 -41.5q-77 0 -153.5 34.5t-145.5 100.5v-499h-129zM311 225q69 -65 143.5 -104t145.5 -39 q62 0 115 26t91.5 80.5t60.5 138.5t22 201q0 101 -16.5 182t-51 137.5t-87.5 87t-126 30.5q-80 0 -154.5 -42.5t-142.5 -111.5v-586z" />
<glyph unicode="q" horiz-adv-x="1151" d="M129 516q0 109 22.5 210.5t71 180t124.5 125.5t183 47q90 0 166 -35t144 -86v91h129v-1444h-129v510q-32 -31 -69.5 -57.5t-78.5 -46t-85 -31t-89 -11.5q-100 0 -173 37t-121 107.5t-71.5 172t-23.5 230.5zM262 520q0 -98 14.5 -179t46.5 -138.5t83.5 -89t125.5 -31.5 q43 0 84 12.5t80 33.5t75 49.5t69 60.5v600q-75 60 -150 93.5t-147 33.5q-65 0 -117 -30.5t-88.5 -87.5t-56 -139.5t-19.5 -187.5z" />
<glyph unicode="r" horiz-adv-x="797" d="M182 0v1049h129v-181q45 45 85.5 81.5t81 62t82 39.5t87.5 14q29 0 53 -5t45 -16l-28 -122q-35 14 -76 14q-48 0 -87.5 -12t-77.5 -36t-77.5 -59.5t-87.5 -83.5v-745h-129z" />
<glyph unicode="s" horiz-adv-x="973" d="M117 154l104 65q35 -63 98.5 -101t163.5 -38q52 0 97 8.5t78 29.5t52 56.5t19 89.5q0 42 -12 72.5t-42.5 54t-82.5 42.5t-133 40q-84 22 -144.5 47t-100 60.5t-58.5 85t-19 120.5q0 58 21.5 111.5t66 93.5t111.5 64t158 24q69 0 123.5 -15t96.5 -40.5t72 -59.5t50 -71 l-105 -62q-15 28 -36.5 53t-50 43.5t-65.5 29t-85 10.5q-107 0 -168.5 -47t-61.5 -132q0 -41 11 -70t37 -50.5t70.5 -38.5t111.5 -35q101 -27 170.5 -55t112 -65t61 -86.5t18.5 -119.5q0 -74 -25.5 -130t-74 -93.5t-118 -56.5t-157.5 -19q-81 0 -142 17.5t-105.5 44.5 t-73 59.5t-43.5 63.5z" />
<glyph unicode="t" horiz-adv-x="723" d="M55 938v111h158v292h129v-292h276v-111h-276v-606q0 -73 7 -122t24.5 -78t47.5 -41.5t77 -12.5q35 0 76.5 8.5t70.5 19.5l33 -104q-40 -14 -89 -23.5t-100 -9.5q-78 0 -131 19.5t-85 61.5t-46 108t-14 159v621h-158z" />
<glyph unicode="u" horiz-adv-x="1137" d="M174 348v701h129v-654q0 -88 7.5 -146.5t27 -94t53.5 -50t86 -14.5q71 0 161 52t187 145v762h129v-1049h-129v166q-44 -42 -89.5 -78.5t-92 -62.5t-93 -41t-93.5 -15q-85 0 -139.5 25t-86.5 73.5t-44.5 119t-12.5 161.5z" />
<glyph unicode="v" horiz-adv-x="991" d="M57 1049h138l303 -891l301 891h133l-369 -1049h-137z" />
<glyph unicode="w" horiz-adv-x="1430" d="M82 1049h133l186 -861l258 861h117l262 -861l181 861h129l-244 -1049h-125l-264 870l-264 -870h-125z" />
<glyph unicode="x" horiz-adv-x="965" d="M59 0l351 522l-344 527h151l270 -431l273 431h143l-344 -519l344 -530h-155l-269 432l-276 -432h-144z" />
<glyph unicode="y" horiz-adv-x="1018" d="M4 -365l37 109q25 -14 61 -21.5t70 -7.5q75 0 129 59.5t98 176.5l41 104l-383 994h140l311 -832l315 832h138l-453 -1147q-32 -81 -67.5 -138t-76.5 -92t-89 -51t-105 -16q-21 0 -44.5 2t-46 6t-42 9.5t-33.5 12.5z" />
<glyph unicode="z" horiz-adv-x="936" d="M94 0v98l576 840h-564v111h719v-97l-577 -841h594v-111h-748z" />
<glyph unicode="{" horiz-adv-x="975" d="M102 508v110h19q85 0 144 22.5t95.5 68t53 113.5t16.5 159v170q0 87 27.5 155.5t78 116t121.5 72.5t158 25h59v-105h-47q-137 0 -206.5 -71t-69.5 -211v-175q0 -173 -70.5 -267.5t-199.5 -129.5q129 -32 199.5 -127t70.5 -268v-176q0 -142 64.5 -212.5t211.5 -70.5h47 v-102h-59q-91 0 -162.5 23.5t-121 70t-75.5 115.5t-26 159v170q0 88 -16 156.5t-52 114.5t-95 70t-146 24h-19z" />
<glyph unicode="|" horiz-adv-x="850" d="M367 -395v1915h116v-1915h-116z" />
<glyph unicode="}" horiz-adv-x="975" d="M100 -293h45q148 0 213.5 70.5t65.5 212.5v176q0 173 69.5 268t200.5 127q-129 35 -199.5 129.5t-70.5 267.5v175q0 140 -69.5 211t-209.5 71h-45v105h60q90 0 161 -25.5t120.5 -73.5t75.5 -116.5t26 -153.5v-170q0 -91 16.5 -159t53 -113.5t96 -68t145.5 -22.5h18v-110 h-18q-87 0 -146.5 -24t-96 -70t-52.5 -114.5t-16 -156.5v-170q0 -90 -26 -159t-75 -115.5t-120.5 -70t-161.5 -23.5h-60v102z" />
<glyph unicode="~" horiz-adv-x="1427" d="M164 631v125q85 68 159 98.5t136 30.5q61 0 127.5 -24.5t134 -54.5t132.5 -54.5t122 -24.5q39 0 75.5 11t72 29.5t70.5 44.5t71 56v-129q-29 -22 -60.5 -44t-67 -39.5t-75 -28.5t-84.5 -11q-40 0 -84.5 11.5t-91 29.5t-93.5 38t-91.5 38t-84.5 29.5t-73 11.5 q-41 0 -78.5 -11t-73.5 -30.5t-71 -45.5t-72 -56z" />
<glyph unicode="&#xa1;" d="M168 987q0 51 25.5 71.5t76.5 20.5q30 0 49.5 -6.5t31 -18.5t16 -29t4.5 -38q0 -49 -22.5 -70.5t-78.5 -21.5q-55 0 -78.5 21.5t-23.5 70.5zM195 -395l20 1093h107l22 -1093h-149z" />
<glyph unicode="&#xa2;" horiz-adv-x="1016" d="M129 520q0 128 24.5 231.5t77 176t135 112t199.5 39.5q33 0 68 -6l45 215h98l-51 -237q60 -22 106.5 -64.5t81.5 -107.5l-106 -64q-23 42 -49 71t-58 48l-180 -852q11 0 23 -1t24 -1q49 0 86.5 10.5t67.5 30.5t54 48.5t46 63.5l105 -65q-25 -47 -58 -84t-77 -62.5 t-99.5 -39t-124.5 -13.5q-18 0 -36 1t-35 3l-50 -233h-96l53 254q-76 24 -128 73.5t-84.5 118t-47 153.5t-14.5 181zM262 516q0 -152 37.5 -257t128.5 -150l180 854q-12 3 -24.5 3.5t-24.5 0.5q-155 0 -226 -114t-71 -337z" />
<glyph unicode="&#xa3;" horiz-adv-x="1255" d="M119 0v117q54 11 91 55.5t60.5 109.5t34 144.5t10.5 161.5h-172v104h168q-2 32 -12.5 68.5t-22 79t-21 92t-9.5 106.5q0 94 35 164t96.5 117t143.5 70.5t177 23.5q63 0 121.5 -11.5t111 -36.5t97.5 -65t82 -98l-111 -72q-47 74 -122.5 121t-178.5 47q-77 0 -135.5 -19.5 t-98 -55.5t-59.5 -86t-20 -111q0 -46 8.5 -91t20 -87t22 -81.5t13.5 -74.5h378v-104h-374q0 -164 -40.5 -286t-127.5 -185h850v-117h-1016z" />
<glyph unicode="&#xa4;" horiz-adv-x="1255" d="M137 1004l72 71l188 -188q51 40 109.5 60t120.5 20t120 -19t109 -59l188 186l72 -71l-186 -189q40 -51 59 -109t19 -120t-21 -119.5t-59 -108.5l186 -190l-70 -70l-190 187q-53 -41 -109 -58.5t-118 -17.5t-119.5 19.5t-108.5 56.5l-188 -187l-72 70l189 190 q-39 50 -58.5 108t-19.5 120t18.5 120.5t57.5 106.5zM362 586q0 -56 20.5 -104.5t56 -85.5t84 -58t104.5 -21q57 0 106 21t85.5 58t57.5 85.5t21 104.5q0 55 -20.5 104.5t-56.5 86.5t-85.5 59t-107.5 22q-57 0 -105.5 -21.5t-84 -58.5t-55.5 -86.5t-20 -105.5z" />
<glyph unicode="&#xa5;" horiz-adv-x="1255" d="M76 1384h151l404 -667l401 667h148l-412 -667h352v-99h-407l-19 -28v-135h426v-97h-426v-358h-135v358h-422v97h422v131l-20 32h-402v99h348z" />
<glyph unicode="&#xa6;" horiz-adv-x="850" d="M367 221h116v-616h-116v616zM367 903v617h116v-617h-116z" />
<glyph unicode="&#xa7;" horiz-adv-x="1067" d="M117 545q0 52 19 97t53.5 85t82 75.5t103.5 69.5q-51 34 -86.5 65t-58.5 62.5t-33.5 64.5t-10.5 71q0 60 23 111t69 88t116 58t165 21q67 0 122.5 -10t100.5 -29t80.5 -45.5t63.5 -60.5l-99 -76q-17 22 -42 42t-58 35.5t-74 24.5t-90 9q-118 0 -179.5 -39.5t-61.5 -124.5 q0 -31 11 -57t43.5 -55.5t90.5 -67t151 -91.5q82 -47 144 -89t104 -85.5t63 -91t21 -104.5q0 -49 -14 -90t-44.5 -79t-79.5 -75.5t-118 -79.5q55 -36 92.5 -68.5t60.5 -64t32.5 -63.5t9.5 -66q0 -71 -27 -123t-76.5 -87t-119 -52t-154.5 -17q-127 0 -220.5 39t-144.5 105 l97 76q32 -35 66.5 -56.5t69 -33.5t67 -16.5t61.5 -4.5q67 0 113.5 11t76 32t43 52t13.5 71q0 32 -13 59t-46.5 56.5t-92 66t-149.5 88.5q-75 42 -137 84t-106.5 86.5t-68.5 92.5t-24 104zM246 551q0 -40 21.5 -75.5t65 -72t109 -77t154.5 -90.5q62 38 104.5 69t69 60 t38 58.5t11.5 65.5q0 41 -18 75.5t-58.5 71.5t-106.5 79t-163 98q-47 -29 -88.5 -59t-72 -61.5t-48.5 -66.5t-18 -75z" />
<glyph unicode="&#xa8;" horiz-adv-x="1106" d="M281 1300q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM651 1300q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xa9;" horiz-adv-x="1882" d="M135 610q0 115 29 219.5t81 193.5t126 161t163 123t192 78.5t214 27.5q116 0 220.5 -28.5t193.5 -81t161 -126t122.5 -162.5t78 -191.5t27.5 -213.5q0 -116 -28.5 -220.5t-81 -194.5t-125.5 -162.5t-162.5 -123.5t-192 -78.5t-213.5 -27.5q-115 0 -219.5 29t-194 81.5 t-162 126t-123.5 163t-78.5 192.5t-27.5 215zM242 610q0 -98 24.5 -188t70 -168.5t109 -143t141 -110.5t167 -71t186.5 -25t186.5 25.5t167 71.5t141 110.5t109 143t70 168.5t24.5 187q0 145 -54.5 273t-149 223.5t-221.5 151t-273 55.5q-97 0 -186.5 -25t-167 -70.5 t-141 -109.5t-109 -142t-70 -168t-24.5 -188zM584 612q0 214 92 329.5t280 115.5q61 0 110.5 -15t88 -39.5t65.5 -57t44 -66.5l-95 -58q-13 26 -31 51t-43.5 44t-60 30.5t-80.5 11.5q-70 0 -118.5 -22.5t-79 -66.5t-44.5 -108.5t-14 -148.5q0 -86 14 -150.5t44.5 -107.5 t79 -64.5t116.5 -21.5q45 0 81 11.5t64 32t49 47.5t36 59l94 -53q-18 -38 -45.5 -73t-66 -62t-90 -43.5t-118.5 -16.5q-188 0 -280 109t-92 333z" />
<glyph unicode="&#xaa;" horiz-adv-x="754" d="M92 905q0 66 21.5 109t57 69t81.5 38.5t94 17.5l178 12v31q0 76 -40 107.5t-132 31.5q-36 0 -63.5 -7.5t-48 -19.5t-35 -27.5t-23.5 -31.5l-84 51q16 26 38.5 49t53.5 40.5t71.5 27.5t92.5 10q73 0 125 -12.5t85.5 -41t49 -75t15.5 -113.5v-460h-105v88 q-25 -21 -51.5 -40.5t-55 -34t-59 -23.5t-63.5 -9q-52 0 -90.5 15.5t-63.5 44t-37 67.5t-12 86zM201 907q0 -62 25 -92.5t91 -30.5q28 0 55.5 11t53.5 28t51 36.5t47 37.5v168l-139 -12q-91 -7 -137.5 -39.5t-46.5 -106.5z" />
<glyph unicode="&#xab;" horiz-adv-x="1118" d="M76 524l381 471h145l-381 -471l381 -471h-145zM524 524l379 471h146l-379 -471l379 -471h-146z" />
<glyph unicode="&#xac;" horiz-adv-x="1427" d="M178 815v111h1069v-566h-108v455h-961z" />
<glyph unicode="&#xad;" horiz-adv-x="848" d="M113 463v127h622v-127h-622z" />
<glyph unicode="&#xae;" horiz-adv-x="1882" d="M135 610q0 115 29 219.5t81 193.5t126 161t163 123t192 78.5t214 27.5q116 0 220.5 -28.5t193.5 -81t161 -126t122.5 -162.5t78 -191.5t27.5 -213.5q0 -116 -28.5 -220.5t-81 -194.5t-125.5 -162.5t-162.5 -123.5t-192 -78.5t-213.5 -27.5q-115 0 -219.5 29t-194 81.5 t-162 126t-123.5 163t-78.5 192.5t-27.5 215zM242 610q0 -98 24.5 -188t70 -168.5t109 -143t141 -110.5t167 -71t186.5 -25t186.5 25.5t167 71.5t141 110.5t109 143t70 168.5t24.5 187q0 145 -54.5 273t-149 223.5t-221.5 151t-273 55.5q-97 0 -186.5 -25t-167 -70.5 t-141 -109.5t-109 -142t-70 -168t-24.5 -188zM668 201v850h264q74 0 130 -13t93.5 -42t56.5 -75t19 -112q0 -57 -13.5 -99t-37.5 -71.5t-58 -48t-75 -27.5l231 -362h-131l-219 350h-150v-350h-110zM778 647h156q49 0 83.5 8.5t56 27t31 49t9.5 75.5q0 81 -44 114t-142 33 h-150v-307z" />
<glyph unicode="&#xaf;" horiz-adv-x="1106" d="M262 1255v111h580v-111h-580z" />
<glyph unicode="&#xb0;" horiz-adv-x="862" d="M166 1241q0 54 21 102t57 83.5t84 56t102 20.5q56 0 104.5 -21t84.5 -56.5t56.5 -83t20.5 -101.5q0 -56 -21.5 -105t-57.5 -85t-84 -57t-101 -21q-54 0 -102.5 21t-85 57t-57.5 85t-21 105zM264 1241q0 -35 13 -66t35.5 -54t53.5 -36.5t66 -13.5t65.5 13.5t53 36t35 53 t12.5 65.5q0 34 -12.5 64.5t-35 53t-53 35.5t-65.5 13q-36 0 -67 -13.5t-53.5 -36t-35 -52.5t-12.5 -62z" />
<glyph unicode="&#xb1;" horiz-adv-x="1427" d="M178 0v111h1069v-111h-1069zM178 799v110h477v477h111v-477h481v-110h-481v-482h-111v482h-477z" />
<glyph unicode="&#xb2;" horiz-adv-x="883" d="M121 1360q17 28 42 57t62.5 52.5t88.5 38t120 14.5q66 0 122 -13.5t97.5 -42t64.5 -73.5t23 -109q0 -46 -12 -85t-30.5 -71t-41 -57t-43.5 -43q-71 -60 -151 -122.5t-180 -133.5h491v-102h-649v106q42 31 88 66.5t90.5 70.5t84 68t67.5 59q47 37 77.5 67t48 57.5 t24.5 55.5t7 62q0 66 -44 101.5t-138 35.5q-78 0 -127.5 -32.5t-83.5 -88.5z" />
<glyph unicode="&#xb3;" horiz-adv-x="883" d="M102 782l97 62q35 -47 90.5 -74t113.5 -27q106 0 156.5 43.5t50.5 124.5q0 75 -46.5 112.5t-155.5 37.5h-93v100h80q105 0 154 38t49 97q0 57 -43.5 91t-134.5 34q-72 0 -123 -25t-92 -83l-96 57q19 31 47 58.5t66.5 48.5t88.5 33t113 12q80 0 137.5 -17t94 -46t54 -68.5 t17.5 -85.5q0 -65 -38 -114.5t-114 -72.5q75 -21 119.5 -75t44.5 -136q0 -129 -87.5 -196.5t-243.5 -67.5q-43 0 -87.5 8.5t-85 25.5t-75 43.5t-58.5 61.5z" />
<glyph unicode="&#xb4;" horiz-adv-x="1106" d="M455 1208l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xb5;" horiz-adv-x="1141" d="M166 -395v1444h131v-832q51 -59 117.5 -92t146.5 -33q76 0 146 42t129 120v795h131v-1049h-121l-10 123q-28 -35 -57.5 -63t-63.5 -48.5t-72.5 -31.5t-83.5 -11q-40 0 -74.5 5t-66 16.5t-61 30t-60.5 45.5v-461h-131z" />
<glyph unicode="&#xb6;" horiz-adv-x="1225" d="M68 1079q0 94 35 169.5t97 129t146.5 82.5t183.5 29h623v-107h-195v-1777h-122v1777h-211v-1777h-123v1059q-75 0 -152 23t-139.5 72.5t-102.5 128.5t-40 191z" />
<glyph unicode="&#xb7;" d="M172 745q0 50 22 71.5t74 21.5q54 0 77.5 -21.5t23.5 -71.5q0 -52 -25 -72t-76 -20q-55 0 -75.5 24.5t-20.5 67.5z" />
<glyph unicode="&#xb8;" horiz-adv-x="1106" d="M266 -348l39 80q18 -7 40.5 -13.5t47.5 -12t51 -8.5t52 -3q68 0 102.5 25t34.5 71q0 29 -14 50t-39 35.5t-59.5 22t-76.5 9.5l56 106h86l-25 -49q90 -18 133 -63.5t43 -114.5q0 -45 -18.5 -79.5t-51.5 -57t-77.5 -34t-95.5 -11.5q-32 0 -66 4.5t-65.5 11t-57 15 t-39.5 16.5z" />
<glyph unicode="&#xb9;" horiz-adv-x="883" d="M182 1249v88q61 2 106.5 15t78.5 35.5t53.5 52.5t30.5 67h92v-837h-119v649q-42 -34 -104.5 -52t-137.5 -18z" />
<glyph unicode="&#xba;" horiz-adv-x="817" d="M106 1051q0 78 16 144.5t52 115t94 75.5t142 27q82 0 139 -28t92.5 -76.5t51.5 -115t16 -142.5q0 -77 -16 -142.5t-51.5 -113.5t-92.5 -75.5t-139 -27.5q-83 0 -141 27.5t-94 75.5t-52.5 113.5t-16.5 142.5zM217 1051q0 -54 7 -102.5t27.5 -85t58 -58t98.5 -21.5 q60 0 97.5 21.5t58.5 58t28.5 85t7.5 102.5t-7.5 102.5t-28.5 86t-58.5 59.5t-97.5 22q-62 0 -99.5 -22t-57.5 -59.5t-27 -86t-7 -102.5z" />
<glyph unicode="&#xbb;" horiz-adv-x="1118" d="M70 53l379 471l-379 471h145l379 -471l-379 -471h-145zM516 53l381 471l-381 471h146l380 -471l-380 -471h-146z" />
<glyph unicode="&#xbc;" horiz-adv-x="1870" d="M171 1133v88q61 2 106.5 15t78.5 35.5t53.5 52.5t30.5 67h92v-837h-119v649q-42 -34 -104.5 -52t-137.5 -18zM457 -51l801 1487h122l-804 -1487h-119zM1028 185v96l495 549h95v-547h133v-98h-133v-190h-119v190h-471zM1165 283h334v371z" />
<glyph unicode="&#xbd;" horiz-adv-x="1870" d="M97 1133v88q61 2 106.5 15t78.5 35.5t53.5 52.5t30.5 67h92v-837h-119v649q-42 -34 -104.5 -52t-137.5 -18zM373 -51l801 1487h122l-804 -1487h-119zM1094 683q17 28 42 57t62.5 52.5t88.5 38t120 14.5q66 0 122 -13.5t97.5 -42t64.5 -73.5t23 -109q0 -46 -12 -85 t-30.5 -71t-41 -57t-43.5 -43q-71 -60 -151 -122.5t-180 -133.5h491v-102h-649v106q42 31 88 66.5t90.5 70.5t84 68t67.5 59q47 37 77.5 67t48 57.5t24.5 55.5t7 62q0 66 -44 101.5t-138 35.5q-78 0 -127.5 -32.5t-83.5 -88.5z" />
<glyph unicode="&#xbe;" horiz-adv-x="1870" d="M133 666l97 62q35 -47 90.5 -74t113.5 -27q106 0 156.5 43.5t50.5 124.5q0 75 -46.5 112.5t-155.5 37.5h-93v100h80q105 0 154 38t49 97q0 57 -43.5 91t-134.5 34q-72 0 -123 -25t-92 -83l-96 57q19 31 47 58.5t66.5 48.5t88.5 33t113 12q80 0 137.5 -17t94 -46t54 -68.5 t17.5 -85.5q0 -65 -38 -114.5t-114 -72.5q75 -21 119.5 -75t44.5 -136q0 -129 -87.5 -196.5t-243.5 -67.5q-43 0 -87.5 8.5t-85 25.5t-75 43.5t-58.5 61.5zM561 -51l801 1487h122l-804 -1487h-119zM1088 183v96l495 549h95v-547h133v-98h-133v-190h-119v190h-471zM1225 281 h334v371z" />
<glyph unicode="&#xbf;" horiz-adv-x="1036" d="M127 -27q0 89 29 160t83 132t130.5 115t171.5 109v218h131v-275q-115 -65 -192.5 -118.5t-124 -105t-66 -105.5t-19.5 -121q0 -121 74 -188.5t217 -67.5q58 0 103.5 11.5t80 30.5t58.5 44t39 51l108 -72q-21 -38 -56.5 -72t-84 -59.5t-110 -40t-136.5 -14.5 q-93 0 -173 22t-138.5 67.5t-91.5 114.5t-33 164zM504 983q0 53 25 72.5t77 19.5q58 0 79.5 -24.5t21.5 -67.5q0 -49 -23.5 -70.5t-77.5 -21.5q-57 0 -79.5 21.5t-22.5 70.5z" />
<glyph unicode="&#xc0;" horiz-adv-x="1264" d="M63 0l480 1384h174l483 -1384h-147l-135 399h-578l-135 -399h-142zM371 1905h176l186 -361h-104zM381 522h493l-247 731z" />
<glyph unicode="&#xc1;" horiz-adv-x="1264" d="M63 0l480 1384h174l483 -1384h-147l-135 399h-578l-135 -399h-142zM381 522h493l-247 731zM535 1544l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xc2;" horiz-adv-x="1264" d="M63 0l480 1384h174l483 -1384h-147l-135 399h-578l-135 -399h-142zM314 1544l229 361h168l229 -361h-110l-203 265l-203 -265h-110zM381 522h493l-247 731z" />
<glyph unicode="&#xc3;" horiz-adv-x="1264" d="M63 0l480 1384h174l483 -1384h-147l-135 399h-578l-135 -399h-142zM266 1550q5 118 60 177t149 59q37 0 68 -10.5t57 -26.5t49 -34.5t45 -34.5t44.5 -26.5t48.5 -10.5q51 0 77 32t31 101h94q-3 -115 -58.5 -174.5t-149.5 -59.5q-43 0 -74.5 11t-56.5 27t-45.5 35 t-41.5 35t-44.5 27t-53.5 11q-51 0 -75 -34t-29 -104h-95zM381 522h493l-247 731z" />
<glyph unicode="&#xc4;" horiz-adv-x="1264" d="M63 0l480 1384h174l483 -1384h-147l-135 399h-578l-135 -399h-142zM357 1636q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM381 522h493l-247 731zM727 1636q0 45 18.5 67t69.5 22 q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xc5;" horiz-adv-x="1264" d="M63 0l480 1384h174l483 -1384h-147l-135 399h-578l-135 -399h-142zM381 522h493l-247 731zM449 1677q0 39 10.5 72.5t32.5 57.5t56 37.5t81 13.5q94 0 138 -49.5t44 -131.5q0 -40 -11 -73t-33.5 -57t-56.5 -37t-81 -13q-49 0 -83.5 14t-56 38.5t-31 57t-9.5 70.5z M529 1677q0 -46 22 -75t78 -29q54 0 77 27.5t23 76.5q0 103 -100 103q-48 0 -74 -26.5t-26 -76.5z" />
<glyph unicode="&#xc6;" horiz-adv-x="1714" d="M57 0l521 1384h999v-122h-623v-467h555v-123h-555v-549h623v-123h-758v393h-477l-145 -393h-140zM387 516h432v746h-157z" />
<glyph unicode="&#xc7;" horiz-adv-x="1315" d="M145 692q0 176 34 310.5t105 226t180.5 138t260.5 46.5q97 0 173 -19t133.5 -54t100 -84t74.5 -109l-116 -74q-26 48 -58 87.5t-75.5 68.5t-100 45t-131.5 16q-118 0 -201 -39.5t-135 -116t-76 -187.5t-24 -255t24 -255t77 -187.5t137 -116t204 -39.5q84 0 145.5 20 t105.5 52t74.5 71.5t53.5 79.5l115 -71q-32 -58 -73 -107t-96.5 -86t-129.5 -58.5t-172 -23.5v-2q89 -18 132.5 -63.5t43.5 -114.5q0 -45 -19 -79.5t-52 -57t-77.5 -34t-95.5 -11.5q-32 0 -65.5 4.5t-64.5 11t-56.5 15t-40.5 16.5l39 80q37 -14 88 -25.5t102 -11.5 q69 0 103 25t34 71q0 29 -13.5 50t-38.5 35.5t-59 22t-75 9.5l31 61q-271 19 -398 199.5t-127 519.5z" />
<glyph unicode="&#xc8;" horiz-adv-x="1155" d="M199 0v1384h819v-122h-684v-467h588v-123h-588v-549h684v-123h-819zM357 1905h176l186 -361h-104z" />
<glyph unicode="&#xc9;" horiz-adv-x="1155" d="M199 0v1384h819v-122h-684v-467h588v-123h-588v-549h684v-123h-819zM498 1544l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xca;" horiz-adv-x="1155" d="M199 0v1384h819v-122h-684v-467h588v-123h-588v-549h684v-123h-819zM291 1544l229 361h168l229 -361h-110l-203 265l-203 -265h-110z" />
<glyph unicode="&#xcb;" horiz-adv-x="1155" d="M199 0v1384h819v-122h-684v-467h588v-123h-588v-549h684v-123h-819zM330 1636q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM700 1636q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68 q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xcc;" horiz-adv-x="719" d="M91 1905h176l186 -361h-104zM102 0v119h189v1147h-189v118h514v-118h-190v-1147h190v-119h-514z" />
<glyph unicode="&#xcd;" horiz-adv-x="719" d="M102 0v119h189v1147h-189v118h514v-118h-190v-1147h190v-119h-514zM280 1544l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xce;" horiz-adv-x="719" d="M48 1544l229 361h168l229 -361h-110l-203 265l-203 -265h-110zM102 0v119h189v1147h-189v118h514v-118h-190v-1147h190v-119h-514z" />
<glyph unicode="&#xcf;" horiz-adv-x="719" d="M92 1636q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM102 0v119h189v1147h-189v118h514v-118h-190v-1147h190v-119h-514zM462 1636q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68 q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xd0;" horiz-adv-x="1325" d="M63 641v109h130v634h331q169 0 293.5 -35t206 -116t121 -213.5t39.5 -327.5q0 -203 -43 -336.5t-127 -212.5t-207 -111t-283 -32h-331v641h-130zM328 123h184q142 0 242.5 28.5t164 95.5t92.5 176.5t29 270.5q0 157 -28 265.5t-91 176t-163.5 97t-245.5 29.5h-184v-512 h338v-109h-338v-518z" />
<glyph unicode="&#xd1;" horiz-adv-x="1374" d="M199 0v1384h196l647 -1165v1165h134v-1384h-160l-686 1235v-1235h-131zM315 1570q5 118 60 177t149 59q37 0 68 -10.5t57 -26.5t49 -34.5t45 -34.5t44.5 -26.5t48.5 -10.5q51 0 77 32t31 101h94q-3 -115 -58.5 -174.5t-149.5 -59.5q-43 0 -74.5 11t-56.5 27t-45.5 35 t-41.5 35t-44.5 27t-53.5 11q-51 0 -75 -34t-29 -104h-95z" />
<glyph unicode="&#xd2;" horiz-adv-x="1364" d="M135 692q0 166 29.5 299.5t94.5 227t169 144t254 50.5t254.5 -50t169.5 -143t94 -226.5t29 -301.5q0 -167 -29 -300.5t-94 -227t-169.5 -143.5t-254.5 -50t-254 50t-169 144t-94.5 227t-29.5 300zM279 692q0 -144 21 -255t68.5 -187.5t124.5 -116t189 -39.5 q111 0 188 39.5t124 115.5t68 187.5t21 255.5t-21 255.5t-68 187.5t-124 115.5t-188 39.5q-112 0 -189 -39t-124.5 -115t-68.5 -187.5t-21 -256.5zM461 1905h176l186 -361h-104z" />
<glyph unicode="&#xd3;" horiz-adv-x="1364" d="M135 692q0 166 29.5 299.5t94.5 227t169 144t254 50.5t254.5 -50t169.5 -143t94 -226.5t29 -301.5q0 -167 -29 -300.5t-94 -227t-169.5 -143.5t-254.5 -50t-254 50t-169 144t-94.5 227t-29.5 300zM279 692q0 -144 21 -255t68.5 -187.5t124.5 -116t189 -39.5 q111 0 188 39.5t124 115.5t68 187.5t21 255.5t-21 255.5t-68 187.5t-124 115.5t-188 39.5q-112 0 -189 -39t-124.5 -115t-68.5 -187.5t-21 -256.5zM586 1544l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xd4;" horiz-adv-x="1364" d="M135 692q0 166 29.5 299.5t94.5 227t169 144t254 50.5t254.5 -50t169.5 -143t94 -226.5t29 -301.5q0 -167 -29 -300.5t-94 -227t-169.5 -143.5t-254.5 -50t-254 50t-169 144t-94.5 227t-29.5 300zM279 692q0 -144 21 -255t68.5 -187.5t124.5 -116t189 -39.5 q111 0 188 39.5t124 115.5t68 187.5t21 255.5t-21 255.5t-68 187.5t-124 115.5t-188 39.5q-112 0 -189 -39t-124.5 -115t-68.5 -187.5t-21 -256.5zM369 1544l229 361h168l229 -361h-110l-203 265l-203 -265h-110z" />
<glyph unicode="&#xd5;" horiz-adv-x="1364" d="M135 692q0 166 29.5 299.5t94.5 227t169 144t254 50.5t254.5 -50t169.5 -143t94 -226.5t29 -301.5q0 -167 -29 -300.5t-94 -227t-169.5 -143.5t-254.5 -50t-254 50t-169 144t-94.5 227t-29.5 300zM279 692q0 -144 21 -255t68.5 -187.5t124.5 -116t189 -39.5 q111 0 188 39.5t124 115.5t68 187.5t21 255.5t-21 255.5t-68 187.5t-124 115.5t-188 39.5q-112 0 -189 -39t-124.5 -115t-68.5 -187.5t-21 -256.5zM321 1550q5 118 60 177t149 59q37 0 68 -10.5t57 -26.5t49 -34.5t45 -34.5t44.5 -26.5t48.5 -10.5q51 0 77 32t31 101h94 q-3 -115 -58.5 -174.5t-149.5 -59.5q-43 0 -74.5 11t-56.5 27t-45.5 35t-41.5 35t-44.5 27t-53.5 11q-51 0 -75 -34t-29 -104h-95z" />
<glyph unicode="&#xd6;" horiz-adv-x="1364" d="M135 692q0 166 29.5 299.5t94.5 227t169 144t254 50.5t254.5 -50t169.5 -143t94 -226.5t29 -301.5q0 -167 -29 -300.5t-94 -227t-169.5 -143.5t-254.5 -50t-254 50t-169 144t-94.5 227t-29.5 300zM279 692q0 -144 21 -255t68.5 -187.5t124.5 -116t189 -39.5 q111 0 188 39.5t124 115.5t68 187.5t21 255.5t-21 255.5t-68 187.5t-124 115.5t-188 39.5q-112 0 -189 -39t-124.5 -115t-68.5 -187.5t-21 -256.5zM412 1636q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5 t-3.5 36.5zM782 1636q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xd7;" horiz-adv-x="1427" d="M242 197l391 391l-391 393l80 78l389 -393l391 393l78 -78l-392 -393l392 -391l-78 -78l-391 391l-389 -391z" />
<glyph unicode="&#xd8;" horiz-adv-x="1364" d="M63 -115l195 281q-66 93 -94.5 225.5t-28.5 300.5q0 166 29.5 299.5t94.5 227t169 144t254 50.5q118 0 206.5 -31t151.5 -90l140 197h116l-190 -272q65 -94 94 -226t29 -299t-29 -300.5t-94 -227t-169.5 -143.5t-254.5 -50q-118 0 -206.5 30.5t-151.5 90.5l-144 -207 h-117zM279 692q0 -127 16 -226.5t51 -174.5l617 887q-48 55 -117.5 83.5t-163.5 28.5q-112 0 -189 -39t-124.5 -115t-68.5 -187.5t-21 -256.5zM401 205q51 -56 118 -83.5t163 -27.5q111 0 188 39.5t124 115.5t68 187.5t21 255.5q0 124 -16 222.5t-51 172.5z" />
<glyph unicode="&#xd9;" horiz-adv-x="1378" d="M193 578v806h135v-786q0 -144 17 -241t59 -156.5t111.5 -85t174.5 -25.5q106 0 175.5 25.5t110 85t57 156t16.5 237.5v790h135v-806q0 -170 -26 -286.5t-84.5 -188t-152.5 -103t-229 -31.5q-141 0 -237 32.5t-154 105t-83 188.5t-25 283zM445 1905h176l186 -361h-104z " />
<glyph unicode="&#xda;" horiz-adv-x="1378" d="M193 578v806h135v-786q0 -144 17 -241t59 -156.5t111.5 -85t174.5 -25.5q106 0 175.5 25.5t110 85t57 156t16.5 237.5v790h135v-806q0 -170 -26 -286.5t-84.5 -188t-152.5 -103t-229 -31.5q-141 0 -237 32.5t-154 105t-83 188.5t-25 283zM607 1544l186 361h178l-260 -361 h-104z" />
<glyph unicode="&#xdb;" horiz-adv-x="1378" d="M193 578v806h135v-786q0 -144 17 -241t59 -156.5t111.5 -85t174.5 -25.5q106 0 175.5 25.5t110 85t57 156t16.5 237.5v790h135v-806q0 -170 -26 -286.5t-84.5 -188t-152.5 -103t-229 -31.5q-141 0 -237 32.5t-154 105t-83 188.5t-25 283zM379 1544l229 361h168l229 -361 h-110l-203 265l-203 -265h-110z" />
<glyph unicode="&#xdc;" horiz-adv-x="1378" d="M193 578v806h135v-786q0 -144 17 -241t59 -156.5t111.5 -85t174.5 -25.5q106 0 175.5 25.5t110 85t57 156t16.5 237.5v790h135v-806q0 -170 -26 -286.5t-84.5 -188t-152.5 -103t-229 -31.5q-141 0 -237 32.5t-154 105t-83 188.5t-25 283zM420 1636q0 45 18.5 67t69.5 22 q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM790 1636q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xdd;" horiz-adv-x="1126" d="M51 1384h150l362 -720l367 720h145l-444 -847v-537h-137v530zM480 1544l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xde;" horiz-adv-x="1153" d="M199 0v1384h135v-223h248q238 0 350 -107.5t112 -322.5q0 -127 -29 -215.5t-88.5 -144t-149.5 -80.5t-212 -25h-231v-266h-135zM334 389h209q93 0 160 15t110 53t63.5 103t20.5 165q0 91 -22 151t-64 96t-103 51t-139 15h-235v-649z" />
<glyph unicode="&#xdf;" horiz-adv-x="1149" d="M182 0v1040q0 103 14.5 191t56 152t115 100.5t191.5 36.5q81 0 147 -18.5t112.5 -58t71.5 -100.5t25 -145t-20 -143.5t-56 -99.5t-85.5 -60.5t-108.5 -26.5q186 -15 280.5 -121.5t94.5 -295.5q0 -102 -20.5 -190.5t-67 -153t-122 -101.5t-185.5 -37q-50 0 -102.5 9.5 t-100.5 23.5v123q46 -20 100.5 -31.5t98.5 -11.5q73 0 123 26t81.5 74.5t45.5 118.5t14 158q0 96 -27 161t-82 105t-137 57t-193 17v114q85 0 149 14t106.5 46t63.5 84.5t21 130.5q0 111 -55 165t-176 54q-71 0 -118 -22t-75 -66.5t-39.5 -112t-11.5 -157.5v-1049h-129z" />
<glyph unicode="&#xe0;" horiz-adv-x="1079" d="M121 295q0 82 24 143t75 103.5t130.5 67.5t190.5 36l235 23v53q0 66 -15 112.5t-47.5 76.5t-83 43.5t-120.5 13.5q-59 0 -102.5 -10.5t-75 -28t-52.5 -40.5t-36 -48l-103 63q22 36 52.5 68t75 56t104 38t139.5 14q106 0 180.5 -20t122 -63.5t69 -113t21.5 -169.5v-713 h-129v152q-45 -39 -87 -72.5t-85.5 -58t-90 -38.5t-99.5 -14q-74 0 -129 22.5t-91.5 65t-54.5 103t-18 135.5zM254 299q0 -114 46 -165.5t144 -51.5q37 0 72.5 11t74.5 33.5t84 58t101 83.5v293l-188 -18q-90 -9 -153.5 -25.5t-103.5 -45t-58.5 -71t-18.5 -102.5zM288 1569 h176l186 -361h-104z" />
<glyph unicode="&#xe1;" horiz-adv-x="1079" d="M121 295q0 82 24 143t75 103.5t130.5 67.5t190.5 36l235 23v53q0 66 -15 112.5t-47.5 76.5t-83 43.5t-120.5 13.5q-59 0 -102.5 -10.5t-75 -28t-52.5 -40.5t-36 -48l-103 63q22 36 52.5 68t75 56t104 38t139.5 14q106 0 180.5 -20t122 -63.5t69 -113t21.5 -169.5v-713 h-129v152q-45 -39 -87 -72.5t-85.5 -58t-90 -38.5t-99.5 -14q-74 0 -129 22.5t-91.5 65t-54.5 103t-18 135.5zM254 299q0 -114 46 -165.5t144 -51.5q37 0 72.5 11t74.5 33.5t84 58t101 83.5v293l-188 -18q-90 -9 -153.5 -25.5t-103.5 -45t-58.5 -71t-18.5 -102.5zM419 1208 l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xe2;" horiz-adv-x="1079" d="M121 295q0 82 24 143t75 103.5t130.5 67.5t190.5 36l235 23v53q0 66 -15 112.5t-47.5 76.5t-83 43.5t-120.5 13.5q-59 0 -102.5 -10.5t-75 -28t-52.5 -40.5t-36 -48l-103 63q22 36 52.5 68t75 56t104 38t139.5 14q106 0 180.5 -20t122 -63.5t69 -113t21.5 -169.5v-713 h-129v152q-45 -39 -87 -72.5t-85.5 -58t-90 -38.5t-99.5 -14q-74 0 -129 22.5t-91.5 65t-54.5 103t-18 135.5zM204 1208l229 361h168l229 -361h-110l-203 265l-203 -265h-110zM254 299q0 -114 46 -165.5t144 -51.5q37 0 72.5 11t74.5 33.5t84 58t101 83.5v293l-188 -18 q-90 -9 -153.5 -25.5t-103.5 -45t-58.5 -71t-18.5 -102.5z" />
<glyph unicode="&#xe3;" horiz-adv-x="1079" d="M121 295q0 82 24 143t75 103.5t130.5 67.5t190.5 36l235 23v53q0 66 -15 112.5t-47.5 76.5t-83 43.5t-120.5 13.5q-59 0 -102.5 -10.5t-75 -28t-52.5 -40.5t-36 -48l-103 63q22 36 52.5 68t75 56t104 38t139.5 14q106 0 180.5 -20t122 -63.5t69 -113t21.5 -169.5v-713 h-129v152q-45 -39 -87 -72.5t-85.5 -58t-90 -38.5t-99.5 -14q-74 0 -129 22.5t-91.5 65t-54.5 103t-18 135.5zM162 1214q5 118 60 177t149 59q37 0 68 -10.5t57 -26.5t49 -34.5t45 -34.5t44.5 -26.5t48.5 -10.5q51 0 77 32t31 101h94q-3 -115 -58.5 -174.5t-149.5 -59.5 q-43 0 -74.5 11t-56.5 27t-45.5 35t-41.5 35t-44.5 27t-53.5 11q-51 0 -75 -34t-29 -104h-95zM254 299q0 -114 46 -165.5t144 -51.5q37 0 72.5 11t74.5 33.5t84 58t101 83.5v293l-188 -18q-90 -9 -153.5 -25.5t-103.5 -45t-58.5 -71t-18.5 -102.5z" />
<glyph unicode="&#xe4;" horiz-adv-x="1079" d="M121 295q0 82 24 143t75 103.5t130.5 67.5t190.5 36l235 23v53q0 66 -15 112.5t-47.5 76.5t-83 43.5t-120.5 13.5q-59 0 -102.5 -10.5t-75 -28t-52.5 -40.5t-36 -48l-103 63q22 36 52.5 68t75 56t104 38t139.5 14q106 0 180.5 -20t122 -63.5t69 -113t21.5 -169.5v-713 h-129v152q-45 -39 -87 -72.5t-85.5 -58t-90 -38.5t-99.5 -14q-74 0 -129 22.5t-91.5 65t-54.5 103t-18 135.5zM241 1300q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM254 299 q0 -114 46 -165.5t144 -51.5q37 0 72.5 11t74.5 33.5t84 58t101 83.5v293l-188 -18q-90 -9 -153.5 -25.5t-103.5 -45t-58.5 -71t-18.5 -102.5zM611 1300q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xe5;" horiz-adv-x="1079" d="M121 295q0 82 24 143t75 103.5t130.5 67.5t190.5 36l235 23v53q0 66 -15 112.5t-47.5 76.5t-83 43.5t-120.5 13.5q-59 0 -102.5 -10.5t-75 -28t-52.5 -40.5t-36 -48l-103 63q22 36 52.5 68t75 56t104 38t139.5 14q106 0 180.5 -20t122 -63.5t69 -113t21.5 -169.5v-713 h-129v152q-45 -39 -87 -72.5t-85.5 -58t-90 -38.5t-99.5 -14q-74 0 -129 22.5t-91.5 65t-54.5 103t-18 135.5zM254 299q0 -114 46 -165.5t144 -51.5q37 0 72.5 11t74.5 33.5t84 58t101 83.5v293l-188 -18q-90 -9 -153.5 -25.5t-103.5 -45t-58.5 -71t-18.5 -102.5zM329 1339 q0 39 10.5 72.5t32.5 57.5t56 37.5t81 13.5q94 0 138 -49.5t44 -131.5q0 -40 -11 -73t-33.5 -57t-56.5 -37t-81 -13q-49 0 -83.5 14t-56 38.5t-31 57t-9.5 70.5zM409 1339q0 -46 22 -75t78 -29q54 0 77 27.5t23 76.5q0 103 -100 103q-48 0 -74 -26.5t-26 -76.5z" />
<glyph unicode="&#xe6;" horiz-adv-x="1694" d="M121 299q0 84 25.5 144t77.5 101t130.5 64.5t184.5 32.5l237 21v59q0 69 -18 116t-53 76t-86 41.5t-117 12.5q-101 0 -163.5 -36.5t-94.5 -92.5l-103 63q25 40 56.5 73t75 56t102 36t137.5 13q63 0 118 -9.5t100 -30.5t79 -54.5t55 -81.5q47 81 130 128.5t198 47.5 q108 0 182.5 -32.5t120.5 -93t66 -148t20 -197.5v-84h-676q0 -95 12.5 -176t46 -140.5t91.5 -93.5t149 -34q45 0 81 9.5t66 28t56 45.5t51 62l103 -67q-28 -45 -60.5 -80t-74.5 -59t-96 -37t-124 -13q-127 0 -220 48.5t-142 142.5q-45 -37 -96 -71.5t-106.5 -61t-115 -42.5 t-123.5 -16q-68 0 -120.5 24t-88.5 67.5t-54.5 104.5t-18.5 134zM254 295q0 -109 49.5 -161t134.5 -52q48 0 94 13.5t91 37t90.5 55t91.5 68.5q-16 48 -22.5 125.5t-6.5 173.5l-188 -16q-86 -7 -149 -21.5t-104 -42.5t-61 -71.5t-20 -108.5zM907 629h547q-3 175 -65.5 258.5 t-198.5 83.5q-62 0 -112 -20.5t-87 -62.5t-58.5 -106.5t-25.5 -152.5z" />
<glyph unicode="&#xe7;" horiz-adv-x="1016" d="M129 520q0 128 24.5 231.5t77 176t135 112t199.5 39.5q124 0 207.5 -49t140.5 -151l-106 -64q-21 37 -44.5 65t-53 47.5t-66.5 29.5t-84 10q-155 0 -226 -114t-71 -337q0 -98 15.5 -178t51 -137.5t94 -89t144.5 -31.5q49 0 86.5 10.5t67.5 30.5t54 48.5t46 63.5l105 -65 q-48 -89 -128 -142t-206 -57l-2 -4q90 -17 133 -61t43 -113q0 -45 -19 -79.5t-52 -58t-77.5 -35t-95.5 -11.5q-32 0 -65.5 4.5t-64.5 11.5t-56.5 15.5t-40.5 17.5l39 78q37 -14 88 -25.5t102 -11.5q69 0 103.5 26t34.5 72q0 28 -14 49t-38.5 34.5t-59 20.5t-75.5 9l31 65 q-105 10 -177.5 55t-116.5 117t-63.5 168t-19.5 207z" />
<glyph unicode="&#xe8;" horiz-adv-x="1051" d="M129 516q0 133 23 237.5t73.5 177t131 110.5t196.5 38q102 0 175 -32t119.5 -92.5t68.5 -148t22 -198.5v-84h-676q0 -115 14.5 -199t49 -138.5t91.5 -80.5t142 -26q42 0 77 7.5t65.5 25t58.5 45t55 67.5l103 -67q-28 -45 -61.5 -80t-77 -59t-99 -37t-127.5 -13 q-104 0 -183 30t-132.5 95.5t-81 169.5t-27.5 252zM264 629h547q-3 177 -66 259.5t-196 82.5q-69 0 -119.5 -20t-85 -62t-54 -106.5t-26.5 -153.5zM292 1569h176l186 -361h-104z" />
<glyph unicode="&#xe9;" horiz-adv-x="1051" d="M129 516q0 133 23 237.5t73.5 177t131 110.5t196.5 38q102 0 175 -32t119.5 -92.5t68.5 -148t22 -198.5v-84h-676q0 -115 14.5 -199t49 -138.5t91.5 -80.5t142 -26q42 0 77 7.5t65.5 25t58.5 45t55 67.5l103 -67q-28 -45 -61.5 -80t-77 -59t-99 -37t-127.5 -13 q-104 0 -183 30t-132.5 95.5t-81 169.5t-27.5 252zM264 629h547q-3 177 -66 259.5t-196 82.5q-69 0 -119.5 -20t-85 -62t-54 -106.5t-26.5 -153.5zM454 1208l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xea;" horiz-adv-x="1051" d="M129 516q0 133 23 237.5t73.5 177t131 110.5t196.5 38q102 0 175 -32t119.5 -92.5t68.5 -148t22 -198.5v-84h-676q0 -115 14.5 -199t49 -138.5t91.5 -80.5t142 -26q42 0 77 7.5t65.5 25t58.5 45t55 67.5l103 -67q-28 -45 -61.5 -80t-77 -59t-99 -37t-127.5 -13 q-104 0 -183 30t-132.5 95.5t-81 169.5t-27.5 252zM231 1208l229 361h168l229 -361h-110l-203 265l-203 -265h-110zM264 629h547q-3 177 -66 259.5t-196 82.5q-69 0 -119.5 -20t-85 -62t-54 -106.5t-26.5 -153.5z" />
<glyph unicode="&#xeb;" horiz-adv-x="1051" d="M129 516q0 133 23 237.5t73.5 177t131 110.5t196.5 38q102 0 175 -32t119.5 -92.5t68.5 -148t22 -198.5v-84h-676q0 -115 14.5 -199t49 -138.5t91.5 -80.5t142 -26q42 0 77 7.5t65.5 25t58.5 45t55 67.5l103 -67q-28 -45 -61.5 -80t-77 -59t-99 -37t-127.5 -13 q-104 0 -183 30t-132.5 95.5t-81 169.5t-27.5 252zM264 629h547q-3 177 -66 259.5t-196 82.5q-69 0 -119.5 -20t-85 -62t-54 -106.5t-26.5 -153.5zM272 1300q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5 t-3.5 36.5zM642 1300q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xec;" horiz-adv-x="494" d="M-23 1569h176l186 -361h-104zM182 0v1049h129v-1049h-129z" />
<glyph unicode="&#xed;" horiz-adv-x="494" d="M157 1208l186 361h178l-260 -361h-104zM182 0v1049h129v-1049h-129z" />
<glyph unicode="&#xee;" horiz-adv-x="494" d="M-66 1208l229 361h168l229 -361h-110l-203 265l-203 -265h-110zM182 0v1049h129v-1049h-129z" />
<glyph unicode="&#xef;" horiz-adv-x="494" d="M-35 1300q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM182 0v1049h129v-1049h-129zM335 1300q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25 t-17.5 65z" />
<glyph unicode="&#xf0;" horiz-adv-x="1141" d="M129 508q0 137 30 239t85.5 169t133.5 100t173 33q62 0 128.5 -21t123.5 -72q-28 85 -86.5 176.5t-143.5 172.5l-200 -131l-49 71l188 123q-50 50 -103.5 88t-97.5 64h144q15 -8 34 -19.5t38.5 -24.5t38 -27t32.5 -26l145 93l52 -70l-127 -84q81 -77 144.5 -169 t108 -198.5t68 -228.5t23.5 -258q0 -128 -26.5 -228t-80.5 -169t-137 -105.5t-197 -36.5q-117 0 -200.5 37.5t-137 107.5t-79 169.5t-25.5 224.5zM262 508q0 -89 13.5 -167t48.5 -136t94.5 -91.5t152.5 -33.5q91 0 150 33t93.5 91t48.5 136t14 168q0 94 -14 173t-49 135.5 t-94.5 88t-150.5 31.5q-87 0 -145.5 -29.5t-94.5 -85t-51.5 -134.5t-15.5 -179z" />
<glyph unicode="&#xf1;" horiz-adv-x="1137" d="M182 0v1049h129v-166q45 43 90.5 79t92 62t93.5 40.5t95 14.5q84 0 138 -25t86 -73.5t44.5 -119t12.5 -161.5v-700h-129v651q0 88 -8 147t-28 94t-54.5 49.5t-86.5 14.5q-69 0 -160 -51.5t-186 -142.5v-762h-129zM213 1214q5 118 60 177t149 59q37 0 68 -10.5t57 -26.5 t49 -34.5t45 -34.5t44.5 -26.5t48.5 -10.5q51 0 77 32t31 101h94q-3 -115 -58.5 -174.5t-149.5 -59.5q-43 0 -74.5 11t-56.5 27t-45.5 35t-41.5 35t-44.5 27t-53.5 11q-51 0 -75 -34t-29 -104h-95z" />
<glyph unicode="&#xf2;" horiz-adv-x="1141" d="M129 522q0 122 24 224.5t77 176.5t137 115t204 41q117 0 200.5 -39.5t137 -112.5t78.5 -175.5t25 -229.5q0 -125 -24 -226.5t-77 -174.5t-137 -112.5t-203 -39.5t-203 39.5t-137 112.5t-77.5 174.5t-24.5 226.5zM262 522q0 -104 16.5 -186t53 -139t95.5 -87t144 -30 q83 0 141.5 29.5t95 86.5t53 139t16.5 187q0 106 -16 189t-52 140t-94.5 86.5t-143.5 29.5q-86 0 -145 -30.5t-95.5 -88t-52.5 -140t-16 -186.5zM304 1569h176l186 -361h-104z" />
<glyph unicode="&#xf3;" horiz-adv-x="1141" d="M129 522q0 122 24 224.5t77 176.5t137 115t204 41q117 0 200.5 -39.5t137 -112.5t78.5 -175.5t25 -229.5q0 -125 -24 -226.5t-77 -174.5t-137 -112.5t-203 -39.5t-203 39.5t-137 112.5t-77.5 174.5t-24.5 226.5zM262 522q0 -104 16.5 -186t53 -139t95.5 -87t144 -30 q83 0 141.5 29.5t95 86.5t53 139t16.5 187q0 106 -16 189t-52 140t-94.5 86.5t-143.5 29.5q-86 0 -145 -30.5t-95.5 -88t-52.5 -140t-16 -186.5zM461 1208l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xf4;" horiz-adv-x="1141" d="M129 522q0 122 24 224.5t77 176.5t137 115t204 41q117 0 200.5 -39.5t137 -112.5t78.5 -175.5t25 -229.5q0 -125 -24 -226.5t-77 -174.5t-137 -112.5t-203 -39.5t-203 39.5t-137 112.5t-77.5 174.5t-24.5 226.5zM258 1208l229 361h168l229 -361h-110l-203 265l-203 -265 h-110zM262 522q0 -104 16.5 -186t53 -139t95.5 -87t144 -30q83 0 141.5 29.5t95 86.5t53 139t16.5 187q0 106 -16 189t-52 140t-94.5 86.5t-143.5 29.5q-86 0 -145 -30.5t-95.5 -88t-52.5 -140t-16 -186.5z" />
<glyph unicode="&#xf5;" horiz-adv-x="1141" d="M129 522q0 122 24 224.5t77 176.5t137 115t204 41q117 0 200.5 -39.5t137 -112.5t78.5 -175.5t25 -229.5q0 -125 -24 -226.5t-77 -174.5t-137 -112.5t-203 -39.5t-203 39.5t-137 112.5t-77.5 174.5t-24.5 226.5zM208 1214q5 118 60 177t149 59q37 0 68 -10.5t57 -26.5 t49 -34.5t45 -34.5t44.5 -26.5t48.5 -10.5q51 0 77 32t31 101h94q-3 -115 -58.5 -174.5t-149.5 -59.5q-43 0 -74.5 11t-56.5 27t-45.5 35t-41.5 35t-44.5 27t-53.5 11q-51 0 -75 -34t-29 -104h-95zM262 522q0 -104 16.5 -186t53 -139t95.5 -87t144 -30q83 0 141.5 29.5 t95 86.5t53 139t16.5 187q0 106 -16 189t-52 140t-94.5 86.5t-143.5 29.5q-86 0 -145 -30.5t-95.5 -88t-52.5 -140t-16 -186.5z" />
<glyph unicode="&#xf6;" horiz-adv-x="1141" d="M129 522q0 122 24 224.5t77 176.5t137 115t204 41q117 0 200.5 -39.5t137 -112.5t78.5 -175.5t25 -229.5q0 -125 -24 -226.5t-77 -174.5t-137 -112.5t-203 -39.5t-203 39.5t-137 112.5t-77.5 174.5t-24.5 226.5zM262 522q0 -104 16.5 -186t53 -139t95.5 -87t144 -30 q83 0 141.5 29.5t95 86.5t53 139t16.5 187q0 106 -16 189t-52 140t-94.5 86.5t-143.5 29.5q-86 0 -145 -30.5t-95.5 -88t-52.5 -140t-16 -186.5zM299 1300q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5 t-3.5 36.5zM669 1300q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xf7;" horiz-adv-x="1427" d="M178 532v111h1069v-111h-1069zM637 63v144h147v-144h-147zM637 967v143h147v-143h-147z" />
<glyph unicode="&#xf8;" horiz-adv-x="1141" d="M96 -76l137 195q-55 72 -79.5 174t-24.5 229q0 122 24 224.5t77 176.5t137 115t204 41q173 0 277 -92l96 137h113l-146 -204q51 -73 76 -173.5t25 -224.5q0 -125 -24 -226.5t-77 -174.5t-137 -112.5t-203 -39.5q-88 0 -155 21t-117 63l-92 -129h-111zM262 522 q0 -91 11.5 -164t37.5 -129l467 658q-38 42 -89.5 61t-117.5 19q-86 0 -145 -30.5t-95.5 -88t-52.5 -140t-16 -186.5zM369 152q38 -39 87.5 -55.5t114.5 -16.5q83 0 141.5 29.5t95 86.5t53 139t16.5 187q0 87 -10.5 158t-35.5 125z" />
<glyph unicode="&#xf9;" horiz-adv-x="1137" d="M174 348v701h129v-654q0 -88 7.5 -146.5t27 -94t53.5 -50t86 -14.5q71 0 161 52t187 145v762h129v-1049h-129v166q-44 -42 -89.5 -78.5t-92 -62.5t-93 -41t-93.5 -15q-85 0 -139.5 25t-86.5 73.5t-44.5 119t-12.5 161.5zM304 1569h176l186 -361h-104z" />
<glyph unicode="&#xfa;" horiz-adv-x="1137" d="M174 348v701h129v-654q0 -88 7.5 -146.5t27 -94t53.5 -50t86 -14.5q71 0 161 52t187 145v762h129v-1049h-129v166q-44 -42 -89.5 -78.5t-92 -62.5t-93 -41t-93.5 -15q-85 0 -139.5 25t-86.5 73.5t-44.5 119t-12.5 161.5zM482 1208l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xfb;" horiz-adv-x="1137" d="M174 348v701h129v-654q0 -88 7.5 -146.5t27 -94t53.5 -50t86 -14.5q71 0 161 52t187 145v762h129v-1049h-129v166q-44 -42 -89.5 -78.5t-92 -62.5t-93 -41t-93.5 -15q-85 0 -139.5 25t-86.5 73.5t-44.5 119t-12.5 161.5zM256 1208l229 361h168l229 -361h-110l-203 265 l-203 -265h-110z" />
<glyph unicode="&#xfc;" horiz-adv-x="1137" d="M174 348v701h129v-654q0 -88 7.5 -146.5t27 -94t53.5 -50t86 -14.5q71 0 161 52t187 145v762h129v-1049h-129v166q-44 -42 -89.5 -78.5t-92 -62.5t-93 -41t-93.5 -15q-85 0 -139.5 25t-86.5 73.5t-44.5 119t-12.5 161.5zM293 1300q0 45 18.5 67t69.5 22q53 0 71.5 -21.5 t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM663 1300q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#xfd;" horiz-adv-x="1018" d="M4 -365l37 109q25 -14 61 -21.5t70 -7.5q75 0 129 59.5t98 176.5l41 104l-383 994h140l311 -832l315 832h138l-453 -1147q-32 -81 -67.5 -138t-76.5 -92t-89 -51t-105 -16q-21 0 -44.5 2t-46 6t-42 9.5t-33.5 12.5zM415 1208l186 361h178l-260 -361h-104z" />
<glyph unicode="&#xfe;" horiz-adv-x="1151" d="M182 -395v1884h129v-555q31 31 67.5 58t77 46t84.5 30t89 11q106 0 180.5 -42.5t121.5 -116.5t69 -173.5t22 -214.5q0 -123 -25 -226.5t-76 -178.5t-128.5 -116.5t-182.5 -41.5q-77 0 -153.5 34.5t-145.5 100.5v-499h-129zM311 225q69 -65 143.5 -104t145.5 -39 q62 0 115 26t91.5 80.5t60.5 138.5t22 201q0 101 -16.5 182t-51 137.5t-87.5 87t-126 30.5q-80 0 -154.5 -42.5t-142.5 -111.5v-586z" />
<glyph unicode="&#xff;" horiz-adv-x="1018" d="M4 -365l37 109q25 -14 61 -21.5t70 -7.5q75 0 129 59.5t98 176.5l41 104l-383 994h140l311 -832l315 832h138l-453 -1147q-32 -81 -67.5 -138t-76.5 -92t-89 -51t-105 -16q-21 0 -44.5 2t-46 6t-42 9.5t-33.5 12.5zM237 1300q0 45 18.5 67t69.5 22q53 0 71.5 -21.5 t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM607 1300q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#x152;" horiz-adv-x="1835" d="M139 692q0 168 29.5 301.5t98.5 226.5t181.5 143t278.5 50q60 0 115.5 -8t109.5 -21h746v-122h-633v-469h545v-123h-545v-547h633v-123h-744q-51 -14 -108 -21.5t-119 -7.5q-165 0 -277.5 50t-181.5 144t-99 227t-30 300zM285 692q0 -164 26.5 -278.5t81 -186 t138.5 -103.5t198 -32q51 0 104.5 8.5t94.5 24.5v1132q-41 16 -93 25.5t-106 9.5q-122 0 -207 -36t-137.5 -109.5t-76 -187t-23.5 -267.5z" />
<glyph unicode="&#x153;" horiz-adv-x="1792" d="M129 522q0 122 24 224.5t77 176.5t137 115t204 41q135 0 228 -60.5t139 -166.5q45 112 134 169.5t222 57.5q102 0 175 -32t119.5 -92.5t68.5 -148t22 -198.5v-84h-673q-1 -110 12.5 -193t47.5 -139t91.5 -84t145.5 -28q41 0 76 7.5t66 25t58 45t53 67.5l105 -67 q-29 -45 -62.5 -80t-76 -59t-96.5 -37t-123 -13q-134 0 -226 51.5t-139 167.5q-51 -104 -141 -161.5t-226 -57.5q-119 0 -203 39.5t-137 112.5t-77.5 174.5t-24.5 226.5zM262 522q0 -104 16.5 -186t53 -139t95.5 -87t144 -30q86 0 144.5 32t94.5 89.5t51.5 138t15.5 178.5 q0 97 -14 179.5t-49 142.5t-94 93.5t-149 33.5q-86 0 -145 -30.5t-95.5 -88t-52.5 -140t-16 -186.5zM1006 629h546q-2 177 -64.5 259.5t-195.5 82.5q-71 0 -122.5 -20t-86 -61.5t-53.5 -106t-24 -154.5z" />
<glyph unicode="&#x178;" horiz-adv-x="1126" d="M51 1384h150l362 -720l367 720h145l-444 -847v-537h-137v530zM291 1636q0 45 18.5 67t69.5 22q53 0 71.5 -21.5t18.5 -67.5q0 -48 -19.5 -69t-70.5 -21q-27 0 -44 6.5t-27 18.5t-13.5 28.5t-3.5 36.5zM661 1636q0 45 18.5 67t69.5 22q54 0 72 -21t18 -68q0 -48 -19.5 -69 t-70.5 -21q-53 0 -70.5 25t-17.5 65z" />
<glyph unicode="&#x2c6;" horiz-adv-x="1106" d="M240 1208l229 361h168l229 -361h-110l-203 265l-203 -265h-110z" />
<glyph unicode="&#x2dc;" horiz-adv-x="1106" d="M190 1214q5 118 60 177t149 59q37 0 68 -10.5t57 -26.5t49 -34.5t45 -34.5t44.5 -26.5t48.5 -10.5q51 0 77 32t31 101h94q-3 -115 -58.5 -174.5t-149.5 -59.5q-43 0 -74.5 11t-56.5 27t-45.5 35t-41.5 35t-44.5 27t-53.5 11q-51 0 -75 -34t-29 -104h-95z" />
<glyph unicode="&#x2000;" horiz-adv-x="952" />
<glyph unicode="&#x2001;" horiz-adv-x="1905" />
<glyph unicode="&#x2002;" horiz-adv-x="952" />
<glyph unicode="&#x2003;" horiz-adv-x="1905" />
<glyph unicode="&#x2004;" horiz-adv-x="635" />
<glyph unicode="&#x2005;" horiz-adv-x="476" />
<glyph unicode="&#x2006;" horiz-adv-x="317" />
<glyph unicode="&#x2007;" horiz-adv-x="317" />
<glyph unicode="&#x2008;" horiz-adv-x="238" />
<glyph unicode="&#x2009;" horiz-adv-x="381" />
<glyph unicode="&#x200a;" horiz-adv-x="105" />
<glyph unicode="&#x2010;" horiz-adv-x="848" d="M113 463v127h622v-127h-622z" />
<glyph unicode="&#x2011;" horiz-adv-x="848" d="M113 463v127h622v-127h-622z" />
<glyph unicode="&#x2012;" horiz-adv-x="848" d="M113 463v127h622v-127h-622z" />
<glyph unicode="&#x2013;" horiz-adv-x="1106" d="M61 471v111h983v-111h-983z" />
<glyph unicode="&#x2014;" horiz-adv-x="2130" d="M61 471v111h2007v-111h-2007z" />
<glyph unicode="&#x2018;" d="M172 1036q0 53 9 105t23.5 98t33 83.5t36.5 61.5h76q-20 -27 -35 -64.5t-25 -76.5t-15 -75t-5 -60q56 0 77.5 -22.5t21.5 -71.5q0 -47 -22.5 -69.5t-76.5 -22.5q-55 0 -76.5 30t-21.5 84z" />
<glyph unicode="&#x2019;" d="M172 1319q0 48 22 71t74 23q57 0 79 -30.5t22 -86.5q0 -52 -9 -103.5t-24 -97t-34 -83t-38 -62.5h-76q20 27 35 64.5t25 76.5t15 75t5 61q-54 0 -75 21t-21 71z" />
<glyph unicode="&#x201a;" d="M172 76q0 48 22 71t74 23q57 0 79 -30.5t22 -86.5q0 -52 -9 -103.5t-24 -97t-34 -83t-38 -62.5h-76q20 27 35 64.5t25 76.5t15 75t5 61q-54 0 -75 21t-21 71z" />
<glyph unicode="&#x201c;" horiz-adv-x="897" d="M172 1036q0 53 9 105t23.5 98t33 83.5t36.5 61.5h76q-20 -27 -35 -64.5t-25 -76.5t-15 -75t-5 -60q56 0 77.5 -22.5t21.5 -71.5q0 -47 -22.5 -69.5t-76.5 -22.5q-55 0 -76.5 30t-21.5 84zM528 1036q0 53 9 105t24 98t34 83.5t38 61.5h76q-20 -27 -35 -64.5t-25 -76.5 t-15 -75t-5 -60q54 0 75 -22.5t21 -71.5q0 -47 -22 -69.5t-74 -22.5q-57 0 -79 30t-22 84z" />
<glyph unicode="&#x201d;" horiz-adv-x="897" d="M172 1319q0 48 22 71t74 23q57 0 79 -30.5t22 -86.5q0 -52 -9 -103.5t-24 -97t-34 -83t-38 -62.5h-76q20 27 35 64.5t25 76.5t15 75t5 61q-54 0 -75 21t-21 71zM528 1319q0 48 22.5 71t76.5 23q55 0 76.5 -30.5t21.5 -86.5q0 -52 -9 -103.5t-23.5 -97t-33 -83 t-36.5 -62.5h-76q20 27 35 64.5t25 76.5t15 75t5 61q-56 0 -77.5 21t-21.5 71z" />
<glyph unicode="&#x201e;" horiz-adv-x="897" d="M172 76q0 48 22 71t74 23q57 0 79 -30.5t22 -86.5q0 -52 -9 -103.5t-24 -97t-34 -83t-38 -62.5h-76q20 27 35 64.5t25 76.5t15 75t5 61q-54 0 -75 21t-21 71zM528 76q0 48 22.5 71t76.5 23q55 0 76.5 -30.5t21.5 -86.5q0 -52 -9 -103.5t-23.5 -97t-33 -83t-36.5 -62.5 h-76q20 27 35 64.5t25 76.5t15 75t5 61q-56 0 -77.5 21t-21.5 71z" />
<glyph unicode="&#x2022;" horiz-adv-x="780" d="M147 745q0 51 19.5 95t53 77t78 51.5t93.5 18.5t92.5 -18.5t76.5 -51t52 -76.5t19 -96q0 -50 -19 -94t-51.5 -76.5t-76 -51.5t-93.5 -19q-51 0 -95.5 19t-77.5 51.5t-52 76.5t-19 94z" />
<glyph unicode="&#x2026;" horiz-adv-x="2048" d="M242 78q0 48 22.5 70t75.5 22q54 0 76 -21.5t22 -70.5q0 -53 -23.5 -72.5t-74.5 -19.5q-56 0 -77 23.5t-21 68.5zM924 78q0 48 22.5 70t75.5 22q54 0 76 -21.5t22 -70.5q0 -53 -23.5 -72.5t-74.5 -19.5q-56 0 -77 23.5t-21 68.5zM1606 78q0 48 22.5 70t75.5 22 q54 0 76 -21.5t22 -70.5q0 -53 -23.5 -72.5t-74.5 -19.5q-56 0 -77 23.5t-21 68.5z" />
<glyph unicode="&#x202f;" horiz-adv-x="381" />
<glyph unicode="&#x2039;" horiz-adv-x="672" d="M76 524l381 471h145l-381 -471l381 -471h-145z" />
<glyph unicode="&#x203a;" horiz-adv-x="672" d="M70 53l379 471l-379 471h145l379 -471l-379 -471h-145z" />
<glyph unicode="&#x205f;" horiz-adv-x="476" />
<glyph unicode="&#x20ac;" horiz-adv-x="1255" d="M35 518l35 96h65v160h-100l35 96h73q15 132 55 233t107 170t161 104.5t218 35.5q92 0 164 -19.5t127.5 -54.5t96.5 -84.5t73 -109.5l-119 -70q-24 48 -53.5 88t-70 69t-93.5 45.5t-123 16.5q-92 0 -161.5 -28t-118.5 -82t-78.5 -133t-42.5 -181h624l-32 -96h-598v-160 h555l-35 -96h-514q13 -103 43 -182.5t79.5 -134t120 -83t164.5 -28.5q79 0 136 21t98 54.5t69 75t49 83.5l115 -64q-32 -64 -72.5 -117t-95.5 -91.5t-128.5 -59.5t-170.5 -21q-249 0 -384.5 137t-164.5 410h-108z" />
<glyph unicode="&#x2122;" horiz-adv-x="1565" d="M92 1282v102h553v-102h-221v-612h-111v612h-221zM807 670v714h139l187 -374l194 374h131v-714h-108v538l-183 -346h-75l-174 342v-534h-111z" />
<glyph unicode="&#x25fc;" horiz-adv-x="1050" d="M0 0v1050h1050v-1050h-1050z" />
<hkern u1="&#x28;" u2="j" k="-50" />
<hkern u1="&#x2a;" u2="&#xef;" k="-45" />
<hkern u1="&#x2a;" u2="&#xc5;" k="90" />
<hkern u1="&#x2a;" u2="&#xc4;" k="90" />
<hkern u1="&#x2a;" u2="&#xc3;" k="90" />
<hkern u1="&#x2a;" u2="&#xc2;" k="90" />
<hkern u1="&#x2a;" u2="&#xc1;" k="90" />
<hkern u1="&#x2a;" u2="&#xc0;" k="90" />
<hkern u1="&#x2a;" u2="T" k="-22" />
<hkern u1="&#x2a;" u2="J" k="123" />
<hkern u1="&#x2a;" u2="A" k="90" />
<hkern u1="A" u2="&#x3f;" k="35" />
<hkern u1="A" u2="&#x2a;" k="90" />
<hkern u1="F" u2="&#xef;" k="-15" />
<hkern u1="F" u2="&#xee;" k="-10" />
<hkern u1="K" u2="&#xef;" k="-5" />
<hkern u1="K" u2="&#xee;" k="-17" />
<hkern u1="L" u2="&#xd8;" k="13" />
<hkern u1="L" u2="&#x3f;" k="50" />
<hkern u1="L" u2="&#x2a;" k="160" />
<hkern u1="T" u2="&#xef;" k="-45" />
<hkern u1="T" u2="&#xee;" k="-30" />
<hkern u1="T" u2="&#xe4;" k="90" />
<hkern u1="T" u2="&#xe3;" k="45" />
<hkern u1="T" u2="&#xe2;" k="65" />
<hkern u1="T" u2="&#x3f;" k="35" />
<hkern u1="T" u2="&#x2a;" k="-22" />
<hkern u1="V" u2="&#xef;" k="-27" />
<hkern u1="V" u2="&#xee;" k="-27" />
<hkern u1="W" u2="&#xef;" k="-27" />
<hkern u1="W" u2="&#xee;" k="-27" />
<hkern u1="X" u2="&#xef;" k="-25" />
<hkern u1="X" u2="&#xee;" k="-20" />
<hkern u1="Y" u2="&#xef;" k="-20" />
<hkern u1="Y" u2="&#xee;" k="-32" />
<hkern u1="[" u2="j" k="-50" />
<hkern u1="f" u2="&#xef;" k="-35" />
<hkern u1="f" u2="&#xee;" k="-50" />
<hkern u1="f" u2="&#xec;" k="-40" />
<hkern u1="f" u2="&#x3f;" k="-30" />
<hkern u1="f" u2="&#x2a;" k="-25" />
<hkern u1="f" u2="&#x21;" k="-30" />
<hkern u1="j" u2="&#xff;" k="-12" />
<hkern u1="j" u2="&#xfd;" k="-12" />
<hkern u1="j" u2="y" k="-12" />
<hkern u1="&#x7b;" u2="j" k="-50" />
<hkern u1="&#xa1;" u2="&#x178;" k="58" />
<hkern u1="&#xa1;" u2="&#xdd;" k="58" />
<hkern u1="&#xa1;" u2="Y" k="58" />
<hkern u1="&#xa1;" u2="W" k="30" />
<hkern u1="&#xa1;" u2="V" k="30" />
<hkern u1="&#xa1;" u2="T" k="105" />
<hkern u1="&#xbf;" u2="&#x178;" k="113" />
<hkern u1="&#xbf;" u2="&#xdd;" k="113" />
<hkern u1="&#xbf;" u2="Y" k="113" />
<hkern u1="&#xbf;" u2="W" k="60" />
<hkern u1="&#xbf;" u2="V" k="60" />
<hkern u1="&#xbf;" u2="T" k="60" />
<hkern u1="&#xc0;" u2="&#x3f;" k="35" />
<hkern u1="&#xc0;" u2="&#x2a;" k="90" />
<hkern u1="&#xc1;" u2="&#x3f;" k="35" />
<hkern u1="&#xc1;" u2="&#x2a;" k="90" />
<hkern u1="&#xc2;" u2="&#x3f;" k="35" />
<hkern u1="&#xc2;" u2="&#x2a;" k="90" />
<hkern u1="&#xc3;" u2="&#x3f;" k="35" />
<hkern u1="&#xc3;" u2="&#x2a;" k="90" />
<hkern u1="&#xc4;" u2="&#x3f;" k="35" />
<hkern u1="&#xc4;" u2="&#x2a;" k="90" />
<hkern u1="&#xc5;" u2="&#x3f;" k="35" />
<hkern u1="&#xc5;" u2="&#x2a;" k="90" />
<hkern u1="&#xdd;" u2="&#xef;" k="-20" />
<hkern u1="&#xdd;" u2="&#xee;" k="-32" />
<hkern u1="&#xde;" u2="W" k="-15" />
<hkern u1="&#xde;" u2="V" k="-15" />
<hkern u1="&#xde;" u2="T" k="-5" />
<hkern u1="&#xef;" u2="&#xef;" k="-135" />
<hkern u1="&#xef;" u2="&#x2a;" k="-45" />
<hkern u1="&#x178;" u2="&#xef;" k="-20" />
<hkern u1="&#x178;" u2="&#xee;" k="-32" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="T" k="80" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="V" k="48" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="W" k="30" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="Y,Yacute,Ydieresis" k="70" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quotedbl,quotesingle" k="60" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="-20" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="colon,semicolon" k="-20" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="25" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="20" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="15" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="t" k="15" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="z" k="-7" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="copyright,registered" k="30" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="trademark" k="110" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quoteleft,quotedblleft" k="90" />
<hkern g1="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" g2="quoteright,quotedblright" k="95" />
<hkern g1="B" g2="J" k="30" />
<hkern g1="B" g2="T" k="35" />
<hkern g1="B" g2="V" k="20" />
<hkern g1="B" g2="W" k="20" />
<hkern g1="B" g2="Y,Yacute,Ydieresis" k="25" />
<hkern g1="B" g2="trademark" k="45" />
<hkern g1="C,Ccedilla" g2="J" k="10" />
<hkern g1="C,Ccedilla" g2="V" k="8" />
<hkern g1="C,Ccedilla" g2="W" k="8" />
<hkern g1="C,Ccedilla" g2="X" k="15" />
<hkern g1="C,Ccedilla" g2="Y,Yacute,Ydieresis" k="20" />
<hkern g1="E,AE,Egrave,Eacute,Ecircumflex,Edieresis,OE" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="15" />
<hkern g1="F" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="65" />
<hkern g1="F" g2="J" k="75" />
<hkern g1="F" g2="X" k="35" />
<hkern g1="F" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="144" />
<hkern g1="F" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="40" />
<hkern g1="F" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="50" />
<hkern g1="F" g2="t" k="20" />
<hkern g1="F" g2="z" k="40" />
<hkern g1="F" g2="copyright,registered" k="45" />
<hkern g1="F" g2="S" k="25" />
<hkern g1="F" g2="Z" k="20" />
<hkern g1="F" g2="i,j,igrave,iacute,icircumflex,idieresis" k="20" />
<hkern g1="F" g2="m,n,p,r,ntilde" k="38" />
<hkern g1="F" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="50" />
<hkern g1="F" g2="s" k="45" />
<hkern g1="F" g2="u,ugrave,uacute,ucircumflex,udieresis" k="30" />
<hkern g1="F" g2="v" k="30" />
<hkern g1="F" g2="w" k="30" />
<hkern g1="F" g2="x" k="40" />
<hkern g1="F" g2="y,yacute,ydieresis" k="35" />
<hkern g1="F" g2="b,h,k,l,germandbls,thorn" k="10" />
<hkern g1="F" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="10" />
<hkern g1="G" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="15" />
<hkern g1="G" g2="J" k="25" />
<hkern g1="G" g2="T" k="20" />
<hkern g1="G" g2="V" k="20" />
<hkern g1="G" g2="W" k="20" />
<hkern g1="G" g2="X" k="15" />
<hkern g1="G" g2="Y,Yacute,Ydieresis" k="15" />
<hkern g1="G" g2="trademark" k="30" />
<hkern g1="J" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="20" />
<hkern g1="J" g2="J" k="30" />
<hkern g1="J" g2="X" k="10" />
<hkern g1="J" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="45" />
<hkern g1="J" g2="AE" k="30" />
<hkern g1="K" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="20" />
<hkern g1="K" g2="J" k="30" />
<hkern g1="K" g2="T" k="38" />
<hkern g1="K" g2="V" k="25" />
<hkern g1="K" g2="W" k="25" />
<hkern g1="K" g2="X" k="20" />
<hkern g1="K" g2="Y,Yacute,Ydieresis" k="40" />
<hkern g1="K" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="35" />
<hkern g1="K" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="5" />
<hkern g1="K" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="30" />
<hkern g1="K" g2="t" k="30" />
<hkern g1="K" g2="S" k="40" />
<hkern g1="K" g2="i,j,igrave,iacute,icircumflex,idieresis" k="20" />
<hkern g1="K" g2="m,n,p,r,ntilde" k="20" />
<hkern g1="K" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="35" />
<hkern g1="K" g2="s" k="30" />
<hkern g1="K" g2="u,ugrave,uacute,ucircumflex,udieresis" k="30" />
<hkern g1="K" g2="v" k="25" />
<hkern g1="K" g2="w" k="25" />
<hkern g1="K" g2="y,yacute,ydieresis" k="50" />
<hkern g1="K" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="25" />
<hkern g1="L" g2="T" k="115" />
<hkern g1="L" g2="V" k="88" />
<hkern g1="L" g2="W" k="50" />
<hkern g1="L" g2="Y,Yacute,Ydieresis" k="85" />
<hkern g1="L" g2="quotedbl,quotesingle" k="80" />
<hkern g1="L" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="-10" />
<hkern g1="L" g2="colon,semicolon" k="-20" />
<hkern g1="L" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="40" />
<hkern g1="L" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="20" />
<hkern g1="L" g2="t" k="15" />
<hkern g1="L" g2="copyright,registered" k="60" />
<hkern g1="L" g2="trademark" k="140" />
<hkern g1="L" g2="quoteleft,quotedblleft" k="108" />
<hkern g1="L" g2="quoteright,quotedblright" k="108" />
<hkern g1="L" g2="S" k="28" />
<hkern g1="L" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="18" />
<hkern g1="L" g2="v" k="30" />
<hkern g1="L" g2="w" k="30" />
<hkern g1="L" g2="y,yacute,ydieresis" k="50" />
<hkern g1="P,Thorn" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="50" />
<hkern g1="P,Thorn" g2="J" k="65" />
<hkern g1="P,Thorn" g2="T" k="10" />
<hkern g1="P,Thorn" g2="V" k="-5" />
<hkern g1="P,Thorn" g2="W" k="-5" />
<hkern g1="P,Thorn" g2="X" k="25" />
<hkern g1="P,Thorn" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="145" />
<hkern g1="P,Thorn" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="10" />
<hkern g1="P,Thorn" g2="S" k="-17" />
<hkern g1="P,Thorn" g2="Z" k="20" />
<hkern g1="P,Thorn" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="15" />
<hkern g1="P,Thorn" g2="AE" k="70" />
<hkern g1="P,Thorn" g2="I,Igrave,Iacute,Icircumflex,Idieresis" k="20" />
<hkern g1="R" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="-10" />
<hkern g1="R" g2="J" k="30" />
<hkern g1="R" g2="T" k="25" />
<hkern g1="R" g2="V" k="20" />
<hkern g1="R" g2="W" k="20" />
<hkern g1="R" g2="Y,Yacute,Ydieresis" k="20" />
<hkern g1="R" g2="z" k="-15" />
<hkern g1="R" g2="AE" k="45" />
<hkern g1="S" g2="J" k="35" />
<hkern g1="S" g2="T" k="20" />
<hkern g1="S" g2="V" k="15" />
<hkern g1="S" g2="W" k="15" />
<hkern g1="S" g2="X" k="10" />
<hkern g1="S" g2="Y,Yacute,Ydieresis" k="30" />
<hkern g1="T" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="80" />
<hkern g1="T" g2="J" k="70" />
<hkern g1="T" g2="X" k="10" />
<hkern g1="T" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="120" />
<hkern g1="T" g2="colon,semicolon" k="85" />
<hkern g1="T" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="33" />
<hkern g1="T" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="100" />
<hkern g1="T" g2="t" k="55" />
<hkern g1="T" g2="z" k="76" />
<hkern g1="T" g2="copyright,registered" k="50" />
<hkern g1="T" g2="trademark" k="-25" />
<hkern g1="T" g2="quoteleft,quotedblleft" k="-35" />
<hkern g1="T" g2="quoteright,quotedblright" k="-35" />
<hkern g1="T" g2="S" k="20" />
<hkern g1="T" g2="i,j,igrave,iacute,icircumflex,idieresis" k="20" />
<hkern g1="T" g2="m,n,p,r,ntilde" k="90" />
<hkern g1="T" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="100" />
<hkern g1="T" g2="s" k="127" />
<hkern g1="T" g2="u,ugrave,uacute,ucircumflex,udieresis" k="85" />
<hkern g1="T" g2="v" k="120" />
<hkern g1="T" g2="w" k="120" />
<hkern g1="T" g2="x" k="100" />
<hkern g1="T" g2="y,yacute,ydieresis" k="70" />
<hkern g1="T" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="40" />
<hkern g1="T" g2="AE" k="90" />
<hkern g1="T" g2="hyphen,endash,emdash" k="50" />
<hkern g1="T" g2="guillemotleft,guilsinglleft" k="70" />
<hkern g1="T" g2="guillemotright,guilsinglright" k="75" />
<hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="20" />
<hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="J" k="25" />
<hkern g1="U,Ugrave,Uacute,Ucircumflex,Udieresis" g2="X" k="5" />
<hkern g1="W" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="30" />
<hkern g1="W" g2="J" k="70" />
<hkern g1="W" g2="X" k="10" />
<hkern g1="W" g2="Y,Yacute,Ydieresis" k="20" />
<hkern g1="W" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="70" />
<hkern g1="W" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="25" />
<hkern g1="W" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="30" />
<hkern g1="W" g2="t" k="18" />
<hkern g1="W" g2="z" k="20" />
<hkern g1="W" g2="copyright,registered" k="30" />
<hkern g1="W" g2="S" k="5" />
<hkern g1="W" g2="m,n,p,r,ntilde" k="30" />
<hkern g1="W" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="30" />
<hkern g1="W" g2="s" k="30" />
<hkern g1="W" g2="u,ugrave,uacute,ucircumflex,udieresis" k="30" />
<hkern g1="W" g2="x" k="15" />
<hkern g1="W" g2="y,yacute,ydieresis" k="10" />
<hkern g1="W" g2="b,h,k,l,germandbls,thorn" k="15" />
<hkern g1="W" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="10" />
<hkern g1="W" g2="AE" k="50" />
<hkern g1="X" g2="T" k="10" />
<hkern g1="X" g2="V" k="10" />
<hkern g1="X" g2="W" k="10" />
<hkern g1="X" g2="Y,Yacute,Ydieresis" k="20" />
<hkern g1="X" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="20" />
<hkern g1="X" g2="U,Ugrave,Uacute,Ucircumflex,Udieresis" k="5" />
<hkern g1="X" g2="copyright,registered" k="15" />
<hkern g1="X" g2="S" k="10" />
<hkern g1="X" g2="m,n,p,r,ntilde" k="15" />
<hkern g1="X" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="30" />
<hkern g1="X" g2="u,ugrave,uacute,ucircumflex,udieresis" k="40" />
<hkern g1="X" g2="v" k="20" />
<hkern g1="X" g2="w" k="20" />
<hkern g1="X" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="8" />
<hkern g1="X" g2="guillemotleft,guilsinglleft" k="45" />
<hkern g1="X" g2="guillemotright,guilsinglright" k="-30" />
<hkern g1="Y,Yacute,Ydieresis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="70" />
<hkern g1="Y,Yacute,Ydieresis" g2="J" k="90" />
<hkern g1="Y,Yacute,Ydieresis" g2="V" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="W" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="X" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="70" />
<hkern g1="Y,Yacute,Ydieresis" g2="colon,semicolon" k="35" />
<hkern g1="Y,Yacute,Ydieresis" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="30" />
<hkern g1="Y,Yacute,Ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="60" />
<hkern g1="Y,Yacute,Ydieresis" g2="t" k="15" />
<hkern g1="Y,Yacute,Ydieresis" g2="z" k="50" />
<hkern g1="Y,Yacute,Ydieresis" g2="copyright,registered" k="40" />
<hkern g1="Y,Yacute,Ydieresis" g2="S" k="30" />
<hkern g1="Y,Yacute,Ydieresis" g2="Z" k="10" />
<hkern g1="Y,Yacute,Ydieresis" g2="i,j,igrave,iacute,icircumflex,idieresis" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="m,n,p,r,ntilde" k="65" />
<hkern g1="Y,Yacute,Ydieresis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="70" />
<hkern g1="Y,Yacute,Ydieresis" g2="s" k="60" />
<hkern g1="Y,Yacute,Ydieresis" g2="u,ugrave,uacute,ucircumflex,udieresis" k="50" />
<hkern g1="Y,Yacute,Ydieresis" g2="v" k="70" />
<hkern g1="Y,Yacute,Ydieresis" g2="w" k="70" />
<hkern g1="Y,Yacute,Ydieresis" g2="x" k="40" />
<hkern g1="Y,Yacute,Ydieresis" g2="b,h,k,l,germandbls,thorn" k="20" />
<hkern g1="Y,Yacute,Ydieresis" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="10" />
<hkern g1="Y,Yacute,Ydieresis" g2="AE" k="48" />
<hkern g1="Y,Yacute,Ydieresis" g2="guillemotleft,guilsinglleft" k="50" />
<hkern g1="Z" g2="Y,Yacute,Ydieresis" k="15" />
<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring" g2="t" k="10" />
<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring" g2="v" k="23" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="25" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="quoteleft,quotedblleft" k="45" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="quoteright,quotedblright" k="45" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="v" k="10" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="x" k="8" />
<hkern g1="b,o,p,germandbls,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,thorn" g2="y,yacute,ydieresis" k="5" />
<hkern g1="h,m,n,ntilde" g2="v" k="13" />
<hkern g1="h,m,n,ntilde" g2="w" k="13" />
<hkern g1="f" g2="quotedbl,quotesingle" k="-45" />
<hkern g1="f" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="35" />
<hkern g1="f" g2="trademark" k="-65" />
<hkern g1="f" g2="quoteleft,quotedblleft" k="-50" />
<hkern g1="f" g2="quoteright,quotedblright" k="-45" />
<hkern g1="f" g2="parenright,bracketright,braceright" k="-65" />
<hkern g1="k" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="15" />
<hkern g1="k" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" />
<hkern g1="k" g2="s" k="10" />
<hkern g1="k" g2="v" k="25" />
<hkern g1="k" g2="w" k="-5" />
<hkern g1="k" g2="guillemotright,guilsinglright" k="-30" />
<hkern g1="d,l,uniFB02,uniFB04" g2="t" k="15" />
<hkern g1="r" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="130" />
<hkern g1="r" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="10" />
<hkern g1="r" g2="quoteleft,quotedblleft" k="-50" />
<hkern g1="r" g2="quoteright,quotedblright" k="-50" />
<hkern g1="r" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="35" />
<hkern g1="r" g2="s" k="25" />
<hkern g1="r" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="-10" />
<hkern g1="r" g2="guillemotright,guilsinglright" k="-50" />
<hkern g1="s" g2="t" k="10" />
<hkern g1="s" g2="v" k="20" />
<hkern g1="s" g2="w" k="20" />
<hkern g1="s" g2="x" k="10" />
<hkern g1="t" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="-10" />
<hkern g1="t" g2="t" k="15" />
<hkern g1="t" g2="z" k="-15" />
<hkern g1="t" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="10" />
<hkern g1="t" g2="u,ugrave,uacute,ucircumflex,udieresis" k="20" />
<hkern g1="t" g2="v" k="20" />
<hkern g1="t" g2="w" k="20" />
<hkern g1="t" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="28" />
<hkern g1="w" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="30" />
<hkern g1="w" g2="s" k="10" />
<hkern g1="w" g2="y,yacute,ydieresis" k="5" />
<hkern g1="x" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="8" />
<hkern g1="y,yacute,ydieresis" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="55" />
<hkern g1="y,yacute,ydieresis" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="8" />
<hkern g1="y,yacute,ydieresis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="20" />
<hkern g1="y,yacute,ydieresis" g2="s" k="15" />
<hkern g1="y,yacute,ydieresis" g2="v" k="10" />
<hkern g1="y,yacute,ydieresis" g2="w" k="10" />
<hkern g1="y,yacute,ydieresis" g2="x" k="15" />
<hkern g1="y,yacute,ydieresis" g2="parenright,bracketright,braceright" k="30" />
<hkern g1="z" g2="z" k="-7" />
<hkern g1="colon,semicolon" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="-20" />
<hkern g1="colon,semicolon" g2="J" k="-20" />
<hkern g1="colon,semicolon" g2="T" k="85" />
<hkern g1="colon,semicolon" g2="Y,Yacute,Ydieresis" k="35" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="-20" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="J" k="-20" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="T" k="120" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="V" k="70" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="W" k="70" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="Y,Yacute,Ydieresis" k="70" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="quoteleft,quotedblleft" k="93" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="quoteright,quotedblright" k="63" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="25" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="v" k="30" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="w" k="30" />
<hkern g1="comma,period,quotesinglbase,quotedblbase,ellipsis" g2="AE" k="-30" />
<hkern g1="guillemotleft,guilsinglleft" g2="T" k="75" />
<hkern g1="guillemotleft,guilsinglleft" g2="X" k="-30" />
<hkern g1="guillemotright,guilsinglright" g2="T" k="70" />
<hkern g1="guillemotright,guilsinglright" g2="X" k="45" />
<hkern g1="guillemotright,guilsinglright" g2="Y,Yacute,Ydieresis" k="50" />
<hkern g1="hyphen,endash,emdash" g2="T" k="50" />
<hkern g1="parenleft,bracketleft,braceleft" g2="y,yacute,ydieresis" k="-30" />
<hkern g1="quoteleft,quotedblleft" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="90" />
<hkern g1="quoteleft,quotedblleft" g2="J" k="83" />
<hkern g1="quoteleft,quotedblleft" g2="T" k="-35" />
<hkern g1="quoteleft,quotedblleft" g2="t" k="-45" />
<hkern g1="quoteleft,quotedblleft" g2="quoteleft,quotedblleft" k="63" />
<hkern g1="quoteleft,quotedblleft" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="45" />
<hkern g1="quoteleft,quotedblleft" g2="AE" k="83" />
<hkern g1="quoteright,quotedblright" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="90" />
<hkern g1="quoteright,quotedblright" g2="J" k="81" />
<hkern g1="quoteright,quotedblright" g2="T" k="-35" />
<hkern g1="quoteright,quotedblright" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="78" />
<hkern g1="quoteright,quotedblright" g2="quoteright,quotedblright" k="63" />
<hkern g1="quoteright,quotedblright" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="45" />
<hkern g1="quoteright,quotedblright" g2="AE" k="83" />
<hkern g1="quotedbl,quotesingle" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="60" />
<hkern g1="quotedbl,quotesingle" g2="J" k="95" />
<hkern g1="V" g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring" k="48" />
<hkern g1="V" g2="J" k="70" />
<hkern g1="V" g2="X" k="10" />
<hkern g1="V" g2="Y,Yacute,Ydieresis" k="20" />
<hkern g1="V" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="70" />
<hkern g1="V" g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,OE" k="25" />
<hkern g1="V" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="30" />
<hkern g1="V" g2="t" k="18" />
<hkern g1="V" g2="z" k="20" />
<hkern g1="V" g2="copyright,registered" k="30" />
<hkern g1="V" g2="S" k="5" />
<hkern g1="V" g2="m,n,p,r,ntilde" k="30" />
<hkern g1="V" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="30" />
<hkern g1="V" g2="s" k="30" />
<hkern g1="V" g2="u,ugrave,uacute,ucircumflex,udieresis" k="30" />
<hkern g1="V" g2="x" k="15" />
<hkern g1="V" g2="y,yacute,ydieresis" k="10" />
<hkern g1="V" g2="b,h,k,l,germandbls,thorn" k="15" />
<hkern g1="V" g2="f,uniFB01,uniFB02,uniFB03,uniFB04" k="10" />
<hkern g1="V" g2="AE" k="50" />
<hkern g1="v" g2="comma,period,quotesinglbase,quotedblbase,ellipsis" k="30" />
<hkern g1="v" g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,ae" k="18" />
<hkern g1="v" g2="c,d,e,g,o,q,ccedilla,egrave,eacute,ecircumflex,edieresis,eth,ograve,oacute,ocircumflex,otilde,odieresis,oslash,oe" k="10" />
<hkern g1="v" g2="s" k="10" />
<hkern g1="v" g2="v" k="15" />
<hkern g1="v" g2="y,yacute,ydieresis" k="5" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More