格式化提交(事件响应部分)

This commit is contained in:
MingxuanGame 2022-02-12 18:48:52 +08:00
parent 42bc1d68b9
commit 5ca303c2f9
No known key found for this signature in database
GPG Key ID: 90C7EFA11DC3C2FF
371 changed files with 2816 additions and 2711 deletions

1348
getImg.py

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1380
get_image.py Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,20 @@
import math,sqlite3,re,os,random,requests,json
import json
import math
import os
import random
import re
import sqlite3
from base64 import b64encode
from io import BytesIO
from .getDB import ( GetAward, GetCharInfo, GetDaily, GetMysInfo, GetAudioInfo,
GetSignInfo, GetSignList, GetWeaponInfo, MysSign,
cookiesDB, GetMiscInfo)
import requests
from .get_data import (get_award, get_char_info, get_daily_data, get_mihoyo_bbs_info, get_audio_info,
get_sign_info, get_sign_list, get_weapon_info, mihoyo_bbs_sign,
cookies_db, get_misc_info)
FILE_PATH = os.path.dirname(__file__)
FILE2_PATH = os.path.join(FILE_PATH, 'mys')
FILE2_PATH = os.path.join(FILE_PATH, 'mihoyo_bbs')
INDEX_PATH = os.path.join(FILE2_PATH, 'index')
Texture_PATH = os.path.join(FILE2_PATH, 'texture2d')
@ -52,7 +59,7 @@ avatar_json = {
"Aloy": "埃洛伊",
"Sara": "九条裟罗",
"Kokomi": "珊瑚宫心海",
"Shenhe":"申鹤"
"Shenhe": "申鹤"
}
daily_im = '''
@ -143,13 +150,14 @@ audio_json = '''{
"1020000":["1020000_01"]
}'''
async def deal_ck(mes,qid):
async def deal_ck(mes, qid):
aid = re.search(r"account_id=(\d*)", mes)
mysid_data = aid.group(0).split('=')
mysid = mysid_data[1]
cookie = ';'.join(filter(lambda x: x.split('=')[0] in [
"cookie_token", "account_id"], [i.strip() for i in mes.split(';')]))
mys_data = await GetMysInfo(mysid, cookie)
mys_data = await get_mihoyo_bbs_info(mysid, cookie)
for i in mys_data['data']['list']:
if i['game_id'] != 2:
mys_data['data']['list'].remove(i)
@ -159,17 +167,18 @@ async def deal_ck(mes,qid):
c = conn.cursor()
try:
c.execute("DELETE from CookiesCache where uid=? or mysid = ?",(uid,mysid))
c.execute("DELETE from CookiesCache where uid=? or mysid = ?", (uid, mysid))
except:
pass
conn.commit()
conn.close()
await cookiesDB(uid, cookie, qid)
await cookies_db(uid, cookie, qid)
async def award(uid):
data = await GetAward(uid)
data = await get_award(uid)
nickname = data['data']['nickname']
day_stone = data['data']['day_data']['current_primogems']
day_mora = data['data']['day_data']['current_mora']
@ -189,40 +198,43 @@ async def award(uid):
month_stone, month_mora, lastmonth_stone, lastmonth_mora, group_str)
return im
async def audio_wiki(name,message):
async def get(audioid):
tmp_json=json.loads(audio_json)
for _ in range(3):#重试3次
if audioid in tmp_json:
if not tmp_json[audioid]:
async def audio_wiki(name, message):
async def get(_audioid):
tmp_json = json.loads(audio_json)
for _ in range(3): # 重试3次
if _audioid in tmp_json:
if not tmp_json[_audioid]:
return
audioid1 = random.choice(tmp_json[audioid])
audioid1 = random.choice(tmp_json[_audioid])
else:
audioid1=audioid
url = await GetAudioInfo(name,audioid1)
req=requests.get(url)
audioid1 = _audioid
url = await get_audio_info(name, audioid1)
req = requests.get(url)
if req.headers["Content-Type"].startswith("audio"):
return BytesIO(req.content)
else:
if audioid in tmp_json:
tmp_json[audioid].remove(audioid1)
if _audioid in tmp_json:
tmp_json[_audioid].remove(audioid1)
if name == "列表":
im = f'[CQ:image,file=file://{os.path.join(INDEX_PATH,"语音.png")}]'
im = f'[CQ:image,file=file://{os.path.join(INDEX_PATH, "语音.png")}]'
return im
elif name == "":
return "角色名不正确。"
else:
audioid = re.findall(r"[0-9]+", message)[0]
try:
audio=await get(audioid)
audio = await get(audioid)
except:
return "语音获取失败"
if audio:
audios = 'base64://' + b64encode(audio.getvalue()).decode()
return (f"[CQ:record,file={audios}]")
return f"[CQ:record,file={audios}]"
async def artifacts_wiki(name):
data = await GetMiscInfo("artifacts",name)
data = await get_misc_info("artifacts", name)
if "errcode" in data:
im = "该圣遗物不存在。"
else:
@ -230,13 +242,17 @@ async def artifacts_wiki(name):
for i in data["rarity"]:
star = star + i + "星、"
star = star[:-1]
im = artifacts_im.format(data["name"],star,data["2pc"],data["4pc"],data["flower"]["name"],data["flower"]["description"],
data["plume"]["name"],data["plume"]["description"],data["sands"]["name"],data["sands"]["description"],
data["goblet"]["name"],data["goblet"]["description"],data["circlet"]["name"],data["circlet"]["description"])
im = artifacts_im.format(data["name"], star, data["2pc"], data["4pc"], data["flower"]["name"],
data["flower"]["description"],
data["plume"]["name"], data["plume"]["description"], data["sands"]["name"],
data["sands"]["description"],
data["goblet"]["name"], data["goblet"]["description"], data["circlet"]["name"],
data["circlet"]["description"])
return im
async def foods_wiki(name):
data = await GetMiscInfo("foods",name)
data = await get_misc_info("foods", name)
if "errcode" in data:
im = "该食物不存在。"
else:
@ -250,11 +266,13 @@ async def foods_wiki(name):
for i in food_temp:
ingredients += i + ":" + str(food_temp[i]) + "\n"
ingredients = ingredients[:-1]
im = food_im.format(data["name"],data["rarity"],data["foodtype"],data["foodfilter"],data["effect"],data["description"],ingredients)
im = food_im.format(data["name"], data["rarity"], data["foodtype"], data["foodfilter"], data["effect"],
data["description"], ingredients)
return im
async def enemies_wiki(name):
raw_data = await GetMiscInfo("enemies",name)
raw_data = await get_misc_info("enemies", name)
if "errcode" in raw_data:
im = "该原魔不存在。"
else:
@ -262,22 +280,23 @@ async def enemies_wiki(name):
for i in raw_data["rewardpreview"]:
reward += i["name"] + "" + str(i["count"]) if "count" in i.keys() else i["name"] + "" + "可能"
reward += "\n"
im = "{}\n——{}——\n类型:{}\n信息:{}\n掉落物:\n{}".format(raw_data["name"],raw_data["specialname"],
raw_data["category"],raw_data["description"],reward)
im = "{}\n——{}——\n类型:{}\n信息:{}\n掉落物:\n{}".format(raw_data["name"], raw_data["specialname"],
raw_data["category"], raw_data["description"], reward)
return im
# 签到函数
async def sign(uid):
try:
sign_data = await MysSign(uid)
sign_info = await GetSignInfo(uid)
sign_data = await mihoyo_bbs_sign(uid)
sign_info = await get_sign_info(uid)
sign_info = sign_info['data']
sign_list = await GetSignList()
sign_list = await get_sign_list()
status = sign_data['message']
getitem = sign_list['data']['awards'][int(
sign_info['total_sign_day'])-1]['name']
sign_info['total_sign_day']) - 1]['name']
getnum = sign_list['data']['awards'][int(
sign_info['total_sign_day'])-1]['cnt']
sign_info['total_sign_day']) - 1]['cnt']
get_im = f"本次签到获得{getitem}x{getnum}"
if status == "OK" and sign_info['is_sign'] == True:
mes_im = "签到成功"
@ -289,9 +308,9 @@ async def sign(uid):
im = "签到失败请检查Cookies是否失效。"
return im
# 统计状态函数
async def daily(mode="push", uid=None):
def seconds2hours(seconds: int) -> str:
m, s = divmod(int(seconds), 60)
h, m = divmod(m, 60)
@ -308,7 +327,7 @@ async def daily(mode="push", uid=None):
c_data = ([uid, 0, 0, 0, 0, 0, 0],)
for row in c_data:
raw_data = await GetDaily(str(row[0]))
raw_data = await get_daily_data(str(row[0]))
if raw_data["retcode"] != 0:
temp_list.append(
{"qid": row[2], "gid": row[3], "message": "你的推送状态有误可能是uid绑定错误或没有在米游社打开“实时便筏”功能。"})
@ -339,11 +358,11 @@ async def daily(mode="push", uid=None):
if current_resin >= row[6] or dailydata["max_home_coin"] - dailydata["current_home_coin"] <= 100:
tip = ''
if current_resin >= row[6] and row[6] != 0:
if current_resin >= row[6] != 0:
tip += "\n==============\n你的树脂快满了!"
if dailydata["max_home_coin"] - dailydata["current_home_coin"] <= 100:
tip += "\n==============\n你的洞天宝钱快满了!"
#if finished_expedition_num >0:
# if finished_expedition_num >0:
# tip += "\n==============\n你有探索派遣完成了"
max_resin = dailydata['max_resin']
rec_time = ''
@ -352,7 +371,8 @@ async def daily(mode="push", uid=None):
resin_recovery_time = seconds2hours(
dailydata['resin_recovery_time'])
next_resin_rec_time = seconds2hours(
8 * 60 - ((dailydata['max_resin'] - dailydata['current_resin']) * 8 * 60 - int(dailydata['resin_recovery_time'])))
8 * 60 - ((dailydata['max_resin'] - dailydata['current_resin']) * 8 * 60 - int(
dailydata['resin_recovery_time'])))
rec_time = f' ({next_resin_rec_time}/{resin_recovery_time})'
finished_task_num = dailydata['finished_task_num']
@ -364,35 +384,39 @@ async def daily(mode="push", uid=None):
dailydata['remain_resin_discount_num']
coin = f'{dailydata["current_home_coin"]}/{dailydata["max_home_coin"]}'
if dailydata["current_home_coin"]<dailydata["max_home_coin"]:
coin_rec_time=seconds2hours(int(dailydata["home_coin_recovery_time"]))
coin_add_speed=math.ceil((dailydata["max_home_coin"]-dailydata["current_home_coin"])/(int(dailydata["home_coin_recovery_time"])/60/60))
coin+=f'{coin_rec_time}{coin_add_speed}/h'
if dailydata["current_home_coin"] < dailydata["max_home_coin"]:
coin_rec_time = seconds2hours(int(dailydata["home_coin_recovery_time"]))
coin_add_speed = math.ceil((dailydata["max_home_coin"] - dailydata["current_home_coin"]) / (
int(dailydata["home_coin_recovery_time"]) / 60 / 60))
coin += f'{coin_rec_time}{coin_add_speed}/h'
expedition_data = "\n".join(expedition_info)
send_mes = daily_im.format(tip, current_resin, max_resin, rec_time, finished_task_num, total_task_num, is_extra_got, used_resin_discount_num,
resin_discount_num_limit, coin,current_expedition_num, finished_expedition_num, max_expedition_num, expedition_data)
send_mes = daily_im.format(tip, current_resin, max_resin, rec_time, finished_task_num, total_task_num,
is_extra_got, used_resin_discount_num,
resin_discount_num_limit, coin, current_expedition_num,
finished_expedition_num, max_expedition_num, expedition_data)
temp_list.append(
{"qid": row[2], "gid": row[3], "message": send_mes})
return temp_list
async def weapon_wiki(name,level = None):
data = await GetWeaponInfo(name)
async def weapon_wiki(name, level=None):
data = await get_weapon_info(name)
if "errcode" in data:
im = "武器不存在。"
elif level:
data2 = await GetWeaponInfo(name,level)
data2 = await get_weapon_info(name, level)
if data["substat"] != "":
sp = data["substat"] + "" + '%.1f%%' % (data2["specialized"] * 100) if data["substat"] != "元素精通" else data["substat"] + "" + str(math.floor(data2["specialized"]))
sp = data["substat"] + "" + '%.1f%%' % (data2["specialized"] * 100) \
if data["substat"] != "元素精通" else data["substat"] + "" + str(math.floor(data2["specialized"]))
else:
sp = ""
im = (data["name"] + "\n等级:" + str(data2["level"]) + "(突破" + str(data2["ascension"]) + "" +
"\n攻击力:" + str(round(data2["attack"])) + "\n" + sp)
else:
name = data['name']
type = data['weapontype']
_type = data['weapontype']
star = data['rarity'] + ""
info = data['description']
atk = str(data['baseatk'])
@ -417,27 +441,29 @@ async def weapon_wiki(name,level = None):
effect = "\n" + "" + data['effectname'] + "" + "" + raw_effect
else:
effect = ""
im = weapon_im.format(name, type, star, info, atk,
im = weapon_im.format(name, _type, star, info, atk,
sub, effect)
return im
async def char_wiki(name, mode="char", level=None):
data = await GetCharInfo(name, mode, level if mode == "char" else None)
data = await get_char_info(name, mode, level if mode == "char" else None)
if mode == "char":
if isinstance(data,list):
if isinstance(data, list):
im = ','.join(data)
elif "errcode" in data:
im = "不存在该角色或类型。"
elif level:
data2 = await GetCharInfo(name, mode)
sp = data2["substat"] + "" + '%.1f%%' % (data["specialized"] * 100) if data2["substat"] != "元素精通" else data2["substat"] + "" + str(math.floor(data["specialized"]))
data2 = await get_char_info(name, mode)
sp = data2["substat"] + "" + '%.1f%%' % (data["specialized"] * 100) if data2["substat"] != "元素精通" else \
data2["substat"] + "" + str(math.floor(data["specialized"]))
im = (data2["name"] + "\n等级:" + str(data["level"]) + "\n血量:" + str(math.floor(data["hp"])) +
"\n攻击力:" + str(math.floor(data["attack"])) + "\n防御力:" + str(math.floor(data["defense"])) +
"\n" + sp)
else:
name = data['title'] + '' + data['name']
star = data['rarity']
type = data["weapontype"]
_type = data["weapontype"]
element = data['element']
up_val = data['substat']
bdday = data['birthday']
@ -445,9 +471,9 @@ async def char_wiki(name, mode="char", level=None):
cv = data['cv']['chinese']
info = data['description']
im = char_info_im.format(
name, star, type, element, up_val, bdday, polar, cv, info)
name, star, _type, element, up_val, bdday, polar, cv, info)
elif mode == "costs":
if isinstance(data[1],list):
if isinstance(data[1], list):
im = ','.join(data[1])
elif "errcode" in data[1]:
im = "不存在该角色或类型。"
@ -469,7 +495,7 @@ async def char_wiki(name, mode="char", level=None):
temp = {}
cost = data[0]
for i in range(1,7):
for i in range(1, 7):
for j in cost["ascend{}".format(i)]:
if j["name"] not in temp:
temp[j["name"]] = j["count"]
@ -479,7 +505,7 @@ async def char_wiki(name, mode="char", level=None):
for k in temp:
im2 = im2 + k + ":" + str(temp[k]) + "\n"
im = im.format(im1,im2)
im = im.format(im1, im2)
elif mode == "constellations":
if "errcode" in data:
im = "不存在该角色或命座数量。"
@ -490,8 +516,8 @@ async def char_wiki(name, mode="char", level=None):
if "errcode" in data:
im = "不存在该角色。"
else:
if int(level) <=6 and int(level) > 0:
if int(level) <= 3 :
if 6 >= int(level) > 0:
if int(level) <= 3:
if level == "1":
data = data["combat1"]
elif level == "2":
@ -509,14 +535,14 @@ async def char_wiki(name, mode="char", level=None):
data["attributes"]["parameters"][i] = temp[:-1]
for i in data["attributes"]["labels"]:
#i = i.replace("{","{{")
# i = i.replace("{","{{")
i = re.sub(r':[a-zA-Z0-9]+}', "}", i)
#i.replace(r':[a-zA-Z0-9]+}','}')
# i.replace(r':[a-zA-Z0-9]+}','}')
skill_detail += i + "\n"
skill_detail = skill_detail.format(**data["attributes"]["parameters"])
im = "{}\n{}\n————\n{}".format(skill_name,skill_info,skill_detail)
im = "{}\n{}\n————\n{}".format(skill_name, skill_info, skill_detail)
else:
if level == "4":
@ -529,7 +555,7 @@ async def char_wiki(name, mode="char", level=None):
data = data["passive4"]
skill_name = data["name"]
skill_info = data["info"]
im = "{}\n{}".format(skill_name,skill_info)
im = "{}\n{}".format(skill_name, skill_info)
else:
im = "不存在该天赋。"
return im

View File

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 129 KiB

View File

Before

Width:  |  Height:  |  Size: 793 KiB

After

Width:  |  Height:  |  Size: 793 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 614 KiB

After

Width:  |  Height:  |  Size: 614 KiB

View File

Before

Width:  |  Height:  |  Size: 508 KiB

After

Width:  |  Height:  |  Size: 508 KiB

View File

Before

Width:  |  Height:  |  Size: 689 KiB

After

Width:  |  Height:  |  Size: 689 KiB

View File

Before

Width:  |  Height:  |  Size: 530 KiB

After

Width:  |  Height:  |  Size: 530 KiB

View File

Before

Width:  |  Height:  |  Size: 637 KiB

After

Width:  |  Height:  |  Size: 637 KiB

View File

Before

Width:  |  Height:  |  Size: 590 KiB

After

Width:  |  Height:  |  Size: 590 KiB

View File

Before

Width:  |  Height:  |  Size: 602 KiB

After

Width:  |  Height:  |  Size: 602 KiB

View File

Before

Width:  |  Height:  |  Size: 418 KiB

After

Width:  |  Height:  |  Size: 418 KiB

View File

Before

Width:  |  Height:  |  Size: 611 KiB

After

Width:  |  Height:  |  Size: 611 KiB

View File

Before

Width:  |  Height:  |  Size: 595 KiB

After

Width:  |  Height:  |  Size: 595 KiB

View File

Before

Width:  |  Height:  |  Size: 507 KiB

After

Width:  |  Height:  |  Size: 507 KiB

View File

Before

Width:  |  Height:  |  Size: 516 KiB

After

Width:  |  Height:  |  Size: 516 KiB

View File

Before

Width:  |  Height:  |  Size: 540 KiB

After

Width:  |  Height:  |  Size: 540 KiB

View File

Before

Width:  |  Height:  |  Size: 712 KiB

After

Width:  |  Height:  |  Size: 712 KiB

View File

Before

Width:  |  Height:  |  Size: 795 KiB

After

Width:  |  Height:  |  Size: 795 KiB

View File

Before

Width:  |  Height:  |  Size: 549 KiB

After

Width:  |  Height:  |  Size: 549 KiB

View File

Before

Width:  |  Height:  |  Size: 423 KiB

After

Width:  |  Height:  |  Size: 423 KiB

View File

Before

Width:  |  Height:  |  Size: 489 KiB

After

Width:  |  Height:  |  Size: 489 KiB

View File

Before

Width:  |  Height:  |  Size: 530 KiB

After

Width:  |  Height:  |  Size: 530 KiB

View File

Before

Width:  |  Height:  |  Size: 581 KiB

After

Width:  |  Height:  |  Size: 581 KiB

View File

Before

Width:  |  Height:  |  Size: 518 KiB

After

Width:  |  Height:  |  Size: 518 KiB

View File

Before

Width:  |  Height:  |  Size: 561 KiB

After

Width:  |  Height:  |  Size: 561 KiB

View File

Before

Width:  |  Height:  |  Size: 545 KiB

After

Width:  |  Height:  |  Size: 545 KiB

View File

Before

Width:  |  Height:  |  Size: 461 KiB

After

Width:  |  Height:  |  Size: 461 KiB

View File

Before

Width:  |  Height:  |  Size: 475 KiB

After

Width:  |  Height:  |  Size: 475 KiB

View File

Before

Width:  |  Height:  |  Size: 589 KiB

After

Width:  |  Height:  |  Size: 589 KiB

View File

Before

Width:  |  Height:  |  Size: 916 KiB

After

Width:  |  Height:  |  Size: 916 KiB

View File

Before

Width:  |  Height:  |  Size: 788 KiB

After

Width:  |  Height:  |  Size: 788 KiB

View File

Before

Width:  |  Height:  |  Size: 540 KiB

After

Width:  |  Height:  |  Size: 540 KiB

View File

Before

Width:  |  Height:  |  Size: 465 KiB

After

Width:  |  Height:  |  Size: 465 KiB

View File

Before

Width:  |  Height:  |  Size: 788 KiB

After

Width:  |  Height:  |  Size: 788 KiB

View File

Before

Width:  |  Height:  |  Size: 454 KiB

After

Width:  |  Height:  |  Size: 454 KiB

View File

Before

Width:  |  Height:  |  Size: 656 KiB

After

Width:  |  Height:  |  Size: 656 KiB

View File

Before

Width:  |  Height:  |  Size: 651 KiB

After

Width:  |  Height:  |  Size: 651 KiB

View File

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB

View File

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

View File

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

View File

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 104 KiB

View File

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 81 KiB

View File

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 95 KiB

View File

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 84 KiB

View File

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 91 KiB

View File

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB

View File

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

View File

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

View File

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 95 KiB

View File

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

View File

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 87 KiB

View File

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 92 KiB

View File

Before

Width:  |  Height:  |  Size: 96 KiB

After

Width:  |  Height:  |  Size: 96 KiB

View File

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 81 KiB

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