From 92176cb11ff97c1be00d5e871e38a8d4a8539aa2 Mon Sep 17 00:00:00 2001 From: LittleStone <1526631427@qq.com> Date: Wed, 6 Nov 2024 18:07:49 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix:=E7=A7=BB=E5=8A=A8=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E5=8F=98=E9=87=8F=E4=B8=BA=E7=B1=BB=E6=88=90=E5=91=98=E5=8F=98?= =?UTF-8?q?=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- irc_dlient.py | 283 ++++++++++++++++++++++++++------------------------ 1 file changed, 147 insertions(+), 136 deletions(-) diff --git a/irc_dlient.py b/irc_dlient.py index 2c17fc7..0946544 100755 --- a/irc_dlient.py +++ b/irc_dlient.py @@ -37,7 +37,7 @@ def __init__(self): # 定义IRC客户端类 class MyIRCClient: - def __init__(self, server, port, config): + def __init__(self, server, port, config, p, r, b, pp): self.irc_react = irc.client.Reactor() self.config = config self.server = self.irc_react.server() @@ -47,22 +47,27 @@ def __init__(self, server, port, config): self.irc_react.add_global_handler("privmsg", self.on_privmsg) self.timer = None # 定义定时器 self.restarting_task = threading.Thread(target=(self.restart)) + self.p = p + self.r = r + self.b = b + self.pp = pp + self.stop_event = threading.Event() def start(self): self.irc_react.process_forever() def reset_all(self): # 重置 - p.reset_player_list() - p.reset_host_list() - p.clear_approved_list() - b.clear_cache() + self.p.reset_player_list() + self.p.reset_host_list() + self.p.clear_approved_list() + self.b.clear_cache() def restart(self): print(f'尝试重启...{datetime.now()+datetime.timedelta(hours=8)}') time.sleep(120) self.reset_all() - r.create_room(self.server, "") + self.r.create_room(self.server, "") self.restarting_task = threading.Thread(target=(self.restart)) print(f'重启完成{datetime.now()+datetime.timedelta(hours=8)}') @@ -71,7 +76,7 @@ def start_periodic_task(self): # Save the Timer object in an instance variable self.timer = threading.Timer(60, self.start_periodic_task) self.timer.start() - self.check_room_status(r.room_id) + self.check_room_status(self.r.room_id) # 停止定时任务 def stop_periodic_task(self): @@ -82,23 +87,23 @@ def stop_periodic_task(self): def check_last_room_status(self,last_room_id): if last_room_id == "": return False - b.get_token() + self.b.get_token() try: - text = b.get_match_info(re.findall(r'\d+', last_room_id)[0]) + text = self.b.get_match_info(re.findall(r'\d+', last_room_id)[0]) except: text = "" # match-disbanded #比赛关闭 if "match-disbanded" in str(text['events']): return False else: - r.change_room_id(last_room_id) + self.r.change_room_id(last_room_id) return True # 这是检查房间状态的流程 用于定时任务 def check_room_status(self, room_id): - b.get_token() + self.b.get_token() try: - text = b.get_match_info(re.findall(r'\d+', room_id)[0]) + text = self.b.get_match_info(re.findall(r'\d+', room_id)[0]) except: text = "" # match-disbanded #比赛关闭 @@ -107,13 +112,13 @@ def check_room_status(self, room_id): self.stop_periodic_task() # 重置 p.reset_player_list() - p.reset_host_list() - p.clear_approved_list() - p.approved_host_rotate_list.clear() - b.clear_cache() + self.p.reset_host_list() + self.p.clear_approved_list() + self.p.approved_host_rotate_list.clear() + self.b.clear_cache() # 尝试重新创建房间 try: - r.create_room(self.server, "") + self.r.create_room(self.server, "") except: print("创建房间失败") self.timer.start() @@ -122,10 +127,10 @@ def check_room_status(self, room_id): def export_json(self): result = {} - result['player_list'] = p.player_list - result['beatmap_name'] = b.beatmap_name - result['beatmap_artist'] = b.beatmap_artist - result['beatmap_star'] = b.beatmap_star + result['player_list'] = self.p.player_list + result['beatmap_name'] = self.b.beatmap_name + result['beatmap_artist'] = self.b.beatmap_artist + result['beatmap_star'] = self.b.beatmap_star try: with open('data.json', 'w', encoding='utf-8') as f: @@ -135,28 +140,34 @@ def export_json(self): print("导出json失败") def on_connect(self, connection, event): - last_room_id = r.get_last_room_id() + last_room_id = self.r.get_last_room_id() # 如果房间存在 if self.check_last_room_status(last_room_id): - r.join_room(connection, event) - r.change_password(connection, event) - r.get_mp_settings(connection, event) + self.r.join_room(connection, event) + self.r.change_password(connection, event) + self.r.get_mp_settings(connection, event) try: self.start_periodic_task() except: print("定时任务启动失败") # 如果房间不存在 else: - r.create_room(connection, event) + self.r.create_room(connection, event) def send_loop(): - while True: + while not self.stop_event.is_set(): message = input(">") - r.send_msg(connection, event, message) + self.r.send_msg(connection, event, message) threading.Thread(target=(send_loop)).start() + def stop(self): + self.stop_event.set() + if self.timer: + self.stop_periodic_task() + print("IRC客户端已停止") + def on_privmsg(self, connection, event): # 打印接收到的私人消息 print(f"收到私人消息 {event.source.split('!')[0]}:{event.arguments[0]}") @@ -168,13 +179,13 @@ def on_privmsg(self, connection, event): except: romm_id = "" # 更新room变量 - r.change_room_id(romm_id) + self.r.change_room_id(romm_id) # 加入并监听房间 - r.join_room(connection, event) + self.r.join_room(connection, event) # 修改房间密码 - r.change_password(connection, event) + self.r.change_password(connection, event) # 保存房间IDs - r.save_last_room_id() + self.r.save_last_room_id() # 启动定时任务 self.start_periodic_task() @@ -197,28 +208,28 @@ def on_pubmsg(self, connection, event): print(f'玩家{playerid}加入房间') # 发送欢迎消息 if "ATRI1024" not in playerid: - if b.beatmap_length != "" and r.game_start_time != "": - timeleft = int(b.beatmap_length)+10 - \ - int((datetime.now()-r.game_start_time).seconds) + if self.b.beatmap_length != "" and self.r.game_start_time != "": + timeleft = int(self.b.beatmap_length)+10 - \ + int((datetime.now()-self.r.game_start_time).seconds) text_timeleft = f'| 剩余游玩时间:{timeleft}s 请主人耐心等待哦~' else: timeleft = 0 text_Welcome = f'欢迎{playerid}酱~\(≧▽≦)/ 输入help获取指令详情' if timeleft > 0: - r.send_msg(connection, event, + self.r.send_msg(connection, event, text_Welcome+text_timeleft) else: - r.send_msg(connection, event, text_Welcome) + self.r.send_msg(connection, event, text_Welcome) # 如果第一次加入房间,更换房主,清空房主队列,设置FM - if len(p.player_list) == 0: - p.reset_host_list() - r.change_host(connection, event, playerid) - r.change_mods_to_FM(connection, event) + if len(self.p.player_list) == 0: + self.p.reset_host_list() + self.r.change_host(connection, event, playerid) + self.r.change_mods_to_FM(connection, event) # 加入房间队列,玩家队列 - p.add_host(playerid) - p.add_player(playerid) - print(f'玩家队列{p.player_list}') - print(f'房主队列{p.room_host_list}') + self.p.add_host(playerid) + self.p.add_player(playerid) + print(f'玩家队列{self.p.player_list}') + print(f'房主队列{self.p.room_host_list}') # 输出 self.export_json() # 离开房间 @@ -230,11 +241,11 @@ def on_pubmsg(self, connection, event): playerid = "" print(f'玩家{playerid}离开房间') # 不移除房主队列 - p.remove_player(playerid) + self.p.remove_player(playerid) # 房主离开立刻更换房主 - if playerid == p.room_host and len(p.player_list) != 0: - p.host_rotate(connection, event) - print(f'玩家队列{p.player_list}') + if playerid == self.p.room_host and len(self.p.player_list) != 0: + self.p.host_rotate(connection, event) + print(f'玩家队列{self.p.player_list}') # 输出 self.export_json() # 修改 on_pubmsg 方法中处理玩家列表的部分 @@ -242,12 +253,12 @@ def on_pubmsg(self, connection, event): players = re.findall(r'Slot \d+\s+(?:Not Ready|Ready)\s+(https://osu\.ppy\.sh/u/\d+\s+.+)', text) if players: for player_info in players: - player_id = p.extract_player_name(player_info) + player_id = self.p.extract_player_name(player_info) if player_id: - p.add_host(player_id) - p.add_player(player_id) - print(f'玩家队列{p.player_list}') - print(f'房主队列{p.room_host_list}') + self.p.add_host(player_id) + self.p.add_player(player_id) + print(f'玩家队列{self.p.player_list}') + print(f'房主队列{self.p.room_host_list}') # 输出 self.export_json() # 这个是加入房间后要把当前beatmap_id给change一下 @@ -255,7 +266,7 @@ def on_pubmsg(self, connection, event): match = re.search(r'https://osu\.ppy\.sh/b/(\d+)', text) if match: beatmap_id = match.group(1) - b.change_beatmap_id(beatmap_id) + self.b.change_beatmap_id(beatmap_id) # 谱面变化 if text.find("Beatmap changed to") != -1: @@ -267,28 +278,28 @@ def on_pubmsg(self, connection, event): beatmap_url = "" beatmap_id = "" - last_beatmap_id = b.beatmap_id + last_beatmap_id = self.b.beatmap_id if last_beatmap_id == "": last_beatmap_id = "3459231" - b.change_beatmap_id(beatmap_id) + self.b.change_beatmap_id(beatmap_id) # 获取谱面信息 - b.get_token() - b.get_beatmap_info() - - if b.check_beatmap_if_out_of_star(): - r.send_msg(connection, event, - f'{b.beatmap_star}*>{self.config.starlimit}* 请重新选择') - r.change_beatmap_to(connection, event, last_beatmap_id) - b.change_beatmap_id(last_beatmap_id) + self.b.get_token() + self.b.get_beatmap_info() + + if self.b.check_beatmap_if_out_of_star(): + self.r.send_msg(connection, event, + f'{self.b.beatmap_star}*>{self.config.starlimit}* 请重新选择') + self.r.change_beatmap_to(connection, event, last_beatmap_id) + self.b.change_beatmap_id(last_beatmap_id) return - if b.check_beatmap_if_out_of_time(): - r.send_msg(connection, event, - f'{b.beatmap_length}s>{self.config.timelimit}s 请重新选择') - r.change_beatmap_to(connection, event, last_beatmap_id) - b.change_beatmap_id(last_beatmap_id) + if self.b.check_beatmap_if_out_of_time(): + self.r.send_msg(connection, event, + f'{self.b.beatmap_length}s>{self.config.timelimit}s 请重新选择') + self.r.change_beatmap_to(connection, event, last_beatmap_id) + self.b.change_beatmap_id(last_beatmap_id) return - r.send_msg(connection, event, b.return_beatmap_info()) + self.r.send_msg(connection, event, self.b.return_beatmap_info()) # 输出 self.export_json() @@ -296,39 +307,39 @@ def on_pubmsg(self, connection, event): if text.find("became the host") != -1: # 尝试 try: - p.room_host = re.findall( + self.p.room_host = re.findall( r'.*(?= became the host)', text)[0] except: - p.room_host = "" - print(f'房主变为{p.room_host}') + self.p.room_host = "" + print(f'房主变为{self.p.room_host}') # 准备就绪,开始游戏 if text.find("All players are ready") != -1: - r.start_room(connection, event) + self.r.start_room(connection, event) # 开始游戏 if text.find("The match has started") != -1: # 将房主队列第一个人移动到最后 - p.host_rotate_pending(connection, event) - print(f'游戏开始,房主队列{p.room_host_list}') - p.clear_approved_list() + self.p.host_rotate_pending(connection, event) + print(f'游戏开始,房主队列{self.p.room_host_list}') + self.p.clear_approved_list() # 获取游戏开始时间 - r.set_game_start_time() + self.r.set_game_start_time() # 游戏结束,更换房主 if text.find("The match has finished") != -1: # 对比房主队列,去除离开的玩家,更新房主队列 - p.host_rotate(connection, event) - print(f'游戏结束,房主队列{p.room_host_list}') + self.p.host_rotate(connection, event) + print(f'游戏结束,房主队列{self.p.room_host_list}') # 换了房主以后立即清空投票列表 - p.approved_host_rotate_list.clear() - p.clear_approved_list() + self.p.approved_host_rotate_list.clear() + self.p.clear_approved_list() # 发送队列 - p.convert_host() - r.send_msg(connection, event, str( - f'当前队列:{p.room_host_list_apprence_text}')) + self.p.convert_host() + self.r.send_msg(connection, event, str( + f'当前队列:{self.p.room_host_list_apprence_text}')) # 重置游戏开始时间 - r.reset_game_start_time() + self.r.reset_game_start_time() # 游戏被丢弃 if text.find("Aborted the match") != -1: @@ -336,24 +347,24 @@ def on_pubmsg(self, connection, event): timeleft = int(b.beatmap_length)+10 - \ int((datetime.now()-r.game_start_time).seconds) if timeleft > 0: # 大于0代表没打,先不更换房主,退回队列 - p.reverse_host_pending(connection, event) + self.p.reverse_host_pending(connection, event) print("比赛被丢弃,房主队列退回") else: # 小于0代表已经打完,更换房主 # 对比房主队列,去除离开的玩家,更新房主队列 - p.host_rotate(connection, event) - print(f'游戏结束,房主队列{p.room_host_list}') + self.p.host_rotate(connection, event) + print(f'游戏结束,房主队列{self.p.room_host_list}') # 换了房主以后立即清空投票列表 - p.approved_host_rotate_list.clear() - p.clear_approved_list() + self.p.approved_host_rotate_list.clear() + self.p.clear_approved_list() # 发送队列 - p.convert_host() - r.send_msg(connection, event, str( + self.p.convert_host() + self.r.send_msg(connection, event, str( f'当前队列:{p.room_host_list_apprence_text}')) # 重置游戏开始时间 - r.reset_game_start_time() + self.r.reset_game_start_time() # bancho重启 if text.find("Bancho will be right back!") != -1: - r.send_msg(connection, event, + self.r.send_msg(connection, event, "Bancho重启中,房间将在2min后自动重启") self.restarting_task.start() @@ -361,55 +372,55 @@ def on_pubmsg(self, connection, event): # 投票丢弃游戏 if text in ["!abort", "!abort", "!ABORT", "!ABORT"]: - p.vote_for_abort(connection, event) + self.p.vote_for_abort(connection, event) # 投票开始游戏 if text in ["!start", "!start", "!START", "!START"]: - p.vote_for_start(connection, event) + self.p.vote_for_start(connection, event) # 投票跳过房主 if text in ["!skip", "!skip", "!SKIP", "!SKIP"]: - p.vote_for_host_rotate(connection, event) + self.p.vote_for_host_rotate(connection, event) # 投票关闭房间s if text in ["!close", "!close", "!CLOSE", "!CLOSE"]: - p.vote_for_close_room(connection, event) + self.p.vote_for_close_room(connection, event) # 手动查看队列,就只返回前面剩余多少人 if text in ["!queue", "!queue", "!QUEUE", "!QUEUE", "!q", "!q", "!Q", "!Q"]: p.convert_host() - index = p.remain_hosts_to_player(event.source.split('!')[0]) - r.send_msg(connection, event, str( + index = self.p.remain_hosts_to_player(event.source.split('!')[0]) + self.r.send_msg(connection, event, str( f'你前面剩余人数:{index}')) # 帮助 if text in ["help", "HELP", "!help", "!help", "!HELP", "!HELP", "!h", "!h", "!H", "!H"]: - r.send_msg(connection, event, r.help()) + self.r.send_msg(connection, event, self.r.help()) # ping if text in ["ping", "PING", "!ping", "!ping", "!PING", "!PING"]: - r.send_msg(connection, event, r'pong') + self.r.send_msg(connection, event, r'pong') # 快速查询成绩 if text in ["!pr", "!pr", "!PR", "!PR", "!p", "!p", "!P", "!P"]: - b.get_user_id(event.source.split('!')[0]) - detail_1 = b.get_recent_info(event.source.split('!')[0]) - pp.get_beatmap_file(beatmap_id=b.pr_beatmap_id) - print(b.pr_mods) - detail_2 = pp.calculate_pp_obj( - mods=b.pr_mods, combo=b.pr_maxcombo, acc=b.pr_acc, misses=b.pr_miss) - r.send_msg(connection, event, detail_1) - r.send_msg(connection, event, detail_2) + self.b.get_user_id(event.source.split('!')[0]) + detail_1 = self.b.get_recent_info(event.source.split('!')[0]) + self.pp.get_beatmap_file(beatmap_id=self.b.pr_beatmap_id) + print(self.b.pr_mods) + detail_2 = self.pp.calculate_pp_obj( + mods=self.b.pr_mods, combo=self.b.pr_maxcombo, acc=self.b.pr_acc, misses=self.b.pr_miss) + self.r.send_msg(connection, event, detail_1) + self.r.send_msg(connection, event, detail_2) # 快速当前谱面成绩 if text in ["!s", "!s", "!S", "!S"]: - b.get_user_id(event.source.split('!')[0]) - s = b.get_beatmap_score(event.source.split('!')[0]) - r.send_msg(connection, event, s) + self.b.get_user_id(event.source.split('!')[0]) + s = self.b.get_beatmap_score(event.source.split('!')[0]) + self.r.send_msg(connection, event, s) if s.find("未查询到") == -1: - pp.get_beatmap_file(beatmap_id=b.beatmap_id) - r.send_msg(connection, event, pp.calculate_pp_obj( - mods=b.pr_mods, combo=b.pr_maxcombo, acc=b.pr_acc, misses=b.pr_miss)) + self.pp.get_beatmap_file(beatmap_id=self.b.beatmap_id) + self.r.send_msg(connection, event, self.pp.calculate_pp_obj( + mods=self.b.pr_mods, combo=self.b.pr_maxcombo, acc=self.b.pr_acc, misses=self.b.pr_miss)) # 快速查询谱面得分情况 if text.find("!m+") != -1: @@ -417,52 +428,52 @@ def on_pubmsg(self, connection, event): modslist_str = re.findall(r'\+(.*)', event.arguments[0])[0] except: modslist_str = "" - pp.get_beatmap_file(beatmap_id=b.beatmap_id) - r.send_msg(connection, event, pp.calculate_pp_fully(modslist_str)) + self.pp.get_beatmap_file(beatmap_id=self.b.beatmap_id) + self.r.send_msg(connection, event, self.pp.calculate_pp_fully(modslist_str)) if text.find("!M+") != -1: try: modslist_str = re.findall(r'\+(.*)', event.arguments[0])[0] except: modslist_str = "" - pp.get_beatmap_file(beatmap_id=b.beatmap_id) - r.send_msg(connection, event, pp.calculate_pp_fully(modslist_str)) + self.pp.get_beatmap_file(beatmap_id=self.b.beatmap_id) + self.r.send_msg(connection, event, self.pp.calculate_pp_fully(modslist_str)) if text.find("!M+") != -1: try: modslist_str = re.findall(r'\+(.*)', event.arguments[0])[0] except: modslist_str = "" - pp.get_beatmap_file(beatmap_id=b.beatmap_id) - r.send_msg(connection, event, pp.calculate_pp_fully(modslist_str)) + self.pp.get_beatmap_file(beatmap_id=self.b.beatmap_id) + self.r.send_msg(connection, event, self.pp.calculate_pp_fully(modslist_str)) if text.find("!M+") != -1: try: modslist_str = re.findall(r'\+(.*)', event.arguments[0])[0] except: modslist_str = "" - pp.get_beatmap_file(beatmap_id=b.beatmap_id) - r.send_msg(connection, event, pp.calculate_pp_fully(modslist_str)) + self.pp.get_beatmap_file(beatmap_id=self.b.beatmap_id) + self.r.send_msg(connection, event, self.pp.calculate_pp_fully(modslist_str)) if text in ["!m", "!m", "!M", "!M"]: - pp.get_beatmap_file(beatmap_id=b.beatmap_id) - r.send_msg(connection, event,pp.calculate_pp_fully('')) + self.pp.get_beatmap_file(beatmap_id=self.b.beatmap_id) + self.r.send_msg(connection, event,self.pp.calculate_pp_fully('')) # 快速获取剩余时间 大约10s游戏延迟 if text in ["!ttl", "!ttl", "!TTL", "!TTL"]: if b.beatmap_length != "" and r.game_start_time != "": timeleft = int(b.beatmap_length)+10 - \ - int((datetime.now()-r.game_start_time).seconds) - r.send_msg(connection, event, f'剩余游玩时间:{timeleft}s') + int((datetime.now()-self.r.game_start_time).seconds) + self.r.send_msg(connection, event, f'剩余游玩时间:{timeleft}s') else: - r.send_msg(connection, event, f'剩余游玩时间:未知') + self.r.send_msg(connection, event, f'剩余游玩时间:未知') if text in ["!i", "!i"]: - b.get_token() - b.get_beatmap_info() - r.send_msg(connection, event, b.return_beatmap_info()) + self.b.get_token() + self.b.get_beatmap_info() + self.r.send_msg(connection, event, self.b.return_beatmap_info()) if text in ["!about", "!about", "!ABOUT", "!ABORT"]: - r.send_msg(connection, event, + self.r.send_msg(connection, event, "[https://github.com/Ohdmire/osu-ircbot-py ATRI高性能bot]") except Exception as e: @@ -1227,5 +1238,5 @@ def calculate_pp_obj(self, mods, acc, misses, combo): b = Beatmap(config) pp = PP() - client = MyIRCClient(osu_server, osu_port, config) + client = MyIRCClient(osu_server, osu_port, config, p, r, b, pp) client.start() From 1a1ba6a1a19cf61c0587268efc504712db5c7eb0 Mon Sep 17 00:00:00 2001 From: LittleStone <1526631427@qq.com> Date: Thu, 7 Nov 2024 17:32:16 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0IRC=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- irc_dlient.py | 79 +++--- tests/test_irc_client.py | 547 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 591 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index a02f34c..4c483ca 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,8 @@ python3 irc_dlient.py 执行单元测试 ```bash pip install coverage -coverage run -m unittest discover -s tests +coverage run -m unittest discover -s tests -v +coverage report -m ``` diff --git a/irc_dlient.py b/irc_dlient.py index 0946544..54e57f0 100755 --- a/irc_dlient.py +++ b/irc_dlient.py @@ -51,10 +51,30 @@ def __init__(self, server, port, config, p, r, b, pp): self.r = r self.b = b self.pp = pp - self.stop_event = threading.Event() + self.connection = None + self.event = None + self.has_connected = threading.Event() + self.reactor_stoped = threading.Event() + self.reactor_task = threading.Thread(target=self.process_forever) + self.sender_task = threading.Thread(target=(self.send_loop)) def start(self): - self.irc_react.process_forever() + self.reactor_task.start() + print("事件循环线程启动") + self.has_connected.wait() + self.sender_task.start() + print("发送线程启动") + self.reactor_task.join() + print("事件循环线程结束") + self.sender_task.join() + print("发送线程结束") + + def process_forever(self): + try: + while not self.reactor_stoped.is_set(): + self.irc_react.process_once(timeout=0.2) + except Exception as e: + print(f"事件循环线程发生错误: {e}") def reset_all(self): # 重置 @@ -154,19 +174,27 @@ def on_connect(self, connection, event): # 如果房间不存在 else: self.r.create_room(connection, event) - - def send_loop(): - while not self.stop_event.is_set(): - message = input(">") - self.r.send_msg(connection, event, message) - - threading.Thread(target=(send_loop)).start() + self.connection = connection + self.event = event + self.has_connected.set() + + def send_loop(self): + while True: + message = input() + if message == "stop": + self.stop() + break + self.r.send_msg(self.connection, self.event, message) def stop(self): - self.stop_event.set() + print("IRC客户端已响应停止") if self.timer: self.stop_periodic_task() - print("IRC客户端已停止") + print("断开所有连接") + self.irc_react.disconnect_all() + print("处理最后一个事件") + self.irc_react.process_once(timeout=0.2) + self.reactor_stoped.set() def on_privmsg(self, connection, event): # 打印接收到的私人消息 @@ -196,7 +224,7 @@ def on_pubmsg(self, connection, event): print(f"收到频道消息 {event.source.split('!')[0]}:{event.arguments[0]}") text = event.arguments[0] # 判断是否是banchobot发送的消息 - if event.source.find("BanchoBot") != -1 or event.source.find("ATRI1024") != -1: + if event.source.find("BanchoBot:") != -1 or event.source.find("ATRI1024:") != -1: # 加入房间 if text.find("joined in slot") != -1: # 尝试 @@ -388,7 +416,7 @@ def on_pubmsg(self, connection, event): # 手动查看队列,就只返回前面剩余多少人 if text in ["!queue", "!queue", "!QUEUE", "!QUEUE", "!q", "!q", "!Q", "!Q"]: - p.convert_host() + self.p.convert_host(connection, event) index = self.p.remain_hosts_to_player(event.source.split('!')[0]) self.r.send_msg(connection, event, str( f'你前面剩余人数:{index}')) @@ -423,30 +451,7 @@ def on_pubmsg(self, connection, event): mods=self.b.pr_mods, combo=self.b.pr_maxcombo, acc=self.b.pr_acc, misses=self.b.pr_miss)) # 快速查询谱面得分情况 - if text.find("!m+") != -1: - try: - modslist_str = re.findall(r'\+(.*)', event.arguments[0])[0] - except: - modslist_str = "" - self.pp.get_beatmap_file(beatmap_id=self.b.beatmap_id) - self.r.send_msg(connection, event, self.pp.calculate_pp_fully(modslist_str)) - if text.find("!M+") != -1: - try: - modslist_str = re.findall(r'\+(.*)', event.arguments[0])[0] - except: - modslist_str = "" - self.pp.get_beatmap_file(beatmap_id=self.b.beatmap_id) - self.r.send_msg(connection, event, self.pp.calculate_pp_fully(modslist_str)) - - if text.find("!M+") != -1: - try: - modslist_str = re.findall(r'\+(.*)', event.arguments[0])[0] - except: - modslist_str = "" - self.pp.get_beatmap_file(beatmap_id=self.b.beatmap_id) - self.r.send_msg(connection, event, self.pp.calculate_pp_fully(modslist_str)) - - if text.find("!M+") != -1: + if text.find("!m+") != -1 or text.find("!m+") != -1 or text.find("!M+") != -1 or text.find("!M+") != -1: try: modslist_str = re.findall(r'\+(.*)', event.arguments[0])[0] except: diff --git a/tests/test_irc_client.py b/tests/test_irc_client.py index 899a06c..8db4516 100644 --- a/tests/test_irc_client.py +++ b/tests/test_irc_client.py @@ -1,9 +1,556 @@ import unittest import requests +import time from unittest.mock import patch, MagicMock from io import StringIO import irc_dlient +class TestMyIRCClient(unittest.TestCase): + def setUp(self): + # 构造模拟config + self.mock_config = MagicMock() + self.mock_config.osuclientid = 'test_client_id' + self.mock_config.osuclientsecret = 'test_client_secret' + self.mock_config.timelimit = '100' # Example value + self.mock_config.starlimit = '5.0' + self.mock_config.mpname = 'TestMP' + self.mock_config.mppassword = 'testpassword' + + # 创建Player、Room、Beatmap和PP实例 + self.player = irc_dlient.Player() + self.room = irc_dlient.Room(self.mock_config) + self.beatmap = irc_dlient.Beatmap(self.mock_config) + self.pp = irc_dlient.PP() + + # 模拟Room类的方法 + self.room.join_room = MagicMock() + self.room.change_password = MagicMock() + self.room.get_mp_settings = MagicMock() + self.room.create_room = MagicMock() + self.room.close_room = MagicMock() + self.room.change_host = MagicMock() + self.room.start_room = MagicMock() + self.room.abort_room = MagicMock() + self.room.change_beatmap_to = MagicMock() + self.room.change_mods_to_FM = MagicMock() + self.room.get_mp_settings = MagicMock() + self.room.send_msg = MagicMock() + self.room.change_room_id = MagicMock() + self.room.save_last_room_id = MagicMock() + + # 模拟PP类的方法 + self.pp.calculate_pp_fully = MagicMock(return_value="mock_pp_result") + self.pp.calculate_pp_obj = MagicMock(return_value="mock_pp_obj_result") + self.pp.get_beatmap_file = MagicMock() + + # 模拟Beatmap类的方法 + self.beatmap.get_match_info = MagicMock(return_value={'events': ['match-disbanded']}) + self.beatmap.get_recent_info = MagicMock(return_value="mock_recent_info") + self.beatmap.get_user_id = MagicMock() + self.beatmap.get_token = MagicMock() + self.beatmap.get_beatmap_info = MagicMock() + + # 模拟Player类的方法 + self.player.vote_for_abort = MagicMock() + self.player.vote_for_start = MagicMock() + self.player.vote_for_host_rotate = MagicMock() + self.player.vote_for_close_room = MagicMock() + self.player.convert_host = MagicMock() + self.player.extract_player_name = MagicMock(return_value="BanchoBot114") + + # 创建MyIRCClient实例,但不实际连接服务器 + with patch('irc.client.Reactor') as MockReactor: + self.mock_reactor = MockReactor.return_value + self.mock_server = self.mock_reactor.server.return_value + self.client = irc_dlient.MyIRCClient("irc.ppy.sh", 6667, self.mock_config, self.player, self.room, self.beatmap, self.pp) + + def tearDown(self): + self.client.stop() + time.sleep(0.1) + + @patch('builtins.input', side_effect=["stop"]) + @patch('builtins.print') + def test_on_connect_existing_room(self, mock_print, mock_input): + """ + 测试已存在房间 + """ + # 模拟获取上一个房间ID + self.room.room_id = "#mp_114514" + self.room.get_last_room_id = MagicMock(return_value="#mp_114514") + self.client.check_last_room_status = MagicMock(return_value=True) + + # 创建一个模拟的连接和事件 + mock_connection = MagicMock() + mock_event = MagicMock() + + # 调用on_connect + self.client.on_connect(mock_connection, mock_event) + time.sleep(0.1) + + # 断言加入房间和修改密码被调用 + self.room.join_room.assert_called_with(mock_connection, mock_event) + self.room.change_password.assert_called_with(mock_connection, mock_event) + self.room.get_mp_settings.assert_called_with(mock_connection, mock_event) + + # 断言已连接事件 + self.assertTrue(self.client.has_connected.is_set()) + + + @patch('builtins.input', side_effect=["stop"]) + @patch('builtins.print') + def test_on_connect_new_room(self, mock_print, mock_input): + """ + 测试新房间 + """ + # 模拟获取上一个房间ID为空 + self.room.get_last_room_id = MagicMock(return_value="") + self.client.check_last_room_status = MagicMock(return_value=False) + + # 创建一个模拟的连接和事件 + mock_connection = MagicMock() + mock_event = MagicMock() + + # 调用on_connect,启动发送消息的线程 + self.client.on_connect(mock_connection, mock_event) + + # 等待线程运行,确保input被调用 + time.sleep(0.2) # 根据需要调整等待时间 + + # 断言创建房间被调用 + self.room.create_room.assert_called_with(mock_connection, mock_event) + + # 断言已连接事件 + self.assertTrue(self.client.has_connected.is_set()) + + + @patch('builtins.input', side_effect=["!start", "stop"]) + @patch('builtins.print') + def test_on_pubmsg_handle_start_command(self, mock_print, mock_input): + """ + 测试处理!start命令 + """ + # 模拟公共消息事件 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["!start"] + # 一个叫BanchoBot114的用户发送了!start命令 + mock_event.source = "收到频道消息 BanchoBot114:!start" + + # 调用on_pubmsg + self.client.on_pubmsg(mock_connection, mock_event) + + # 断言投票开始游戏的方法被调用 + self.player.vote_for_start.assert_called_with(mock_connection, mock_event) + + @patch('builtins.input', side_effect=["!abort", "stop"]) + @patch('builtins.print') + def test_on_pubmsg_handle_abort_command(self, mock_print, mock_input): + """ + 测试处理!abort命令 + """ + # 模拟公共消息事件 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["!abort"] + # 一个叫BanchoBot114的用户发送了!abort命令 + mock_event.source = "收到频道消息 BanchoBot114:!abort" + + # 调用on_pubmsg + self.client.on_pubmsg(mock_connection, mock_event) + + # 断言投票丢弃游戏的方法被调用 + self.client.p.vote_for_abort.assert_called_with(mock_connection, mock_event) + + @patch('builtins.input', side_effect=["!skip", "stop"]) + @patch('builtins.print') + def test_on_pubmsg_handle_skip_command(self, mock_print, mock_input): + """ + 测试处理!skip命令 + """ + # 模拟公共消息事件 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["!skip"] + # 一个叫BanchoBot114的用户发送了!skip命令 + mock_event.source = "收到频道消息 BanchoBot114:!skip" + + # 调用on_pubmsg + self.client.on_pubmsg(mock_connection, mock_event) + + # 断言投票跳过房主的方法被调用 + self.client.p.vote_for_host_rotate.assert_called_with(mock_connection, mock_event) + + @patch('builtins.input', side_effect=["!close", "stop"]) + @patch('builtins.print') + def test_on_pubmsg_handle_close_command(self, mock_print, mock_input): + """ + 测试处理!close命令 + """ + # 模拟公共消息事件 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["!close"] + # 一个叫BanchoBot114的用户发送了!close命令 + mock_event.source = "收到频道消息 BanchoBot114:!close" + + # 调用on_pubmsg + self.client.on_pubmsg(mock_connection, mock_event) + + # 断言投票关闭房间的方法被调用 + self.client.p.vote_for_close_room.assert_called_with(mock_connection, mock_event) + + @patch('builtins.input', side_effect=["!queue", "stop"]) + @patch('builtins.print') + def test_on_pubmsg_handle_queue_command(self, mock_print, mock_input): + """ + 测试处理!queue命令 + """ + # 模拟公共消息事件 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["!queue"] + # 一个叫BanchoBot114的用户发送了!queue命令 + mock_event.source = "收到频道消息 BanchoBot114:!queue" + self.client.p.remain_hosts_to_player = MagicMock(return_value=1) + + # 调用on_pubmsg + self.client.on_pubmsg(mock_connection, mock_event) + + # 断言转换房主的方法被调用 + self.client.p.convert_host.assert_called() + # 断言剩余人数获取方法被调用 + self.client.p.remain_hosts_to_player.assert_called_with("收到频道消息 BanchoBot114:") + # 断言发送消息的方法被调用 + self.client.r.send_msg.assert_called_with(mock_connection, mock_event, "你前面剩余人数:1") + + @patch('builtins.input', side_effect=["help", "stop"]) + @patch('builtins.print') + def test_on_pubmsg_handle_help_command(self, mock_print, mock_input): + """ + 测试处理help命令 + """ + # 模拟公共消息事件 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["help"] + # 一个叫BanchoBot114的用户发送了help命令 + mock_event.source = "收到频道消息 BanchoBot114:help" + + # 调用on_pubmsg + self.client.on_pubmsg(mock_connection, mock_event) + + # 断言帮助信息发送的方法被调用 + self.client.r.send_msg.assert_called_with(mock_connection, mock_event, self.client.r.help()) + + @patch('builtins.input', side_effect=["!pr", "stop"]) + @patch('builtins.print') + def test_on_pubmsg_handle_pr_command(self, mock_print, mock_input): + """ + 测试处理!pr命令 + """ + # 模拟公共消息事件 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["!pr"] + # 一个叫BanchoBot114的用户发送了!pr命令 + mock_event.source = "收到频道消息 BanchoBot114:!pr" + + # 调用on_pubmsg + self.client.on_pubmsg(mock_connection, mock_event) + + # 断言获取用户ID的方法被调用 + self.client.b.get_user_id.assert_called_with(mock_event.source.split('!')[0]) + # 断言获取最近信息的方法被调用 + self.client.b.get_recent_info.assert_called_with(mock_event.source.split('!')[0]) + # 断言获取谱面文件的方法被调用 + self.client.pp.get_beatmap_file.assert_called_with(beatmap_id=self.client.b.pr_beatmap_id) + # 断言计算PP对象的方法被调用 + self.client.pp.calculate_pp_obj.assert_called_with( + mods=self.client.b.pr_mods, + combo=self.client.b.pr_maxcombo, + acc=self.client.b.pr_acc, + misses=self.client.b.pr_miss + ) + # 断言发送消息的方法被调用两次 + self.assertEqual(self.client.r.send_msg.call_count, 2) + + @patch('builtins.input', side_effect=["!ping", "stop"]) + @patch('builtins.print') + def test_on_pubmsg_handle_ping_command(self, mock_print, mock_input): + """ + 测试处理!ping命令 + """ + # 模拟公共消息事件 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["!ping"] + # 一个叫BanchoBot114的用户发送了!ping命令 + mock_event.source = "收到频道消息 BanchoBot114:!ping" + + # 调用on_pubmsg + self.client.on_pubmsg(mock_connection, mock_event) + + # 断言发送'ping'响应的方法被调用 + self.client.r.send_msg.assert_called_with(mock_connection, mock_event, 'pong') + + @patch('builtins.input', side_effect=["!m+", "stop"]) + @patch('builtins.print') + def test_on_pubmsg_handle_m_plus_command(self, mock_print, mock_input): + """ + 测试处理!m+命令 + """ + # 模拟公共消息事件 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["!m+HardRock"] + # 一个叫BanchoBot114的用户发送了!m+HardRock命令 + mock_event.source = "收到频道消息 BanchoBot114:!m+HardRock" + + # 调用on_pubmsg + self.client.on_pubmsg(mock_connection, mock_event) + + # 断言获取谱面文件的方法被调用 + self.client.pp.get_beatmap_file.assert_called_with(beatmap_id=self.client.b.beatmap_id) + # 断言计算PP完全的方法被调用 + self.client.pp.calculate_pp_fully.assert_called_with('HardRock') + # 断言发送消息的方法被调用 + self.client.r.send_msg.assert_called_with(mock_connection, mock_event, self.client.pp.calculate_pp_fully('HardRock')) + + @patch('builtins.input', side_effect=["!about", "stop"]) + @patch('builtins.print') + def test_on_pubmsg_handle_about_command(self, mock_print, mock_input): + """ + 测试处理!about命令 + """ + # 模拟公共消息事件 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["!about"] + # 一个叫BanchoBot114的用户发送了!about命令 + mock_event.source = "收到频道消息 BanchoBot114:!about" + + # 调用on_pubmsg + self.client.on_pubmsg(mock_connection, mock_event) + + # 断言发送关于信息的方法被调用 + self.client.r.send_msg.assert_called_with( + mock_connection, + mock_event, + "[https://github.com/Ohdmire/osu-ircbot-py ATRI高性能bot]" + ) + + @patch('builtins.input', side_effect=["!start", "stop"]) + @patch('builtins.print') + def test_on_pubmsg_handle_start_command_with_full_width_exclamation(self, mock_print, mock_input): + """ + 测试处理全角感叹号的!start命令 + """ + # 模拟公共消息事件 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["!start"] # 全角感叹号 + # 一个叫BanchoBot114的用户发送了!start命令 + mock_event.source = "收到频道消息 BanchoBot114:!start" + + # 调用on_pubmsg + self.client.on_pubmsg(mock_connection, mock_event) + + # 断言投票开始游戏的方法被调用 + self.client.p.vote_for_start.assert_called_with(mock_connection, mock_event) + + @patch('builtins.input', side_effect=["!i", "stop"]) + @patch('builtins.print') + def test_on_pubmsg_handle_start_command_with_full_width_exclamation(self, mock_print, mock_input): + """ + 测试处理全角感叹号的!i命令 + """ + # 模拟公共消息事件 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["!i"] # 全角感叹号 + # 一个叫BanchoBot114的用户发送了!i命令 + mock_event.source = "收到频道消息 BanchoBot114:!i" + self.client.b.beatmap_mirror_sayo_url = "https://osu.sayobot.cn/home?search=1" + self.client.b.beatmap_mirror_inso_url = "http://inso.link/yukiho/?b=1" + + # 调用on_pubmsg + self.client.on_pubmsg(mock_connection, mock_event) + + # 断言方法被调用 + self.client.b.get_token.assert_called() + self.client.b.get_beatmap_info.assert_called() + self.client.r.send_msg.assert_called_with(mock_connection, mock_event, ' | 0*| [ - ]| bpm: length:0s| ar: cs: od: hp:| [https://osu.sayobot.cn/home?search=1 Sayobot] OR [http://inso.link/yukiho/?b=1 inso]') + + @patch('builtins.print') + def test_on_privmsg_handle_room_creation_message_failure(self, mock_print): + """ + 测试处理来自BanchoBot的房间创建消息失败的情况(消息格式错误) + """ + # 模拟接收私有消息事件,格式错误 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["Created the tournament match"] # 缺少房间ID + mock_event.source = "BanchoBot114!user@host" + + # 调用on_privmsg + self.client.on_privmsg(mock_connection, mock_event) + + # 断言room_id为空,并检查相关方法的调用 + self.client.r.change_room_id.assert_called_with("") + self.client.r.join_room.assert_called_with(mock_connection, mock_event) + self.client.r.change_password.assert_called_with(mock_connection, mock_event) + self.client.r.save_last_room_id.assert_called() + self.assertTrue(self.client.timer) + + @patch('builtins.print') + def test_on_privmsg_handle_non_bancho_bot_message(self, mock_print): + """ + 测试处理来自非BanchoBot的私有消息 + """ + # 模拟接收私有消息事件,非BanchoBot发送 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["Some random message"] + mock_event.source = "收到消息 BanchoBot:Some random message" + + # 调用on_privmsg + self.client.on_privmsg(mock_connection, mock_event) + + # 断言相关方法未被调用 + self.client.r.change_room_id.assert_not_called() + self.client.r.join_room.assert_not_called() + self.client.r.change_password.assert_not_called() + self.client.r.save_last_room_id.assert_not_called() + self.assertFalse(self.client.timer) + + @patch('builtins.input', side_effect=["stop"]) + @patch('builtins.print') + def test_on_pubmsg_handle_exception_in_room_creation(self, mock_print, mock_input): + """ + 测试处理来自BanchoBot的房间创建消息时发生异常的情况 + """ + # 模拟接收频道消息事件 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["joined in slot"] + mock_event.source = "收到频道消息 BanchoBot:123 joined in slot" + + # 设置send_msg方法抛出异常 + self.client.r.send_msg.side_effect = Exception("模拟异常") + + # 调用on_pubmsg + try: + self.client.on_pubmsg(mock_connection, mock_event) + except Exception as e: + self.client.stop_periodic_task() + + # 断言打印了错误信息 + mock_print.assert_called_with(f'-----------------未知错误---------------------\n模拟异常') + + # @patch('builtins.print') + # def test_on_privmsg_handle_multiple_room_creation_messages(self, mock_print): + # """ + # 测试处理连续多条来自BanchoBot的房间创建消息 + # """ + # # 模拟接收第一个私有消息事件 + # mock_connection1 = MagicMock() + # mock_event1 = MagicMock() + # mock_event1.arguments = ["Created the tournament match (123456)"] + # mock_event1.source = "收到消息 BanchoBot:Created the tournament match (123456)" + + # self.client.on_privmsg(mock_connection1, mock_event1) + + # # 断言第一次调用 + # self.client.r.change_room_id.assert_called_with("#mp_123456") + # self.client.r.join_room.assert_called_with(mock_connection1, mock_event1) + # self.client.r.change_password.assert_called_with(mock_connection1, mock_event1) + # self.client.r.save_last_room_id.assert_called() + # self.assertTrue(self.client.timer) + + # # 重置mock + # self.client.r.change_room_id.reset_mock() + # self.client.r.join_room.reset_mock() + # self.client.r.change_password.reset_mock() + # self.client.r.save_last_room_id.reset_mock() + + # # 模拟接收第二个私有消息事件 + # mock_connection2 = MagicMock() + # mock_event2 = MagicMock() + # mock_event2.arguments = ["Created the tournament match (654321)"] + # mock_event2.source = "收到消息 BanchoBot:Created the tournament match (654321)" + + # self.client.on_privmsg(mock_connection2, mock_event2) + + # # 断言第二次调用 + # self.client.r.change_room_id.assert_called_with("#mp_654321") + # self.client.r.join_room.assert_called_with(mock_connection2, mock_event2) + # self.client.r.change_password.assert_called_with(mock_connection2, mock_event2) + # self.client.r.save_last_room_id.assert_called() + # self.assertTrue(self.client.timer) + + @patch('builtins.print') + def test_on_pubmsg_handle_bancho_bot_room_created(self, mock_print): + """ + 测试处理来自BanchoBot的房间创建成功消息 + """ + # 模拟接收频道消息事件 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["Slot 1 Ready https://osu.ppy.sh/u/1234567890 BanchoBot114"] + mock_event.source = "收到频道消息 BanchoBot:Slot 1 Ready https://osu.ppy.sh/u/1234567890 BanchoBot114 Host" + + # 调用on_pubmsg + self.client.on_pubmsg(mock_connection, mock_event) + + # 断言 + self.assertEqual("BanchoBot114", self.client.p.room_host_list[0]) + self.assertEqual("BanchoBot114", self.client.p.player_list[0]) + + @patch('builtins.print') + def test_on_pubmsg_handle_beatmap_changed_message(self, mock_print): + """ + 测试处理来自BanchoBot的谱面变化消息 + """ + # 模拟接收频道消息事件 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["Beatmap changed to (https://osu.ppy.sh/b/1234567890)"] + mock_event.source = "收到频道消息 BanchoBot:Beatmap changed to (https://osu.ppy.sh/b/1234567890)" + self.client.b.beatmap_id = "" + + self.client.b.check_beatmap_if_out_of_star = MagicMock(return_value=True) + self.client.on_pubmsg(mock_connection, mock_event) + self.assertEqual("3459231", self.client.b.beatmap_id) + + self.client.b.check_beatmap_if_out_of_star = MagicMock(return_value=False) + self.client.b.check_beatmap_if_out_of_time = MagicMock(return_value=True) + self.client.on_pubmsg(mock_connection, mock_event) + self.assertEqual("3459231", self.client.b.beatmap_id) + + self.client.b.beatmap_id = "1" + self.client.b.check_beatmap_if_out_of_star = MagicMock(return_value=False) + self.client.b.check_beatmap_if_out_of_time = MagicMock(return_value=False) + self.client.on_pubmsg(mock_connection, mock_event) + self.assertEqual("1234567890", self.client.b.beatmap_id) + self.client.r.send_msg.assert_called() + + @patch('builtins.print') + def test_on_pubmsg_handle_room_host_changed_message(self, mock_print): + """ + 测试处理来自BanchoBot的房间房主变化消息 + """ + # 模拟接收频道消息事件 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["BanchoBot114 became the host"] + mock_event.source = "收到频道消息 BanchoBot:BanchoBot114 became the host" + + # 调用on_pubmsg + self.client.on_pubmsg(mock_connection, mock_event) + + # 断言 + self.assertEqual("BanchoBot114", self.client.p.room_host) + class TestConfig(unittest.TestCase): @patch('irc_dlient.configparser.ConfigParser') @patch('irc_dlient.chardet.detect') From d4af968fdb62882c2dd9cef91ac759448ceb849c Mon Sep 17 00:00:00 2001 From: LittleStone <1526631427@qq.com> Date: Thu, 7 Nov 2024 23:44:41 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0PP=20ut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- irc_dlient.py | 42 ++++++++++--------- tests/test_irc_client.py | 91 ++++++++++++++++++++++++++++++---------- 2 files changed, 92 insertions(+), 41 deletions(-) diff --git a/irc_dlient.py b/irc_dlient.py index 54e57f0..91806e8 100755 --- a/irc_dlient.py +++ b/irc_dlient.py @@ -107,18 +107,19 @@ def stop_periodic_task(self): def check_last_room_status(self,last_room_id): if last_room_id == "": return False - self.b.get_token() try: + self.b.get_token() text = self.b.get_match_info(re.findall(r'\d+', last_room_id)[0]) + # match-disbanded #比赛关闭 + if "match-disbanded" in str(text['events']): + return False + else: + self.r.change_room_id(last_room_id) + return True except: - text = "" - # match-disbanded #比赛关闭 - if "match-disbanded" in str(text['events']): + print("获取上一个房间失败") return False - else: - self.r.change_room_id(last_room_id) - return True - + # 这是检查房间状态的流程 用于定时任务 def check_room_status(self, room_id): self.b.get_token() @@ -221,10 +222,11 @@ def on_pubmsg(self, connection, event): try: # 打印接收到的消息 + print(event.source) print(f"收到频道消息 {event.source.split('!')[0]}:{event.arguments[0]}") text = event.arguments[0] # 判断是否是banchobot发送的消息 - if event.source.find("BanchoBot:") != -1 or event.source.find("ATRI1024:") != -1: + if event.source.find("BanchoBot!") != -1 or event.source.find("ATRI1024!") != -1: # 加入房间 if text.find("joined in slot") != -1: # 尝试 @@ -769,17 +771,21 @@ def get_token(self): try: url = 'https://osu.ppy.sh/oauth/token' data = { - 'client_id': self.osu_client_id, - 'client_secret': self.osu_client_secret, - 'grant_type': 'client_credentials', - 'scope': 'public' + "client_id": self.osu_client_id, + "client_secret": self.osu_client_secret, + "grant_type": "client_credentials", + "scope": "public" } - response = requests.post(url, data=data) + headers = { + "Content-Type": "application/x-www-form-urlencoded", + "Accept": "application/json" + } + response = requests.post(url, data=data, headers=headers) response.raise_for_status() # 如果请求失败,这会抛出一个异常 self.osu_token = response.json()['access_token'] - except: + except Exception as e: self.osu_token = "" - print("获取访问令牌失败") + print(f"获取访问令牌失败,错误信息:{e}") # 使用访问令牌查询 def get_beatmap_info(self): @@ -1044,13 +1050,9 @@ def get_beatmap_file(self, beatmap_id): def calculate_pp_fully(self, mods): try: self.mods = mods - beatmap = rosu.Beatmap(path=f"./maps/{self.beatmap_id}.osu") - max_perf = rosu.Performance(mods=mods) - attrs = max_perf.calculate(beatmap) - self.maxpp = attrs.pp # 计算maxbeatmapcombo diff --git a/tests/test_irc_client.py b/tests/test_irc_client.py index 8db4516..50f4e84 100644 --- a/tests/test_irc_client.py +++ b/tests/test_irc_client.py @@ -4,6 +4,7 @@ from unittest.mock import patch, MagicMock from io import StringIO import irc_dlient +import rosu_pp_py as rosu class TestMyIRCClient(unittest.TestCase): def setUp(self): @@ -134,7 +135,7 @@ def test_on_pubmsg_handle_start_command(self, mock_print, mock_input): mock_event = MagicMock() mock_event.arguments = ["!start"] # 一个叫BanchoBot114的用户发送了!start命令 - mock_event.source = "收到频道消息 BanchoBot114:!start" + mock_event.source = "BanchoBot114!user@ppy.sh" # 调用on_pubmsg self.client.on_pubmsg(mock_connection, mock_event) @@ -153,7 +154,7 @@ def test_on_pubmsg_handle_abort_command(self, mock_print, mock_input): mock_event = MagicMock() mock_event.arguments = ["!abort"] # 一个叫BanchoBot114的用户发送了!abort命令 - mock_event.source = "收到频道消息 BanchoBot114:!abort" + mock_event.source = "BanchoBot114!user@ppy.sh" # 调用on_pubmsg self.client.on_pubmsg(mock_connection, mock_event) @@ -172,7 +173,7 @@ def test_on_pubmsg_handle_skip_command(self, mock_print, mock_input): mock_event = MagicMock() mock_event.arguments = ["!skip"] # 一个叫BanchoBot114的用户发送了!skip命令 - mock_event.source = "收到频道消息 BanchoBot114:!skip" + mock_event.source = "BanchoBot114!user@ppy.sh" # 调用on_pubmsg self.client.on_pubmsg(mock_connection, mock_event) @@ -191,7 +192,7 @@ def test_on_pubmsg_handle_close_command(self, mock_print, mock_input): mock_event = MagicMock() mock_event.arguments = ["!close"] # 一个叫BanchoBot114的用户发送了!close命令 - mock_event.source = "收到频道消息 BanchoBot114:!close" + mock_event.source = "BanchoBot114!user@ppy.sh" # 调用on_pubmsg self.client.on_pubmsg(mock_connection, mock_event) @@ -210,7 +211,7 @@ def test_on_pubmsg_handle_queue_command(self, mock_print, mock_input): mock_event = MagicMock() mock_event.arguments = ["!queue"] # 一个叫BanchoBot114的用户发送了!queue命令 - mock_event.source = "收到频道消息 BanchoBot114:!queue" + mock_event.source = "BanchoBot114!user@ppy.sh" self.client.p.remain_hosts_to_player = MagicMock(return_value=1) # 调用on_pubmsg @@ -219,7 +220,7 @@ def test_on_pubmsg_handle_queue_command(self, mock_print, mock_input): # 断言转换房主的方法被调用 self.client.p.convert_host.assert_called() # 断言剩余人数获取方法被调用 - self.client.p.remain_hosts_to_player.assert_called_with("收到频道消息 BanchoBot114:") + self.client.p.remain_hosts_to_player.assert_called_with("BanchoBot114") # 断言发送消息的方法被调用 self.client.r.send_msg.assert_called_with(mock_connection, mock_event, "你前面剩余人数:1") @@ -234,7 +235,7 @@ def test_on_pubmsg_handle_help_command(self, mock_print, mock_input): mock_event = MagicMock() mock_event.arguments = ["help"] # 一个叫BanchoBot114的用户发送了help命令 - mock_event.source = "收到频道消息 BanchoBot114:help" + mock_event.source = "BanchoBot114!user@ppy.sh" # 调用on_pubmsg self.client.on_pubmsg(mock_connection, mock_event) @@ -253,7 +254,7 @@ def test_on_pubmsg_handle_pr_command(self, mock_print, mock_input): mock_event = MagicMock() mock_event.arguments = ["!pr"] # 一个叫BanchoBot114的用户发送了!pr命令 - mock_event.source = "收到频道消息 BanchoBot114:!pr" + mock_event.source = "BanchoBot114!user@ppy.sh" # 调用on_pubmsg self.client.on_pubmsg(mock_connection, mock_event) @@ -285,7 +286,7 @@ def test_on_pubmsg_handle_ping_command(self, mock_print, mock_input): mock_event = MagicMock() mock_event.arguments = ["!ping"] # 一个叫BanchoBot114的用户发送了!ping命令 - mock_event.source = "收到频道消息 BanchoBot114:!ping" + mock_event.source = "BanchoBot114!user@ppy.sh" # 调用on_pubmsg self.client.on_pubmsg(mock_connection, mock_event) @@ -304,7 +305,7 @@ def test_on_pubmsg_handle_m_plus_command(self, mock_print, mock_input): mock_event = MagicMock() mock_event.arguments = ["!m+HardRock"] # 一个叫BanchoBot114的用户发送了!m+HardRock命令 - mock_event.source = "收到频道消息 BanchoBot114:!m+HardRock" + mock_event.source = "BanchoBot114!user@ppy.sh" # 调用on_pubmsg self.client.on_pubmsg(mock_connection, mock_event) @@ -327,7 +328,7 @@ def test_on_pubmsg_handle_about_command(self, mock_print, mock_input): mock_event = MagicMock() mock_event.arguments = ["!about"] # 一个叫BanchoBot114的用户发送了!about命令 - mock_event.source = "收到频道消息 BanchoBot114:!about" + mock_event.source = "BanchoBot114!user@ppy.sh" # 调用on_pubmsg self.client.on_pubmsg(mock_connection, mock_event) @@ -350,7 +351,7 @@ def test_on_pubmsg_handle_start_command_with_full_width_exclamation(self, mock_p mock_event = MagicMock() mock_event.arguments = ["!start"] # 全角感叹号 # 一个叫BanchoBot114的用户发送了!start命令 - mock_event.source = "收到频道消息 BanchoBot114:!start" + mock_event.source = "BanchoBot114!user@ppy.sh" # 调用on_pubmsg self.client.on_pubmsg(mock_connection, mock_event) @@ -369,7 +370,7 @@ def test_on_pubmsg_handle_start_command_with_full_width_exclamation(self, mock_p mock_event = MagicMock() mock_event.arguments = ["!i"] # 全角感叹号 # 一个叫BanchoBot114的用户发送了!i命令 - mock_event.source = "收到频道消息 BanchoBot114:!i" + mock_event.source = "BanchoBot114!user@ppy.sh" self.client.b.beatmap_mirror_sayo_url = "https://osu.sayobot.cn/home?search=1" self.client.b.beatmap_mirror_inso_url = "http://inso.link/yukiho/?b=1" @@ -411,7 +412,7 @@ def test_on_privmsg_handle_non_bancho_bot_message(self, mock_print): mock_connection = MagicMock() mock_event = MagicMock() mock_event.arguments = ["Some random message"] - mock_event.source = "收到消息 BanchoBot:Some random message" + mock_event.source = "BanchoBot!user@ppy.sh" # 调用on_privmsg self.client.on_privmsg(mock_connection, mock_event) @@ -433,7 +434,7 @@ def test_on_pubmsg_handle_exception_in_room_creation(self, mock_print, mock_inpu mock_connection = MagicMock() mock_event = MagicMock() mock_event.arguments = ["joined in slot"] - mock_event.source = "收到频道消息 BanchoBot:123 joined in slot" + mock_event.source = "BanchoBot!user@ppy.sh" # 设置send_msg方法抛出异常 self.client.r.send_msg.side_effect = Exception("模拟异常") @@ -489,15 +490,15 @@ def test_on_pubmsg_handle_exception_in_room_creation(self, mock_print, mock_inpu # self.assertTrue(self.client.timer) @patch('builtins.print') - def test_on_pubmsg_handle_bancho_bot_room_created(self, mock_print): + def test_on_pubmsg_handle_bot_joined_room(self, mock_print): """ - 测试处理来自BanchoBot的房间创建成功消息 + 测试处理ATRI加入房间后,BanchoBot发送的房间信息 """ # 模拟接收频道消息事件 mock_connection = MagicMock() mock_event = MagicMock() - mock_event.arguments = ["Slot 1 Ready https://osu.ppy.sh/u/1234567890 BanchoBot114"] - mock_event.source = "收到频道消息 BanchoBot:Slot 1 Ready https://osu.ppy.sh/u/1234567890 BanchoBot114 Host" + mock_event.arguments = ["Slot 1 Ready https://osu.ppy.sh/u/1234567890 BanchoBot114 [Host]"] + mock_event.source = "BanchoBot!cho@ppy.sh" # 调用on_pubmsg self.client.on_pubmsg(mock_connection, mock_event) @@ -505,6 +506,7 @@ def test_on_pubmsg_handle_bancho_bot_room_created(self, mock_print): # 断言 self.assertEqual("BanchoBot114", self.client.p.room_host_list[0]) self.assertEqual("BanchoBot114", self.client.p.player_list[0]) + @patch('builtins.print') def test_on_pubmsg_handle_beatmap_changed_message(self, mock_print): @@ -515,7 +517,7 @@ def test_on_pubmsg_handle_beatmap_changed_message(self, mock_print): mock_connection = MagicMock() mock_event = MagicMock() mock_event.arguments = ["Beatmap changed to (https://osu.ppy.sh/b/1234567890)"] - mock_event.source = "收到频道消息 BanchoBot:Beatmap changed to (https://osu.ppy.sh/b/1234567890)" + mock_event.source = "BanchoBot!user@ppy.sh" self.client.b.beatmap_id = "" self.client.b.check_beatmap_if_out_of_star = MagicMock(return_value=True) @@ -543,7 +545,7 @@ def test_on_pubmsg_handle_room_host_changed_message(self, mock_print): mock_connection = MagicMock() mock_event = MagicMock() mock_event.arguments = ["BanchoBot114 became the host"] - mock_event.source = "收到频道消息 BanchoBot:BanchoBot114 became the host" + mock_event.source = "BanchoBot!user@ppy.sh" # 调用on_pubmsg self.client.on_pubmsg(mock_connection, mock_event) @@ -551,6 +553,24 @@ def test_on_pubmsg_handle_room_host_changed_message(self, mock_print): # 断言 self.assertEqual("BanchoBot114", self.client.p.room_host) + @patch('builtins.print') + def test_on_pubmsg_handle_player_joined_room(self, mock_print): + """ + 测试处理玩家加入房间后,BanchoBot发送的房间信息 + """ + # 模拟接收频道消息事件 + mock_connection = MagicMock() + mock_event = MagicMock() + mock_event.arguments = ["BanchoBot114 joined in slot"] + mock_event.source = "BanchoBot!user@ppy.sh" + + # 调用on_pubmsg + self.client.on_pubmsg(mock_connection, mock_event) + + # 断言 + self.assertEqual("BanchoBot114", self.client.p.room_host_list[0]) + self.assertEqual("BanchoBot114", self.client.p.player_list[0]) + class TestConfig(unittest.TestCase): @patch('irc_dlient.configparser.ConfigParser') @patch('irc_dlient.chardet.detect') @@ -963,6 +983,9 @@ def test_get_recent_info_with_wrong_username(self, fake_out): ) class TestPP(unittest.TestCase): + def setUp(self): + self.beatmap = irc_dlient.rosu.Beatmap(path='./tests/75.osu') + @patch('irc_dlient.os.path.exists') @patch('irc_dlient.requests.get') def test_get_beatmap_file_exists(self, mock_get, mock_exists): @@ -986,6 +1009,32 @@ def test_get_beatmap_file_download(self, mock_get, mock_exists): mock_get.assert_called_with('https://osu.ppy.sh/osu/12345') # 可以进一步检查文件写入,但需要更多的patching + @patch('irc_dlient.rosu.Beatmap') + def test_calculate_pp_fully_success(self,mock_beatmap): + mock_beatmap.return_value = self.beatmap + + pp = irc_dlient.PP() + pp.calculate_pp_fully('HDHRDT') + self.assertEqual(pp.maxpp, 1100) + self.assertEqual(pp.maxbeatmapcombo, 3581) + self.assertEqual(pp.fc95pp, 656) + self.assertEqual(pp.fc96pp, 698) + self.assertEqual(pp.fc97pp, 751) + self.assertEqual(pp.fc98pp, 824) + self.assertEqual(pp.fc99pp, 931) + self.assertEqual(pp.stars, 7.79) + self.assertEqual(pp.afterar, 11.0) + self.assertEqual(pp.aftercs, 4.9) + self.assertEqual(pp.afterod, 11.1) + self.assertEqual(pp.afterhp, 7.0) + + def test_calculate_pp_fully_failed(self): + pp = irc_dlient.PP() + pp.calculate_pp_fully('HDHRDT') + self.assertEqual(pp.maxpp, 0) + self.assertEqual(pp.maxbeatmapcombo, 0) + self.assertEqual(pp.fc95pp, 0) + class TestRoom(unittest.TestCase): def setUp(self): # 构造模拟config From 2896b78ba8751720ba98419d05ffdfff764352b4 Mon Sep 17 00:00:00 2001 From: LittleStone <1526631427@qq.com> Date: Thu, 7 Nov 2024 23:51:06 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0PP=20ut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/75.osu | 2660 ++++++++++++++++++++++++++++++++++++++ tests/test_irc_client.py | 26 + 2 files changed, 2686 insertions(+) create mode 100644 tests/75.osu diff --git a/tests/75.osu b/tests/75.osu new file mode 100644 index 0000000..3caee2f --- /dev/null +++ b/tests/75.osu @@ -0,0 +1,2660 @@ +osu file format v14 + +[General] +AudioFilename: audio.mp3 +AudioLeadIn: 0 +PreviewTime: 101840 +Countdown: 0 +SampleSet: Drum +StackLeniency: 0.3 +Mode: 0 +LetterboxInBreaks: 0 +WidescreenStoryboard: 1 + +[Editor] +Bookmarks: 90,16590,33090,38090,54090,69090,71090,87090,99090,103340,109340,115340,117590,121340,127340,129590,133340,143465,144590,150590,158590,160590,166590,174590,191090,207590,210590,226590,242590,257590,259531,273753,287975,288419,288864,289308,289753,290086,290419,290864,291530,291864,292419,292753,295530,295975,296419,296864,297530,297975,298642,299530,300419,301308,302197,309753,309975,310419,311086,311530,311753,312197,312642,313086,313753,314197,314642,316419,330642,331086,331530,331975,332419,332864,333086,334197,334642,334864,335308,335753,337308,337364,337419,338197,338642,339086,339530,339753,341308,342197,343086,343530,343975,344864,345308,345753,346197,346419,346864,347530,347975,348197,348642,349308,349753,349975,351975,352419,352642,353086,353530,353586,353642,353975,354642,355086,355530,356419,357308,357753,358197,359086,373308,387530,401753,415975,416864,417197,417530,417753,418086,419530,419864,420197,420419,420753,421086,421308,421530,422197,423975,424308,424642,424864,425197,426642,428419,428864,429086,429308,430197,444419,458642,472864,476419,479086,479975,483530,486197,487086 +DistanceSpacing: 0.16 +BeatDivisor: 4 +GridSize: 32 +TimelineZoom: 2.599999 + +[Metadata] +Title:Avoxtur af rotnu tre / Eldhjarta +TitleUnicode:Ávöxtur af rotnu tré / Eldhjarta +Artist:Helfro +ArtistUnicode:Helfró +Creator:TheKingHenry +Version:Innri Grunur +Source: +Tags:icelandic black metal extreme folk chant self titled self-titled s/t ragnar sverrisson halldor simon thorolfsson gabdu09 awfulness saltylucario salty saltking kerupt iamtickrate kyu96 kyu +BeatmapID:3590297 +BeatmapSetID:1440921 + +[Difficulty] +HPDrainRate:5 +CircleSize:3.8 +OverallDifficulty:8.5 +ApproachRate:9.1 +SliderMultiplier:1.8 +SliderTickRate:1 + +[Events] +//Background and Video events +0,0,"helfro_bg.jpg",0,0 +//Break Periods +2,242790,256990 +//Storyboard Layer 0 (Background) +//Storyboard Layer 1 (Fail) +//Storyboard Layer 2 (Pass) +//Storyboard Layer 3 (Foreground) +//Storyboard Layer 4 (Overlay) +//Storyboard Sound Samples + +[TimingPoints] +90,250,4,3,2,70,1,0 +90,-86.9565217391304,4,3,2,70,0,0 +590,-100,4,3,2,70,0,0 +1840,-133.333333333333,4,3,2,70,0,0 +2590,-100,4,3,2,70,0,0 +3152,-100,4,3,10,70,0,0 +4090,-133.333333333333,4,3,2,70,0,0 +4590,-100,4,3,2,70,0,0 +5840,-133.333333333333,4,3,2,70,0,0 +6590,-100,4,3,2,70,0,0 +7090,-100,4,3,8,70,0,0 +8590,-100,4,3,6,70,0,0 +10590,250,4,3,4,70,1,0 +10590,-100,4,3,4,70,0,0 +11340,-133.333333333333,4,3,4,70,0,0 +11590,-100,4,3,4,70,0,0 +11840,-100,4,3,6,70,0,0 +12340,-100,4,3,10,70,0,0 +12590,-133.333333333333,4,3,2,70,0,0 +13090,-100,4,3,2,70,0,0 +14340,-133.333333333333,4,3,2,70,0,0 +15090,-100,4,3,2,70,0,0 +15590,-100,4,3,10,70,0,0 +16090,-100,4,3,2,70,0,0 +16215,-100,4,3,10,70,0,0 +16340,-100,4,3,2,70,0,0 +16465,-100,4,3,10,70,0,0 +16590,-100,4,3,2,70,0,0 +18090,-100,4,3,2,70,0,0 +18340,-133.333333333333,4,3,2,70,0,0 +19090,-100,4,3,2,70,0,0 +19652,-100,4,3,10,70,0,0 +20590,-133.333333333333,4,3,2,70,0,0 +22090,-100,4,3,2,70,0,0 +22340,-133.333333333333,4,3,2,70,0,0 +23090,-100,4,3,2,70,0,0 +23590,-100,4,3,8,70,0,0 +25090,-100,4,3,6,70,0,0 +27090,250,4,3,4,70,1,0 +27090,-100,4,3,4,70,0,0 +27840,-133.333333333333,4,3,4,70,0,0 +28090,-100,4,3,4,70,0,0 +29090,-133.333333333333,4,3,2,70,0,0 +30590,-100,4,3,2,70,0,0 +30840,-133.333333333333,4,3,2,70,0,0 +31590,-100,4,3,2,70,0,0 +33590,-100,4,3,10,70,0,0 +34308,-100,4,2,20,70,0,0 +34527,-100,4,2,1,70,0,0 +34590,-100,4,3,10,70,0,0 +36090,-90.9090909090909,4,3,2,70,0,0 +36340,-80,4,3,2,70,0,0 +36590,-111.111111111111,4,3,10,70,0,0 +37215,-90.9090909090908,4,3,10,70,0,0 +38090,-90.9090909090909,4,3,5,70,0,0 +38215,-83.3333333333333,4,3,7,70,0,0 +39840,-100,4,3,7,70,0,0 +40090,-111.111111111111,4,3,7,70,0,0 +41090,-90.9090909090909,4,3,7,70,0,0 +41840,-111.111111111111,4,3,7,70,0,0 +42090,-90.9090909090909,4,3,7,70,0,0 +45840,-133.333333333333,4,3,7,70,0,0 +46090,-100,4,3,7,70,0,0 +51840,-117.647058823529,4,3,7,70,0,0 +52840,-100,4,3,7,70,0,0 +53590,-100,4,3,10,70,0,0 +54090,-90.9090909090909,4,3,1,70,0,0 +55089,-76.9230769230769,4,3,1,70,0,0 +56089,-99.9999999999999,4,3,1,70,0,0 +57089,-76.9230769230769,4,3,1,70,0,0 +58089,-99.9999999999999,4,3,1,70,0,0 +59089,-76.9230769230769,4,3,1,70,0,0 +60089,-100,4,3,1,70,0,0 +61089,-76.9230769230769,4,3,1,70,0,0 +61840,-76.9230769230769,4,3,3,70,0,0 +62089,-100,4,3,1,70,0,0 +63089,-76.9230769230769,4,3,1,70,0,0 +64089,-100,4,3,1,70,0,0 +65089,-76.9230769230769,4,3,1,70,0,0 +66089,-100,4,3,1,70,0,0 +67089,-76.9230769230769,4,3,1,70,0,0 +68090,-83.3333333333333,4,3,1,70,0,0 +68840,-117.647058823529,4,3,1,70,0,0 +69090,-83.3333333333333,4,3,10,70,0,0 +69152,-83.3333333333333,4,2,20,50,0,0 +70590,-133.333333333333,4,2,20,70,0,0 +70652,-133.333333333333,4,2,20,70,0,0 +71090,-90.9090909090909,4,3,1,70,0,0 +73590,-111.111111111111,4,3,1,70,0,0 +75090,-90.9090909090909,4,3,8,70,0,0 +76090,-111.111111111111,4,3,8,70,0,0 +77090,-142.857142857143,4,3,8,70,0,0 +78090,-200,4,3,8,70,0,0 +78590,-111.111111111111,4,3,8,70,0,0 +78840,-90.9090909090909,4,3,8,70,0,0 +79090,-90.9090909090909,4,3,1,70,0,0 +82090,-90.9090909090909,4,3,10,70,0,0 +83090,-90.9090909090909,4,3,5,70,0,0 +84090,-111.111111111111,4,3,5,70,0,0 +85090,-90.9090909090909,4,3,5,70,0,0 +86090,-111.111111111111,4,3,5,70,0,0 +86340,-90.9090909090909,4,3,10,70,0,0 +87090,-90.9090909090909,4,3,1,70,0,0 +89590,-111.111111111111,4,3,1,70,0,0 +90090,-90.9090909090909,4,3,1,70,0,0 +90840,-90.9090909090909,4,3,3,70,0,0 +91090,-90.9090909090909,4,3,6,70,0,0 +92090,-111.111111111111,4,3,6,70,0,0 +93090,-142.857142857143,4,3,6,70,0,0 +94090,-200,4,3,6,70,0,0 +94590,-111.111111111111,4,3,6,70,0,0 +94840,-90.909090909091,4,3,8,70,0,0 +95090,-90.909090909091,4,3,1,70,0,0 +97840,-90.909090909091,4,3,8,70,0,0 +98090,-76.9230769230769,4,3,10,70,0,0 +98590,-90.909090909091,4,3,10,70,0,0 +99090,-90.909090909091,4,3,1,70,0,0 +99340,-80,4,3,1,70,0,0 +99840,-90.909090909091,4,3,3,70,0,0 +100090,-90.909090909091,4,3,1,70,0,0 +100340,-133.333333333333,4,3,3,70,0,0 +100590,-133.333333333333,4,3,1,70,0,0 +101090,250,3,3,4,70,1,0 +101090,-90.9090909090909,3,3,4,70,0,0 +101465,-90.9090909090909,3,3,2,70,0,0 +101715,-90.9090909090909,3,3,4,70,0,0 +101840,-80,3,2,20,70,0,0 +101965,-80,3,2,1,70,0,0 +102027,-80,3,2,20,70,0,0 +102590,-80,3,3,1,70,0,0 +103340,245.901639344262,3,3,1,70,1,0 +103340,-117.647058823529,3,3,1,70,0,0 +104016,-117.647058823529,3,3,10,60,0,0 +104077,250,3,3,10,60,1,0 +104327,-117.647058823529,3,3,10,60,0,0 +104493,-153.846153846153,3,3,10,60,0,0 +104660,-200,3,3,10,60,0,0 +105827,-117.647058823529,3,3,10,60,0,0 +105993,-153.846153846153,3,3,10,60,0,0 +106159,-200,3,3,10,60,0,0 +107327,-117.647058823529,3,3,10,60,0,0 +107493,-153.846153846153,3,3,10,60,0,0 +107660,-200,3,3,10,60,0,0 +108827,-117.647058823529,3,3,10,60,0,0 +108993,-153.846153846153,3,3,10,60,0,0 +109160,-200,3,3,10,60,0,0 +109577,-200,3,2,20,60,0,0 +110014,-200,3,3,10,60,0,0 +111077,-200,3,2,20,60,0,0 +111514,-200,3,3,10,60,0,0 +111577,240,3,3,10,60,1,0 +111577,-200,3,3,10,60,0,0 +111817,254.237288135593,3,3,10,60,1,0 +112327,250,3,3,10,60,1,0 +112545,-100,3,2,20,60,0,0 +113027,-200,3,3,10,60,0,0 +113834,250,3,3,10,60,1,0 +114084,-100,3,2,20,60,0,0 +114271,-200,3,2,1,60,0,0 +114334,-200,3,2,20,60,0,0 +114459,-200,3,2,1,60,0,0 +114521,-200,3,3,10,60,0,0 +115584,-200,3,2,20,60,0,0 +116021,-200,3,3,10,60,0,0 +116840,250,3,3,10,60,1,0 +117090,-200,3,2,20,60,0,0 +117277,-200,3,2,1,60,0,0 +117340,-200,3,2,20,60,0,0 +117527,-200,3,2,1,60,0,0 +117590,-400,3,2,20,60,0,0 +118277,-400,3,2,1,60,0,0 +118340,-100,3,3,8,70,0,0 +120840,-100,3,3,10,70,0,0 +121090,-100,3,3,8,70,0,0 +121340,-117.647058823529,3,3,4,70,0,0 +121590,-117.647058823529,3,3,9,70,0,0 +129590,-100,3,3,8,70,0,0 +132590,-86.9565217391304,3,3,4,70,0,0 +132840,-86.9565217391304,3,3,8,70,0,0 +133340,-100,3,3,2,70,0,0 +133590,-100,3,2,20,70,0,0 +133715,-100,3,3,2,70,0,0 +134340,-100,3,2,20,70,0,0 +134590,-100,3,3,2,70,0,0 +135590,-86.9565217391304,3,3,2,70,0,0 +135840,-86.9565217391304,3,3,6,70,0,0 +136340,-100,3,3,2,70,0,0 +136590,-100,3,2,20,70,0,0 +136715,-100,3,3,2,70,0,0 +136840,-100,3,2,20,70,0,0 +136965,-100,3,3,2,70,0,0 +137215,-100,3,3,10,70,0,0 +137590,-133.333333333333,3,3,10,70,0,0 +137840,-100,3,3,10,70,0,0 +138465,-100,3,3,2,70,0,0 +138590,-86.9565217391304,3,3,2,70,0,0 +138840,-86.9565217391304,3,3,6,70,0,0 +139340,-100,3,3,2,70,0,0 +139590,-100,3,2,20,70,0,0 +139715,-100,3,3,2,70,0,0 +141590,-86.9565217391304,3,3,2,70,0,0 +141840,-86.9565217391304,3,3,6,70,0,0 +142340,-100,3,3,2,70,0,0 +142590,-100,3,2,20,70,0,0 +142840,-100,3,3,2,70,0,0 +143090,-100,3,3,10,70,0,0 +144340,-153.846153846153,3,3,10,70,0,0 +144590,-153.846153846154,3,3,2,70,0,0 +146840,-153.846153846154,3,3,4,70,0,0 +147465,-153.846153846154,3,3,2,70,0,0 +149840,-100,3,3,10,70,0,0 +150340,-100,3,3,6,70,0,0 +150590,250,4,3,2,70,1,0 +150590,-100,4,3,2,70,0,0 +151840,-100,4,3,4,70,0,0 +152090,-117.647058823529,4,3,10,70,0,0 +152340,-117.647058823529,4,3,2,70,0,0 +152590,-100,4,3,2,70,0,0 +153090,-117.647058823529,4,3,2,70,0,0 +153590,-100,4,3,2,70,0,0 +153840,-100,4,2,20,70,0,0 +154027,-100,4,3,2,70,0,0 +155840,-100,4,3,4,70,0,0 +156090,-117.647058823529,4,3,10,70,0,0 +156340,-117.647058823529,4,3,2,70,0,0 +156590,-100,4,3,4,70,0,0 +157090,-117.647058823529,4,3,4,70,0,0 +157590,-100,4,3,4,70,0,0 +158090,-100,4,3,2,70,0,0 +158590,-100,4,3,4,70,0,0 +159840,-100,4,3,2,70,0,0 +160090,-100,4,3,10,70,0,0 +160340,-100,4,3,2,70,0,0 +160590,-86.9565217391303,4,3,4,70,0,0 +161090,-100,4,3,4,70,0,0 +161590,-86.9565217391303,4,3,4,70,0,0 +161840,-86.9565217391303,4,2,20,70,0,0 +162027,-86.9565217391303,4,3,4,70,0,0 +162340,-86.9565217391303,4,2,20,70,0,0 +162527,-86.9565217391303,4,3,2,70,0,0 +162590,-100,4,3,2,70,0,0 +163090,-100,4,3,4,70,0,0 +163840,-133.333333333333,4,3,2,70,0,0 +164090,-100,4,3,10,70,0,0 +164340,-100,4,3,2,70,0,0 +164590,-86.9565217391303,4,3,4,70,0,0 +165090,-100,4,3,4,70,0,0 +165590,-86.9565217391303,4,3,2,70,0,0 +166590,-100,4,3,2,70,0,0 +167090,-100,4,3,4,70,0,0 +167840,-100,4,3,2,70,0,0 +168090,-100,4,3,10,70,0,0 +168340,-100,4,3,2,70,0,0 +168590,-100,4,3,4,70,0,0 +169090,-117.647058823529,4,3,4,70,0,0 +169590,-83.3333333333333,4,3,4,70,0,0 +170590,-100,4,3,4,70,0,0 +171840,-100,4,3,2,70,0,0 +172090,-133.333333333333,4,3,4,70,0,0 +172340,-74.0740740740741,4,3,4,70,0,0 +172590,-100,4,3,10,70,0,0 +173590,-200,4,3,4,70,0,0 +174590,-133.333333333333,4,3,2,70,0,0 +175840,-100,4,3,2,70,0,0 +176339,-133.333333333333,4,3,2,70,0,0 +177089,-100,4,3,2,70,0,0 +177652,-100,4,3,10,70,0,0 +178589,-133.333333333333,4,3,2,70,0,0 +179089,-100,4,3,2,70,0,0 +180339,-133.333333333333,4,3,2,70,0,0 +181089,-100,4,3,2,70,0,0 +181590,-100,4,3,8,70,0,0 +185090,250,4,3,4,70,1,0 +185090,-100,4,3,4,70,0,0 +185839,-133.333333333333,4,3,4,70,0,0 +186089,-100,4,3,4,70,0,0 +186340,-100,4,3,8,70,0,0 +186590,-100,4,3,4,70,0,0 +186840,-100,4,3,10,70,0,0 +187089,-133.333333333333,4,3,2,70,0,0 +187589,-100,4,3,2,70,0,0 +188839,-133.333333333333,4,3,2,70,0,0 +189589,-100,4,3,2,70,0,0 +190090,-100,4,3,4,70,0,0 +190152,-100,4,3,10,70,0,0 +190340,-100,4,3,4,70,0,0 +190402,-100,4,3,10,70,0,0 +190590,-100,4,3,4,70,0,0 +190652,-100,4,3,10,70,0,0 +190840,-100,4,3,4,70,0,0 +190902,-100,4,3,10,70,0,0 +191090,-100,4,3,2,70,0,0 +192589,-100,4,3,2,70,0,0 +192839,-133.333333333333,4,3,2,70,0,0 +193589,-100,4,3,2,70,0,0 +194152,-100,4,3,10,70,0,0 +195089,-133.333333333333,4,3,2,70,0,0 +196589,-100,4,3,2,70,0,0 +196839,-133.333333333333,4,3,2,70,0,0 +197589,-100,4,3,2,70,0,0 +198090,-100,4,3,6,70,0,0 +201090,-100,4,3,8,70,0,0 +201590,250,4,3,4,70,1,0 +201590,-100,4,3,4,70,0,0 +202339,-133.333333333333,4,3,4,70,0,0 +202589,-100,4,3,4,70,0,0 +202840,-100,4,3,8,70,0,0 +203090,-100,4,3,4,70,0,0 +203589,-133.333333333333,4,3,2,70,0,0 +205089,-100,4,3,2,70,0,0 +205339,-133.333333333333,4,3,2,70,0,0 +206089,-100,4,3,2,70,0,0 +206590,-100,4,3,10,70,0,0 +208808,-100,4,2,20,70,0,0 +209027,-100,4,2,1,70,0,0 +209090,-100,4,3,10,70,0,0 +209590,-90.9090909090909,4,3,2,70,0,0 +209840,-79.9999999999999,4,3,2,70,0,0 +210090,-100,4,3,10,70,0,0 +210340,-153.846153846153,4,3,10,70,0,0 +210590,-111.111111111111,4,3,5,70,0,0 +210715,-111.111111111111,4,3,7,70,0,0 +211590,-90.9090909090909,4,3,7,70,0,0 +212339,-111.111111111111,4,3,7,70,0,0 +213589,-90.9090909090909,4,3,7,70,0,0 +214339,-111.111111111111,4,3,7,70,0,0 +215590,-99.9999999999999,4,3,7,70,0,0 +217590,-83.3333333333333,4,3,7,70,0,0 +218589,-99.9999999999999,4,3,7,70,0,0 +224339,-117.647058823529,4,3,7,70,0,0 +225590,-83.3333333333333,4,3,10,70,0,0 +226590,-83.3333333333333,4,3,1,70,0,0 +227589,-76.9230769230769,4,3,1,70,0,0 +228589,-99.9999999999999,4,3,1,70,0,0 +229589,-76.9230769230769,4,3,1,70,0,0 +230589,-99.9999999999999,4,3,1,70,0,0 +231589,-76.9230769230769,4,3,1,70,0,0 +232589,-100,4,3,1,70,0,0 +233589,-76.9230769230769,4,3,1,70,0,0 +234589,-100,4,3,1,70,0,0 +235589,-76.9230769230769,4,3,1,70,0,0 +236589,-100,4,3,1,70,0,0 +237589,-76.9230769230769,4,3,1,70,0,0 +238589,-100,4,3,1,70,0,0 +239589,-76.9230769230769,4,3,1,70,0,0 +240590,-83.3333333333333,4,3,1,70,0,0 +241340,-133.333333333333,4,3,10,70,0,0 +241590,-76.9230769230769,4,3,10,70,0,0 +242090,-83.3333333333333,4,3,10,70,0,0 +242340,-100,4,3,10,70,0,0 +242652,-100,4,2,20,40,0,0 +258591,235.294117647059,4,3,2,60,1,0 +259295,-100,4,3,2,60,0,0 +259531,222.222222222222,4,3,5,60,1,0 +259531,-90.9090909090909,4,3,5,60,0,0 +260864,-83.3333333333333,4,3,5,60,0,0 +263086,-100,4,3,5,60,0,0 +263531,-111.111111111111,4,3,5,60,0,0 +263975,-125,4,3,5,60,0,0 +264864,-111.111111111111,4,3,5,60,0,0 +265308,-90.9090909090909,4,3,5,60,0,0 +265753,-99.9999999999999,4,3,5,60,0,0 +266642,-125,4,3,5,60,0,0 +267086,-142.857142857143,4,3,5,60,0,0 +267975,-100,4,3,5,60,0,0 +270197,-111.111111111111,4,3,5,60,0,0 +271086,-125,4,3,5,60,0,0 +271975,-142.857142857143,4,3,5,60,0,0 +272864,-83.3333333333333,4,3,7,60,0,0 +273308,-83.3333333333333,4,3,10,60,0,0 +273753,-100,4,3,5,60,0,0 +275085,-83.3333333333333,4,3,5,60,0,0 +277307,-100,4,3,5,60,0,0 +277752,-111.111111111111,4,3,5,60,0,0 +278196,-125,4,3,5,60,0,0 +279085,-111.111111111111,4,3,5,60,0,0 +279529,-90.9090909090909,4,3,5,60,0,0 +279974,-99.9999999999999,4,3,5,60,0,0 +280863,-125,4,3,5,60,0,0 +281307,-142.857142857143,4,3,5,60,0,0 +282196,-100,4,3,5,60,0,0 +284418,-111.111111111111,4,3,5,60,0,0 +285307,-125,4,3,5,60,0,0 +286196,-142.857142857143,4,3,5,60,0,0 +286864,-142.857142857143,4,3,7,60,0,0 +287085,-83.3333333333333,4,3,10,60,0,0 +287531,-117.647058823529,4,3,10,60,0,0 +287753,-133.333333333333,4,3,5,70,0,0 +287975,-117.647058823529,4,3,1,60,0,0 +288197,-100,4,3,3,60,0,0 +293308,-90.9090909090909,4,3,3,60,0,0 +294197,-100,4,3,3,60,0,0 +294642,-100,4,3,10,60,0,0 +295086,-100,4,3,1,60,0,0 +299530,-90.9090909090909,4,3,1,60,0,0 +301086,-90.9090909090909,4,3,7,60,0,0 +301308,-90.9090909090909,4,3,10,60,0,0 +301753,-133.333333333333,4,3,10,60,0,0 +301975,-133.333333333333,4,3,5,70,0,0 +302197,-117.647058823529,4,3,1,60,0,0 +302419,-100,4,3,3,60,0,0 +307530,-90.9090909090909,4,3,3,60,0,0 +308419,-133.333333333333,4,3,3,60,0,0 +308530,-90.9090909090909,4,3,3,60,0,0 +309308,-100,4,3,1,60,0,0 +313752,-90.9090909090909,4,3,1,60,0,0 +314641,-117.647058823529,4,3,1,60,0,0 +314864,-117.647058823529,4,3,10,60,0,0 +315308,-117.647058823529,4,3,1,60,0,0 +315530,-117.647058823529,4,3,10,60,0,0 +315753,-83.3333333333333,4,3,10,60,0,0 +315975,-133.333333333333,4,3,10,60,0,0 +316419,-125,4,3,2,60,0,1 +316642,-125,4,3,9,60,0,1 +317308,-100,4,3,4,60,0,1 +317530,-100,4,3,9,60,0,1 +317585,-100,4,3,4,60,0,1 +317642,-100,4,3,9,60,0,1 +317975,-133.333333333333,4,3,9,60,0,1 +318197,-90.9090909090909,4,3,4,60,0,1 +318642,-90.9090909090909,4,3,9,60,0,1 +319086,-76.9230769230769,4,3,4,60,0,1 +319308,-117.647058823529,4,3,9,60,0,1 +319975,-90.9090909090909,4,3,5,60,0,1 +323530,-125,4,3,2,60,0,1 +323753,-125,4,3,9,60,0,1 +324419,-100,4,3,4,60,0,1 +324642,-100,4,3,9,60,0,1 +324696,-100,4,3,4,60,0,1 +324753,-100,4,3,9,60,0,1 +325086,-133.333333333333,4,3,9,60,0,1 +325308,-90.9090909090909,4,3,4,60,0,1 +325753,-90.9090909090909,4,3,9,60,0,1 +326197,-76.9230769230769,4,3,2,60,0,1 +326419,-117.647058823529,4,3,9,60,0,1 +327086,-90.9090909090909,4,3,5,60,0,1 +330642,-111.111111111111,4,3,2,70,0,0 +334197,-90.9090909090908,4,3,4,60,0,0 +335086,-83.3333333333333,4,3,2,60,0,0 +335530,-111.111111111111,4,3,2,60,0,0 +335753,-90.9090909090909,4,3,2,60,0,0 +335975,-76.9230769230769,4,3,2,60,0,0 +336864,-83.3333333333333,4,3,2,60,0,0 +337419,-100,4,3,2,60,0,0 +337753,-111.111111111111,4,3,2,60,0,0 +341308,-99.9999999999999,4,3,2,60,0,0 +342197,-99.9999999999999,4,3,4,60,0,0 +343086,-111.111111111111,4,3,4,60,0,0 +343308,-100,4,3,10,60,0,0 +343530,-76.9230769230769,4,3,10,60,0,0 +343975,-100,4,3,10,60,0,0 +344197,-76.9230769230769,4,3,10,60,0,0 +344419,-100,4,3,10,60,0,0 +344642,-133.333333333333,4,3,10,60,0,0 +344864,-100,4,3,2,60,0,0 +348197,-100,4,3,4,60,0,0 +348418,-66.6666666666667,4,3,2,60,0,0 +348642,-90.9090909090908,4,3,2,60,0,0 +349307,-83.3333333333333,4,3,2,60,0,0 +349751,-83.3333333333333,4,3,2,60,0,0 +350196,-76.9230769230769,4,3,2,60,0,0 +351085,-83.3333333333333,4,3,2,60,0,0 +351530,-76.9230769230769,4,3,4,60,0,0 +351975,-76.9230769230769,4,3,2,60,0,0 +352419,-111.111111111111,4,3,2,60,0,0 +353753,-111.111111111111,4,3,4,60,0,0 +354642,-111.111111111111,4,3,2,60,0,0 +356419,-90.9090909090908,4,3,2,60,0,0 +357308,-111.111111111111,4,3,2,60,0,0 +357530,-76.9230769230769,4,3,2,60,0,0 +357975,-111.111111111111,4,3,2,60,0,0 +358197,-76.9230769230769,4,3,10,60,0,0 +358419,-90.9090909090909,4,3,10,60,0,0 +358642,-111.111111111111,4,3,10,60,0,0 +358864,-83.3333333333333,4,3,4,60,0,0 +359086,-125,4,3,2,60,0,1 +359308,-125,4,3,9,60,0,1 +359974,-100,4,3,4,60,0,1 +360197,-100,4,3,9,60,0,1 +360252,-100,4,3,4,60,0,1 +360308,-100,4,3,9,60,0,1 +360641,-133.333333333333,4,3,9,60,0,1 +360863,-90.9090909090909,4,3,4,60,0,1 +361308,-90.9090909090909,4,3,9,60,0,1 +361752,-76.9230769230769,4,3,4,60,0,1 +361974,-117.647058823529,4,3,9,60,0,1 +362641,-90.9090909090909,4,3,5,60,0,1 +366196,-125,4,3,2,60,0,1 +366419,-125,4,3,9,60,0,1 +367085,-100,4,3,4,60,0,1 +367308,-100,4,3,9,60,0,1 +367363,-100,4,3,4,60,0,1 +367419,-100,4,3,9,60,0,1 +367752,-133.333333333333,4,3,9,60,0,1 +367974,-90.9090909090909,4,3,4,60,0,1 +368419,-90.9090909090909,4,3,9,60,0,1 +368863,-76.9230769230769,4,3,4,60,0,1 +369085,-117.647058823529,4,3,9,60,0,1 +369752,-90.9090909090909,4,3,5,60,0,1 +373308,-111.111111111111,4,3,2,60,0,1 +373530,-111.111111111111,4,3,9,60,0,1 +374197,-90.9090909090908,4,3,4,60,0,1 +374419,-90.9090909090908,4,3,9,60,0,1 +374474,-90.9090909090908,4,3,4,60,0,1 +374530,-90.9090909090908,4,3,9,60,0,1 +374864,-111.111111111111,4,3,9,60,0,1 +375086,-83.3333333333333,4,3,4,60,0,1 +375530,-83.3333333333333,4,3,9,60,0,1 +375975,-71.4285714285714,4,3,4,60,0,1 +376197,-100,4,3,9,60,0,1 +376864,-83.3333333333333,4,3,5,60,0,1 +380419,-111.111111111111,4,3,2,60,0,1 +380642,-111.111111111111,4,3,9,60,0,1 +381308,-90.9090909090908,4,3,4,60,0,1 +381530,-90.9090909090908,4,3,9,60,0,1 +381585,-90.9090909090908,4,3,4,60,0,1 +381642,-90.9090909090908,4,3,9,60,0,1 +381975,-111.111111111111,4,3,9,60,0,1 +382197,-83.3333333333333,4,3,4,60,0,1 +382642,-83.3333333333333,4,3,9,60,0,1 +383086,-71.4285714285714,4,3,4,60,0,1 +383308,-100,4,3,9,60,0,1 +383975,-83.3333333333333,4,3,5,60,0,1 +387530,-90.9090909090909,4,3,5,60,0,0 +388863,-83.3333333333333,4,3,5,60,0,0 +391085,-100,4,3,5,60,0,0 +391530,-111.111111111111,4,3,5,60,0,0 +391974,-125,4,3,5,60,0,0 +392863,-111.111111111111,4,3,5,60,0,0 +393307,-90.9090909090909,4,3,5,60,0,0 +393752,-99.9999999999999,4,3,5,60,0,0 +394641,-125,4,3,5,60,0,0 +395085,-142.857142857143,4,3,5,60,0,0 +395974,-100,4,3,5,60,0,0 +398196,-111.111111111111,4,3,5,60,0,0 +398642,-125,4,3,5,60,0,0 +399085,-111.111111111111,4,3,5,60,0,0 +399530,-125,4,3,5,60,0,0 +399974,-142.857142857143,4,3,5,60,0,0 +400197,-142.857142857143,4,3,10,60,0,0 +400642,-142.857142857143,4,3,5,60,0,0 +400697,-142.857142857143,4,3,10,60,0,0 +400863,-83.3333333333333,4,3,10,60,0,0 +401530,-111.111111111111,4,3,10,60,0,0 +401752,-100,4,3,5,60,0,0 +403084,-83.3333333333333,4,3,5,60,0,0 +403975,-76.9230769230769,4,3,5,60,0,0 +404419,-83.3333333333333,4,3,5,60,0,0 +405306,-100,4,3,5,60,0,0 +405751,-111.111111111111,4,3,5,60,0,0 +406195,-125,4,3,5,60,0,0 +407084,-111.111111111111,4,3,5,60,0,0 +407528,-90.9090909090909,4,3,5,60,0,0 +407973,-99.9999999999999,4,3,5,80,0,0 +408030,-99.9999999999999,4,3,5,60,0,0 +408308,-99.9999999999999,4,3,5,80,0,0 +408364,-99.9999999999999,4,3,5,60,0,0 +408862,-125,4,3,5,60,0,0 +409306,-142.857142857143,4,3,5,60,0,0 +410195,-100,4,3,5,60,0,0 +412417,-111.111111111111,4,3,5,60,0,0 +413306,-125,4,3,5,60,0,0 +414195,-142.857142857143,4,3,5,60,0,0 +414864,-200,4,3,5,60,0,0 +415084,-83.3333333333333,4,3,10,60,0,0 +415530,-117.647058823529,4,3,10,60,0,0 +415752,-133.333333333333,4,3,10,60,0,0 +415975,-117.647058823529,4,3,2,60,0,0 +422197,-117.647058823529,4,3,5,60,0,0 +423086,-117.647058823529,4,3,2,60,0,0 +426642,-117.647058823529,4,3,4,60,0,0 +427530,-100,4,3,2,60,0,0 +427975,-117.647058823529,4,3,2,60,0,0 +428419,-90.9090909090909,4,3,4,60,0,0 +428864,-111.111111111111,4,3,4,60,0,0 +429086,-111.111111111111,4,3,10,60,0,0 +430197,-100,4,3,2,60,0,0 +431753,-100,4,3,4,60,0,0 +431975,-100,4,3,2,60,0,0 +436864,-100,4,3,4,60,0,0 +437308,-100,4,3,2,60,0,0 +438864,-100,4,3,4,60,0,0 +439086,-100,4,3,2,60,0,0 +440864,-100,4,3,4,60,0,0 +442642,-83.3333333333333,4,3,4,60,0,0 +442864,-133.333333333333,4,3,4,60,0,0 +443086,-76.9230769230769,4,3,10,60,0,0 +443530,-111.111111111111,4,3,10,60,0,0 +443753,-76.9230769230769,4,3,10,60,0,0 +444419,-125,4,3,2,60,0,1 +444642,-125,4,3,9,60,0,1 +445306,-100,4,3,4,60,0,1 +445530,-100,4,3,9,60,0,1 +445585,-100,4,3,4,60,0,1 +445642,-100,4,3,9,60,0,1 +445973,-133.333333333333,4,3,9,60,0,1 +446195,-90.9090909090909,4,3,4,60,0,1 +446642,-90.9090909090909,4,3,9,60,0,1 +447084,-76.9230769230769,4,3,4,60,0,1 +447306,-117.647058823529,4,3,9,60,0,1 +447973,-90.9090909090909,4,3,5,60,0,1 +451528,-125,4,3,2,60,0,1 +451753,-125,4,3,9,60,0,1 +452417,-100,4,3,4,60,0,1 +452642,-100,4,3,9,60,0,1 +452696,-100,4,3,4,60,0,1 +452753,-100,4,3,9,60,0,1 +453084,-133.333333333333,4,3,9,60,0,1 +453306,-90.9090909090909,4,3,4,60,0,1 +453753,-90.9090909090909,4,3,9,60,0,1 +454195,-76.9230769230769,4,3,4,60,0,1 +454417,-117.647058823529,4,3,9,60,0,1 +455084,-90.9090909090909,4,3,5,60,0,1 +458640,-111.111111111111,4,3,2,60,0,1 +458864,-111.111111111111,4,3,9,60,0,1 +459529,-90.9090909090908,4,3,4,60,0,1 +459753,-90.9090909090908,4,3,9,60,0,1 +459807,-90.9090909090908,4,3,4,60,0,1 +459864,-90.9090909090908,4,3,9,60,0,1 +460196,-111.111111111111,4,3,9,60,0,1 +460418,-83.3333333333333,4,3,4,60,0,1 +460864,-83.3333333333333,4,3,9,60,0,1 +461307,-71.4285714285714,4,3,4,60,0,1 +461529,-100,4,3,9,60,0,1 +462196,-83.3333333333333,4,3,5,60,0,1 +465751,-111.111111111111,4,3,2,60,0,1 +465975,-111.111111111111,4,3,9,60,0,1 +466640,-90.9090909090908,4,3,4,60,0,1 +466864,-90.9090909090908,4,3,9,60,0,1 +466919,-90.9090909090908,4,3,4,60,0,1 +466975,-90.9090909090908,4,3,9,60,0,1 +467307,-111.111111111111,4,3,9,60,0,1 +467529,-83.3333333333333,4,3,4,60,0,1 +467975,-83.3333333333333,4,3,9,60,0,1 +468418,-71.4285714285714,4,3,4,60,0,1 +468640,-100,4,3,9,60,0,1 +469307,-83.3333333333333,4,3,5,60,0,1 +472864,-100,4,3,1,60,0,0 +476419,-111.111111111111,4,3,1,60,0,0 +479086,-111.111111111111,4,3,3,60,0,0 +479975,-111.111111111111,4,3,1,60,0,0 +483530,-125,4,3,1,60,0,0 +486197,-100,4,3,1,60,0,0 +486642,-74.0740740740741,4,3,1,60,0,0 +487086,-68.9655172413793,4,3,1,60,0,0 +487142,-68.9655172413793,4,3,1,5,0,0 + + +[Colours] +Combo1 : 255,111,111 +Combo2 : 122,0,244 +Combo3 : 187,119,255 +Combo4 : 210,210,210 +Combo5 : 154,154,154 +Combo6 : 255,26,26 + +[HitObjects] +0,214,90,6,0,B|89:228|89:228|159:275|159:275|218:240|218:240|238:250|238:250|283:254,1,310.500005922318,4|0,0:0|0:0,0:0:0:0: +349,202,590,1,10,0:0:0:0: +249,65,840,1,2,0:0:0:0: +242,109,965,1,0,0:0:0:0: +235,153,1090,1,2,0:0:0:0: +454,142,1340,1,2,0:0:0:0: +447,186,1465,1,0,0:0:0:0: +440,230,1590,2,0,L|415:119,1,90,10|0,0:0|0:0,0:0:0:0: +338,302,1840,6,0,B|379:299|379:299|399:315,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +280,368,2090,2,0,B|257:334|257:334|261:308,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +185,285,2340,2,0,B|177:325|177:325|133:359,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +72,230,2590,2,0,L|97:119,1,90,10|0,0:0|0:0,0:0:0:0: +112,55,2840,1,2,0:0:0:0: +318,52,3090,69,4,0:0:0:0: +235,68,3215,1,8,0:0:0:0: +201,105,3340,1,8,0:0:0:0: +194,148,3465,1,8,0:0:0:0: +202,177,3590,1,8,0:0:0:0: +224,172,3715,1,4,0:0:0:0: +246,168,3840,1,4,0:0:0:0: +268,163,3965,1,4,0:0:0:0: +290,159,4090,6,0,P|326:235|451:243,1,202.500007724762,4|0,0:0|0:0,0:0:0:0: +391,162,4590,1,10,0:0:0:0: +318,376,4840,1,2,0:0:0:0: +326,331,4965,1,0,0:0:0:0: +334,287,5090,1,2,0:0:0:0: +178,352,5340,1,2,0:0:0:0: +170,307,5465,1,0,0:0:0:0: +162,263,5590,70,0,L|261:308,1,90,10|0,0:0|0:0,0:0:0:0: +78,351,5840,2,0,B|72:307|72:307|29:282,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +136,207,6090,2,0,B|142:251|142:251|162:263,1,67.5000025749208,2|2,0:0|0:0,0:0:0:0: +0,214,6340,2,0,B|43:208|43:208|55:189,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +177,124,6590,6,0,L|95:86,1,90,10|0,0:0|0:0,0:0:0:0: +11,108,6840,1,2,0:0:0:0: +173,274,7090,69,10,0:0:0:0: +239,262,7215,1,2,0:0:0:0: +305,250,7340,1,10,0:0:0:0: +372,239,7465,1,2,0:0:0:0: +438,227,7590,5,10,0:0:0:0: +379,170,7715,1,2,0:0:0:0: +321,113,7840,1,10,0:0:0:0: +263,57,7965,1,2,0:0:0:0: +204,0,8090,70,0,L|185:109,1,90,12|2,0:0|0:0,0:0:0:0: +63,128,8340,2,0,L|82:237,1,90,10|2,0:0|0:0,0:0:0:0: +32,348,8590,6,0,L|141:367,1,90,12|2,0:0|0:0,0:0:0:0: +245,333,8840,1,10,0:0:0:0: +245,333,8965,1,2,0:0:0:0: +245,333,9090,1,10,0:0:0:0: +442,280,9340,1,10,0:0:0:0: +442,280,9465,1,2,0:0:0:0: +442,280,9590,1,10,0:0:0:0: +297,135,9840,1,2,0:0:0:0: +297,135,9965,1,0,0:0:0:0: +297,135,10090,69,10,0:0:0:0: +269,195,10215,1,0,0:0:0:0: +305,271,10340,2,0,L|357:277,2,45,0|0|0,1:0|1:0|1:0,0:0:0:0: +434,244,10590,6,0,B|428:223|428:223|450:125,1,90,4|0,0:0|0:0,0:0:0:0: +285,358,10840,2,0,L|307:260,1,90,2|0,0:0|0:0,0:0:0:0: +160,154,11090,70,0,B|180:167|180:167|202:265,1,90,10|0,0:0|0:0,0:0:0:0: +172,333,11340,2,0,L|100:320,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +18,189,11590,5,2,0:0:0:0: +18,189,11715,1,0,0:0:0:0: +5,276,11840,69,2,0:0:0:0: +5,276,11965,1,0,0:0:0:0: +87,244,12090,5,12,0:0:0:0: +87,244,12215,1,0,0:0:0:0: +100,157,12340,70,0,L|108:104,2,45,8|8|4,0:0|0:0|0:0,0:0:0:0: +163,45,12590,6,0,P|93:25|18:127,1,202.500007724762,4|0,0:0|0:0,0:0:0:0: +107,112,13090,1,10,0:0:0:0: +250,23,13340,1,2,0:0:0:0: +299,11,13465,1,0,0:0:0:0: +349,0,13590,1,2,0:0:0:0: +315,177,13840,1,2,0:0:0:0: +265,188,13965,1,0,0:0:0:0: +216,200,14090,70,0,L|242:101,1,90,10|0,0:0|0:0,0:0:0:0: +429,93,14340,2,0,B|464:76|464:76|474:49,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +336,87,14590,2,0,B|333:125|333:125|351:148,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +508,195,14840,2,0,B|475:173|475:173|447:177,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +486,358,15090,6,0,L|460:259,1,90,10|0,0:0|0:0,0:0:0:0: +382,241,15340,1,2,0:0:0:0: +161,363,15590,69,8,0:0:0:0: +225,370,15715,1,8,0:0:0:0: +266,320,15840,1,4,0:0:0:0: +247,258,15965,1,4,0:0:0:0: +184,240,16090,5,0,0:0:0:0: +260,270,16215,1,4,0:0:0:0: +335,299,16340,1,4,0:0:0:0: +411,328,16465,1,4,0:0:0:0: +486,358,16590,70,0,B|454:275|454:275|382:286|382:286|257:256,1,270,4|0,0:0|0:0,0:0:0:0: +187,231,17090,1,10,0:0:0:0: +281,40,17340,1,2,0:0:0:0: +242,63,17465,1,0,0:0:0:0: +204,86,17590,1,2,0:0:0:0: +463,134,17840,1,2,0:0:0:0: +424,157,17965,1,0,0:0:0:0: +386,180,18090,6,0,L|349:63,1,90,10|0,0:0|0:0,0:0:0:0: +183,59,18340,70,0,B|210:45|210:45|246:65,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +291,165,18590,2,0,B|259:147|259:147|231:161,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +96,161,18840,2,0,B|113:135|113:135|154:134,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +264,244,19090,6,0,L|291:329,1,90,10|0,0:0|0:0,0:0:0:0: +221,373,19340,1,2,0:0:0:0: +35,227,19590,69,4,0:0:0:0: +51,144,19715,1,8,0:0:0:0: +88,110,19840,1,8,0:0:0:0: +131,103,19965,1,8,0:0:0:0: +160,111,20090,1,8,0:0:0:0: +155,133,20215,1,8,0:0:0:0: +151,155,20340,1,4,0:0:0:0: +146,177,20465,1,4,0:0:0:0: +142,199,20590,6,0,P|66:245|121:355,1,202.500007724762,4|0,0:0|0:0,0:0:0:0: +172,289,21090,1,10,0:0:0:0: +60,126,21340,1,2,0:0:0:0: +38,81,21465,1,0,0:0:0:0: +14,35,21590,1,2,0:0:0:0: +275,30,21840,1,2,0:0:0:0: +247,71,21965,1,0,0:0:0:0: +220,116,22090,70,0,L|116:89,1,90,10|0,0:0|0:0,0:0:0:0: +281,39,22340,2,0,L|352:20,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +377,155,22590,2,0,L|311:138,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +297,257,22840,2,0,L|248:209,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +132,93,23090,6,0,L|220:116,1,90,10|0,0:0|0:0,0:0:0:0: +301,136,23340,1,2,0:0:0:0: +499,295,23590,69,10,0:0:0:0: +472,232,23715,1,2,0:0:0:0: +446,170,23840,1,10,0:0:0:0: +420,108,23965,1,2,0:0:0:0: +394,46,24090,5,10,0:0:0:0: +371,123,24215,1,2,0:0:0:0: +349,201,24340,1,10,0:0:0:0: +327,279,24465,1,2,0:0:0:0: +304,356,24590,70,0,L|411:337,1,90,12|2,0:0|0:0,0:0:0:0: +205,258,24840,2,0,L|98:239,1,90,10|2,0:0|0:0,0:0:0:0: +304,174,25090,2,0,L|411:155,1,90,12|2,0:0|0:0,0:0:0:0: +205,76,25340,1,10,0:0:0:0: +205,76,25465,1,2,0:0:0:0: +205,76,25590,1,10,0:0:0:0: +316,259,25840,1,10,0:0:0:0: +316,259,25965,1,2,0:0:0:0: +316,259,26090,1,10,0:0:0:0: +418,71,26340,1,10,0:0:0:0: +418,71,26465,1,2,0:0:0:0: +418,71,26590,5,10,0:0:0:0: +392,105,26715,1,0,0:0:0:0: +319,88,26840,2,0,L|304:33,2,45,0|0|0,1:0|1:0|1:0,0:0:0:0: +215,51,27090,70,0,L|92:32,1,90,4|0,0:0|0:0,0:0:0:0: +25,55,27340,2,0,L|70:171,1,90,2|0,0:0|0:0,0:0:0:0: +43,241,27590,2,0,L|88:357,1,90,10|0,0:0|0:0,0:0:0:0: +159,381,27840,2,0,L|201:327,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +140,169,28090,5,2,0:0:0:0: +140,169,28215,1,0,0:0:0:0: +151,248,28340,1,2,0:0:0:0: +151,248,28465,1,0,0:0:0:0: +214,198,28590,1,10,0:0:0:0: +214,198,28715,1,0,0:0:0:0: +292,207,28840,2,0,L|316:270,2,45,0|0|0,1:0|1:0|1:0,0:0:0:0: +366,331,29090,70,0,B|321:310|348:194|429:278|438:159,1,202.500007724762,4|0,0:0|0:0,0:0:0:0: +405,90,29590,1,10,0:0:0:0: +269,230,29840,1,2,0:0:0:0: +221,214,29965,1,0,0:0:0:0: +173,199,30090,1,2,0:0:0:0: +164,21,30340,1,2,0:0:0:0: +212,36,30465,1,0,0:0:0:0: +260,52,30590,6,0,L|175:79,1,90,10|0,0:0|0:0,0:0:0:0: +33,60,30840,70,0,B|28:30|28:30|-12:-4,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +102,128,31090,2,0,B|66:135|66:135|47:159,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +8,258,31340,2,0,B|37:263|37:263|72:303,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +198,187,31590,6,0,L|113:214,1,90,10|0,0:0|0:0,0:0:0:0: +77,308,31840,1,2,0:0:0:0: +338,365,32090,69,2,0:0:0:0: +307,306,32215,1,0,0:0:0:0: +245,282,32340,1,2,0:0:0:0: +183,304,32465,1,0,0:0:0:0: +151,362,32590,5,10,0:0:0:0: +158,281,32715,1,0,0:0:0:0: +164,200,32840,1,2,0:0:0:0: +171,120,32965,1,0,0:0:0:0: +178,39,33090,70,0,L|234:57,7,45,0|0|0|0|0|0|0|0,1:0|1:0|1:0|1:0|1:0|1:0|1:0|1:0,0:0:0:0: +230,73,33590,2,0,L|188:60,7,45,8|8|8|8|4|4|4|4,0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0,0:0:0:0: +197,80,34090,1,12,0:0:0:0: +197,80,34590,6,0,L|252:97,7,45,8|8|8|8|4|4|4|4,0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0,0:0:0:0: +248,113,35090,1,12,0:0:0:0: +380,360,36090,70,0,B|397:260|397:260|480:237,1,148.50000453186,6|0,0:0|2:0,0:0:0:0: +361,367,36340,2,0,L|189:302,1,168.75,6|0,0:0|2:0,0:0:0:0: +210,326,36590,6,0,L|162:338,2,40.4999987640381,0|0|0,1:0|1:0|1:0,0:0:0:0: +99,251,36839,1,8,0:0:0:0: +100,257,36902,1,8,0:0:0:0: +102,263,36965,70,0,L|141:253,2,40.4999987640381,0|0|8,1:0|1:0|0:0,0:0:0:0: +40,134,37215,2,0,L|29:184,2,49.5000015106202,0|0|8,1:0|1:0|0:0,0:0:0:0: +159,98,37465,2,0,L|148:148,2,49.5000015106202,0|0|8,1:0|1:0|0:0,0:0:0:0: +278,62,37715,2,0,L|267:112,2,49.5000015106202,0|0|8,1:0|1:0|0:0,0:0:0:0: +374,136,37965,1,4,0:0:0:0: +379,134,38027,1,4,0:0:0:0: +384,132,38091,6,0,B|358:21|358:21|507:62|507:62|471:176|471:176|385:237|385:237|415:303|415:303|475:304,1,594.000018127442,4|2,0:0|0:0,0:0:0:0: +328,318,38965,1,2,0:0:0:0: +328,318,39090,2,0,B|263:333|195:279|236:209|309:252|337:158|184:58|-16:144|-2:328|92:407|258:407|331:282|182:138|200:308|152:318,1,539.999983520508,2|2,0:0|0:0,0:0:0:0: +97,384,39840,70,0,P|69:359|2:363,1,90,2|2,0:0|0:0,0:0:0:0: +4,94,40090,6,0,L|32:284,2,161.999995056153,4|2|2,0:0|0:0|0:0,0:0:0:0: +218,39,40840,1,2,0:0:0:0: +218,39,40965,1,2,0:0:0:0: +218,39,41090,70,0,B|179:203|-38:132|6:-21|186:-62|224:64|142:69|197:119|263:165|352:109,1,544.500016616822,2|0,0:0|1:0,0:0:0:0: +351,0,41840,2,0,P|305:11|317:62,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +496,135,42090,6,0,B|446:37|446:37|430:211|430:211|486:263|486:263|418:367|418:367|343:255,1,594.000018127442,4|2,0:0|0:0,0:0:0:0: +185,159,42965,1,2,0:0:0:0: +185,159,43090,70,0,B|192:137|192:137|302:115|302:115|267:303|267:303|300:347|300:347|126:384|126:384|196:259|196:259|86:41|86:41|11:89|11:89|6:160|6:160|121:261|121:261|375:178,1,1485.0000453186,2|2,0:0|0:0,0:0:0:0: +512,75,45090,5,2,0:0:0:0: +463,103,45215,1,2,0:0:0:0: +415,132,45340,1,2,0:0:0:0: +424,175,45465,1,2,0:0:0:0: +434,219,45590,1,2,0:0:0:0: +419,236,45715,1,2,0:0:0:0: +405,253,45840,2,0,L|470:306,1,67.5000025749208,2|2,0:0|0:0,0:0:0:0: +392,354,46090,70,0,B|361:328|361:328|299:333,1,90,4|2,0:0|0:0,0:0:0:0: +315,206,46340,2,0,B|276:219|276:219|250:276,1,90,2|2,0:0|0:0,0:0:0:0: +121,261,46590,1,2,0:0:0:0: +121,261,46715,2,0,B|159:274|159:274|185:331,1,90,2|2,0:0|0:0,0:0:0:0: +90,353,46965,1,2,0:0:0:0: +90,353,47090,6,0,L|69:140,2,180,2|2|2,0:0|0:0|0:0,0:0:0:0: +206,223,47840,1,2,0:0:0:0: +206,223,47965,1,2,0:0:0:0: +206,223,48090,70,0,B|195:173|195:173|132:155,1,90,4|2,0:0|0:0,0:0:0:0: +100,102,48340,1,2,0:0:0:0: +100,102,48465,2,0,B|62:136|62:136|78:200,1,90,2|2,0:0|0:0,0:0:0:0: +268,66,48715,2,0,B|223:90|223:90|186:80,1,90,2|2,0:0|0:0,0:0:0:0: +129,17,48965,1,2,0:0:0:0: +129,17,49090,6,0,L|146:196,2,180,2|2|2,0:0|0:0|0:0,0:0:0:0: +337,51,49840,1,2,0:0:0:0: +337,51,49965,1,2,0:0:0:0: +337,51,50090,70,0,L|236:28,1,90,4|2,0:0|0:0,0:0:0:0: +409,129,50340,1,2,0:0:0:0: +409,129,50465,1,2,0:0:0:0: +409,129,50590,2,0,L|510:152,1,90,2|2,0:0|0:0,0:0:0:0: +295,254,50840,1,2,0:0:0:0: +295,254,50965,1,2,0:0:0:0: +295,254,51090,6,0,B|235:185|235:185|342:108,2,180,2|2|2,0:0|0:0|0:0,0:0:0:0: +386,269,51715,1,2,0:0:0:0: +386,269,51840,70,0,B|402:245|402:245|449:236,1,76.5000014591217,2|2,0:0|0:0,0:0:0:0: +455,323,52090,2,0,B|440:348|440:348|393:357,1,76.5000014591217,2|2,0:0|0:0,0:0:0:0: +379,262,52340,2,0,B|394:237|394:237|441:228,1,76.5000014591217,2|2,0:0|0:0,0:0:0:0: +448,316,52590,2,0,B|432:340|432:340|385:349,1,76.5000014591217,2|2,0:0|0:0,0:0:0:0: +292,364,52840,6,0,L|181:332,1,90,2|2,0:0|0:0,0:0:0:0: +58,309,53090,69,2,0:0:0:0: +95,283,53215,1,2,0:0:0:0: +132,257,53340,1,2,0:0:0:0: +112,226,53465,1,0,0:0:0:0: +92,195,53590,5,8,0:0:0:0: +83,269,53715,1,8,0:0:0:0: +74,343,53840,70,0,L|117:355,2,45,4|4|4,0:0|0:0|0:0,0:0:0:0: +192,229,54090,6,0,B|6:272|6:272|39:74|39:74|149:151,1,495.000015106202,6|2,0:0|0:0,0:0:0:0: +303,130,54840,1,2,0:0:0:0: +303,130,54965,1,2,0:0:0:0: +303,130,55090,70,0,B|277:135|277:135|129:30|129:30|341:27|341:27|444:158|444:158|318:232|318:232|286:344,1,818.999962509157,2|2,0:0|0:0,0:0:0:0: +397,375,56090,6,0,B|409:312|409:312|173:366,1,270,2|2,0:0|0:0,0:0:0:0: +147,214,56590,2,0,B|195:218|195:218|233:278,1,90,2|2,0:0|0:0,0:0:0:0: +34,336,56840,1,2,0:0:0:0: +34,336,56965,1,2,0:0:0:0: +34,336,57090,70,0,B|-22:272|-9:405|116:393|134:321|84:262|78:313|19:227|43:146|128:126,1,350.999983932496,2|2,0:0|0:0,0:0:0:0: +283,135,57590,6,0,P|230:142|194:76,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +123,30,57840,2,0,P|67:24|33:68,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +273,36,58090,70,0,B|400:6|400:6|384:94|384:94|426:143,1,270,2|2,0:0|0:0,0:0:0:0: +494,155,58590,2,0,P|498:117|465:70,1,90,2|2,0:0|0:0,0:0:0:0: +454,243,58840,1,2,0:0:0:0: +454,243,58965,1,2,0:0:0:0: +454,243,59090,2,0,B|402:263|365:159|418:201|453:98|354:39|259:89|272:206|387:199,1,350.999983932496,2|2,0:0|0:0,0:0:0:0: +346,282,59590,2,0,P|323:330|258:352,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +166,221,59840,2,0,P|219:225|261:278,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +179,307,60090,6,0,L|71:324,1,90,2|2,0:0|0:0,0:0:0:0: +78,208,60340,2,0,L|186:225,1,90,2|2,0:0|0:0,0:0:0:0: +179,109,60590,2,0,L|71:126,1,90,2|2,0:0|0:0,0:0:0:0: +78,10,60840,2,0,L|186:27,1,90,2|2,0:0|0:0,0:0:0:0: +350,27,61090,70,0,B|280:4|225:27|253:103,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +455,180,61340,2,0,B|439:107|392:71|340:133,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +374,347,61590,2,0,B|428:297|436:238|356:224,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +188,361,61840,2,0,B|258:384|313:361|285:285,1,116.999994644165,4|0,0:0|0:0,0:0:0:0: +274,142,62090,6,0,B|311:173|311:173|300:237|300:237|106:283,1,270,4|2,0:0|0:0,0:0:0:0: +116,128,62590,2,0,B|128:170|128:170|75:209,1,90,2|2,0:0|0:0,0:0:0:0: +30,301,62840,1,2,0:0:0:0: +30,301,62965,1,2,0:0:0:0: +30,301,63090,2,0,B|51:334|43:362|12:384|12:384|94:378|104:242|-1:308|-4:213|7:180,1,350.999983932496,2|2,0:0|0:0,0:0:0:0: +123,55,63590,70,0,P|100:97|26:93,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +201,5,63840,2,0,P|225:45|185:108,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +92,198,64090,6,0,B|139:181|139:181|181:265|181:265|328:278,1,270,2|2,0:0|0:0,0:0:0:0: +317,139,64590,70,0,B|258:150|258:150|235:195,1,90,2|2,0:0|0:0,0:0:0:0: +427,252,64840,1,2,0:0:0:0: +427,252,64965,1,2,0:0:0:0: +427,252,65090,6,0,B|377:194|284:233|303:338|328:257|389:350|317:412|246:419|138:383|254:289|306:394,1,350.999983932496,2|2,0:0|0:0,0:0:0:0: +412,347,65590,2,0,P|440:322|418:246,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +398,121,65840,2,0,P|404:84|481:64,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +511,201,66090,70,0,B|311:103|311:103|319:27,1,270,2|2,0:0|0:0,0:0:0:0: +193,22,66590,2,0,B|228:85|228:85|223:133,1,90,2|2,0:0|0:0,0:0:0:0: +87,245,66840,1,2,0:0:0:0: +87,245,66965,1,2,0:0:0:0: +87,245,67090,2,0,B|97:179|46:151|37:204|-10:133|9:36|113:5|179:53|173:131|142:168|75:164|52:124,1,350.999983932496,2|2,0:0|0:0,0:0:0:0: +7,238,67590,2,0,P|13:282|84:325,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +191,255,67840,2,0,P|140:228|86:245,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +278,332,68090,6,0,L|295:184,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +288,125,68340,2,0,L|387:170,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +266,15,68590,2,0,L|193:95,1,107.999996704102,2|0,0:0|0:0,0:0:0:0: +81,81,68840,70,0,L|109:132,3,38.2500007295609,2|0|0|0,0:0|0:0|0:0|0:0,0:0:0:0: +106,124,69090,5,12,0:0:0:0: +428,240,70590,70,0,P|430:227|427:239,1,33.7500012874604,2|0,0:0|0:0,0:0:0:0: +428,240,71090,6,0,P|417:198|311:174,1,148.50000453186,12|0,0:0|0:0,0:0:0:0: +292,182,71340,1,10,0:0:0:0: +292,182,71465,1,10,0:0:0:0: +343,285,71590,70,0,B|290:277|290:277|217:307,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +106,318,71840,2,0,B|155:337|155:337|204:400,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +207,157,72090,2,0,B|173:198|173:198|163:277,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +106,318,72340,1,10,0:0:0:0: +106,318,72465,1,10,0:0:0:0: +78,206,72590,6,0,B|84:161|84:161|117:119,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +0,46,72840,2,0,B|52:54|52:54|94:37,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +221,200,73090,2,0,B|203:158|203:158|211:105,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +277,26,73340,1,10,0:0:0:0: +277,26,73465,1,10,0:0:0:0: +277,26,73590,2,0,L|377:18,3,80.9999975280763,10|10|10|10,0:0|0:0|0:0|0:0,0:0:0:0: +409,153,74090,2,0,L|307:145,3,80.9999975280763,10|10|10|10,0:0|0:0|0:0|0:0,0:0:0:0: +361,266,74590,1,10,0:0:0:0: +361,266,74715,1,10,0:0:0:0: +361,266,74840,1,10,0:0:0:0: +361,266,74965,1,10,0:0:0:0: +429,339,75090,70,0,B|399:281|292:250|220:318|340:368|140:392|171:278|246:341,1,297.000009063721,4|2,0:0|0:0,0:0:0:0: +71,356,75590,2,0,P|160:356|75:257,1,297.000009063721,2|2,0:0|0:0,0:0:0:0: +99,63,76090,6,0,B|160:118|160:118|-19:173,1,242.999992584229,10|2,0:0|0:0,0:0:0:0: +99,63,76590,2,0,B|185:25|218:182|130:158|153:244,1,242.999992584229,2|2,0:0|0:0,0:0:0:0: +307,374,77090,70,0,B|267:350|267:350|279:244|279:244|244:221,1,188.999994232178,10|2,0:0|0:0,0:0:0:0: +307,374,77590,2,0,P|245:344|308:272,1,188.999994232178,2|2,0:0|0:0,0:0:0:0: +393,320,78090,6,0,L|488:345,1,90,10|2,0:0|0:0,0:0:0:0: +409,94,78590,70,0,L|377:-3,1,80.9999975280763,10|0,0:0|0:0,0:0:0:0: +428,236,78840,2,0,B|444:192|444:192|516:151,1,99.0000030212403,4|0,0:0|0:0,0:0:0:0: +192,49,79090,6,0,P|241:37|299:138,1,148.50000453186,12|0,0:0|0:0,0:0:0:0: +303,142,79340,1,10,0:0:0:0: +303,142,79465,1,10,0:0:0:0: +168,225,79590,70,0,B|179:163|179:163|227:132,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +84,187,79840,2,0,B|67:219|67:219|89:278,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +226,309,80090,2,0,B|257:290|257:290|268:228,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +209,143,80340,1,10,0:0:0:0: +209,143,80465,1,10,0:0:0:0: +116,112,80590,6,0,L|-5:136,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +161,31,80840,2,0,L|258:11,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +306,162,81090,70,0,L|185:138,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +348,0,81340,1,10,0:0:0:0: +348,0,81465,1,10,0:0:0:0: +348,0,81590,2,0,B|358:65|358:65|405:107,3,99.0000030212403,10|10|10|10,0:0|0:0|0:0|0:0,0:0:0:0: +461,238,82090,6,0,L|525:219,2,49.5000015106202,0|0|0,1:0|1:0|1:0,0:0:0:0: +384,182,82340,2,0,L|337:168,2,49.5000015106202,8|8|0,0:0|0:0|1:0,0:0:0:0: +307,274,82590,70,0,P|348:266|381:335,1,99.0000030212403,8|8,0:0|0:0,0:0:0:0: +385,313,82777,1,8,0:0:0:0: +385,321,82840,2,0,P|431:315|461:352,1,99.0000030212403,4|4,0:0|0:0,0:0:0:0: +219,355,83090,6,0,L|203:214,1,99.0000030212403,4|0,0:0|0:0,0:0:0:0: +237,209,83340,2,0,L|221:350,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +0,224,83590,70,0,L|141:208,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +189,125,83840,2,0,L|47:109,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +5,35,84090,6,0,B|100:34|36:105|177:103,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +232,68,84465,1,2,0:0:0:0: +232,68,84590,2,0,P|280:40|328:48,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +376,161,84840,2,0,L|301:132,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +503,69,85090,70,0,B|480:102|480:102|494:179|494:179|435:290,1,198.000006042481,2|2,0:0|0:0,0:0:0:0: +512,322,85465,2,0,B|441:336|441:336|430:332|430:332|379:341,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +289,330,85715,1,0,0:0:0:0: +289,330,85840,2,0,B|339:305|339:305|331:252,1,99.0000030212403,2|0,0:0|0:0,0:0:0:0: +257,234,86090,2,0,P|238:241|224:255,2,40.4999987640381 +178,129,86340,6,0,L|182:79,2,49.5000015106202,0|0|0,1:0|1:0|1:0,0:0:0:0: +122,255,86590,1,8,0:0:0:0: +114,256,86652,1,8,0:0:0:0: +107,258,86715,70,0,L|114:331,4,49.5000015106202,0|0|4|4|4,1:0|1:0|0:0|0:0|0:0,0:0:0:0: +51,376,87090,6,0,P|90:343|207:367,1,148.50000453186,4|0,0:0|0:0,0:0:0:0: +213,369,87340,1,10,0:0:0:0: +213,369,87465,1,10,0:0:0:0: +224,255,87590,70,0,B|160:273|160:273|152:340,1,99.0000030212403,10|10,0:0|3:0,0:0:0:0: +82,232,87840,2,0,B|86:199|86:199|149:181,1,99.0000030212403,10|10,0:0|3:0,0:0:0:0: +300,184,88090,2,0,B|236:165|236:165|228:98,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +227,49,88340,1,10,0:0:0:0: +227,49,88465,1,10,0:0:0:0: +318,97,88590,6,0,L|421:76,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +490,191,88840,2,0,L|387:170,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +300,184,89090,70,0,L|321:306,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +394,367,89340,1,10,0:0:0:0: +394,367,89465,1,10,0:0:0:0: +394,367,89590,2,0,L|409:274,3,80.9999975280763,10|10|10|10,0:0|0:0|0:0|0:0,0:0:0:0: +294,375,90090,6,0,B|242:385|242:385|174:329,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +121,343,90340,2,0,B|138:292|138:292|220:262,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +279,299,90590,1,10,0:0:0:0: +279,299,90715,1,10,0:0:0:0: +279,299,90840,1,10,0:0:0:0: +279,299,90965,1,8,0:0:0:0: +294,375,91090,70,0,B|250:328|327:254|394:285|372:376|489:352|511:275|355:253|416:345,1,297.000009063721,4|2,0:0|0:0,0:0:0:0: +512,384,91590,2,0,B|466:356|441:253|558:310|501:122|406:137|369:219,1,297.000009063721,2|2,0:0|0:0,0:0:0:0: +294,375,92090,6,0,B|349:305|349:305|182:277,1,242.999992584229,10|2,0:0|0:0,0:0:0:0: +294,375,92590,2,0,B|261:277|129:313|192:388|84:373,1,242.999992584229,2|2,0:0|0:0,0:0:0:0: +3,173,93090,70,0,B|64:153|64:153|99:282,1,188.999994232178,10|2,0:0|0:0,0:0:0:0: +3,173,93590,2,0,P|53:142|104:240,1,188.999994232178,2|2,0:0|0:0,0:0:0:0: +34,372,94090,6,0,B|10:285,1,90,10|2,0:0|0:0,0:0:0:0: +12,40,94590,70,0,B|46:53|46:53|82:29,1,80.9999975280763,10|0,0:0|0:0,0:0:0:0: +113,192,94840,2,0,L|-9:143,1,99.0000030212403,12|0,0:0|0:0,0:0:0:0: +216,42,95090,6,0,P|167:89|209:143,1,148.50000453186,12|0,0:0|0:0,0:0:0:0: +241,142,95340,1,10,0:0:0:0: +241,142,95465,1,10,0:0:0:0: +304,43,95590,70,0,B|294:74|294:74|366:143,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +313,204,95840,2,0,B|336:227|336:227|430:200,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +456,276,96090,2,0,B|488:268|488:268|511:171,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +468,123,96340,1,10,0:0:0:0: +468,123,96465,1,10,0:0:0:0: +497,35,96590,6,0,L|369:44,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +324,91,96840,2,0,L|196:100,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +95,13,97090,70,0,L|223:22,1,99.0000030212403,10|10,0:0|0:0,0:0:0:0: +181,184,97340,1,10,0:0:0:0: +181,184,97465,1,10,0:0:0:0: +181,184,97590,2,0,B|136:152|136:152|122:72,3,99.0000030212403,10|10|12|0,0:0|0:0|0:0|0:0,0:0:0:0: +0,180,98090,6,0,L|51:149,2,58.4999973220826,0|0|0,1:0|1:0|1:0,0:0:0:0: +65,284,98340,2,0,L|82:228,2,58.4999973220826,8|8|0,0:0|0:0|1:0,0:0:0:0: +193,300,98590,70,0,P|166:257|205:206,1,99.0000030212403,8|8,0:0|0:0,0:0:0:0: +190,213,98777,1,8,0:0:0:0: +197,211,98840,2,0,P|245:221|253:285,1,99.0000030212403,4|4,0:0|0:0,0:0:0:0: +448,362,99090,6,0,L|411:157,1,198.000006042481,4|0,0:0|1:0,0:0:0:0: +417,160,99402,1,0,1:0:0:0: +422,153,99465,70,0,L|480:148,4,56.25,0|0|0|0|0,1:0|1:0|1:0|1:0|1:0,0:0:0:0: +205,65,99840,6,0,L|107:72,1,99.0000030212403,4|0,0:0|0:0,0:0:0:0: +343,56,100090,2,0,L|444:48,1,99.0000030212403,4|0,0:0|0:0,0:0:0:0: +280,132,100340,2,0,L|284:186,3,33.7500012874604,4|0|0|0,0:0|0:0|0:0|0:0,0:0:0:0: +283,179,100590,1,12,0:0:0:0: +42,339,101090,69,8,0:0:0:0: +27,335,101215,2,0,B|69:318|69:318|73:320|73:320|133:296,1,99.0000030212403,12|0,0:0|0:0,0:0:0:0: +206,363,101465,2,0,B|164:346|164:346|160:348|160:348|100:324,1,99.0000030212403,12|0,0:0|0:0,0:0:0:0: +75,215,101715,6,0,B|72:203|72:203|97:133|97:133|94:120,1,99.0000030212403,12|0,0:0|0:0,0:0:0:0: +363,176,102590,70,0,L|417:192,2,56.25,10|0|10,0:0|0:0|0:0,0:0:0:0: +234,167,102840,2,0,L|194:206,2,56.25,10|0|10,0:0|0:0|0:0,0:0:0:0: +307,60,103090,2,0,L|294:6,2,56.25,10|0|10,0:0|0:0|0:0,0:0:0:0: +301,133,103340,5,2,0:0:0:0: +39,292,104077,1,4,0:0:0:0: +69,373,104327,70,0,P|101:351|118:319,1,51.0000009727478,8|8,0:0|0:0,0:0:0:0: +191,313,104493,2,0,P|176:286|175:258,1,38.9999982147218,8|4,0:0|0:0,0:0:0:0: +118,223,104660,2,0,P|129:207|130:180,1,30,4|4,0:0|0:0,0:0:0:0: +131,114,104827,5,12,0:0:0:0: +424,60,105577,1,4,0:0:0:0: +397,139,105827,70,0,P|361:154|313:136,1,51.0000009727478,8|8,0:0|0:0,0:0:0:0: +278,90,105993,2,0,P|278:70|286:53,1,38.9999982147218,8|4,0:0|0:0,0:0:0:0: +375,21,106160,2,0,P|387:28|395:40,1,30,4|4,0:0|0:0,0:0:0:0: +415,117,106327,5,12,0:0:0:0: +38,182,107077,1,4,0:0:0:0: +87,103,107327,70,0,P|54:92|16:91,1,51.0000009727478,8|8,0:0|0:0,0:0:0:0: +161,77,107493,2,0,P|182:65|215:58,1,38.9999982147218,8|4,0:0|0:0,0:0:0:0: +178,172,107660,2,0,P|156:160|134:158,1,30,4|4,0:0|0:0,0:0:0:0: +70,185,107827,5,12,0:0:0:0: +360,363,108577,1,4,0:0:0:0: +482,331,108827,70,0,P|451:350|440:382,1,51.0000009727478,8|8,0:0|0:0,0:0:0:0: +411,249,108993,2,0,P|398:273|403:298,1,38.9999982147218,8|4,0:0|0:0,0:0:0:0: +287,274,109160,2,0,P|295:286|309:291,1,30,4|4,0:0|0:0,0:0:0:0: +351,365,109327,5,12,0:0:0:0: +337,193,109577,1,0,2:0:0:0: +426,78,109827,1,0,0:0:0:0: +457,84,110077,1,4,0:0:0:0: +457,84,110827,69,12,0:0:0:0: +249,201,111077,1,0,0:0:0:0: +108,118,111327,1,0,0:0:0:0: +117,87,111577,1,4,0:0:0:0: +117,87,112327,5,12,0:0:0:0: +249,277,112577,1,0,0:0:0:0: +57,338,112827,1,0,0:0:0:0: +76,302,113077,1,4,0:0:0:0: +76,302,113834,69,12,0:0:0:0: +305,233,114084,1,0,0:0:0:0: +474,363,114334,1,0,0:0:0:0: +496,347,114584,1,4,0:0:0:0: +366,129,115334,5,12,0:0:0:0: +324,265,115584,1,0,0:0:0:0: +366,293,115834,1,0,0:0:0:0: +250,144,116084,69,4,0:0:0:0: +163,162,116334,1,8,0:0:0:0: +76,180,116584,1,4,0:0:0:0: +280,123,116840,5,12,0:0:0:0: +154,147,117090,1,0,0:0:0:0: +28,174,117340,1,0,0:0:0:0: +10,196,117590,70,0,P|15:251|11:289,1,90 +181,360,118340,6,0,L|298:330,1,90,12|0,0:0|0:0,0:0:0:0: +364,368,118590,1,2,0:0:0:0: +364,368,118715,1,0,0:0:0:0: +418,286,118840,2,0,L|331:264,1,90,2|0,0:0|3:0,0:0:0:0: +202,250,119090,70,0,P|244:215|244:165,1,90,10|0,0:0|0:0,0:0:0:0: +406,184,119340,2,0,P|352:174|327:131,1,90,2|0,0:0|0:0,0:0:0:0: +133,126,119590,2,0,P|186:116|211:73,1,90,2|0,0:0|0:0,0:0:0:0: +12,37,119840,6,0,L|47:153,1,90,10|0,0:0|0:0,0:0:0:0: +1,204,120090,1,2,0:0:0:0: +1,204,120215,1,0,0:0:0:0: +67,295,120340,2,0,L|92:208,1,90,2|0,0:0|0:0,0:0:0:0: +207,90,120590,70,0,P|153:99|128:142,1,90,10|0,0:0|0:0,0:0:0:0: +350,220,120840,2,0,L|358:175,2,45,8|8|4,0:0|0:0|0:0,0:0:0:0: +183,199,121090,2,0,L|290:175,1,90,0|0,1:0|0:0,0:0:0:0: +310,101,121340,6,0,P|275:88|248:62,2,76.5000014591217,4|0|0,0:0|0:0|0:0,0:0:0:0: +398,83,121715,1,0,0:0:0:0: +398,83,121840,2,0,P|424:55|437:20,1,76.5000014591217 +377,167,122090,70,0,L|361:251,1,76.5000014591217,4|0,0:0|0:0,0:0:0:0: +456,250,122340,1,8,2:3:0:0: +456,250,122465,1,0,0:0:0:0: +503,327,122590,1,4,2:3:0:0: +503,327,122715,1,0,0:0:0:0: +411,320,122840,6,0,L|314:347,1,76.5000014591217 +248,284,123090,2,0,B|239:329|239:329|249:387,1,76.5000014591217,2|0,0:0|0:0,0:0:0:0: +91,330,123340,2,0,B|120:346|120:346|124:357|124:357|176:389,1,76.5000014591217,2|0,0:0|0:0,0:0:0:0: +8,271,123590,70,0,L|0:176,1,76.5000014591217,4|0,0:0|0:0,0:0:0:0: +80,143,123840,1,8,2:3:0:0: +80,143,123965,1,0,0:0:0:0: +59,59,124090,1,4,2:3:0:0: +59,59,124215,1,0,0:0:0:0: +142,82,124340,6,0,L|233:73,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +374,147,124590,2,0,B|344:106|344:106|293:91,1,76.5000014591217,2|0,0:0|0:0,0:0:0:0: +254,254,124840,2,0,B|276:207|276:207|283:201|283:201|303:162,1,76.5000014591217,2|0,0:0|0:0,0:0:0:0: +236,55,125090,70,0,L|159:62,1,76.5000014591217,4|0,0:0|0:0,0:0:0:0: +82,70,125340,1,8,2:3:0:0: +82,70,125465,1,0,0:0:0:0: +6,35,125590,1,4,2:3:0:0: +6,35,125715,1,0,0:0:0:0: +11,124,125840,6,0,L|17:200,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +0,307,126090,2,0,B|19:287|19:287|91:259,1,76.5000014591217,2|0,0:0|0:0,0:0:0:0: +144,384,126340,2,0,B|115:348|115:348|108:346|108:346|58:356,1,76.5000014591217,2|0,0:0|0:0,0:0:0:0: +202,313,126590,70,0,L|300:301,1,76.5000014591217,4|0,0:0|0:0,0:0:0:0: +367,371,126840,1,8,2:3:0:0: +367,371,126965,1,0,0:0:0:0: +437,329,127090,1,4,2:3:0:0: +437,329,127215,1,0,0:0:0:0: +366,289,127340,6,0,L|376:180,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +285,168,127590,2,0,B|329:124|329:124|370:122,1,76.5000014591217,2|0,0:0|0:0,0:0:0:0: +361,18,127840,2,0,B|410:43|410:43|411:48|411:48|442:67,1,76.5000014591217,2|0,0:0|0:0,0:0:0:0: +449,220,128090,70,0,L|354:210,1,76.5000014591217,4|0,0:0|0:0,0:0:0:0: +285,168,128340,1,8,2:3:0:0: +285,168,128465,1,0,0:0:0:0: +322,98,128590,1,4,2:3:0:0: +322,98,128715,1,0,0:0:0:0: +236,99,128840,6,0,L|141:109,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +285,168,129090,2,0,B|341:173|341:173|355:187,1,76.5000014591217,2|0,0:0|0:0,0:0:0:0: +180,206,129340,2,0,B|169:195|169:195|124:191|124:191|111:181,1,76.5000014591217,2|0,0:0|0:0,0:0:0:0: +22,34,129590,70,0,L|41:149,1,90,12|0,0:0|0:0,0:0:0:0: +10,236,129840,1,2,0:0:0:0: +10,236,129965,1,0,0:0:0:0: +124,288,130090,1,2,0:0:0:0: +124,288,130215,1,0,0:0:0:0: +0,384,130340,6,0,B|14:325|14:325|75:304,1,90,10|0,0:0|0:0,0:0:0:0: +236,275,130590,2,0,B|222:216|222:216|161:195,1,90,2|0,0:0|0:0,0:0:0:0: +36,122,130840,2,0,B|50:63|50:63|111:42,1,90,2|0,0:0|0:0,0:0:0:0: +231,80,131090,70,0,L|341:117,1,90,10|0,0:0|0:0,0:0:0:0: +395,244,131340,1,2,0:0:0:0: +395,244,131465,1,0,0:0:0:0: +438,142,131590,1,2,0:0:0:0: +438,142,131715,1,0,0:0:0:0: +299,222,131840,6,0,B|292:276|292:276|343:333,1,90,10|0,0:0|0:0,0:0:0:0: +438,142,132090,2,0,B|488:121|488:121|512:48,1,90,2|0,0:0|0:0,0:0:0:0: +299,61,132340,2,0,B|255:27|255:27|180:43,1,90,10|0,0:0|0:0,0:0:0:0: +93,37,132590,70,0,P|84:118|90:206,1,155.250002961159,4|0,0:0|2:0,0:0:0:0: +182,194,132840,2,0,P|158:138|70:119,1,155.250002961159,4|0,0:0|2:0,0:0:0:0: +0,193,133090,2,0,B|-1:284|62:222|34:365,1,155.250002961159,4|0,0:0|2:0,0:0:0:0: +25,359,133340,5,12,0:0:0:0: +262,319,133590,1,2,0:0:0:0: +178,290,133715,1,8,0:0:0:0: +178,290,133840,2,0,L|116:301,2,45,2|0|0,0:0|0:0|0:0,0:0:0:0: +262,319,134090,2,0,L|369:298,1,90,2|0,0:0|0:0,0:0:0:0: +170,206,134340,2,0,L|258:188,1,90,2|0,0:0|0:0,0:0:0:0: +78,93,134590,2,0,L|166:75,1,90,2|0,0:0|0:0,0:0:0:0: +304,23,134840,70,0,B|268:56|268:56|271:133,1,90,10|0,0:0|0:0,0:0:0:0: +348,137,135090,2,0,L|364:179,2,45,2|0|0,0:0|0:0|0:0,0:0:0:0: +304,23,135340,2,0,B|352:24|352:24|402:83,1,90,10|0,0:0|0:0,0:0:0:0: +478,178,135590,6,0,P|442:247|427:322,1,155.250002961159,4|0,0:0|2:0,0:0:0:0: +487,384,135840,2,0,P|511:318|459:245,1,155.250002961159,4|0,0:0|2:0,0:0:0:0: +427,322,136090,2,0,B|341:349|364:266|283:294,1,155.250002961159,4|0,0:0|2:0,0:0:0:0: +216,341,136340,69,12,0:0:0:0: +63,119,136590,1,2,0:0:0:0: +12,194,136715,1,8,0:0:0:0: +12,194,136840,2,0,L|74:205,2,45,2|0|0,0:0|0:0|0:0,0:0:0:0: +63,295,137090,2,0,L|159:276,1,90,8|8,0:0|0:0,0:0:0:0: +154,271,137277,1,8,0:0:0:0: +157,264,137340,2,0,L|253:245,1,90,8|8,0:0|0:0,0:0:0:0: +335,271,137590,2,0,L|383:261,2,33.7500012874604,8|8|8,0:0|0:0|0:0,0:0:0:0: +471,111,137840,6,0,B|403:124|403:124|388:162,1,90,12|4,0:0|0:0,0:0:0:0: +394,150,138027,1,4,0:0:0:0: +392,157,138090,2,0,B|384:176|384:176|316:189,1,90,4|4,0:0|0:0,0:0:0:0: +233,102,138340,2,0,B|301:88|301:88|328:118,1,90,4|8,0:0|0:0,0:0:0:0: +466,199,138590,70,0,B|478:270|426:298|399:266|388:352,1,155.250002961159,4|0,0:0|2:0,0:0:0:0: +472,384,138840,2,0,P|501:345|434:269,1,155.250002961159,4|0,0:0|2:0,0:0:0:0: +384,213,139090,2,0,P|312:227|305:300,1,155.250002961159,4|0,0:0|2:0,0:0:0:0: +332,380,139340,5,12,0:0:0:0: +141,175,139590,1,2,0:0:0:0: +218,211,139715,1,8,0:0:0:0: +218,211,139840,2,0,L|206:271,2,45,2|0|0,0:0|0:0|0:0,0:0:0:0: +166,329,140090,70,0,B|131:304|131:304|118:226,1,90,2|0,0:0|0:0,0:0:0:0: +218,211,140340,2,0,L|226:166,2,45,2|0|0,0:0|0:0|0:0,0:0:0:0: +105,145,140590,2,0,L|96:100,2,45,2|0|0,0:0|0:0|0:0,0:0:0:0: +245,77,140840,1,10,0:0:0:0: +245,77,141090,2,0,L|253:32,2,45,2|0|0,0:0|0:0|0:0,0:0:0:0: +105,145,141340,2,0,L|96:100,2,45,2|0|0,0:0|0:0|0:0,0:0:0:0: +218,211,141590,6,0,B|310:212|250:140|361:139,1,155.250002961159,4|0,0:0|2:0,0:0:0:0: +470,149,141840,2,0,P|443:170|353:112,1,155.250002961159,4|0,0:0|2:0,0:0:0:0: +348,40,142090,2,0,L|319:238,1,155.250002961159,4|0,0:0|2:0,0:0:0:0: +313,276,142340,69,12,0:0:0:0: +348,40,142840,1,2,0:0:0:0: +348,40,143090,6,0,L|339:101,2,45,0|0|0,1:0|1:0|1:0,0:0:0:0: +434,158,143340,69,8,0:0:0:0: +433,165,143402,1,8,0:0:0:0: +432,172,143465,6,0,L|423:233,2,45,0|0|4,1:0|1:0|0:0,0:0:0:0: +314,259,143715,69,4,0:0:0:0: +313,266,143777,1,4,0:0:0:0: +312,273,143840,6,0,L|302:333,2,45,0|0|0,1:0|1:0|1:0,0:0:0:0: +218,131,144090,2,0,L|208:71,2,45,8|8|0,0:0|0:0|1:0,0:0:0:0: +169,238,144340,2,0,L|199:243,2,29.2499986610413,4|4|4,0:0|0:0|0:0,0:0:0:0: +110,148,144590,70,0,B|43:113|43:113|10:284,1,233.999989288331,4|2,0:0|0:0,0:0:0:0: +215,348,145340,2,0,L|395:312,1,175.499991966248,10|0,0:0|0:0,0:0:0:0: +474,323,145840,2,0,L|466:372,2,29.2499986610413,2|0|0,0:0|0:0|0:0,0:0:0:0: +503,145,146090,5,2,0:0:0:0: +503,145,146465,1,2,0:0:0:0: +503,145,146840,1,4,0:0:0:0: +241,88,147340,69,8,0:0:0:0: +280,16,147465,2,0,B|345:43|349:128|299:210|230:119|227:264,1,292.499986610413,4|2,0:0|0:0,0:0:0:0: +48,374,148340,2,0,B|118:300|118:300|82:226,1,175.499991966248,10|0,0:0|0:0,0:0:0:0: +3,262,148840,2,0,L|3:312,2,29.2499986610413,2|0|0,0:0|0:0|0:0,0:0:0:0: +4,73,149090,5,2,0:0:0:0: +4,73,149465,1,2,0:0:0:0: +4,73,149840,70,0,L|47:91,3,45,0|0|0|0,1:0|1:0|1:0|1:0,0:0:0:0: +71,74,150090,2,0,L|114:92,3,45,8|8|4|4,0:0|0:0|0:0|0:0,0:0:0:0: +138,75,150340,1,2,0:0:0:0: +226,248,150590,5,4,0:0:0:0: +226,241,150652,1,0,0:0:0:0: +227,234,150715,1,0,0:0:0:0: +228,227,150777,1,0,0:0:0:0: +229,221,150840,70,0,L|239:146,12,45,0|0|0|0|4|0|0|0|0|0|0|0|12,0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0,0:0:0:0: +441,106,151840,1,4,0:0:0:0: +490,183,152090,2,0,P|448:196|350:113,1,153.000002918243,12|0,0:0|0:0,0:0:0:0: +327,352,152590,2,0,P|375:300|286:147,1,270,4|0,0:0|0:0,0:0:0:0: +171,226,153090,6,0,P|247:231|240:294,1,153.000002918243,4|0,0:0|0:0,0:0:0:0: +17,75,153590,70,0,B|62:113|62:113|169:93,1,135,12|0,0:0|2:0,0:0:0:0: +216,62,153840,2,0,B|141:48|141:48|96:86,1,135,0|0,0:0|2:0,0:0:0:0: +17,75,154090,2,0,B|6:132|6:132|77:215,1,135,4|0,0:0|2:0,0:0:0:0: +56,269,154340,2,0,B|114:269|114:269|184:185,1,135 +239,200,154590,5,4,0:0:0:0: +238,193,154652,1,0,0:0:0:0: +237,186,154715,1,0,0:0:0:0: +237,179,154777,1,0,0:0:0:0: +236,173,154840,2,0,B|231:114,12,45,0|0|0|0|4|0|0|0|0|0|0|0|12,0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0,0:0:0:0: +375,316,155840,1,4,0:0:0:0: +284,357,156090,2,0,P|326:325|289:223,1,153.000002918243,12|0,0:0|0:0,0:0:0:0: +502,369,156590,2,0,P|383:337|406:178,1,270,4|0,0:0|0:0,0:0:0:0: +512,178,157090,2,0,P|467:200|499:296,1,153.000002918243,4|0,0:0|0:0,0:0:0:0: +451,27,157590,70,0,B|415:55|415:55|295:42,1,135,12|0,0:0|2:0,0:0:0:0: +249,87,157840,2,0,B|285:59|285:59|405:72,1,135,0|0,0:0|2:0,0:0:0:0: +387,153,158090,2,0,B|351:181|351:181|231:168,1,135,12|0,0:0|2:0,0:0:0:0: +185,213,158340,2,0,B|221:185|221:185|341:198,1,135,0|0,0:0|2:0,0:0:0:0: +322,279,158590,5,4,0:0:0:0: +317,283,158652,1,0,0:0:0:0: +312,287,158715,1,0,0:0:0:0: +307,291,158777,1,0,0:0:0:0: +302,295,158840,2,0,B|266:323,12,45,0|0|0|0|4|0|0|0|0|0|0|0|12,0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0,0:0:0:0: +50,170,159840,69,4,0:0:0:0: +151,128,160090,2,0,L|118:334,1,180,12|0,0:0|0:0,0:0:0:0: +325,124,160590,2,0,B|258:119|258:119|204:41|204:41|37:25,1,310.500005922318,4|0,0:0|0:0,0:0:0:0: +66,120,161090,2,0,B|150:128|150:128|227:238,1,180,4|0,0:0|0:0,0:0:0:0: +402,295,161590,6,0,B|516:313|516:313|497:349,1,155.250002961159,12|0,0:0|2:0,0:0:0:0: +396,376,161840,2,0,B|282:358|282:358|301:322,1,155.250002961159,0|0,0:0|2:0,0:0:0:0: +342,240,162090,2,0,B|361:204|361:204|247:186,1,155.250002961159,4|0,0:0|2:0,0:0:0:0: +168,230,162340,2,0,B|129:242|129:242|196:334,1,155.250002961159,0|0,0:0|2:0,0:0:0:0: +245,270,162590,69,4,0:0:0:0: +244,263,162652,1,0,0:0:0:0: +243,256,162715,1,0,0:0:0:0: +243,249,162777,1,0,0:0:0:0: +242,243,162840,6,0,L|235:166,12,45,0|0|0|0|4|0|0|0|0|0|0|0|12,0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0,0:0:0:0: +442,57,163840,1,4,0:0:0:0: +481,164,164090,2,0,L|280:121,1,180,12|0,0:0|0:0,0:0:0:0: +56,59,164590,2,0,B|139:38|139:38|90:277,1,310.500005922318,4|0,0:0|0:0,0:0:0:0: +56,59,165090,2,0,B|103:93|103:93|73:242,1,180,4|0,0:0|0:0,0:0:0:0: +241,380,165590,70,0,B|230:357|230:357|131:339|131:339|90:368,1,155.250002961159,12|0,0:0|2:0,0:0:0:0: +30,326,165840,2,0,B|40:303|40:303|140:285|140:285|181:314,1,155.250002961159,0|0,0:0|2:0,0:0:0:0: +247,282,166090,2,0,B|247:256|247:256|164:198|164:198|115:207,1,155.250002961159,12|0,0:0|2:0,0:0:0:0: +46,192,166340,2,0,B|45:166|45:166|128:108|128:108|177:117,1,155.250002961159,0|0,0:0|2:0,0:0:0:0: +232,141,166590,5,4,0:0:0:0: +237,144,166652,1,0,0:0:0:0: +243,148,166715,1,0,0:0:0:0: +248,152,166777,1,0,0:0:0:0: +254,156,166840,70,0,L|290:182,11,45,0|0|0|0|4|0|0|0|0|0|0|0,0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0,0:0:0:0: +305,192,167590,1,12,0:0:0:0: +512,329,167840,2,0,B|502:274|502:274|493:271|493:271|475:186,1,135,4|0,0:0|2:0,0:0:0:0: +440,245,168090,1,12,0:0:0:0: +487,384,168340,2,0,B|504:357|504:357|490:283,1,90 +419,117,168590,2,0,B|472:52|472:52|456:209|456:209|397:244,1,270,4|0,0:0|0:0,0:0:0:0: +357,183,169090,2,0,B|256:167|256:167|251:237,1,153.000002918243,4|0,0:0|0:0,0:0:0:0: +84,369,169590,6,0,B|37:351|37:351|190:305,1,161.999995056153,12|0,0:0|2:0,0:0:0:0: +191,384,169840,2,0,L|203:186,1,161.999995056153,0|0,0:0|2:0,0:0:0:0: +225,130,170090,2,0,B|331:162|331:162|284:180,1,161.999995056153,4|0,0:0|2:0,0:0:0:0: +210,208,170340,2,0,L|200:369,1,161.999995056153 +287,384,170590,69,4,0:0:0:0: +292,380,170652,1,0,0:0:0:0: +298,377,170715,1,0,0:0:0:0: +343,278,170840,2,0,L|406:284,11,45,0|0|0|0|4|0|0|0|0|0|0|0,0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0,0:0:0:0: +397,292,171590,1,12,0:0:0:0: +464,56,171840,6,0,B|382:39|382:39|404:117,1,135,2|0,0:0|0:0,0:0:0:0: +451,149,172090,2,0,P|448:207|424:233,1,67.5000025749208,4|0,0:0|0:0,0:0:0:0: +502,346,172340,2,0,L|466:134,1,182.250000695229 +369,172,172590,70,0,L|321:229,2,45,0|0|0,1:0|1:0|1:0,0:0:0:0: +279,87,172840,1,8,0:0:0:0: +277,93,172902,1,8,0:0:0:0: +276,100,172965,6,0,L|262:173,2,45,0|0|8,1:0|1:0|0:0,0:0:0:0: +164,136,173215,2,0,L|189:205,2,45,0|0|0,1:0|1:0|1:0,0:0:0:0: +247,263,173465,1,0,1:0:0:0: +246,270,173527,1,0,1:0:0:0: +244,277,173590,70,0,B|234:324|234:324|126:267|35:363,1,270,4|0,0:0|0:0,0:0:0:0: +96,134,174590,6,0,P|106:58|14:94,1,202.500007724762,4|0,0:0|0:0,0:0:0:0: +11,182,175090,1,10,0:0:0:0: +213,165,175340,1,2,0:0:0:0: +217,121,175465,1,0,0:0:0:0: +220,77,175590,1,2,0:0:0:0: +130,248,175840,1,2,0:0:0:0: +126,292,175965,1,0,0:0:0:0: +123,336,176090,2,0,L|226:299,1,90,10|0,0:0|0:0,0:0:0:0: +277,355,176340,70,0,B|295:325|295:325|291:270,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +427,348,176590,2,0,B|410:317|410:317|360:293,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +495,214,176840,2,0,B|460:213|460:213|414:244,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +340,208,177090,2,0,L|349:103,1,90,10|0,0:0|0:0,0:0:0:0: +413,55,177340,1,2,0:0:0:0: +250,212,177590,5,4,0:0:0:0: +167,196,177715,1,8,0:0:0:0: +133,159,177840,1,8,0:0:0:0: +126,116,177965,1,8,0:0:0:0: +134,87,178090,1,4,0:0:0:0: +156,92,178215,1,4,0:0:0:0: +178,96,178340,1,4,0:0:0:0: +200,101,178465,1,4,0:0:0:0: +222,105,178590,70,0,P|179:190|248:271,1,202.500007724762,4|0,0:0|0:0,0:0:0:0: +328,267,179090,1,10,0:0:0:0: +105,370,179340,1,2,0:0:0:0: +148,358,179465,1,0,0:0:0:0: +192,347,179590,1,2,0:0:0:0: +0,205,179840,1,2,0:0:0:0: +43,193,179965,1,0,0:0:0:0: +87,182,180090,2,0,L|69:301,1,90,10|0,0:0|0:0,0:0:0:0: +20,118,180340,6,0,B|62:89|62:89|70:49,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +141,17,180590,2,0,B|153:27|153:27|157:78,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +192,165,180840,2,0,B|234:136|234:136|242:96,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +339,14,181090,70,0,L|212:37,1,90,10|0,0:0|0:0,0:0:0:0: +261,122,181340,1,2,0:0:0:0: +430,61,181590,5,10,0:0:0:0: +421,127,181715,1,2,0:0:0:0: +412,194,181840,1,10,0:0:0:0: +403,261,181965,1,2,0:0:0:0: +394,328,182090,1,10,0:0:0:0: +321,292,182215,1,2,0:0:0:0: +248,256,182340,1,10,0:0:0:0: +175,221,182465,1,2,0:0:0:0: +102,185,182590,70,0,L|205:141,1,90,12|2,0:0|0:0,0:0:0:0: +313,210,182840,2,0,L|299:321,1,90,10|2,0:0|0:0,0:0:0:0: +185,380,183090,2,0,L|95:312,1,90,10|2,0:0|0:0,0:0:0:0: +11,223,183340,1,10,0:0:0:0: +11,223,183465,1,2,0:0:0:0: +11,223,183590,1,10,0:0:0:0: +256,116,183840,1,10,0:0:0:0: +256,116,183965,1,2,0:0:0:0: +256,116,184090,1,10,0:0:0:0: +86,15,184340,1,2,0:0:0:0: +86,15,184465,1,2,0:0:0:0: +86,15,184590,5,10,0:0:0:0: +122,69,184715,1,0,0:0:0:0: +109,153,184840,2,0,B|92:197|92:197|15:226,1,90,0|0,1:0|1:0,0:0:0:0: +37,312,185090,70,0,B|93:292|93:292|124:296,1,90,4|0,0:0|0:0,0:0:0:0: +207,359,185340,2,0,B|291:327,1,90,2|0,0:0|0:0,0:0:0:0: +403,253,185590,6,0,B|372:257|372:257|283:224,1,90,10|0,0:0|0:0,0:0:0:0: +236,189,185840,2,0,L|220:267,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +453,103,186090,69,2,0:0:0:0: +453,103,186215,1,2,0:0:0:0: +394,167,186340,1,2,0:0:0:0: +394,167,186465,1,0,0:0:0:0: +367,84,186590,1,12,0:0:0:0: +367,84,186715,1,0,0:0:0:0: +340,1,186840,6,0,L|282:22,2,45,8|8|4,0:0|0:0|0:0,0:0:0:0: +241,75,187090,70,0,B|108:104|176:12|53:39,1,202.500007724762,4|0,0:0|0:0,0:0:0:0: +85,116,187590,1,10,0:0:0:0: +249,184,187840,1,2,0:0:0:0: +242,229,187965,1,0,0:0:0:0: +236,274,188090,1,2,0:0:0:0: +45,309,188340,1,2,0:0:0:0: +38,264,188465,1,0,0:0:0:0: +32,219,188590,2,0,L|100:328,1,90,10|0,0:0|0:0,0:0:0:0: +236,274,188840,6,0,B|188:296|188:296|149:295,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +320,382,189090,2,0,B|272:360|272:360|233:361,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +384,265,189340,2,0,B|336:287|336:287|297:286,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +203,260,189590,2,0,L|155:183,1,90,10|0,0:0|0:0,0:0:0:0: +158,98,189840,1,2,0:0:0:0: +361,79,190090,69,2,0:0:0:0: +377,141,190215,1,8,0:0:0:0: +336,192,190340,1,2,0:0:0:0: +271,188,190465,1,8,0:0:0:0: +236,133,190590,1,2,0:0:0:0: +305,176,190715,1,4,0:0:0:0: +374,218,190840,1,2,0:0:0:0: +443,261,190965,1,4,0:0:0:0: +511,303,191090,6,0,B|386:333|386:333|371:326|371:326|231:313,1,270,4|0,0:0|0:0,0:0:0:0: +163,303,191590,1,10,0:0:0:0: +125,95,191840,1,2,0:0:0:0: +170,96,191965,1,0,0:0:0:0: +215,97,192090,1,2,0:0:0:0: +22,189,192340,1,2,0:0:0:0: +44,228,192465,1,0,0:0:0:0: +65,267,192590,70,0,L|155:184,1,90,8|0,0:0|0:0,0:0:0:0: +20,100,192840,6,0,B|24:142|24:142|69:165,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +170,96,193090,2,0,B|131:78|131:78|89:105,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +231,160,193340,2,0,B|253:148|253:148|257:106,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +135,179,193590,70,0,L|161:272,1,90,10|0,0:0|0:0,0:0:0:0: +210,331,193840,1,2,0:0:0:0: +413,266,194090,5,4,0:0:0:0: +389,184,194215,1,8,0:0:0:0: +350,154,194340,1,8,0:0:0:0: +306,150,194465,1,8,0:0:0:0: +278,161,194590,1,8,0:0:0:0: +285,182,194715,1,8,0:0:0:0: +291,204,194840,1,4,0:0:0:0: +298,225,194965,1,4,0:0:0:0: +303,247,195090,70,0,P|346:172|342:44,1,202.500007724762,4|0,0:0|0:0,0:0:0:0: +289,0,195590,1,10,0:0:0:0: +90,80,195840,1,2,0:0:0:0: +45,74,195965,1,0,0:0:0:0: +0,68,196090,1,2,0:0:0:0: +262,77,196340,1,2,0:0:0:0: +217,83,196465,1,0,0:0:0:0: +172,89,196590,2,0,L|133:196,1,90,10|0,0:0|0:0,0:0:0:0: +187,239,196840,6,0,L|275:232,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +128,303,197090,2,0,L|40:296,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +184,374,197340,2,0,L|272:367,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +351,215,197590,2,0,L|320:299,1,90,10|0,0:0|0:0,0:0:0:0: +381,369,197840,1,2,0:0:0:0: +451,149,198090,69,10,0:0:0:0: +382,140,198215,1,2,0:0:0:0: +316,132,198340,1,10,0:0:0:0: +249,123,198465,1,2,0:0:0:0: +182,115,198590,5,10,0:0:0:0: +231,178,198715,1,2,0:0:0:0: +281,242,198840,1,10,0:0:0:0: +331,306,198965,1,2,0:0:0:0: +381,369,199090,70,0,L|395:262,1,90,12|0,0:0|0:0,0:0:0:0: +325,166,199340,2,0,L|311:59,1,90,10|2,0:0|0:0,0:0:0:0: +460,50,199590,2,0,L|446:157,1,90,12|0,0:0|0:0,0:0:0:0: +325,166,199840,1,10,0:0:0:0: +325,166,199965,1,2,0:0:0:0: +325,166,200090,1,10,0:0:0:0: +160,30,200340,1,10,0:0:0:0: +160,30,200465,1,2,0:0:0:0: +160,30,200590,1,10,0:0:0:0: +35,197,200840,1,2,0:0:0:0: +35,197,200965,1,0,0:0:0:0: +35,197,201090,5,12,0:0:0:0: +91,200,201215,1,0,0:0:0:0: +147,143,201340,2,0,L|132:87,2,45,0|0|0,1:0|1:0|1:0,0:0:0:0: +52,63,201590,70,0,L|42:182,1,90,2|0,0:0|0:0,0:0:0:0: +77,236,201840,2,0,L|67:355,1,90,2|0,0:0|0:0,0:0:0:0: +146,381,202090,2,0,L|254:330,1,90,10|0,0:0|0:0,0:0:0:0: +232,255,202340,1,2,0:0:0:0: +260,47,202590,5,2,0:0:0:0: +260,47,202715,1,2,0:0:0:0: +306,112,202840,1,2,0:0:0:0: +306,112,202965,1,0,0:0:0:0: +386,104,203090,1,10,0:0:0:0: +386,104,203215,1,0,0:0:0:0: +433,167,203340,2,0,L|411:280,1,90,10|0,0:0|0:0,0:0:0:0: +504,306,203590,70,0,B|438:241|372:310|414:353|342:360,1,202.500007724762,4|0,0:0|0:0,0:0:0:0: +264,325,204090,1,10,0:0:0:0: +143,140,204340,1,2,0:0:0:0: +191,156,204465,1,0,0:0:0:0: +239,171,204590,1,2,0:0:0:0: +67,275,204840,1,2,0:0:0:0: +115,260,204965,1,0,0:0:0:0: +163,244,205090,6,0,L|144:134,1,90,10|0,0:0|0:0,0:0:0:0: +96,73,205340,70,0,B|56:76|56:76|15:55,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +0,187,205590,2,0,B|27:185|27:185|60:163,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +148,155,205840,2,0,B|150:194|150:194|138:219,1,67.5000025749208,2|0,0:0|0:0,0:0:0:0: +79,347,206090,6,0,L|60:237,1,90,10|0,0:0|0:0,0:0:0:0: +46,174,206340,1,2,0:0:0:0: +179,72,206590,69,0,1:0:0:0: +235,105,206715,1,0,1:0:0:0: +246,169,206840,1,8,0:0:0:0: +204,219,206965,1,0,1:0:0:0: +138,219,207090,1,8,0:0:0:0: +217,204,207215,1,8,0:0:0:0: +297,190,207340,1,4,0:0:0:0: +377,176,207465,1,4,0:0:0:0: +456,161,207590,6,0,L|451:223,7,45,0|0|0|0|0|0|0|0,1:0|1:0|1:0|1:0|1:0|1:0|1:0|1:0,0:0:0:0: +434,217,208090,2,0,L|438:172,7,45,8|8|8|8|4|4|4|4,0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0,0:0:0:0: +419,182,208590,1,12,0:0:0:0: +419,182,209090,2,0,L|415:227,7,45,8|8|8|8|4|4|4|4,0:0|0:0|0:0|0:0|0:0|0:0|0:0|0:0,0:0:0:0: +396,237,209590,70,0,B|283:223|283:223|317:181,1,148.50000453186,4|0,0:0|2:0,0:0:0:0: +226,158,209840,2,0,B|250:291|250:291|290:330,1,168.75,4|0,3:0|3:0,3:0:0:0: +290,309,210090,2,0,L|364:318,2,45,0|0|8,1:0|1:0|0:0,0:0:0:0: +204,369,210340,2,0,L|167:373,2,29.2499986610413,4|4|4,0:0|0:0|0:0,0:0:0:0: +101,316,210590,6,0,L|138:153,2,161.999995056153,4|2|2,0:0|0:0|0:0,0:0:0:0: +20,99,211340,1,2,0:0:0:0: +20,99,211464,1,2,0:0:0:0: +20,99,211590,70,0,B|77:112|72:209|5:186|-24:135|-27:50|36:-17|134:-9|63:88|155:97|238:53,1,396.000012084961,2|2,0:0|0:0,0:0:0:0: +298,15,212215,1,2,0:0:0:0: +298,15,212340,2,0,P|342:15|373:47,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +495,107,212590,6,0,L|312:145,2,161.999995056153,4|2|2,0:0|0:0|0:0,0:0:0:0: +454,370,213339,1,2,0:0:0:0: +454,370,213464,1,2,0:0:0:0: +454,370,213590,70,0,B|509:405|563:310|441:264|398:331|470:345|377:383|288:289|335:183|439:198|512:229|329:287,1,396.000012084961,2|2,0:0|0:0,0:0:0:0: +309,352,214215,1,2,0:0:0:0: +309,352,214340,2,0,P|255:332|234:282,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +141,363,214590,6,0,L|186:181,2,161.999995056153,4|2|2,0:0|0:0|0:0,0:0:0:0: +52,133,215340,1,2,0:0:0:0: +52,133,215465,1,2,0:0:0:0: +52,133,215590,2,0,B|9:192|12:290|55:335|104:293|135:221|100:127|75:75|63:183|-22:135|-34:29|16:-49|126:-69|226:-41|316:30|274:134|176:180|100:135|94:69|154:14|154:14|206:-28|360:91|261:143|240:191|351:201|475:153|496:72|475:10|421:-21|347:-11|300:-32|450:29|442:132|346:129,1,1350,2|2,0:0|0:0,0:0:0:0: +399,221,217590,69,2,0:0:0:0: +428,266,217715,1,2,0:0:0:0: +458,310,217840,1,2,0:0:0:0: +418,326,217965,1,2,0:0:0:0: +378,342,218090,1,2,0:0:0:0: +388,323,218215,1,2,0:0:0:0: +399,304,218340,2,0,B|448:335|448:335|381:343,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +297,353,218590,6,0,L|186:326,1,90,4|2,0:0|0:0,0:0:0:0: +125,371,218840,1,2,0:0:0:0: +125,371,218965,1,2,0:0:0:0: +125,371,219090,2,0,L|14:344,1,90,2|2,0:0|0:0,0:0:0:0: +121,98,219340,1,2,0:0:0:0: +121,98,219465,1,2,0:0:0:0: +121,98,219590,70,0,L|131:283,2,180,2|2|2,0:0|0:0|0:0,0:0:0:0: +380,114,220339,1,2,0:0:0:0: +380,114,220464,1,2,0:0:0:0: +380,114,220589,6,0,B|478:92,1,90,4|2,0:0|0:0,0:0:0:0: +319,212,220840,1,2,0:0:0:0: +319,212,220965,1,2,0:0:0:0: +319,212,221090,2,0,B|417:233,1,90,2|2,0:0|0:0,0:0:0:0: +284,50,221340,1,2,0:0:0:0: +284,50,221464,1,2,0:0:0:0: +284,50,221589,70,0,B|256:125|256:125|237:132|237:132|209:213,2,180,2|2|2,0:0|0:0|0:0,0:0:0:0: +9,218,222339,1,2,0:0:0:0: +9,218,222464,1,2,0:0:0:0: +9,218,222589,6,0,B|28:281|28:281|88:298,1,90,4|2,0:0|0:0,0:0:0:0: +3,370,222840,1,2,0:0:0:0: +3,370,222965,1,2,0:0:0:0: +3,370,223090,2,0,B|66:387|66:387|112:345,1,90,2|2,0:0|0:0,0:0:0:0: +212,193,223339,1,2,0:0:0:0: +212,193,223464,1,2,0:0:0:0: +212,193,223589,70,0,B|122:210|122:210|141:321,2,180,2|2|2,0:0|0:0|0:0,0:0:0:0: +301,206,224214,1,2,0:0:0:0: +301,206,224339,6,0,B|299:234|299:234|262:266,1,76.5000014591217,2|2,0:0|0:0,0:0:0:0: +339,308,224590,2,0,B|376:276|376:276|378:248,1,76.5000014591217,2|2,0:0|0:0,0:0:0:0: +293,205,224840,2,0,B|291:233|291:233|254:265,1,76.5000014591217,2|2,0:0|0:0,0:0:0:0: +331,307,225091,2,0,B|367:275|367:275|369:246,1,76.5000014591217,2|2,0:0|0:0,0:0:0:0: +285,204,225340,2,0,B|283:232|283:232|246:264,1,76.5000014591217,2|2,0:0|0:0,0:0:0:0: +192,343,225590,69,0,1:0:0:0: +138,351,225715,1,0,1:0:0:0: +84,359,225840,1,8,0:0:0:0: +59,323,225965,1,8,0:0:0:0: +34,287,226090,1,8,3:0:0:0: +47,269,226215,1,8,3:0:0:0: +60,251,226340,1,4,0:0:0:0: +72,252,226465,1,4,0:0:0:0: +84,253,226590,6,0,B|48:348|48:348|33:108,1,323.999990112305,4|2,0:0|0:0,0:0:0:0: +202,132,227090,2,0,B|140:130|140:130|120:171,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +62,35,227339,1,2,0:0:0:0: +62,35,227464,1,2,0:0:0:0: +62,35,227590,70,0,B|164:-10|273:31|250:146|90:142|138:100|107:39|48:36,1,350.999983932496,2|2,0:0|0:0,0:0:0:0: +34,130,228090,2,0,P|16:164|71:233,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +58,356,228340,2,0,P|91:374|161:319,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +339,227,228590,6,0,B|348:289|348:289|168:160,1,270,2|2,0:0|0:0,0:0:0:0: +141,256,229090,2,0,L|268:231,1,90,2|2,0:0|0:0,0:0:0:0: +420,157,229339,1,2,0:0:0:0: +420,157,229464,1,2,0:0:0:0: +420,157,229590,2,0,B|489:133|490:42|405:10|319:60|381:140|385:104|318:180|262:145|236:74,1,350.999983932496,2|2,0:0|0:0,0:0:0:0: +108,27,230090,2,0,P|141:37|128:125,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +72,148,230340,2,0,P|24:121|31:67,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +148,206,230590,70,0,B|4:322|4:322|14:211,1,270,2|2,0:0|0:0,0:0:0:0: +147,317,231090,2,0,P|130:354|75:367,1,90,2|2,0:0|0:0,0:0:0:0: +279,296,231340,1,2,0:0:0:0: +279,296,231465,1,2,0:0:0:0: +279,296,231590,6,0,B|343:264|409:321|364:374|256:333|176:250|299:202|203:130,1,350.999983932496,2|2,0:0|0:0,0:0:0:0: +157,68,232090,70,0,P|119:61|84:139,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +41,261,232340,2,0,P|70:235|139:285,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +203,371,232590,6,0,L|95:388,1,90,2|2,0:0|0:0,0:0:0:0: +27,349,232840,2,0,L|44:241,1,90,2|2,0:0|0:0,0:0:0:0: +85,178,233090,70,0,L|68:70,1,90,2|2,0:0|0:0,0:0:0:0: +29,0,233340,2,0,L|137:17,1,90,2|2,0:0|0:0,0:0:0:0: +193,78,233590,6,0,B|241:113|193:148|240:180,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +400,74,233840,2,0,B|364:122|329:74|297:121,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +117,193,234090,2,0,B|176:199|152:253|208:258,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +361,378,234340,2,0,B|336:323|395:316|371:265,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +214,341,234590,70,0,B|265:382|265:382|58:366,1,270,2|2,0:0|0:0,0:0:0:0: +124,256,235090,2,0,B|141:290|141:290|100:362,1,90,2|2,0:0|0:0,0:0:0:0: +73,136,235340,1,2,0:0:0:0: +73,136,235465,1,2,0:0:0:0: +73,136,235590,2,0,B|134:115|59:61|-15:230|-17:336|41:363|80:249|-5:175,1,350.999983932496,2|2,0:0|0:0,0:0:0:0: +24,60,236090,2,0,P|67:35|144:58,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +232,172,236340,2,0,P|275:197|352:174,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +295,38,236590,6,0,B|218:54|218:54|181:278,1,270,2|2,0:0|0:0,0:0:0:0: +104,291,237090,2,0,L|93:181,1,90,2|2,0:0|0:0,0:0:0:0: +171,374,237339,1,2,0:0:0:0: +171,374,237464,1,2,0:0:0:0: +171,374,237590,2,0,B|194:257|362:335|303:397|224:386|173:339|238:364|314:294|267:201,1,350.999983932496,2|2,0:0|0:0,0:0:0:0: +283,44,238090,2,0,P|233:71|224:126,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +353,177,238340,2,0,P|383:129|364:76,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +270,206,238590,70,0,B|338:285|338:285|503:180,1,270,2|2,0:0|0:0,0:0:0:0: +497,292,239090,2,0,B|467:255|467:255|393:264,1,90,2|2,0:0|0:0,0:0:0:0: +259,359,239339,1,2,0:0:0:0: +259,359,239464,1,2,0:0:0:0: +259,359,239590,6,0,B|179:243|173:421|-23:417|-26:256|100:197|129:292,1,350.999983932496,2|2,0:0|0:0,0:0:0:0: +256,217,240090,2,0,P|222:238|180:178,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +25,143,240340,2,0,P|59:164|101:104,1,116.999994644165,2|2,0:0|0:0,0:0:0:0: +42,36,240590,70,0,L|23:156,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +63,240,240840,2,0,L|44:360,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +139,368,241090,6,0,L|259:349,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +197,279,241340,2,0,L|137:269,3,33.7500012874604,8|8|8|8,0:0|0:0|0:0|0:0,0:0:0:0: +149,284,241590,70,0,L|133:182,2,58.4999973220826,0|0|0,1:0|1:0|1:0,0:0:0:0: +243,89,241840,2,0,L|227:191,2,58.4999973220826,8|8|8,0:0|0:0|0:0,0:0:0:0: +306,259,242090,6,0,L|292:170,2,53.9999983520508,4|4|4,0:0|0:0|0:0,0:0:0:0: +389,137,242340,2,0,L|377:208,2,45,4|4|4,0:0|0:0|0:0,0:0:0:0: +480,189,242590,5,12,0:0:0:0: +256,192,257590,12,0,259295,0:0:0:0: +456,356,259531,22,0,P|476:311|438:358,1,198.000006042481,4|2,0:0|0:0,0:0:0:0: +442,323,259864,1,2,0:0:0:0: +442,323,259975,6,0,L|455:192,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +359,159,260197,2,0,L|346:28,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +348,339,260419,70,0,L|361:208,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +265,175,260641,2,0,L|252:44,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +202,241,260864,6,0,B|226:268|266:267|266:267|197:329|106:273,1,215.999993408203,2|2,0:0|0:0,0:0:0:0: +45,175,261197,1,2,0:0:0:0: +45,175,261308,2,0,B|143:196|112:363|19:380|-18:246|57:308|95:244|37:168,1,323.999990112305,2|2,0:0|0:0,0:0:0:0: +140,117,261753,70,0,B|23:93|10:-12|128:6|40:17|89:85,1,215.999993408203,2|2,0:0|0:0,0:0:0:0: +423,120,262197,6,0,L|315:108,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +162,29,262419,2,0,L|270:18,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +287,195,262642,2,0,B|302:267|182:324|117:238|116:162|221:175|218:257|308:181,1,323.999990112305,2|2,0:0|0:0,0:0:0:0: +239,127,263086,70,0,B|228:171|278:217|308:132|414:251|319:333,1,270,2|2,0:0|0:0,0:0:0:0: +260,384,263531,2,0,P|254:313|178:329,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +109,366,263864,1,2,0:0:0:0: +109,366,263975,2,0,P|44:346|81:307,1,144,2|2,0:0|0:0,0:0:0:0: +39,36,264419,6,0,P|55:67|11:90,1,72,2|2,0:0|0:0,0:0:0:0: +89,168,264642,2,0,P|70:197|28:170,1,72,2|2,0:0|0:0,0:0:0:0: +185,176,264864,2,0,P|175:215|149:258,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +265,111,265086,2,0,P|275:149|274:200,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +422,88,265308,70,0,P|387:92|355:153,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +512,209,265531,2,0,P|491:180|422:183,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +391,333,265753,6,0,L|481:329,3,90,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +367,247,266197,2,0,L|257:253,3,90,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +265,360,266642,70,0,P|227:314|146:355,1,144,4|2,0:0|0:0,0:0:0:0: +67,355,266975,1,2,0:0:0:0: +67,355,267086,6,0,L|85:266,1,62.9999980773926,2|2,0:0|0:0,0:0:0:0: +0,271,267308,2,0,L|18:182,1,62.9999980773926,2|2,0:0|0:0,0:0:0:0: +107,204,267531,70,0,L|125:115,1,62.9999980773926,2|2,0:0|0:0,0:0:0:0: +40,120,267753,2,0,L|58:31,1,62.9999980773926,2|2,0:0|0:0,0:0:0:0: +158,68,267975,6,0,B|226:92|170:152|266:176|314:121,1,180,2|2,0:0|0:0,0:0:0:0: +393,84,268308,1,2,0:0:0:0: +393,84,268419,2,0,B|332:129|455:165|384:297|259:301|303:138|437:217,1,270,2|2,0:0|0:0,0:0:0:0: +491,262,268864,2,0,P|488:208|370:224,1,180,2|2,0:0|0:0,0:0:0:0: +402,301,269197,1,2,0:0:0:0: +402,301,269308,70,0,L|458:371,1,90,2|2,0:0|0:0,0:0:0:0: +304,347,269531,2,0,L|318:259,1,90,2|2,0:0|0:0,0:0:0:0: +226,275,269753,6,0,L|151:325,3,90,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +15,292,270197,70,0,B|10:309|23:386|75:384|110:269|-6:293|-11:202|70:138,1,242.999992584229,4|2,0:0|0:0,0:0:0:0: +100,116,270642,2,0,B|118:66|72:5|31:66|92:118,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +111,220,270975,1,2,0:0:0:0: +111,220,271086,6,0,B|178:151|175:235|262:208|287:131|202:88,1,216,2|2,0:0|0:0,0:0:0:0: +148,50,271531,2,0,B|93:97|129:151|169:97|150:42,1,144,2|2,0:0|0:0,0:0:0:0: +362,107,271975,70,0,B|256:49|315:-35|399:-11|388:55,1,188.999994232178,2|2,0:0|0:0,0:0:0:0: +465,104,272419,2,0,P|481:65|467:104,1,125.999996154785,2|2,0:0|0:0,0:0:0:0: +486,202,272753,1,2,0:0:0:0: +486,202,272864,6,0,B|456:274|456:274|445:280|445:280|410:369,1,161.999995056153,4|0,0:0|2:0,0:0:0:0: +450,366,273086,2,0,L|417:240,1,107.999996704102,4|0,0:0|0:0,0:0:0:0: +286,214,273308,70,0,L|217:250,2,53.9999983520508,0|0|0,1:0|1:0|1:0,0:0:0:0: +311,90,273531,2,0,L|380:126,2,53.9999983520508,8|8|4,0:0|0:0|0:0,0:0:0:0: +181,25,273753,6,0,P|206:125|134:155,1,180,2|2,0:0|0:0,0:0:0:0: +82,78,274086,1,2,0:0:0:0: +82,78,274197,70,0,L|8:167,1,90,2|2,0:0|0:0,0:0:0:0: +72,238,274419,2,0,L|160:252,1,90,2|2,0:0|0:0,0:0:0:0: +224,353,274642,2,0,L|135:338,1,90,2|2,0:0|0:0,0:0:0:0: +239,187,274864,2,0,L|270:271,1,90,2|2,0:0|0:0,0:0:0:0: +375,325,275086,6,0,B|355:344|314:348|314:348|384:309|328:274|414:234,1,215.999993408203,2|2,0:0|0:0,0:0:0:0: +486,135,275419,1,2,0:0:0:0: +486,135,275531,2,0,B|549:-19|363:-36|331:66|421:112|402:33|487:84|480:144,1,323.999990112305,2|2,0:0|0:0,0:0:0:0: +490,248,275975,70,0,B|502:271|532:213|485:124|390:118|350:166,1,215.999993408203,2|2,0:0|0:0,0:0:0:0: +306,242,276308,1,2,0:0:0:0: +306,242,276419,6,0,L|278:357,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +253,145,276642,2,0,L|281:30,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +86,94,276864,2,0,B|122:57|191:103|187:159|128:208|165:147|113:132|91:247|98:314|227:295|250:231|213:177|151:256,1,323.999990112305,2|2,0:0|0:0,0:0:0:0: +41,203,277308,70,0,B|81:145|-37:156|11:339|5:243|126:295|107:381,1,270,2|2,0:0|0:0,0:0:0:0: +25,367,277753,2,0,P|101:335|187:387,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +257,384,278086,1,2,0:0:0:0: +257,384,278197,2,0,P|263:325|331:370,1,144,2|2,0:0|0:0,0:0:0:0: +512,194,278642,6,0,P|481:188|452:131,1,72,2|2,0:0|0:0,0:0:0:0: +450,66,278864,2,0,P|460:36|425:-16,1,72,2|2,0:0|0:0,0:0:0:0: +354,41,279086,70,0,P|343:80|312:112,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +346,204,279308,2,0,P|306:213|263:203,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +190,291,279531,6,0,P|184:240|165:185,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +62,223,279753,2,0,P|82:175|93:118,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +52,27,279975,70,0,L|173:53,3,90,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +209,107,280419,2,0,L|330:133,3,90,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +337,0,280864,6,0,B|330:82|394:48|384:146,1,144,4|2,0:0|0:0,0:0:0:0: +451,200,281197,1,2,0:0:0:0: +451,200,281308,70,0,L|487:119,1,62.9999980773926,2|2,0:0|0:0,0:0:0:0: +366,208,281531,2,0,L|340:265,1,62.9999980773926,2|2,0:0|0:0,0:0:0:0: +385,129,281753,2,0,L|421:48,1,62.9999980773926,2|2,0:0|0:0,0:0:0:0: +300,137,281976,2,0,L|274:194,1,62.9999980773926,2|2,0:0|0:0,0:0:0:0: +173,277,282197,6,0,B|215:243|289:284|265:333|234:327|254:278|174:277,1,180,2|2,0:0|0:0,0:0:0:0: +82,289,282531,1,2,0:0:0:0: +82,289,282642,2,0,B|33:222|121:73|215:166|80:227,1,270,2|2,0:0|0:0,0:0:0:0: +0,67,283086,2,0,B|77:29|114:83|69:123|0:66,1,180,2|2,0:0|0:0,0:0:0:0: +0,175,283419,1,2,0:0:0:0: +0,175,283530,70,0,L|41:260,1,90,2|2,0:0|0:0,0:0:0:0: +81,334,283753,2,0,L|175:340,1,90,2|2,0:0|0:0,0:0:0:0: +259,343,283975,2,0,L|312:264,3,90,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +377,203,284419,6,0,B|307:104|396:20|473:92|435:150,1,242.999992584229,4|2,0:0|0:0,0:0:0:0: +461,236,284864,2,0,B|450:275|407:288|407:288|453:290|482:256,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +473,372,285197,1,2,0:0:0:0: +473,372,285308,70,0,B|450:300|336:280|363:357|284:309,1,216,4|2,0:0|0:0,0:0:0:0: +188,307,285753,2,0,B|169:350|245:410|226:347|226:370|189:332|213:283,1,144,2|2,0:0|0:0,0:0:0:0: +240,142,286086,1,2,0:0:0:0: +240,142,286197,6,0,B|288:170|242:288|172:175|142:218|128:265,1,188.999994232178,4|2,0:0|0:0,0:0:0:0: +64,315,286642,2,0,P|91:349|74:308,1,125.999996154785,2|4,0:0|0:0,0:0:0:0: +33,183,286975,69,0,0:0:0:0: +38,187,287031,1,0,0:0:0:0: +44,192,287086,6,0,B|56:114|56:114|103:103|103:103|154:141,1,161.999995056153,8|8,0:0|0:0,0:0:0:0: +122,143,287308,70,0,L|11:61,1,107.999996704102,8|8,0:0|0:0,0:0:0:0: +162,27,287531,6,0,L|172:84,2,38.2500007295609,4|4|4,0:0|0:0|0:0,0:0:0:0: +258,72,287753,2,0,L|248:118,2,33.7500012874604 +356,51,287975,70,0,L|315:228,1,153.000002918243,4|2,0:0|0:0,0:0:0:0: +339,226,288308,1,0,0:0:0:0: +339,226,288419,6,0,B|383:202|383:202|455:218,1,90,2|0,0:0|0:0,0:0:0:0: +428,233,288642,2,0,B|389:224|389:224|345:248,1,90,2|0,0:0|0:0,0:0:0:0: +227,180,288864,70,0,B|184:153|184:153|162:83,1,90,2|0,0:0|0:0,0:0:0:0: +188,99,289087,2,0,B|199:137|199:137|242:163,1,90,2|0,0:0|0:0,0:0:0:0: +242,299,289308,6,0,B|240:349|240:349|190:403,1,90,2|0,0:0|0:0,0:0:0:0: +191,373,289531,2,0,B|217:343|217:343|219:293,1,90,2|0,0:0|0:0,0:0:0:0: +130,225,289753,70,0,B|26:216|26:216|76:351|76:351|128:327,1,270,2|0,0:0|0:0,0:0:0:0: +240,280,290308,1,0,0:0:0:0: +245,283,290364,1,0,1:0:0:0: +250,286,290419,2,0,B|294:309|294:309|318:341|318:341|331:341|331:341|402:385,1,180,2|2,0:0|0:0,0:0:0:0: +452,295,290753,1,0,0:0:0:0: +452,295,290864,2,0,B|407:271|407:271|383:239|383:239|371:240|371:240|300:196,1,180,2|2,0:0|0:0,0:0:0:0: +415,32,291308,1,4,0:0:0:0: +415,32,291419,1,0,0:0:0:0: +475,95,291530,6,0,B|438:127|438:127|286:94|286:94|208:154,1,270,4|0,0:0|0:0,0:0:0:0: +285,258,292086,1,0,0:0:0:0: +283,264,292142,1,0,1:0:0:0: +281,270,292197,2,0,B|307:260|307:260|318:169,1,90,2|0,0:0|0:0,0:0:0:0: +275,120,292419,70,0,B|238:152|238:152|86:119|86:119|8:179,1,270,2|0,0:0|0:0,0:0:0:0: +143,275,292975,1,0,0:0:0:0: +145,281,293031,1,0,1:0:0:0: +147,287,293086,2,0,B|121:277|121:277|110:186,1,90,2|0,0:0|0:0,0:0:0:0: +35,158,293308,6,0,P|58:105|67:34,1,99.0000030212403,4|2,0:0|0:0,0:0:0:0: +176,145,293530,2,0,P|169:87|141:21,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +249,80,293753,2,0,P|196:56|125:48,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +253,29,293975,2,0,P|195:35|129:63,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +176,145,294197,70,0,P|186:193|206:238,1,90,2|0,0:0|0:0,0:0:0:0: +273,299,294419,2,0,P|320:314|369:318,1,90 +456,218,294642,5,0,1:0:0:0: +453,211,294697,1,0,1:0:0:0: +450,204,294753,2,0,L|429:257,2,45,0|0|8,1:0|1:0|0:0,0:0:0:0: +421,73,295086,70,0,L|529:49,2,90,4|0|2,0:0|0:0|0:0,0:0:0:0: +359,128,295419,1,0,0:0:0:0: +359,128,295530,6,0,B|330:107|330:107|336:17,1,90,2|0,0:0|0:0,0:0:0:0: +322,56,295753,2,0,B|319:111|319:111|348:132,1,90,2|0,0:0|0:0,0:0:0:0: +278,202,295975,70,0,B|242:198|242:198|202:117,1,90,2|0,0:0|0:0,0:0:0:0: +210,158,296198,2,0,B|233:206|233:206|269:210,1,90,2|0,0:0|0:0,0:0:0:0: +244,306,296419,6,0,B|211:320|211:320|136:270,1,90,2|0,0:0|0:0,0:0:0:0: +163,302,296642,2,0,B|208:332|208:332|240:317,1,90,2|0,0:0|0:0,0:0:0:0: +377,365,296864,70,0,L|341:152,2,180,2|2|2,0:0|0:0|0:0,0:0:0:0: +166,290,297530,6,0,B|211:320|211:320|244:306,1,90,2|0,0:0|0:0,0:0:0:0: +240,317,297753,2,0,B|208:332|208:332|163:302,1,90,2|0,0:0|0:0,0:0:0:0: +41,365,297975,70,0,L|77:152,2,180,2|2|2,0:0|0:0|0:0,0:0:0:0: +244,213,298642,6,0,B|309:86|309:86|164:10|164:10|245:105|245:105|237:121|237:121|244:214,1,540,4|2,0:0|0:0,0:0:0:0: +273,334,299419,1,0,0:0:0:0: +273,334,299530,2,0,B|431:384|431:384|388:245|388:245|164:339|164:339|134:276|134:276|220:303,1,693.000021148682,4|0,0:0|0:0,0:0:0:0: +228,214,300419,70,0,B|314:75|314:75|143:6|143:6|215:134|215:134|196:115|196:115|207:192,1,594.000018127442,4|2,0:0|0:0,0:0:0:0: +154,292,301196,1,0,0:0:0:0: +154,292,301308,6,0,L|101:312,2,49.5000015106202,8|8|8,0:0|0:0|0:0,0:0:0:0: +93,204,301530,2,0,L|49:168,2,49.5000015106202,8|8|8,0:0|0:0|0:0,0:0:0:0: +162,128,301753,2,0,L|171:72,2,33.7500012874604,4|4|4,0:0|0:0|0:0,0:0:0:0: +285,137,301975,1,0,0:0:0:0: +285,137,302086,1,0,0:0:0:0: +285,137,302197,70,0,L|451:10,1,153.000002918243,4|2,0:0|0:0,0:0:0:0: +441,53,302530,1,0,0:0:0:0: +441,53,302641,6,0,B|428:123|428:123|464:168,1,90,2|0,0:0|0:0,0:0:0:0: +467,157,302864,2,0,B|480:87|480:87|468:72,1,90,2|0,0:0|0:0,0:0:0:0: +331,156,303086,70,0,B|318:226|318:226|354:271,1,90,2|0,0:0|0:0,0:0:0:0: +357,260,303309,2,0,B|370:190|370:190|358:175,1,90,2|0,0:0|0:0,0:0:0:0: +221,259,303530,6,0,B|208:329|208:329|244:374,1,90,2|0,0:0|0:0,0:0:0:0: +247,363,303753,2,0,B|260:293|260:293|248:278,1,90,2|0,0:0|0:0,0:0:0:0: +252,165,303975,70,0,B|139:186|139:186|104:356,1,270,2|0,0:0|0:0,0:0:0:0: +19,170,304530,1,0,0:0:0:0: +24,167,304586,1,0,1:0:0:0: +29,164,304642,2,0,B|70:137|70:137|35:305,1,180,2|2,0:0|0:0,0:0:0:0: +108,338,304975,1,0,0:0:0:0: +108,338,305086,2,0,B|134:210|134:210|162:251,1,180,2|2,0:0|0:0,0:0:0:0: +350,347,305530,1,4,0:0:0:0: +350,347,305641,1,0,0:0:0:0: +259,361,305753,6,0,B|251:273|251:273|468:236,1,270,4|0,0:0|0:0,0:0:0:0: +512,384,306308,1,0,0:0:0:0: +506,380,306364,1,0,1:0:0:0: +500,376,306419,2,0,B|466:323|466:323|400:335,1,90,2|0,0:0|0:0,0:0:0:0: +350,347,306642,69,4,0:0:0:0: +350,347,306753,2,0,B|170:376,1,180,2|0,0:0|0:0,0:0:0:0: +214,220,307197,1,0,0:0:0:0: +220,224,307253,1,0,1:0:0:0: +226,228,307308,2,0,B|260:281|260:281|326:269,1,90,2|0,0:0|0:0,0:0:0:0: +512,108,307530,6,0,P|459:129|470:198,1,99.0000030212403,4|0,0:0|0:0,0:0:0:0: +356,147,307753,2,0,P|347:203|412:228,1,99.0000030212403,2|0,0:0|0:0,0:0:0:0: +294,205,307975,2,0,P|338:240|392:196,1,99.0000030212403 +292,248,308197,2,0,P|348:256|373:191,1,99.0000030212403 +365,127,308419,70,0,L|328:40,1,67.5000025749208 +331,63,308586,1,0,0:0:0:0: +323,61,308642,2,0,L|287:101,2,49.5000015106202,0|0|0,1:0|1:0|1:0,0:0:0:0: +182,32,308864,2,0,L|198:83,2,49.5000015106202,0|0|0,1:0|1:0|1:0,0:0:0:0: +86,139,309086,2,0,L|138:150,2,49.5000015106202,0|0|0,1:0|1:0|1:0,0:0:0:0: +127,250,309308,6,0,L|210:217,2,90,4|0|2,0:0|0:0|0:0,0:0:0:0: +38,225,309641,1,0,0:0:0:0: +38,225,309752,70,0,B|32:279|32:279|57:309,1,90,2|2,0:0|0:0,0:0:0:0: +228,299,309975,2,0,B|234:245|234:245|209:215,1,90,2|0,0:0|0:0,0:0:0:0: +196,229,310197,6,0,B|190:283|190:283|215:313,1,90,2|2,0:0|0:0,0:0:0:0: +386,303,310420,2,0,B|392:249|392:249|367:219,1,90,2|0,0:0|0:0,0:0:0:0: +354,233,310642,70,0,B|348:287|348:287|373:317,2,90,2|0|2,0:0|0:0|0:0,0:0:0:0: +501,104,311086,6,0,B|487:178|487:178|294:130,1,270,2|0,0:0|0:0,0:0:0:0: +327,44,311530,70,0,B|367:71|367:71|368:143,1,90,2|0,0:0|0:0,0:0:0:0: +249,204,311753,2,0,B|209:177|209:177|208:105,1,90,2|0,0:0|0:0,0:0:0:0: +151,83,311975,2,0,B|191:110|191:110|192:182,1,90,2|0,0:0|0:0,0:0:0:0: +10,273,312197,6,0,B|75:199|75:199|247:305,1,270,2|0,0:0|0:0,0:0:0:0: +181,368,312642,2,0,L|156:253,1,90,2|0,0:0|0:0,0:0:0:0: +249,204,312864,69,4,0:0:0:0: +431,318,313086,6,0,B|482:324|482:324|355:245|355:245|303:306,1,270,2|0,0:0|0:0,0:0:0:0: +363,369,313530,1,2,0:0:0:0: +363,369,313641,1,0,0:0:0:0: +310,297,313753,70,0,B|257:291|257:291|233:326|233:326|130:316,1,198.000006042481,2|2,0:0|0:0,0:0:0:0: +246,194,314197,2,0,B|193:188|193:188|169:223|169:223|66:213,1,198.000006042481,2|2,0:0|0:0,0:0:0:0: +31,39,314642,5,4,0:0:0:0: +31,39,314753,1,0,0:0:0:0: +81,117,314864,2,0,L|15:138,2,38.2500007295609,12|0|12,0:0|0:0|0:0,0:0:0:0: +152,28,315086,2,0,L|86:49,2,38.2500007295609,8|8|8,0:0|0:0|0:0,0:0:0:0: +232,72,315308,1,4,0:0:0:0: +232,72,315419,1,0,0:0:0:0: +232,72,315530,70,0,L|279:56,2,38.2500007295609,8|8|8,0:0|0:0|0:0,0:0:0:0: +399,116,315753,2,0,L|347:99,2,53.9999983520508,0|0|0,1:0|1:0|1:0,0:0:0:0: +279,153,315975,6,0,L|246:163,2,33.7500012874604,4|4|4,0:0|0:0|0:0,0:0:0:0: +304,233,316197,2,0,L|336:243,2,33.7500012874604,4|4|4,0:0|0:0|0:0,0:0:0:0: +437,287,316419,70,0,L|429:207,1,72,4|0,0:0|0:0,0:0:0:0: +449,291,316642,2,0,L|441:211,1,72,4|0,0:0|0:0,0:0:0:0: +416,114,316864,6,0,L|283:214,1,144,12|4,0:0|0:0,0:0:0:0: +433,39,317308,70,0,B|431:67|431:67|304:163|304:163|300:199,1,225,12|0,0:0|0:0,0:0:0:0: +300,214,317642,2,0,L|378:269,1,90,12|0,0:0|0:0,0:0:0:0: +202,146,317864,1,0,0:0:0:0: +226,125,317975,2,0,L|217:214,1,67.5000025749208,12|0,0:0|0:0,0:0:0:0: +61,336,318197,6,0,B|174:317|174:317|113:135,1,297.000009063721,4|0,0:0|0:0,0:0:0:0: +49,0,318642,70,0,B|8:107|8:107|197:145,1,297.000009063721,12|0,0:0|0:0,0:0:0:0: +384,64,319086,6,0,B|371:88|371:88|193:57,1,175.499991966248,12|0,0:0|0:0,0:0:0:0: +210,70,319308,2,0,L|183:155,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +170,68,319530,2,0,L|189:155,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +134,86,319753,2,0,L|194:151,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +226,227,319975,70,0,B|252:251|252:251|314:239,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +412,246,320197,1,2,0:0:0:0: +412,246,320308,1,2,0:0:0:0: +412,246,320419,2,0,B|404:281|404:281|446:329,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +368,161,320642,1,2,0:0:0:0: +368,161,320753,1,2,0:0:0:0: +368,161,320864,6,0,B|388:101|388:101|423:91,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +314,238,321086,1,2,0:0:0:0: +314,238,321197,1,2,0:0:0:0: +314,238,321308,2,0,B|278:245|278:245|230:204,3,99.0000030212403,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +90,90,321753,70,0,L|201:85,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +352,83,321975,1,2,0:0:0:0: +352,83,322087,1,2,0:0:0:0: +352,83,322198,2,0,L|463:78,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +101,239,322419,1,2,0:0:0:0: +101,239,322531,1,2,0:0:0:0: +101,239,322642,2,0,L|212:234,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +363,232,322864,1,2,0:0:0:0: +363,232,322976,1,2,0:0:0:0: +363,232,323087,2,0,L|474:227,3,99.0000030212403,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +305,358,323530,6,0,L|286:282,1,72,4|0,0:0|0:0,0:0:0:0: +313,344,323753,2,0,L|294:268,1,72,4|0,0:0|0:0,0:0:0:0: +222,163,323975,2,0,L|192:334,1,144,12|4,0:0|0:0,0:0:0:0: +118,110,324419,70,0,B|59:74|59:74|119:239,1,225,12|0,0:0|0:0,0:0:0:0: +122,240,324753,2,0,L|142:122,1,90,12|0,0:0|0:0,0:0:0:0: +11,242,324975,1,0,0:0:0:0: +23,215,325086,6,0,B|0:151,1,67.5000025749208,12|0,0:0|0:0,0:0:0:0: +120,16,325308,70,0,B|3:47|3:47|191:161,1,297.000009063721,4|0,0:0|0:0,0:0:0:0: +334,75,325753,2,0,B|451:106|451:106|263:220,1,297.000009063721,12|0,0:0|0:0,0:0:0:0: +205,384,326197,6,0,L|218:176,1,175.499991966248,12|0,0:0|0:0,0:0:0:0: +207,198,326419,70,0,L|211:121,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +143,156,326642,2,0,L|211:121,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +147,79,326864,2,0,L|210:121,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +379,85,327086,6,0,L|357:223,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +494,317,327308,1,2,0:0:0:0: +494,317,327419,1,2,0:0:0:0: +494,317,327530,2,0,L|472:179,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +268,134,327753,1,2,0:0:0:0: +268,134,327864,1,2,0:0:0:0: +268,134,327975,2,0,L|246:272,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +383,366,328197,1,2,0:0:0:0: +383,366,328308,1,2,0:0:0:0: +383,366,328419,2,0,L|361:228,3,99.0000030212403,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +214,301,328864,70,0,B|264:271|264:271|273:231,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +201,170,329086,1,2,0:0:0:0: +201,170,329197,1,2,0:0:0:0: +201,170,329308,2,0,B|192:210|192:210|122:251,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +72,179,329530,2,0,B|81:139|81:139|151:98,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +257,100,329753,1,2,0:0:0:0: +257,100,329864,1,2,0:0:0:0: +257,100,329975,2,0,B|287:127|287:127|287:208,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +233,300,330197,1,2,0:0:0:0: +233,300,330308,1,2,0:0:0:0: +233,300,330419,2,0,B|193:312|193:312|123:272,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +11,288,330642,5,4,0:0:0:0: +11,288,330864,1,0,0:0:0:0: +11,288,331086,70,0,L|40:102,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +143,187,331419,1,0,1:0:0:0: +143,187,331530,2,0,L|114:1,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +233,70,331864,1,0,1:0:0:0: +233,70,331975,2,0,L|419:99,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +303,162,332308,1,0,1:0:0:0: +303,162,332419,2,0,L|117:191,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +412,193,332864,6,0,L|402:306,1,80.9999975280763,2|0,0:0|1:0,0:0:0:0: +313,343,333086,2,0,L|303:230,1,80.9999975280763,2|0,0:0|1:0,0:0:0:0: +430,182,333308,70,0,L|413:367,2,161.999995056153,2|2|2,0:0|0:0|0:0,0:0:0:0: +481,16,333975,1,2,0:0:0:0: +481,16,334197,6,0,B|454:75|425:-60|211:-8|290:152|406:141|320:57,1,297.000009063721,4|0,0:0|1:0,0:0:0:0: +192,136,334642,2,0,L|214:40,1,99.0000030212403,2|0,0:0|1:0,0:0:0:0: +440,116,334864,2,0,L|461:212,1,99.0000030212403,2|0,0:0|1:0,0:0:0:0: +274,322,335086,2,0,B|223:253|246:185|322:139|388:204|370:274|316:316|304:257|274:322,1,323.999990112305,4|0,0:0|1:0,0:0:0:0: +354,365,335530,2,0,L|465:349,1,80.9999975280763,2|0,0:0|1:0,0:0:0:0: +512,195,335753,2,0,L|401:179,1,99.0000030212403,2|0,0:0|1:0,0:0:0:0: +274,322,335975,70,0,P|301:206|200:304,1,350.999983932496,2|0,0:0|1:0,0:0:0:0: +72,252,336419,2,0,P|45:136|146:234,1,350.999983932496,2|0,0:0|1:0,0:0:0:0: +263,169,336864,2,0,P|261:44|187:144,1,323.999990112305,2|0,0:0|1:0,0:0:0:0: +99,214,337308,6,0,L|151:225,2,53.9999983520508,2|0|0,0:0|0:0|1:0,0:0:0:0: +205,310,337530,2,0,B|249:300|249:300|252:294|252:294|317:279,1,90,2|0,0:0|1:0,0:0:0:0: +303,383,337753,69,4,0:0:0:0: +303,383,337975,1,2,3:0:0:0: +303,383,338197,2,0,L|143:353,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +218,272,338530,1,0,1:0:0:0: +218,272,338642,2,0,L|378:242,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +303,161,338974,1,0,1:0:0:0: +303,161,339086,2,0,L|143:131,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +218,50,339418,1,0,1:0:0:0: +218,50,339530,6,0,L|314:32,1,80.9999975280763,2|0,0:0|1:0,0:0:0:0: +373,154,339753,2,0,L|277:136,1,80.9999975280763,2|0,0:0|1:0,0:0:0:0: +456,53,339975,70,0,L|484:236,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +377,366,340419,1,2,0:0:0:0: +377,366,340642,1,2,0:0:0:0: +377,366,340864,1,2,0:0:0:0: +377,366,341086,2,0,L|391:274,1,80.9999975280763,2|0,0:0|1:0,0:0:0:0: +278,204,341308,6,0,B|235:134|235:134|199:352|199:352|128:332|128:332|131:326|131:326|75:213|75:213|79:206|79:206|191:179,1,630,4|0,0:0|1:0,0:0:0:0: +347,40,342197,70,0,B|318:111|318:111|368:193|368:193|435:194|435:194|451:71|451:71|414:188,1,450,4|0,0:0|1:0,0:0:0:0: +435,278,342864,1,2,0:0:0:0: +319,345,343086,6,0,L|279:335,3,40.4999987640381 +271,341,343308,70,0,L|281:384,2,45,8|8|8,0:0|0:0|0:0,0:0:0:0: +232,198,343530,6,0,L|251:114,2,58.4999973220826,0|0|0,1:0|1:0|1:0,0:0:0:0: +140,293,343753,2,0,L|153:350,2,58.4999973220826,8|8|0,0:0|0:0|1:0,0:0:0:0: +94,151,343975,70,0,P|52:160|42:201,1,90,8|8,0:0|0:0,0:0:0:0: +51,200,344142,1,8,0:0:0:0: +58,197,344197,6,0,L|114:213,2,58.4999973220826,0|0|0,1:0|1:0|1:0,0:0:0:0: +140,293,344419,70,0,L|196:276,2,45,8|8|8,0:0|0:0|0:0,0:0:0:0: +247,346,344642,2,0,L|287:303,2,33.7500012874604,4|4|4,0:0|0:0|0:0,0:0:0:0: +388,340,344864,5,4,0:0:0:0: +388,340,345086,1,2,0:0:0:0: +388,340,345308,2,0,B|363:245|363:245|413:154,1,180,2|2,0:0|0:0,0:0:0:0: +478,87,345642,1,0,1:0:0:0: +478,87,345753,2,0,B|503:182|503:182|453:273,1,180,2|2,0:0|0:0,0:0:0:0: +373,354,346086,1,0,1:0:0:0: +373,354,346197,2,0,B|348:259,1,90,2|0,0:0|1:0,0:0:0:0: +445,248,346419,2,0,B|485:177|485:177|460:82,1,180,2|2,0:0|0:0,0:0:0:0: +244,58,346864,2,0,B|338:83|338:83|381:153,1,180,2|2,0:0|0:0,0:0:0:0: +337,239,347197,1,0,1:0:0:0: +337,239,347308,1,2,0:0:0:0: +337,239,347530,70,0,L|157:190,1,180,2|2,0:0|0:0,0:0:0:0: +82,264,347864,1,0,1:0:0:0: +82,264,347975,2,0,L|168:287,1,90,2|0,0:0|1:0,0:0:0:0: +250,201,348197,2,0,L|336:224,1,90,4|0,0:0|1:0,0:0:0:0: +490,307,348419,6,0,B|514:348|476:391|411:358|487:356|489:311,1,135.000005149842,4|0,0:0|1:0,0:0:0:0: +413,281,348642,2,0,B|465:149|465:149|432:74,1,198.000006042481,2|2,0:0|0:0,0:0:0:0: +401,22,348975,1,0,1:0:0:0: +401,22,349086,1,2,0:0:0:0: +245,168,349308,70,0,B|313:217|404:188|408:118|303:61|327:164|264:169|198:120,1,323.999990112305,4|0,0:0|1:0,0:0:0:0: +259,41,349753,2,0,L|278:159,1,107.999996704102,2|0,0:0|1:0,0:0:0:0: +27,245,349975,2,0,L|43:137,1,107.999996704102,2|0,0:0|1:0,0:0:0:0: +193,310,350197,6,0,B|197:365|112:396|27:267|169:158|287:252,1,350.999983932496,2|0,0:0|1:0,0:0:0:0: +385,305,350642,2,0,B|430:336|499:278|431:140|265:208|287:357,1,350.999983932496,2|0,0:0|1:0,0:0:0:0: +189,210,351086,2,0,B|142:188|157:105|299:97|321:260|191:311,1,323.999990112305,2|0,0:0|1:0,0:0:0:0: +178,358,351530,70,0,B|150:329|150:329|160:211,1,116.999994644165,4|0,0:0|1:0,0:0:0:0: +85,106,351753,2,0,L|90:46,2,58.4999973220826,0|0|0,1:0|1:0|1:0,0:0:0:0: +19,203,351975,5,4,0:0:0:0: +19,203,352197,1,2,0:0:0:0: +19,203,352419,2,0,L|132:184,1,80.9999975280763,2|0,0:0|1:0,0:0:0:0: +231,362,352642,2,0,L|72:285,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +195,203,352975,1,0,1:0:0:0: +195,203,353086,2,0,L|234:376,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +321,263,353419,1,0,1:0:0:0: +321,263,353530,2,0,L|311:306,2,40.4999987640381,2|0|0,0:0|0:0|1:0,0:0:0:0: +442,340,353753,70,0,L|369:375,1,80.9999975280763,4|0,0:0|1:0,0:0:0:0: +207,347,353975,2,0,L|171:188,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +402,64,354419,1,2,0:0:0:0: +402,64,354642,2,0,L|363:237,1,161.999995056153,4|0,0:0|0:0,0:0:0:0: +183,332,355086,2,0,L|147:173,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +278,52,355419,1,0,1:0:0:0: +278,52,355530,6,0,B|361:74|361:74|230:93|230:93|165:63|165:63|26:81|26:81|-3:242,1,566.999982696534,4|0,0:0|1:0,0:0:0:0: +206,303,356419,70,0,B|125:155|125:155|111:251|111:251|117:265|117:265|105:270|105:270|40:336|40:336|263:349,1,594.000018127442,2|2,0:0|0:0,0:0:0:0: +357,298,357308,6,0,L|374:359,3,40.4999987640381 +380,348,357530,70,0,L|464:363,2,58.4999973220826,0|0|0,1:0|1:0|1:0,0:0:0:0: +512,145,357753,2,0,L|428:160,2,58.4999973220826,0|0|0,1:0|1:0|1:0,0:0:0:0: +424,230,357975,6,0,L|441:291,3,40.4999987640381 +447,280,358197,70,0,L|531:295,2,58.4999973220826,0|0|0,1:0|1:0|1:0,0:0:0:0: +345,207,358419,2,0,L|291:216,2,49.5000015106202,8|8|4,0:0|0:0|0:0,0:0:0:0: +239,268,358642,6,0,L|249:307,3,40.4999987640381,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +259,318,358864,70,0,L|269:198,1,107.999996704102,4|8,1:3|0:0,0:0:0:0: +280,93,359086,6,0,L|212:27,1,72,4|0,0:0|0:0,0:0:0:0: +268,103,359308,2,0,L|200:37,1,72,4|0,0:0|0:0,0:0:0:0: +405,61,359530,2,0,L|235:112,1,144,12|0,0:0|0:0,0:0:0:0: +40,86,359975,70,0,B|-13:71|-13:71|23:103|23:103|149:66,1,225,12|0,0:0|0:0,0:0:0:0: +137,55,360308,6,0,L|107:182,1,90,12|0,0:0|0:0,0:0:0:0: +62,290,360530,1,0,0:0:0:0: +55,259,360642,2,0,L|34:170,1,67.5000025749208,12|0,0:0|0:0,0:0:0:0: +290,362,360864,70,0,B|113:355|113:355|183:243,1,297.000009063721,4|0,0:0|0:0,0:0:0:0: +253,134,361308,2,0,B|316:32|316:32|139:25,1,297.000009063721,12|0,0:0|0:0,0:0:0:0: +0,157,361753,6,0,B|123:125|123:125|187:181,1,175.499991966248,12|0,0:0|0:0,0:0:0:0: +168,167,361975,2,0,L|156:257,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +234,252,362197,2,0,L|158:241,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +82,232,362419,2,0,L|157:242,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +256,351,362642,70,0,B|304:358|304:358|373:329,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +419,236,362864,1,2,0:0:0:0: +419,236,362975,1,2,0:0:0:0: +419,236,363086,2,0,B|436:281|436:281|496:326,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +298,266,363308,1,2,0:0:0:0: +298,266,363419,1,2,0:0:0:0: +298,266,363530,2,0,B|328:227|328:227|337:153,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +470,200,363753,1,2,0:0:0:0: +470,200,363864,1,2,0:0:0:0: +470,200,363975,2,0,B|429:169|429:169|411:124,3,99.0000030212403,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +252,54,364419,6,0,L|133:69,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +320,164,364642,1,2,0:0:0:0: +320,164,364753,1,2,0:0:0:0: +320,164,364864,2,0,L|335:283,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +129,166,365086,1,2,0:0:0:0: +129,166,365197,1,2,0:0:0:0: +129,166,365308,2,0,L|10:181,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +245,286,365530,1,2,0:0:0:0: +245,286,365641,1,2,0:0:0:0: +245,286,365752,2,0,L|260:405,3,99.0000030212403,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +163,348,366197,70,0,L|74:324,1,72,4|0,0:0|0:0,0:0:0:0: +151,358,366419,2,0,L|62:334,1,72,8|0,0:0|0:0,0:0:0:0: +101,243,366642,2,0,B|143:254|143:254|243:188,1,144,12|0,0:0|0:0,0:0:0:0: +27,233,367086,6,0,B|143:264|143:264|243:198,1,225,12|0,0:0|0:0,0:0:0:0: +240,201,367419,70,0,L|249:102,1,90,12|0,0:0|0:0,0:0:0:0: +378,209,367642,1,0,0:0:0:0: +347,225,367753,6,0,L|356:126,1,67.5000025749208,12|0,0:0|0:0,0:0:0:0: +502,63,367975,70,0,B|430:25|430:25|504:260,1,297.000009063721,4|0,0:0|0:0,0:0:0:0: +493,384,368419,2,0,B|347:225|347:225|344:306,1,297.000009063721,12|0,0:0|0:0,0:0:0:0: +117,354,368864,6,0,B|236:340|236:340|270:271,1,175.499991966248,12|0,0:0|0:0,0:0:0:0: +254,279,369086,70,0,L|159:267,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +224,208,369308,2,0,L|166:284,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +148,198,369530,2,0,L|185:286,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +19,365,369753,6,0,B|138:351,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +240,193,369975,1,2,0:0:0:0: +240,193,370086,1,2,0:0:0:0: +240,193,370197,2,0,B|359:207,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +133,137,370419,1,2,0:0:0:0: +133,137,370530,1,2,0:0:0:0: +133,137,370641,2,0,B|147:18,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +63,262,370864,1,2,0:0:0:0: +63,262,370975,1,2,0:0:0:0: +63,262,371086,2,0,B|182:248,3,99.0000030212403,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +290,348,371530,70,0,B|335:324|335:324|324:239,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +378,194,371753,1,2,0:0:0:0: +378,194,371864,1,2,0:0:0:0: +378,194,371975,2,0,B|422:213|422:213|421:264,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +200,201,372197,2,0,B|243:228|243:228|282:199,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +313,115,372420,1,2,0:0:0:0: +313,115,372531,1,2,0:0:0:0: +313,115,372642,2,0,B|306:67|306:67|351:43,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +284,212,372864,2,0,B|245:241|245:241|202:214,3,99.0000030212403,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +126,154,373308,6,0,L|116:243,1,80.9999975280763,4|0,0:0|0:0,0:0:0:0: +112,142,373530,2,0,L|102:231,1,80.9999975280763 +28,346,373753,2,0,P|85:300|137:353,1,161.999995056153,12|0,0:0|0:0,0:0:0:0: +405,345,374197,2,0,B|369:363|299:348|369:285|266:214|203:273,1,247.500007553101,12|0,0:0|0:0,0:0:0:0: +201,281,374530,2,0,B|231:351|231:351|273:302,1,99.0000030212403,12|0,0:0|0:0,0:0:0:0: +374,171,374753,1,0,0:0:0:0: +410,242,374864,2,0,B|398:256|398:256|374:200,1,80.9999975280763,12|0,0:0|0:0,0:0:0:0: +512,83,375086,70,0,L|483:309,1,215.999993408203,4|0,0:0|0:0,0:0:0:0: +125,146,375530,2,0,L|96:372,1,215.999993408203,12|0,0:0|0:0,0:0:0:0: +244,74,375975,6,0,B|311:106|311:106|387:36|387:36|321:36,1,188.999994232178,12|0,0:0|0:0,0:0:0:0: +364,37,376197,2,0,L|378:150,1,90,12|0,0:0|0:0,0:0:0:0: +246,177,376419,2,0,L|260:290,1,90,12|0,0:0|0:0,0:0:0:0: +392,225,376642,2,0,L|406:338,1,90,12|0,0:0|0:0,0:0:0:0: +192,348,376864,70,0,P|157:308|105:307,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +3,260,377086,1,2,0:0:0:0: +3,260,377197,1,2,0:0:0:0: +3,260,377308,2,0,P|42:225|43:173,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +91,70,377530,1,2,0:0:0:0: +91,70,377642,1,2,0:0:0:0: +91,70,377753,2,0,P|125:109|177:110,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +280,158,377975,1,2,0:0:0:0: +280,158,378086,1,2,0:0:0:0: +280,158,378197,2,0,P|240:192|239:244,3,107.999996704102,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +501,136,378642,6,0,P|447:128|346:106,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +255,57,378864,1,2,0:0:0:0: +255,57,378975,1,2,0:0:0:0: +255,57,379086,2,0,P|201:64|100:87,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +363,226,379308,1,2,0:0:0:0: +363,226,379419,1,2,0:0:0:0: +363,226,379530,70,0,P|320:192|243:122,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +107,277,379753,1,2,0:0:0:0: +107,277,379864,1,2,0:0:0:0: +107,277,379975,2,0,P|160:269|262:247,3,107.999996704102,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +303,305,380419,6,0,L|320:387,1,80.9999975280763,4|0,0:0|0:0,0:0:0:0: +313,292,380642,2,0,L|330:374,1,80.9999975280763 +503,314,380864,2,0,P|458:335|421:242,1,161.999995056153,12|0,0:0|0:0,0:0:0:0: +328,26,381308,70,0,B|290:56|341:145|414:92|373:44|483:65|497:126|493:178,1,247.500007553101,12|0,0:0|0:0,0:0:0:0: +487,150,381642,2,0,L|389:165,1,99.0000030212403,12|0,0:0|0:0,0:0:0:0: +181,199,381864,1,0,0:0:0:0: +271,200,381975,6,0,L|191:213,1,80.9999975280763,12|0,0:0|0:0,0:0:0:0: +512,384,382197,70,0,B|469:331|469:331|431:339|431:339|341:219,1,215.999993408203,4|0,0:0|0:0,0:0:0:0: +13,251,382642,2,0,B|79:339|79:339|117:331|117:331|160:384,1,215.999993408203,12|0,0:0|0:0,0:0:0:0: +111,97,383086,6,0,B|142:111|142:111|78:56|78:56|54:145,1,188.999994232178,12|0,0:0|0:0,0:0:0:0: +68,135,383308,2,0,L|98:236,1,90,12|0,0:0|0:0,0:0:0:0: +260,266,383530,2,0,L|234:179,1,90,12|0,0:0|0:0,0:0:0:0: +409,126,383753,2,0,L|379:227,1,90,12|0,0:0|0:0,0:0:0:0: +470,311,383975,70,0,B|430:281|441:344|335:296,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +304,83,384197,1,2,0:0:0:0: +304,83,384308,1,2,0:0:0:0: +304,83,384419,2,0,B|264:113|275:50|169:98,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +147,294,384642,1,2,0:0:0:0: +147,294,384753,1,2,0:0:0:0: +147,294,384864,2,0,B|107:264|118:327|12:279,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +258,197,385086,1,2,0:0:0:0: +258,197,385197,1,2,0:0:0:0: +258,197,385308,2,0,B|228:237|291:225|243:332,3,107.999996704102,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +107,346,385753,6,0,P|117:301|178:276,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +167,190,385975,1,2,0:0:0:0: +167,190,386086,1,2,0:0:0:0: +167,190,386197,2,0,P|173:138|137:101,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +54,110,386419,1,2,0:0:0:0: +54,110,386530,1,2,0:0:0:0: +54,110,386641,2,0,P|22:151|35:202,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +132,218,386864,1,2,0:0:0:0: +132,218,386975,1,2,0:0:0:0: +132,218,387086,2,0,P|163:176|150:125,3,107.999996704102,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +70,120,387530,70,0,P|37:161|142:180,1,198.000006042481,4|2,0:0|0:0,0:0:0:0: +177,111,387863,1,2,0:0:0:0: +177,111,387974,6,0,L|308:124,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +106,35,388197,2,0,L|-25:48,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +70,237,388419,2,0,L|79:138,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +266,138,388642,2,0,L|275:236,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +151,301,388864,70,0,B|80:220|-23:333|48:380|76:312,1,215.999993408203,2|2,0:0|0:0,0:0:0:0: +245,340,389197,1,2,0:0:0:0: +245,340,389308,6,0,B|324:293|346:201|308:133|195:145|198:246|270:285,1,323.999990112305,2|2,0:0|0:0,0:0:0:0: +476,344,389753,2,0,B|393:309|325:352|346:382|406:400|412:312,1,215.999993408203,2|2,0:0|0:0,0:0:0:0: +485,164,390197,70,0,L|500:57,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +334,85,390419,2,0,L|351:206,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +184,350,390642,6,0,B|280:372|343:298|308:227|209:184|280:332|184:350,1,323.999990112305,2|2,0:0|0:0,0:0:0:0: +57,362,391086,2,0,B|0:319|10:208|80:147|153:184|56:212,1,270,4|2,0:0|0:0,0:0:0:0: +197,337,391530,2,0,P|202:289|114:304,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +57,362,391864,1,2,0:0:0:0: +57,362,391975,2,0,B|29:339|26:298|26:298|-2:333|29:370,1,144,2|2,0:0|0:0,0:0:0:0: +267,333,392419,70,0,P|269:304|214:284,1,72,2|2,0:0|0:0,0:0:0:0: +174,231,392642,2,0,P|186:204|244:215,1,72,2|2,0:0|0:0,0:0:0:0: +299,145,392864,6,0,P|255:119|204:115,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +345,64,393086,2,0,P|374:91|392:127,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +367,247,393308,70,0,P|389:222|464:233,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +512,159,393530,2,0,P|467:177|451:222,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +403,352,393753,6,0,L|489:323,3,90,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +317,321,394197,2,0,L|221:288,3,90,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +31,305,394642,70,0,P|72:349|146:308,1,144,4|2,0:0|0:0,0:0:0:0: +80,180,394975,1,2,0:0:0:0: +80,180,395086,6,0,L|103:265,1,62.9999980773926,2|2,0:0|0:0,0:0:0:0: +56,93,395308,2,0,L|40:33,1,62.9999980773926,2|2,0:0|0:0,0:0:0:0: +161,81,395530,70,0,L|145:21,1,62.9999980773926,2|2,0:0|0:0,0:0:0:0: +185,168,395753,2,0,L|201:228,1,62.9999980773926,2|2,0:0|0:0,0:0:0:0: +355,114,395975,6,0,B|383:64|313:5|245:35|288:103|345:50,1,180,2|2,0:0|0:0,0:0:0:0: +439,166,396308,1,2,0:0:0:0: +439,166,396419,2,0,B|486:157|510:242|453:270|413:234|442:191|329:232|321:303|365:354,1,270,2|2,0:0|0:0,0:0:0:0: +433,313,396864,2,0,P|317:263|242:288,1,180,2|2,0:0|0:0,0:0:0:0: +216,352,397196,1,2,0:0:0:0: +216,352,397307,70,0,L|127:338,3,90,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +26,310,397753,2,0,L|83:241,1,90,2|2,0:0|0:0,0:0:0:0: +188,251,397975,2,0,L|155:167,1,90,2|2,0:0|0:0,0:0:0:0: +57,31,398197,6,0,B|-1:50|-15:157|50:193|115:141|28:136|43:64,1,242.999992584229,4|2,0:0|0:0,0:0:0:0: +147,86,398642,2,0,B|205:59|191:0|124:19|135:79,1,144,2|2,0:0|0:0,0:0:0:0: +244,145,398974,1,2,0:0:0:0: +244,145,399086,70,0,B|304:169|333:96|315:28|419:54|352:176|282:148,1,242.999992584229,2|2,0:0|0:0,0:0:0:0: +154,72,399530,2,0,B|146:14|213:-5|227:54|169:81,1,144,2|2,0:0|0:0,0:0:0:0: +306,337,399975,6,0,L|266:341,2,31.4999990386963,4|0|0,0:0|0:0|0:0,0:0:0:0: +396,327,400197,1,8,0:0:0:0: +396,327,400308,1,8,0:0:0:0: +396,327,400419,1,4,0:0:0:0: +186,351,400642,2,0,L|146:355,2,31.4999990386963,4|2|2,0:0|0:0|0:0,0:0:0:0: +53,319,400864,70,0,B|66:328|66:328|109:280|109:280|80:125,1,215.999993408203,0|8,1:0|0:0,0:0:0:0: +7,197,401197,1,0,1:0:0:0: +7,197,401308,6,0,L|76:233,2,53.9999983520508,8|8|8,0:0|0:0|0:0,0:0:0:0: +7,289,401530,2,0,L|76:325,2,40.4999987640381,4|4|4,0:0|0:0|0:0,0:0:0:0: +154,354,401753,70,0,P|206:330|149:228,1,180,4|2,0:0|0:0,0:0:0:0: +96,163,402085,1,2,0:0:0:0: +96,163,402196,6,0,L|169:78,1,90,2|2,0:0|0:0,0:0:0:0: +309,80,402419,2,0,L|250:148,1,90,2|2,0:0|0:0,0:0:0:0: +281,234,402642,2,0,L|243:128,1,90,2|2,0:0|0:0,0:0:0:0: +398,77,402864,2,0,L|427:161,1,90,2|2,0:0|0:0,0:0:0:0: +463,265,403086,70,0,B|482:313|547:293|510:219|401:215|384:310,1,215.999993408203,2|2,0:0|0:0,0:0:0:0: +274,363,403419,1,2,0:0:0:0: +274,363,403530,2,0,B|255:362|197:372|190:290|231:289|213:199|213:199|240:259|279:262|261:313,1,323.999990112305,2|2,0:0|0:0,0:0:0:0: +416,165,403975,6,0,B|371:170|311:126|311:126|366:200|360:335,1,292.499986610413,2|0,0:0|1:0,0:0:0:0: +512,341,404308,1,2,0:0:0:0: +512,341,404419,70,0,L|441:243,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +375,39,404642,2,0,L|304:137,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +103,145,404864,6,0,B|65:173|52:244|175:309|255:134|151:68,1,323.999990112305,2|2,0:0|0:0,0:0:0:0: +0,20,405308,2,0,B|23:-9|82:8|68:67|68:67|-2:105|-3:196,1,270,2|2,0:0|0:0,0:0:0:0: +29,274,405753,2,0,P|73:304|200:286,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +266,362,406085,1,2,0:0:0:0: +266,362,406197,2,0,P|220:318|141:349,1,144,2|2,0:0|0:0,0:0:0:0: +360,363,406642,70,0,P|356:329|319:289,1,72,2|2,0:0|0:0,0:0:0:0: +349,217,406864,2,0,P|317:203|264:215,1,72,2|2,0:0|0:0,0:0:0:0: +212,130,407086,6,0,P|194:174|148:202,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +68,215,407308,2,0,P|24:196|-4:151,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +92,37,407530,70,0,P|78:113|97:157,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +168,194,407753,2,0,P|182:270|163:314,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +106,380,407975,6,0,L|15:336,2,90,2|2|2,0:0|0:0|0:0,0:0:0:0: +108,360,408308,2,0,L|17:316,2,90,2|2|2,0:0|0:0|0:0,0:0:0:0: +254,341,408642,2,0,L|336:284,1,90,2|2,0:0|0:0,0:0:0:0: +493,323,408864,70,0,B|491:338|430:342|424:287|461:288|429:227,1,144,4|2,0:0|0:0,0:0:0:0: +363,184,409196,1,2,0:0:0:0: +363,184,409307,6,0,L|348:253,1,62.9999980773926,2|2,0:0|0:0,0:0:0:0: +326,335,409530,2,0,L|257:320,1,62.9999980773926,2|2,0:0|0:0,0:0:0:0: +182,279,409753,70,0,L|243:292,1,62.9999980773926,2|2,0:0|0:0,0:0:0:0: +266,203,409976,2,0,L|279:141,1,62.9999980773926,2|2,0:0|0:0,0:0:0:0: +409,105,410197,6,0,B|407:147|459:196|516:176|494:108|470:180|436:153|414:122,1,180,2|2,0:0|0:0,0:0:0:0: +481,60,410530,1,2,0:0:0:0: +481,60,410642,70,0,B|454:126|354:122|309:71|367:74|290:20|237:64,1,270,2|2,0:0|0:0,0:0:0:0: +157,66,411086,2,0,B|157:111|203:137|203:137|152:118|113:142,1,180,2|2,0:0|0:0,0:0:0:0: +44,197,411418,1,2,0:0:0:0: +44,197,411530,2,0,B|20:149|20:149|37:86,1,90,2|2,0:0|0:0,0:0:0:0: +161,222,411753,2,0,B|170:257|170:257|146:305,1,90,2|2,0:0|0:0,0:0:0:0: +71,367,411975,2,0,B|47:319|47:319|64:256,3,90,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +161,222,412419,6,0,B|222:167|294:224|290:308|197:268|230:380,1,242.999992584229,2|2,0:0|0:0,0:0:0:0: +381,328,412864,2,0,B|345:378|265:360|319:305|382:321,1,161.999995056153,2|2,0:0|0:0,0:0:0:0: +512,384,413197,1,2,0:0:0:0: +512,384,413308,2,0,B|421:311|454:178|508:237|461:317,1,216,2|2,0:0|0:0,0:0:0:0: +381,307,413753,2,0,B|347:351|275:334|324:285|379:299,1,144,2|2,0:0|0:0,0:0:0:0: +419,169,414086,1,2,0:0:0:0: +419,169,414197,70,0,P|435:129|326:79,1,188.999994232178,2|2,0:0|0:0,0:0:0:0: +277,138,414642,2,0,B|274:172|274:172|299:139,1,62.9999980773926,2|2,0:0|0:0,0:0:0:0: +178,59,414864,6,0,L|184:96,3,22.5,4|0|0|0,0:0|0:0|0:0|0:0,0:0:0:0: +184,94,415086,70,0,L|115:83,2,53.9999983520508,0|0|0,1:0|1:0|1:0,0:0:0:0: +111,230,415308,2,0,L|57:238,2,53.9999983520508,0|0|0,1:0|1:0|1:0,0:0:0:0: +203,185,415530,6,0,L|240:191,2,38.2500007295609,8|8|8,0:0|0:0|0:0,0:0:0:0: +311,237,415753,2,0,L|348:230,2,33.7500012874604,4|4|4,0:0|0:0|0:0,0:0:0:0: +439,214,415975,70,0,B|466:275|466:275|381:322,1,153.000002918243,4|2,0:0|0:0,0:0:0:0: +256,320,416419,1,2,0:0:0:0: +256,320,416642,1,2,0:0:0:0: +256,320,416864,6,0,B|223:296|223:296|106:356,1,153.000002918243,2|0,0:0|0:0,0:0:0:0: +43,316,417197,2,0,B|76:340|76:340|193:280,1,153.000002918243,0|0,1:0|1:0,0:0:0:0: +183,278,417530,1,4,0:0:0:0: +224,92,417753,70,0,B|196:101|196:101|325:157,1,153.000002918243,4|2,0:0|0:0,0:0:0:0: +413,117,418086,2,0,B|441:108|441:108|327:58,1,153.000002918243,0|0,1:0|1:0,0:0:0:0: +312,58,418419,1,2,0:0:0:0: +312,58,418642,1,2,0:0:0:0: +312,58,418864,1,2,0:0:0:0: +312,58,419086,1,2,0:0:0:0: +312,58,419308,1,2,0:0:0:0: +312,58,419530,6,0,L|295:224,1,153.000002918243,4|0,0:0|0:0,0:0:0:0: +352,281,419864,2,0,L|441:155,1,153.000002918243,2|2,1:3|1:3,0:0:0:0: +450,154,420197,1,2,0:0:0:0: +372,25,420419,70,0,B|337:50|337:50|208:34,1,153.000002918243,2|0,0:0|0:0,0:0:0:0: +147,74,420753,2,0,B|37:60|37:60|2:85,1,153.000002918243,2|2,1:3|1:3,0:0:0:0: +44,165,421086,2,0,B|62:153|62:153|117:160,1,76.5000014591217,2|0,0:0|1:0,0:0:0:0: +202,141,421308,6,0,B|257:148|257:148|275:136,1,76.5000014591217,4|0,0:0|1:0,0:0:0:0: +316,215,421531,2,0,B|281:240|281:240|172:227,2,153.000002918243,2|2|2,0:0|0:0|0:0,0:0:0:0: +313,345,422197,69,2,0:0:0:0: +275,340,422308,1,2,0:0:0:0: +237,335,422419,1,2,0:0:0:0: +199,331,422530,1,2,0:0:0:0: +161,326,422641,1,2,0:0:0:0: +123,322,422753,5,2,0:0:0:0: +97,270,422864,1,2,0:0:0:0: +72,218,422975,1,2,0:0:0:0: +47,167,423086,70,0,B|13:98|13:98|112:147,1,153.000002918243,4|2,0:0|0:0,0:0:0:0: +202,191,423530,1,2,0:0:0:0: +202,191,423753,1,2,0:0:0:0: +202,191,423975,6,0,B|161:154|161:154|255:71,1,153.000002918243,2|0,0:0|0:0,0:0:0:0: +273,17,424308,2,0,B|325:0|325:0|350:122,1,153.000002918243,2|0,1:3|0:0,0:0:0:0: +348,111,424642,1,2,0:0:0:0: +484,262,424864,70,0,P|448:207|375:290,1,153.000002918243,4|4,0:0|0:0,0:0:0:0: +297,279,425197,2,0,P|242:243|325:170,1,153.000002918243,2|0,1:3|1:0,0:0:0:0: +282,164,425530,1,2,0:0:0:0: +282,164,425753,1,2,0:0:0:0: +282,164,425975,1,2,0:0:0:0: +282,164,426197,2,0,L|274:223,2,38.2500007295609,2|0|0,0:0|0:0|1:0,0:0:0:0: +338,102,426419,2,0,L|343:64,2,38.2500007295609,2|0|0,0:0|0:0|1:0,0:0:0:0: +512,153,426642,6,0,L|336:186,1,153.000002918243,4|2,0:0|0:0,0:0:0:0: +418,261,426975,1,2,1:3:0:0: +418,261,427086,2,0,L|506:244,1,76.5000014591217,2|0,0:0|1:0,0:0:0:0: +505,246,427308,1,2,0:0:0:0: +254,253,427530,70,0,B|285:280|285:280|264:211|264:211|103:187,1,270,4|2,0:0|1:3,0:0:0:0: +54,258,427975,2,0,L|69:354,1,76.5000014591217,2|0,0:0|1:0,0:0:0:0: +69,343,428197,1,0,0:0:0:0: +116,85,428419,6,0,B|73:40|73:40|45:167|45:167|181:161,1,297.000009063721,4|2,0:0|1:3,0:0:0:0: +231,102,428864,70,0,P|246:53|344:35,1,161.999995056153,2|8,0:0|0:0,0:0:0:0: +397,113,429197,1,4,0:0:0:0: +394,119,429253,1,4,0:0:0:0: +392,125,429308,6,0,L|319:120,2,40.4999987640381,0|0|0,1:0|1:0|1:0,0:0:0:0: +276,206,429642,1,4,0:0:0:0: +279,212,429698,1,4,0:0:0:0: +281,218,429753,70,0,L|354:213,2,40.4999987640381,0|0|0,1:0|1:0|1:0,0:0:0:0: +480,296,430086,1,4,0:0:0:0: +477,302,430142,1,4,0:0:0:0: +475,308,430197,6,0,B|439:226|439:226|386:317,1,180,4|2,0:0|0:0,0:0:0:0: +198,339,430642,1,2,0:0:0:0: +198,339,430864,1,2,0:0:0:0: +307,369,431086,2,0,B|286:304|286:304|296:279|296:279|266:182,1,180,2|2,0:0|0:0,0:0:0:0: +271,198,431530,1,2,0:0:0:0: +38,349,431753,2,0,B|55:326|55:326|160:344,1,135,4|0,0:0|0:0,0:0:0:0: +210,327,431975,70,0,B|152:308|152:308|128:248,1,90,4|0,0:0|1:0,0:0:0:0: +0,158,432197,2,0,B|58:139|58:139|82:79,1,90,2|0,0:0|1:0,0:0:0:0: +210,63,432419,1,2,0:0:0:0: +210,63,432530,2,0,B|159:136|159:136|209:221,1,180,0|0,1:0|1:0,0:0:0:0: +218,236,432864,1,2,0:0:0:0: +218,236,433086,1,2,0:0:0:0: +218,236,433308,2,0,L|168:260,2,45,2|0|0,0:0|0:0|1:0,0:0:0:0: +201,336,433530,2,0,B|225:325|225:325|229:328|229:328|225:325|225:325|283:297,1,90,2|0,0:0|1:0,0:0:0:0: +453,368,433753,6,0,B|385:349|385:349|370:211,1,180,4|2,0:0|0:0,0:0:0:0: +500,244,434086,1,2,1:3:0:0: +500,244,434197,2,0,B|466:234|466:234|460:180,1,90,2|0,0:0|1:0,0:0:0:0: +420,22,434419,70,0,B|466:73|466:73|364:125,1,180,2|2,0:0|0:0,0:0:0:0: +367,124,434864,1,2,0:0:0:0: +367,124,435086,1,2,0:0:0:0: +267,24,435308,2,0,B|283:64|283:64|256:131,1,90,2|0,0:0|1:0,0:0:0:0: +227,182,435530,6,0,L|147:348,1,180,4|0,0:0|0:0,0:0:0:0: +354,363,435975,2,0,L|295:280,1,90,2|0,0:0|1:0,0:0:0:0: +242,176,436197,70,0,L|189:360,1,180,2|2,0:0|0:0,0:0:0:0: +325,268,436642,1,2,0:0:0:0: +122,107,436864,6,0,B|159:83|159:83|205:139,1,90,4|0,0:0|1:0,0:0:0:0: +135,196,437086,2,0,B|174:216|174:216|148:284,1,90,2|0,0:0|1:0,0:0:0:0: +74,329,437308,70,0,B|71:273|71:273|51:260|51:260|43:129,1,180,4|2,0:0|0:0,0:0:0:0: +263,61,437753,1,2,0:0:0:0: +263,61,437975,2,0,L|182:112,1,90,2|0,0:0|1:0,0:0:0:0: +103,78,438197,2,0,B|72:52|72:52|36:88,1,90,2|0,0:0|1:0,0:0:0:0: +75,163,438419,2,0,L|41:360,1,180,2|2,0:0|0:0,0:0:0:0: +232,202,438864,2,0,L|215:300,1,90,4|0,0:0|1:0,0:0:0:0: +201,368,439086,2,0,B|151:343|151:343|317:335,1,180,4|2,0:0|0:0,0:0:0:0: +328,269,439419,2,0,B|417:264|417:264|371:160,1,180,0|0,1:0|1:0,0:0:0:0: +373,165,439753,1,2,0:0:0:0: +373,165,439975,5,2,0:0:0:0: +373,165,440197,1,2,0:0:0:0: +373,165,440419,1,2,0:0:0:0: +373,165,440642,2,0,L|486:186,1,90,2|0,0:0|1:0,0:0:0:0: +465,86,440864,70,0,B|410:54|410:54|362:196,1,180,4|2,0:0|0:0,0:0:0:0: +293,258,441197,2,0,L|262:54,1,180,0|0,1:0|1:0,0:0:0:0: +176,42,441530,2,0,B|120:58|120:58|89:47|89:47|-3:76,1,180,2|2,0:0|0:0,0:0:0:0: +176,188,441975,1,2,0:0:0:0: +176,188,442197,2,0,B|120:204|120:204|89:193|89:193|-3:222,1,180,2|2,0:0|0:0,0:0:0:0: +365,326,442642,6,0,B|359:256|359:256|298:249|298:249|331:305,1,161.999995056153,2|0,0:0|0:0,0:0:0:0: +312,286,442864,2,0,L|270:308,3,33.7500012874604,4|0|0|0,0:0|0:0|0:0|0:0,0:0:0:0: +275,318,443086,70,0,L|176:299,2,58.4999973220826,0|0|0,1:0|1:0|1:0,0:0:0:0: +450,256,443308,2,0,L|549:237,2,58.4999973220826,0|0|0,1:0|1:0|1:0,0:0:0:0: +341,207,443530,6,0,L|326:148,2,40.4999987640381,8|8|4,0:0|0:0|0:0,0:0:0:0: +389,97,443753,70,0,L|488:78,2,58.4999973220826,0|0|0,1:0|1:0|1:0,0:0:0:0: +244,205,443975,2,0,L|145:186,2,58.4999973220826,0|0|0,1:0|1:0|1:0,0:0:0:0: +417,275,444197,2,0,L|516:256,2,58.4999973220826,0|0|0,1:0|1:0|1:0,0:0:0:0: +307,374,444419,6,0,L|269:312,1,72,4|0,0:0|0:0,0:0:0:0: +288,369,444642,2,0,L|251:308,1,72 +156,359,444864,2,0,B|170:342|170:342|182:204,1,144,12|0,0:0|0:0,0:0:0:0: +97,364,445308,2,0,B|137:364|137:364|160:336|160:336|174:174,1,225,12|0,0:0|0:0,0:0:0:0: +165,179,445642,70,0,L|56:220,1,90,12|0,0:0|0:0,0:0:0:0: +121,64,445864,1,0,0:0:0:0: +97,97,445975,2,0,L|20:68,1,67.5000025749208,12|0,0:0|0:0,0:0:0:0: +281,10,446197,6,0,B|229:27|229:27|208:82|208:82|312:243,1,297.000009063721,4|0,0:0|0:0,0:0:0:0: +426,339,446642,2,0,B|477:321|477:321|498:266|498:266|395:106,1,297.000009063721,12|0,0:0|0:0,0:0:0:0: +147,232,447086,70,0,B|173:202|173:202|278:218|278:218|293:243,1,175.499991966248,12|0,0:0|0:0,0:0:0:0: +299,255,447308,6,0,L|270:364,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +353,308,447530,2,0,L|279:327,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +333,381,447753,2,0,L|278:327,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +153,349,447975,70,0,L|19:326,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +0,245,448197,1,2,0:0:0:0: +0,245,448308,1,2,0:0:0:0: +0,245,448419,2,0,L|134:222,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +153,141,448642,1,2,0:0:0:0: +153,141,448753,1,2,0:0:0:0: +153,141,448864,2,0,L|19:118,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +0,37,449086,1,2,0:0:0:0: +0,37,449197,1,2,0:0:0:0: +0,37,449308,2,0,L|134:14,3,99.0000030212403,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +201,55,449753,6,0,B|182:86|182:86|189:152,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +337,258,449975,1,2,0:0:0:0: +337,258,450086,1,2,0:0:0:0: +337,258,450197,2,0,B|356:227|356:227|349:161,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +98,136,450419,1,2,0:0:0:0: +98,136,450530,1,2,0:0:0:0: +98,136,450642,2,0,B|104:198|104:198|129:224,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +286,88,450864,1,2,0:0:0:0: +286,88,450975,1,2,0:0:0:0: +286,88,451087,2,0,B|279:25|279:25|254:0,3,99.0000030212403,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +184,63,451530,70,0,L|99:42,1,72,4|0,0:0|0:0,0:0:0:0: +176,74,451753,2,0,L|91:53,1,72,4|0,0:0|0:0,0:0:0:0: +18,193,451975,6,0,B|58:150|58:150|-5:60,1,144,12|0,0:0|0:0,0:0:0:0: +13,292,452419,70,0,B|91:259|91:259|241:337,1,225,12|0,0:0|0:0,0:0:0:0: +224,331,452753,6,0,L|127:345,1,90,12|0,0:0|0:0,0:0:0:0: +241,202,452975,1,0,0:0:0:0: +269,210,453086,2,0,L|172:224,1,67.5000025749208,12|0,0:0|0:0,0:0:0:0: +326,119,453308,70,0,B|410:191|410:191|359:319|359:319|340:261,1,297.000009063721,4|0,0:0|0:0,0:0:0:0: +163,141,453753,6,0,B|103:162|103:162|165:44|165:44|270:28,1,297.000009063721,12|0,0:0|0:0,0:0:0:0: +512,50,454197,70,0,B|395:61|395:61|324:7,1,175.499991966248,12|0,0:0|0:0,0:0:0:0: +342,20,454419,6,0,L|358:128,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +293,143,454642,2,0,L|378:75,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +424,123,454864,2,0,L|322:82,1,76.5000014591217,12|0,0:0|0:0,0:0:0:0: +158,61,455086,70,0,L|33:83,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +244,209,455308,1,2,0:0:0:0: +244,209,455419,1,2,0:0:0:0: +244,209,455530,2,0,L|124:165,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +128,368,455753,1,2,0:0:0:0: +128,368,455864,1,2,0:0:0:0: +128,368,455975,2,0,L|106:243,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +244,209,456197,1,2,0:0:0:0: +244,209,456308,1,2,0:0:0:0: +244,209,456419,2,0,L|222:334,3,99.0000030212403,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +367,384,456864,6,0,B|313:341|313:341|345:291,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +390,230,457086,1,2,0:0:0:0: +390,230,457197,1,2,0:0:0:0: +390,230,457308,2,0,B|444:273|444:273|412:323,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +329,315,457530,2,0,B|275:272|275:272|307:222,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +324,163,457753,1,2,0:0:0:0: +324,163,457864,1,2,0:0:0:0: +324,163,457975,2,0,B|340:137|340:137|286:94,1,99.0000030212403,2|2,0:0|0:0,0:0:0:0: +191,99,458197,2,0,B|174:124|174:124|228:167,3,99.0000030212403,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +154,224,458642,70,0,L|71:216,1,80.9999975280763,4|0,0:0|0:0,0:0:0:0: +139,212,458864,2,0,L|56:204,1,80.9999975280763 +0,43,459086,2,0,P|78:54|63:145,1,161.999995056153,12|0,0:0|0:0,0:0:0:0: +101,343,459530,6,0,B|64:375|28:347|-7:301|62:178|163:243,1,247.500007553101,12|0,0:0|0:0,0:0:0:0: +149,237,459864,2,0,P|113:265|51:273,1,99.0000030212403,12|0,0:0|0:0,0:0:0:0: +250,256,460086,1,0,0:0:0:0: +264,350,460197,2,0,P|231:329|187:322,1,80.9999975280763,12|0,0:0|0:0,0:0:0:0: +405,382,460419,70,0,B|355:324|355:324|459:173,1,215.999993408203,4|0,0:0|0:0,0:0:0:0: +512,0,460864,2,0,B|486:72|486:72|347:61,1,215.999993408203,12|0,0:0|0:0,0:0:0:0: +127,98,461308,2,0,B|202:83|202:83|262:209,1,188.999994232178,12|0,0:0|0:0,0:0:0:0: +249,197,461530,6,0,B|200:232|200:232|216:200,1,90,12|0,0:0|0:0,0:0:0:0: +323,100,461753,2,0,B|377:124|377:124|342:127,1,90,12|0,0:0|0:0,0:0:0:0: +202,84,461975,2,0,B|196:24|196:24|215:53,1,90,12|0,0:0|0:0,0:0:0:0: +249,197,462197,70,0,P|260:246|341:253,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +378,336,462419,1,2,0:0:0:0: +378,336,462530,1,2,0:0:0:0: +378,336,462642,2,0,P|337:368|287:353,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +199,317,462864,1,2,0:0:0:0: +199,317,462975,1,2,0:0:0:0: +199,317,463087,2,0,P|147:309|111:346,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +15,323,463308,1,2,0:0:0:0: +15,323,463419,1,2,0:0:0:0: +15,323,463531,2,0,P|47:282|32:232,3,107.999996704102,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +20,35,463975,6,0,P|9:83|13:169,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +202,17,464197,1,2,0:0:0:0: +202,17,464308,1,2,0:0:0:0: +202,17,464419,2,0,P|168:53|128:129,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +368,92,464642,1,2,0:0:0:0: +368,92,464753,1,2,0:0:0:0: +368,92,464864,2,0,P|320:106|248:152,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +474,239,465086,1,2,0:0:0:0: +474,239,465197,1,2,0:0:0:0: +474,239,465308,2,0,P|426:228|340:232,3,107.999996704102,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +308,323,465752,70,0,L|363:385,1,80.9999975280763,4|0,0:0|0:0,0:0:0:0: +310,306,465975,2,0,L|365:368,1,80.9999975280763,4|0,0:0|0:0,0:0:0:0: +247,243,466197,2,0,P|277:313|225:370,1,161.999995056153,12|0,0:0|0:0,0:0:0:0: +137,161,466642,6,0,B|157:98|213:112|172:236|77:209|78:148|14:217|40:287,1,247.500007553101,12|0,0:0|0:0,0:0:0:0: +36,266,466975,2,0,P|48:303|115:305,1,99.0000030212403,12|0,0:0|0:0,0:0:0:0: +263,302,467197,1,0,0:0:0:0: +224,230,467308,2,0,P|189:249|181:287,1,80.9999975280763,12|0,0:0|0:0,0:0:0:0: +312,372,467530,70,0,B|468:359|468:359|378:328,1,215.999993408203,4|0,0:0|0:0,0:0:0:0: +154,125,467975,2,0,B|-2:138|-2:138|88:169,1,215.999993408203,12|0,0:0|0:0,0:0:0:0: +234,354,468419,6,0,B|240:245|240:245|207:249|207:249|222:310,1,188.999994232178,12|0,0:0|0:0,0:0:0:0: +220,310,468642,2,0,L|318:292,1,90,12|0,0:0|0:0,0:0:0:0: +168,118,468864,2,0,L|70:100,1,90,12|0,0:0|0:0,0:0:0:0: +302,5,469086,2,0,L|377:69,1,90 +479,129,469308,70,0,B|453:169|453:169|498:252,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +351,353,469530,1,2,0:0:0:0: +351,353,469642,1,2,0:0:0:0: +351,353,469753,2,0,B|297:381|297:381|257:356,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +312,114,469975,2,0,B|363:145|363:145|361:193,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +124,267,470197,2,0,B|125:206|125:206|167:184,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +276,223,470419,1,2,0:0:0:0: +276,223,470530,1,2,0:0:0:0: +276,223,470642,2,0,B|257:280|257:280|245:217,3,107.999996704102,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +241,144,471086,6,0,P|260:84|225:37,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +112,29,471308,1,2,0:0:0:0: +112,29,471419,1,2,0:0:0:0: +112,29,471530,2,0,P|154:59|161:112,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +108,191,471753,1,2,0:0:0:0: +108,191,471864,1,2,0:0:0:0: +108,191,471975,2,0,P|76:149|23:143,1,107.999996704102,2|2,0:0|0:0,0:0:0:0: +0,280,472197,2,0,P|48:300|96:278,1,107.999996704102,2|0,0:0|0:0,0:0:0:0: +170,330,472419,69,0,1:0:0:0: +177,325,472475,1,0,1:0:0:0: +184,320,472530,2,0,L|196:250,4,53.9999983520508,0|0|0|0|0,1:0|1:0|1:0|1:0|1:0,0:0:0:0: +263,222,472864,6,0,L|253:91,1,90,4|2,0:0|0:0,0:0:0:0: +309,54,473086,69,2,0:0:0:0: +350,39,473197,1,2,0:0:0:0: +394,49,473308,1,2,0:0:0:0: +425,81,473419,1,2,0:0:0:0: +433,124,473530,1,2,0:0:0:0: +418,165,473641,1,2,0:0:0:0: +382,192,473753,6,0,B|356:173|356:173|337:174|337:174|289:145,1,90,2|2,0:0|0:0,0:0:0:0: +376,283,473975,2,0,B|343:263|343:263|324:264|324:264|297:244,1,90,2|2,0:0|0:0,0:0:0:0: +223,326,474197,70,0,B|226:293|226:293|216:277|216:277|217:221,1,90,2|2,0:0|0:0,0:0:0:0: +141,365,474419,2,0,B|141:326|141:326|131:310|131:310|134:278,1,90,2|2,0:0|0:0,0:0:0:0: +52,239,474642,6,0,B|48:206|48:206|58:190|58:190|57:134,1,90,2|2,0:0|0:0,0:0:0:0: +134,278,474864,2,0,B|133:239|133:239|143:223|143:223|140:191,1,90,2|2,0:0|0:0,0:0:0:0: +222,152,475086,70,0,B|225:119|225:119|215:103|215:103|216:47,1,90,2|2,0:0|0:0,0:0:0:0: +140,191,475308,2,0,B|140:152|140:152|130:136|130:136|133:104,1,90,2|2,0:0|0:0,0:0:0:0: +66,3,475530,5,2,0:0:0:0: +70,47,475641,1,2,0:0:0:0: +95,84,475752,1,2,0:0:0:0: +134,104,475863,1,2,0:0:0:0: +179,104,475974,1,2,0:0:0:0: +218,82,476085,1,2,0:0:0:0: +256,58,476196,1,2,0:0:0:0: +300,63,476307,1,2,0:0:0:0: +325,96,476419,70,0,B|291:137|291:137|314:197,3,80.9999975280763,4|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +434,149,476864,2,0,B|384:167|384:167|373:230,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +501,249,477086,2,0,B|448:240|448:240|408:289,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +509,369,477308,6,0,B|468:335|468:335|408:358,3,80.9999975280763,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +366,315,477753,2,0,B|340:324|340:324|299:290,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +225,254,477975,2,0,B|229:226|229:226|279:208,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +349,163,478197,70,0,B|370:180|370:180|361:232,3,80.9999975280763,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +354,324,478642,2,0,B|328:331|328:331|290:294,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +219,251,478864,2,0,B|226:224|226:224|277:210,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +351,171,479086,6,0,B|371:190|371:190|357:242,1,80.9999975280763,4|2,0:0|0:0,0:0:0:0: +328,320,479308,2,0,B|315:344|315:344|262:348,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +179,343,479530,2,0,B|151:339|151:339|132:289,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +110,209,479753,2,0,B|105:181|105:181|146:147,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +217,102,479975,70,0,B|241:88|241:88|286:117,1,80.9999975280763,4|2,0:0|0:0,0:0:0:0: +409,60,480197,5,2,0:0:0:0: +381,89,480308,1,2,0:0:0:0: +344,105,480419,1,2,0:0:0:0: +304,105,480530,1,2,0:0:0:0: +267,88,480641,1,2,0:0:0:0: +232,68,480752,1,2,0:0:0:0: +191,68,480864,70,0,L|165:170,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +95,87,481086,2,0,L|74:165,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +4,226,481308,2,0,L|30:328,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +100,245,481530,2,0,L|120:323,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +204,376,481753,6,0,L|230:274,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +300,357,481975,2,0,L|320:278,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +385,210,482197,2,0,L|364:131,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +289,191,482419,2,0,L|268:112,1,80.9999975280763,2|2,0:0|0:0,0:0:0:0: +191,161,482642,69,2,0:0:0:0: +179,199,482753,1,2,0:0:0:0: +194,236,482864,1,2,0:0:0:0: +229,255,482975,1,2,0:0:0:0: +251,289,483086,1,2,0:0:0:0: +250,329,483197,1,2,0:0:0:0: +221,357,483308,1,2,0:0:0:0: +180,360,483419,1,2,0:0:0:0: +149,332,483530,6,0,L|166:251,3,72,4|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +100,180,483975,2,0,L|85:250,1,72,2|2,0:0|0:0,0:0:0:0: +21,168,484197,2,0,L|36:98,1,72,2|2,0:0|0:0,0:0:0:0: +122,70,484419,70,0,L|105:-11,3,72,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +212,103,484864,2,0,L|226:173,1,72,2|2,0:0|0:0,0:0:0:0: +233,271,485086,2,0,L|164:248,1,72,2|2,0:0|0:0,0:0:0:0: +78,206,485308,6,0,L|131:157,3,72,2|2|2|2,0:0|0:0|0:0|0:0,0:0:0:0: +219,99,485753,2,0,L|228:170,1,72,2|2,0:0|0:0,0:0:0:0: +226,268,485975,2,0,L|159:240,1,72,2|2,0:0|0:0,0:0:0:0: +77,190,486197,70,0,L|149:136,1,90,2|2,0:0|0:0,0:0:0:0: +198,54,486419,2,0,L|271:105,1,90,2|2,0:0|0:0,0:0:0:0: +365,126,486642,2,0,L|338:211,2,60.7500002317429,0|0|0,1:0|1:0|1:0,0:0:0:0: +347,307,486864,2,0,L|257:308,2,60.7500002317429,0|0|0,1:0|1:0|1:0,0:0:0:0: +170,347,487087,6,0,L|141:262,1,65.250001991272,4|0,0:0|0:0,0:0:0:0: diff --git a/tests/test_irc_client.py b/tests/test_irc_client.py index 50f4e84..b6591ef 100644 --- a/tests/test_irc_client.py +++ b/tests/test_irc_client.py @@ -1035,6 +1035,32 @@ def test_calculate_pp_fully_failed(self): self.assertEqual(pp.maxbeatmapcombo, 0) self.assertEqual(pp.fc95pp, 0) + @patch('irc_dlient.rosu.Beatmap') + def test_calculate_pp_obj_success(self,mock_beatmap): + mock_beatmap.return_value = self.beatmap + + pp = irc_dlient.PP() + pp.calculate_pp_obj('HDHRDT', 0.98, 5, 1000) + self.assertEqual(pp.maxpp, 1100) + self.assertEqual(pp.maxbeatmapcombo, 3581) + self.assertEqual(pp.fc95pp, 656) + self.assertEqual(pp.fc96pp, 698) + self.assertEqual(pp.fc97pp, 751) + self.assertEqual(pp.fc98pp, 824) + self.assertEqual(pp.fc99pp, 931) + self.assertEqual(pp.currpp, 24) + self.assertEqual(pp.curraimpp, 21) + self.assertEqual(pp.currspeedpp, 0) + self.assertEqual(pp.curraccpp, 0) + + def test_calculate_pp_obj_failed(self): + pp = irc_dlient.PP() + pp.calculate_pp_obj('HDHRDT', 0.98, 5, 1000) + self.assertEqual(pp.maxpp, 0) + self.assertEqual(pp.maxbeatmapcombo, 0) + self.assertEqual(pp.currpp, 0) + self.assertEqual(pp.curraimpp, 0) + class TestRoom(unittest.TestCase): def setUp(self): # 构造模拟config