diff --git a/trunk/CardSaveDataMover/Imp/Imp.rsf b/trunk/CardSaveDataMover/Imp/Imp.rsf
deleted file mode 100644
index 020eda7..0000000
--- a/trunk/CardSaveDataMover/Imp/Imp.rsf
+++ /dev/null
@@ -1,19 +0,0 @@
-BasicInfo:
- Title : $(TITLE)
- BackupMemoryType: None
- Logo : Nintendo
-# Companycode: "00"
- ProductCode : "CTR-P-22MA"
-# MediaSize: 2GB
-
-AccessControlInfo:
- FileSystemAccess:
- - Debug
-
-Rom:
- HostRoot : $(ROMFS_ROOT)
-
-TitleInfo:
-# UniqueId: 0xffff6
- UniqueId: 0xf8015
- Version: 0
diff --git a/trunk/CardSaveDataMover/Imp/OMakefile b/trunk/CardSaveDataMover/Imp/OMakefile
deleted file mode 100644
index 99b79e8..0000000
--- a/trunk/CardSaveDataMover/Imp/OMakefile
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/env omake
-#----------------------------------------------------------------------------
-# Project: Horizon
-# File: OMakefile
-#
-# Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
-#
-# These coded instructions, statements, and computer programs contain
-# proprietary information of Nintendo of America Inc. and/or Nintendo
-# Company Ltd., and are protected by Federal copyright law. They may
-# not be disclosed to third parties or copied or duplicated in any form,
-# in whole or in part, without the prior written consent of Nintendo.
-#
-# $Rev: 31765 $
-#----------------------------------------------------------------------------
-SUPPORTED_TARGETS = CTR-*.Process.MPCore.*
-
-#demoライブラリ位置指定
-#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../common/include)
-#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../CTR_SDK/sampledemos/common/include)
-#INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR)
-
-
-SOURCES[] =
- ./source/main.cpp
- ./source/test_data.cpp
- ../common/sleep.cpp
- ../common/common.cpp
- ../common/shfnt.cpp
-
-OBJECTS[] =
- $`(ObjectFromBinary $(TARGET), ./Imp_list/key/Public_Key.der)
-
-TARGET_PROGRAM = CtrSaveDataMover_imp
-
-TITLE = CSM_imp
-
-LIBS += libnn_ps
-
-IMPORTEE_CIA = importee.cia
-
-#SRC_IMPORTEE_PATH = ../body/images/$(BUILD_TARGET_DIR)/$(BUILD_TYPE_DIR)/CtrSaveDataMover.cia
-#とりあえず、マスタリング時は直おき、配置時に改名
-SRC_IMPORTEE_PATH = CtrSaveDataMover_master.cia
-
-# ビルドタイプ別に romfs を作る
-#ROMFS_ROOT = $`(TARGET.getObjectDirectory)/romfsroot
-ROMFS_ROOT = ./romfiles
-DEST_IMPORTEE_PATH = $(ROMFS_ROOT)/$(IMPORTEE_CIA)
-foreach(TARGET, $(BUILDER.getTargets $(SUPPORTED_TARGETS)))
- $(DEST_IMPORTEE_PATH): $(SRC_IMPORTEE_PATH) $(makeDirectory $(ROMFS_ROOT))
- cp $< $@
-ROMFS_DEPENDENCIES = $(DEST_IMPORTEE_PATH)
-
-# プログラムから参照するためのROMFSのパスとプログラムIDを定義する
-ROMFS_IMPORTEE_PATH = L\"rom:/$(IMPORTEE_CIA)\"
-CCFLAGS += -DROMFS_IMPORTEE_PATH=$(ROMFS_IMPORTEE_PATH)
-
-ROM_SPEC_FILE = Imp.rsf
-DESCRIPTOR = $(CTRSDK_ROOT)/resources/specfiles/repairtool.desc
-
-# バナー、アイコン
-#CTR_BANNER_SPEC = banner.bsf
-CTR_BANNER_SPEC = banner_null_icon.bsf
-
-include $(ROOT_OMAKE)/modulerules
-
-build: $(DEFAULT_TARGETS)
-
\ No newline at end of file
diff --git a/trunk/CardSaveDataMover/Imp/banner.bsf b/trunk/CardSaveDataMover/Imp/banner.bsf
deleted file mode 100644
index a18d99e..0000000
Binary files a/trunk/CardSaveDataMover/Imp/banner.bsf and /dev/null differ
diff --git a/trunk/CardSaveDataMover/Imp/banner/BannerModel_imp/COMMON/COMMON.cmdl b/trunk/CardSaveDataMover/Imp/banner/BannerModel_imp/COMMON/COMMON.cmdl
deleted file mode 100644
index 3e85377..0000000
--- a/trunk/CardSaveDataMover/Imp/banner/BannerModel_imp/COMMON/COMMON.cmdl
+++ /dev/null
@@ -1,274 +0,0 @@
-
-
-
-
-
- MetaData
-
-
-
-
-
-
-
-
- ContentSummaries
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ModelDccToolInfo
-
-
- OptimizationLogs
-
-
-
-
-
-
-
-
-
-
-
- Skeleton.Bones["*"].AnimatedTransform
-
-
-
-
-
-
- IsVisible
-
-
- Meshes["*"].IsVisible
-
-
- IsBranchVisible
-
-
-
-
-
-
- Materials["*"].MaterialColor.Emission
-
-
- Materials["*"].MaterialColor.Ambient
-
-
- Materials["*"].MaterialColor.Diffuse
-
-
- Materials["*"].MaterialColor.Specular0
-
-
- Materials["*"].MaterialColor.Specular1
-
-
- Materials["*"].MaterialColor.Constant0
-
-
- Materials["*"].MaterialColor.Constant1
-
-
- Materials["*"].MaterialColor.Constant2
-
-
- Materials["*"].MaterialColor.Constant3
-
-
- Materials["*"].MaterialColor.Constant4
-
-
- Materials["*"].MaterialColor.Constant5
-
-
- Materials["*"].TextureMappers["*"].Sampler.BorderColor
-
-
- Materials["*"].TextureMappers["*"].Texture
-
-
- Materials["*"].FragmentOperation.BlendOperation.BlendColor
-
-
- Materials["*"].TextureCoordinators["*"].Scale
-
-
- Materials["*"].TextureCoordinators["*"].Rotate
-
-
- Materials["*"].TextureCoordinators["*"].Translate
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
-
- 0 1 2 1 3 2
-
-
-
-
-
-
-
--12 -6 6.5
-12 -6 6.5
--12 6 6.5
-12 6 6.5
-
- 0 0 1
-
-0 0
-1 0
-0 1
-1 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures["banner_imp"]@file:Textures/banner_imp.ctex
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- DccToolSourceNode
-
- BONE_00
-
-
-
- Shapes[0]
- Materials["MT_00"]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/trunk/CardSaveDataMover/Imp/banner/BannerModel_imp/COMMON/Textures/banner_imp.ctex b/trunk/CardSaveDataMover/Imp/banner/BannerModel_imp/COMMON/Textures/banner_imp.ctex
deleted file mode 100644
index 83e936f..0000000
--- a/trunk/CardSaveDataMover/Imp/banner/BannerModel_imp/COMMON/Textures/banner_imp.ctex
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- F5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QnlBeUJ5QXlBeUF5QXlBeUJ5QnlCeUF5QnlBeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5UnlSeVJ5UnlCeVJ5QnlSeVJ6UnlSelJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlSeUJ5UnlCeVJ5UnlSeVJ6UnpSelJ5UnpSeVJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelN6UnpTelJ6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pjelN6YnpSelJ6UnpSelN6U3pTelJ6U3pSelN6U3pTelN6U3pTelN6U3pTelN6Y3pjemN6Y3pTemN6U3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6ZHpjemN6Y3pjemN6ZHpjemR7ZHpke2R7ZHtke2R7ZHtke2R7ZHtke2R7ZHtke3R7ZHtzemN6Y3pjemR6ZHtkemR7Y3pkemN6ZHpke2R7ZHtke2R7ZHtke2R7ZHtke3R7dHt0e2R7ZHtke3R7dHt0e3R7dHt0e3R7dHt0e3V7dXt1e3R7dHt0e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXx1fIR7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fIZ8hXyGfIV7dXyFe3V8hXyGfIZ8hnyFfIZ8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfJZ8h3yWfIZ8hnyGfIZ8l3yXfJd8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyHfJd8l3yXfJd8lnyHfJd8l3yXfJd8l3yXfZd8l3yXfJd8l3yXfZd9l32XfJd9l3yXfZd9l32XfZd9l32XfZd9l32YfZh9qH2ofad9mH2XfZh9qH2ofah9qH2nfJd9l32XfZd9l32XfZd9l32XfZd9l32XfZh9l32Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2pfah9qX6ofal+qX2pfql+uX65frl+uX6pfrl+qX65frl+uX65frh9qH2ofah9qX2pfql9qX6ofah9qH2pfal+qX65fql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+uX65frl+uX65frp+un66frp+un66frp+un66fsp+yn7Kfrp+un66frp+yn7Kfsp+yX66frl+un66frp+un66frl+un66frp+un66frp+un7Kfrp+yn66fsp+yn7Kfsp+yn7Kfsp+yn7Kfsp/yn7Kf8p+yn7Kfsp+yn/Kf8p/y3/Kfsp/yn/Kf8p/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Kf8p/yn/Lf8t/y3/Lf8t/yn/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/23/Lf8t/y3/bf9t/23/bf9t/y3/bf8t/23/bf9t/23/bf9t/23/bf9t/3H/bf9x/23/bf9t/23/cf9x/3H/cf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/cf9t/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/cf9x/3H/cf9x/3H/cf9t/3H/cf9x/3H/bf9t/23/bf9t/23/bf9t/23/bf8t/y3/Lf9t/23/bf8t/y3/Lf8t/zH/bf9x/23/bf9t/23/bf9t/23/bf9t/23/bf8t/23/Lf9t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y37Lf8t/y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lf8t/y3/Lfst+y37Lfst+y37Lfst/y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfsp+yn7Kfsp+u37Kfsp+yn7Kfsp+un7Kfrt+y37Lfst+y37Lfst+yn7Lfst+y37Lfst+yn7Kfsp+yn7Kfsp+yn7Kfrp+un66frp+yn66fsp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp9un26fbp9un26frp9un26fbp9un26fbp9un66frp+un66frp9un66fbp+un66frp+un66fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp9un26fbp9un25fbp9uX26fbp9un26fbl9uX25fbl9uX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2qfbl9uX25fbl9uX2pfbl9qX25fbl9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfKl9qX2pfal9qX2pfKl9qXypfKl8qXypfKh8qHyofKh8qXyofKh8qHyofKh8mHyofJl9qX2pfal9qXypfKl8qHypfal8qX2pfKl8qHypfKh8qHyofKh8qHyofKh8mHyYfJh8qHyYfKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yXfJd7mHyYfJh8l3yXfJd7l3uXe4d8l3uXfJd7l3uXe4d7l3uHe5d7l3uXe5d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe5d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7h3uHe4d7h3uGe4Z7hnuGe4d7hnuHe4Z7hnuGe4Z7hnuGe4Z7hnuGe3Z6dnp2enZ6dnt2enZ7dnp2enZ6dnp2end7hnuGe4Z7hnuGe3Z7hnp2e4Z7hnuGe4Z7dnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enZ6dXp1enV6dXp1enV6dXplenV6dXp1enV6dXplenV6Znp2enZ6dnp2enV6dXp1enZ6dnp2enV6dXp1enV6dXp1enV6dXp1emV6ZXplemV6ZXp1emV6ZXplemV6ZXplemV6ZXplemV6ZXpleWV5ZXllemV5ZXplemV5ZXlleWV5ZXlleWV5ZXlleWR5ZHlkeWV5ZXlleWV5ZHlkeWR5ZHllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlkeWR5ZHlkeWR5VHlUeVR5ZHlkeWR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeVR5VHlUeVR5VHlUeFR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHhTeFR5VHhUeVR4VHhTeFR4U3hUeFR4VHhTeFN4U3hTeFN4VHhTeFR4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4Q3hDeFN4U3hTeEN4Q3hDeEN4Q3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEJ4QnhCeEN4QnhDeEJ4QnhCd0J4QndDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4Q3hCeEJ4QnhCeEJ3QndCd0J3QndCeEJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QndCd0J3QndCdzJ3Qncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcxdzF3MXcydzJ3MncxdzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcydzF3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXcxdjF3MXcxdzF2MXcxdjF2MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXYxdjF2MXYxdjF2MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdiF2MXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdjF2IXYhdiF2IXYhdjF2IXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYheUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlCeUJ5QnlBeUJ5QXlCeUJ5QnlCeUJ5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlCeUF5QnlBeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeVJ5QnlCeUJ5QnlSeVJ5UnlSeUJ5UnlCeVJ5UnlSeVJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6U3pSeUJ5UnlSeVJ6UnpSelJ6UnlSelJ5UnpSelJ6UnpSelJ6UnpSelJ6U3pTelN6U3pSelJ6UnpTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pTemN6U3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6Y3pkemN6U3pTelN6U3pTemN6Y3pjelN6U3pTemN6Y3pjemN6Y3pjemN6Y3pkemR6ZHpke2N6ZHpjemR6ZHtke2R7ZHtkemR6ZHpke2R7ZHtke2R7ZHpke2R7ZHtke2R7ZHtke3R7ZHt0e3R7dHt1e3R7dXt0e3R7dHt0e3V7dXt1e3V7dHtke2R7ZHtke2R7dHt0e3R7ZHtke2R7dHt0e3R7dHt0e3V7dHt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXyFe3V8hXyGfIV8hnyGfIZ8hnyGfIV8hnyGfIZ8hnyGfIZ8hnyFe3V7dXt1e3V8hXyFfIZ8hXt1fIV7dXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyHfJZ8hnyGfIZ8hnyHfJd8l3yXfJd8l3yXfJd9l32XfZd9l3yXfZd8l32XfZd9l32XfZZ8hnyGfId8l3yXfJd8l3yWfJd8lnyXfJd8l32XfJd9l3yXfZd9l32XfZd9l32XfZd9l32XfZd9l32YfZd9mH2nfZd9l32YfZh9mH2ofah9p32YfZd9mH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal9qH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX6pfal+qH2ofah9qX2pfql+uX6pfrh9qX6pfal+qX65frl+uX65fql+uX6pfrl+uX65frl+uX65frl+uX65frl+uX66frl+uX65frl+uX66frp+un65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+un66frp+un65frp+un66frp+un66frp+un66frp+un66frp+yn66fsp+un66frp+un7Kfsp+yn7Kfsp+yn7Kfsp/yn/Kf8t/yn7Kf8p+yn/Kf8t/yn/Lf8p+un7Kfsp+yn7Kfsp+yn/Kfsp+yn7Kfsp+yn/Kfsp/yn/Kf8p/y3/Lf8t/y3/Lf8p/y3/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf9t/23/bf8t/23/Lf9t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf9t/y3/Lf8t/y3/Lf9t/y3/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/cf9t/3H/bf9t/23/bf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/cf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/23/bf9x/3H/cf9x/3H/bf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/cf9t/23/bf9t/23/bf9t/23/bf9t/23/Lf9t/y3/bf9t/23/bf9t/y3/Lf8t/23/Lf9t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y37Lfst/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst+y37Lfst/y37Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+yn7Kfst+y37Lfsp+yn7Kfsp+yn67fsp+yn7Kfsp+yn66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66fsp+yn7Kfsp+un66frp+un7Kfrp+yn66frp+un66frp+un66frp+un66frp+un26frp+un66frp+un26fbp9un66frp+un26fbp9un26fbp+un26frp9un26fbp9un26fbp9un26fbp9uX25fbl9un26fbp9uX25fbl9uX25fap9un26fbp9un26fbp9un26fbp9un26fbp9un26fbl9un25fbp9uX25fbl9qX25fal9uX25fbl9qX2pfal9qX2pfbl9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfal8qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qXypfKl8qX2pfKl9qXypfKh8qXyofKl8qXypfKl8qHyofKh8qHypfKh8qXyofKh8qHyofKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfKh8qHyofKh8qHyYfJh8mHyofJh8qHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd7l3yXe5d7l3uHe5d7h3yXe5d7l3uHe4d7h3uHe4h8mHyYfJh8mHyXe5d8l3uYfJh8mHyXfJd7l3uXe5d7h3uXe4d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuGe4Z7hnuHe4Z7h3uGe4Z7hnuGe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuHe4Z7hnuGe4Z7hnuGe4Z7dnuGe4Z7hnuGe4Z6dnp2enZ7hnt2e4Z6dnp2enZ6dnp2e3Z6dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enV6dXp2enZ6dnp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1emV6dXplemV6ZXplemV6ZXllemV5ZXplemV6ZXpleWV5ZXlleWV6dXp1enV6ZXplemV6ZXplenV6ZXplemV6ZXplemV5ZXpleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHlleWV5ZXlleWV5ZHlleWR5ZXlleWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeVR5VHlUeWR5ZHlkeVR5VHlUeVR5VXlkeWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHhUeVR4VHhUeFR4VHhTeFN4U3hTeFR4U3hUeFN4U3hTeFN4U3hUeVR5VHlUeVR5VHhUeFR4VHlUeVR5VHhUeFN4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hTeFN4U3hTeFN4Q3hDeEN4U3hTeFN4U3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEN4Q3hDeEN4QnhCeEJ4Q3hCeEN4QnhCeEJ3QndCd0J4QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QnhCeEJ4QnhCeEJ3QndCd0J4QndCeEJ3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCd0J3QndCdzJ3MncydzJ3Qncyd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MncydzJ3MncydzF3MXcxdzJ3MncydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF2MXcxdzF3MXcxdjF2MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdjF2IXcxdjF3MXYxdjF2MXYxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYxdiF2MXYxdjF2MXYxdiF2IXYhdiF2MXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXlBeUF5QXlBeUJ5QnlCeUF5QXlBeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5UnlSeVJ5UnlCeUJ5QnlSeVJ5UnlSelF5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5UnlCeVJ5UnlSelJ6UnpSelJ5UnlSeVJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpTelJ6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6YnpSelJ6UnpTelN6U3pTelJ6UnpSelN6U3pTelN6U3pTelN6U3pTelN6Y3pjemN6Y3pTelN6U3pjemN6Y3pjemN6U3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6ZHpke2R6ZHtke2R7ZHtke2R7ZHtke2R7ZHtke2R7ZHtzemN6Y3pjemR6ZHpkemR6Y3pjemN6ZHpkemR7ZHpke2R7ZHtke2R7ZHtke3R7ZHt0e2R7ZHtke3R7dHt0e3R7dHtke3R7ZHt0e3V7dHt1e3R7dHt0e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXt1fIR7dXt0e3V7dXt1e3V7dXt0e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fIV8hXyGfIV7dXx1e3V8hXyGfIZ8hnyFfIV8hXyGfIZ8hnyGfIZ8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8h3yWfIZ8hnyGfIZ8l3yXfJd8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfJd8l3yXfJd8lnyHfJZ8l3yXfJd8l3yXfZd8l3yXfJd8l32XfZd9l32XfJd8l3yXfZd9l32XfZd9l32XfZd9l32YfZh9qH2ofad9mH2XfZh9qH2ofah9qH2nfJd9l32XfZd9l32XfZd9l32XfZd9l32XfZh9l32Yfah9mH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal+qX2pfql+uX65frl+uX2pfql+qX65frl+uX65frh9qH2ofah9qH2pfql9qX6ofah9qH2pfal9qX6pfql+uX6pfrl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+uX65frl+uX65frp+un66frp+un66frp+un66fsp+un7Kfrp+un66frp+yn7Kfsp+yX65frl+un66frp+un66frl+un65frp+un66frp+un66frp+yn7Kfsp+yn7Kfsp+yn7Kfsp+yn7Kfsp+yn7Kf8p+yn7Kfsp+yn/Kf8p/y3/Kfsp/yn7Kf8p/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Kf8p/yn/Lf8t/y3/Lf8t/yn/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf8t/23/Lf8t/y3/Lf9t/23/bf9t/y3/bf8t/23/bf9t/23/bf9t/23/bf9t/3H/bf9t/23/bf9t/23/bf9x/3H/cf9t/y3/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/cf9x/3H/cf9x/3H/bf9t/23/bf9t/23/bf9t/23/bf8t/y3/Lf9t/23/bf9t/23/Lf8t/zH/cf9x/3H/bf9t/23/bf9x/23/bf9t/23/bf9t/23/bf9t/y3/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lf8t+y3/Lfst+y37Lfst+y3/Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfsp+yn7Kfsp+u37Kfst+yn7Kfsp+un7Kfrt+y37Lfst+y37Lfst+yn7Lfst+y37Lfst+yn7Kfsp+yn7Kfsp+yn66frp+un66frp+yn66fsp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp9un26fbp9un26frp9un26fbp9un26fbp9un66frp+un66frp+un66fbp+un66frp+un66fbp+un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp9uX26fbp9un25fbl9uX25fbl9uX25fal9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2qfbl9un25fbl9uX2pfbl9qX25fbl9uX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfKl9qXypfKl8qXypfKh8qHyofKh8qXyofKl8qHyofKh8mHyofJl9qX2pfal9qX2pfKl8qXypfal8qX2pfKl8qHypfKh8qXyofKh8qHyofKh8mHyYfJh8qHyYfKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJd8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yXfJd7mHyYfJh8mHyXfJd7l3uXe5h8l3yXfJd7l3uXe4d7l3uHfJd7l3uXe5d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe5d7l3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7hnuGe4d7h3uHe4Z7hnuGe4Z7hnuGe4Z7dnuGe3Z6dnp2enZ6dnuGenZ7dnp2enZ6dnp2end7hnuHe4Z7hnuGe3Z7hnt2e4Z7hnuGe4Z7hnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXplenV6Znp2enZ6dnp2enV6dXp1enZ6dnp2enV6dXp1enV6dXp1enV6dXp1emV6dXplemV6ZXp1emV6dXplemV6ZXplemV6ZXplemV6ZXpleWV5ZXllemV6ZXplemV5ZXlleWV5ZXlleWV5ZXlleWR5ZXlkeWV5ZXlleWV5ZHlkeWR5ZHllemV5ZXpleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlkeVR5ZHlkeWR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHhUeFR5VHlUeVR5VHhTeFR4U3hUeVR4VHhUeFN4U3hTeFN4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4U3hDeFN4U3hTeEN4Q3hDeEN4Q3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4QnhCeEN4QnhDeEJ4QnhCeEJ4QndDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEJ4QnhCeEJ3QndCd0J3QndCeEJ3QnhCd0J3QndCd0J3QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3MndCdzJ3MncydzJ3MndCdzJ3MncydzJ3MncydzJ3QndCd0J3QndCdzJ3Qncyd0J3QndCd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcxdzJ3MXcydzJ3MncydzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXcxdjF3MXcxdzF3MXcxdjF2MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdjF2MXYxdzF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdjF2MXYxdiF2IXYxdjF2MXYxdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdjJ5QnlCeUJ5QnlCeVJ5UnlSeUJ5QnlCeUJ5UnlSeVJ6UnlSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6U3pSeUJ5UnlSeVJ5UnpSelJ6UnlSeVJ5UnpSelJ6UnpSelJ6UnpSelJ6UnpTelN6U3pSelJ6UnpSelN6U3pTelN6UnpTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pjelN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6Y3pkemN6U3pTelN6U3pTemN6U3pjelN6U3pTelN6Y3pjemN6Y3pjemN6Y3pkemR6ZHpkemN6ZHpjemR6ZHpke2R7ZHtjemR7ZHpke2R7ZHtke2R7ZHpke2R7ZHtke2R7ZHtke2R7ZHt0e2R7dHt1e3R7dXt0e3R7dHt0e3V7dXt1e3V7dHtke2R7ZHtke2R7dHtke3R7ZHtke2R7ZHt0e3R7dHt0e3R7dHt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXx1e3V8hXuFfIV8hnyGfIZ8hnyGfIV8hnyGfIZ8hnyGfIZ8hnyFe3V7dXt1e3V8dXyFfIV8hXt1e3V7dXyFfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyHfJZ8hnyGfIZ8hnyHfJZ8l3yXfJd8l3yXfJd8l32XfZd9l3yXfJd8l32XfZd9l32XfZZ8hnyGfId8l3yXfJd8l3yWfId8lnyHfJd8l3yXfJd8l3yXfZd8l32XfZd9l32XfZd9l32XfZd9l32YfZd9mH2XfZd9l32XfZh9mH2ofZh9p32YfZd9mH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2Yfah9mH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal+qH2ofah9qX2pfql+qX6pfrh9qX2ofal+qX6pfrl+uX65fql+qX6pfrl+uX65frl+uX65frl+uX65frl+uX66frl+uX65frl+uX66frp+un65fql+uX6pfrl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+un66frp+un65frp+uX66frp+un66frp+un66frp+un66frp+yn66fsp+un66frp+un7Kfsp+yn7Kfsp+yn7Kf8p/yn/Kf8t/yn7Kfsp+yn/Kf8t/yn/Lf8p+un66frp+yn7Kfsp+yn7Kfsp+yn7Kfsp+yn7Kfsp/yn/Kf8p/yn/Lf8t/y3/Lf8p/y3/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/23/bf8t/y3/Lf9t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf8t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/cf9t/3H/bf9t/23/bf9t/3H/bf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/23/cf9x/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/23/cf9x/3H/cf9x/23/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/bf9x/23/bf9t/23/bf9t/23/bf9t/23/bf9t/y3/bf9t/23/bf9t/y3/Lf8t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y37Lfst+y37Lfst/y37Lf8t+y37Lfst+y37Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+y37Kfst+y37Lfst+y37Kfsp+yn7Lfsp+y37Kfsp+yn66fsp+un7Kfrp+un66frp+un66frp+un66frp+un66frp+un66fsp+yn7Kfsp+un66frp+un7Kfsp+yn66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66fbp9un66frp+un26fbp9un26fbp+un26frp9un26fbp9un26fbp9un26fbp9uX26fbl9un26fbp9uX25fbl9uX25fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp9uX25fbl9qX25fap9uX25fbl9uX2pfal9qX2pfbl9uX25fal9qX2pfal9qX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfal8qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qXypfKl8qX2pfal9qX2pfKl8qXyofKl8qXypfKl8qHyofKh8qHypfKl8qXyofKh8qHyofKh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyZfKh8qHyofKh8qHyYfKh8mHyofKh8qHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd8l3yXe5d7l3uXe5d7h3yXe5d7l3uXe4d7h3uHe4h8mHyYfJh8mHyXfJd8l3uYfJh8mHyYfJd8l3uXe5d7l3uXe4d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uGe4Z7hnuHe4d7h3uHe4Z7hnuGe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuHe4Z7h3uGe4Z7hnuGe4Z7dnuGe4Z7hnuGe4Z6dnt2enZ7hnuGe4Z6dnp2enZ6dnp2e4Z7dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enV6dXp2enZ6dnp2enV6dXp1enV6dnp1enZ6dXp1enV6dXp1enV6dXp1enV6dXp1emV6dXplemV6ZXplemV6ZXpleWV5ZXplemV6ZXlleWV5ZXlleWV6dXp1enV6dXplemV6ZXplenV6dXp1emV6ZXplemV6ZXplemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHlleWR5ZXlleWV5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5ZHlkeWR5VHlUeVR5VXlkeWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlkeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR5VHhTeFN4U3hTeFR4U3hTeFN4U3hTeFN4U3hUeVR5VHlUeVR5VHhUeFR4VHlUeVR5VHhUeFR4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hTeEN4U3hTeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEN4Q3hDeEN4QnhCeEJ4Q3hDeEN4QnhCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Q3hCeEJ4QnhCd0J3QndCd0J4QndCeEJ4QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCd0J3QndCd0J3MncydzJ3QndCd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MncxdzJ3MncydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXcxdzF3MXYxdzF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYxdjF2IXYxdiF2MXYxdiF2IXYhdiF2IXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdjF2MXYhdjF2IXYxdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdzF2MXcyeVJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpTelJ6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6YnpSelJ6UnpSelN6UnpTelJ6UnpSelJ6U3pTelN6U3pTelN6U3pTelN6U3pjelN6Y3pTelN6U3pTemN6Y3pjemN6U3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6ZHpkemR6ZHtke2R7ZHtke2R6ZHtke2R7ZHtke2R7ZHtjemN6Y3pjemN6ZHpkemR7Y3pjemN6ZHpkemR7ZHtke2R7ZHtke2R7ZHtke3R7ZHt0e2R7ZHtke2R7dHt0e3R7dHtke3R7ZHt0e3R7dHt1e3R7dHt0e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8dXt1fIR7dHt0e3V7dXt1e3V7dXt0e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fHV8hXyGfIV7dXt1e3V8hXyGfIZ8hnyFfHV8hXyFfIZ8hnyGfIZ8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyWfIZ8hnyGfIZ8h3yWfId8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfJd8l3yXfJd8lnyHfJZ8h3yXfJd8l3yXfJd8l3yXfJd8l3yXfZd9l32XfJd8l3yXfZd9l32XfZd9l32XfZd9l32YfZh9qH2Yfad9mH2XfZh9mH2ofah9qH2nfJd9l32XfZd9l32XfZd9l32XfZd9l32XfZh9l32YfZh9mH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qX2pfql+qX65frl+uX2pfql+qX65frl+uX65frh9qH2ofah9qH2pfah9qX6ofah9qH2ofal9qX6pfql+uX6pfrl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+uX66frp+un66frp+un66fsp+un7Kfrp+un66frp+un7Kfsp+yX65frl+un66frp+un66frl+un65frp+un66frp+un66frp+yn66fsp+yn7Kfsp+yn66fsp+yn7Kfsp/yn7Kf8p+yn7Kfsp+yn/Kf8p/yn/Kfsp+yn7Kf8p/y3/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Kf8p/yn/Kf8t/y3/Lf8t/yn/Lf8p/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/23/Lf8t/y3/Lf8t/23/bf9t/y3/Lf8t/23/bf9t/23/bf9t/23/bf9t/23/bf9x/23/bf9t/23/bf9x/3H/cf9t/y3/bf8t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/cf9t/3H/cf9x/3H/bf9t/3H/bf9t/23/bf9t/23/bf8t/23/Lf9t/23/bf9t/23/Lf8t/zH/cf9x/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/y3/bf9t/y3/Lf8t/y3/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y37Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lf8t/y3/Lfst+y37Lfst+y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfsp+yn7Kfsp+y37Lfst+yn7Kfsp+yn7Kfrt+y37Lfst+y37Lfst+y37Lfst+y37Lfst+yn7Lfsp+yn7Kfsp+yn7Kfsp+un66frp+yn66fsp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un26fbp9un26frp9un26fbp9un26fbp9un66frp+un66frp+un66frp+un66frp+un66fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9uX26fbp9un26fbl9uX25fbl9uX25fbl9uX2pfal9qX2pfal9uX2pfal9qX2pfal9qX2qfbl9un25fbl9uX2pfbl9qn25fbl9uX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfKl8qXypfKh8qHyofKh8qXypfKl8qHyofKh8qHyofJl9qX2pfal9qX2pfKl8qXypfal8qX2pfKl8qXypfKh8qXyofKh8qHyofKh8mHyYfJh8qHyofKh8qHyYfJh8mHyYfKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJd8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd7mHyYfJh8mHyXfJd7l3uXe5h8l3uXfJd7l3uXe5d7l3uHfJd7l3yXe5d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe5d7h3uXe4d7h3uHe4d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7hnuGe4d7h3uHe4Z7hnuGe4Z7hnuGe4Z7hnuGe3Z6dnp2enZ6dnuGe3Z7hnp2enZ6dnp2end7hnuHe4Z7hnuGe4Z7hnuGe4Z7hnuGe4Z7hnt2e3Z6dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1enV6Znp2enZ6dnp2enV6dnp1enZ6dnp2enZ6dXp1enV6dXp1enV6dXp1enV6dXplemV6ZXp1enV6dXplemV6ZXplemV6dXplemV6ZXpleWV6ZXllemV6ZXplemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWV5ZXlleWV5ZHlkeWR5ZHllemV5ZXpleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlkeVR5ZHlkeWR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5ZHlkeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR5VHlUeVR5VHhTeFR4U3hUeVR4VHhUeFN4U3hTeFN4VHhTeFR4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hDeFN4U3hTeFN4U3hDeEN4Q3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4Q3hDeEN4Q3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4Q3hCeEN4Q3hDeEJ4QnhCeEJ4QndDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4QnhCeEJ4QnhCd0J3QndCeEJ4QnhCeEJ3QndCd0J3QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3MndCdzJ3MncydzJ3MndCdzJ3QncydzJ3MncydzJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcydzF3MncydzJ3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MXcxdzF3MXcxdzF3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXYxdjF2MXYxdjF2MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdiF2MXYhdjF2MXYxdjF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2MXYxdjF2MXYxdiF2MXYhdjF2MXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdjF2MXYxdiF2MXYhdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdzF2MXcxdzF3MXcydzF3MncxdiF2MXYxdjF2MXYxdjF3MXYxdjF2MXYxdjF3MXYxdzF2MXcxdzF3MncydzJ3MncxdzJ3MXcydzJ3MncydzJ3MnpTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pjelN6Y3pTemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pkemN6U3pTelN6U3pTemN6Y3pjelN6U3pTelN6Y3pjemN6Y3pjemN6Y3pjemR6ZHpke2N6Y3pjemN6ZHpke2R6ZHtjemR6Y3pke2R7ZHtke2R7ZHpke2R7ZHtke2R7ZHtke2R7ZHt0e2R7dHt0e3R7dXt0e2R7dHt0e3R7dXt1e3V7dHtke2R7ZHtke2R7dHtke3R7ZHtke2R7ZHt0e3R7dHt0e3R7dHt1e3V7dXt1e3V7dHt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXt1fIV8hnyGfIZ8hnyGfIV8hnyFfIZ8hnyGfIZ8hnyFe3V7dXt1e3V7dXyFe3V8hXt1e3V7dXyFfIZ8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfJZ8hnyGfIZ8hnyHfJZ8l3yXfJd8l3yXfJd8l32XfZd9l3yXfJd8l32XfZd9l32XfZZ8hnyGfIZ8hnyXfJd8l3yWfIZ8lnyHfJd8l3yXfJd8l3yXfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9mH2XfZd9l32XfZd9mH2ofZh9p32XfZd9mH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9p32Yfah9mH2ofah9qH2ofah9qH2ofaeKiH2ofaa2VrVYfah9qH2ofah9qX2ofal9qH2ofaa1VrVZfal+qIuJfah9qX2ofal+qX6pfrl+qX65fal+qX6pfrl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX66frl+un65fql+uX6pfrl+uX65frl+uX65frl9qX65frl+uYynmXl+uX65frl+un66frp+un65frp+trVWtVp+un62tVa1Wn66frp+un66frp+yn66fsp+un66frp+un66fsp+yn7Kfsp+yn7Kfsp+yn/Kf8p/yn7Kfsp+yn/Kf8t/yn/Lf8p+un66frp+yn7Kfsp+yn7Kfrp+x7VXtmp+yn7ImYp+yn7Kf8p+yn/Kf8t/y3/Lf8p/yn/Kfsp+y3/Lf8mamJmKf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/y3/bf8t/y3/Lf8t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/ImYiZi3/Lf8mZiZmLf8t/23/bf9t/23/bf9t/23/bf9mZiZqbf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/23/bf9x/3H/cf9x/23/cf9t/23/cf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/ZmZe2bH/cf9x/3H/cf9x/3H/cf9x/3H/Xtme2bH/cf9i2aoysf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/23/bf9t/23/cf9t/23/bf9t/23/bf9t/3H/bf9t/23/bf9t/23/Lf8t/23/bf9t/23/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y3/Lfst/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst/y37Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+y37Kfst+y37Lfst+y37Kfsp+yn7Lfsp+y37Kfsp+yn66fsp+yn7Kfrp+un66frp+un66frp+un66frp+un66frp+un67fsp+yn7Kfsp+un66frp+un7Kfsp+yn66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un26frmMqn66frp+un66fbp9un26fbp+un26frp9un26fbp9un26fbp9un26fbp9uX26fbl9un26fbp9un26fbl9uX25fbp9un26fbp9un26fbp9un26fbp9uJh4mHp9un24mHiYen26fbp9uX25fbl9uX25fap9uX24mHl9qX25fal9qX2pfbl9uX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfal8qX2pfal9qX2pfKl8qXyofKl8qXypfal8qHyofKh8qHypfKl8qXypfKh8qHyofKh8qHyofJh8qHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyZfKh8qHyofKh8qHyYfKh8mHyofKh8qHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJd8mHyXfJd7l3uHe5d7h3yXe5d7l3uXe4d7h3uHe4h8mHyYfJh8mHyXfJh8l3uYfJh8mHyYfJd8l3uXe5d7l3uXe5d7l3uHe4d7h3uHe4d7l3uHe5d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uGe4d7hnuHe4d7h3uHe4Z7hnuGe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7h3uGe4Z7hnuGe4Z7h3uGe4Z7hnuGe4Z7dnuGe3Z7hnuGe4Z7hnt2enZ6dnp2e4Z7dnuGenZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enZ6dXp2enZ6dollllZ6dXp1llWWVnp1enZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXplemV6ZXplemV6ZXplemV5ZXplemV6ZXplemV5ZXlleWV6dXp1enV6dXp1emV6ZXplenV6dYllemV6ZXpleWV5ZXplemV6ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWWXVZZFeWV5ZXlleWV5ZHlleWR5ZXlleWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeVR5ZHlUeWR5ZHlkeWR5VHlUeVR5VXlleWV5ZHlkeWR5ZHlkeWR5ZHlllkWHVHlkeWR5ZHlkeWR5ZHlkeVR5VHlUeVR5VHlkeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHhTeFN4U3hTeFR4VHhUeFN4U3hTeFN4U3hUeVR5VHlUeVR5VHhUeVR4VHlUeVR5VHlUeFN4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hTeEN4U3hTeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEN4Q3hDeEN4QnhCeEJ4Q3hDeEN4Q3hCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Q3hCeEN4QnhCeEJ3QndCd0J4QnhCeEJ4QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCd0J3QndCd0J3MndCdzJ3QndCd0J3MncydzJ3Mncyd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcxdzJ3MncydzF3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MXcydzF3MXcxdzF3MXcydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXYxdzF2MXcxdzF3MXcxdjF3MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdjF2MXcxdzF3MXcxdzF2MXYxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXYxdjF2MXYxdjF2IXYhdiF2MXYhdjF2IXYhdiF2IXYhdjF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdiF2MXYhdiF2IXYxdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF2MXYxdjF3MXcxdzJ3MXYxdzF3MXcxdzJ3MXcydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QXcxdzF3MXcydzJ3MncydzF3MncxdzJ3MncydzJ3MncydzJ3MncydzJ3QndCd0J3Qncyd0J3MndCd0J3QndCd0N6U3pjelN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6Y3pkemN6ZHpke2R7ZHtke2R6ZHtkemR7ZHtke2R7ZHtjemN6Y3pjemN6ZHpkemR6Y3pjemN6Y3pkemR7ZHpke2R7ZHtke2R7ZHtke3R7ZHt0e2R7ZHtke2R7ZHt0e3R7dHtke3R7ZHt0e3R7dHt1e3R7ZHt0e3R7dHt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3R7dHt0e3V7dXt1e3V7dXt0e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXt1fIV7dXt1e3V7dXyGfIV8hnyFe3V8hXyFfIZ8hnyGfIZ8hXyGfIV8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8h3yWfId8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8l3yXfJd8lnyHfJZ8h3yXfJd8l3yXfJd8l3yXfJd8l3yXfZd8l32XfJd8l3yXfJd9l32XfZd9l32XfZd9l32XfZh9qH2V0zd9l32XfZeLhrVV8SXyNfEnfJd9l3yXfZd9l32XfZd9l32XfZd9l32XfZd9l32YfZd9lqZXfZXTRfEl8SXxJfEnfZXiOH2V8SXxJfEl8SXxJsRF8SXxJfEl8SXxJfEl8SXxJfEl8SXyNfEl4jamVZhl8SXxJfEl8SXxJsRF8SXxJeM18SWXZdM18SXxJfEl8SXxJcVF8SWnZZhkp1SnU6ZF4jSnVeI0pkOlQ7VDtUO1NKZUtUO1Q7VExDS1Q7VDtUO1Q7VDtUO1Q7VDtUSmRKZYjKenZ5h14zXxJfEl8SXxJqZV8jW1RfEl8SXxJfElxEXxJfEl8SXxJfEl8SXxJfEl8jXxJqhl8jXxJfEl8SXxJLVF4jO1RLVEtUWnVKZEplS1RLZEp1SmVKZUplSmVKdUp1XxJMRF8SXxJfEl8SXxJMQ18SXTNfEl8SXxJfEl8SXxJfEl8SXxJfEl8jXxJfEl8TXyNdM1plXxJfEl4jXiOKh5jKbTR6h18jXxJfEl8Sa2ZsVVp2XURfEl8SXxJfEkxDO1Q8QzxDO1RLVDxDO0Q8QyxDPEM8QzxDO0M8QztUS2VdM0tUXTNfEl8SXxJfEktUXTNLZV0zXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfI18Sa1VsRF8jaYdqdl8SXxJfEl8SbTSZqV8SXyNfEl8SXiNfEl8SXxJfEl8SXxJbZV8SS1VaZVtVTERfI18SXiNfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8jXxJfEl8SXxJfEkwzPDM8Q7fst+yo26jbt/23/bjst+x6d5jKa2Z5mJjKqNuIuZjKx/3H/bf9x/3H/cf9x/3H/bfst/2o27fsx/2oysf9mZhbVWqGS1RaZXmYiblqdnmYO0RLVDxDS1RaZnmXWmVph6jKuOyYyqjbt/2ZmLfsqNuIuajbibmo27fst+y37LfsuOxtNHxFXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SbFVfEl8SXxJfEl8SXxJfEl8SXiNtNHmYeYdfEl8SbFRfEl8SXxJfEl8SXxJtNF8SXxJ8VV8SqNtsVV8SXxJfE18SanZadl8SXiNbZVtUTERLVF8SXxJfEl8SXxJeI18SXxJtNKjLXxJ8Vbfst+yo26jbXyN6h1xEaoeIuZjKeZiJqLf8t/247Lfsx/3H/bf8t/2o26jbe2ZfI6i6mZhfEl8SW2VadktUS2Vqdmp2WnZrVUxES2VfElxEWnZqh1p2aodfEl8SXxJfEl8SXxJfI18jbTRfI3mYeneJqXqHbFVeI8f9x/3H/cf9x/3H/cf9t/23/bf9XxJtRLf8t/yoy7fst/23/bf9t/23/bf9t/23/bf9t/237G4jt/y3/F8SXyNfEl8SXxJfEm4jmLpfEmtVXyNfEl8SXxJfEl00XxJeI6jbXxKYuV8SXxJfEl8SXxJ5mF8SWnZeI18SXxJfEl8St/y3/Lf8t/y3/Lf8t/y3/Lf8t/yJmLfst/y37LfsbiO37Lfst+y37Lfst+y37Lfst+y37F8SbiO37LfsqMu37HtmqNt6h5jKqNtfEpjKXxJrZomoXERph4moXxJph18SXxJfEl8SXxKKh6jbeod6dl8SXxJfEl8SendeI2mHXxK37Lfst+y37Lfst+y37Lfst+y37Kfse1W37JmpXyNfErfst+y37Lfst+yn7Kfsp+yZqafrXxJfI6frp+t7VafbbURfEl8SXxJfEl8SXxJeI18SXxJfEl8SbER5mGtVXTRfEl8SXxJfEl8Sa1VfEl8jbERfEl8SXxJfEl8SXxJfI6fsp+un66frp+un66frp+un66frp9un26frp+un26fbp+un66frp+un23tmp9ttM6frp+un26fbp9teI6fbXxKYypjKiKiIuZfap9uIyZjKaYd5l1plWXZ4qIi5aZd4qKfbp9uX26fbl9tfEpfaXxKYypfaiLmXypfaXxKXyl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJeI18jWXZfEl8jXxJfEmtVl8pfEm1EXyNfElp1XyNfEl8SXxJfEl8SXxJfEl8SXTRKZV0zSlRfEl8SXxJfEl0zO1RdMztDSlRMQztEO0NfEl8SXyJfEjtDO0M7QztDTSNfEk0zXxKXypfKiLmIuZfKl8qHyYfKbER4qF8SanZ4uIi5aJd4qJfKl8qXyofKl8qHyofKh8qHyYfJbERfE3mXeZdfEl8SXxJdM18SXyNZhltUSmVcRF8SXxJfEl8SS0RKZUxDOlRfEl8SXxJfEl8SXxJeI18SXiNeI0pUW1RZhltVXTNfI4fKh8mHyYfJh8mHyYfJh8mHyYfJXxJsRIfJh8l4qIe5h8mHyYfJh8mHyYfJeJdeI4fJh8l4qF0za1VfEl8SXxJfEl8SXxJfEl4jeKhfEmplXxJfEl8SXxJfElwzXxJNM2p2XxJqZV8jXxJfEl8SXxJZdlmGSmRKZV4jXxJeI18SanZrVV8SXxJ3uHe4eJd3uF8SXiNfEl8SeKhop10zWJZ3uHe4d7h3uHe4d7h3uHe4aKdoqFmGXERnqGl2XxJfEl8SXxJfEl8jXxJbVF4jSlRfEktDXxI8MzpTOkMrQytDXDNfEl4jXxJfEl8SXxJeIztDXiMrQztDXTNJdUtDXSN3uHe4d7h3uHe4Z7h3uGe4aYZ3uF8SXxJnuGe4W0Rnp2e4Z7hnuGe4Z7dnp2enZ6dnp2e4Z6dnp2enZ6dnp2enXxJfEl8SXxJfElwzXxJfEktDXxJfIl8SXxJfEl8SXxJYlliXWWVYhlenZ6dYlliWS0RJdUwzOlRIhViGSWRIdWenZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enXERfEl0jXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJnp2enV6dXp2enV6dXp1eWWJZXp1iGV5ZXp1eWV6dZZV8SXxJfEl8SXxJfEl8SOzNfEl8SXxJfEl8SKkNfEitCXiNYhl8SXTNXlleWSIVIhV8SXxJfEl8SSlRJZF4jTSNXllwzWlRfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJOIl8SPSJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SPDJfEl8SPSJfEiwhLCJfEi0iXxJfEl4jXxJfEkeFR4VIhTiFXxJfEl8SXxJKQzhkO0MpU0eFR5U4hUeFR5VHlUeFR4U4dDh0KWM6UziFSHRfIl8SXxJfEl8SXxI8MipCLCIbMl8SXxJfEl8SPiIsIj4SPSI7Q18STiJfEl8SXxJfEl8SXxJfEl8SXxJfEilTTSIqQkeVR4VHhUeFR4U3hUeFN4VJVDeFXxJfEjeFN4VcMzh0N4U3hTeFN4U3hTeFN4U3hDeFN4U3hElkN4U3hF4iXxJfEl8SXiNfEl8SXiNfEl8SKVNMMypCGkJfEl8SXxJfEjh0SlNLMzpDXxJfEl8SXxJeIjtDXxIaQl8SXxJfEl8SN4Q3hDeEN4Q3hDeEN4Q3hDeEN4ReIzhkN4Q3hDeEOGQ3hDeEN4Q3hDeEJ4Q3hCeEN4Q3hF8SXxInhCeETDMndF8SOWNfEihjKHQ6UyhjOkNfEilTXxI7MilTOkMZQjsyXxJfEl8SXxJfEihzXxIoY18SXxJfEl8SXxIpU04iOzInhCd0J4QndCd0J3QndCd0J3QndCd0KGMndCd0TDNfEid0J3QndCdzJ3MncydzJ3M5UzhjXxJfEidzJ3NeIjpDKGNeIkwzXxJfEl8SXxJfEl8SXxJfEl8SXxI6Ql4iOzJfEl8SXiJfEl8SXxJfEl8SGVJOIk4iXxJfEl8SXxJfEidzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3NeIl8SJ3MncydzJ3MncydzJ3MXcydzJ3NeIjpDF3MoU14iXxI5QxhjTSI6Ql8SXxJfEl8STiIrMj0iGjFfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxIsIjsyXxIKMSshF3MXcxdzF3MXcxdzF3MXcxdzF3NeIihjF3MXcxdjF2MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXcxdjF2MXc18SOzJfEjwyGGIYYhhSGFJfEhpCGzEKMRlCGUIKMQlBF2IXYxhiGGIXYhdjF2IXYxhSGFIZQhhSGGIXYhhiF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdiF2MXYhdiF2IXYhdiF2MXYhdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYhdjF2MXYxdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYxdjF2IXYxdiF2MXYhdiF2MXYxdjF2MXYxdjF2MXYxdzF3MXcxdzF2MXcxdzF3MXcydzF3MncxdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF3MXcxdzF3MncydzJ3MncxdzF3MXcydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3MndCdzJ3QndCd0J3Q3dDd0N3QndCd0J3QndDd0N3Q3dDeEJ3MncydzJ3MndCd0J3QndCdzJ3Mncyd0J3QndCd0J3QndDd0J3Q3dDeEN4Q3hDeEN3Q3hDd0N4Q3hDeFN4Q3hTemR6Y3pkemR7ZHtke2R7ZHpke2R6ZHtke2R7ZHtke2R7ZHtke2R7dHt0e3R7dHt0e2R7dHt0e3R7dXt0e3V7dHtke2R7ZHtke2R7ZHtke3R7ZHtke2R7ZHtke3R7dHt0e3R7dHt1e3V7dXt1e3V7dHt1e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fIV8dXyGfIZ8hnyGfIV8hnyFfIZ8hnyGfIZ8hnyFe3V7dXt1e3V7dXyFe3V8hXt1e3V7dXt1fIV8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyHfJZ8h3yWfJd8l3yXfJd8l32XfJd9l3yXfJd8l3yXfZd9l32XfZZ8hnyGfIZ8hnyXfJd8l3yWfIZ8lnyHfJd8l3yXfJd8l3yXfJd8l32XfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9mH2YfZh9p32XfZd9l32YfZh9qH2ofah9lfEofZXjNfEl8SXxJfEofZXUSHyWp2XxJfEl8SXxJ32YfZh9mH2ofah9qH2ofah9mH2ofah9qH2ofah9qH2ofZeLiH2Xi5XyNfEmp2XxKH2njJh9qIyWioWmV4uGmXXyM7VF8STEM7VDtUO1M7VF8SXyNfEl8SO0M7VF8STTM7VEplSmVZhlp2WYZpl10zSnVpl1tUXURrVV8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfI18SSmVMM18SXxJNM14iXxJfEl8SXxJfEl8SXxJeI18SXxJNI00zXiNadTtUS2Rph1mGeKh4qFmGWYZ5qHmoeZeIyXtmiMqIuYi5iMqIyl1EXxJcRF8SXxJfEl8SXxJsVV8SbFVfEl8SXxJfEl8SeYeIuXmoeaiIyYjJeKiIuVmGaYdKZVp1aZd5qFmGaZdsVV8SbFVfEl8SXxJfEl8Sa2ZfEnmobFVfEl8Sa2VbVDtDO0NLVDtUO1RLZEtUWmVMREtUTERLVEtlWnZKZWqGWnVdRGqGbERfEl8SXxJfEmmXbER5mGxVXxJfEl8SXxJdM0tUXiNLVEplaoZLZVp2XxJLVExES1RLZVp2S2VadnmYbFV5mGxVXxJfEl8SXxJ5mHp2eZeJqV8SXxJ6dmtmXxJfEl8SXxJfEl8SXyNfEl8SXiNfEkxDPENOIzxDPDNfEl8SXxJfEk0zPENfEj0zXxJfEl8SXxJfEl8iXxJfEl8STTNfEl4zPEMsMzxDPDNfEl4jXFRMRDxDPEM7VDtETyJfEk4jXxJfEl8SXxJfEk0zXxJLVExEXxJfEkxETEQ8Q0tUPENLVFplaYdadnmYO0RLVUwzS2VqdnmYanaJqIi5qNuYuqjbt+yo27fse2aYyrjsmMq47Lf8bTS3/G00TiNLZV4jS2VqdomoWnZ5mF4jS1RMREtUWnZ5l1plaoeYyrjsmMqo27fsfFW37Jm6iLmo24mpqMq37LjcuOyo2200iahfEntmaoddRHmHWmZfEm4zXxJfEnmYWnZeM2tVXyNfEktUTDNfEl8SXyNfEktlS1RbVVxETTNfEl8jXxJfEl8SXyNfEl8SXxJfEl8SiZhfI5jKialfEl8Sa1VdNF8SXxJfEl8SXxJfEl8SXxJfEl8SXiNdM18SXxJNM0xEXxJfEl8SXxJadmmHW1Vqdl8SXxJfEl8SXTRcRExEXiNqdl8jXxNfEl8SXxJfEl8SXxJfEl8SXxJfEl00XyNbZV8SXxJfEk0zS0ReMzxETDNOIzxDO0Q8QzxDPEM8QzxDXxJfEl8SXxJfEl8SXxJfEk0zXxI7REtUXxJfEkxDTDNfEl8SXxJfEl8SXiNfEl4jTERfEk0zXxJfEl8iXxJPIktlXjM7RE0zXxJfEl8SXxI8Q0wzPDM8Q18SXxJfI18SXxJfEl8SXxJfEl8iXxJfEl8SXxJNMz0zXxJfEj0iLDMsMzxDLDM8Q00zXxI7RF8jLDM8QzxDO0M7RExES1RLZV0zWnZfI0tlW1VfEl00XxJfEkxDXxJfEl8jXxJfEl8SXxJeI18SXTNbVV8SXERfEl8SXERfI0tUTERfEkxEXxJfEl8SXxJfEl8SXxJfEl8jXxJfEktUXTNfEjwzTEM7Q00zO1Q7QztDO0RfIjtDTTM8QzxDPEM8QztDO0Q7REtUXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJOI04jPDNfEl8SXxJeI18STDM9MzxDPDMsMywzLDIsM00jTiJfEl8SXxJfEl8SXxJfEl8SXxJOI18SS1RMRF8SXxJNM04jTiJfEl8SXxJfEl8SXxJOI18SXxJOI00jXyI8QzxDO0NLVEplO0NLVFl2eZdadWmHO0NLVDtDS1RaZWmHWmVph4i5mMp4qJjKl8pfEpjKXxJ4qIjJeKiIyZjKXxKYyl8SO0NKVDtUSmVadWmHWXZpl0tUSmVLVEplWXZ5l1l2eZd4qIjJeKiYypjKXxKYyl8SiLmIyYi5iMmIyl4ziMp5l18SXxJfEl8STTM7Q00zO0RfEl8SXxJfEl4jO1RfEjtDO0M7QztDO1RMM18STDNfEjtUSlQ7VExDXTNfEl8SXxJfEl8SXxJfEl8SXyJfEl8SXxJfEmplW1RfEl8STEM8M14jXxJfEl8SXxJfEl8SXxJfEl8SPDM8M18SXyI8MztDXxJfEl8SXxJMMztDTDM8M18SXxJfEl8STDNOIztDXiJMM18SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEk0zTiM7Q18SXiNfEkxDO0NeIjtDTSNMQztDO0M7QytDKzMrQytDXxJfEl8SXxJfEl8SXxJfEk0iXxIrQytDXxJfEjwzPDJfEl8SXxJfEl8STSNfEk4iTiNfEk4iXxJfEk8iXxJPEjtDOlQrQztDXxJfEl8SXxIsMitDLDIrMl8SXxJfIl8SXxJfEl8SXxJfEk8SXxJPEl8SXxI9Ij0iXxJOEi0iHCIsMisyLDIrMl4iXxJeIl8SLDIrMiwyKzJOIl8SOzNNI18SPDNfEjwyKzIrMisyKzJfEjwzXxJNIisyK0IrQytDK0NMMzwyXxJfEl8SXxJfEl8iXxJfEl8SXxJfEl8SXiNfEk4iXxJfEitDK0M7QytDXxJNIztDK0M7QytDK0MrQ18SXxJNI18SXxJfEl8SXxI6Q00jOkM6U18SXxI6QzwzXxJfEl8SXxJfEl8SXxJfEjtDTiIqQ18iXxJfEl8SXxJNIipDTSIrMjpUSWQqQzlkPiIrMj4iHDIrQzpTKzI6U18SXxJfEl8SXxJfEl8SXxJfEl8SPDI9Il8SXxItIi0iPiIcIk4iHCIrMipTKzIqQ04SHCIcIRwyKzIqQysyKkNIhViWSHVYhleWWWVXllllSXRIhTlkSIVYlliFWJZYll8SXxJfEl8SXxIrMl8SPDJfEl8SXxJfEl8SPDJfEk0iOWRIdTlkSHVYhliWSIZIljlkSHU5ZEh1SIZIlkiGSJZfEl8SXxJfEl8STiJfEl8SXiNfEklkSkNfEl8SO0M7MhsyXxIbMk8SXxJfEl8SXxIbMj0iGzIcIl8SXxJOEl8STxIcIT4SHCEtIV8SPhJfEj0iHCEcIRwhPhJfEk4SXxIbMhsyGzIbMhsyGzIbMhsyKzIbMhsyGzIbMhsyGzIqQhsyGzEbMhsyTxJfEl8SXxIqQjwyKkMqU18SXxI7MzsyXxJfEl8SXxI+Ej4iPhI+Il8SXxJfEl8SPhI+Ii0iLSJfEl8SXxJfEk0iGkI9IhsyXxJfEl8SXxJOIhsxXxI9Il8SXxJfEl8SLSIcISwiHCFfEl8SPDIsIhwhHCEbMRshXxJfEj4iXxJfEl8SXxJfEhwhThIcIRshXxJfEiwiPSIaMhoyGzIbMk4iXxJPEl8SGzEbMiwiTiJfEl8SXxJfEl8SLDJfEiwiXxJfEk4iXxJfEhwhXxIbMT0iXxIcIV8SXxJfEl8SXxJfEl8SXxJfEl8SXxJOEj0iXxIsIhwhGyFOIhsxKzIbMRshThIbIRwhGzEbIRshGyEbIRshGyEbMV8SPCJfEk4iGjI9IhsxTiJfEl8SXxJfEiwhXxJfEl8SXxJfEl8SXxJNIj0iPCI9Il8SXxJfEk4iGzE9IhshPSJfEl8SXxJfEl8SXxJfEl8SPSJfEhsxLCJfEk8SPSIcIV8SLCE+EgshCyEcIQshCyEcIQwhDCEMIQwhCyELIQshXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJOEl8SLRFfEl8SXxJfEl8SXxJOEhwhPRIcIQwQDBAMEC0RDBFfEl8SXxI+El8SXxJfEl8SXxIbIU4SCyELMV8SXxIsIT0iTxI+El8SXxJfEl8SXxJfEl8SXxJOEj4SXxJOEi0RDCEcIQshDCELIV8SXxJfEl8SLREMIU4SCyFfEl8SXxJfEl8SHCFfEgshCyELIQshCyFfEgshXxIcIQshCyELIQshThILIS0hCyFfEl8SXxJfEgshCyELIQshXxJfEiwhLCFfEiwhXxI9IgshCyELIQshXxJOEiwhGyELIQshCyEKMQshCyELIQshCjEKMQoxCjELIQshCyEKMQoxCTEKMRlCGUIYUhlCGFIYUhdiGFIXYhlCGFIYUhhSGGIXYhhiF2IKMQoxCjEJQRlCGFIYUhhSCjEZQgoxGUIYUhhiGFIYYhhSGGIXYhdiF2IXYhdiF2IXYhdjF2MXYxdjF2IXYxdiF2MXYhdjF2MXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdiF2MXYhdiF2IXYxdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdjF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdzF2MXcxdjF2MXYxdjF2MXcxdzF3MXYxdzF2MXcxdzF3MXcydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QXcxdzF3MXcxdzJ3MncydzF3MXcxdzJ3MncydzJ3MncydzJ3MncydzJ3MndCd0J3QncydzJ3MndCd0J3QndCd0J3MndCd0J3QndDd0J3Q3dCd0J3QndCd0N3Q3hDd0N4Q3hDeEN4Q3hDeEN4U3hTeFN4Q3hDeEN4U3hUeFN4VHhSd0N3QndDd0N4Q3hDeEN4Q3dDeEN3Q3hDeEN4Q3hDeFN4Q3hTeFN4VHhUeFR4VHhTeFR4U3hUeFR4VHhUeFR4VHtke2R7ZHt0e3R7dHt0e3R7ZHt0e3R7dHt1e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3R7dHt0e3R7dXt1e3V7dXt0e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXx1fIV7dXt1e3V7dXx1fIV8hnyFe3V8hXt1fIV8hnyGfIZ8hXyFfIV8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfId8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8h3yXfJd8lnyGfJZ8h3yXfJd8l3yXfJZ8l3yXfJd8l3yXfJd8l32XfJd8l3yXfJd8l32XfZd9l32XfZd9l32XfZh9l32Yfad9l32XfZd9mH2Yfah9qH2nfJd8l3yXfZd9l32XfZd9l3yXfZd9l32XfZd9l32YfZd9mH2XfZh9qH2ofah9qH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofaeLloqIjJeLiH2ofal9qX2ofaiMmX2ofah9qH2ofah9qH2ofah9qX2ofah9qH2ofah9qX6pfal+qX6pfal+qX65fal9qX65frl+qX65frl+uX65frl+uX61mGSmVpl1p2O1Q7Q0plO1R4qGmXiMl4qFp2SmVpl1mGO0M7QztDO0M7QztUO0M7VEtkO1Radlp1O1RLVFp1WnaH2ojJl9uX2ni5eKiI2ojKl+uX65frl+uX25fbp+un62mXaZeIuYi5aZdpl4i5iLmX25jap+un65jamNun66frS1RKZUtUSmVadmmXWoZ5mEplWnZahmmXaZd4qHmoiLl5qHmoeKh5qGmXWnZ5mGqGiLmIuZjKmMp5qWmXiMqIuXmoiLmIypjKiMqY2pjbp+uX26frp+yn7Kfst+yn7Lf8qNuo26fsp+yY25jKp+uo27f8t/y3/Lf8t+y37Lf8t/xLZUtlWnVaZUtlWnZadWqGaoZadnmYeZhqhmmXeZiJqHmYial5mIi5ial5mIi5eaiJqYi5mLqYypjKiLmo25jKiLmIuajbmNuIuZjKqNuo26fsp+y3/Lf8t+y37Lf8t/2Y26jbqOy37KjbqNu37Lfst/y3/Lf9t/23/Lf9t/23/Wp2W2Vph1p2S1VLVFplWmV5mGqHiLmJqGqHaod5mHmoS2VaZVp2anZaZUtlanZadmmHeZiJqIm5eZhph4m5iamYypjKqOyo25i6mLqo26jbt+y37Mf9x/237Lfsx/3H/ZjKmMqo27jsmMqYyrjsqNu37Lfsx/3H/bf8t+zH/cf9S1VLZVplWmVaZWqHWnZqh2qHaoZ5qHmYaod5mImoibmJqJjKiamYyqjsuNyo7LjsiLmoy5jKqNu47Lfst+y37JjKmLqo26jbmLqYyqjbqNy37Lfsx/3H/bfst+zH/cf9qNu37Lfst+y37Mf9t/3H/bf9x/3H/cf9x/3H/cf9x/2YyompqNuIuWmHWnZ5mGp2qNuYyrfsqNuJqXmXmMqJqUtlS1RaZUtVS1Q7VEtUO1RadlpleZhqh0tlS1Vqdlp2t/237Mf9t/2o25jKt+yo28f9x/3H/cf9t/23/Mf9t/2YuYmpqNuYynmYeZiYypi6t+y37Lf9t/2o26jbt+y37DtEPEQ7VEtUO0Q7VEtUS2VLVUtlWnZqdlplWnZph3mYS1RLVFplWmVLVEtUWmVLZWqHaYeJqImpaYdqdomoeZh5mHmomLqYyompmLmoyqjbqNuo3Lfst/y37Lfst/y3/JjKmMqo27frmMqYuqjbqNu37Lfst/y3/Lfst+y3/LfsO0Q8Q0tUO1Q8MzwzO0M7RFp2WmV5l2mHS1VLVWp2anY8QztUO1RLVUtVWmVaZVp2SmVadmqGaYdqhmmXeZiIqYi5iamoy5jKeah5mJjKmMqn7Kfst+y37Kfbp9u37LfseaiIqZjKmMqIuZjKmMqo26fbp9u37Lfsp+un7Lfst+xaZUplanZadktUO0RaZUtVeZdph4ipiKhphlp2eZh5lztDO0RLVEtUS1RKZUplWnZadVp2aYdpl2mGaZd5mIiomMqYyqfbqNuIuYi5qNuYyqfrp+u37Lfsp9un26fsp+uIqYi5mMqYyoi5mMqYypfbp9un26frp+un26fbp+un61plSmVphlp2S1Q7VFplSmV5l3mXiLmIuWmHWnZ4qGmXO0M8QztUO0Q8QztDO0M7VEplSlRphlp2S1RKZVp1WnaYypjKp9uX24i5iKiYypjKp9un26frp+un25fap9un23mYaZeIuYi5aZdpl4ioiKiXypjKp9un25jKmMqX25faS1RKZUpUWmVZdnmXaYZ4mEplWXZZdmmHaYd4qHioiLmIuYjKiLmXyofKiLmXyoi5iLmXyojJl8qXyoi5l8qHyXmXeKiIuYi5iLmIyYjJl8qXypfKl9uX2pfal9qX2pfal8qX2pfal9qX2pfKl9qXypfal9qX2pfal9qX2pfal9pol1l2eJhZhkpUO0NKZTtUeKhpl4i5eKhZdUpkaYZZdjtDK0M7QztDK0M7QztDO0M6VDtUSnVKZTtTO1RKZUpliLl4uIfKh8l4qGiXiLl4qJfKl8qX2pfKh8mHyYfKh8pph1mGeKh4qFmGWYZ4p3ioh7mHuYfJh8mIuYe5h8mHyStDK0M7QztDO0M7QztTOlQ7VDpUSmVJdUpkSmVZdlmGO0M7QzpUOlQ7QytDOlQ7U0l1SXVZhliGSXVKZFmGWXZZhmmGeKh4qGiXaJd4qHi4d7l3uYfJh8mHuYe5h8mHyWinaKd3uHe4aJdol3i4eKh3uXe5h8mHyXe4d7h3yXe4KzIsMitDKzMsMiwyKzIrMjpUOlNJdUllO0M7Q0pkSmQsMitDK0M7QytDOlM6UzpUOlM6VElkSXU6ZElkSXVJdViGWYZop2inWXZZdWiXaJd3uHe4d7h3uHeoZ6h3uHe4WYZYhmiXaJdYhliWaKdop2eoZ6h3uHe4Z6hnqHe4Z7g6UzpDOlQ6VDpDOkM6UzpTSWQ5ZEl1SXU5ZDlkSXVJdTpTOlM6VDpUOlMqQzpUOlM5ZElkSXVIdUlkOWRIdUl1WIZYhmiXaJdYhliGaJdol2enZ6dnuGe4Z6dnp2enZ6dYhliGWJdYl1iGWIZYl1iWZ6dnp2enZ6dnp2enZ6dnpytCKzIqQysyHCIcISsyGzI6VCpTSXU5ZCtDK0I6VDpTHCEbMhsyKzIrQipTKkM6UytCKkM6UzlUKlM5ZDlkSXVIhUh1WJZYlkl1SXRYhkiGV6dXl2enZ6dXlleWV6dXpzl0SXVIhUiFSHVIhUiGSJZXlleWV6dXpleWV5ZXpleWOWRIdTlkSHVIlleWSJZHlkh1SIVIhUiFV5ZXlleWV5ZIhTl0SIU4dClTKkM5ZCpDSIVIdUeWSIU5ZClTOHQ5ZEiGV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWR5ZIhUeWR5ZIhTh0R4VIhUeWR5ZHlkeWR5VHlUeWR5YrMhsyKkIqQipCKkMqQylTKlMqUzlkOWMpUzljOWQ4dClTKVM5ZDhkKVMpUzhkKWM4ZDh0OHQ4hTh0OGQ4hDh0OHQ4dEiFOIU4dDh0OIVIhUeFR4VHlUeVR4VHhUeVR5U4hTeFR4VHhTeFOIQ3hTeFR4VHhUeVR5U3hTeFR4U3hSpCGzIpUxpCGzIbMRoyGzIpUylDOGQpUypCGkIpUylTGzEbMRsyGjIbMRsxGjIaMhpCGkIpUylTKUIaQilTKVM4dDhkOIQ4dChjKGM4dDh0N4U3hDeFN4U3hDeEN4U3hShjKGM4dDh0KGMoYzh0OHQ3hDeEN4Q3hDeEN4Q3hDeEGzEbIRsyGzEbIRshGyEbIRpCGjIpUhlCGzEbMRpCGkIbIRshGyEbMRsxGjEaMhpCGjEaMhpCGUIaQhlSGVIoUyhjKVModChjKVMpUyhjKGM3dCd0N4Q3hCh0KHQ3hDeEKVMoUyhjKGMoYyhjKHMncyd0J3QndCd0J3QndCd0J3QaMhoyGUIZQhoxGyEaMhoxGVIZUihjKGMZQhpCGFIZUgshCyEbMRsxCyELMRsxGjEaMhoxGUIZQhoyGUIZQhlSKGMoYydzJ3MoYyhjJ3MoYyd0J3MndCdzJ3MncydzJ3MYUxhSKGMoYxhTGGMoYyhjJ3MncydzJ3MncydzJ3MncxoxGjEaQhlCGjELIRpCGjEZQhlSGFIYUhlCGUIYUhlSCyELIQsxCyEMIQshCyELIRoxCjEZQhlBCzELMRoxGjEYYxhjJ3MncxhjGGInYxhjJ3MncydzJ3MncxdzJ3MncxhSGVIYYxhSGUIZQhhSGFIXYxdjF3MXcxhjGGMXcxdjCyELIQshCjELMQoxCjEKMQoxCjEaMRlBCjEKMRlCGUIKIQshCjEKMQshCjEKMQoxCjEKMRlCGUIKMQkxGUIZQhlCGUIYUhhSGFIYUhhiGGIYYxdjF3MXYxdiF2MXYxdjGFIYUhhiGGIYUhhSGGIYYhdjF2IXYxdjF2IXYhdjF2MJMRlCCUEZQhhSF2IYUhdiGUIYUhhSGFIYUhdiGGIXYhdjF2IXYxdiF2MXYhdiF2IXYxdiF2MXYhdiF2IXYhdiGFIYYhhiF2IXYhdiF2IXYhdiF2IXYxdjF2MXYhdjF2IXYhdiF2MXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYxdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdzF3MXcxdzF2MXYxdjF3MXcxdzF3MncxdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF2MXcxdzF3MXcydzJ3MncxdzF3MXcydzJ3MncydzJ3MXcydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QndCd0J3Q3dCd0N3QndCd0J3QndDd0N4Q3dDeEJ3MncydzJ3Mncyd0J3MndCdzJ3Mncyd0J3QndCd0J3QndDd0J3Q3dDd0N4Q3hDeEN3Q3hDd0N4Q3hDeEN4Q3hTd0N4Q3hDeEN4Q3hTeFN4U3hDeEN4Q3hTeFN4U3hUeFR4VHhUeFR4VHhUeVR4VHlkeFR4VHhUeFR5VHlkeWV5Y3hDeFN4U3hTeFR4VHhUeFN4U3hTeFR4VHhUeFR4VHhUeFR5VHhUeWR5ZXlkeWV5ZHlUeWR5ZHlleWV5ZXlleWV7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fIV7dXyFfIZ8hnyGfIV8hXyFfIZ8hnyGfIZ8hnyFe3V7dXt1e3V7dXuFe3V8hXt1e3V7dXt1fHV8hXyGfIV8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyWfId8l3yXfJd8l3yXfJd9l3yXfJd8l3yXfJd9l32XfZZ8hnyGfIZ8hnyHfJZ8l3yWfIZ8hnyHfJd8l3yXfJd8l3yXfJd8l32XfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9mH2XfZh9p32XfZd9l32YfZh9qH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9p32YfZd9mH2Yfah9qH2ofah9mH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qH2ofah9qH2ofal9qX2pfqh9qH2ofal9qX6pfrl+qX64fal9qX2pfql+qX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65fal+qX6pfrl+uX65frl+uX6pfrl+uX65frl+uX65frl+uX65frl+uX66frp+un65frl+uX66frp+un66frp+uX66frp+un66frp+un66fsp+un66frp+un66fsp+un7Kfsp+yn7Kfsp+yn/Kf8p/yn7Kfsp+yn7Kf8p/yn/Kf8p+un66frp+un7Kfsp+yn7Kfrp+yn66fsp+yn7Kfsp+yn7Kf8p/yn/Kf8t/yn/Lf8p+yn/Kf8t/y3/Lf8t/y3/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf8t/y3/Lf8t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/23/Lf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/bf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/23/bf9t/3H/cf9x/23/bf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/bf9t/23/cf9t/3H/cf9t/23/bf9t/3H/bf9t/23/bf9t/y3/bf9t/23/bf9t/23/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/23/bf9t/23/Lf8t/y3/Lf9t/y3/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst/y3/Lf8t/y37Lfst+y37Lf8t+y37Lfst+y37Lfst+y3/Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfst+y37Lfst+y37Kfst+yn7Lfst+y37Lfsp+yn7Kfsp+yn7Kfrp+yn66frp+un66frp+un66frp+un66frp+un67fsp+yn7Kfsp+yn66fsp+un7Kfsp+yn66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp9un26fbp+un66frp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbl9un25fbp+un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9uX25fbl9uX25fbp9uX26fbl9uX25fbl9uX2pfbl9uX25fbl9qX2pfal9qX25fal9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfal9qX2pfal8qXypfKl9qX2pfal8qXyofKl8qHypfKl8qXypfKh8qHyofKh8qHyofKh8qHyYfJh8mHyYfJh8qHyYfJh8mHyYfJh8mHyZfKh8qXyofKh8qHyofKh8mXyofKh8qHyofKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyXfJd7l3uXe5d7mHyXe5h8l3uXe5d7h3uXe4h8mHyYfJh8mHyYfJh8l3yYfJh8mHyYfJh8l3yYfJd7l3uXe5d7l3uXe4d7h3uHe4d7l3uHe5d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuHe4d7h3uHe4d7hnuHe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uGe4Z7hnuGe4Z7h3uGe4Z7hnuGe4Z7hnuGe3Z7hnuGe4Z7hnt2enZ6dnp2e4Z7hnuGe3Z7dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2e4Z6dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dXp2enV6dnp2enZ6dXp1enV6dXp1enZ6dXp1enV6dXp1enV6dXp1enV6ZXp1emV6ZXplemV5ZXplemV6ZXplemV5ZXpleWV6dXp1enV6dXp1emV6dXplenV6dXp1enV6ZXplemV6ZXplemV6ZXlleWV5ZXlleWV6ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5ZHlkeWR5ZHlUeWR5VXlleWV5ZXlkeWR5ZHlkeWV5ZHlleWR5ZHlkeWR5ZHlkeWR5ZHlkeVR5VHlUeVR5VHlkeWR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHhUeFN4VHhTeFR4VHhUeFN4U3hTeFN4U3hUeVR5VHlUeVR5VHlUeVR4VHlUeVR5VHlUeVR4VHhUeFR4U3hUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hTeFN4U3hDeEN4Q3hDeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEJ4Q3hDeEN4Q3hCeEJ4QnhCeEJ4QndCeEJ3QndCd0J3QndCeEJ3QndCd0J3QndCd0J3Q3hCeEN4QnhCeEJ3QnhCd0J4QnhCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3MndCd0J3QndCd0J3MndCdzJ3QndCd0J3QncydzJ3Mncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXYxdzF3MXYxdzF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdjF2MXcxdjF3MXcxdzF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2MXYxdjF2MXYhdjF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2MXYhdiF2IXYhdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXcxdzF3MXcydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QXYxdzF3MXcxdzJ3MXcydzF3MXcxdzJ3MncydzJ3MncydzJ3MncydzJ3MndCdzJ3QncydzJ3Mncyd0J3QndCd0J3MndCd0J3QndCd0J3Q3dCd0J3QndCd0N3Q3dDd0N4Q3dDeEN4Q3hDeEN4U3hTeFN4Q3hDeEN4Q3hTeFN4VHhSd0J3QndDd0N3Q3hDeEN4QndDd0N3Q3hDeEN4Q3hDeEN4Q3hTeFN4U3hUeFR4VHhTeFN4U3hUeFR4VHhUeFR4U3hUeFR4VHhUeFR5VHhUeWR4VHhUeFR4VHlUeWR5ZHlkeWV5ZHlleWV5ZXlleWV5ZXlleWV5ZXlleWV5dXlleXR4VHhUeFR5VHlleWR5ZXlkeVR5ZHlkeWV5ZXlleWV5ZXlleWV5ZXlleXZ6dXl2enV5ZXl1eWV5dnp2enZ6dnp1e3V8dXt1fIV8hnyGfIZ8hXuFfIV8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8lXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8h3yWfJd8lnyGfIZ8hnyHfJd8l3yXfJZ8h3yXfJd8l3yXfJd8l3yXfJd8l3yXfJd8l32XfZd9l32XfZd9l32XfZh9l32YfZd9l32XfZd9mH2Yfah9mH2nfJd8l3yXfZd9l32XfZd9l3yXfZd8l32XfZd9l32XfZd9l32XfZh9mH2ofah9qH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2pfal+qX6pfql+uH2pfqh9qX6pfql+uX65frh9qH2ofah9qH2ofah9qX2ofah9qH2ofah9qX2ofal+qX6pfql+qX65frl+uX65frl+qX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX66frl+un66frp+un63j5p+uY6qfrp+un66frp+un66frp+uX65frl+uX65frp+uX66frl+uX65frp+un66frp+un66frp+un66frp+yn66fsp+un66fsp+un7Kfsp+yn7KfsHfEd8TvzO/Md8R3xHvEP8Kfrp+un65fbWuYP8FrmD/Ad8R3xD/Ae8R3xHfE88zzzD/Ba1g/wSsWIuYi5eah5qKfrmNun65jbWtYP8FrWD/Cn66fbp+yn61rWD/Ba5g/wD/BLtA/wO6Rph2mHWnZadg/wO6QP8DukWnZadlp1WnaI6bfsiNmo27fst/yn67fsmMqYyomoiLmo26jrmMqo27f8t/y3/Lf8t/23/bf9t/237Lf8p+y3/Lf9t/23/cf9aZd5qGqHeZiIuZjKebg75GqGeZhqhnmYPNMP8Ii5LfKo27fsHfI79Lf9x/23/Gn3D/AP8A/wD/AP8A/wD/AP8Lf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/23/cf9x/23/Yn4HvFa9g/wD/Ad8Q/wD/AP8Mf9x/2o+8f9x/3H/cf9qPsP8Gr2D/Ae8bfsO/So25jqx/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/1q9jzzx/3H/R3xx/0P8A/wWuYP8A/wWvUP8A/wx/3H/aj7effH/cf9efeY+g/wD/AP8DzjD/AP8B7xD/DH/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/Tzzt+wP8Czzt+y37KjbqNvH/cf9x/3H/cf9x/3H/cf9t/y3/bfsefiJ+B3xD/AP8Mf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/3H/cf9x/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/Lf9t/zH/cf9ifh598f9t/1595j5D/AP8A7wS/QP8A/wLPMP8Lf9t/23/Lf8t/y3/Lfst+ws8pjqD/Ae8bfst+yoy6jbt/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y3/Lfst/y37Lfst+y37Lfst/y37Lfst+y37Lfst+y37Lf8t/y37Gn3t/y37Fr2O/S37A/wqNt56A/wD/Bp5x3yt+y37B7xLfK37Lfst+y37A/wHfEP8B7xidge8Q/wD/C37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+yn7Kfsp+y37Lfst+y37Kfsp+yn7Kfst+y37Hnoafe37LfsmOqn7A/wD/As4h7xD/A78w/wD/C37Kfsp+un66fsp+yI6Vr2p9un25jKmMod8Q/wedha5qfsp+yn7Kfrp+un66frp+un63nnp+tp5g/weecP8Gnmp+un66frp+un66fbp9un26fbp9un25fbp9un25fbl9un6yzzLPIP8A/wWeYP8DvkD/AP8FrWD/AP8A/wD/As05jKmMpa1VrVl8qXylrViMkP8A/wS7Q7tA/weKhKpXmXp9un26fbp9un26fbp9un26fbl9un25fbp9un26fbl9un25fbl9uX25fal9qX2pfal9uX2pfbl9qX2pfal9qX2pfal9qXypfal9uX25fal9qIuYjKeKiIuZfal9qXyojZl9qX2pfal9qX2pfaeNhZ5ojZLPIO8Q/wD/AP8A7wOuSX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfKl8qHypfKh8qXypfKl8qXyofKh8qHyofKl9qX2lnmadeX2pfKl8qXyg/wD/A75B7xHfFZ1g/wD/CXyofKh8qHyofKh8qHyVnVh8mHyVnGeLiHyQ/weLlZxofKh8qHyofJh8mHyYfJh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJSuUr44fJh8kO8B3xD/AP8EnVHfEP8B3xD/AP8IfJh8mHuXe5h8mHyVnWSdVZxQ7wD/AP8A/wD/Ac4g7wh8mHyYfJh8l3yXe5d7l3uYfJd7l3yXfJd7l3uHe5d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHfJd7lox3e4d7l3uHe4d7gP8CvjD/AP8He4d7hop2ind7h3uHe4d7h3uHe4d7h3uHe4d7hop2eod7h3uGe4Z7h3uHe4d7h3uHe4d7h3uGe4d7h3uHe4d7h3uGe4d7hnuGe4Z7hnuGe4Z7hnp2e3Z6dnuGe4Z7hnt2e3Z6dnp2end7h3uHe4d7hnuGe4Z7hnuHe4Z7hnuGe4Z7hnuGe4Z7hnuGe3Z7dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp2enV6dnp1enV6dXp1enV6dnp2enZ6dnp2enZ6dnp1enZ6dnp2enZ6dnp1enV6dXp1enV6dXp1enV6dXplenV6ZXp1enV6dXp1emV6ZXplemV6dXplenV6ZXplemV6ZXplemV6ZXplemV6ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWV5ZHllemV6ZXpleWV5ZXlleWV5ZXpleWV6ZXlleWV5ZXlleWV5ZXlleWV5ZHlkeWR5ZHlleWV5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5ZHlkeWR5ZHlUeVR5VHlUeWR5VHlkeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHlUeVR5VHhUeFR5VHhUeVR4VHlUeVR4U3hUeFN4VHlUeFR5VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeFN4U3hTeFN4U3hDeEN4RHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeEN4Q3hTeEN4Q3hDeEN4Q3hDeEN4U3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEN4Q3hDeEN4Q3hCeEJ4QnhDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4QnhCeEJ4QndDeEJ4QnhCeEJ4QndCd0J3QnhCeEJ4QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3MncydzJ3MndCdzJ3QncydzJ3MncydzJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MncydzJ3MncydzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzF3MXcxdzF3MncxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF2MXYxdjF2MXcxdzF2MXYxdjF2MXYxdjF2MXYxdzF2MXYxdjF2MXYxdjF2MXYxdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2MXYxdjF2MXYxdiF2IXYxdjF2MXYxdjF2IXYhdjF2MXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2MXYxdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF2MXYxdjF3MXcxdzF3MXcxdiF2IXYhdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF3MXcydzJ3MncxdzF3MXcydzJ3MncydzJ3MXcydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Qncyd0J3QndCd0N3QndCd0J3QndCd0N3Q3dDeEJ3MncydzJ3Mncyd0J3MndCdzJ3MncydzJ3QndCd0J3QndCd0J3Q3dDd0N4Q3hDeEJ3Q3dDd0N3Q3hDeEN4Q3hDd0N4Q3hDeEN4Q3hTeEN4U3hDeEN4Q3hTeFN4U3hUeFN4VHhUeFR4VHhUeFR4VHlkeFR4VHhUeFR4VHlkeWR5Y3hDeFN4Q3hTeFR4VHhUeFN4U3hTeFR4VHhUeFR4VHhUeFR4VHhUeVR5ZXlkeWV5ZHhUeWR5VHlleWV5ZXlleWR5ZXlkeWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5dXl2eXV5dnp2enZ6dnp2enZ5dnp2enZ6dnp2eoZ6d3qFeWV5ZXlleWV5ZXl1eXZ6dXlleWV5ZXl2eXZ6dnp2enZ6dnp2enZ6dnqHeod6h3uGenZ6hnp3eod6h3uHe4d7hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfId8lnyXfJd8l3yXfJd9l3yXfJd8l3yXfJd9l3yXfZZ8hnyGfIZ8hnyHfJZ8l3yWfIZ8hnyGfJd8l3yXfJd8l3yXfJd8l32XfZd9l32XfZd8l32XfJd9l32XfZd9l32XfZd9l32XfZd9mH2XfZh9l32XfZd9l32XfZh9qH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9p32XfZd9mH2Yfah9qH2ofad9mH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qH2pfqh9qH2ofal9qX2pfql+qX6ofal+qH2pfql+qX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65fal+qX6pfrl+uX65frl+uX6pfrl+uX65frl+uX65frl+uX65frl+uX66frl+un65frl+uX65frp+un66frp+uX66frl+un66frp+un66frp+un66frp+un66fsp+un7Kfrp+yn7Kfsp+yn7Kfsp/yn7Kfsp+yn7Kf8p/yn/Kf8p+un66frp+un66fsp+yn7Kfrp+un66fsp+yn7Kfsp+yn7Kfsp+yn/Kf8t/yn/Lf8p+yn/Kf8p/y3/Lf8t/yY+6fsp+un7KfsWuYP8GrmD/C3/Kfst/y37GrmD/Bq5g/wD/BLpA/wS7Radlp2WnZadg/wS7QP8Eu0WnZadlp2Wna3/Lfst/y3/GrnD/Bq5w/wt/y3/Dv0O/Rq5w/wHfIP8A/wS7QP8Eu0WnZadlp2WnYP8Eu0D/Ae4Vp2WnYtwi3Caod5mGmHeaiIuTzjiLk842mHeahph3momLk845i6POMP8A/wD/Ae8WrXS9V5qEu1D/Ae8Q/wHvFpl0ukaoc8pGmHiahph4momLo845i6PONph4moapZ5qJi6PONq1x7xD/Ae8Q/wHvFqhzyTaoc8kw/wHvEP8A/waoc8lEu0HtEP8A/wD/AP8DzTS9V5h0u1D/AP8A/wD/BadjukS2U8kw/wD/AP8A/wmLqYynmYiagP8A/wD/AP8GqGaodaZVp2D/AP8A/wD/BLVTyDS1Qsgw/wD/AP8A/wS2U8gyyjHcEP8A/wD/AP8EtlWmVLZVtlD/AP8A/wD/BLZVtlLbJbZZjKD/CJqQ/wD/Ae8Q/wS8V5lw/wanYP8A/waocP8Gp2ebiJuXmYeZeJqTzjeZdql2qGanZadlp2anZqdlp2WnZadg/wWnYP8A/wWnYP8EuVWnYP8Fp2D/AP8A7gD/AP8Fp2WnZadlp2WnZadmp2aodahWp2D/AtwmqHPMMO8A/wD/AP8A/wD/B5yJjKPNOJqQ/wD/Ae4Q/wLNJ5mC3Caoeo2x7xascP8A/wLfIP8GnXPNMP8CzSD/AP8Ii5D/B5mB7hD/AP8A/wLcJqdizDWnYP8A/wD/At0lqWanZph2p2PLMP8EuFD/AP8GmHD/BLlFp2HtFadkt1D/Ae4Q/gD/Co26jKmMqIuZjKiciJqXmoial5mHmXaYd5l2mHaYdqhw/wD/At4g/wPOOYyg/wialLtA/wS6QP8A/wWqYP8Eu0aodqhlp2WnZqhmqHaodph1p2WnYP8B3SaYdaph7hD/BLtA/wLdIP8A/wWoYP8Gp2D/AP8A/wHeI8w2qGeZdqhpjKqMuIuZi6qNs845i6PON5mImoaYd5mIipLON5qCzTD/AP8A/wD/AP8DvULdJphg/wD/AP8B7hWoVaZVplSmVqhmmHWnZqhnmYLNJphyzSWnZqdlqFLcJphyzSLNIe4Q/wHuEP8B7hWmVLZVp1SmUP8B7hD/AP8Fp2WmUtwi3Ceah5qGmGaYcs4lrGaYdpl1plWnVLZUplWnZphlplWnaIqYi5eZh5qIi5iLl4qIi5aYdpl2mHaZd5mHioeZh4qEtUSmVKZVplWnVphlp2aYdaZVp2O5RphmmHeZh5l4ipaZd5mHmoiKl4qIi5iLmIuYi5iLmYypfamMqYypfbp9uIuQ/weKgP8A/wS7QP8DukeKgP8HioD/AP8DuTD/A7o1p2WnVKZUplWXZphkplWXZKVEtUSlRLVEplWnVKZVp1iKgP8Ii5D/AP8DujD/A7pJjKDvCXyjvUD/Ad0Q/wD/BKZUpkSmVKZUplWXYd0Q/wWmVLhA7gD/AP8B3hD/A7s3mXeKhph3ioiLkr44i5D/BphniXaYd4qHioD/CIuQ/wD/AO8A/wLOJ4yIi5eKh4lw/wD/AP8A7wHvEe4Q7hDuFph3ioaZd4qIi5D/CIuQ7weJd4qGmXeKiIuTvTeLh4qA/wLMMP8B3RWXZKZUplSlQP8A/wDvAP8CuTOlQP8A/weKh4p2mXaYYP8A/wHeEP8A7hDuEO4A7gD/AP8A7gDuAs4ninDuFph3ioeKhol2iXD/BZdQ7RSmVZhlmGSmVZdUpkSlQ6VDpUSlRKVDtkD/A7VDpUHcEP8A7RD/AP8ByySlRKZB3BSlRKZUl1SmRJZSuDSlRKZEpkSmRJZTp0HMJ4qCziaJcs0g/wD/AP8A/waIYs0lmGLNIP8A/wD/AO4A/wOrQcwkllWYZJlUllSWU6dDpUOlQ6UzpUOlQ7QzpTWXYc0ll2HNIP8A7gD/AO4Fl1HNIc0g7wD/AO4A/wD/A6VDtDOlQ6UztDOlM6UzpUSmQ6VB3BHbE6VDpkK4NJZB3hOqRJdUl1WIZYlkl1WIY6VEpkOlQ6ZEllSXVJZUl1aJdop1iGaJdnp2eoaKdnp1iGWJZYhliWaJdnp2iXZ6c6VElkOmRJdUl1WXVZhliGSWVZhkl1WIZYhmiXaJdnp1iGWJdYlmiXaKdnp2enZ6dol2enZ6dnp2enZ6dnp2enZ7hnuGe4Z7hnuGe3Z7hnp2e4Z7hnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dXp1enV6dnp2enZ6dnp1enV6dXp1enZ6dXp1enV6dXp1enV6dXp1enV6ZXp1emV6ZXplemV6ZXplemV6ZXplemV6ZXpleWV6dXp1enV6dXp1emV6dXplenV6dXp1enV6ZXplemV6ZXplemV6ZXpleWV5ZXlleWV6ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VXlleWV5ZXlleWR5ZHlkeWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlUeVR5VHlkeVR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHhUeFN4VHhTeFR5VHhUeFR4U3hTeFN4U3hUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHhUeFR4U3hUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4U3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hTeFN4U3hDeEN4Q3hDeFN4Q3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4Q3hDeEN4Q3hDeEJ4QnhCeEJ4QnhCeEJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Q3hDeEN4QnhCeEJ4QnhCd0N4QnhCeEJ4QnhCd0J4QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCdzJ3Mncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3MndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MncydzJ3MncxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncydzF3MncxdzF3MXcydzJ3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXYxdzF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdzF2MXYxdjF3MXcxdzF2MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYxdjF2MXYxdiF2IXYxdjF2MXYxdjF2IXYhdjF2IXYhdjF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdiF2IXYhdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdjF2MXYxdjF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXYxdzF3MXcxdzF3MncxdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXYxdzF2MXcxdzJ3MncydzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MndCdzJ3QncydzJ3MncydzJ3QndCd0J3MndCdzJ3QndCd0J3Q3dCdzJ3QndCd0J3Q3dDd0N3Q3dDeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hTeFN4U3hSd0J3QndDd0N3Q3hDeEN4QndDd0N3Q3dDeEN4Q3hDeEN4Q3hTeEN4U3hUeFR4VHhTeFN4U3hUeFR4VHhUeFR4U3hUeFR4VHhUeFR4VHhUeVR4VHhUeFR4VHhUeWR5VHlkeWV5ZHlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleXR4VHhUeFR5VHlleWR5ZXlkeFR5ZHlUeWR5ZXlleWV5ZXlleWV5ZXlleWV5dXl2enV5ZXlleWV5dXl2enZ6dnp1eWV6dXl2enZ6dnp2enZ6dXl2enZ6dnp2enZ6hnp3eoZ6h3qHeod7h3uHe5d7iHuXeod7h3uHe4d7mHuYe5h7lnp2enZ6dnp2eod6h3qHeoZ6dnqGend6h3qHe4d7h3uHe4d7l3uIe5h7mHyYe5h8l3uYe5h7mHuYe5l8qHyZfKZ8h3yWfId8l3yXfJd8l3yWfJd8l3yXfJd8l32XfJd9l32XfZd9l32XfZd9l32YfZd9l32XfZd9l32Yfah9mH2nfJd8l3yXfJd9l32XfZd9l3yXfZd8l32XfZd9l32XfZd9l32XfZh9mH2ofah9qH2nfZh9qH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qX6pfal+qH2pfah9qX6pfql+uX6pfrh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal+qX2pfql+qX65frl+uX65frl+qX65fql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+un65frp+un66frp+un66frp+un66frp+un7Kfrp+yX65frl+uX65frp+uX66frl+uX65frl+un66frp+un66frp+un66frp+un7Kfsp+yn66fsp+un7Kfsp+yn7Kfsp+un7Kfsp+yn7Kfsp+yn/Kfsp+yn7Kfsp+yn/Kf8p/yn/Lf8p/y3/Lf8efi3/Lf8t/y3/Lf8t/y3/Lf8t/y37Kfsp+yn7Kf8p/y3/Kf8t/yn/Kf8p/yn/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/y3/Lf8t/y3/Lf8t/y3/Lf8t/wP8A/wt+yn6w/wD/CYyoi5p+yo66fsqNuYyompmMqJqA/wD/B5l2qGD/AP8Fp1WnVpl2p2eZdqhlp1WnZadlp2p+yo27fsqNuYyompmNuYyrfsp+y3/LfsqNuY27fsqNt5mGmHial5qGqGaoZ5mHmYmMqYuqjbqNuIuYi5qNuo20uleZhqhnmYPOMP8ImpiLlqhnmXaoZ5l4moibl5qImpD/AP8ImpeZge4Q/waodadompeZiJqXmYaodadmmHanZph3mYiaiJuYmoiLmYupjKmLqYyqjbqNuoy6jbqOy47Im5iaiYypi6eZhph4m5iaio26jLuOy47JjKmMqo26jbD/AP8EtlS2UP8A/wS2VLVVplW2VadlpmW2VLZVplWmUP8A/wS1RLZQ/wW2VLZVtlS2VLZVplWmVLZVplWmUtwmqHaoZ5mHmYanZqdnmYeZiYupi6qNuo25i6mLqo26jbanZqdnmYeZhqdkuleZh5mJi5mLmo26jbmLmYuajbqNtaZg/wWmYP8A/wLMMP8Gp2S5QP8A/wD/AP8EuUD/AP8A/wD/Badlp2D/AP8GqGaodadlp2LcJaZVp2WnZaZVp2LcItwnmYeZctwi3CaYdqdom5iaiYyoi5eZhqh3moeZc7lFtlWnZaZVplWnZadmp2WnZadmqHaodqdmmHaYd5mDzTeZdqh2mHaYdqdmqHanZqdmqGWnZqdmqHaoZqh2mHWnZadlp2WnZadR3CanZqdmqGaYd5l3mYaYdph3mYeZhadmqHaYd5mHmXeZiJqIi5eZiJqYmpmMqYupjKqNuo24moiLmYupjKiLmIuajLqMuo26jbt+y37Kfrp9u37LfsD/AP8Fp2anYP8A/waYdph2mHaod5mGmHaYdph2mHaYc803mYaZdph2mHanZph2p2aYdph2mHaoZph2qGaYdph4ipeaiYyoi5eZh5l4ipiaio25jKt+yn25jKmLqo26jbaYdph3moeahph3mXiaiIqYi5iLmYy5jKmLmYyqjbqNtLlA/wWnZqhg/wD/Bph3mXaoZph2mHeZd5l3mXeZh5mA/wD/Bph2mGD/AP8Fp2WmVph2mGaZdph1p2WmVadlpleZiIqIi5mLmIqXiomLqIuZjKmMqn26fbmMqYyqfbp9t5mGmHiKl5qGmGWnZ5l2mXmMqIuZjKmMqIuYipmMqYyh7RaYZadWmGeZeIuXmXiLladWmGWnZphmmXiKlpl3iomMqn25jKp9un26fbp9un25jKl9qIyZfap9un26fbp9tadmmHaZd5mHmXeKh4qIi5iKmIuZjKmMqIuZjKmMqXyoi5l8qYypfal9un25fbp9uXypfbl9qX25fbp9un25fbl9p4yJfaiLkd4g/weKhph5fbiMmX25jKeKhpl4i5eJgP8B3RWnZKZTujWXZKZVp1WXZadWmGWnZKZVp1WnVadafbl8qX25faiLl4qJjKiLmX25fbp9uX25fKiMmX2pfKaZdphnioeJdZdll2aZdpl4i5eKiXyojJeKh4qIi5iLlphniXWXZph3ioaJdol2iXWXZZhll2WYZpl2iXaZdol1mWLMJphll2D/AP8EplSmRpl1mGaJdpl1l1SmVZhll1WYZph2iXeJdol3ioeKh4uHioeLiIuYfJiLmHuYfJh8l4qHioeLl4uGiXWYZ4qGiXh8mHuYfJh8l4uXioh8mHuQ/wD/BKVEpUHcFKZEpkSmVKZEpkSmVKZUpkSmVKZUplSmVKZUplSWU7ow/wSXVZdkllSXVJdVl1WXVZhlmGWIZZdll1aJdZhll1WXVZhlmGeKhol3i4eKhol2iXeKh4qFl2WYZZhmiXWIZolmiXaJdol2ineKh4uGioeKh3uHe4D/AP8FmGWYYP8A/wWXVJZViGWYZYhlmGWXVJZVl1SWUP8A/wOmQ6VB2xSWQ6VElkOlQ6VDpkOlQ6VElkOlRJZGiXWIZol2iXWXZJdViGWYZ4p2ind7h3qGiXWJdoqGinSWQ6ZEl1SXVKZEllSXVZdViGWIZol2iXWIZYhmiXaKdJdViWSXVYhminZ6hop2eoSXVYhkl1WIZol2enaJdnp2e4Z7hnuGenZ6dnp2e4Z6dnp2enZ6dnp2enZ6dnp2enSXVYhliGWJZYl2enaKdnp1iWaJdop2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp2enV6dnp1enV6dXp1enV6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp1enV6dXplenV6ZXp1enV6dXp1enV6ZXplemV6dXp1enV6ZXplemV6ZXplenV6ZXplemV6ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHllemV6ZXplemV6ZXlleWV5ZXpleWV6ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWR5ZHlleWV5ZXlkeWR5ZHlkeWR5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeVR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5ZHlkeWR5ZHlkeVR5VHlUeWR5ZHlkeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHlUeVR5VHlUeFR5VHhUeVR5VHlUeVR4U3hUeFN4VHlUeFR4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4RHhUeFR4U3hTeFN4U3hTeFR4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hDeEN4Q3hTeFN4U3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEJ4QnhDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhCeEJ4QndDeEJ4Q3hCeEJ3QndCeEJ3QnhCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCd0J3QncydzJ3MncydzJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MXcxdzF3MncxdzF3MXcxdzF3MXcxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdzF2MXcxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXYhdjF2MXYhdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYhdjF2MXYxdjF2MXYxdjF2MXYhdiF2MXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYxdiF2IXYhdiF2IXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF2MXYxdjF2MXcxdzF3MXcxdiF2IXYhdjF2MXYxdjF2MXYhdjF2IXYxdjF2MXYxdjF2MXYxdzF3MXcydzF3MncxdjF3MXcxdzJ3MncydzJ3MXcydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Qncyd0J3QndCd0N3Qncyd0J3QndCd0N3Q3dDd0J3MncydzJ3MncydzJ3MndCdzJ3MncydzJ3MndCd0J3QndCd0J3Q3dDd0N4Q3dDeEJ3Q3dCd0N3Q3hDeEN4Q3hDd0N4Q3hDeEN4Q3hTeEN4U3hDeEN4Q3hDeFN4U3hUeFN4VHhTeFR4VHhUeFR4VHlUeFR4VHhUeFR4VHlkeFR5Y3hDeFN4Q3hTeFR4U3hUeFN4U3hTeFN4VHhUeFR4VHhUeFR4VHhUeVR5ZHlkeWV5ZHhUeWR4VHlkeWV5ZXlleWR5ZHlkeWV5ZXlleWV5ZXlkeWV5ZXlleWV5ZXlleWV5dXlleXV5dnp2enZ6dnp2enV5dnp2enZ6dnp2enZ6dnqFeWV5ZXlleWV5ZXl1eXZ6dXlleWV5ZXl1eXZ6dnp2enZ6dnp2enZ6dnp3eoZ6h3qGenZ6dnp2eod6h3uHeod7hnp3eod6h3qHe4d7l3uIe5d6h3uHe4d7h3uYe5h7mHuYe5h7mHuYfJl8qXypfKl8qHuZfKh8mXypfKl8qXypfKd7h3uXe4h7mHuYe5h7mHyXe5h7mHuYe5h7mHyofJl8qXypfKl8qXypfKp8uXyqfbl8qXypfKl8qny6fbp9un23fZd9l32XfZd9l32XfZh9l32XfZd9l32XfZh9qH2Yfah9mH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9p32XfZd9mH2YfZh9qH2ofad9mH2YfZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qH2pfqh9qH2ofah9qX2pfql+qX6ofal9qH2pfql+qX65fql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65fal+qX2pfql+uX65frl+uX6pfrl+qX65frl+uX65frl+uX65frl+uX65frl+un65frl+uX65frp+un66frp+uX66frl+un66frp+un66frp+un66frp+un66frp+un7Kfrp+yn7Kfsp+yn7Kfsp+yn7Kfsp+yn7Kf8p/yn/Kf8p+un66frp+un66fsp+yn7Kfrp+un66frp+yn7Kfsp+yn7Kfsp+yn/Kf8p/yn/Lf8p+yn/Kf8p/yn/Lf8t/y3/Kf8t/yn/Lf8t/y3/Lf8t/yn/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/23/bf9t/23/Lf9t/y3/bf9t/23/bf9t/y3/Lf9t/23/Lf8t/23/bf9t/23/bf9t/23/bf9t/237Lfst/3H/bfst+zH/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/23/bf9t/3H/bf9x/23/bf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/237Lfsx/3H/bf8t/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/3H/cf9t/y37Mf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bfst+zH/cf9t+y37Mf9x/3H/cf9x/3H/cf9x/3H/cf9t+y37Mf9x/237Lfsx/23/cf9x/3H/cf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9qNuYyrfsqNuYuYmomMqYurfst+y3/Lf8qNuo27fst+x5mHmYmLmIuYmoiLmYupjKqMuoy7jsqOyo26jbt+y37Mf9x/3H/cf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9t+y37Mf9x/23/Lf8x/23/cf9t/3H/bf9t/23/bf9t/2YyqjbqNu37Lfst+y37Lf8t+y37Lfst+y37Lf8t/y3/bfst/y3/Lf8t+y37Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/23/bf8t/23/Lf9t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/y3/Lf8t/y3/Lfst+y37Lfst+y37Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+yn67fst+yn7Kfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+yn7Lfst+yn7Kfbt+yn7Lfst+y37Lfst+yn7Kfsp+yn26fbp+yn66fbp9un66frp+yn66frp+un66frp+un67fst+y37Kfsp+yn7Kfsp+yn7Kfsp+yn7Kfsp+un7Kfrp+un66frp+un66frp+un66frp+un66frp+un66frp+uX25fbp+un66fbp9un66fbp+un66frp+un66fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp+un66frp9un26fbp9un26frp9un26fbp9un26fbp9un26fbp9un26fbl9uX25fbp9un26fbp9uX25fbl9uX2qfbl9uX25fbl9qX2pfal9qX25fbl9uX2pfal9qX2pfal9qXypfal9qXypfKl9qX2pfal9qX2pfal9qX2pfal9qX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfKl8qHypfal8qXyofKl8qHypfal8qXypfKl8qHypfKh8qHyofJh8qHyofJh8mHyYfJh8qHyYfJh8mHyYfJh8mHyZfKl8qXypfKh8qHyofKh8qXyofKh8qHyofKh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYe5h8mHyXe5d7mHyYfJh8mHyYfJh8mHyYfJh8mHyXe5d7mHyYfJd7l3uHfJd7mHyXfJh8l3uXe5d7l3uXe5h8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd8mHyXe5d7l3uXe5d7h3uXe4d7l3uXe5d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z6hnqHe4d7hnp2eod7h3uHe4d7h3uHe4d7hnuHe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuGe4Z7h3uHe4d7hnuGe4Z7hnuGe4Z6dnp2e4Z7hnp2enZ7hnp2e4Z7hnuGe4Z7hnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2e4Z7dnuGe3Z6dnp2enZ6dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enV6dnp2enZ6dnp1enV6dXp1enZ6dnp2enV6dXp1enV6dXp1enV6dXp1emV6ZXplemV6ZXp1emV6ZXplemV6ZXpleWZ6dXp1enV6dXp1enV6dXplenV6dXp1enV6dXplenV6ZXplemV6ZXplemV5ZXlleWV6ZXplemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VXlleWV5ZXlleWR5ZXlkeWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeVR5VHlkeWR5ZHlkeVR5VHlUeVR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR4VHhTeFR5VHhUeVR4U3hTeFN4U3hUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR4U3hUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeEN4Q3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hTeFN4U3hTeEN4Q3hDeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4QnhCeEJ4QnhCeEJ3QndCd0J3QndCeEJ3QndCd0J3QndCd0J3Q3hDeEN4QnhCeEJ4QnhCeEN4QnhCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCdzJ3Qncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3MndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncydzJ3MncxdzF3MXcydzF3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXcxdzF3MXYxdzF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdzF3MXcxdjF3MXcxdzF2MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYhdjF2MXYxdjF2MXYhdiF2MXYhdjF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYxdjF2MXYxdjF2IXYxdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXYxdzF3MXcxdzF3MXcxdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXYxdzF2MXcxdzJ3MXcydzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QncydzJ3MncydzJ3QndCd0J3MndCdzJ3QndCd0J3QndCd0J3QndCd0J3Q3dCd0N3Q3dDeEN3Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeFN4U3hSd0J3QndCd0N3Q3hDd0N4QndDd0J3Q3dDeEN4Q3hDeEN4Q3hDeEN4U3hUeFN4VHhTeEN4U3hTeFR4VHhUeFR4U3hUeFN4VHhUeFR4VHhUeFR4VHhUeFR4VHhUeVR4VHlkeWR5ZHlleWV5ZXlleWV5ZHlleWV5ZXlleWV5ZXlleXR4VHhUeFR4VHlkeWR5ZXlkeFR5VHhUeWR5ZXlleWV5ZXlleWV5ZXlleWV5dXl2enV5ZXlleWV5dXl2enZ6dnp1eWV5dXl2enZ6dnp2enZ6dXl2enZ6dnp2enZ6dnp2eoZ6d3qGeod6h3uHe5d7iHuXeod7h3qHe4d7mHuYe5h7lnp2enZ6dnp2end6hnqHeoZ6dnp2enZ6h3qHe4d6h3uHe4d7h3uIe5h7mHuYe5h8l3uYe5h7mHuYe5h8qHyZfKh7mHuYe5h8mXypfKl8qXyoe5h8qHyZfKl8qXypfKl8qXyqfLl8qn26fbp9un26fbp8un26fbp9un27fbp9u33IfKl8qXypfKl8qny5fKp9uXypfKl8qXypfLp9un26fbp9un26fbp9un27fct9y33Kfbp9un27fct9y37Lfct+yH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qX6pfal+qH2ofah9qX6pfql+qX6pfrh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal9qX2pfql+qX6pfrl+uX65frl+qX65fql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+un65frp+un66frp+un65frp+un66frp+un66frp+yX65frl+uX65frp+uX66frl+uX65frl+un66frp+un66frp+un66frp+un7Kfrp+yn66frp+un66fsp+yn7Kfsp+un7Kfsp+yn7Kfsp+yn/Kfsp+yn7Kfsp+yn/Kf8p/yn/Lf8p/y3/Lf8t/y3/Lf8p/y3/Lf8t/y3/Lf8t/y3/Kfsp+yn7Kfsp/yn/Kf8t/yn7Kf8p+yn/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/y3/Lf8t/y3/bf9t/23/bf8t/y3/Lf9t/23/bf9t/23/bf9t/23/bf9x/3H/cf9t/23/bf9x/23/cf9x/3H/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9t/23/bf9t/23/bf9t/23/bf9t/23/Lf9t/zH/cf9x/3H/cf9x/23/bf9x/3H/cf9x/3H/bf9t/23/bf9t/23/bf9t/23/Lf8t/y3/bf8t/23/Lf8t/y3/Lf8t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/y37Lfst+y37Lfst/y37Lfst+y37Lfst+y37Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+y37Lfst+y37Lfsp+yn7Kfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfst+yn7Kfsp+yn7Kfrp+yn7Kfsp+yn7Kfrp+un66fsp+yn7Kfsp+un66frp+un7Kfrp+yn66frp+un66frp+un66frp+un66frp+un26frp+un66frp+un26fbp9un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66fbp9un26fbp9un66fbp+un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbl9un25fbl9uX25fbl9qX2pfal9uX25fbl9qX2pfal9qX2qfbp9un26fbl9uX25fbl9un26fbp9uX25fbl9uX25fal9uX2pfbl9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfKl8qXypfKl8qX2pfKl8qXypfKh8qXyofKl9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfKl8qXypfKl8qHyofKh8qHyofKl8qHypfKh8qHyofJh8qHyYfKh8qHyofKh8mHyYfJh8mHyofJh8qHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyXfJh8mHyYfJh8mHyXfJd8l3uYfJh8mHyXfJd7l3uXe5d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uIfJd7l3yXe5d7l3uHe5d7h3yXe5d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuGe4Z7hnuGe4Z7hnt2e4Z6dnuGe4Z7hnuGe3Z6dnt2end7h3uHe4d7h3uGe4Z7hnuHe4Z7h3uGe4Z7hnuGe4Z7hnuGe4Z7hnp2enZ6dnp2enZ7dnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp2enV6dnp1enV6dXp1enV6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1enV6ZXp1emV6dXp1enV6ZXplemV6ZXplenV6ZXplemV6ZXplemV6ZXpleWV6ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHllemV6ZXplemV6ZXlleWV5ZXplemV6ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWR5ZHlleWV5ZXlkeWR5ZHlkeWR5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5ZHlkeWR5ZHlkeVR5ZHlUeWR5ZHlkeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHhUeVR5VHlUeVR4VHhUeFN4VHlUeFR5VHhUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4RHhUeFR4U3hTeFN4U3hTeFR4U3hUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeEN4Q3hTeFN4U3hTeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhCeEJ4QnhDeEJ4Q3hCeEJ4QnhCd0J3QnhCeEJ4QnhCd0J3QndCd0J4QndCeEJ3QndCd0J3QndCd0J3QndCd0J3QncydzJ3MndCd0J3QndCdzJ3MncydzJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3MndCd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcxdzF3MncydzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdzF3MXcxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYhdiF2IXYxdjF2MXYhdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXYhdiF2IXYhdiF2MXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF2MXYxdjF2MXYxdzF3MXcxdiF2MXYhdjF2IXYxdjF2MXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MncxdjF3MXcxdzF3MncydzJ3MXcxdzF3MncydzJ3MncydzF3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3QndCd0J3Qncyd0J3QndCd0N3QndDd0J3MncydzJ3MncydzJ3MndCdzJ3MncydzJ3MndCd0J3QndCd0J3QndDd0N4Q3dDeEJ3Q3dCd0N3Q3dDeEN4Q3hDd0N4Q3dDeEN4Q3hDeEN4U3dDeEN4Q3hDeEN4U3hTeFN4VHhTeFR4VHhUeFR4VHhUeFR4VHhUeFR4VHlUeFR5Y3hDeFN4Q3hTeFR4U3hUeFN4Q3hTeFN4U3hUeFR4VHhUeFR4VHhUeFR5VHlkeWV5ZHhUeVR4VHlkeWV5ZXlleWR5ZHlkeWV5ZXlleWV5ZXlkeWV5ZXlleWV5ZXlleWV5dXlleXV5dXl2enZ6dnp2enV5dnp2eXZ6dnp2enZ6dnqFeWV5ZXlleWV5ZXl1eWV5dXlleWV5ZXlleXZ6dnp2enZ6dnp2enZ6dnp3eoZ6h3qGenZ6dnp2eod6h3uHeod7hnp3eoZ6h3qHe4d7h3uIe5d6h3uHeod7h3uIe5d7mHuYe5h7mHuYe5h8qXypfKl8qHuYfKh7mXypfKl8qXypfKd7h3uHe4h7mHuYe5h7mHuXe4h7l3uYe5h7mHyoe5l8qHypfKl8qXypfKl8uXyqfbl8qXypfKl8qXyqfbp8un25fKl8uXyqfbp9un26fbp9uXy6fbp8un26fbp9un27fcp9u33Lfct9y33Lfst+y37Lfct+y33Lfst+zH7Lfsx+2n26fbp9un26fbt9y33Lfcp9un26fbt9y33Lfst9y37Lfct+y37Lfsx+zH7cftx+237Mfst+zH7cftx+3H7cfth9qH2ofah9qH2pfql9qX6ofal9qH2pfal+qX6pfql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX64fal+qX6pfql+uX65frl+uX6pfrl+qX65frl+uX65frl+uX65frl+uX65frl+un65frl+uX65frl+un66frp+uX66frl+un66frp+un66frl+un66frp+un66frp+un66frp+yn7Kfsp+yn7Kfsp/yn7Kfsp+yn7Kfsp+yn/Kf8p+un66frp+un66fsp+un7Kfrp+un66frp+yn7Kfsp+yn7Kfsp+yn7Kf8p/yn/Lf8p+yn/Kfsp/yn/Lf8t/y3/Kf8p/yn/Lf8t/y3/Lf8t/yn/Lf8p/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf8t/y3/Lf8t/y3/bf8t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/23/bf9t/23/Lf8t/y3/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/bf9t/23/bf9t/23/bf9x/23/bf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/bf9t/23/bf9t/3H/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/23/bf9t/23/bf8t/y3/Lf9t/23/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/y3/Lf8t/y3/Lfst+y37Lf8t/y3/Lf8t+y37Lfst+y3/Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+yn7Lfst+y37Lfst+yn7Lfsp+yn7Kfsp+yn66frp+un66frp+yn66fsp+un66frp+un67fst+y37Kfsp+yn7Kfsp+y37Kfst+yn7Kfsp+yn7Kfrp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp9un66fbp+un66frp+un66fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp+un66frp+un26fbp9un26frp9un66fbp9un26fbp9un26fbp9un26fbl9uX25fbp9un26fbl9uX25fbl9uX26fbl9uX25fbl9uX2pfbl9qX25fbl9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX25fal9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfKl9qX2pfal8qX2pfKl8qXypfal8qX2pfKl8qHyofKh8qHyofKh8qHyofJh8mHyYfJh8qHyofKh8mHyYfJh8mHyZfal8qXypfKh8qHyofKh8qXypfKl8qHyofKh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3uXfJd7mHyYfJh8l3yXe5d7l3uXe4h8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJd8mHyXe5d8l3uXe5d7h3uXe4d7l3uXe5d7h3uHe4d7h3uHe5d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuHe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7hnuGe4Z7h3uHe4d7hnuGe4Z7hnuGe4d7hnuGe4Z7hnuGe4Z7hnt2e4Z7hnuGe4Z7dnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2e4Z7dnuGe3Z6dnp2enZ6dnuGe3Z6hnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dnp1enV6dXp1enZ6dXp2enV6dXp1enV6dXp1enV6dXp1enV6ZXplemV6ZXp1emV6dXplemV6ZXpleWZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXplenV6ZXplemV6ZXplemV5ZXpleWV6ZXplemV5ZXlleWV5ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZXlleWV5ZXlleWR5ZHlkeWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VHlkeWR5ZHlUeVR5VHlUeVR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR4VHhTeFR5VHlUeVR4VHhTeFN4U3hUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR5VHhUeFN4U3hTeFN4U3hUeFN4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hTeFN4U3hTeEN4U3hDeFN4U3hTeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEN4QnhCeEJ4QnhCd0J3QndCeEJ3QndCd0J3QndCd0J3Q3hDeEN4Q3hCeEJ4QnhCeEN4QnhDeEJ4QnhCd0J4QndCeEJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCdzJ3Qncyd0J3QndCd0J3QncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncydzJ3MXcxdzF3MXcydzJ3MncydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdzF2MXcxdjF3MXcxdzF3MXYxdzF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdiF2MXYxdjF2IXYhdiF2MXYhdjF2MXYxdjF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdiF2IXYhdiF2MXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2MXYxdjF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF3MXYxdjF2MXYxdjF3MXcxdzF3MXcxdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXYxdjF2MXcxdzF3MXcydzF2MXcxdzF3MXcydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Qncyd0J3MncydzJ3QndCd0J3QndCdzJ3Qncyd0J3Q3dCd0N3Q3dDd0N3Q3hDeEN4Q3hDeFN4Q3hDeEN4Q3hDeFN4U3hSd0J3QndCd0N3Q3dDd0N4QndDd0J3Q3dDd0N4Q3hDeEN4Q3hDeEN4U3hUeFN4VHhTeEN4U3hTeFN4VHhUeFR4U3hUeFN4VHhUeFR4VHhUeFN4VHhUeFR4VHhUeVR4VHlkeVR5ZHlkeWV5ZXlleWV5ZHlleWR5ZXlleWV5ZXlleWR4VHhUeFR4VHlUeWR5ZHlkeFR5VHhUeWR5ZXlkeWV5ZXlleWV5ZXlleWV5dXlleXV5ZXlleWV5ZXl2enV5dnp1eWV5dXlleXZ6dnp2enZ6dXl2enV5dnp2enZ6dnp2eoZ6d3qGeod6h3uHe4d7h3uXeod7h3qHe4d7iHuXe5h7lnp2enZ6dnp2end6hnp3eoZ6dnp2enZ6h3qHe4d6h3uHeod7h3uHe5h7mHuYe5h7l3uIe5d7mHuYe5h8mHuZfKh7mHuYe5h7mHyZfKl8qXyoe5h8mHuZfKl8qXypfKl8qXypfKl8qny6fbp9un26fbl8qn26fLp9un26fbp9u33IfJl8qXypfKl8qXypfKp8uXypfKl8qXypfKp9uny6fbp9un26fbp9un27fct9y33Kfbp9un27fct9y33Lfct+yn27fct9y33Lfct+y37Lfst9y37Lfct+y37Lfst+zH7bfsx+3H7cftx+3H7cftx+3H7cftx+3H7cftx+3H7cftt9y37Lfst+zH7Mftx+3H7bfst+y37Mftx+3H7cftx+3H7cftx+3H7cftx+3H7cftx+3H7cftx+3H7cftx+3H7Q==
-
-
-
-
-
diff --git a/trunk/CardSaveDataMover/Imp/banner/banner_dummy.bcwav b/trunk/CardSaveDataMover/Imp/banner/banner_dummy.bcwav
deleted file mode 100644
index d579907..0000000
Binary files a/trunk/CardSaveDataMover/Imp/banner/banner_dummy.bcwav and /dev/null differ
diff --git a/trunk/CardSaveDataMover/Imp/banner/banner_imp.cbmd b/trunk/CardSaveDataMover/Imp/banner/banner_imp.cbmd
deleted file mode 100644
index e64d183..0000000
Binary files a/trunk/CardSaveDataMover/Imp/banner/banner_imp.cbmd and /dev/null differ
diff --git a/trunk/CardSaveDataMover/Imp/banner/icon2_24.ctpk b/trunk/CardSaveDataMover/Imp/banner/icon2_24.ctpk
deleted file mode 100644
index a96f378..0000000
Binary files a/trunk/CardSaveDataMover/Imp/banner/icon2_24.ctpk and /dev/null differ
diff --git a/trunk/CardSaveDataMover/Imp/banner/icon2_48.ctpk b/trunk/CardSaveDataMover/Imp/banner/icon2_48.ctpk
deleted file mode 100644
index 550e559..0000000
Binary files a/trunk/CardSaveDataMover/Imp/banner/icon2_48.ctpk and /dev/null differ
diff --git a/trunk/CardSaveDataMover/Imp/banner_null_icon.bsf b/trunk/CardSaveDataMover/Imp/banner_null_icon.bsf
deleted file mode 100644
index f1dcde6..0000000
Binary files a/trunk/CardSaveDataMover/Imp/banner_null_icon.bsf and /dev/null differ
diff --git a/trunk/CardSaveDataMover/Imp/csm_inf.txt b/trunk/CardSaveDataMover/Imp/csm_inf.txt
deleted file mode 100644
index 995c06e..0000000
--- a/trunk/CardSaveDataMover/Imp/csm_inf.txt
+++ /dev/null
@@ -1,2 +0,0 @@
--p
--t
diff --git a/trunk/CardSaveDataMover/Imp/imp_list/batch/csm_list.txt b/trunk/CardSaveDataMover/Imp/imp_list/batch/csm_list.txt
deleted file mode 100644
index ab848b6..0000000
--- a/trunk/CardSaveDataMover/Imp/imp_list/batch/csm_list.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-#쐬ł
-#VA͍lŔp̂
-#lp͂܂ꂽDigit͏Ȃ
-#Rg͑SpOK
-
-#O[vA
-CJN10001372
-EJF10000237
-EJF10001230
-
-#O[vB
-EJF10002236
-EJF10003232
-EJF10004231
-EJF10005237
-#-- END --
diff --git a/trunk/CardSaveDataMover/Imp/imp_list/batch/makekey.bat b/trunk/CardSaveDataMover/Imp/imp_list/batch/makekey.bat
deleted file mode 100644
index 813beb0..0000000
--- a/trunk/CardSaveDataMover/Imp/imp_list/batch/makekey.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-openssl genrsa -out private_key.pem 2048
-openssl enc -d -base64 -in private_key.pem -out private_key.der
-openssl rsa -pubout -inform DER -outform DER -in private_key.der -out public_key.der
-
diff --git a/trunk/CardSaveDataMover/Imp/imp_list/batch/makekey_100.bat b/trunk/CardSaveDataMover/Imp/imp_list/batch/makekey_100.bat
deleted file mode 100644
index 0524431..0000000
--- a/trunk/CardSaveDataMover/Imp/imp_list/batch/makekey_100.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-rem ver1.0.0p
-openssl genpkey -out private_key.der -outform DER -algorithm rsa -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:65537
-openssl rsa -pubout -inform DER -outform DER -in private_key.der -out public_key.der
diff --git a/trunk/CardSaveDataMover/Imp/imp_list/batch/makesign.bat b/trunk/CardSaveDataMover/Imp/imp_list/batch/makesign.bat
deleted file mode 100644
index 1d87ba0..0000000
--- a/trunk/CardSaveDataMover/Imp/imp_list/batch/makesign.bat
+++ /dev/null
@@ -1,7 +0,0 @@
-@echo off
-if "%1"=="" goto 1
-openssl dgst -sha256 -binary -keyform DER -sign ../key/private_key.der -out csm_sign.dat %1
-goto end
-:1
-openssl dgst -sha256 -binary -keyform DER -sign ../key/private_key.der -out csm_sign.dat csm_list.txt
-:end
diff --git a/trunk/CardSaveDataMover/Imp/imp_list/caution.txt b/trunk/CardSaveDataMover/Imp/imp_list/caution.txt
deleted file mode 100644
index 496953d..0000000
--- a/trunk/CardSaveDataMover/Imp/imp_list/caution.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-閧̈͒
-쐬Kv̖ɂ͏oȂ
-
-쐬́AzzŎgpo[WɓĂ
-ƃyA̔閧g
diff --git a/trunk/CardSaveDataMover/Imp/imp_list/digit.txt b/trunk/CardSaveDataMover/Imp/imp_list/digit.txt
deleted file mode 100644
index 6691db8..0000000
--- a/trunk/CardSaveDataMover/Imp/imp_list/digit.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-
-{̈̃VAŌ̎lpgɓ
-digitƂ̂炵
-Xg쐬ɓ͈Ⴂ`FbN̂Ɏg
-R}hCŃt@Cw肷ȒPȃ`FbJ[Ƃ
-
-
-ȉAJ삳[
-----------------
-`FbNfWbǧvZ@͈ʓIȂ̂炵A
-"WX10 EFCg3E1iM10W31j"Ƃ̂炵łB
-
-
-// NULLI[ꂽVAio[
-// NULL̏ꏊɃ`FbNfWbgtĐVNULLI[
-void AddCheckDigit(char* serial)
-{
- size_t len = std::strlen(serial);
-
- u8 digit = 0;
- bool odd = true;
- for(u8 i = len - 1; i > 0 && std::isdigit(serial[i]); i--)
- {
- if(odd)
- {
- digit += (serial[i] - '0') * 3;
- }
- else
- {
- digit += (serial[i] - '0');
- }
- odd = !odd;
- }
-
- if(digit % 10 != 0)
- {
- serial[len] = 10 - (digit % 10) + '0';
- }
- else
- {
- serial[len] = '0';
- }
-
- serial[len + 1] = '\0';
-}
diff --git a/trunk/CardSaveDataMover/Imp/imp_list/import.txt b/trunk/CardSaveDataMover/Imp/imp_list/import.txt
deleted file mode 100644
index e94a4f3..0000000
--- a/trunk/CardSaveDataMover/Imp/imp_list/import.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-
-ړIF{̂̂݃C|[g
-
-JROMǂݍ
-
-SCj@c[p{̂̃VA[ȂǂRED֘A
-RED)@Xg(csm_list)Ə(csm_sign)쐬
-
-
-C|[g菇
-E@XgASDCTRɍ
-E@C|[gpAvJ[hN
-E@LȖ{̂ȂC|[gj[\
-
-
-Openeelō쐬
-ɎSD[gɒu
-
-Xg̏
-C|[gVAeLXgŗ
----
-aaaaaaaa
-bbbbbbbb
-----
-{̗VAI[digit(lpg̐)͏Ȃ
-digitmFꍇ̓Xg쐬ɂƂ
-t@CTCY64K܂(VÂLڂŁA悻4000)
diff --git a/trunk/CardSaveDataMover/Imp/imp_list/key/public_key.der b/trunk/CardSaveDataMover/Imp/imp_list/key/public_key.der
deleted file mode 100644
index 1fa5839..0000000
Binary files a/trunk/CardSaveDataMover/Imp/imp_list/key/public_key.der and /dev/null differ
diff --git a/trunk/CardSaveDataMover/Imp/option.txt b/trunk/CardSaveDataMover/Imp/option.txt
deleted file mode 100644
index 6e48073..0000000
--- a/trunk/CardSaveDataMover/Imp/option.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-C|[^̃IvVL
-
-cms_inf.txt̖OŃt@C쐬SD̃[gɔzu
-ȉ̋LqŃIvVLɂȂ
-foOspAʏ͂Ȃ
-
--t: eXgj[
-@@@J[h̃Z[uɃeXgp^[݁xt@C
-
--p: {̃VA\
-
diff --git a/trunk/CardSaveDataMover/Imp/romfiles/importee.cia b/trunk/CardSaveDataMover/Imp/romfiles/importee.cia
deleted file mode 100644
index 12fdec1..0000000
Binary files a/trunk/CardSaveDataMover/Imp/romfiles/importee.cia and /dev/null differ
diff --git a/trunk/CardSaveDataMover/Imp/romfiles/nnfont_RectDrawerShader.shbin b/trunk/CardSaveDataMover/Imp/romfiles/nnfont_RectDrawerShader.shbin
deleted file mode 100644
index 4290c2c..0000000
Binary files a/trunk/CardSaveDataMover/Imp/romfiles/nnfont_RectDrawerShader.shbin and /dev/null differ
diff --git a/trunk/CardSaveDataMover/Imp/source/main.cpp b/trunk/CardSaveDataMover/Imp/source/main.cpp
deleted file mode 100644
index 300f428..0000000
--- a/trunk/CardSaveDataMover/Imp/source/main.cpp
+++ /dev/null
@@ -1,490 +0,0 @@
-/*---------------------------------------------------------------------------*
- Project: Horizon
- File: main.cpp
-
- Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
-
- These coded instructions, statements, and computer programs contain
- proprietary information of Nintendo of America Inc. and/or Nintendo
- Company Ltd., and are protected by Federal copyright law. They may
- not be disclosed to third parties or copied or duplicated in any form,
- in whole or in part, without the prior written consent of Nintendo.
-
- $Rev$
- *---------------------------------------------------------------------------*/
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include "demo.h"
-#include "../common/ver.h"
-#include "../common/sleep.h"
-#include "../common/common.h"
-#include "../common/shfnt.h"
-#include "test_data.h"
-
-#define INF_FILE "sdmc:/csm_inf.txt"
-
-#define KEY_LENGTH 2048
-#define LIST_FILE "sdmc:/csm_list.txt"
-#define SIGN_FILE "sdmc:/csm_sign.dat"
-
-
-extern "C" {
- extern u8* PUBLIC_KEY_BEGIN[];
- extern u8* PUBLIC_KEY_END[];
-
- const void* PUBLIC_KEY = PUBLIC_KEY_BEGIN;
-}
-
-demo::RenderSystemDrawing s_RenderSystem;
-nn::fnd::ExpHeap appHeap;
-uptr heapForGx;
-void ErrorStop(char *s);
-void ErrorPOff(char *s);
-
-const size_t ROMFS_BUFFER_SIZE = 64*1024;//ROMマウント用
-const size_t READ_BUFFER_SIZE = 64*1024;
-
-#define SDK_SER_LEN nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN
-
-namespace
-{
- u8* readBuf;
- u8* romfsBuf;
-
-}
-nn::Result result;
-
-
-bool ImportFile(nn::fs::MediaType mediaType, wchar_t* filename)
-{
- //nn::Result result;
-
- nn::fs::FileOutputStream* stream;
- result = nn::am::BeginImportProgram(&stream, mediaType);
- if (result.IsSuccess())
- {
- //NN_LOG("Importing: %ls...", filename);
- nn::fs::FileInputStream in(filename);
-
- while(s32 read = in.Read(readBuf, READ_BUFFER_SIZE))
- {
- stream->Write(readBuf, read);
- }
- result = nn::am::EndImportProgram(stream);
- }
- return result.IsSuccess();
-}
-
-#define LIST_MAX 4000
-#define LIST_LENGTH (LIST_MAX * (nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN+1))
-u8 s_list[LIST_MAX][nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN+1];//シリアルリスト
-u8 sign[256];//署名
-u8 serialNo[nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN+1];
-
-//本体シリアル取得
-int GettedSerLen;
-bool GetSerial(){
- nn::cfg::CTR::init::Initialize();
- nn::cfg::CTR::system::Initialize();
- result = nn::cfg::CTR::system::GetSerialNo(serialNo);
- nn::cfg::CTR::system::Finalize();
- nn::cfg::CTR::init::Finalize();
- serialNo[nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN] = 0;
- GettedSerLen = strlen((char*)serialNo);
- return result.IsSuccess();
-}
-
-
-
-//#define setColor(r,g,b,a) s_RenderSystem.SetColor(r,g,b,a)
-void setColor(f32 r,f32 g,f32 b,f32 a){ shf_SetColor(r,g,b,a);}
-//#define setText(x,y,s) s_RenderSystem.DrawText(x,y,s)
-void drawText(u16 x,u16 y,char *s){ shf_DrawText_0( x,y,s);}
-//上はASCIIのみ対応したTextWriterへのラッパ
-//日本語表示の場合、WideTextWriterを使う(要sft_側の関数追加)
-
-
-nn::hid::PadReader *hpr;
-//入力待ち
-nn::hid::PadStatus padStatus;
-u32 WaitKey(u32 mask)
-{
-
- while(1){
- hpr->ReadLatest(&padStatus);
- if(padStatus.trigger & mask)return padStatus.trigger;
- CheckSysBreak();
- int i = nn::ndm::GetDaemonStatus( nn::ndm::DN_CEC );
- if (i !=3 )NN_LOG("DN_CEC %d\n",i);
- i = nn::ndm::GetDaemonStatus( nn::ndm::DN_BOSS );
- if (i !=3 )NN_LOG("DN_BOSS %d\n",i);
- i = nn::ndm::GetDaemonStatus( nn::ndm::DN_NIM );
- if (i !=3 )NN_LOG("DN_NIM %d\n",i);
- i = nn::ndm::GetDaemonStatus( nn::ndm::DN_FRIENDS );
- if (i !=3 )NN_LOG("DN_FRIENDS %d\n",i);
- }
-}
-
-//終了
-void endfunc()
-{
- appHeap.Free(reinterpret_cast(readBuf));
- appHeap.Free(reinterpret_cast(romfsBuf));
- nn::hid::Finalize();
- SharedFontFinalize();
- nngxWaitVSync(NN_GX_DISPLAY_BOTH);//SDK2.0以降では不要?
- s_RenderSystem.Finalize();
-}
-
-//署名検証
-bool VeriRsa(u8* src,size_t sz,u8* sig)
-{
- nn::crypto::RsaKey key;
- //nn::crypto::Initialize();
- nn::ps::CTR::Initialize();
- result = key.InitializePublicKey(PUBLIC_KEY_BEGIN,KEY_LENGTH);
- if (result.IsSuccess())
- {
- result = nn::ps::CTR::VerifyRsaSha256(src,sz,sig,key);
- }
- //nn::crypto::Finalize();
- nn::ps::CTR::Finalize();
- return result.IsSuccess();
-}
-
-//エラー
-void ErrorCommon(char *s,char *ss)
-{
- char str[128];
- nn::am::FinalizeForLocalImporter();
- nn::fs::Unmount("sdmc:");
- nn::fs::Unmount("rom:");
- NN_LOG(s);
- NN_LOG(" result = %d\n",result.GetDescription());
- shf_SetScale(0.7,0.7);
- setColor(1.0, 0.0, 0.0,1.0);
- strcpy(str,"Error: ");
- strcat(str,s);
- drawText(10,100,str);
- drawText(10,140,ss);
-}
-
-
-void ErrorStop(char *s)
-{
- ErrorCommon(s,"Push Home Button & end");
- s_RenderSystem.SwapBuffers();
- WaitKey(0);
-}
-
-void ErrorPoff(char *s)
-{
- ErrorCommon(s,"Push Power Button & Power Off");
- drawText(10,160,"Home Button is invalid");
- s_RenderSystem.SwapBuffers();
- WaitKey(0);
-}
-
-
-//改行後の位置を返す、0=見つからなかった
-int CrLf(int n,int max)
-{
- u8 d;
- while(n < max)
- {
- d = readBuf[n];
- if (d==0x0a)return n+1;//LF
- if (d==0x0d)//CR
- {
- if (n == max-1)return 0;//終端
- n++;
- if (readBuf[n]==0x0a)return n+1;//CR+LF
- ErrorStop("list broken");//CRのみは異常、署名時にファイル壊れてた?
- }
- n++;
- }
- return 0;
-}
-
-
-nn::fs::FileInputStream fi;
-//ファイルリード
-s32 FileRead(char* fname)
-{
- s32 size;
- result = fi.TryInitialize(fname);
- if (result.IsFailure()){//open error
- //NN_LOG("desc= %d\n",result.GetDescription());
- return 0;
- }
- result = fi.TryRead(&size,readBuf,READ_BUFFER_SIZE);
- fi.Finalize();
- if (result.IsFailure()){
- //NN_LOG("desc= %d\n",result.GetDescription());
- return 0;
- }
- return size;
-}
-
-
-char ver[16];
-char seri[32];
-void nnMain( void )
-{
- //nn::Result result;
- bool flg_applove=false;
- bool flg_test=false;
- int i,j,n;
- s32 fsize;
- extern bool prohibitHome;// HOME ボタン禁止
-
- nn::os::Initialize();
- nn::fs::Initialize();
-
- //DEA-SUPにて推奨のフリーズ暫定対策:無線デーモンを停止 (2011.3.1 現在)
- //ただし、スリープ時の"いつのまに通信"は止まらない
- //無線は使わないので本体横スイッチ切っとくのが確実
- nn::ndm::Initialize();
- result = nn::ndm::SuspendScheduler();
- NN_LOG("%d",result.GetDescription());
-
- //中断処理の準備
- InitSysBreak((uptr)endfunc);
- // グラフィックスライブラリの初期化は、以降で行わなければならない
- // 他、アプリケーションの初期化処理
-
- nn::hid::Initialize();
- nn::hid::PadReader padReader;
- hpr = &padReader;
-
- //result = nn::ns::CTR::InitializeForShell();
- //if (result.IsSuccess())
- result = nn::am::InitializeForLocalImporter();
-
- nn::applet::DisableSleep();//スリープ非対応
-
- // ヒープの確保
- appHeap.Initialize(nn::os::GetDeviceMemoryAddress(), nn::os::GetDeviceMemorySize(), nn::os::ALLOCATE_OPTION_LINEAR);
-
- const u32 s_GxHeapSize = 0x800000;
- // RenderSystem の準備
- heapForGx = reinterpret_cast(appHeap.Allocate(s_GxHeapSize));
- s_RenderSystem.Initialize(heapForGx, s_GxHeapSize);
- SharedFontInit();
-
- // 共有フォントの種類を取得
- //nn::pl::SharedFontType sftype = nn::pl::GetSharedFontType();
-
- // スリープ要求に対する返答を有効にする
- // また、蓋の状態チェックを行い蓋が閉じられているならスリープ要求が発生する
-// nn::applet::EnableSleep(true);
-
- s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY0);
- s_RenderSystem.Clear();
-// s_RenderSystem.SetFontSize(12);
- shf_SetScale(0.8,0.6);
- setColor(1.0,1.0,1.0,1.0);
- drawText(20,20,"CTR Card Savedata Mover Setup");
- s_RenderSystem.SwapBuffers();
-
- shf_SetScale(0.5,0.5);
- sprintf(ver,"version %.2f",VERSION);
- drawText(250,40,ver);
-
- shf_SetScale(0.7,0.7);
- if (result.IsFailure())ErrorStop("Initialize");//初期化に失敗
- if (READ_BUFFER_SIZE < LIST_LENGTH)ErrorStop("buffer size");//バッファサイズのチェック
-
- //ファイルバッファ
- //カゲマイ上のSDリード速度比較実験で32アラインが良かったので、おまじない
- //回数もサイズも少ないので気にする必要ないかも
- if (READ_BUFFER_SIZE > appHeap.GetTotalFreeSize())ErrorStop("memory alloc");
- readBuf = reinterpret_cast(appHeap.Allocate(READ_BUFFER_SIZE,32));
- if (ROMFS_BUFFER_SIZE > appHeap.GetTotalFreeSize())ErrorStop("memory alloc");
- romfsBuf = reinterpret_cast(appHeap.Allocate(ROMFS_BUFFER_SIZE,32));
-
-
- //シリアルチェック
- if( GetSerial() == false)ErrorStop("Get Serial");//本体シリの取得に失敗
-
- result = nn::fs::MountSdmc();//ダイレクトでマウント..マスタリング時にワーニング
- if (result.IsFailure())ErrorStop("Mount SD");
- fsize = FileRead(INF_FILE);//設定ファイルがあるか
- if((fsize < 1024) && (fsize > 0))//サイズチェック,増えても1Kは超えない
- {//不具合調査時に状況にあわせて現場で作成&変更を想定したオプション
- //通常は不要なので無しでも動くようしとく
- n = 0;
- while(n < fsize)
- {
- if (readBuf[n] == '-'){
- if (n == fsize-1)break;//終端
- n++;
- switch (readBuf[n]){
- case 'p':// -p .. 本体シリアル表示
- strcpy(seri,"s/n: ");
- strcat(seri,(char *)serialNo);
- shf_SetScale(0.5,0.5);
- drawText(10,40,(char*)seri);
- shf_SetScale(0.7,0.7);
- break;
- case 't':// -t .. テストメニュー有効
- flg_test = true;
- break;
- }
- }
- n++;
- }
- }
-
- //シリアル表示(オプション)後にチェック
- //デバッガ=15,実機=11
- if (GettedSerLen < 11)ErrorStop("invalid Serial");
-
- fsize = FileRead(SIGN_FILE);//署名リード
- if(fsize != 256)ErrorStop("sign file");//鍵のbit長は2046固定
- memcpy(sign,readBuf,256);//readBuf -> sign
- fsize = FileRead(LIST_FILE);//リストリード
- if((fsize > LIST_LENGTH ) || (fsize == 0))ErrorStop("list file");
-
- nn::fs::Unmount("sdmc:"); //検証後はSDから読まないでメモリバッファ上のデータを使う: 差替え対策
- if (VeriRsa(readBuf,fsize,sign) == false)ErrorStop("sign verify");
-
- //署名検証OK
- int list_ct = 0;
- n=0;
- while(n < fsize)//リスト作成
- {
- if (readBuf[n] == '#')//コメント行を無視、ワイド文字非対応
- {
- i = CrLf(n,fsize);//コメントの次行
- if (i == 0)break;//ファイル終わりまで改行が見つからない
- }else
- {
- //改行さがし
- if ((fsize-n) > (SDK_SER_LEN+2))
- {//シリアルは改行つける
- i = CrLf(n,n+SDK_SER_LEN+2);
- if (i == 0)ErrorStop("list broken");//改行が見つからない
- }else{
- i = CrLf(n,fsize);
- if (i ==0)i = fsize;//改行以外でファイル終
- }
- if ((i-n) > GettedSerLen)//シリアルをリスト化
- {
- j = 0;
- while(n=LIST_MAX)ErrorStop("List too Long");
- }
- }
- if ((fsize-i) < GettedSerLen)break;//ファイル終
- n=i;//ポインタを改行の次へ
- }
-
- //プログラムミス、コードバグ対策
- //値が小さいと判定が緩くなるが、動作確認時にスルーしそうなので
- //念の為チェック
- if (GettedSerLen < 11)ErrorStop("invalid Serial");
-
- //本体シリアルがリストにあるかチェック
- n =0;
- while(n
-#include
-#include
-#include
-#include
-#include
-#include "demo.h"
-
-nn::Result res;
-
-nn::fs::FileOutputStream fout;
-nn::fs::FileInputStream fin;
-
-nn::fs::Directory dc[256];
-
-wchar_t file_pathw[1024];
-char file_path[1024];
-char file_path2[1024];
-char src_buff[1024*1024];
-char get_buff[1024*1024];
-char str[512];
-
-
-extern demo::RenderSystemDrawing s_RenderSystem;
-
-//終了処理
-extern void finish(void);
-extern u32 WaitKey(u32 mask);
-
-extern void setColor(f32 r,f32 g,f32 b,f32 a);
-extern void drawText(u16 x,u16 y,char *s);
-void drawText(u16 x,u16 y,char *s,int v)
-{
- sprintf(str,s,v);
- drawText( x,y,str);
-}
-
-
-//---------------------------------------- テストパターン
-void make_pattern()
-{
- int i,j;
- j=0;
- for (i=0;i<1024*1024;i++){
- src_buff[i] = j+i;
- if (i & 0x100)j++;
- }
-}
-
-//TEST ライト
-s32 size;
-#define SIZE_TEST1 421888
-//#define SIZE_TEST1 244736 //dup
-bool Test1_W()
-{
- int total,size2;
-
- res = nn::fs::FormatSaveData(1,0,false);
- if (res.IsFailure()){
- drawText(8,100,"format Fail");
- return false;
- }
- res =nn::fs::MountSaveData();
- if (res.IsFailure()){
- drawText(8,100,"Mount Fail");
- return false;
- }
- res = nn::fs::TryCreateFile(L"data:/test1.bin",SIZE_TEST1);
- if (res.IsFailure()){
- drawText(8,100,"Create Fail");
- nn::fs::Unmount("data:");
- return false;
- }
- res = fout.TryInitialize(L"data:/test1.bin",true);
- if (res.IsFailure()){
- drawText(8,100,"open Fail");
- nn::fs::Unmount("data:");
- return false;
- }
- total =0;
- size2 = 512;
- //size2 = 4096;
- //size2 = SIZE_TEST1;
- while(1){
- res = fout.TryWrite( &size,&src_buff[total],size2);
- if (res.IsFailure()){
- drawText(8,100,"write Fail");
- fout.Finalize();
- nn::fs::Unmount("data:");
- return false;
- }
- total += size;
- sprintf(str,"size %d",total);
- s_RenderSystem.Clear();
- drawText(10,80,str);
- s_RenderSystem.SwapBuffers();
- //if (size<512)break;
- if (total >= SIZE_TEST1)break;
- if ((SIZE_TEST1 - total) < 512)size2 = SIZE_TEST1 - total ;
- }
- fout.Finalize();
- nn::fs::CommitSaveData();
- nn::fs::Unmount("data:");
- NN_LOG("total %d",total);
- drawText(10,100,"end");
- s_RenderSystem.SwapBuffers();
- nngxWaitVSync(NN_GX_DISPLAY0);
- return true;
-}
-
-//ベリファイ
-bool Test1_V()
-{
- int i,total;
-
- res = fin.TryInitialize(L"data:/test1.bin");
- if (res.IsFailure()){
- drawText(8,100,"open Fail");
- nn::fs::Unmount("data:");
- return false;
- }
- total =0;
- while(1){
- res = fin.TryRead( &size,&get_buff[total],512);
- if (res.IsFailure()){
- drawText(8,100,"read Fail");
- fin.Finalize();
- nn::fs::Unmount("data:");
- return false;
- }
- //if (size == 0)break;
- for (i=0;i= SIZE_TEST1)break;
-
- total += size;
- s_RenderSystem.Clear();
- sprintf(str,"now %d",total);
- drawText(10,80,str);
- s_RenderSystem.SwapBuffers();
- if (size<512)break;
- }
- fout.Finalize();
- nn::fs::Unmount("data:");
- drawText(10,100,"end");
- s_RenderSystem.SwapBuffers();
- nngxWaitVSync(NN_GX_DISPLAY0);
- return true;
-}
-
-
-//ファイル数
-bool Test2_W(int n)
-{
- int total,size2;
-
- res = nn::fs::FormatSaveData(680,1,false);//dupなしファイル680
- if (res.IsFailure()){
- drawText(8,100,"format Fail");
- return false;
- }
- res =nn::fs::MountSaveData();
- if (res.IsFailure()){
- drawText(8,100,"Mount Fail");
- return false;
- }
-
- total =0;
- int num = 0;
- size2 = 512;
- while(1){
- sprintf(file_path,"data:/test%d.bin",num);
-// res = nn::fs::TryCreateFile(L"data:/test2.bin",SIZE_TEST1);
-// if (res.IsFailure()){
-// drawText(8,100,"Create Fail");
-// nn::fs::Unmount("data:");
-// return false;
-// }
- res = fout.TryInitialize(file_path,true);
- if (res.IsFailure()){
- drawText(8,100,"open Fail");
- nn::fs::Unmount("data:");
- return false;
- }
- res = fout.TryWrite( &size,&src_buff[total],size2);
- if (res.IsFailure()){
- drawText(8,100,"write Fail");
- fout.Finalize();
- nn::fs::Unmount("data:");
- return false;
- }
- fout.Finalize();
- total += size;
- num++;
- sprintf(str,"size %d , num %d",total,num);
- s_RenderSystem.Clear();
- drawText(10,80,str);
- s_RenderSystem.SwapBuffers();
- //if (size<512)break;
- if (num == n)break;
- }
- fout.Finalize();
- nn::fs::CommitSaveData();
- nn::fs::Unmount("data:");
- NN_LOG("total %d",total);
- drawText(10,100,"end");
- s_RenderSystem.SwapBuffers();
- nngxWaitVSync(NN_GX_DISPLAY0);
- return true;
-}
-
-bool Test2_V(int n)
-{
- int total,size2,i;
-
- total =0;
- int num = 0;
- size2 = 512;
- while(1){
- sprintf(file_path,"data:/test%d.bin",num);
- res = fin.TryInitialize(file_path);
- if (res.IsFailure()){
- drawText(8,100,"open Fail");
- nn::fs::Unmount("data:");
- return false;
- }
- res = fin.TryRead( &size,&get_buff[total],size2);
- if (res.IsFailure()){
- drawText(8,100,"read Fail");
- fin.Finalize();
- nn::fs::Unmount("data:");
- return false;
- }
- for (i=0;i= SIZE_TEST5)break;
- }
- fout.Finalize();
- nn::fs::CommitSaveData();
- nn::fs::Unmount("data:");
- drawText(10,100,"end");
- s_RenderSystem.SwapBuffers();
- nngxWaitVSync(NN_GX_DISPLAY0);
- return true;
-}
-
-
-bool Test5_V()
-{
- int i,pos;
-
- res = fin.TryInitialize(L"data:/test5.bin");
- if (res.IsFailure()){
- drawText(8,100,"open Fail");
- nn::fs::Unmount("data:");
- return false;
- }
- pos =0;
- while(1){
- fin.SetPosition(pos);
- res = fin.TryRead( &size,&get_buff[pos],512);
- if (res.IsFailure() || (size!=512)){
- drawText(8,100,"read Fail");
- fin.Finalize();
- nn::fs::Unmount("data:");
- return false;
- }
- sprintf(str,"position %d",pos);
- s_RenderSystem.Clear();
- drawText(10,80,str);
- s_RenderSystem.SwapBuffers();
-
- for (i=0;i<512;i++) if (src_buff[pos+i] != get_buff[pos+i])
- {
- drawText(8,100,"verifi Fail at %d",i);
- return false;
- }
- pos += 1024;//512飛ばす
- if (pos >= SIZE_TEST5)break;
- }
- fin.Finalize();
- nn::fs::Unmount("data:");
- drawText(10,100,"end");
- s_RenderSystem.SwapBuffers();
- nngxWaitVSync(NN_GX_DISPLAY0);
- return true;
-}
-
-
-
-
-#define menu_ct 6
-#define menu_max (menu_ct-1)
-char* menu_str[menu_ct] = {"Casual check","Large size","many files","Deep directry","max size name","data < create size"};
-
-#define menu_top_Y 80
-#define menu_top_X 60
-#define menu_spc 14
-
-//---------------------------------------------------------------- main
-void TestMain()
-{
- u32 value;
- int curs = 0;
- int i;
- bool sccs;
-
- //Render
- setColor(1.0f,1.0f,1.0f,1.0f);
-
- //TEST PATTERN
- make_pattern();
-
- while(1){
-
- //menu 表示
- s_RenderSystem.Clear();
- drawText(8,20," Backup Verifi for SaveDataMover Test ");
- drawText(8,40," for 512KB Backup");
- for (i=0;i");
- drawText(menu_top_X,menu_top_Y+menu_spc*(menu_max+2),"push A:Write ,X:Verifi");
- s_RenderSystem.SwapBuffers();
- nngxWaitVSync(NN_GX_DISPLAY0);
-
- //ボタン待ち
- value = WaitKey(nn::hid::BUTTON_A | nn::hid::BUTTON_X |nn::hid::BUTTON_UP |nn::hid::BUTTON_DOWN);
- if (value & nn::hid::BUTTON_A){//ライト
- sccs = false;
- s_RenderSystem.Clear();
- drawText(10,70,"writing");
- s_RenderSystem.SwapBuffers();
- nngxWaitVSync(NN_GX_DISPLAY0);
- switch(curs){
- case 0:sccs = Test2_W(10);break;
- case 1:sccs = Test1_W();break;
- case 2:sccs = Test2_W(680);break;
- case 3:sccs = Test3_W();break;
- case 4:sccs = Test4_W();break;
- case 5:sccs = Test5_W();break;
- default:break;
- }
- }else if (value & nn::hid::BUTTON_X)
- {//ベリファイ
- sccs = false;
- s_RenderSystem.Clear();
- drawText(10,70,"verifi");
- s_RenderSystem.SwapBuffers();
- nngxWaitVSync(NN_GX_DISPLAY0);
- res =nn::fs::MountSaveData();
- if (res.IsFailure()){
- drawText(8,100,"Mount Fail");
- }else
- switch(curs){
- case 0:sccs = Test2_V(10);break;
- case 1:sccs = Test1_V();break;
- case 2:sccs = Test2_V(680);break;
- case 3:sccs = Test3_V();break;
- case 4:sccs = Test4_V();break;
- case 5:sccs = Test5_V();break;
- default:break;
- }
- }else if (value & nn::hid::BUTTON_UP){
- if(curs > 0)curs--;
- }else if(curs < menu_max)curs++;
-
- if (value & (nn::hid::BUTTON_A | nn::hid::BUTTON_X)){
- if (sccs == false)drawText(8,120,"Failed");
- sprintf(str,"desc %d",res.GetDescription());
- drawText(10,140,str);
- s_RenderSystem.SwapBuffers();
- NN_LOG("desc %d",res.GetDescription());
- WaitKey(nn::hid::BUTTON_B);
- }
- }
-}
-
-
-/*---------------------------------------------------------------------------*
- End of file
- *---------------------------------------------------------------------------*/
-
diff --git a/trunk/CardSaveDataMover/Imp/source/test_data.h b/trunk/CardSaveDataMover/Imp/source/test_data.h
deleted file mode 100644
index 3525aa4..0000000
--- a/trunk/CardSaveDataMover/Imp/source/test_data.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef TEST_DATA_H_
-#define TEST_DATA_H_
-
-void TestMain();
-
-#endif
diff --git a/trunk/CardSaveDataMover/OMakefile b/trunk/CardSaveDataMover/OMakefile
deleted file mode 100644
index 372a9da..0000000
--- a/trunk/CardSaveDataMover/OMakefile
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env omake
-#----------------------------------------------------------------------------
-# Project: Horizon
-# File: OMakefile
-#
-# Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
-#
-# These coded instructions, statements, and computer programs contain
-# proprietary information of Nintendo of America Inc. and/or Nintendo
-# Company Ltd., and are protected by Federal copyright law. They may
-# not be disclosed to third parties or copied or duplicated in any form,
-# in whole or in part, without the prior written consent of Nintendo.
-#
-# $Rev: 34658 $
-#----------------------------------------------------------------------------
-
-#\DemoCugp܂
-#PCɍ킹ăTvf̃fBNgw
-#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../common/include)
-SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir $(HORIZON_ROOT)/../CTR/sampledemos/common/include)
-INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR)
-
-LIBS += lib_demo libnn_am
-
-.SUBDIRS: $(exist-dirs \
- body \
- Imp \
- )
-
-DefineDefaultRules()
diff --git a/trunk/CardSaveDataMover/OMakeroot b/trunk/CardSaveDataMover/OMakeroot
deleted file mode 100644
index 7260486..0000000
--- a/trunk/CardSaveDataMover/OMakeroot
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/env omake
-#----------------------------------------------------------------------------
-# Project: Horizon
-# File: OMakeroot
-#
-# Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
-#
-# These coded instructions, statements, and computer programs contain
-# proprietary information of Nintendo of America Inc. and/or Nintendo
-# Company Ltd., and are protected by Federal copyright law. They may
-# not be disclosed to third parties or copied or duplicated in any form,
-# in whole or in part, without the prior written consent of Nintendo.
-#
-# $Rev:$
-#----------------------------------------------------------------------------
-
-# fBNgCAEgɂĂ̐
-#
-# a) \[XR[h[gfBNgɔzuꍇ
-# :
-# /OMakeroot
-# /foo/bar/OMakefile
-#
-# :
-# OMakefile ƓfBNgȉ objects images ܂B
-#
-# /foo/bar/objects/...
-# /foo/bar/images/..
-#
-#
-# b) \[XR[h sources ȉɔzuꍇ
-# :
-# /OMakeroot
-# /sources/foo/bar/OMakefile
-#
-# :
-# [gfBNgȉ objects images ܂B
-#
-# /objects/foo/bar/...
-# /images/foo/bar/...
-#
-#
-
-# [gϐ̎擾
-public.HORIZON_ROOT =
-if $(defined-env HORIZON_ROOT)
- HORIZON_ROOT = $(absname $(getenv HORIZON_ROOT))
- export
-
-if $(defined-env CTRSDK_ROOT)
- CTRSDK_ROOT = $(absname $(getenv CTRSDK_ROOT))
- if $(and $(defined-env HORIZON_ROOT), $(not $(equal $(HORIZON_ROOT), $(CTRSDK_ROOT))))
- eprintln(HORIZON_ROOT CTRSDK_ROOT v܂BpXݒ肷邩Aǂ炩`ĉB)
- exit(1)
- HORIZON_ROOT = $(CTRSDK_ROOT)
- export
-
-if $(not $(HORIZON_ROOT))
- eprintln($"$$CTRSDK_ROOT `Ă܂")
- exit(1)
-
-include $(HORIZON_ROOT)/build/omake/commondefs
-
-DefineCommandVars()
-
-.PHONY: all build clean clobber
-.PHONY: run run-scripts
-
-#
-# OMakefile ̓ǂݍ
-#
-.SUBDIRS: .
-
diff --git a/trunk/CardSaveDataMover/body/OMakefile b/trunk/CardSaveDataMover/body/OMakefile
deleted file mode 100644
index ec44a33..0000000
--- a/trunk/CardSaveDataMover/body/OMakefile
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env omake
-#----------------------------------------------------------------------------
-# Project: Horizon
-# File: Omakefile
-#
-# Copyright (C)2010 Nintendo Co., Ltd. All rights reserved.
-#
-# These coded instructions, statements, and computer programs contain
-# proprietary information of Nintendo of America Inc. and/or Nintendo
-# Company Ltd., and are protected by Federal copyright law. They may
-# not be disclosed to third parties or copied or duplicated in any form,
-# in whole or in part, without the prior written consent of Nintendo.
-#
-# $Rev: 25650 $
-#----------------------------------------------------------------------------
-
-SUPPORTED_TARGETS = CTR-T*.Process.MPCore.*
-#CTR_APPTYPE = BOTH
-#CTR_APPTYPE = CARD
-CTR_APPTYPE = NAND
-
-#demoCuʒuw
-#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../common/include)
-#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../CTR_SDK/sampledemos/common/include)
-#INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR)
-
-# rh\[XR[hw肵܂B
-#SDɃZ[uꍇmembak -> exsave ύX
-SOURCES[] =
- ./source/main.cpp
- ./source/savefile/savedata.cpp
- ./source/savefile/membak.cpp
- ./source/savefile/savefile.cpp
- ./source/screen/screen.cpp
- ./source/gui/gui.cpp
- ../common/shfnt.cpp
- ../common/sleep.cpp
- ../common/common.cpp
-
-#LIBS += lib_demo libnn_am
-#LIBS += libnn_ps
-
-TARGET_PROGRAM = CtrSaveDataMover
-
-TITLE = CSM_body
-
-# ROMFS ̃[gpXw肵܂B
-#ROMFS_ROOT =
-
-# Ǝ RSF t@Cw肷ꍇ
-ROM_SPEC_FILE = body.rsf
-DESCRIPTOR = $(CTRSDK_ROOT)/resources/specfiles/repairtool.desc
-
-# oi[AACR
-CTR_BANNER_SPEC = banner_null_icon.bsf
-
-
-#Cia o[W:}X^OɍXV邱
-#W[rsfŎw(Remasterversion)
-MAKECIAFLAGS = -minor 0 -micro 10
-
-include $(ROOT_OMAKE)/modulerules
-
-build: $(DEFAULT_TARGETS)
diff --git a/trunk/CardSaveDataMover/body/banner.bsf b/trunk/CardSaveDataMover/body/banner.bsf
deleted file mode 100644
index 516f44d..0000000
Binary files a/trunk/CardSaveDataMover/body/banner.bsf and /dev/null differ
diff --git a/trunk/CardSaveDataMover/body/banner/BannerModel_test/COMMON/COMMON.cmdl b/trunk/CardSaveDataMover/body/banner/BannerModel_test/COMMON/COMMON.cmdl
deleted file mode 100644
index 63f2c7a..0000000
--- a/trunk/CardSaveDataMover/body/banner/BannerModel_test/COMMON/COMMON.cmdl
+++ /dev/null
@@ -1,274 +0,0 @@
-
-
-
-
-
- MetaData
-
-
-
-
-
-
-
-
- ContentSummaries
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ModelDccToolInfo
-
-
- OptimizationLogs
-
-
-
-
-
-
-
-
-
-
-
- Skeleton.Bones["*"].AnimatedTransform
-
-
-
-
-
-
- IsVisible
-
-
- Meshes["*"].IsVisible
-
-
- IsBranchVisible
-
-
-
-
-
-
- Materials["*"].MaterialColor.Emission
-
-
- Materials["*"].MaterialColor.Ambient
-
-
- Materials["*"].MaterialColor.Diffuse
-
-
- Materials["*"].MaterialColor.Specular0
-
-
- Materials["*"].MaterialColor.Specular1
-
-
- Materials["*"].MaterialColor.Constant0
-
-
- Materials["*"].MaterialColor.Constant1
-
-
- Materials["*"].MaterialColor.Constant2
-
-
- Materials["*"].MaterialColor.Constant3
-
-
- Materials["*"].MaterialColor.Constant4
-
-
- Materials["*"].MaterialColor.Constant5
-
-
- Materials["*"].TextureMappers["*"].Sampler.BorderColor
-
-
- Materials["*"].TextureMappers["*"].Texture
-
-
- Materials["*"].FragmentOperation.BlendOperation.BlendColor
-
-
- Materials["*"].TextureCoordinators["*"].Scale
-
-
- Materials["*"].TextureCoordinators["*"].Rotate
-
-
- Materials["*"].TextureCoordinators["*"].Translate
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
-
- 0 1 2 1 3 2
-
-
-
-
-
-
-
--12 -6 6.5
-12 -6 6.5
--12 6 6.5
-12 6 6.5
-
- 0 0 1
-
-0 0
-1 0
-0 1
-1 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Textures["banner"]@file:Textures/banner.ctex
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- DccToolSourceNode
-
- BONE_00
-
-
-
- Shapes[0]
- Materials["MT_00"]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/trunk/CardSaveDataMover/body/banner/BannerModel_test/COMMON/Textures/banner.ctex b/trunk/CardSaveDataMover/body/banner/BannerModel_test/COMMON/Textures/banner.ctex
deleted file mode 100644
index c36b19c..0000000
--- a/trunk/CardSaveDataMover/body/banner/BannerModel_test/COMMON/Textures/banner.ctex
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- B/YH9gf2B/YH9gf2B/YH9wf2B/YH9gf2B/YH9wf2B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf2B/YH9gf2B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH9wf3B/cH9wf3B/gH+Af4B/cH9wf3B/cH+Af4B/gH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/sH+gf6B/oH+gf6B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf7B/sH+wf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af8B/wH/Af7B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf+B/0H/Qf9B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/wf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf/B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/8H/gf/B/4H/wf/B/4H/gf+B/4H/gf+B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Af8B/wH/Af8B/0H/Af8B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Af9B/wH/Qf9B/0H/Qf9B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH/Af8B/wH/Af7B/sH+wf8B/sH/Af7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+wf6B/sH+wf7B/sH+gf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af4B/gH9wf4B/cH+Af4B/gH+Af4B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Qf4B/kH+Af4B/gH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/sH+wf7B/sH+wf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH/Af8B/sH+wf7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/wH/Qf8B/wH/Af8B/0H/Qf9B/0H/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf9B/0H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf+B/4H/gf+B/4H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/8H/wf/B/4H/wf+B/8H/wf/B/8H/wf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/8H/wf/B/4H/wf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/gf+B/4H/gf/B/8H/wf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/0H/Qf9B/0H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Af8B/wH/Af9B/0H/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH+wf7B/sH+wf7B/sH+wf8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/sH/Af8B/wH/Af8B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+gf6B/oH+wf7B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/kH+Qf6B/oH+gf5B/kH+Qf5B/kH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH9wf4B/cH9wf3B/cH+Af4B/gH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/gH+Af4B/gH+Af5B/kH+Qf4B/gH+Af5B/kH+Qf5B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+wf7B/sH+wf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/wH/Af7B/wH+wf8B/wH/Af8B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/0H/Qf9B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/Qf9B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/8H/gf+B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf+B/4H/wf+B/8H/wf+B/4H/gf+B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/0H/Qf9B/4H/gf+B/0H/Qf9B/0H/Qf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/0H/Af8B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/wH/Qf9B/0H/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH/Af8B/wH/Af7B/wH+wf8B/wH/Af7B/sH+wf7B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+wf6B/sH+wf7B/oH+gf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/sH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH+Af4B/gH9wf4B/gH+Af4B/gH+Af4B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Qf5B/kH+Qf5B/gH+Qf5B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Af4B/kH+Af4B/gH+Af4B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+wf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH/Af8B/sH+wf7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Qf9B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/8H/wf/B/4H/gf+B/8H/wf/B/8H/wf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/8H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf+B/8H/gf/B/4H/wf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/Qf+B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf9B/0H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf8B/0H/Af9B/0H/Qf8B/wH/Af8B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH+wf7B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/sH/Af8B/wH/Af8B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+gf7B/oH+wf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf6B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/kH+Qf6B/oH+gf6B/kH+Qf5B/kH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH9wf4B/cH9wf3B/cH+Af4B/gH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Af5B/gH+Qf4B/gH+Af5B/kH+Qf5B/kH+Af5B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+wf7B/sH+wf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/wH/Af7B/sH+wf8B/wH/Af8B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/wH/Af9B/wH/Af8B/wH/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf+B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/0H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/wf+B/4H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/8H/wf/B/8H/gf+B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf+B/4H/wf/B/8H/wf+B/4H/gf+B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/0H/Qf9B/4H/gf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Qf8B/wH/Af8B/0H/Af8B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/wH/Qf9B/0H/Qf9B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH+wf8B/wH/Af8B/sH+wf7B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/sH+wf7B/sH+wf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+gf6B/oH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH+Af4B/gH9wf4B/cH+Af4B/gH+Af4B/cH9wf3B/cH9wf3B/cH+Af3B/cH9wf3B/cH9wf3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/kH+Qf5B/gH+Qf5B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/kH+gf6B/oH+gf6B/kH+gf6OPsH+gf6m/2r/gf6B/oH+gf6B/oH+gf6B/oH+gf6q/6r/gf6B/o4+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oo+2n8B/oH+gf6B/sH+wf7B/sH+wf6B/qr/qv+B/sH+6v+q/4H+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/ur/pv+B/sH+2n9B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7Wf1p/Qf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH/Af8B/sH+2n9af0H/Af8af1p/Qf8B/wH/Af8B/wH/Af8B/wH/Af8af1Z/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/wH/Qf8B/wH/Af8B/wH/Qf8B/0H/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Wn+q/8H/Qf9B/0H/Qf9B/0H/Qf9B/0H/av/q/8H/Qf9m/44/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf9B/0H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/4H/gf+B/4H/wf/B/8H/wf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/GP8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/9p/2n/B/8H/2n/af8H/wf/B/8H/wf/B/8H/wf/B/8H/2n/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8Y/2n/B/8H/2n/af8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/gf+B/4H/gf/B/8Y/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+Wf9p/wf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/mn/OP4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/wH/Af9B/0H/Qf9B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/sH+wf7B/wH+wf7B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf7B/oH+wf7B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+gf6B/oH+gf6B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf5B/kH+Qf5B/kH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf4B/gH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Af5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH9wf3B/gH+Af4B/gH+Af3B/cH9wf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/kH+Qf4B/gH+Af4B/kH+Qf5B/kH+Af5B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+c3uB/kH+Qf5GPqb7N/dz9zPzAf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/lq2wf5jbq/u7+7r6qvqgf5jqkH+Y+In5mfmY+Ij4i8/f//7+7v7v/////v7u/u393f3c/Mz8zf3c7dSskJpv/////v7u/u//+8/e/u7+6+3N/dCZaNut/d393PzM/Mv7t8ua+qGpYJlgqFCoUKZI6ZCoV+iAp0CmQLZAtkC1MKdBt1C2QLUzyGK3ULUwtkC1MLUwtkC2QLZAtkCnQKdQjpevxJ2s7t/////+/u7+5aud/dW6jPzN/d393PzIy6/////+/u7+7/////7+7v7t/d390al7/M393f3c/Mz8wrdp66C2QLZEuXCnUKZAp0C2QLZAp1CnUKZApkCnUKdQp1v7s8hq+qv7u/u6+qr6pMhp+ZXXePiJ+Zn5mPiI+I/////+/u7+7//+//7+7v7t/dz92Nuhp2393f3a67rstq7Bjrve1a2+/////v7u/uW7mMywqGjbrf3d/dz8zPzDx2C1QcVAxDC1QrdQxDC1MMQwxDDEMMQwxDC0MMQwtUC2R9qQtUbZi/u7+7r6qvqgtUXYcLZF13n5mfmY+Ij4j/////7+7v7v/////v7u/u393f3c/MW6mc3M/dCYYal//////v7u/u3f5J7O/u3+7f3d/drsvPzN/d393PzM/Mv7srhq+qC2QKdSt2HGWfqZ+ZfoiPiI+In5mfmY+Ij4i/u7+7r6qvqr+7v7uvqp+pn5mfmY+Ij4ifmSxVHFQMQwf7B/wI2gjrB/wH/AjrB/xaygjJS6kJqAjKCOsIuQjKB/wH/Af8B/wH/Qf9B/wH/QfsB/wI6wf8B/w4/Qf8Wew7hwqGC1QKZQmXCbkKhgmoC1QLVAxDC1QKdQmXCmUJhwjKCOsIygjrB/xJ7Af8GOwIuQjbCbkI2wfsB/wH7AfsGP3d/7zu7+7/////7+7v7t/d393PzM/M393f3c/MjMv/////7+7v7v/////v7u/uzt293QmoCZff3d/dbKnPzL+7v7uvqq+qv7uNuq+qr6psup+ZCNtcmJ+Zn5mPiI+IGocKdq+qfpkLZSt2PHYLVJ+Zn5mPiI+In5l+iI+Ij4jN/hjs7+6c7QfsB/0I2wjs390qumypCocIugjKCZgJqQf9B/0I7Af9B/0H/gf9B/4I2wjsa8vPzDjtWe3PzM/MC2UKdgtVC2UKhzqpCnZLmSxlC2WPiCx2CnYKhwp2Coe/u7+7r6qvqr+7v7uvqq+qfZmfmQmYKpkJuhqpTJh+iAf+B/4H/gf+B/4H/gf+B/4H/gf+z8yt3Qf+B/4Y7Qf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/r7dB/4H/s/Mz92/u7+7r6qvqq7MGNyvqmu6j5mfmY+Ij4ifmX2Zj4h+iAjsv7sIy6+qv7u/u6+qr6oJqZ+ZCod+iJ+Zn5mPiI+IB/4H/gf+B/4H/gf+B/4H/gf+B/5Z7Qf+B/4H/gf+vt0H/gf/B/4H/wf/B/8H/wf/B/8H/8/Mvt0H/wf/GP4H/nvMCO1KywjMCO2/uwjMr6pLqgm6XIgJmAm6n5kJmI+Iv7u/u6+qr6pK3QjtSstay5+Zn5mPiI+IKqqOmQmZj4gH/wf/B/8H/wf/B/8H/wf/B/8H/wf+i90H/0n+z93PzAf/B/8H/wf/B/8H/wf/B/9J/gf/z8zP3Qf/B/+L3Qf+ncy/u6+qr6q/u7+7r6qeu5+Zn5mPiI+IbKoJqjuIXYi/u7+7r6qvqr+7e8yvqq+qbJmfmY+Ij4ifmZ+Zj4h/iAf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/5v/B//N7gf/B/8H/wf/B//e7Qf/z8wI3QjuCMsIzAfuB/4I3QjuCZkJqgp3CYgIywjdCaoIywf/B/8H/gf/B/+/uwf/r6oI7gf/CN0H7gf+n5kH7o+I/////+/u7+7/////7+7v7t/d393PzM/M392+3c/MGan//+//7+7v7pv/B+7v7r3uz93f3RqZv8zf3d/dz8zPzL+7v7uvqq+qjbsKd22ZCmafmZ+Zj4iPiF2IC2VddwtVCnY8iAtVC1W/u7+7n6qvqgtVC1ULVQtVXXefmT1mj4gH/gf/CN0I7gf/B/8H7gf/nN0IzM/MKrsI3QjuCLsIzAf/B/8H/wf/B/8H/wf/B/8H/wf/jN3P3Un/Sf/PzM/Mv7uNqq+qn6oJmWu7Cohsqp+Zn5mPiI+IG3cKiCx3Cma/u7+7r6qvqr+7v7ueu6+qjpmOmQp3O4gJqjuqXYh/iAf/B/8H/wf/B/8H/wf/B/8H/wf/z8yc3Qf/B/8Y7gf/B/8H/wf/B/8H/wf/OP/e7gf/B/8Y/63di+7f3c/Mz8y/u7+7r6qvqq7MCN2vqjq7n5mfmY+Ij4ifmWyZj4hdiErdv7tKu6+7v7u/u6+qr6oJqgmqCogKiI6Zn5l+iI+Iev+b/+/u7+4H/wf/OP8H/9/dzt3PzM/MCO4I7a3MCMwH/wf/B/8H/wf/B/8H/wf/CO4I7hnMnN0H/lnuz8zPzL+7v7uvqq+qv7tbu56qGoifmTuIj4gsdwpmCmYLVQtVfLu/u46qr6q/u7+7r6qeugt3jpkLZht3fZkJmSuIbYgH/wf/B/8H/wf/B/8H/wf/Sf4H/8/Mz90H/wf/i90H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/gf/B/8H/gf/v7u/u6+qr6q/u4zMr6qvqkuZn5l/iI+In5mfmY+Ij4gI3QjtKbsIzAfuB/4I3QjtO5kJqkyHCogIuwjcCakIuwf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+vP///83u7+7/////7+7v7t/d393PzM/M393f3c/Mz8wH/gf/B/4H/gf/B/4H/wf+CO0H/gjcB+4H/gf+B/45y7+7v7uvqq+qv7u/u6+qO4ifmZ+Zj4iPiJ+ZCnaPiAtm3v8Y/u/uve4H/gf+CNwI7d/d393PzM/MWssZy67MncsH/rz/eu3v7v/////v7u/u393f3c/Mz8zf3d/dz8zPzL+7v7uvqq+qv7u/u6+qr6p+iJ+ZPWaPiJ+Zn5mPiI+Iv7u/u6+qr6q/u7+7XJivqp+ZXXePiBxUPGafmS1Vj4j//97/7+7v7gf9B/0I3Ajc393f3c/Mz8xaywi6S6oJmAf9B/0I7AftB/0H/Qf9B/0IywjcCak6ywjsOO3PzM/Mv7u/u6+qr6pMiAp2PHYLZZ+Zn5mPiI+IXncsZU5mTWY7mL+7jqqvqr+7v7uvqq+qn5mfmY+Ij4ifmRmoXYgKhwf+B/0H/Qf9B/0H/Qf9B/1Z7Qf9z8zPzAf9B/2s3RjsB/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/UnsB/0H/c7cz8y/u7+7nrqvqr+7rsuvqq+qCalcmQqHCoefmZ+Zj4iPiAjbSttbukq6v7u/u6+qr6qOmTuYj4gKhp+Zn5mPiI+IB/0H/Qf9B/0H/Qf9B/0H/Qf9B/2+3CjsB/0H/Qf8KOwH/Qf9B/0H/Af8B/wH/Af8B/0H/M/cz8wH/Af8rNwH/L+7KduvqgjKCOtK2wjKSsqfmRmpj4g7hwm5OqkJlzuXv7u/u6+qr6q/uwjrr6oIyp+Zn5mPiI+In5kZuX6IO5cH/Af8B/wH/Af8B/wH/Af8B/wH/Af8GPwH/Af8rNzPzAf8B/wH/Af8B/wH/Af8B/xZ/Tj8z8zPzAf8B/vO3GrsGOuuy3y6r6q/u7+7r6qvqp+Zn5mPiI+In5k6qX6IO4e/u7+7nrqvqr+7v7uvqq+qCaiOmW6Ij4ifmZ+Zj4iPiAf8B/wH/Af8B/sH+wf7B/sH+wf7B/sH+wf7B/vO3M/MB/sH+wf7B/sH+wf7B/sH+wf7B/u+3HrsB/s4/M7cz8w52gjajbpKub+7v7uvqq+qjpk7mF2HCnWfmZ+Zj4iPiL+7v7uvqq+qv7u/u6+qr6qfmZ+Zj4g8hkuYn5kKdSt2B/sH+wf7B/sH+wf7B/sH+wf7B/u+3BjrB/sH+wf6B/oH+wf7B/sH+wf7B/sH+wf6B/sH+wf6B/oH+wf6B/oH+r+7e8uvqmy5COkI6gjICMifmQqWC3UKdQmnCacKhQmWB+oH+gjZCOkH+gf6B/oH+gjICNkJpwjICOkH+gjpB/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+Qf5B/oH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Af4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Qf5B/kH+Qf5B/gH+Qf4B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf5B/kH+Qf6B/oH+gf6B/l/dwf5XnZ/d393b2ZvZgf5PXUH+RqWX1VfVU9ET0QH+Qf5B/kH+gf6B/oH+gf6B/kH+gf6B/oH+gf6B/oH+gf5CNgH+QjYLzM/MwqGLyIH+QjpB/oI6QjHCnUIyAmnb3cLZG9mLGQLUwtTC1MLZF9VT1RPRE9EC1MLZD9ELVQLZAp1CnQJhgqFCZYJp112CnUJlhtkLVQ7dl9VT0RPRD8zPzMvIi8iPzM/My8iLyIfER8RCnUMMh8RHxENIQ4RPzM/My8iLyI/Mz8zLyIeMh8RHxENIQ0yHiEKdQtkC2QJlgmWCLgItwmWCZYJtwm3GagI2SuGCNkIyQjICNkI2U12f3dMdm9mf3d/d29mb2Y8dl9VLGVPRF9VX1VPRE9EGZcIyQmnCbcIyQjZCLgIyAmGCZYKdQp1CZcJpwmGCacsZT8zHFQvIj8zPzMvIi8iC2UfEQmnDEMfER8RC2QLUwtTC1MLVAtUC1MLZAtkCnUcVAtUHFQLZAtkCoYKZQqGCnVNdgqGPHZ/d393b2ZvZgmXPHYJpyxlX1VfVU9ET0QdQwtkHiILVAplCoYLZAqGHxELVAxDC1QLZAp2C2QKdQmnHGUJpxxUPzM/My8iLyIJlwp1CZcJuB8RHxEKdQtlf3d/d29mb2Z/d393X1VvZl9VPlRPRBxEDEMuRAxDDDN/d393b2ZvZj1VDENvZh1EX1VfVT9DT0RfVU9ET0RPRD8zHUMvIh4yDEMMMgxDDDMfER4hDEMMQwxDDEMLVAtULzI/Mx4iLyI/Mz8zLyIvIg0yHxELVAxDHxEfEQxDDDMMQwtUDEMLVAplCZcKdQmXC0MLZBxEC2UKdgmoCoYJqAi5CNsIuQjbB+wI6wf8S5gIygjrCMoI7Af8TWYH/D1VHjMLZR4iC2UKhgmoCnYJmB4hC1QMQwtUCnUJlwplCocIygjsCMoI6wf8LGUH7Am5CLkI2wmpCMsH7AjsCOwI7G2ICalvZjuHCoc9dgmXCnZfVU5lT0RPRAmYCnY+VBtmb3d/dwtUHFR/d393X2VvZgtlC1QLZRxUHVRfVT9ET0Q/Mz8zLyIvIj8zPzMvIi8iCZcfIQjKCakfER8RC1QNMj8zPzMvIi8iPzM/My8iLyIfER8RDiENIh8RHxENMgxEf3d/d29mb2YKdgmHK3YKh19VX1VPRE9EPVUsZRxUPkQqmH93b2ZvZn93f3dvZm9mX1VfVU9ET0RfVT1lP0QLZj8zPzMvIh0zC1QeQwxEDEMOIgxEC1QMRAxEDEQMRAxEPzM/My8iLyI/My8zLyIvIg0zHxELVAtUHxEfEQwzDDN/d393b2ZvZn93bndvZl5VLFVfVS1ET0RfVU9ET0Q/QwtlXncLVD1Vf3d/d29mb2YMRBxEDEMMRF9VX1U/RE9EPzM/My8iLyI/My8zLyIvIh8RHxENMw0yHxEfEQ0iDDMMQwxEDEMMRB1DPzMLVB8iDEMMRAxDC0QLVAxEC1ULZl13CndfZgtmK3d/dz1mb2ZfVSxVT0RPRE9VX1VPRE9Ef3dud29mTWYrd393LGZvZl9VLGU/RAtlHFVfVQxVT0Q/Mz8zLyIvIj8zPzMvIh8iHxEfEQtUDSIfEQwzDEQLRB1DC1ULVAtUC1UvMwtUDTMMRAxEDEQMRAtUC1ULVQtVf3d/d29mb2Z/d393b2ZvZl9VX1VPRE9ET1UuRC5EDER/d393b2ZeZX93LGYdVAxEHEQMRAxDDDMMRC1ELkM/RD8zPzMvIi8iPzMvMy8iLyIOIh8RC2YMRB8RHxENIg4RHjMvMy8iLyI/My8zLyIeMx8RHxEOIg0iHxEMRAxEC1ULZgp3C1ULZgmICaoKhwmqC1QLZgtVC2YKdwmZCncJqgjMCO4IzAjuB+5/dwjub2YIzAjtCMwI7QjuX1UI7k9EC1UKZgtlCncKiAmqCYgJqgtmCncLZgp3CZkJuwmZCbsIzAjuCMwI7gjuPzMI7i8iCMwI7gjMCO4I7h4zCO4Jqn93f3dvZm9mTXcLVT1mC1VfVV9VT0RPRD5VC2U/RAtVC1ULVQtVC2YsZn93LGZvZgtmCmYLZhxVPVVfVU9ET0Q/Mz8zLyIvIj8zLzMvIi8iHxEfEQp3C1UfER8RDEQMMy4zPzMvIi8iPzM/My8iLyIfER8RDDMMMx8RHxEMRAtVf3d/d29mb2YsZgtmLGYsVV9VX1VPRE9EHFU+VQtVPkQ8d393b2ZvZn93f3dvZm9mX1VfVU9ET0RfVS1VPkQLVT8zLjMvIgxVC1UuMwtVDTMMVQtVC1ULVQtVC1ULVQtVPzM/My8iLyI/My8zLyIvIg0iHxELVQtVHxEfEQwzDDN/d393b2ZvZn93TWZvZj5VPlVfVT5ET0RfVU9ET0Q/RAtmCncLVQtmf3d/d29mb2YMRAtVDEQLVV9VX1U/RE9EPzM/My8iLyI/My8zLyIfIh8RHxENMw0iHxEOEQ0iDDMMRAtEDEQLRC4zPzMeIi8iDEQLRAxEC1UOIh8RC1QNIn93LGZvZhxVC1ULVQtVC1VfVRxVT0QtRAtVC1ULVQtVC1U8ZixVb2Z/d393b2ZvZk9VX1VPRE9EX1VPVU9EPkQ/My4zLyIvIgtVC2YLVQtmHxENMwtlC2YLVQtmC2YLZi8zPzMdMy8iPzM/My8iLyIKdg0zCnYKdx8RHxEKZgxEf3d/d29mb2Z/d393b2ZvZhtmTlUKZj9EX1VfVU9ET0RNZgp2PVULVQqICakKdgmYLkQLVC5DDEQLZgqIC1UKdy8zPzMvIi8iPzM/My8iLyIfER8RDEMNMx8RHxENIg0iHjMMRB4iDEQLVQp3C1UKdw4iDEQMMwxEC1UKdwtVCncIywjtCLoI3Af+ObsH7im6CaoIzAmpCMsI7QjcCO0I7X93f3dvZm9mf3cLZm9mLGZfVV9VT0RPRF9VHGVPRC1UCZkIywmZCMsI7QjtCO0I7QmZCMsJmQjLCO0I7QjtCO0/Mz8zLyIvIj8zLjMvIh8iHiIfEQmpCnYfER8RC1ULVAtEf3cLVF9Vf3d/d29mb2YLVC1EC1UMRF9VX1U+RD9Eb2YMMz5VDDMtRH93PkRvZi1EDDMMRAxDLkRfVS5DT0QLVQtUC1ULVQtUC1QLVQtVC1QLVQtlC2ULZQtlC2UKdgtUC1QLZQtlLzM/My8iLyIKdgxUCocKhx8RHxELVQtUf3d/d29mb2ZOVU5lPlU+VV9VX1VPRE9ELkQuRB1DHUN/d393b2ZvZk12CnY9ZQtlX1VfVU9ET0Q+VAtUT0QtRD8zPzMvIi8iDUMMQwxDDEMfER8RDEQMRAxEDEQLVAtULzM/Mx4yLyI/Mz8zLyIvIgxDDiIMRAtEHxEfEQwzDSIKdgplC2ULZW53f3dfZm9mC1ULZQxUPkRfVV9VT0RPRH93LHZvZixlf3d/d05lb2ZfVQxUP0QLVC1UX1UMVE9EPzM/My8iLyI/Mz8zLyIvIh8RHxEOEQ0iHxEMQwxDC1QuQwtUC1QLVAtULjMLVAxDC2QLVAtUC1QLVAtUC1QLZH93PHZvZk5lCnZNdgtlTmZfVU9VT0RPRBxUX1VPRE9Ef3d/d29mb2ZNd012PGY9ZV9VX1VPRC5EC2U9VAtUHUQ/Mz8zLyIvIj8zPzMvIi8iDTIfEQtlDEMfER8RDSIMQz8zDEMeMgtTC1QMUwtTC1MMQwxDDEMMQwxDC1MLQwtUf3d/d29mb2Z/d393b2ZvZl9VX1VPRE9EX1VOVE9EHUN/d393b2ZvZn93f3dOVRxDLUQMQwxDDEMMQx1DDDM/Qz8zPzMeMi8iPzM/My8iLyILUx4hC2QLZB8RHxEMMg0hLzMuMy8iLyIvMz8zLyIvIh8RHxEOEQ4hHxEOIQ0yDEMcVAtkDEMLU393f3dvZm9mHUMMQy5DC0NfVV9VT0RPRH93HGVvZgtTC2QLVAtTC1NfVQtTT0QMQwtDC0MLQwtTLjMLUw1DC1Q/Mz8zLyIvIgtTC2QLVAtkHxEfEQxDDEM/MwxDLyIdMgtTC1QLVAtkHxEOIQxDC1MLVAtkC2QKZAtUC2QLUwtUCnQKhQpkCoULUwtkC2QKdAp1CZYKhQmnCacIyAmmCMgI2Qf6CNkH+gmnCMgIyAjZCOkH+gjpB/oKZAqFCnUJlgmmCLgItwjZCoUJpgqFCacIyAjpCMgI6QjZCOkH6Qf6B/kH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf5B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/gH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/gH+Af4B/gH+Af5B/kH+Qf4B/gH+Af4B/kH+Qf5B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf6B/kH+Qf5B/kH+Qf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B+kH+gf6CNgItwjpCMgH+gf6B/oH+gfpCNkH+gfpB/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gmWCnUJpwqFC2QLUwp0C2QIyAmnCNkIyAqFCnUJpwmWC0MLQwtTC1MLUwtTC1MLUwtkC2QKhQp1C2QLZAp1CoUH6QjZB/oH6gjICLgI6QjZB/oH+gf6B/oH+gfqB/sH+wmnCacIyQjICacJpwjICMkH6gjqB/sH+wjqCOoH+wf7C2QKdQtkCnUKhgmXCoYJpwp1CoUKhgmXCZcIuAm4CMkJpwmnCLgJuAmXCoYJpwqGCMkIyQjZCNkJuAmXCMkIuAmnCLgIyQjZCMkI6gjqB/sH6gf6B/sH+wf7B/sH+wf7COoI6gf7B/sI2gjJB+sI6gf7B/sH+wf7B/sH+wf7B/sLZAtkCnUKZQtlCoYKdQqGCoYKhgmnCZcKhgmXCacJqAmXCbgJpwi4CbgJlwi5CagJuAjJCMkI2gjJCLkI2gjJCMkIuQjaCNoIyQjJCNoI6gf7B+sH/Af8B/sH+wf8B/wI2gjqCOsH6wjrCNsH+wfrB/wH/Af8B/wH/Af8B/wH/AqGC2UJhgp1C1QLVAp1CnUJqAqGCLkJqAqGCoYJqAmoC2UKZQp2CoYKZQtlCoYKdgmHCZcJqAm5CZcJhwm5CagI2gjJCOsI6wjJCMkI2wjbB/wH/Af8B/wH/Af8B/wH/AjKCMoI6wjrCMoIygjrCOsH/Af8B/wH/Qf8B/wH/Qf9C2QLZQp1CmUKZQqHCnYKhwqGCoYJqAmoCocJmAmoCbkJqAjKCakIygjsCOwI7AjsCLkI2wjKCNsI7AfsB+wH/QjKCMoI2wjbCMoIygjbCOwH/Af8B/0H/Qf8B/0H/Qf9CNsH7AfsB/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0IywmpCNsIugmXCnYJmAqHCOwIygfsCNwJqQmYCMoJqQtlC1UKZgtlC1QLVAtUC1QKdgpmCZgKhwtlC2UKhwp2B/0H7Af9B/0I3AjLB+0I7Af9B/0H/Qf+B/0H/Qf+B/4IugmpCNwIywmpCZgIywjLB/0H7Qf+B/4I7AjsB/0H/QtEDEQLVAtUC0QLVAtVC2ULZQtlCncKhwp2CncJmAmZC1ULZQpmCnYLVQtVCnYLZgqHCZgJqQm6CYgKhwm6CakJqQmpCMsIywm6CMsI3AjcCOwI7Qf+B/4H7Qf9B/4H/gjLCNsI7QftCMwIywjtCO0H/gf+B/4H/gf+B/4H/gf+C0QMRAtVC1QMQwxDC0QLVAp2CmYJmAmIC2ULZQqHCocMRAtVC1ULZQtlCnYKdgqHCmYKdwqICZkKiAmZCakIugi7CboI3AjcCakJqgjMCMwH/gfuB/4H/gftB+0H/gf+CaoIuwjcCNwIywjcCO0I7QfuB+4H/gf/B/4H/gf/B/8Kdwp2CogKhwtlC1UKdgtmCakJmQi7CLsJiAqHCaoJqQtUC1ULZQtmC2UKZgp3CogKdwqHCZkJqQmICakJqgi7CNwI3AfuCO0IzAjLCO0I7Qf+B/4H/wf/B/4H/gf/B/8IywjLCN0I7QjMCN0I7QfuB/4H/gf/B/8H/wf/B/8H/wp3CncJiAqIC2YLVQp3CmYJqgmqCMwIzAmZCogIuwmqC1QMRAtVC1UMRAtVC1ULVQp3CmYJmQqIC2YKZgqICogI7QjdB/4H/gjcCMwI7gjtB/8H/wf/B/8H/wf+B/8H/wm7CaoI3QjMCaoJqgjMCMwH7gjuB/8H/wjuCO4H/wf/C2YKdwpmCocJmQm7CZkIuwp3CYgJmQmqCaoIzAi7CNwIzAjuCN0H7gfuCN0H7gjdCN0H7gjuB/8H/gjuB/8H7gm7CMsI3AjdCNwI7gjuB/4H7gf+B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8IuwmZCMsJmQp3C1UKdwtmCMwJqgjdCMwJiAp3CaoJmQtVC1ULVQtVC1ULVQtVC1UKZgtmCogKiAtmC2YKiAqICO4I3Qf/B+4IzAi7CO4I3Qf/B/8H/wf/B/8H7gf/B/8JqgmqCMwIzAmqCaoIzAjMB+4H7gf/B/8I7gfuB/8H/wtVC1ULVQtVC1ULVQtmCmYLZgp3CogJmQp3CogJmQmqC2YLZgp3CncLZQtVCncLZgmZCZkJuwi7CZkKiAm7CaoJqgm7CMwI3QjLCMwI3QjuB+4H7gf/B/8H/wf/B/8H/wjdCN0H7gfuCMwIzAjuCO4H/wf/B/8H/wf/B/8H/wf/C0QMRAtVC1UMRAxEC0QLVQp3CmYJmQmIC2YLZgqICogMRAtVC1ULZgtmCnYKdwp3CmYKdwmICZkKiAmYCaoJqgi7CbsI3QjdCaoJqgjMCMwH/gfuB/8H/wfuB+4H/wf/CbsIuwjdCN0IywjMCN0I7QfuB+4H/wf/B/4H/gf/B/8KdgpmCncKdwpmCmYKdwp3CZgJiAmqCaoJiAmYCaoJqgp3CncKhwqICncKZgqICncJmQmZCboIuwmZCZgIuwm6CMwIzAjtCO0IzAjMCO0I7Qf+B/4H/wf/B/4H/gf/B/8IzAjcCO0I7QjcCMwI7QjtB/4H/gf/B/8H/gf+B/8H/wtVC1QKZgtVDEQMQwtUC0QKiAp3CaoJmQtmC2UKiAqIDEQLRAtUC1ULZQp3CmYKiAtmCnYKiAmYCocJmQmZCboIywi7CO0I3Qm6CaoI3AjMB/4H/gf/B/8H7gfuB/4H/gmqCboIzAjcCLsIzAjcCO0H7QftB/4H/gf+B/4H/gf+CakIywmqCMsI7QftCO0H7Qi6CNwIywjtB+0H/Qf9B/4I3Am6CNwIugmYCnYJmQqHCO0IywftCNwJqgmYCMsJugjcB+0H7Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0I7Qf+B/0I3AjLB+0I7Af+B/4H/gf+B/4H/Qf+B/4LZgtlCnYKdgp2CocKhwmYCocKhwmpCakJmAmpCakIygmYCakJqQi6CagJmAi6CakIygjLCNsI7AjLCLoI7AjbCMsIywjcCNwIywjbCOwI7Af9B/0H/gf+B/0H/Qf+B/0I7AftB/0H/QftCOwH/Qf9B/0H/Qf9B/4H/Qf9B/0H/QqHC2UJlwp2C1ULVAplC2UJqQmHCLoJqQqHCnYJqAmYC1QLVAtlCnULZQtVCnYKdQqGCocJqAmpCYcKhwmpCagI2wjKCOwI7AjKCLoI2wjbB/0H/Af9B/0H/Af8B/0H/QjKCMoI2wjrCMoIygjsCOsH/Af8B/0H/Qf8B/wH/Qf9C1QLVAtlC1ULVAtUC1QLVAp2CnUJmAmXC2ULZQqGCoYLVAtUC1QLZQtlCnUKdQqGCmUKdgqGCZcKhwmXCagIuQi5CbkI2wjaCagJqAjKCMoH/AfsB/wH/AjrCOsH/Af8CagIuQjKCNoIygjaCOsH6wfrB+wH/Af8B/wH/Af8B/wKdQp1CYcJhwplC1QKhgp1CagJqAjJCMkJlwqGCLkJqAtUC1QLZAtkC1QLZAtlCnUKdgp1CZcJlwqGCZcJpwm4COsI6wf7B/sI2gjJB+sI6wf8B/wH/Af8B/wH+wf8B/wIyQjJCOoI2gjJCMkI6gjqB/sH+wf7B/sH+wf7B/sH+wp1CnUKhgmWCnULZAqGCnUJpwmoCMkIyQmnCZYIyQm4C1QLQwtkC1QMQwtDC1MLVAqFCnUJpwmWC2QLZAqGCoUI2gjqB+sH+wjaCMkH6wjqB/sH+wf7B/sH+wf7B/sH+wjICbgI2gjZCacJpwjJCMgH+gfqB/sH+wjqCOoH+wf7C1QLZAtkCmQLZApkCnUKdQp1CnUKhgmWCoUKhQmWCacKZAtkCnUKdAtkCnUKdQqFCoUKhQmnCaYKhQmWCacJpwmnCbcIyQjZCLgIyAjZCNkI6gfqB/sH+wfqB/oH+wf6CMgIyAjZCNkIyAjICNkI6Qf6B/oH+gf6B/oH+gf6B/oJhgmnCZYJtwjIB+kI2AfpCaYItwi3CMgI2QfpCOkH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6CMgI2QjpB+kH6Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Qf4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af4B/gH+Af4B/gH+Af5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/kH+Qf5B/gH+Qf4B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf5B/kH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+Qf6B/oH+gf6B/kH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/sH+gf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH+wf8B/sH+wf7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Qf9B/0H/Qf9B/wH/Qf8B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/wf/B/8H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/gf+B/4H/gf+B/4H/wf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf+B/8H/gf/B/8H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Af9B/0H/Qf9B/0H/Af8B/wH/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/sH+wf7B/wH/Af8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf7B/oH+wf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+gf6B/oH+gf6B/sH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/kH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Qf4B/gH+Af4B/gH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH+Af4B/gH+Af4B/cH9wf3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af4B/kH+Qf5B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf6B/kH+Qf5B/kH+Qf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf6B/sH+wf7B/oH+wf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH/Af8B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/Qf9B/4H/gf+B/4H/gf9B/4H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/8H/gf+B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf+B/4H/gf+B/8H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/gf+B/0H/Qf9B/0H/Qf+B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH+wf8B/wH/Af8B/wH+wf7B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/sH+wf7B/sH+wf6B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf7B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Af4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Af5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf4B/gH+Af4B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af3B/cH9wf3B/cH+Af3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/oH+gf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/sH+wf8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Af8B/0H/Qf9B/wH/Qf8B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/wf/B/8H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf+B/4H/gf/B/8H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Af9B/0H/Qf9B/wH/Af8B/wH/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/sH+wf7B/wH/Af8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+gf6B/oH+gf6B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Af5B/kH+Qf5B/kH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH+Af4B/gH+Af3B/cH9wf3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf3B/cH9wf3B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf6B/kH+Qf5B/kH+Qf6B/kH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf7B/sH+wf7B/oH+gf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af7B/sH+wf7B/wH/Af8B/wH+wf8B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf9B/0H/Qf8B/wH/Af9B/0H/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/0H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/Qf9B/0H/gf+B/4H/gf9B/4H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/8H/gf+B/4H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/4H/wf/B/8H/wf+B/4H/gf+B/8H/gf/B/4H/gf+B/4H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/gf+B/4H/Qf9B/0H/Qf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH+wf8B/wH/Af8B/sH+wf7B/sH/Af8B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+gf6B/oH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf4B/gH+Af4B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af3B/cH9wf3B/cH+Af3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/oH+wf6B/oH+gf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/sH+wf8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Af9B/0H/Qf9B/wH/Af9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/gf/B/8H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/4H/wf+B/4H/gf+B/4H/wf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf+B/8H/gf/B/8H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Af9B/0H/Qf9B/0H/Af8B/wH/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH+wf7B/wH/Af8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+wf7B/sH+wf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+wf6B/oH+gf6B/sH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/oH+gf6B/kH+Qf5B/kH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/kH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH+Af4B/gH+Af3B/cH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af3B/cH9wf3B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf6B/sH+wf7B/oH+gf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af7B/sH+wf7B/wH/Af8B/wH+wf7B/sH/Af8B/wH/Af8B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/0H/Qf8B/0H/Af9B/0H/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/0H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/Qf9B/0H/Qf+B/4H/gf9B/0H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/8H/gf+B/4H/gf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf+B/4H/gf+B/8H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/gf+B/4H/gf9B/0H/Qf+B/0H/gf9B/0H/Qf9B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/wH/Qf8B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf8B/sH/Af8B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+gf6B/oH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/oH+gf5B/oH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Af5B/gH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af4B/cH9wf3B/cH9wf3B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/YH9wf3B/cH9wf2B/cH9wf2B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/oH+gf6B/sH+wf7B/sH+gf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH+wf8B/sH+wf7B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/0H/Af8B/wH/Af9B/0H/Qf9B/wH/Af8B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf+B/4H/Qf9B/0H/gf+B/4H/gf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/gf/B/4H/gf+B/4H/gf/B/4H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf/B/8H/gf/B/8H/wf/B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/Qf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/gf+B/0H/gf+B/4H/gf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Af9B/0H/Qf9B/0H/Af8B/wH/Qf9B/0H/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH+wf7B/wH/Af8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+wf6B/oH+gf6B/sH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/oH+Qf5B/kH+gf6B/oH+Qf5B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/gH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Qf5B/gH+Af4B/gH+Qf4B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af3B/cH9wf3B/gH9wf4B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/YH9gf2B/YH9wf2B/cH9gf2B/YH9gf2B/cH9wf3B/cH9wf2B/cH9wf3B/cH9wf3B/cH9gf3B/YH9wf2B/YH9gf2B/YH9gf2B/YH9gf2B/YH9gf2B/YH9g==
-
-
-
-
-
diff --git a/trunk/CardSaveDataMover/body/banner/banner.cbmd b/trunk/CardSaveDataMover/body/banner/banner.cbmd
deleted file mode 100644
index 2364568..0000000
Binary files a/trunk/CardSaveDataMover/body/banner/banner.cbmd and /dev/null differ
diff --git a/trunk/CardSaveDataMover/body/banner/banner_dummy.bcwav b/trunk/CardSaveDataMover/body/banner/banner_dummy.bcwav
deleted file mode 100644
index d579907..0000000
Binary files a/trunk/CardSaveDataMover/body/banner/banner_dummy.bcwav and /dev/null differ
diff --git a/trunk/CardSaveDataMover/body/banner/icon_24.ctpk b/trunk/CardSaveDataMover/body/banner/icon_24.ctpk
deleted file mode 100644
index cc54fe7..0000000
--- a/trunk/CardSaveDataMover/body/banner/icon_24.ctpk
+++ /dev/null
@@ -1 +0,0 @@
-MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMUUMMMMMMMMMMMMMUUUMUUUU]]]U]]]]eemMMMUUUU]UU]]]eee]]]eemmnemmvv,v,v-~]eeeemmvennvv,~-~Mv,~,~-~-~NNoM~NNoopn,v,v-~-~NNo-~NNooppnopӦҦӮӮopӦӦӦԮӦԮ7778XYφMUUUU]]]U]]e]eem]eej]mkeK*!m2vk+;-~LmNeeemmvv,vmvv,~,v-~-~Nv!-~K
moK*.uNoS:v-~!dM}K*!NnuopkNdl2oL2ktrҍk.Kl2kpO}nKtd
CtӦԮ
KB:kB.KB|77cXyӦ|k7m:!kXkY7XXYYzzzYzzכߛߛm:[kV:WJOSzzߛtxߛ,~-~M~NNooNooӦӦӮӮҦӮӮӮԮ77X77XXYyzԮ77X77XXYYz8YYyyzzߛzךߚߛXYyzzכߛߛzߛߛߜߜ
\ No newline at end of file
diff --git a/trunk/CardSaveDataMover/body/banner/icon_48.ctpk b/trunk/CardSaveDataMover/body/banner/icon_48.ctpk
deleted file mode 100644
index 24fd5a8..0000000
--- a/trunk/CardSaveDataMover/body/banner/icon_48.ctpk
+++ /dev/null
@@ -1,2 +0,0 @@
-MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMUUMUUUUUUUMMMMMMMUMUUUUUUUUUUUUUU]UUU]]]]]UUUUUU]]U]]]]]]]]]]]]eee]eeeeeem]]]]]]ee]]eeeeemeeeeemmnmmmnnnvveeemmmmnmmmnnvvvnvvvv,v,v,~v,v,v-~-~-~-~Mmnnvvv,v,~v,vv,~,~-~-~M~,~-~-~-~M~NNN-~NNNNooo,~-~-~M~M~NNNMNNNNoooNooooppopNNooooopoppӦӦӦӮӦӦӮӮӮԮԮMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMUMMMMMMMMMMMMMMMUMMMUUUUUUUUUUUUUMMMMMUUUMUUUUUUUUUUUU]]]U]]]]]]]UUUUU]]]U]]]]]]e]]]eeeeeeeeeemmm]]]]]eee]eeeeeemeeemmmnnmmmnnvv,veemmmmnvmnnvvvv,vnvv,v,v,~,~-~v,~,~-~-~M~MNnvvvv,v,v-~v,~,~-~-~-~-~N-~-~-~NMNNoNNNONoop-~M~M~NNNNoNNNoooopOoopppnoooopopӦӦӮҦҦӦӮӮҦӦӦӮӮӮӦӦӮӮԮԮӮԮ777777777778X78XXXYYy׆MMMUUUUUUUUUUUU]UUU]]]]]]]]]]]]eUUU]]]]]]]]]]eee]]]eeeeeeeememmm]]]eeeeeeeeeemmTemmm
-nnn+e+]2kkkk2Kemmne!Lknnvv2k2kkKT+;,~,~-~-~-~d-~u-~-~NNNvvm,v,v-~-~-~kk+;K*l\N
e~-~MMNNNnumm*!kkkKK-~NNNN\OdNoooo/pkKkBp!k}*:P}kkoooppkS*NdӦl2kkktӮ
CӦ:rӦ2Ӯkkk!kk|knSk0dk.Km:kӦӦӮԮӮԮt*kBkB777kckնS*2kck2!k7XXXBkBkXYYy7777XXX7XXXXYYyXYYyYyzzyzzzzߚzߛXYYyyzzzyzzzzߚߛߛzzߚߛߛߛߛ]eeeeeemeeemmmnnemmnnvvvnvvvv,v,v-~mmmnnvvvnvvvv,~,~-~v,v,~-~-~-~-~M-~-~-~NNNNov,v,v,~2kCk-~-~-~M
ekN:
eNm\NNooo*k*opd/uNNNNNoonoopopLCkpkkNd\oppt\ul*r
ColӦԮq/dkk\p\SӦӮӦӦӮӮԮԮkkҕplkk0d2k:*kl2kk*0l0lk0lkttkukkk7m:7Dz|!Pl7u677777XkԝԝXϗXYXXXYYyyz[.S!k6,2Ykkkkyzא[krtkzr|kr|kk:zzzߚzzzߚߚߛߛߛr|k:Uμzߛߛߛ,v,~,~-~-~M~M~N-~M~M~NNNNoNNNoOoopoooppNNNoooopoooppӦpӦӦӮӦӦӮӮӦӦӮӮԮӦӮӮԮԮԮӮԮ777777788X77777778XX7XXXXYYyXYYyyzzz788XXXXYXYYYYyyzYyyzzzzߛzzzߛߛߛYyzzzߚߚߛzߚߚߛߛߛߛߛߛpҦҦӦӦӦӮӮԮӦӮӮԮԮӦӦӮӮӮԮԮ67Ԯ77777877788XXX7777X777XXXXY8XXYYYyyYYyyyzzߚ7XXXXYYyXYyyyzzzyzzzzߚߛߛzߛߛߛߛߛyzzzzߛߛߛzߛߛߛߛ
\ No newline at end of file
diff --git a/trunk/CardSaveDataMover/body/banner_null_icon.bsf b/trunk/CardSaveDataMover/body/banner_null_icon.bsf
deleted file mode 100644
index 1db81c2..0000000
Binary files a/trunk/CardSaveDataMover/body/banner_null_icon.bsf and /dev/null differ
diff --git a/trunk/CardSaveDataMover/body/body.rsf b/trunk/CardSaveDataMover/body/body.rsf
deleted file mode 100644
index ffe9238..0000000
--- a/trunk/CardSaveDataMover/body/body.rsf
+++ /dev/null
@@ -1,29 +0,0 @@
-# AvP[ṼftHgl
-BasicInfo:
- # vÕ^Cgw肵܂B
- Title : $(TITLE)
-# BackupMemoryType: 128KB
- BackupMemoryType: None
- Logo : Nintendo
-# CompanyCode: "00"
- ProductCode : "CTR-N-22NA"
-
-TitleInfo:
-# Category: 0x0010
-# Category: SystemApplication
- UniqueId: 0xf8014
- Version: 0
-
-Rom:
- HostRoot : romfiles
-# SaveDataSize: 512K
-
-AccessControlInfo:
- UseExtSaveData : false
-
- FileSystemAccess:
- - CategoryFileSystemTool
-
-SystemControlInfo:
- RemasterVersion: 2
-
diff --git a/trunk/CardSaveDataMover/body/romfiles/banner.icn b/trunk/CardSaveDataMover/body/romfiles/banner.icn
deleted file mode 100644
index eb780b9..0000000
Binary files a/trunk/CardSaveDataMover/body/romfiles/banner.icn and /dev/null differ
diff --git a/trunk/CardSaveDataMover/body/romfiles/nnfont_RectDrawerShader.shbin b/trunk/CardSaveDataMover/body/romfiles/nnfont_RectDrawerShader.shbin
deleted file mode 100644
index 4290c2c..0000000
Binary files a/trunk/CardSaveDataMover/body/romfiles/nnfont_RectDrawerShader.shbin and /dev/null differ
diff --git a/trunk/CardSaveDataMover/body/source/gui/gui.cpp b/trunk/CardSaveDataMover/body/source/gui/gui.cpp
deleted file mode 100644
index 3faee27..0000000
--- a/trunk/CardSaveDataMover/body/source/gui/gui.cpp
+++ /dev/null
@@ -1,654 +0,0 @@
-/*---------------------------------------------------------------------------*
- Project: Horizon
- File: main.cpp
-
- Copyright (C)2010 Nintendo Co., Ltd. All rights reserved.
-
- These coded instructions, statements, and computer programs contain
- proprietary information of Nintendo of America Inc. and/or Nintendo
- Company Ltd., and are protected by Federal copyright law. They may
- not be disclosed to third parties or copied or duplicated in any form,
- in whole or in part, without the prior written consent of Nintendo.
-
- *---------------------------------------------------------------------------*/
-
-#include
-#include
-#include
-#include
-#include "demo.h"
-#include "gui.h"
-#include "../../../common/shfnt.h"
-
-//----------- types etc ---------------
-typedef struct{
- u16 x,y;
-}tU16xy;
-
-typedef struct{
- f32 r;
- f32 g;
- f32 b;
- f32 a;
-}tCol;
-
-typedef struct{
- uptr image;
- tCol color;
- f32 width;
-}tStyle;
-
-typedef void (*FUNCPTR)(u32 value);
-
-
-//------------------ コンポーネントクラス
-class cmBase{
-public:
- FUNCPTR callback;
- tU16xy pos;
- tU16xy size;
- bool enable;
- bool visible;
- u8 scr;
- u8 padding[1];
-public:
- cmBase():enable(false),visible(false){callback = 0;};
- virtual ~cmBase(){};
- void SetCallback(uptr adrs){ callback = (FUNCPTR)adrs;};
-};
-
-//PADボタン
-class cmButton: public cmBase
-{
-public:
- u32 mask;//PadStatus.Trigger のマスク
-public:
- cmButton(){mask=0;};
-
-};
-
-//パネル
-class cmPanel: public cmBase
-{
-public:
- tStyle style;
- char *caption;
-public:
- cmPanel(){
- caption="None";
- style.image = 0;
- style.color.r = 1.0f;
- style.color.g = 1.0f;
- style.color.b = 1.0f;
- style.color.a = 1.0f;
- style.width = 2.0f;
- }
-};
-
-//メッセージ
-class cmMessage: public cmPanel
-{
-public:
- u32 parent;//親コンポーネントID
-public:
- cmMessage(){style.width = 8.0f;}
-};
-
-
-#define LINES_MAX 20
-#define CHARS_MAX 128
-//メモ
-class cmMemo: public cmBase
-{
-private:
- char strlst[LINES_MAX][CHARS_MAX];
-public:
- tStyle style;
- u32 lines;//行サイズ:strlen配列数以下であること
- u32 parent;//親コンポーネントID
-public:
- cmMemo();
- bool setline(char *p,u16 ln);
- char* line(u16 ln);
- void clr(){
- for (int i=0;i 80 )
- {
- if (x < 160) return -10;
- else if (x <230) return -30;
- else return -50;
- }
- return 0;
-}
-
-//PANEL上の座標かチェック
-bool onPanel(u16 x,u16 y,cmPanel *p)
-{
- int px = pos2tpx(p->pos.x);
- int pw = pos2tpx(p->size.x);
- int py = 20;
-
- if (x <= (p->pos.x + px))return false;
- if (x >= (p->pos.x + p->size.x + pw))return false;
- if (y <= p->pos.y + py )return false;
- if (y >= (p->pos.y + p->size.y))return false;
- return true;
-}
-
-
-#define setText(x,y,s) shf_DrawText_0(x,y,s)
-#define setSize(sz) shf_SetSize(sz)
-
-void setColor(tCol *col)
-{
- //s_RenderSystem.SetColor(col->r, col->g, col->b,col->a);
- shf_SetColor(col->r,col->g,col->b,col->a);
-}
-
-//void setSize(f32 sz)
-//{
-// s_RenderSystem.SetFontSize(sz);
-//}
-
-/*
-#define FONT_CAPTION_SIZE 12
-//caption付きBox描画
-void drawBox(tU16xy top,tU16xy size,tStyle *st,char* str = 0)
-{
- u16 xe = top.x + size.x -1;
- u16 ye = top.y + size.y -1;
- setColor(&st->color);
- s_RenderSystem.SetLineWidth(st->width);
- s_RenderSystem.DrawLine(top.x, top.y, xe, top.y);
- s_RenderSystem.DrawLine(xe, top.y, xe, ye);
- s_RenderSystem.DrawLine(xe, ye, top.x, ye);
- s_RenderSystem.DrawLine(top.x, ye, top.x, top.y);
- if (str != 0){
- int w = (size.x - strlen(str)*FONT_CAPTION_SIZE) >> 1;
- int h = (size.y - FONT_CAPTION_SIZE) >> 1;
- if ((w>0) && (h>0)){
- setSize(FONT_CAPTION_SIZE);
- s_RenderSystem.DrawText(top.x + w,top.y + h,str);
- }
- }
-}
-*/
-
-//上画面、メッセージ枠表示
-void drawBox(tU16xy top,tU16xy size,tStyle *st,char* str = 0)
-{
- int i;
- shf_SetScale(2.0f,2.0f);
- setColor(&st->color);
- for (i=0;i> 1;
- h = (size.y - h) >> 1;
- if ((w>0) && (h>0)){
- setText(top.x + w+10,top.y + h,str);
- }
- }
-
-}
-
-//下画面ボタン表示
-void drawBox2(tU16xy top,tU16xy size,tStyle *st,char* str = 0)
-{
- int i;
- setColor(&st->color);
- shf_SetScale(2.0f,2.0f);
- for (i=0;i> 1;
- h = (size.y - h) >> 1;
- if ((w>0) && (h>0)){
- setText(top.x + w+10,top.y + h+10,str);
- }
- }
-
-}
-
-
-
-//描画
-void drawDisp()
-{
- //NN_LOG("draw\n");
- //上
- s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY0);
- s_RenderSystem.Clear();
- int i,j;
-
- for (i=0;ir = 0.0;
- col->g = 0.0;
- col->b = 0.0;
- break;
- case COLOR_GRAY:
- col->r = 0.5f;
- col->g = 0.5f;
- col->b = 0.5f;
- break;
- case COLOR_RED:
- col->r = 1.0f;
- col->g = 0.0f;
- col->b = 0.0f;
- break;
- case COLOR_BLUE:
- col->r = 0.0f;
- col->g = 0.0f;
- col->b = 1.0f;
- break;
- case COLOR_GREEN:
- col->r = 0.0f;
- col->g = 1.0f;
- col->b = 0.0f;
- break;
- case COLOR_YELLO:
- col->r = 1.0f;
- col->g = 1.0f;
- col->b = 0.0f;
- break;
- case COLOR_WHITE:
- col->r = 1.0f;
- col->g = 1.0f;
- col->b = 1.0f;
- break;
- case COLOR_PARPL:
- col->r = 1.0f;
- col->g = 0.0f;
- col->b = 1.0f;
- break;
- case COLOR_SKY:
- col->r = 0.5f;
- col->g = 1.0f;
- col->b = 1.0f;
- break;
- default:
- col->r = 1.0f;
- col->g = 1.0f;
- col->b = 1.0f;
- break;
- }
- col->a = 1.0f;
-}
-
-//------------------ class code ----------------------------
-
-nn::os::Thread s_thread;
-
-//thread
-//void Gui::thUpdate()
-void thUpdate(nn::os::LightEvent* pEvnt)
-{
- nn::hid::PadReader padReader;
- nn::hid::PadStatus padStatus;
- nn::hid::TouchPanelStatus tpStatus;
- tU16xy tpOld = {0,0};
- nn::hid::TouchPanelReader tpReader;
- u32 value;
- int i;
-
- while(1)
- {
- if (pEvnt->TryWait())break;
-
- if (s_Button.enable && (s_Button.callback !=0))//PADボタン
- {
- padReader.ReadLatest(&padStatus);
- value = (padStatus.trigger & s_Button.mask) | ((padStatus.hold & s_Button.mask) << 16);
- if (value)(*s_Button.callback)(value);
- }
-
- tpReader.ReadLatest(&tpStatus);//タッチ
- if((tpStatus.x != tpOld.x) || (tpStatus.y != tpOld.y))
- {
- tpOld.x = tpStatus.x;
- tpOld.y = tpStatus.y;
- if (tpStatus.touch)
- {
- NN_LOG("x =%d , y=%d\n",tpStatus.x,tpStatus.y);
- for (i=0;iClearSignal();
-}
-
-
-Gui::~Gui()
-{
- Finalize();
-}
-
-
-//初期化、終了
-bool Gui::Initialize(uptr pHeap,u32 size,nn::os::LightEvent* pEvnt)
-{
- if (Initialized)return false;
- Initialized = true;
-
- //コンポーネントの初期化
- int i;
- for (i=0;i< PANEL_MAX;i++)PanelEffective(i,false,false);
- for (i=0;i< MEMO_MAX;i++)MemoEffective(i,false,false);
- for (i=0;i< MESS_MAX;i++)MessEffective(i,false,false);
-
- //Render
- s_RenderSystem.Initialize(pHeap, size);
-
- SharedFontInit();
-
- //HID
- nn::hid::Initialize();
-
- //Thread
- NN_LOG("Thread Start\n");
- nn::Result res =s_thread.TryStartUsingAutoStack(thUpdate,pEvnt,8192);
- if (res.IsFailure()){
- NN_LOG("failed :res.desc = %d\n",res.GetDescription());
- return false;
- }
-
-
-
- return true;
-}
-
-void Gui::Finalize()
-{
- if (Initialized != true) return;
- if (s_thread.IsAlive())
- {
- s_thread.Join();
- s_thread.Finalize();
- }
- Initialized = false;
- //nn::hid::Finalize();
- // nngxFinalize 関数呼び出しと VSync 割り込みが同時に発生すると
- // 画面が暗転したまま止まる不具合を回避するために VSync 待ちを行う
- nngxWaitVSync(NN_GX_DISPLAY_BOTH);
- SharedFontFinalize();
- nngxWaitVSync(NN_GX_DISPLAY_BOTH);
- s_RenderSystem.Finalize();
-
-}
-
-void Gui::ButtonCallback(uptr adrs)
-{
- s_Button.SetCallback(adrs);
-}
-
-void Gui::ButtonMask(u32 mask)
-{
- s_Button.mask = mask;
- s_Button.enable = true;
-}
-
-myResult Gui::PanelSet(const tPanel *panel)
-{
- if (panel->id >= PANEL_MAX)return RESULT_BAD_PARAM;
- s_Panel[panel->id].pos.x = panel->x;
- s_Panel[panel->id].pos.y = panel->y;
- s_Panel[panel->id].size.x = panel->width;
- s_Panel[panel->id].size.y = panel->height;
- //if (panel->caption[0] != 0 )
- s_Panel[panel->id].caption = panel->caption;
- s_Panel[panel->id].SetCallback(panel->callback);
- s_Panel[panel->id].scr = panel->scr;
- s_Panel[panel->id].visible = false;
- s_Panel[panel->id].enable = false;
- return RESULT_OK;
-}
-
-myResult Gui::PanelEffective(u8 id,bool enable,bool visible)
-{
- if (id >= PANEL_MAX)return RESULT_BAD_PARAM;
- s_Panel[id].enable = enable;
- s_Panel[id].visible = visible;
- return RESULT_OK;
-}
-
-myResult Gui::PanelLineStyle(u8 id,eColor col,u8 width)
-{
- if (id >= PANEL_MAX)return RESULT_BAD_PARAM;
- ColorFromCode(col,&s_Panel[id].style.color);
- s_Panel[id].style.width = width;
- return RESULT_OK;
-}
-
-
-myResult Gui::MessEffective(u8 id,bool enable,bool visible)
-{
- if (id >= MESS_MAX)return RESULT_BAD_PARAM;
- s_Message[id].enable = enable;
- s_Message[id].visible = visible;
- return RESULT_OK;
-}
-
-
-myResult Gui::MessSet(const tMessage *mes)
-{
- if ((mes->parent >= PANEL_MAX) || (mes->id >= MESS_MAX))return RESULT_BAD_PARAM;
- s_Message[mes->id].pos.x = mes->x;
- s_Message[mes->id].pos.y = mes->y;
- s_Message[mes->id].caption = mes->str;
- s_Message[mes->id].parent = mes->parent;
- s_Message[mes->id].style.width = mes->size;
- ColorFromCode(mes->color,&s_Message[mes->id].style.color);
- s_Message[mes->id].visible = false;
- s_Message[mes->id].enable = false;
- return RESULT_OK;
-}
-
-myResult Gui::MessStr(u8 id,char *str)
-{
- if (id >= MESS_MAX)return RESULT_BAD_PARAM;
- s_Message[id].caption = str;
- return RESULT_OK;
-}
-
-myResult Gui::MessCol(u8 id,eColor col)
-{
- if (id >= MESS_MAX)return RESULT_BAD_PARAM;
- ColorFromCode(col,&s_Message[id].style.color);
- return RESULT_OK;
-}
-
-myResult Gui::MemoSet(const tMemo *m)
-{
- if ((m->parent >= PANEL_MAX) || (m->id >= MEMO_MAX))return RESULT_BAD_PARAM;
- if (m->lines > LINES_MAX)return RESULT_BAD_PARAM;
- s_Memo[m->id].lines = m->lines;
- s_Memo[m->id].pos.x = m->x;
- s_Memo[m->id].pos.y = m->y;
- s_Memo[m->id].parent = m->parent;
- s_Memo[m->id].style.width = m->size;
- ColorFromCode(m->color,&s_Memo[m->id].style.color);
- s_Memo[m->id].clr();
- s_Memo[m->id].visible = false;
- s_Memo[m->id].enable = false;
- return RESULT_OK;
-}
-
-myResult Gui::MemoStr(u8 id,char *str,u16 ln)
-{
- if ((id < MEMO_MAX) && s_Memo[id].setline(str,ln) )return RESULT_OK;
- return RESULT_BAD_PARAM;
-}
-
-
-myResult Gui::MemoEffective(u8 id,bool enable,bool visible)
-{
- if (id >= MEMO_MAX)return RESULT_BAD_PARAM;
- s_Memo[id].enable = enable;
- s_Memo[id].visible = visible;
- return RESULT_OK;
-}
-
-
-
-void Gui::Draw()
-{
- //s_drawFlag = true;
- drawDisp();
-}
-
-
-void Gui::DisableAll()
-{
- for (int i=0;i
-#include
-#include "../my_defs.h"
-
-typedef struct
-{
- uptr callback;
- char* caption;
- u16 x,y;
- u16 width,height;
- u16 id;
- u16 scr;//0:up,else down screen
-}tPanel;
-
-typedef enum {
- COLOR_BLACK,
- COLOR_GRAY,
- COLOR_RED,
- COLOR_GREEN,
- COLOR_BLUE,
- COLOR_YELLO,
- COLOR_WHITE,
- COLOR_PARPL,
- COLOR_SKY
-}eColor;
-
-typedef struct
-{
- char* str;
- u16 x,y;//親の始点との相対
- eColor color;//
- u8 size;//文字サイズ
- u8 id;
- u8 parent;//親コンポーネント指定
-}tMessage;
-
-typedef struct
-{
- u16 lines;//表示行数
- u16 x,y;//親の始点との相対
- eColor color;//文字色
- u8 size;//文字サイズ
- u8 id;
- u8 parent;//親コンポーネント指定
-}tMemo;
-
-
-
-class Gui
-{
-private:
- bool Initialized;
-
-public:
- Gui(){};
- ~Gui();
- bool Initialize(uptr pHeap,u32 size,nn::os::LightEvent* pEvnt);
- void Finalize();
- void ButtonCallback(uptr adrs);
- void ButtonMask(u32 mask);
- myResult PanelSet(const tPanel *panel);
- myResult MessSet(const tMessage *mes);
- myResult MemoSet(const tMemo *m);
- void Draw();
- void DisableAll();
- myResult PanelEffective(u8 id,bool enable=true,bool visible=true);
- myResult MessEffective(u8 id,bool enable=true,bool visible=true);
- myResult MemoEffective(u8 id,bool enable=true,bool visible=true);
- myResult MessStr(u8 id,char *str);
- myResult MessCol(u8 id,eColor col);
- myResult MemoStr(u8 id,char *str,u16 ln);
- myResult PanelLineStyle(u8 id,eColor col=COLOR_WHITE,u8 width = 2);
- //void thUpdate();
-};
-
-
-#endif
diff --git a/trunk/CardSaveDataMover/body/source/main.cpp b/trunk/CardSaveDataMover/body/source/main.cpp
deleted file mode 100644
index 90e60b1..0000000
--- a/trunk/CardSaveDataMover/body/source/main.cpp
+++ /dev/null
@@ -1,1469 +0,0 @@
-/*---------------------------------------------------------------------------*
- Project: Horizon
- File: main.cpp
-
- Copyright (C)2010 Nintendo Co., Ltd. All rights reserved.
-
- These coded instructions, statements, and computer programs contain
- proprietary information of Nintendo of America Inc. and/or Nintendo
- Company Ltd., and are protected by Federal copyright law. They may
- not be disclosed to third parties or copied or duplicated in any form,
- in whole or in part, without the prior written consent of Nintendo.
-
- *---------------------------------------------------------------------------*/
-
-#include
-#include
-#include
-#include
-#include
-//#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include "./savefile/savefile.h"
-#include "./savefile/savedata.h"
-#ifdef BKUP_NOTMEM
-#include "./savefile/exsave.h"
-#else
-#include "./savefile/membak.h"
-#endif
-#include "./screen/screen.h"
-#include "../common/common.h"
-
-nn::fnd::ExpHeap appHeap;
-uptr heapForGx;
-//Gui gui;
-myResult errRes;
-#ifdef BKUP_NOTMEM
-const u32 IconBuffSize = 1024*20;
-uptr IconBuffer;
-size_t IconSize;
-#endif
-
-#ifdef DEBUG_ENABLE
-cStrLst memo;
-#endif
-bool isDebugMode = false;//デバッグモード
-
-//char strBuff[128];
-//bool exist;
-
-SaveData savedata;
-nn::os::LightEvent ejectEvnt(false);
-nn::os::LightEvent insEvnt(false);
-#ifdef BKUP_NOTMEM
-ExSave exsave;
-nn::os::LightEvent ejectEvntSd(false);
-nn::os::LightEvent insEvntSd(false);
-#else
-MemBak exsave;
-#endif
-
-//バックアップの状態
-bool Active,Formatted;
-bool exActive,exFormatted;
-tArcInfo arcInfo,arcInfo_ex;//アーカイブ情報
-
-//プロダクトコードの一致
-bool isAgreePCode;
-//ベリファイ結果
-//bool failveri;
-
-//Top画面エラー表示
-int tmerr;
-
-
-#ifdef ENABLE_CRUSH
-int CrashForDebug= 0;
-#endif
-
-
-//結果
-typedef enum {
- SUCCESS
- ,ERROR
- ,CANCEL
- ,INSEXIT
-}RetCode;
-
-//挿抜イベント時に設定
-typedef enum {
- InEx_None
- ,InEx_InsCard
- ,InEx_EjcCard
-#ifdef BKUP_NOTMEM
- ,InEx_InsSd
- ,InEx_EjcSd
-#endif
-}tIsInsEject;
-
-tIsInsEject isInsEject;
-
-extern u8 scr_evnt;
-void WaitUI();
-void PutError(ErcDev dev,int cd=0);
-
-
-//終了処理
-void endfunc()
-{
-
- nn::fs::UnregisterCardEjectedEvent();
- nn::fs::UnregisterCardInsertedEvent();
- ejectEvnt.Finalize();
- insEvnt.Finalize();
-#ifdef BKUP_NOTMEM
- nn::fs::UnregisterSdmcEjectedEvent();
- nn::fs::UnregisterSdmcInsertedEvent();
- ejectEvntSd.Finalize();
- insEvntSd.Finalize();
-#endif
-
- savedata.Finalize();
- exsave.Finalize();
-
- ScrFinalize();
-
-#ifdef BKUP_NOTMEM
- appHeap.Free(reinterpret_cast(IconBuffer));
-#endif
-
-}
-
-//エラー停止
-void failstop()
-{
- NN_LOG("fail %d,stop\n",errRes);
- finish();
-}
-
-#ifdef DEBUG_ENABLE
-//ログ追加&表示
-void LogAdd(char *s)
-{
- memo.add(s);
- if(isDebugMode){
- scr_DgbLog(&memo);
- while(ScrGetDrawFlag()){
- nn::os::Thread::Yield();//表示
- }
- }
-}
-
-char dst[128],work[64];
-void LogAdd_Int(char *s,int i)
-{
- sprintf(dst,s,i);
- LogAdd(dst);
-}
-
-void LogAdd_cat(char *s,char *s2)
-{
- strcpy(dst,s);
- strcat(dst,s2);
- LogAdd(dst);
-}
-
-void LogAdd_bytes(char *s,u8 *b,int n)
-{
- int i;
- for (i=0;i desc = %d",res.GetDescription());
-}
-
-void LogAdd_Fparam(tArcInfo *p)
-{
- LogAdd_Int("FileCount %d",p->FileCount);
- LogAdd_Int("DirCount %d",p->DirCount);
- LogAdd_Int("FileEntry %d",p->FileEntry);
- LogAdd_Int("DirEntry %d",p->DirEntry);
-}
-
-void LogAdd_InfoParam(tArcInfo *p)
-{
- LogAdd_Int("Version %d",p->Ver);
- LogAdd_cat("> pcode = ",p->Pcode);
- LogAdd_Fparam(p);
-}
-#else
-void LogAdd(char *s)
-{
- NN_UNUSED_VAR(s);
-}
-
-void LogAdd_Int(char *s,int i)
-{
- NN_UNUSED_VAR(s);
- NN_UNUSED_VAR(i);
-}
-
-void LogAdd_cat(char *s,char *s2)
-{
- NN_UNUSED_VAR(s);
- NN_UNUSED_VAR(s2);
-}
-
-void LogAdd_bytes(char *s,u8 *b,int n)
-{
- NN_UNUSED_VAR(s);
- NN_UNUSED_VAR(b);
- NN_UNUSED_VAR(n);
-}
-
-void LogAdd_Res(nn::Result res)
-{
- NN_UNUSED_VAR(res);
-}
-
-void LogAdd_Fparam(tArcInfo *p)
-{
- NN_UNUSED_VAR(p);
-}
-
-void LogAdd_InfoParam(tArcInfo *p)
-{
- NN_UNUSED_VAR(p);
-}
-
-#endif
-
-char sts[64];
-//エラー表示
-void PutError(ErcDev dev,int cd)
-{
- int desc,code;
- nn::Result res;
- switch (dev)
- {
- case ERC_DEV_CARD: res = savedata.LastNnResult;break;
- case ERC_DEV_OUT: res = exsave.LastNnResult;break;
- }
- if(dev != ERC_DEV_OTHER)LogAdd_Res(res);
- if(isDebugMode==false)
- {
- if ((cd ==0 ) && (dev != ERC_DEV_OTHER))
- {
- desc = res.GetDescription();
- if (desc < 100 ) code = ERC_UNKNOWN;//キー検索完了 .. ありえない
- else if (desc < 180 ) code = ERC_READ;//ファイルが見つからないか不正
- else if (desc < 200 ) code = ERC_WRITE_OW;//ファイルが存在 .. 削除失敗?
- else if (desc < 220 ) code = ERC_WRITE_NS;//空きが無い
- else if (desc < 260 ) code = ERC_ACCESS;//操作拒否
- else if (desc < 280 ) code = ERC_WRITE_PROTECT;//書き込み禁止
- else if (desc < 340 ) code = ERC_ACCESS;//アクセスエラー
- else if (desc < 390 ) code = ERC_FORMAT;//フォーマットエラー
- else if (desc < 400 ) code = ERC_SDK_VERIFI;//改竄
- else if (desc < 580 ) code = ERC_ROM;//ROM情報エラー
- else if (desc < 590 ) code = ERC_RETRY;//リトライ要求
- else if (desc < 600 ) code = ERC_UNKNOWN;//CCI,CXI不正 .. ありえない
- else if (desc < 900 ) code = ERC_EXEC;//実行時エラー、ソフトバグ
- else code = ERC_FATAL;//本体に問題の可能性
- }else code = cd;
- sprintf(sts,"ERROR %d",dev+code);
- scr_Status(sts,COLOR_RED);
- }
-
-}
-
-
-//-------------------------------------------------- Verifi
-wchar_t file_pathw[MAX_PATH_LENGTH];
-char file_path[MAX_PATH_LENGTH];
-//ドライバの仕様で速度的に4バイトアラインした方がいい(SDK 0.14.23 時点)
-char fileBuffer[512] NN_ATTRIBUTE_ALIGN(4);//検証が512単位なので
-char fileBuffer_ex[512] NN_ATTRIBUTE_ALIGN(4);
-#define FILEBUFF_SIZE sizeof(fileBuffer)
-
-bool Verifi()
-{
- myResult res;
- int ct,i,msize,rsize;
- s64 total=0;
-
- LogAdd("Verifi");
-
- //セーブデータのマウント
- LogAdd("Mount savedata");
- res = savedata.Mount();
- if(res != RESULT_OK){
- PutError(ERC_DEV_CARD);
- return false;
- }
-
-/*
- if(isDebugMode==false) scr_Status("Ready to Verifi",COLOR_YELLO);
- //情報ファイル
- LogAdd("Directry Info");
- if(savedata.GetInfo(&arcInfo)==false)
- {
- LogAdd("> get fail");//有効な情報ファイルがない
- savedata.Unmount();
- PutError(ERC_DEV_CARD);
- return ERROR;
- }
- LogAdd_Fparam(&arcInfo);
-*/
-
- //出力デバイスのマウント
-#ifdef BKUP_NOMEM //フラグ間違えチェック用に表示分け
- LogAdd("Mount Device");//不揮発メディア
-#else
- LogAdd("memory setup");//メモリ保存
-#endif
-
- res = exsave.Mount();
- if(res != RESULT_OK){
- PutError(ERC_DEV_OUT);
- return false;
- }
-
- //情報ファイル
- LogAdd("Directry Info(out)");
- if (exsave.GetInfo(&arcInfo_ex))
- {
- //todo:フォーマット変更時はバージョンチェック入れる
- LogAdd_InfoParam(&arcInfo_ex);
- }else {
- LogAdd("> get fail");//有効な情報ファイルがない
- savedata.Unmount();
- exsave.Unmount();
- return false;
- }
-
- //フォーマット情報の比較
- if ((arcInfo.DirEntry != arcInfo_ex.DirEntry) ||
- (arcInfo.FileEntry != arcInfo_ex.FileEntry) ||
- (arcInfo.Dup != arcInfo_ex.Dup))
- {
- LogAdd("> verifi fail");//有効な情報ファイルがない
- PutError(ERC_DEV_OUT,ERC_VERIFI);
- savedata.Unmount();
- exsave.Unmount();
- return false;
- }
-
- ct =0;
- if (arcInfo.FileCount == 0)//ファイルが無い
- {
- LogAdd("> no files");
- savedata.Unmount();
- exsave.Unmount();
- return true;//フォーマット一致のみ
- }else{
- LogAdd("-- file compair --");
- if(isDebugMode==false) scr_Status("file compairing",COLOR_YELLO);
- savedata.ResetPath();
- exsave.ResetPath();
- s64 fsize;
- res = RESULT_OK;
- while(res==RESULT_OK){
- res = savedata.GetPath(file_pathw);
- if (res != RESULT_OK)
- {
- LogAdd("failed to get path");
- if (res == RESULT_DIR_LEVEL_OVER){
- LogAdd("Dir Level Over");
- break;
- }
- if (res == RESULT_PATH_LENGTH_OVER){
- LogAdd("path name too long");
- break;
- }
- res = RESULT_FAIL_OPEN;
- break;
- }
- if (file_pathw[0] == 0){LogAdd("end");break;}//root then end
- if (ct>=arcInfo.FileCount)
- {//カウンタ壊れ、メモリフローの可能性
- LogAdd("memory error");
- res = RESULT_FAIL;
- break;
- }
-#ifdef DEBUG_ENABLE
- wcstombs(file_path,file_pathw,510);
- LogAdd(file_path);
-#endif
- if(isDebugMode==false) scr_CountPerMax(ct,arcInfo.FileCount);
- if (savedata.Open(file_pathw)==false)
- {
- LogAdd("Open Error(card)");
- res = RESULT_FAIL_OPEN;
- break;
- }
- fsize = savedata.FileSize;
- total += fsize;
- if (exsave.Open(file_pathw)==false)
- {
- LogAdd("Open Error(out)");
- res = RESULT_FAIL_OPENW;
- //savedata.Close();
- break;
- }
- if (fsize != exsave.FileSize)//file size
- {
- res = RESULT_FAIL;
- break;
- }
- msize=fsize;
- if(msize <= FILEBUFF_SIZE ){//一回で読めるサイズならゲージは出さない
- if(isDebugMode==false) scr_CountPerMax2(0,0,-1);
- }
- while(fsize)
- {
- if(msize > FILEBUFF_SIZE ){
- if(isDebugMode==false) scr_CountPerMax2(msize-fsize,msize,0);
- }
- if (fsize > FILEBUFF_SIZE)
- {
- rsize = FILEBUFF_SIZE;
- fsize -= FILEBUFF_SIZE;
- }else{
- rsize = fsize;
- fsize = 0;
- }
- if(savedata.Read(fileBuffer,rsize) != rsize )
- {
- //中身のデータが作成サイズに満たない場合に検証エラーとなる対策
- //読めないブロックは置き換える
- //検証は512単位でされるので読めてるとこまで置き換えないよう
- //リードサイズは512にしておく
- if(nn::fs::ResultVerificationFailed::Includes(savedata.LastNnResult))
- {
- for (i = 0; i < rsize; i++)
- {
- fileBuffer[i] = 0;//0埋め
- }
- }else{
- LogAdd("Read Error(card)");
- res = RESULT_FAIL_READ;
- break;
- }
- }
- if(exsave.Read(fileBuffer_ex,rsize) != rsize )
- {
- LogAdd("Read Error(out)");
- res = RESULT_FAIL;
- break;
- }
- }
- savedata.Close();
- exsave.Close();
- //verifi
- for (i = 0;i detect");
- if(exsave.Delete()) LogAdd("> deleted");
- else{
- savedata.Unmount();
- LogAdd("delete failed");
- PutError(ERC_DEV_OUT);
- return ERROR;
- }
- }else{
- LogAdd("not found");
- }
-
- if(isDebugMode==false)scr_Status("Create Backup",COLOR_YELLO);
- LogAdd("Create bkup");
-#ifdef BKUP_NOTMEM
- res = exsave.Create((void*)IconBuffer,IconSize
- ,arcInfo.DirEntry+1,arcInfo.FileEntry+1);//管理情報
-#else
- res = exsave.Create(0,0,arcInfo.DirEntry+1,arcInfo.FileEntry+1);//管理情報
-#endif
-
- if (res != RESULT_OK){
- savedata.Unmount();
- PutError(ERC_DEV_OUT);
- return ERROR;
- }
-
- if (arcInfo.FileCount == 0)//ファイルが無い
- {
- LogAdd("> no files");
- if(isDebugMode==false)scr_Status("no files",COLOR_YELLO);
- savedata.Unmount();
- exsave.Unmount();
- return SUCCESS;//フォーマットのみ
- }else{
- LogAdd("-- file copy --");
- if(isDebugMode==false)scr_Status("file copying",COLOR_SKY);
- savedata.ResetPath();
- s64 fsize;
- res = RESULT_OK;
- while(res==RESULT_OK){
- res = savedata.GetPath(file_pathw);
- if (res != RESULT_OK)
- {
- LogAdd("failed to get path");
- if (res == RESULT_DIR_LEVEL_OVER){
- LogAdd("Dir Level Over");
- PutError(ERC_DEV_CARD,ERC_DIRDEPTH);
- break;
- }
- if (res == RESULT_PATH_LENGTH_OVER){
- LogAdd("path name too long");
- PutError(ERC_DEV_CARD,ERC_PATH);
- break;
- }
- res = RESULT_FAIL_OPEN;
- break;
- }
- if (file_pathw[0] == 0){LogAdd("end");break;}//root then end
- if (ct>=arcInfo.FileCount)
- {//カウンタ壊れ、メモリフローの可能性
- LogAdd("memory error");
- res = RESULT_FAIL;
- break;
- }
-#ifdef DEBUG_ENABLE
- wcstombs(file_path,file_pathw,510);
- LogAdd(file_path);
-#endif
- if(isDebugMode==false) scr_CountPerMax(ct,arcInfo.FileCount);
- if (savedata.Open(file_pathw)==false)
- {
- LogAdd("Open Error(card)");
- res = RESULT_FAIL_OPEN;
- break;
- }
- fsize = savedata.FileSize;
- total += fsize;
- if (exsave.OpenW(file_pathw,fsize)==false)
- {
- LogAdd("Open Error(sd)");
- res = RESULT_FAIL_OPENW;
- //savedata.Close();
- break;
- }
-
- msize=fsize;
- while(fsize)
- {
- if(msize > FILEBUFF_SIZE * 2){
- if(isDebugMode==false) scr_CountPerMax2(msize-fsize,msize,0);
- }
- if (fsize>FILEBUFF_SIZE)
- {
- rsize = FILEBUFF_SIZE;
- fsize -= FILEBUFF_SIZE;
- }else{
- rsize = fsize;
- fsize = 0;
- }
- if(savedata.Read(fileBuffer,rsize) != rsize )
- {
- //中身のデータが作成サイズに満たない場合に検証エラーとなる対策
- //読めないブロックは置き換える
- //検証は512単位でされるので読めてるとこまで置き換えないよう
- //リードサイズは512にしておく
- if(nn::fs::ResultVerificationFailed::Includes(savedata.LastNnResult))
- {
- for (int i = 0; i < rsize; i++)
- {
- fileBuffer[i] = 0;//0埋め
- }
- }else{
- LogAdd("Read Error(card)");
- res = RESULT_FAIL_READ;
- break;
- }
- }
- if(exsave.Write(fileBuffer,rsize) != rsize )
- {
- LogAdd("Write Error(bkup)");
- res = RESULT_FAIL_WRITE;
- break;
- }
- }
- savedata.Close();
- exsave.CloseW();
- //todo: ゲージ表示
- ct++;
- }
- savedata.Close();
- exsave.CloseW();
- }
-
- if (res == RESULT_OK){
- //フォーマット情報を記録
- //Exsaveに2重化が無いので情報取得APIでは不足 - 2011.1 現在
- //プロダクトコードを追加(2011.1.26)
- //バージョンを追加(2011.1.27)
- LogAdd("save systemfile");
- if (exsave.OpenSysW())
- {
- strcpy(arcInfo.Pcode,savedata.PrdCode);
- if(exsave.WriteSys(&arcInfo)){
- LogAdd("> done");
- }else{
- LogAdd("> write fail");
- res = RESULT_FAIL_WRITE;
- }
- }else{
- LogAdd("> open fail");
- res = RESULT_FAIL_OPENW;
- }
- exsave.CloseSysW();
- }
- savedata.Unmount();
- //exsave.Commit(); Nandはコミット入れる(NAND未実装->MEM変更、今後も不要?)
- exsave.Unmount();
- LogAdd_Int("> %d files",ct);
- if(isDebugMode==false){
- scr_CountPerMax(ct,arcInfo.FileCount);
- scr_CountPerMax2(0,0,total);
- }
-
-//結果
- switch(res)
- {
- case RESULT_OK:
- if (Verifi()==false)return ERROR;
- if(isDebugMode==false) scr_Status("Complate",COLOR_WHITE);
- return SUCCESS;
- case RESULT_FAIL_WRITE:
- case RESULT_FAIL_OPENW:
- PutError(ERC_DEV_OUT);
- exsave.Delete();//バックアップを削除
- return ERROR;
- case RESULT_FAIL_READ:
- case RESULT_FAIL_OPEN:
- PutError(ERC_DEV_CARD);
- exsave.Delete();//バックアップを削除
- return ERROR;
- }
- //その他、実行時エラー
- PutError(ERC_DEV_OTHER);
- return ERROR;
-}
-
-bool mkdir;
-//---------------------------------------------------------------- SD->CARD
-RetCode Sd2Card()
-{
- myResult res;
- int ct=0,msize,rsize;
- s64 total = 0;
-
- LogAdd("-- write savedata --");
-
- if(isDebugMode == false){
- scr_RestoreYesNo();//実行確認
- WaitUI();//入力待ち
- if(isInsEject != InEx_None ){//挿抜?
- //isInsEject = InEx_None;
- return INSEXIT;//挿抜による中断
- }
- if (scr_evnt != EVNT_YES)return CANCEL;//キャンセル
- }
- if(isDebugMode==false){
- scr_Restore();//画面表示
- scr_Status("Check Backup",COLOR_YELLO);
- }
- //保存先のマウント
- LogAdd("Mount bkup");
- res = exsave.Mount();
- if(res != RESULT_OK){
- PutError(ERC_DEV_OUT);
- return ERROR;
- }
-
- //セーブデータのフォーマット&マウント
- if(isDebugMode==false)scr_Status("Card savedata Create",COLOR_YELLO);
- LogAdd("Format savedata");
- res = savedata.Format(&arcInfo);//_exの方がいいかも
- if(res != RESULT_OK){
- exsave.Unmount();
- PutError(ERC_DEV_CARD);
- return ERROR;
- }
-
- //パラメータはバックアップ時
- //Top画面開始時、挿入イベントで取得
- if (arcInfo.FileCount == 0)//ファイルが無い
- {
- LogAdd("> no files");
- savedata.Unmount();
- exsave.Unmount();
- return SUCCESS;//フォーマットのみ
- }else{
- LogAdd("-- file restore --");
- if(isDebugMode==false)scr_Status("file copying",COLOR_PARPL);
- exsave.ResetPath();
- s64 fsize;
- res = RESULT_OK;
- while(res==RESULT_OK){
- res = exsave.GetPath(file_pathw);
- if (res != RESULT_OK)
- {
- LogAdd("failed to get path");
- if (res == RESULT_DIR_LEVEL_OVER){
- LogAdd("Dir Level Over");
- break;
- }
- if (res == RESULT_PATH_LENGTH_OVER){
- LogAdd("path name too long");
- break;
- }
- res = RESULT_FAIL_OPEN;
- break;
- }
- if (file_pathw[0] == 0){LogAdd("end");break;}//root then end
- if (ct>=arcInfo.FileCount)
- {//カウンタ壊れ、メモリフローの可能性
- LogAdd("memory error");
- res = RESULT_FAIL;
- break;
- }
-#ifdef DEBUG_ENABLE
- wcstombs(file_path,file_pathw,510);
- LogAdd(file_path);//todo:デバグ表示オーバ対策
-#endif
- if(isDebugMode==false) scr_CountPerMax(ct,arcInfo.FileCount);
- if (exsave.Open(file_pathw)==false)
- {
- LogAdd("Open Error(bkup)");
- res = RESULT_FAIL_OPEN;
- break;
- }
- fsize = exsave.FileSize;
- total += fsize;
-#ifdef ENABLE_CRUSH
- //デバグ用に違うファイル名にする
- if (CrashForDebug & 2)wcscat(file_pathw,L"D");
-#endif
- int rev = 0;
- while(1){
- if (savedata.OpenW(file_pathw,fsize,&mkdir)==false)
- {
- if(mkdir)//ディレクトリのみ作成
- {//深い場合に作成が多いと画面が止まるので
- LogAdd("Dir create");
- rev++;
- if (rev & 1)scr_MessOnCount2("Create Directry -");
- else scr_MessOnCount2("Create Directry |");
-
- }else{
- LogAdd("Open Error(card)");
- res = RESULT_FAIL_OPENW;
- //exsave.Close();
- break;
- }
- }else break;
- }
- if (res != RESULT_OK)break;
-
- msize = fsize;
- int itvl = 0;
- while(fsize)
- {
- if(isDebugMode==false)
- if(msize > FILEBUFF_SIZE * 2){
- scr_CountPerMax2(msize-fsize,msize,0);
- if (++itvl & 1)scr_Status("file copying |",COLOR_PARPL);
- else scr_Status("file copying -",COLOR_PARPL);
-
- }else scr_MessOnCount2("");
-
- if (fsize>FILEBUFF_SIZE)
- {
- rsize = FILEBUFF_SIZE;
- fsize -= FILEBUFF_SIZE;
- }else{
- rsize = fsize;
- fsize = 0;
- }
- if(exsave.Read(fileBuffer,rsize) != rsize )
- {
- LogAdd("Read Error(bkup)");
- res = RESULT_FAIL_READ;
- break;
- }
-#ifdef ENABLE_CRUSH
- //デバグ用にデータを壊す
- if (CrashForDebug & 1)//中身
- {
- int i;
- for (i = 0;i %d files",ct);
- if(isDebugMode==false){
- scr_CountPerMax(ct,arcInfo.FileCount);
- scr_CountPerMax2(0,0,total);
- }
-
-//結果
- switch(res){
- case RESULT_OK:
- if (Verifi()==false)return ERROR;
-#ifdef SUCCESS_DELETE
- if(exsave.Delete()){//バックアップを削除
- LogAdd("> deleted");
-#endif
- if(isDebugMode==false) scr_Status("Complate",COLOR_WHITE);
- return SUCCESS;
-#ifdef SUCCESS_DELETE
- }else{
- LogAdd("> delete fail");
- PutError(ERC_DEV_OUT);
- return ERROR;
- }
-#endif
- case RESULT_FAIL_WRITE:
- case RESULT_FAIL_OPENW:
- PutError(ERC_DEV_CARD);
- return ERROR;
- case RESULT_FAIL_READ:
- case RESULT_FAIL_OPEN:
- PutError(ERC_DEV_OUT);
- return ERROR;
- }
- //その他、実行時エラー
- PutError(ERC_DEV_OTHER);
- return ERROR;
-}
-
-
-//メモリ保存では不要
-#ifdef BKUP_NOTMEM
-//------------------------------------------------------------------ アイコンデータ
-//NAND起動で失敗は無いはず
-void ReadIcon()
-{
- const size_t ROMFS_BUFFER_SIZE = 1024 * 64;
- static char buffer[ROMFS_BUFFER_SIZE];
- nn::Result res;
-
- Active = false;
- Formatted = false;
-
- //Iconデータ
- //NN_LOG("ICON Data Read\n");
- LogAdd("Mount Rom");
- nn::fs::FileReader RomFsFile;
- res = nn::fs::MountRom(16, 16, buffer, ROMFS_BUFFER_SIZE);
- if (res.IsFailure())
- {
- //NN_LOG("failed :res.desc = %d\n",res.GetDescription());
- //failstop();
- LogAdd("> failed");
- LogAdd_Res(res);
- return;
- }
- LogAdd("Read Icon data");
- res = RomFsFile.TryInitialize(L"rom:/def.icn");
- if (res.IsFailure())
- {
- //NN_LOG("failed :res.desc = %d\n",res.GetDescription());
- nn::fs::Unmount("rom:");
- //failstop();
- LogAdd("> open failed");
- LogAdd_Res(res);
- return;
- }
- //s32 gs = RomFsFile.GetSize();
- //NN_LOG("Icon Size = %d\n",gs);
- res = RomFsFile.TryRead((s32*)&IconSize,(void*)IconBuffer,IconBuffSize);
- if (res.IsFailure())
- {
- //NN_LOG("failed :res.desc = %d\n",res.GetDescription());
- //RomFsFile.Finalize();
- nn::fs::Unmount("rom:");
- //failstop();
- LogAdd("> read failed");
- LogAdd_Res(res);
- return;
- }
- //NN_LOG("Read Size = %d\n",IconSize);
- RomFsFile.Finalize();
- nn::fs::Unmount("rom:");
-
-}
-#endif
-
-//--------------------------------------------------------------- セーブデータの情報取得
-//呼ぶ前に tmerr のクリアを忘れない事
-void CheckSaveDataState()
-{
- myResult myres;
-
-
- Formatted = false;//フォーマット
- Active = false;
- //failveri = false;
-
- LogAdd("get pcode");
- if (savedata.GetPrdCode())
- {
- LogAdd_cat("> pcode = ",savedata.PrdCode);
- LogAdd("check savedata");
- myres = savedata.IsExist();
- if (myres != RESULT_FAIL)
- {
- Active = true;//アクセス可能
- switch(myres){
- case RESULT_OK:
- LogAdd("> exist");
- Formatted=true;
- break;
- case RESULT_NO_MEDIA:
- LogAdd("> Media not found");
- tmerr |= SDATA_ERRPUT_MEDIA;
- break;
- case RESULT_NOT_FAUND:
- LogAdd("> not Found");
- break;
- case RESULT_SDK_VERIFI:
- LogAdd("> sdk verifi err");
- //failveri = true;
- tmerr |= SDATA_ERRPUT_VERIFI;
- break;
- default:
- LogAdd("> Not/Bad Format");
- break;
- }
- }else{
- LogAdd("> Invalid state");
- LogAdd_Res(savedata.LastNnResult);
- }
- }else
- {
- LogAdd("> fail");
- }
- scr_PrdCode(savedata.PrdCode);
- //プロダクトコードのチェック
- isAgreePCode = strcmp(savedata.PrdCode,arcInfo.Pcode)==0;
-}
-
-void CheckExSaveState()
-{
- LogAdd("check exsave");
-#ifdef BKUP_NOTMEM
- exActive = nn::fs::IsSdmcInserted();
-#else
- exActive = true;
-#endif
- if (exActive){
- exFormatted = exsave.IsExist();
- if (exFormatted){
- LogAdd("> exist");
- if (exsave.GetInfo(&arcInfo))
- {
- LogAdd_InfoParam(&arcInfo);
- //todo:フォーマット変更時はバージョンチェック入れる
- }else {
- LogAdd("> sysdata none");//有効な情報ファイルがない
- //arcInfo.Pcode[0] = 0;
- exFormatted = false;
- }
- exsave.Unmount();
- }else{
- LogAdd("> not found");
- //arcInfo.Pcode[0] = 0;
- }
- }else{
- LogAdd("> not inserted");
- //arcInfo.Pcode[0] = 0;
- exFormatted = false;
- }
- if (exFormatted==false) arcInfo.Pcode[0] = 0;
- scr_PrdCodeEx(arcInfo.Pcode);
- //プロダクトコードのチェック
- isAgreePCode = strcmp(savedata.PrdCode,arcInfo.Pcode)==0;
-}
-
-
-//---------------------------------------------------------------- 入力待ち
-void WaitUI()
-{
- tmerr = 0;
- scr_Draw();//画面更新
- scr_evnt = EVNT_NONE;
- while(scr_evnt == EVNT_NONE)
- {
- nn::os::Thread::Yield();//スレッド実行
- //scr_GetEvnt();//入力イベント
-
- CheckSysBreak();//中断処理
-
- int i = nn::ndm::GetDaemonStatus( nn::ndm::DN_CEC );
- if (i !=3 )NN_LOG("DN_CEC %d\n",i);
- i = nn::ndm::GetDaemonStatus( nn::ndm::DN_BOSS );
- if (i !=3 )NN_LOG("DN_BOSS %d\n",i);
- i = nn::ndm::GetDaemonStatus( nn::ndm::DN_NIM );
- if (i !=3 )NN_LOG("DN_NIM %d\n",i);
- i = nn::ndm::GetDaemonStatus( nn::ndm::DN_FRIENDS );
- if (i !=3 )NN_LOG("DN_FRIENDS %d\n",i);
-
- //挿抜を検知したら中断して抜ける
- //トップ以外ではトップメニューへ戻るようする
- if (ejectEvnt.TryWait()){
- LogAdd("Card Ejected");//状態表示:抜け
- CheckSaveDataState();
- isInsEject = InEx_EjcCard;
- return;
- }
- if (insEvnt.TryWait()){
- LogAdd("Card Inserted");//状態表示:挿入
- CheckSaveDataState();
- isInsEject = InEx_InsCard;
- return;
- }
-#ifdef BKUP_NOTMEM
- if (ejectEvntSd.TryWait()){
- LogAdd("SD Ejected");//状態表示:抜け
- CheckExSaveState();
- isInsEject = InEx_EjcSd;
- return;
- }
- if (insEvntSd.TryWait()){
- LogAdd("SD Inserted");//状態表示:挿入
- CheckExSaveState();
- isInsEject = InEx_InsSd;
- return;
- }
-#endif
- }
- ScrClr();//画面消去
- nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(500));//チャタ対策
-}
-
-tColStr mess_ReadError = {"[Read] is failed",COLOR_RED};
-tColStr mess_WriteError = {"[Write] is failed",COLOR_RED};
-tColStr mess_ReadOk = {"[Read] is Success",COLOR_GREEN};
-tColStr mess_WriteOk = {"[Write] is Success",COLOR_GREEN};
-tColStr mess_PullOut = {"Pull Out",COLOR_RED};
-tColStr mess_ChkDev = {"check device",COLOR_RED};
-tColStr mess_Insexit = {"Detect Insert or pull out",COLOR_RED};
-tColStr mess_WhenExc = {"When you exchange device",COLOR_WHITE};
-tColStr mess_PoffSys = {"PowerOff or return Top Menu",COLOR_WHITE};
-
-//---------------------- main loop --------------------------
-void nnMain()
-{
- int i;
- myResult mres;
- RetCode retc;
- tColStr *colstr[4];
- colstr[2] = &mess_WhenExc;
- colstr[3] = &mess_PoffSys;
- isDebugMode = false;
- isInsEject = InEx_None;
-
- //NN_LOG("Start\n");
- nn::os::Initialize();
- nn::fs::Initialize();
-
- //DEA-SUPにて推奨のフリーズ暫定対策:無線デーモンを停止 (2011.3.1 現在)
- //ただし、スリープ時は止まらない
- //心配なら本体スイッチで切っとく
- nn::ndm::Initialize();
- nn::ndm::SuspendScheduler();
-
- //中断処理の準備
- InitSysBreak((uptr)endfunc);
- // グラフィックスライブラリの初期化は、以降で行わなければならない
- // 他、アプリケーションの初期化処理
-
- nn::applet::DisableSleep();//スリープ非対応
-
- //Heap
- appHeap.Initialize(nn::os::GetDeviceMemoryAddress(),
- nn::os::GetDeviceMemorySize(), nn::os::ALLOCATE_OPTION_LINEAR);
- const u32 GxHeapSize = 0x800000;
- heapForGx = reinterpret_cast(appHeap.Allocate(GxHeapSize));
-#ifdef BKUP_NOTMEM
- IconBuffer = reinterpret_cast(appHeap.Allocate(IconBuffSize));
-#endif
- //画面初期化
- if (ScrInitialize(heapForGx,GxHeapSize) == false)failstop();
-#ifdef DEBUG_ENABLE
- memo.clr();
- memo.setbuttom(ScrDbgLogGetMax()-1);//表示行数でリスト数を制限
-#endif
- ejectEvnt.ClearSignal();
- insEvnt.ClearSignal();
- nn::fs::RegisterCardEjectedEvent(&ejectEvnt);
- nn::fs::RegisterCardInsertedEvent(&insEvnt);
-#ifdef BKUP_NOTMEM
- ejectEvntSd.ClearSignal();
- insEvntSd.ClearSignal();
- nn::fs::RegisterSdmcEjectedEvent(&ejectEvntSd);
- nn::fs::RegisterSdmcInsertedEvent(&insEvntSd);
- ReadIcon(); //アイコンデータの読込
-#endif
-
- // スリープ要求に対する返答を有効にする
- // また、蓋の状態チェックを行い蓋が閉じられているならスリープ要求が発生する
- //nn::applet::EnableSleep(true);
-
- LogAdd("-- start --");
-
- extern u8 scr_evnt;
- while(1)
- {
- tmerr = 0;
- CheckSaveDataState(); //セーブデータの状態取得
- CheckExSaveState(); //同バックアップ
-#ifdef DEBUG_ENABLE
- //トップメニュー
- if (isDebugMode){
- scr_TopMenuDbg(Formatted,Active);
- scr_DgbLog(&memo);
- while(ScrGetDrawFlag()){
- nn::os::Thread::Yield();//表示
- }
- }else
-#endif
- if (isAgreePCode==false) tmerr |= SDATA_ERRPUT_PCODE;
-// scr_TopMenu(Formatted,Active,exFormatted,exActive,isAgreePCode,failveri);
- scr_TopMenu(Formatted,Active,exFormatted,exActive,tmerr);
-
-
- WaitUI();//入力待ち
- if (isInsEject != InEx_None){
- ScrClr();//画面消去
- isInsEject= InEx_None;
- }else
- switch(scr_evnt)
- {
- case EVNT_PUSH_B:
- case EVNT_NONE:
- break;
- case EVNT_PUSH_Y:
-#ifdef ENABLE_CRUSH
- CrashForDebug++;
- CrashForDebug &= 3;
-#endif
- break;
- case EVNT_SEL_READ://リード
- NN_LOG("select read\n");
- retc = Card2Sd();
- switch (retc){
- case SUCCESS:
- //CheckExSaveState(); //状態の更新
- if (isDebugMode){
- colstr[1] = &mess_ReadOk;
- scr_SuccessQuitDbg(&colstr[1]);//成功とQuitボタン
- }else scr_ResultQuit("Success",COLOR_GREEN);//成功とQuitボタン
- break;
- case INSEXIT:
- //scr_InsExitQuit();//挿抜検知表示 & Quit
- ScrClr();//画面消去
- scr_Backup();
-#ifdef DEBUG_ENABLE
- if (isDebugMode){
- colstr[1] = &mess_PullOut;
- scr_ErrorQuitDbg(&colstr[1]);//エラーとQuitボタン
- }else
-#endif
- {
- if (isInsEject == InEx_EjcCard)PutError(ERC_DEV_CARD,ERC_DEVICE);
-#ifdef BKUP_NOTMEM
- else if (isInsEject == InEx_EjcSd)PutError(ERC_DEV_OUT,ERC_DEVICE);
-#endif
- else PutError(ERC_DEV_OTHER);
- scr_ResultQuit("Break",COLOR_RED);//エラーとQuitボタン
- }
- break;
- case CANCEL:
- //scr_ResultQuit("Canseled",COLOR_YELLO);//キャンセル
- break;
- default://errors
-#ifdef DEBUG_ENABLE
- if (isDebugMode){
- colstr[0] = &mess_ReadError;
- colstr[1] = &mess_ChkDev;
- scr_ErrorQuitDbg(colstr);//エラーとQuitボタン
- }else
-#endif
- scr_ResultQuit("Failed",COLOR_RED);//エラーとQuitボタン
- break;
- }
- if (retc == CANCEL)break;
- //isInsEject = InEx_None;
- while(1){
- WaitUI();
- if (isInsEject != InEx_None){
- isInsEject = InEx_None;
- }
- if(scr_evnt==EVNT_QUIT)break;
- if(scr_evnt==EVNT_PUSH_B)break;
- }
- break;
- case EVNT_SEL_WRITE://リストア
- NN_LOG("select write\n");
- retc = Sd2Card();
- switch (retc){
- case SUCCESS:
- //CheckSaveDataState(); //状態の更新
- //CheckExSaveState();
- if (isDebugMode){
- colstr[1] = &mess_WriteOk;
- scr_SuccessQuitDbg(&colstr[1]);//成功とQuitボタン
- }else scr_ResultQuit("Success",COLOR_GREEN);//成功とQuitボタン
- break;
- case INSEXIT:
- //scr_InsExitQuit();//挿抜検知表示 & Quit
- ScrClr();//画面消去
- scr_Backup();
-#ifdef DEBUG_ENABLE
- if (isDebugMode){
- colstr[1] = &mess_PullOut;
- scr_ErrorQuitDbg(&colstr[1]);//エラーとQuitボタン
- }else
-#endif
- {
- if (isInsEject == InEx_EjcCard)PutError(ERC_DEV_CARD,ERC_DEVICE);
-#ifdef BKUP_NOTMEM
- else if (isInsEject == InEx_EjcSd)PutError(ERC_DEV_OUT,ERC_DEVICE);
-#endif
- else PutError(ERC_DEV_OTHER);
- scr_ResultQuit("Break",COLOR_RED);//エラーとQuitボタン
- }
- break;
- case CANCEL:
- //scr_ResultQuit("Canseled",COLOR_YELLO);//キャンセル
- break;
- default://errors
-#ifdef DEBUG_ENABLE
- if (isDebugMode){
- colstr[0] = &mess_WriteError;
- colstr[1] = &mess_ChkDev;
- scr_ErrorQuitDbg(colstr);//エラーとQuitボタン
- }else
-#endif
- scr_ResultQuit("Failed",COLOR_RED);//エラーとQuitボタン
- break;
- }
- if (retc == CANCEL)break;
- while(1){
- WaitUI();
- if (isInsEject != InEx_None){
- isInsEject= InEx_None;
- }
- if(scr_evnt==EVNT_QUIT)break;
- if(scr_evnt==EVNT_PUSH_B)break;
- }
- break;
-/* case EVNT_SEL_END:
- NN_LOG("select end\n");
- finish();
- break;
- case EVNT_NO:
- NN_LOG("select NO\n");
- break;
- case EVNT_YES:
- NN_LOG("select NO\n");
- break;
-*/
- case EVNT_PUSH_L:// ----------------------------------------- 表示の切り替え
- case EVNT_PUSH_DOWN_Y:// ----------------------------------------- 表示の切り替え
-#ifdef DEBUG_ENABLE
- isDebugMode = (isDebugMode == false);
-#endif
- break;
-
- case EVNT_PUSH_LEFT_X:// ------------------------------------- LEFT + X
- //バックアップ削除
- scr_DelConf();//実行確認
- WaitUI();
- if (scr_evnt != EVNT_YES)break;
- exsave.Delete();
- //CheckExSaveState(); //状態更新
- break;
-
- case EVNT_PUSH_R:// ------------------------------------------- R
- //CARD(NAND)へテストファイル書き込み
- //デバグモード時のみ
- bool flg;
- scr_ConfirmDbg("dummy savedata write OK?");//実行確認
- WaitUI();
- if (scr_evnt != EVNT_YES)break;
- for ( i =0;i failed");
- LogAdd_Res(savedata.LastNnResult);
- LogAdd_Int("%d",mres);
- break;
- }
-
- i= 2;
- LogAdd("create");
- while(i){
- sprintf(file_path,"dir%d/file%d",i,i);
- LogAdd(file_path);
- mbstowcs(file_pathw,file_path,510);
- if (savedata.OpenW(file_pathw,FILEBUFF_SIZE,&flg)==false)
- {
- LogAdd("> Open Error");
- break;
- }
- if(savedata.Write(fileBuffer,FILEBUFF_SIZE)!=FILEBUFF_SIZE)
- {
- LogAdd("> Write failed");
- break;
- }
- savedata.CloseW();
- i--;
- }
- i=2;
- while(i){
- sprintf(file_path,"dir%d/dir%d/file%d",i,i,i);
- LogAdd(file_path);
- mbstowcs(file_pathw,file_path,510);
- if (savedata.OpenW(file_pathw,FILEBUFF_SIZE,&flg)==false)
- {
- LogAdd("> Open Error");
- break;
- }
- if(savedata.Write(fileBuffer,FILEBUFF_SIZE)!=FILEBUFF_SIZE)
- {
- LogAdd("> Write failed");
- break;
- }
- savedata.CloseW();
-
- sprintf(file_path,"dir%d/dir%d/file%d",i,i,i+2);
- LogAdd(file_path);
- mbstowcs(file_pathw,file_path,510);
- if (savedata.OpenW(file_pathw,FILEBUFF_SIZE,&flg)==false)
- {
- LogAdd("> Open Error");
- break;
- }
- if(savedata.Write(fileBuffer,FILEBUFF_SIZE)!=FILEBUFF_SIZE)
- {
- LogAdd("> Write failed");
- break;
- }
- savedata.CloseW();
- i--;
- }
- savedata.CloseW();
- savedata.Commit();
- savedata.Unmount();
- //CheckSaveDataState(); //カード状態更新
- break;
- default:
- NN_LOG("menu error\n");
- failstop();
- break;
- }
- }//while()
-
-}
-
-/*---------------------------------------------------------------------------*
- End of file
- *---------------------------------------------------------------------------*/
-
diff --git a/trunk/CardSaveDataMover/body/source/my_defs.h b/trunk/CardSaveDataMover/body/source/my_defs.h
deleted file mode 100644
index c79645d..0000000
--- a/trunk/CardSaveDataMover/body/source/my_defs.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*---------------------------------------------------------------------------*
- Project: Horizon
- File: irp.h
-
- Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
-
- These coded instructions, statements, and computer programs contain
- proprietary information of Nintendo of America Inc. and/or Nintendo
- Company Ltd., and are protected by Federal copyright law. They may
- not be disclosed to third parties or copied or duplicated in any form,
- in whole or in part, without the prior written consent of Nintendo.
-
- $Rev$
- *---------------------------------------------------------------------------*/
-
-#ifndef MYDEFS_H_
-#define MYDEFS_H_
-
-//デバグモード有効化
-//#define DEBUG_ENABLE 1
-
-//リストア成功時消去
-#define SUCCESS_DELETE 1
-
-//SD使用時
-//#define BKUP_NOTMEM 1
-
-//データ壊すモード有効
-//#define CRUSH_ENABLE 1
-
-
-//エラー表示コード
-enum {
-ERC_UNKNOWN = 0, //不明
-ERC_DEVICE, //デバイスが見つからない(カード抜け)
-ERC_PRODCODE,//プロダクトコード不一致
-ERC_VERIFI,//ベリファイエラー
-ERC_PATH,//パスが長すぎ
-ERC_DIRDEPTH,//ディレクトリ深すぎ
-ERC_MEDIA, //メディアが見つからない(サブ基盤外れなど)
-//ERC_PULLOUT,//抜け検出
-ERC_READ = 10, //ファイルが見つからない
-ERC_WRITE_OW = 20, //既に存在
-ERC_WRITE_NS, //空き容量がない
-ERC_WRITE_PROTECT, //書込み禁止
-ERC_ACCESS = 30, //アクセスエラー
-ERC_FORMAT = 50, //フォーマットエラー
-ERC_SDK_VERIFI = 60, //検証に失敗、改竄
-ERC_ROM = 70, //ROM情報エラー
-ERC_RETRY = 80, //リトライ要求
-ERC_EXEC = 90, //実行時エラー
-ERC_FATAL = 99 //深刻なエラー
-};
-
-typedef enum{
-ERC_DEV_CARD = 100,
-ERC_DEV_OUT = 200,
-ERC_DEV_OTHER = 300
-}ErcDev;
-
-
-//内部使用のエラー
-typedef enum {
- RESULT_OK,
- RESULT_FAIL,
- RESULT_FAIL_OPEN,
- RESULT_FAIL_OPENW,
- RESULT_FAIL_DELETE,
- RESULT_FAIL_CREATE,
- RESULT_FAIL_READ,
- RESULT_FAIL_WRITE,
- RESULT_FAIL_MOUNT,
- RESULT_FAIL_FORMAT,
- RESULT_FAIL_GETDIR,
- RESULT_NOT_FAUND,
- RESULT_NO_MEDIA,
- RESULT_NOT_FORMAT,
- RESULT_BAD_FORMAT,
- RESULT_SDK_VERIFI,
- RESULT_FILE_EXIST,
- RESULT_NO_EXSAVE,
- RESULT_ALREADY_MOUNT,
- RESULT_INVALID_FILE,
- RESULT_BAD_PARAM,
- RESULT_DIR_LEVEL_OVER,
- RESULT_PATH_LENGTH_OVER,
- RESULT_MAX
-}myResult;
-
-
-
-#endif
diff --git a/trunk/CardSaveDataMover/body/source/savefile/exsave.cpp b/trunk/CardSaveDataMover/body/source/savefile/exsave.cpp
deleted file mode 100644
index 309ca80..0000000
--- a/trunk/CardSaveDataMover/body/source/savefile/exsave.cpp
+++ /dev/null
@@ -1,301 +0,0 @@
-#include
-#include
-#include
-#include <../fs/fs_ResultPrivate.h>
-#include "exsave.h"
-
-#define OWN_UID 0xf8014
-const char *exsaveName = "exsave:";
-const wchar_t *exsaveRoot_w = L"exsave:/save/";
-const char *exsaveRoot = "exsave:/save/";
-#define ROOTLENGTH_EX 8
-const wchar_t *exsaveSys_w = L"exsave:/ncl_sysdata.ncl";//暫定
-#define PATHLENGTH_MAX_EX 512
-wchar_t expath_w[PATHLENGTH_MAX_EX];//パス名
-wchar_t expathu_w[100][PATHLENGTH_MAX_EX];//上層パス名
-wchar_t expathw_w[PATHLENGTH_MAX_EX];//パス名ワーク
-#define MAX_LEVEL_EX 128
-static nn::fs::DirectoryEntry exdcEntry[MAX_LEVEL_EX];
-static nn::fs::Directory exdc[MAX_LEVEL_EX];
-
-
-//拡張セーブデータ
-//存在確認
-bool ExSave::IsExist()
-{
- LastNnResult = nn::fs::MountExtSaveData(exsaveName,OWN_UID);
- nn::fs::Unmount(exsaveName);
- return LastNnResult.IsSuccess();
-}
-
-//パス検索位置のリセット
-void ExSave::ResetPath()
-{
- s_lv=0;
- s_serch = false;
- wcscpy(expath_w,exsaveRoot_w);
- //wcscpy(expathu_w,expath_w);
-}
-
-
-myResult ExSave::GetPath(wchar_t *path)
-{
- int n;
- while(1){
- if (s_serch==false){
- LastNnResult = exdc[s_lv].TryInitialize(expath_w);//Open
- if (LastNnResult.IsFailure()){
- return RESULT_FAIL;
- }
- }
- while(1){
- n = (exdc[s_lv].Read(&exdcEntry[s_lv],1));
- if ( n==0 )//終端
- {
- exdc[s_lv].Finalize();
- if (s_lv == 0){path[0]=0;return RESULT_OK;}// ---- rootなら終了
- s_lv--;//上の層に戻る
- wcscpy(expath_w,expathu_w[s_lv]);//パス戻す
- }else{
- if(exdcEntry[s_lv].attributes.isDirectory){//ディレクトリ
- //m_info.DirCount++;
- wcscpy(expathu_w[s_lv],expath_w);//パス保存
- wcscat(expath_w,exdcEntry[s_lv].entryName);//次のディレクトリパス
- wcscat(expath_w,L"/");
- if (++s_lv == MAX_LEVEL_EX)return RESULT_DIR_LEVEL_OVER;
- s_serch = false;
- break;
- }else{//ファイル
- //m_info.FileCount++;
- s_serch = true;
- wcscpy(path,pPathTop);
- wcscat(path,exdcEntry[s_lv].entryName);
- return RESULT_OK;
- }
- }
- }
- }
-
-}
-
-
-//削除
-bool ExSave::Delete()
-{
- LastNnResult = nn::fs::DeleteExtSaveData(OWN_UID);
- //if (nn::fs::ResultNotFound().Includes(LastNnResult))return RESULT_NOT_FOUND;
- return LastNnResult.IsSuccess();
-}
-
-//セーブ作成、成功時はマウント状態
-myResult ExSave::Create(const void* icon,size_t iconSize,u32 entryDir,u32 entryFile)
-{
- if ( IsMounted )return RESULT_ALREADY_MOUNT;
- LastNnResult = nn::fs::CreateExtSaveData(OWN_UID,icon,iconSize,entryDir,entryFile);
- if (LastNnResult.IsFailure())return RESULT_FAIL_CREATE;
- LastNnResult = nn::fs::MountExtSaveData(exsaveName,OWN_UID);
- if (LastNnResult.IsFailure())return RESULT_FAIL_MOUNT;
- LastNnResult = nn::fs::TryCreateDirectory(exsaveRoot_w);
- if (LastNnResult.IsFailure()){
- nn::fs::Unmount(exsaveName);
- return RESULT_FAIL_MOUNT;
- }
- IsMounted = true;
- return RESULT_OK;
-}
-//マウント
-myResult ExSave::Mount()
-{
- if ( IsMounted )return RESULT_ALREADY_MOUNT;
- LastNnResult = nn::fs::MountExtSaveData(exsaveName,OWN_UID);
- if (LastNnResult.IsFailure()){
- return RESULT_FAIL_MOUNT;
- }
- IsMounted = true;
- return RESULT_OK;
-}
-void ExSave::Unmount()
-{
- IsMounted = false;
- nn::fs::Unmount(exsaveName);
-}
-//ライト属性ファイルを閉じる
-void ExSave::CloseW()
-{
- writer.Finalize();
-}
-
-//ファイルライト
-s32 ExSave::Write(char *buffer,size_t size)
-{
- s32 ct;
- LastNnResult = writer.TryWrite(&ct,(void*)buffer,size);
- if(LastNnResult.IsFailure())ct=0;
- return ct;
-}
-
-
-//管理用ファイル
-//ライト属性で開く
-bool ExSave::OpenSysW()
-{
- LastNnResult = nn::fs::TryCreateFile(exsaveSys_w,sizeof(tArcInfo));
- LastNnResult = writerSys.TryInitialize(exsaveSys_w,false);
- return LastNnResult.IsSuccess();
-}
-//ライト属性ファイルを閉じる
-void ExSave::CloseSysW()
-{
- writerSys.Finalize();
-}
-//システムファイルライト
-bool ExSave::WriteSys(tArcInfo *pinfo)
-{
- s32 ct;
- pinfo->Ver = INFO_VERSION;
- LastNnResult = writerSys.TryWrite(&ct,(void*)pinfo,sizeof(tArcInfo));
- return LastNnResult.IsSuccess();
-}
-//リード属性で開く
-bool ExSave::OpenSysR()
-{
- LastNnResult = readerSys.TryInitialize(exsaveSys_w);
- return LastNnResult.IsSuccess();
-}
-//ライト属性ファイルを閉じる
-void ExSave::CloseSysR()
-{
- readerSys.Finalize();
-}
-//ファイルリード
-bool ExSave::ReadSys(tArcInfo *pinfo)
-{
- s32 ct;
- LastNnResult = readerSys.TryRead(&ct,(void*)pinfo,sizeof(tArcInfo));
- return LastNnResult.IsSuccess();
-}
-
-
-
-
-//ライト属性ファイルを開く
-bool ExSave::OpenW(wchar_t *path,s64 size)
-{
- int pos,pos2;
-
- wcscpy(expath_w,exsaveRoot_w);
- wcscat(expath_w,path);
- while(1){
- LastNnResult = nn::fs::TryCreateFile(expath_w,size);
- if(LastNnResult.IsSuccess())break;
- //ディレクトリがなければディレクトリを作成
- pos = GetPosDelmLast(expath_w,ROOTLENGTH_EX);//ファイルが存在するディレクトリ
- if (pos <= 0)return false;//rootかパスが不正
- //while (1){
- wcscpy(expathw_w,expath_w);//ワークにコピー
- while (LastNnResult.IsFailure()){//ディレクトリ作成できるまで遡る
- if(LastNnResult.GetDescription()!=nn::fs::DESCRIPTION_DBM_DIRECTORY_NOT_FOUND)return false;
- pos2 = GetPosDelmLast(expathw_w,ROOTLENGTH_EX);//境界位置を探す
- if (pos2 == 0)return false;//root到達
- expathw_w[pos2] = 0;//境界まで削除 (例) dir1/dir2/file -> dir1/dir2 -> dir1
- LastNnResult = nn::fs::TryCreateDirectory(expathw_w);
- }
- //if (pos2 == pos)break;//配置ディレクトリなら抜ける
- //todo:ディレクトリが深いとき時間がかかるなら、無駄なTryCreateを省く
- //案)直上から最初の成功までのデリミタ位置を記録
- //先に全ディレクトリ作っておくのがよさげ
- //}
- }
- LastNnResult = writer.TryInitialize(expath_w,false);
- return LastNnResult.IsSuccess();
-}
-
-//ファイルリード
-s32 ExSave::Read(char *buffer,size_t size)
-{
-// if (IsMounted==false)return 0;
- s32 ct;
- LastNnResult = reader.TryRead(&ct,(void*)buffer,size);
- if(LastNnResult.IsFailure())ct=0;
- return ct;
-}
-
-
-void ExSave::Close()
-{
- reader.Finalize();
-}
-
-
-//ファイルを開く
-//パス指定はルート以降
-//(ex)data:/dir/file -> dir/file
-bool ExSave::Open(wchar_t *path)
-{
- wcscpy(expathw_w,exsaveRoot_w);
- wcscat(expathw_w,path);
- LastNnResult = reader.TryInitialize(expathw_w);
- if (LastNnResult.IsSuccess())
- {
- LastNnResult = reader.TryGetSize(&FileSize);
- if (LastNnResult.IsSuccess())return true;
- else Close();
- }
- return false;
-}
-
-//アーカイブ情報の取得
-bool ExSave::GetInfo(tArcInfo *pinfo)
-{
- if(Mount()==RESULT_FAIL_MOUNT)return false;
- //システムデータからフォーマット情報
- if (OpenSysR())
- {
- if(ReadSys(pinfo) == false){
- pinfo->Pcode[0]=0;
- CloseSysR();//クローズ
- Unmount();
- return false;
- }
- }else{
- Unmount();
- return false;
- }
- CloseSysR();//クローズ
-// Unmount();
-//#ifdef INFO_API_USE
-//API情報と比較
-// LastNnResult = nn::fs::GetExtSaveDataFormatInfo(OWN_UID,&m_info.FileEntry,&m_info.DirEntry);
-// if (m_info.FileEntry != pinfo->FileEntry)return false;
-// if (m_info.DirEntry != pinfo->DirEntry)return false;
-// //if (m_info.Dup != pinfo->Dup)return false; //ExSaveには無い
-//#endif
- return true;
-}
-
-
-//コンストラクタ
-ExSave::ExSave()
-{
- IsMounted = false;
- s_lv=0;
- m_info.DirCount = 0;
- m_info.FileCount = 0;
- m_info.DirEntry = 0;
- m_info.FileEntry = 0;
- wcscpy(expath_w,exsaveRoot_w);
- //wcscpy(expathu_w,expath_w);
- pPathTop = (wchar_t*)((u32)&expath_w+strlen(exsaveRoot)*2);
-}
-
-void ExSave::Finalize()
-{
- Close();
- Unmount();
-}
-//デストラクタ
-ExSave::~ExSave()
-{
- Finalize();
-}
-
diff --git a/trunk/CardSaveDataMover/body/source/savefile/exsave.h b/trunk/CardSaveDataMover/body/source/savefile/exsave.h
deleted file mode 100644
index 0806d88..0000000
--- a/trunk/CardSaveDataMover/body/source/savefile/exsave.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*---------------------------------------------------------------------------*
- Project: Horizon
- File: irp.h
-
- Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
-
- These coded instructions, statements, and computer programs contain
- proprietary information of Nintendo of America Inc. and/or Nintendo
- Company Ltd., and are protected by Federal copyright law. They may
- not be disclosed to third parties or copied or duplicated in any form,
- in whole or in part, without the prior written consent of Nintendo.
-
- $Rev$
- *---------------------------------------------------------------------------*/
-
-#ifndef EXSAVE_H_
-#define EXSAVE_H_
-
-#include
-#include
-#include "../my_defs.h"
-#include "savefile.h"
-
-class ExSave
-{
-public:
- s64 FileSize;
- nn::Result LastNnResult;
-private:
- nn::fs::FileReader reader;
- nn::fs::FileWriter writer;
- nn::fs::FileReader readerSys;
- nn::fs::FileWriter writerSys;
- wchar_t *pPathTop;
- tArcInfo m_info;
- int s_lv;
- int exrootlen;
- bool IsMounted;
- bool s_serch;
-public:
- ExSave();
- ~ExSave();
- void Finalize();
- myResult Create(const void* icon,size_t iconSize,u32 entryDir,u32 entryFile);
- myResult CreateSys(const void* icon,size_t iconSize);
- myResult Mount();
- myResult MountSys();
- bool IsExist();
- void Unmount();
- bool Delete();
- void CloseW();
- bool OpenW(wchar_t *path,s64 size);
- bool OpenSysW();//暫定
- void CloseSysW();//暫定
- bool OpenSysR();//暫定
- void CloseSysR();//暫定
- s32 Write(char *buffer,size_t size);
- bool WriteSys(tArcInfo *pinfo);
- bool ReadSys(tArcInfo *pinfo);
- void ResetPath();
- s32 Read(char *buffer,size_t size);
- void Close();
- bool Open(wchar_t *path);
- myResult GetPath(wchar_t *path);
- bool GetInfo(tArcInfo *pinfo);
-};
-
-
-
-#endif
diff --git a/trunk/CardSaveDataMover/body/source/savefile/membak.cpp b/trunk/CardSaveDataMover/body/source/savefile/membak.cpp
deleted file mode 100644
index cc54973..0000000
--- a/trunk/CardSaveDataMover/body/source/savefile/membak.cpp
+++ /dev/null
@@ -1,228 +0,0 @@
-#include
-#include
-#include
-#include
-#include "membak.h"
-
-using namespace nn;
-
-namespace
-{
- const size_t BUFFER_SIZE = 10 * 1024 * 1024;
- bit8 s_Buffer[BUFFER_SIZE] NN_ATTRIBUTE_ALIGN(32);
-}
-
-bool info_alive;
-
-//--------------------------------------------------------------------
-//
-
-
-//RXgN^
-MemBak::MemBak()
-{
- m_Exists = false;
- m_pBuffer = s_Buffer;
- m_pBufferPos = s_Buffer;
- m_pBufferSize = sizeof(s_Buffer);
- LastNnResult = ResultSuccess();
- ResetPath();
-
- info_alive = false;
-}
-
-void MemBak::Finalize()
-{
-}
-//fXgN^
-MemBak::~MemBak()
-{
-}
-
-
-
-
-
-//--------------------------------------------------------------------
-// mount, unmount, create, delete
-
-//gZ[uf[^
-//݊mF
-bool MemBak::IsExist()
-{
- return m_Exists;
-}
-
-//Z[u쐬A̓}Eg
-myResult MemBak::Create(const void* icon,size_t iconSize,u32 entryDir,u32 entryFile)
-{
- NN_UNUSED_VAR(icon);
- NN_UNUSED_VAR(iconSize);
-
- if ( m_IsMounted )
- {
- return RESULT_ALREADY_MOUNT;
- }
-
- m_NumDirEntry = entryDir;
- m_NumFileEntry = entryFile;
-
- m_Exists = true;
- m_IsMounted = true;
- return RESULT_OK;
-}
-
-//폜
-bool MemBak::Delete()
-{
- m_Exists = false;
- info_alive = false;
- m_pBufferPos = m_pBuffer;
- return true;
-}
-
-//}Eg
-myResult MemBak::Mount()
-{
- if ( m_IsMounted )
- {
- return RESULT_ALREADY_MOUNT;
- }
-
- m_IsMounted = true;
- return RESULT_OK;
-}
-void MemBak::Unmount()
-{
- m_IsMounted = false;
-}
-
-
-
-
-//--------------------------------------------------------------------
-// SetInfo, GetInfo
-
-//A[JCu̎擾
-bool MemBak::GetInfo(tArcInfo *pinfo)
-{
- if (info_alive==false)return false;
- *pinfo = m_ArcInfo;
- return true;
-}
-
-
-//Ǘpt@C
-//CgŊJ
-bool MemBak::OpenSysW()
-{
- return true;
-}
-//Cgt@C
-void MemBak::CloseSysW()
-{
-}
-
-//VXet@CCg
-bool MemBak::WriteSys(tArcInfo *pinfo)
-{
- info_alive = true;
- pinfo->Ver = INFO_VERSION;
- m_ArcInfo = *pinfo;
- return true;
-}
-
-
-
-
-//--------------------------------------------------------------------
-// Traverse
-
-//pXʒũZbg
-void MemBak::ResetPath()
-{
- m_pFind = reinterpret_cast(m_pBuffer);
-}
-
-
-myResult MemBak::GetPath(wchar_t *path)
-{
- if( m_pFind->IsEnd() )
- {
- path[0] = '\0';
- return RESULT_OK;
- }
-
- std::wcscpy(path, m_pFind->GetName());
- m_pFind = m_pFind->GetNext();
-
- return RESULT_OK;
-}
-
-
-
-
-//--------------------------------------------------------------------
-// Write
-
-//Cgt@C
-void MemBak::CloseW()
-{
-}
-
-//t@CCg
-s32 MemBak::Write(char *buffer,size_t size)
-{
- return m_ForWrite.Write(buffer, size);
-}
-
-
-
-//Cgt@CJ
-bool MemBak::OpenW(wchar_t *path,s64 size)
-{
- m_ForWrite.Init(reinterpret_cast(m_pBufferPos));
- m_ForWrite.Set(path, size);
- m_pBufferPos = reinterpret_cast(m_ForWrite.GetNext());
- return true;
-}
-
-//--------------------------------------------------------------------
-// Read
-
-//t@C[h
-s32 MemBak::Read(char *buffer,size_t size)
-{
- return m_ForRead.Read(buffer, size);
-}
-
-
-void MemBak::Close()
-{
-}
-
-
-//t@CJ
-//pXw̓[gȍ~
-//(ex)data:/dir/file -> dir/file
-bool MemBak::Open(wchar_t *path)
-{
- EntryHeader* pE = reinterpret_cast(m_pBuffer);
-
- while( ! pE->IsEnd() )
- {
- if( pE->Match(path) )
- {
- m_ForRead.Init(pE);
- FileSize = m_ForRead.GetSize();
- return true;
- }
-
- pE = pE->GetNext();
- }
-
- return false;
-}
-
-//--------------------------------------------------------------------
-
diff --git a/trunk/CardSaveDataMover/body/source/savefile/membak.h b/trunk/CardSaveDataMover/body/source/savefile/membak.h
deleted file mode 100644
index d3c8677..0000000
--- a/trunk/CardSaveDataMover/body/source/savefile/membak.h
+++ /dev/null
@@ -1,189 +0,0 @@
-/*---------------------------------------------------------------------------*
- Project: Horizon
- File: irp.h
-
- Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
-
- These coded instructions, statements, and computer programs contain
- proprietary information of Nintendo of America Inc. and/or Nintendo
- Company Ltd., and are protected by Federal copyright law. They may
- not be disclosed to third parties or copied or duplicated in any form,
- in whole or in part, without the prior written consent of Nintendo.
-
- $Rev$
- *---------------------------------------------------------------------------*/
-
-#ifndef MEMBAK_H_
-#define MEMBAK_H_
-
-#include
-#include
-#include "../my_defs.h"
-#include "savefile.h"
-#include
-
-class MemBak
-{
-public:
- s64 FileSize;
- NN_PADDING4;
- nn::Result LastNnResult;
-private:
- struct EntryHeader
- {
- s16 nameSize;
- NN_PADDING2;
- s32 dataSize;
- s32 nextOffset;
-
- EntryHeader* GetNext()
- {
- return reinterpret_cast(
- reinterpret_cast(this) + nextOffset);
- }
- bit8* GetDataPointer()
- {
- return reinterpret_cast(this + 1) + nameSize;
- }
- const wchar_t* GetName() const
- {
- return reinterpret_cast(
- reinterpret_cast(this + 1));
- }
- void SetName(const wchar_t* name)
- {
- s32 len = std::wcslen(name);
- nameSize = len * 2 + 2;
- std::memcpy(this + 1, name, nameSize);
- }
- void SetSize(size_t size)
- {
- dataSize = size;
- }
- s32 GetSize() const
- {
- return dataSize;
- }
- void SetNext()
- {
- nextOffset = nn::math::RoundUp(sizeof(*this) + nameSize + dataSize, 4);
- }
- bool Match(const wchar_t* p)
- {
- return std::wcscmp(p, GetName()) == 0;
- }
- bool IsEnd() const
- {
- return nameSize == 0;
- }
- };
- struct FileState
- {
- EntryHeader* pE;
- s32 pos;
-
- void Init(EntryHeader* p)
- {
- pE = p;
- pos = 0;
- }
- void Set(const wchar_t* name, size_t size)
- {
- pE->SetName(name);
- pE->SetSize(size);
- pE->SetNext();
- pE->GetNext()->nameSize = 0;
- }
- s32 GetSize() const { return pE->GetSize(); }
- EntryHeader* GetNext()
- {
- return pE->GetNext();
- }
- bit8* GetCurrentPointer()
- {
- return pE->GetDataPointer() + pos;
- }
- s32 GetRemain() const
- {
- return pE->dataSize - pos;
- }
- void Advance(s32 size)
- {
- pos += size;
- }
- s32 Write(const void* p, size_t size)
- {
- s32 remain = GetRemain();
- if( remain <= 0 )
- {
- return 0;
- }
-
- s32 copySize = nn::math::Min(remain, size);
- std::memcpy(GetCurrentPointer(), p, copySize);
- Advance(copySize);
-
- return copySize;
- }
- s32 Read(void* p, size_t size)
- {
- s32 remain = GetRemain();
- if( remain <= 0 )
- {
- return 0;
- }
-
- s32 copySize = nn::math::Min(remain, size);
- std::memcpy(p, GetCurrentPointer(), copySize);
- Advance(copySize);
-
- return copySize;
- }
- };
-
- tArcInfo m_ArcInfo;
- FileState m_ForRead;
- FileState m_ForWrite;
-
- bool m_Exists;
- bool m_IsMounted;
- NN_PADDING2;
- bit8* m_pBuffer;
- size_t m_pBufferSize;
- bit8* m_pBufferPos;
- EntryHeader* m_pFind;
-
- u32 m_NumDirEntry;
- u32 m_NumFileEntry;
-
-public:
- MemBak();
- ~MemBak();
- void Finalize();
- myResult Create(const void* icon,size_t iconSize,u32 entryDir,u32 entryFile);
- myResult CreateSys(const void* icon,size_t iconSize);
- myResult Mount();
-// myResult MountSys();
- bool IsExist();
- void Unmount();
- bool Delete();
- void CloseW();
- bool OpenW(wchar_t *path,s64 size);
- bool OpenSysW();//b
- void CloseSysW();//b
-// bool OpenSysR();//b
-// void CloseSysR();//b
- s32 Write(char *buffer,size_t size);
- bool WriteSys(tArcInfo *pinfo);
-// bool ReadSys(tArcInfo *pinfo);
- void ResetPath();
- s32 Read(char *buffer,size_t size);
- void Close();
- bool Open(wchar_t *path);
- myResult GetPath(wchar_t *path);
- bool GetInfo(tArcInfo *pinfo);
-};
-
-
-
-#endif
diff --git a/trunk/CardSaveDataMover/body/source/savefile/savedata.cpp b/trunk/CardSaveDataMover/body/source/savefile/savedata.cpp
deleted file mode 100644
index 715bd7f..0000000
--- a/trunk/CardSaveDataMover/body/source/savefile/savedata.cpp
+++ /dev/null
@@ -1,445 +0,0 @@
-#include
-#include
-#include
-#include "savedata.h"
-#include
-//#include <../fs/fs_ApiSysSaveData.h>
-//#include <../fs/ctr/mpcore/fs_FileSystemBasePrivate.h>
-#include
-#include
-#include
-
-#define MAX_LEVEL 256
-//static nn::fs::DirectoryEntry dcEntry[MAX_LEVEL];
-//static nn::fs::Directory dc[MAX_LEVEL];
-int dc_readed[MAX_LEVEL];//リード済みエントリ数
-
-//生成時のデバイス名を超えるとパス長上限をこえる
-//可能性があるので1文字にする(無用な心配かも)
-const wchar_t *sdataRoot_w = L"s:/";
-#define ROOTLENGTH 3
-const char *sdataName = "s:";
-const wchar_t *Dummy_w = L"ncltool";
-//char path[512];//パス名
-static bool IsMounted;
-wchar_t path_w[MAX_PATH_LENGTH];//パス名
-wchar_t pathu_w[MAX_LEVEL][MAX_PATH_LENGTH];//パス名履歴
-wchar_t pathw_w[MAX_PATH_LENGTH];//パス名ワーク
-
-//#define SysSaveId 0x20300
-
-//セーブ作成、成功時はマウント状態
-myResult SaveData::Format(tArcInfo *pinfo)
-{
- if ( IsMounted )return RESULT_ALREADY_MOUNT;
-#ifdef USE_SYS_SAVE
- LastNnResult = nn::fs::CreateSystemSaveData(
- SysSaveId,pinfo->FileEntry,pinfo->DirEntry,0x100000,pinfo->Dup);
- if (LastNnResult.IsFailure())return RESULT_FAIL_FORMAT;
-#else
- LastNnResult = nn::fs::FormatCtrCardSaveData(pinfo->FileEntry,pinfo->DirEntry,pinfo->Dup);
- if (LastNnResult.IsFailure())return RESULT_FAIL_FORMAT;
-#endif
- if ( Mount() != RESULT_OK )return RESULT_FAIL_MOUNT;
- IsMounted = true;
- return RESULT_OK;
-}
-
-void SaveData::ResetPath()
-{
- s_lv=0;
- s_serch = false;
- wcscpy(path_w,sdataRoot_w);
- for (int n = 0;nMAX_PATH_LENGTH - 1)return RESULT_PATH_LENGTH_OVER;
- wcscat(path,dcEntryl.entryName);
- return RESULT_OK;
- }
- }
- }
-
-}
-
-//アンマウント
-void SaveData::Unmount()
-{
- if(IsMounted){
- IsMounted = false;
- nn::fs::Unmount(sdataName);
- }
-}
-
-//バックアップの存在チェック
-myResult SaveData::IsExist(){
- myResult res;
- res = Mount();
- Unmount();
- return res;
-}
-/*
-//アーカイブ情報の取得
-bool SaveData::GetInfo(tArcInfo *pinfo)
-{
-
- //strcpy(path,readerRoot);
- s_lv=0;
- m_info.DirCount = 0;
- m_info.FileCount = 0;
- m_info.DirEntry = 0;
- m_info.FileEntry = 0;
- m_info.Dup = false;
- wcscpy(path_w,sdataRoot_w);
- //wcscpy(pathu_w,path_w);
-
- int n;
- int lv = 0;
- bool cont = true;
- while(cont){
- LastNnResult = dc[lv].TryInitialize(path_w);//Open
- if (LastNnResult.IsFailure())return false;
- while(1){
- n = (dc[lv].Read(&dcEntry[lv],1));
- if ( n==0 )//終端
- {
- dc[lv].Finalize();
- if (lv == 0){cont=false;break;}// ---- 終了
- lv--;//上の層に戻る
- wcscpy(path_w,pathu_w[lv]);//パス戻す
- }else{
- if(dcEntry[lv].attributes.isDirectory){//ディレクトリ
- m_info.DirCount++;
- wcscpy(pathu_w[lv],path_w);//パス保存
- wcscat(path_w,dcEntry[lv].entryName);//次のディレクトリパス
- wcscat(path_w,L"/");
- if (++lv == MAX_LEVEL)return false;
- break;
- }else{//ファイル
- m_info.FileCount++;
- }
- }
- }
- }
-
-#ifndef INFO_API_USE
- //アーカイブのエントリ数
- // .. APIまでの暫定
- m_info.DirEntry = m_info.DirCount;
- m_info.FileEntry = m_info.FileCount;
-#else
-//API使用
-#ifdef USE_SYS_SAVE
- size_t sz;
- LastNnResult = nn::fs::GetSystemSaveDataFormatInfo(SysSaveId, &m_info.FileEntry, &m_info.DirEntry, &sz, &m_info.Dup);
-#else
- //LastNnResult = nn::fs::GetSaveDataFormatInfo(&m_info.FileEntry,&m_info.DirEntry,&m_info.Dup);
- LastNnResult = nn::fs::GetCtrCardSaveDataFormatInfo(&m_info.FileEntry,&m_info.DirEntry,&m_info.Dup);
-#endif
- if (LastNnResult.IsFailure())return false;
-
-#endif
-
- *pinfo = m_info;//構造体コピー
- return true;
-
-}
-*/
-//アーカイブ情報の取得
-bool SaveData::GetInfo(tArcInfo *pinfo)
-{
-static nn::fs::DirectoryEntry dcEntryl;
-static nn::fs::Directory dcl;
-
- //strcpy(path,readerRoot);
- s_lv=0;
- m_info.DirCount = 0;
- m_info.FileCount = 0;
- m_info.DirEntry = 0;
- m_info.FileEntry = 0;
- m_info.Dup = false;
- wcscpy(path_w,sdataRoot_w);
- //wcscpy(pathu_w,path_w);
-
- int n;
- int lv = 0;
- for (n = 0;n dir/file
-bool SaveData::Open(wchar_t *path)
-{
- wcscpy(pathw_w,sdataRoot_w);
- wcscat(pathw_w,path);
- LastNnResult = reader.TryInitialize(pathw_w);
- if (LastNnResult.IsSuccess())
- {
- LastNnResult = reader.TryGetSize(&FileSize);
- if (LastNnResult.IsSuccess())return true;
- else Close();
- }
- return false;
-}
-
-bool SaveData::OpenW(wchar_t *path,s64 size,bool *mkdir)
-{
- int pos,pos2;
-
- wcscpy(path_w,sdataRoot_w);
- wcscat(path_w,path);
- *mkdir = false;
- //while(1){
- LastNnResult = nn::fs::TryCreateFile(path_w,size);
- if(LastNnResult.IsSuccess())
- {
- LastNnResult = writer.TryInitialize(path_w,false);
- return LastNnResult.IsSuccess();
- }
- //ディレクトリがなければディレクトリを作成
- pos = GetPosDelmLast(path_w,ROOTLENGTH);//ファイルが存在するディレクトリ
- if (pos <= 0)return false;//rootかパスが不正
- //while (1){
- wcscpy(pathw_w,path_w);//ワークにコピー
- while (LastNnResult.IsFailure()){//ディレクトリ作成できるまで遡る
- if(LastNnResult.GetDescription()!=nn::fs::DESCRIPTION_DBM_DIRECTORY_NOT_FOUND)return false;
- pos2 = GetPosDelmLast(pathw_w,ROOTLENGTH);//境界位置を探す
- if (pos2 == 0)return false;//root到達
- pathw_w[pos2] = 0;//境界まで削除 (例) dir1/dir2/file -> dir1/dir2 -> dir1
- LastNnResult = nn::fs::TryCreateDirectory(pathw_w);
- }
- //作成ディレクトリ多いと画面止まるので、作成ごとに抜ける
- *mkdir = true; // 帰値:false で mkdir=true ならディレクトリ作成のみ
- return false;
- //if (pos2 == pos)break;//配置ディレクトリなら抜ける
- //todo:ディレクトリが深いとき時間がかかるなら、無駄なTryCreateを省く
- //案)直上から最初の成功までのデリミタ位置を記録
- //先に全ディレクトリ作っておくのがよさげ
- //}
- //}
- //LastNnResult = writer.TryInitialize(path_w,false);
- //return LastNnResult.IsSuccess();
-}
-
-
-//ファイルライト
-s32 SaveData::Write(char *buffer,size_t size)
-{
- s32 ct;
- LastNnResult = writer.TryWrite(&ct,(void*)buffer,size);
- if(LastNnResult.IsFailure())ct=0;
- return ct;
-}
-
-//コミット
-bool SaveData::Commit()
-{
-#ifdef USE_SYS_SAVE
- LastNnResult=nn::fs::CommitSystemSaveData(sdataName);
-#else
- LastNnResult=nn::fs::CommitSaveData(sdataName);
-#endif
- return LastNnResult.IsSuccess();
-}
-
-
-
-//コンストラクタ
-SaveData::SaveData()
-{
- IsMounted = false;
- s_lv=0;
- PrdCode[0] = 0;
- m_info.DirCount = 0;
- m_info.FileCount = 0;
- m_info.DirEntry = 0;
- m_info.FileEntry = 0;
- wcscpy(path_w,sdataRoot_w);
- //wcscpy(pathu_w,path_w);
- pPathTop = (wchar_t*)((u32)&path_w+strlen(sdataName)*2+2);
-
-}
-
-void SaveData::Finalize()
-{
- Close();
- Unmount();
-}
-//デストラクタ
-SaveData::~SaveData()
-{
- Finalize();
-}
-
-
-
diff --git a/trunk/CardSaveDataMover/body/source/savefile/savedata.h b/trunk/CardSaveDataMover/body/source/savefile/savedata.h
deleted file mode 100644
index 1878008..0000000
--- a/trunk/CardSaveDataMover/body/source/savefile/savedata.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*---------------------------------------------------------------------------*
- Project: Horizon
- File: irp.h
-
- Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
-
- These coded instructions, statements, and computer programs contain
- proprietary information of Nintendo of America Inc. and/or Nintendo
- Company Ltd., and are protected by Federal copyright law. They may
- not be disclosed to third parties or copied or duplicated in any form,
- in whole or in part, without the prior written consent of Nintendo.
-
- $Rev$
- *---------------------------------------------------------------------------*/
-
-#ifndef SAVEDATA_H_
-#define SAVEDATA_H_
-
-#include
-#include
-//#include
-#include "../my_defs.h"
-#include "savefile.h"
-
-#define MAX_PATH_LENGTH 512
-
-class SaveData
-{
-public:
- s64 FileSize;
- nn::Result LastNnResult;
- char PrdCode[20];
-private:
- nn::fs::FileReader reader;
- nn::fs::FileWriter writer;
- int s_lv;
- wchar_t *pPathTop;
- tArcInfo m_info;
- bool s_serch;
- u8 pad[3];//padding
-public:
- SaveData();
- ~SaveData();
- myResult Mount();
- void Unmount();
- myResult GetPath(wchar_t *path);
- void ResetPath();
- bool Open(wchar_t *path);
- void Finalize();
- void Close();
- void CloseW();
- s32 Read(char *buffer,size_t size);
- myResult IsExist();
- bool GetInfo(tArcInfo *pinfo);
- myResult Format(tArcInfo *pinfo);
- bool OpenW(wchar_t *path,s64 size,bool *mkdir);
- s32 Write(char *buffer,size_t size);
- bool Commit();
- bool GetPrdCode();
-#ifdef USE_SYS_SAVE
- void Delete();
-#endif
-};
-
-
-#endif
diff --git a/trunk/CardSaveDataMover/body/source/savefile/savefile.cpp b/trunk/CardSaveDataMover/body/source/savefile/savefile.cpp
deleted file mode 100644
index 8b050d2..0000000
--- a/trunk/CardSaveDataMover/body/source/savefile/savefile.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-//ʊ
-
-#include "savefile.h"
-
-//I[OŌE("/"=0x2f)ʒuԂ
-//top :͈͂̐擪w
-int GetPosDelmLast(wchar_t *s,int top)
-{
- size_t i = wcslen(s);
- if (i < top)return -1;
- if (i ==top)return 0;
- i--;
- while(i > top-1){
- if (s[i]==L'/')return i;
- i--;
- }
- return -1;
-}
diff --git a/trunk/CardSaveDataMover/body/source/savefile/savefile.h b/trunk/CardSaveDataMover/body/source/savefile/savefile.h
deleted file mode 100644
index 96775cd..0000000
--- a/trunk/CardSaveDataMover/body/source/savefile/savefile.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef SAVEFILE_H_
-#define SAVEFILE_H_
-
-#include
-#include
-#include
-
-//APIgpăA[JCu擾
-#define INFO_API_USE 1
-
-//J[h̕ςɃVXeZ[ugp(APIΉ܂ł̎b)
-//#define USE_SYS_SAVE 1
-
-//SDۑ
-//#define BKUP_NOTMEM 1
-
-int GetPosDelmLast(wchar_t *s,int top);
-
-//t@C̃o[W
-#define INFO_VERSION 1
-
-//SDobNAbvɓ
-//ύX̍ۂ͌݊Ƃ悤lĵ݂Ƃ
-typedef struct{
- u32 DirEntry,FileEntry;
- u32 DirCount,FileCount;
- bool Dup;
- u8 Ver;//o[W
- char Pcode[20];//product code save,exsaveNXPrdCodeTCYȂ
- u8 padding[3];//pfBO
-}tArcInfo;
-
-
-
-#endif
diff --git a/trunk/CardSaveDataMover/body/source/screen/screen.cpp b/trunk/CardSaveDataMover/body/source/screen/screen.cpp
deleted file mode 100644
index 2c1b7ea..0000000
--- a/trunk/CardSaveDataMover/body/source/screen/screen.cpp
+++ /dev/null
@@ -1,793 +0,0 @@
-#include
-#include
-#include "screen.h"
-#include "../my_defs.h"
-#include "../common/ver.h"
-
-
-Gui gui;
-u8 scr_evnt;
-
-enum{
-//PANEL_END,
-PANEL_ERROR,
-PANEL_SUCCESS,
-PANEL_TOPMENU,
-PANEL_TITLE,
-PANEL_QUIT,
-PANEL_READ,
-PANEL_WRITE,
-PANEL_YES,
-PANEL_NO,
-PANEL_CONFIRM,
-PANEL_DELCONF,
-PANEL_MENU,
-PANEL_BKUP,
-PANEL_INSEXIT,
-PANEL_DBGLOG
-};
-
-enum{
-MESSAGE_VERSION,
-MESSAGE_PRODUCT,
-MESSAGE_PRODUCT2,
-MESSAGE_ERROR_TITLE,
-MESSAGE_ERROR_INFO,
-MESSAGE_ERROR_INFO2,
-MESSAGE_ERROR_INFO3,
-MESSAGE_SUCCESS_TITLE,
-MESSAGE_SUCCESS_INFO,
-MESSAGE_SUCCESS_INFO2,
-MESSAGE_CONFIRM_TITLE,
-MESSAGE_CONFIRM_MSG,
-MESSAGE_DELCONF_TITLE,
-MESSAGE_DELCONF_MSG,
-MESSAGE_DELCONF_MSG2,
-MESSAGE_DELCONF_MSG3,
-//MESSAGE_TOPMENU_HELP_TITLE,
-MESSAGE_TOPMENU_HELP_READ,
-MESSAGE_TOPMENU_HELP_WRITE,
-MESSAGE_TOPMENU_HELP_END,
-MESSAGE_TOPMENU_HELP_OPERATE,
-MESSAGE_TITLE,
-MESSAGE_MENU_READ,
-MESSAGE_MENU_WRITE,
-//MESSAGE_MENU_END,
-MESSAGE_MENU_OPERATE,
-MESSAGE_MENU_CAUTION,
-MESSAGE_MENU_ERROR,
-MESSAGE_MENU_DEBUG,
-MESSAGE_INSEXT_1,
-MESSAGE_INSEXT_2,
-MESSAGE_INSEXT_3,
-MESSAGE_OPERATE,
-MESSAGE_RESULT,
-MESSAGE_QUIT_OPERATE,
-MESSAGE_CONF,
-MESSAGE_COUNT,
-MESSAGE_COUNT2,
-MESSAGE_STATUS
-};
-
-enum{
-MEMO_DBGLOG
-};
-
-
-//ʏAR|[lgfBZ[u
-void ScrClr()
-{
- gui.ButtonMask(0);
- gui.DisableAll();
- gui.Draw();
-}
-
-nn::os::Tick holdTck;
-u32 holdVal;
-//---------------------------------CxgR[obN
-//----------------PAD{^
-void pushButton(u32 sts)
-{
- //NN_LOG("button > %4x\n",button);
- u32 trg = sts & 0x0ffff;
- u32 hld = sts >> 16;
-/*
- if (holdVal)//P\
- {
- if (nn::fnd::TimeSpan::FromMilliSeconds(100) > (nn::os::Tick::GetSystemCurrent()-holdTck)){
- holdVal |= trg;
- if (holdVal == nn::hid::BUTTON_LEFT | holdVal & nn::hid::BUTTON_X ){
- holdVal = 0;
- scr_evnt = EVNT_PUSH_LEFT_X;
- }
- }else holdVal = 0;
- }else if( (holdVal = trg & (nn::hid::BUTTON_LEFT | nn::hid::BUTTON_X ))>0)
- {//莞Ԃǂ̃{^ێ
- holdTck = nn::os::Tick::GetSystemCurrent();
- }
-*/
-
- if( holdVal )//
- {
- if (hld != holdVal)
- {
- holdVal = 0;
- }else
- if (nn::fnd::TimeSpan::FromMilliSeconds(4000) < (nn::os::Tick::GetSystemCurrent()-holdTck))
- {
- holdVal = 0;
- scr_evnt = EVNT_PUSH_LEFT_X;
- }
- }else if (hld == ( nn::hid::BUTTON_LEFT | nn::hid::BUTTON_X ))
- {
- holdVal = hld;
- holdTck = nn::os::Tick::GetSystemCurrent();
- }
-
-
-#ifdef DEBUG_ENABLE
- else if (hld & nn::hid::BUTTON_DOWN)//
- {
- if (hld & nn::hid::BUTTON_Y)
- if (hld & nn::hid::BUTTON_X)
- scr_evnt = EVNT_PUSH_DOWN_Y;
- }
- else if (trg & nn::hid::BUTTON_R)scr_evnt = EVNT_PUSH_R;
- else if (trg & nn::hid::BUTTON_L)scr_evnt = EVNT_PUSH_L;
-#endif
-#ifdef ENABLE_CRUSH
- else if (trg & nn::hid::BUTTON_Y)scr_evnt = EVNT_PUSH_Y;
-#endif
- else if (trg & nn::hid::BUTTON_B)scr_evnt = EVNT_PUSH_B;
-}
-
-//-----------------pl^b`
-// ---- Top Menu :READ
-void touchRead(u32 pos NN_IS_UNUSED_VAR)
-{
- scr_evnt = EVNT_SEL_READ;
-}
-// ---- Top Menu :WRITE
-void touchWrite(u32 pos NN_IS_UNUSED_VAR)
-{
- scr_evnt = EVNT_SEL_WRITE;
-}
-
-//---- Top Menu :END
-//void touchEnd(u32 pos NN_IS_UNUSED_VAR)
-//{
-// scr_evnt = EVNT_SEL_END;
-//}
-
-//---- YES
-void touchYes(u32 pos NN_IS_UNUSED_VAR)
-{
- scr_evnt = EVNT_YES;
-}
-
-//---- NO
-void touchNo(u32 pos NN_IS_UNUSED_VAR)
-{
- scr_evnt = EVNT_NO;
-}
-
-void touchQuit(u32 pos NN_IS_UNUSED_VAR)
-{
- scr_evnt = EVNT_QUIT;
-}
-
-#define NULL_PTR 0
-#define NULL_STR 0
-#define SCREEN_UPPER 0
-#define SCREEN_LOWER 1
-#define LOC_CONF_X 60
-#define LOC_CONF_Y 20
-#define LOC_CONF_W (400 - LOC_CONF_X*2)
-#define LOC_CONF_H 70
-#define LOC_LOG_X 50
-#define LOC_LOG_W (400 - LOC_LOG_X*2)
-#define LOC_LOG_Y (LOC_CONF_Y + LOC_CONF_H + 10)
-#define LOC_LOG_H (240 - LOC_LOG_Y - 10)
-#define LOG_MAX 10
-
-// -------------------------------------------------- R|[lgv
-//
-
-//Top Menu
-const tPanel panel_Read = {(uptr)touchRead,"Backup",80+20,30,160,80,PANEL_READ,SCREEN_LOWER};
-const tPanel panel_Write = {(uptr)touchWrite,"Restore",80+20,130,160,80,PANEL_WRITE,SCREEN_LOWER};
-//const tPanel panel_End = {(uptr)touchEnd,"End",80,180,160,30,PANEL_END,SCREEN_LOWER};
-
-//Yes No
-const tPanel panel_Yes = {(uptr)touchYes,"YES",40+10,60,80,120,PANEL_YES,SCREEN_LOWER};
-const tPanel panel_No = {(uptr)touchNo,"NO",200+30,60,80,120,PANEL_NO,SCREEN_LOWER};
-
-//Quit
-const tPanel panel_Quit = {(uptr)touchQuit,"Quit",80+20,60,160,120,PANEL_QUIT,SCREEN_LOWER};
-
-//
-//foOp
-//G[\
-const tPanel panel_Error = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_ERROR,SCREEN_UPPER};
-const tMessage mess_Title_Err = {"title",10,10,COLOR_RED,8,MESSAGE_ERROR_TITLE,PANEL_ERROR};
-const tMessage mess_Info_Err = {"info",10,22,COLOR_RED,8,MESSAGE_ERROR_INFO,PANEL_ERROR};
-const tMessage mess_Info2_Err = {"info2",10,40,COLOR_RED,8,MESSAGE_ERROR_INFO2,PANEL_ERROR};
-const tMessage mess_Info3_Err = {"info3",10,50,COLOR_RED,8,MESSAGE_ERROR_INFO3,PANEL_ERROR};
-
-//
-const tPanel panel_Success = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_SUCCESS,SCREEN_UPPER};
-const tMessage mess_Title_Suc = {"title",10,10,COLOR_GREEN,8,MESSAGE_SUCCESS_TITLE,PANEL_SUCCESS};
-const tMessage mess_Info_Suc = {"info",10,40,COLOR_WHITE,8,MESSAGE_SUCCESS_INFO,PANEL_SUCCESS};
-const tMessage mess_Info2_Suc = {"info2",10,50,COLOR_WHITE,8,MESSAGE_SUCCESS_INFO2,PANEL_SUCCESS};
-
-//smF
-const tPanel panel_Confirm = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_CONFIRM,SCREEN_UPPER};
-const tMessage mess_conf_Title = {"title",10,10,COLOR_YELLO,8,MESSAGE_CONFIRM_TITLE,PANEL_CONFIRM};
-const tMessage mess_conf_Msg = {"Do you execute?",10,40,COLOR_WHITE,8,MESSAGE_CONFIRM_MSG,PANEL_CONFIRM};
-
-//gbvj[
-const tPanel panel_topmenu_help = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_TOPMENU,SCREEN_UPPER};
-const tMessage mess_topmenu_help_read = {"[Backup] Card -> bkup",10,4,COLOR_WHITE,8,MESSAGE_TOPMENU_HELP_READ,PANEL_TOPMENU};
-const tMessage mess_topmenu_help_notread = {"[Backup] is Invalid",10,4,COLOR_RED,8,MESSAGE_TOPMENU_HELP_READ,PANEL_TOPMENU};
-const tMessage mess_topmenu_help_write = {"[Restore] bkup -> Card",10,16,COLOR_WHITE,8,MESSAGE_TOPMENU_HELP_WRITE,PANEL_TOPMENU};
-const tMessage mess_topmenu_help_notwrite = {"[Restore] is Invalid",10,16,COLOR_RED,8,MESSAGE_TOPMENU_HELP_WRITE,PANEL_TOPMENU};
-const tMessage mess_topmenu_help_end = {"[End] return to SystemMenu",10,28,COLOR_WHITE,8,MESSAGE_TOPMENU_HELP_END,PANEL_TOPMENU};
-const tMessage mess_topmenu_help_operate = {"touch below",10,48,COLOR_GREEN,8,MESSAGE_TOPMENU_HELP_OPERATE,PANEL_TOPMENU};
-
-//O\
-const tPanel panel_dbglog = {NULL_PTR,NULL_STR,LOC_LOG_X,LOC_LOG_Y,LOC_LOG_W,LOC_LOG_H,PANEL_DBGLOG,SCREEN_UPPER};
-const tMemo memo_dbglog = {LOG_MAX,10,10,COLOR_WHITE,8,MEMO_DBGLOG,PANEL_DBGLOG};
-
-
-//ʏ펞
-//^Cg
-#define FONT_SIZE_TITLE 12
-#define LOC_TITL_X (40-FONT_SIZE_TITLE*2)
-#define LOC_TITL_Y 20
-#define LOC_TITL_W (400 - LOC_CONF_X*2)
-#define LOC_TITL_H 50
-#define FONT_SIZE_PRODUCT 10
-const tPanel panel_title = {NULL_PTR,NULL_STR,LOC_TITL_X,LOC_TITL_Y,LOC_TITL_W,LOC_TITL_H,PANEL_TITLE,SCREEN_UPPER};
-const tMessage mess_title = {"title",0,0,COLOR_WHITE,FONT_SIZE_TITLE,MESSAGE_TITLE,PANEL_TITLE};
-const tMessage mess_product = {"product",0,LOC_TITL_H - 22,COLOR_WHITE,FONT_SIZE_PRODUCT,MESSAGE_PRODUCT,PANEL_TITLE};
-const tMessage mess_product2 = {"product2",0,LOC_TITL_H - 10,COLOR_WHITE,FONT_SIZE_PRODUCT,MESSAGE_PRODUCT2,PANEL_TITLE};
-const tMessage mess_version = {"version",LOC_TITL_W-FONT_SIZE_PRODUCT*6,FONT_SIZE_TITLE+2,COLOR_WHITE,FONT_SIZE_PRODUCT,MESSAGE_VERSION,PANEL_TITLE};
-
-#define LOC_MESS_X 20
-#define LOC_MESS_W (400 - LOC_MESS_X*2)
-#define LOC_MESS_Y (LOC_TITL_Y + LOC_TITL_H + 10)
-#define LOC_MESS_H (240 - LOC_MESS_Y - 10)
-//TOPj[
-//\̓OƔr
-#define FONT_SIZE 10
-#define STR_LINE(ln) (FONT_SIZE + 2)*ln
-const tPanel panel_menu = {NULL_PTR,NULL_STR,LOC_MESS_X,LOC_MESS_Y,LOC_MESS_W,LOC_MESS_H,PANEL_MENU,SCREEN_UPPER};
-const tMessage mess_menu_read = {"[Backup] Card savedata Backup",10,STR_LINE(1),COLOR_WHITE,FONT_SIZE,MESSAGE_MENU_READ,PANEL_MENU};
-const tMessage mess_menu_write = {"[Restore] restore to Card",10,STR_LINE(2),COLOR_WHITE,FONT_SIZE,MESSAGE_MENU_WRITE,PANEL_MENU};
-//const tMessage mess_menu_end = {"[End] close this apprication",10,STR_LINE(3),COLOR_WHITE,FONT_SIZE,MESSAGE_MENU_END,PANEL_MENU};
-const tMessage mess_menu_operate = {"touch below",10,STR_LINE(4),COLOR_GREEN,FONT_SIZE,MESSAGE_MENU_OPERATE,PANEL_MENU};
-const tMessage mess_bkuperr = {"Backup error",10,STR_LINE(6),COLOR_RED,FONT_SIZE,MESSAGE_MENU_ERROR,PANEL_MENU};
-const tMessage mess_carderr = {"CARD error",10,STR_LINE(7),COLOR_YELLO,FONT_SIZE,MESSAGE_MENU_CAUTION,PANEL_MENU};
-const tMessage mess_debug = {"Crush Mode",10,STR_LINE(3),COLOR_YELLO,FONT_SIZE,MESSAGE_MENU_DEBUG,PANEL_MENU};
-
-//Backup
-//const tPanel panel_bkup = {NULL_PTR,NULL_STR,LOC_LOG_X,LOC_LOG_Y,LOC_LOG_W,LOC_LOG_H,PANEL_BKUP,SCREEN_UPPER};
-const tPanel panel_bkup = {NULL_PTR,NULL_STR,LOC_MESS_X,LOC_MESS_Y,LOC_MESS_W,LOC_MESS_H,PANEL_BKUP,SCREEN_UPPER};
-const tMessage mess_quit_operate = {"touch [Quit],or Push B",10,STR_LINE(4),COLOR_SKY,FONT_SIZE,MESSAGE_QUIT_OPERATE,PANEL_BKUP};
-const tMessage mess_conf = {"Do you execute?",10,STR_LINE(2),COLOR_WHITE,FONT_SIZE,MESSAGE_CONF,PANEL_BKUP};
-const tMessage mess_result = {"result",10,STR_LINE(2),COLOR_WHITE,FONT_SIZE,MESSAGE_RESULT,PANEL_BKUP};
-const tMessage mess_operate = {"touch below",10,STR_LINE(4),COLOR_GREEN,FONT_SIZE,MESSAGE_OPERATE,PANEL_BKUP};
-const tMessage mess_status = {"status",10,STR_LINE(7),COLOR_WHITE,FONT_SIZE,MESSAGE_STATUS,PANEL_BKUP};
-const tMessage mess_count = {"count",10,STR_LINE(8),COLOR_WHITE,FONT_SIZE,MESSAGE_COUNT,PANEL_BKUP};
-const tMessage mess_count2 = {"count2",10,STR_LINE(9),COLOR_GREEN,FONT_SIZE,MESSAGE_COUNT2,PANEL_BKUP};
-
-
-//}
-//const tPanel panel_insexit = {NULL_PTR,NULL_STR,LOC_LOG_X,LOC_LOG_Y,LOC_LOG_W,LOC_LOG_H,PANEL_INSEXIT,SCREEN_UPPER};
-const tPanel panel_insexit = {NULL_PTR,NULL_STR,LOC_MESS_X,LOC_MESS_Y,LOC_MESS_W,LOC_MESS_H,PANEL_INSEXIT,SCREEN_UPPER};
-const tMessage mess_insexit = {"device insert or pull out is detected",10,STR_LINE(3),COLOR_RED,8,MESSAGE_INSEXT_1,PANEL_INSEXIT};
-const tMessage mess_insexit2 = {"return to top menu",10,STR_LINE(5),COLOR_WHITE,8,MESSAGE_INSEXT_2,PANEL_INSEXIT};
-const tMessage mess_insexit3 = {"please touch or push B",10,STR_LINE(6),COLOR_WHITE,8,MESSAGE_INSEXT_3,PANEL_INSEXIT};
-
-//폜mF
-//const tPanel panel_delconf = {NULL_PTR,NULL_STR,LOC_CONF_X-10,LOC_CONF_Y,LOC_CONF_W+10,LOC_CONF_H*2,PANEL_DELCONF,SCREEN_UPPER};
-const tPanel panel_delconf = {NULL_PTR,NULL_STR,LOC_MESS_X,LOC_MESS_Y-36,LOC_MESS_W,LOC_MESS_H,PANEL_DELCONF,SCREEN_UPPER};
-const tMessage mess_delconf_Title = {" *** DELETE *** ",10,10,COLOR_YELLO,16,MESSAGE_DELCONF_TITLE,PANEL_DELCONF};
-const tMessage mess_delconf_Msg = {" caution!",10,50,COLOR_YELLO,12,MESSAGE_DELCONF_MSG,PANEL_DELCONF};
-const tMessage mess_delconf_Msg2 = {"this is delete backup",10,70,COLOR_YELLO,12,MESSAGE_DELCONF_MSG2,PANEL_DELCONF};
-const tMessage mess_delconf_Msg3 = {"Do you execute?",10,90,COLOR_YELLO,12,MESSAGE_DELCONF_MSG3,PANEL_DELCONF};
-
-
-
-nn::os::LightEvent stopEvnt(true);
-
-char scr_ver[16];
-char scr_err[32];
-char scr_debug[32];
-//menu
-bool ScrInitialize(uptr heap,u32 size)
-{
- scr_evnt = EVNT_NONE;
- holdVal = 0;
- holdTck = nn::fnd::TimeSpan(0);
-
- if (gui.Initialize(heap,size,&stopEvnt)==false)return false;
-
- gui.ButtonCallback((uptr)pushButton);
- //R|[lgo^
- gui.PanelSet(&panel_Read);
- gui.PanelSet(&panel_Write);
-// gui.PanelSet(&panel_End);
- gui.PanelSet(&panel_Yes);
- gui.PanelSet(&panel_No);
- gui.PanelSet(&panel_Quit);
- gui.PanelSet(&panel_Error);
- gui.PanelSet(&panel_Success);
- gui.PanelSet(&panel_Confirm);
- gui.PanelSet(&panel_delconf);
- gui.PanelSet(&panel_topmenu_help);
- gui.PanelSet(&panel_title);
- gui.PanelSet(&panel_menu);
- gui.PanelSet(&panel_bkup);
- gui.PanelSet(&panel_dbglog);
- gui.PanelSet(&panel_insexit);
-
- gui.PanelLineStyle(PANEL_TITLE,COLOR_BLACK);
-
-
- gui.MessSet(&mess_Title_Err);
- gui.MessSet(&mess_Info_Err);
- gui.MessSet(&mess_Info2_Err);
- gui.MessSet(&mess_Info3_Err);
- gui.MessSet(&mess_Title_Suc);
- gui.MessSet(&mess_Info_Suc);
- gui.MessSet(&mess_Info2_Suc);
- gui.MessSet(&mess_conf_Title);
- gui.MessSet(&mess_conf_Msg);
- gui.MessSet(&mess_delconf_Title);
- gui.MessSet(&mess_delconf_Msg);
- gui.MessSet(&mess_delconf_Msg2);
- gui.MessSet(&mess_delconf_Msg3);
-
- gui.MessSet(&mess_topmenu_help_read);
- gui.MessSet(&mess_topmenu_help_write);
- gui.MessSet(&mess_topmenu_help_end);
- gui.MessSet(&mess_topmenu_help_operate);
-
- gui.MessSet(&mess_title);
- gui.MessSet(&mess_version);
- gui.MessSet(&mess_product);
- gui.MessSet(&mess_product2);
- gui.MessSet(&mess_menu_read);
- gui.MessSet(&mess_menu_write);
-// gui.MessSet(&mess_menu_end);
- gui.MessSet(&mess_menu_operate);
- gui.MessSet(&mess_quit_operate);
- gui.MessSet(&mess_conf);
- gui.MessSet(&mess_operate);
- gui.MessSet(&mess_bkuperr);
- gui.MessSet(&mess_carderr);
- gui.MessSet(&mess_debug);
- gui.MessSet(&mess_result);
- gui.MessSet(&mess_status);
- gui.MessSet(&mess_count);
- gui.MessSet(&mess_count2);
-
- gui.MessSet(&mess_insexit);
- gui.MessSet(&mess_insexit2);
- gui.MessSet(&mess_insexit3);
-
- gui.MemoSet(&memo_dbglog);
-
- gui.MemoEffective(MESSAGE_PRODUCT);
- gui.MessEffective(MESSAGE_ERROR_TITLE);
- gui.MessEffective(MESSAGE_ERROR_INFO);
- gui.MessEffective(MESSAGE_ERROR_INFO2);
- gui.MessEffective(MESSAGE_ERROR_INFO3);
- gui.MessEffective(MESSAGE_SUCCESS_TITLE);
- gui.MessEffective(MESSAGE_SUCCESS_INFO);
- gui.MessEffective(MESSAGE_SUCCESS_INFO2);
- gui.MessEffective(MESSAGE_CONFIRM_TITLE);
- gui.MessEffective(MESSAGE_CONFIRM_MSG);
- gui.MessEffective(MESSAGE_DELCONF_TITLE);
- gui.MessEffective(MESSAGE_DELCONF_MSG);
- gui.MessEffective(MESSAGE_DELCONF_MSG2);
- gui.MessEffective(MESSAGE_DELCONF_MSG3);
- gui.MessEffective(MESSAGE_TOPMENU_HELP_READ);
- gui.MessEffective(MESSAGE_TOPMENU_HELP_WRITE);
- gui.MessEffective(MESSAGE_TOPMENU_HELP_END);
- gui.MessEffective(MESSAGE_TOPMENU_HELP_OPERATE);
- gui.MessEffective(MESSAGE_MENU_READ);
- gui.MessEffective(MESSAGE_MENU_WRITE);
-// gui.MessEffective(MESSAGE_MENU_END);
- gui.MessEffective(MESSAGE_MENU_OPERATE);
- gui.MessEffective(MESSAGE_INSEXT_1);
- gui.MessEffective(MESSAGE_INSEXT_2);
- gui.MessEffective(MESSAGE_INSEXT_3);
- gui.MessEffective(MESSAGE_TITLE);
- gui.MessEffective(MESSAGE_VERSION);
- gui.MemoEffective(MEMO_DBGLOG);
-
- gui.PanelLineStyle(PANEL_DELCONF,COLOR_YELLO);
-
- sprintf(scr_ver,"ver %.2f",VERSION);
- gui.MessStr(MESSAGE_VERSION,scr_ver);
- gui.MessStr(MESSAGE_MENU_CAUTION,scr_err);
- gui.MessStr(MESSAGE_MENU_ERROR,scr_err);
- gui.MessStr(MESSAGE_MENU_DEBUG,scr_debug);
-
- return true;
-
-}
-
-void ScrFinalize()
-{
- stopEvnt.Signal();
- while(stopEvnt.TryWait()){
- nn::os::Thread::Yield();
-
- };
- gui.Finalize();
-}
-
-//YES-NO {^
-void YesNo()
-{
- gui.ButtonMask(nn::hid::BUTTON_A | nn::hid::BUTTON_B);
- gui.PanelEffective(PANEL_YES);
- gui.PanelEffective(PANEL_NO);
- gui.Draw();
-}
-
-void Quit()
-{
- gui.ButtonMask(nn::hid::BUTTON_A | nn::hid::BUTTON_B);
- gui.PanelEffective(PANEL_QUIT);
- gui.Draw();
-}
-
-
-//gbvj[
-//:J[h
-void scr_TopMenuDbg(bool formatted,bool insertted)//fobOp
-{
- scr_evnt = EVNT_NONE;
- gui.ButtonMask(nn::hid::BUTTON_A | nn::hid::BUTTON_R | nn::hid::BUTTON_L);
-
- if (formatted)
- {//[h\
- gui.MessSet(&mess_topmenu_help_read);
- gui.PanelEffective(PANEL_READ);
- }else{//[hs
- gui.MessSet(&mess_topmenu_help_notread);
- gui.PanelEffective(PANEL_READ,false);
- }
- if (insertted)
- {//݉
- gui.MessSet(&mess_topmenu_help_write);
- gui.PanelEffective(PANEL_WRITE);
- }else{//ݕs
- gui.MessSet(&mess_topmenu_help_notwrite);
- gui.PanelEffective(PANEL_WRITE,false);
- }
-
- gui.MessEffective(MESSAGE_TOPMENU_HELP_READ);
- gui.MessEffective(MESSAGE_TOPMENU_HELP_WRITE);
-// gui.PanelEffective(PANEL_END);
- gui.PanelEffective(PANEL_TOPMENU);
- gui.Draw();
-}
-
-//ʏ펞
-
-//v_NgR[h
-//:J[hAgZ[uɋL^ꂽ
-char scr_pcode[32];
-void scr_PrdCode(char *s)
-{
- strcpy(scr_pcode,"CARD : ");
- if (s[0]==0) strcat(scr_pcode,"----");
- else strcat(scr_pcode,s);
- gui.MessStr(MESSAGE_PRODUCT,scr_pcode);
-}
-
-char scr_pcode2[64];
-void scr_PrdCodeEx(char *s)
-{
- strcpy(scr_pcode2,"BKUP : ");
- if (s[0]==0) strcat(scr_pcode2,"----");
- else strcat(scr_pcode2,s);
- gui.MessStr(MESSAGE_PRODUCT2,scr_pcode2);
-}
-
-//폜̎smF
-void scr_DelConf()
-{
- scr_evnt = EVNT_NONE;
- gui.PanelEffective(PANEL_DELCONF);
- YesNo();
-}
-
-
-//Top menu
-//:foCX
-//arg : v_NgR[hv
-void scr_TopMenu(bool formatted,bool inserted,bool exfm,bool bkupins,int err)
-{
-
- int i;
- scr_evnt = EVNT_NONE;
-
- u32 mask = 0;
- mask |= (nn::hid::BUTTON_LEFT | nn::hid::BUTTON_X);//LEFT+X = Delete L
-#ifdef DEBUG_ENABLE
- mask | = ( nn::hid::BUTTON_DOWN | nn::hid::BUTTON_Y |nn::hid::BUTTON_X|nn::hid::BUTTON_L | nn::hid::BUTTON_R);
-#endif
-#ifdef CRUSH_ENABLE
- extern bool CrashForDebug;
- mask | = nn::hid::BUTTON_Y;
- if (CrashForDebug==0) gui.MessEffective(MESSAGE_MENU_DEBUG,false,false);
- else{
- sprintf(scr_debug,"Crush mode %d",CrashForDebug);
- gui.MessEffective(MESSAGE_MENU_DEBUG);
- }
-#endif
-
- gui.MessStr(MESSAGE_TITLE," < CTR Card Savedata Mover >");
-
- gui.MessEffective(MESSAGE_MENU_ERROR,false,false);
- gui.MessEffective(MESSAGE_MENU_CAUTION,false,false);
- gui.MessEffective(MESSAGE_MENU_OPERATE,false,false);
- //Е̂ݗL
- if (formatted && bkupins && (exfm == false))
- {//obNAbv
- gui.MessEffective(MESSAGE_MENU_OPERATE);
- gui.PanelEffective(PANEL_READ);
- gui.PanelEffective(PANEL_WRITE,false,false);
- }else if (exfm && inserted)
- {//XgA
- mask |= (nn::hid::BUTTON_LEFT | nn::hid::BUTTON_X);//LEFT+X = Delete L
- gui.PanelEffective(PANEL_READ,false,false);
- i =0;
- if (err & SDATA_ERRPUT_MEDIA) i = ERC_MEDIA + ERC_DEV_CARD;//obNAbvȂ
- else
- if (err & SDATA_ERRPUT_PCODE) i = ERC_DEV_OTHER + ERC_PRODCODE;//v_NgR[hsv
- if (i !=0 )
- {
- gui.PanelEffective(PANEL_WRITE,false,false);
- sprintf(scr_err,"ERROR %d",i);
- gui.MessEffective(MESSAGE_MENU_ERROR);
- }
- else{
- gui.MessEffective(MESSAGE_MENU_OPERATE);
- gui.PanelEffective(PANEL_WRITE);
- }
- }else{//Ȃ
- gui.PanelEffective(PANEL_WRITE,false,false);
- gui.PanelEffective(PANEL_READ,false,false);
-
- if (inserted == false)
- {
- strcpy(scr_err,"Please Insert Card");
- gui.MessEffective(MESSAGE_MENU_CAUTION);
-
- }else{
- if (err & SDATA_ERRPUT_MEDIA) i = ERC_MEDIA + ERC_DEV_CARD;//obNAbvȂ
- else
- if (err & SDATA_ERRPUT_VERIFI) i = ERC_SDK_VERIFI + ERC_DEV_CARD;//f[^Ă
- else if (bkupins == false) i = ERC_DEVICE + ERC_DEV_OUT;//ofoCX
- else i = ERC_FORMAT + ERC_DEV_CARD;//tH[}bgG[
- sprintf(scr_err,"ERROR %d",i);
- gui.MessEffective(MESSAGE_MENU_ERROR);
- }
- }
-
- gui.ButtonMask(mask);
-
- gui.MessEffective(MESSAGE_PRODUCT);
- gui.MessEffective(MESSAGE_PRODUCT2);
-
- gui.PanelEffective(PANEL_TITLE);
- gui.PanelEffective(PANEL_MENU);
-
- gui.Draw();
-}
-
-//fobOpA{^҂
-void ScrStep()
-{
- scr_evnt = EVNT_NONE;
- gui.ButtonMask(nn::hid::BUTTON_B);
-}
-
-
-void ClearBkupMess()
-{
- gui.MessEffective(MESSAGE_CONF,false,false);
- gui.MessEffective(MESSAGE_RESULT,false,false);
- gui.MessEffective(MESSAGE_OPERATE,false,false);
- gui.MessEffective(MESSAGE_QUIT_OPERATE,false,false);
- gui.MessEffective(MESSAGE_STATUS,false,false);
- gui.MessEffective(MESSAGE_COUNT,false,false);
- gui.MessEffective(MESSAGE_COUNT2,false,false);
- gui.PanelEffective(PANEL_BKUP);
-}
-
-//Backup
-void scr_Backup()
-{
- scr_evnt = EVNT_NONE;
- gui.PanelLineStyle(PANEL_BKUP,COLOR_SKY);
- gui.MessStr(MESSAGE_TITLE," --- Backup Card Savedata ---");
- gui.PanelEffective(PANEL_TITLE);
- ClearBkupMess();
- gui.Draw();
-
-}
-void scr_BackupYesNo()
-{
- scr_Backup();
- gui.MessEffective(MESSAGE_CONF);
- gui.MessEffective(MESSAGE_OPERATE);
- YesNo();
-}
-
-//restore
-void scr_Restore()
-{
- scr_evnt = EVNT_NONE;
- gui.PanelLineStyle(PANEL_BKUP,COLOR_PARPL);
- gui.MessStr(MESSAGE_TITLE,"--- Restore Card Savedata ---");
- gui.PanelEffective(PANEL_TITLE);
- ClearBkupMess();//backupƓplg
- gui.Draw();
-
-}
-void scr_RestoreYesNo()
-{
- scr_Restore();
- gui.MessEffective(MESSAGE_CONF);
- gui.MessEffective(MESSAGE_OPERATE);
- YesNo();
-}
-
-
-void scr_Status(char *s,eColor col)
-{
- gui.MessCol(MESSAGE_STATUS,col);
- gui.MessStr(MESSAGE_STATUS,s);
- gui.MessEffective(MESSAGE_STATUS);
- gui.Draw();
-}
-
-void scr_ResultQuit(char *s,eColor col)
-{
- gui.MessCol(MESSAGE_RESULT,col);
- gui.MessStr(MESSAGE_RESULT,s);
- gui.MessEffective(MESSAGE_RESULT);
- gui.MessEffective(MESSAGE_QUIT_OPERATE);
- Quit();
-}
-
-
-void scr_InsExitQuit()
-{
- ClearBkupMess();
- gui.PanelLineStyle(PANEL_INSEXIT,COLOR_RED);
- gui.PanelEffective(PANEL_INSEXIT);
- Quit();
-}
-
-// JEg/MAX \
-char str_Counter[128];
-char str_Counter2[128];
-void scr_CountPerMax(int ct,int max)
-{
- sprintf(str_Counter,"%d / %d",ct,max);
- gui.MessStr(MESSAGE_COUNT,str_Counter);
- gui.MessEffective(MESSAGE_COUNT);
- gui.Draw();
-}
-
-//Q[Wtotal
-void scr_CountPerMax2(int ct,int max,int total)
-{
- if (total == -1) str_Counter2[0]=0;
- else if (total != 0){
-// gui.MessCol(MESSAGE_COUNT2,COLOR_WHITE);
- sprintf(str_Counter2,"total size %d",total);
- }else{
-// gui.MessCol(MESSAGE_COUNT2,COLOR_YELLO);
- int i;
- int lv = ct/(max/25);
- for (i =0;i';
- while ( i < 25 )str_Counter2[i++] = '|';
- str_Counter2[i] = 0;
- }
- //sprintf(str_Counter2,"%d / %d",ct,max);
- gui.MessStr(MESSAGE_COUNT2,str_Counter2);
- gui.MessEffective(MESSAGE_COUNT2);
- gui.Draw();
-
-}
-
-void scr_MessOnCount2(char *str)
-{
-// gui.MessCol(MESSAGE_COUNT2,COLOR_YELLO);
- gui.MessStr(MESSAGE_COUNT2,str);
- gui.MessEffective(MESSAGE_COUNT2);
- gui.Draw();
-}
-
-
-//smF
-void scr_ConfirmDbg(char *str)
-{
- scr_evnt = EVNT_NONE;
- gui.MessStr(MESSAGE_CONFIRM_TITLE,str);
- gui.PanelEffective(PANEL_CONFIRM);
- YesNo();
-}
-
-
-//G[\Quit{^
-void scr_ErrorQuitDbg(tColStr **s)
-{
- scr_evnt = EVNT_NONE;
- gui.MessStr(MESSAGE_ERROR_TITLE,s[0]->str);
- gui.MessCol(MESSAGE_ERROR_TITLE,s[0]->color);
- gui.MessStr(MESSAGE_ERROR_INFO,s[1]->str);
- gui.MessCol(MESSAGE_ERROR_INFO,s[1]->color);
- gui.MessStr(MESSAGE_ERROR_INFO2,s[2]->str);
- gui.MessCol(MESSAGE_ERROR_INFO2,s[2]->color);
- gui.MessStr(MESSAGE_ERROR_INFO3,s[3]->str);
- gui.MessCol(MESSAGE_ERROR_INFO3,s[3]->color);
- gui.PanelEffective(PANEL_ERROR);
- Quit();
-}
-
-//\Quit{^
-void scr_SuccessQuitDbg(tColStr **s)
-{
- scr_evnt = EVNT_NONE;
- gui.MessStr(MESSAGE_SUCCESS_TITLE,s[0]->str);
- gui.MessCol(MESSAGE_SUCCESS_TITLE,s[0]->color);
- gui.MessStr(MESSAGE_SUCCESS_INFO,s[1]->str);
- gui.MessCol(MESSAGE_SUCCESS_INFO,s[1]->color);
- gui.MessStr(MESSAGE_SUCCESS_INFO2,s[2]->str);
- gui.MessCol(MESSAGE_SUCCESS_INFO2,s[2]->color);
- gui.PanelEffective(PANEL_SUCCESS);
- Quit();
-}
-
-
-//fobOO
-void scr_DgbLog(cStrLst *p)
-{
- gui.PanelLineStyle(PANEL_DBGLOG,COLOR_BLUE);
-
- for (int i=0;igetpos()+1;i++)gui.MemoStr(MEMO_DBGLOG,p->line(i),i);
-
- gui.PanelEffective(PANEL_DBGLOG);
- gui.Draw();
-}
-
-
-
-int ScrDbgLogGetMax()
-{
- return LOG_MAX;
-}
-
-
-void scr_Draw()
-{
- gui.Draw();
-}
-
-void scr_GetEvnt()
-{
-// gui.thUpdate();
-}
-
-
diff --git a/trunk/CardSaveDataMover/body/source/screen/screen.h b/trunk/CardSaveDataMover/body/source/screen/screen.h
deleted file mode 100644
index 4ecc79e..0000000
--- a/trunk/CardSaveDataMover/body/source/screen/screen.h
+++ /dev/null
@@ -1,115 +0,0 @@
-#ifndef SCREEN_H_
-#define SCREEN_H_
-
-#include
-#include
-#include "../gui/gui.h"
-
-//plID
-enum {
- EVNT_NONE,
- EVNT_YES,
- EVNT_NO,
- EVNT_QUIT,
- EVNT_PUSH_A,
- EVNT_PUSH_B,
- EVNT_PUSH_R,
- EVNT_PUSH_L,
- EVNT_PUSH_X,
- EVNT_PUSH_Y,
- EVNT_PUSH_LEFT_X,
- EVNT_PUSH_DOWN_Y,
- EVNT_SEL_READ,
- EVNT_SEL_WRITE,
- EVNT_SEL_END,
- EVNT_ERROR,
- EVNT_FATAL
-};
-
-typedef struct{
- char *str;
- eColor color;
- u8 pad[3];
-}tColStr;
-
-
-#define LST_MAX 30
-#define LST_LENGTH 128
-class cStrLst {
-private:
- int pos;
- int buttom;
- char str[LST_MAX][LST_LENGTH];
-public:
- cStrLst():pos(0){};
- void add(char *p){
- if (pos>=LST_MAX)return;
- //char *s = &str[pos][0];
- int i;
- if (pos == buttom)
- {
- i =0;
- while(i < buttom){ strcpy(str[i],str[i+1]);i++;}
- }else pos++;
- i=0;
- while(i < (LST_LENGTH-1)){ //I[o[[h
- if (p[i]!=0){
- str[pos][i] = p[i];
- i++;
- }else break;
- }
- str[pos][i] = 0;
- //strcpy(str[pos],p);
- //for (i =0;i=LST_MAX))return false;
- buttom = btm;
- return true;
- }
-};
-
-
-//Topj[ł̃G[\p̃tO
-//bit`FbN
-#define SDATA_ERRPUT_PCODE 1
-#define SDATA_ERRPUT_MEDIA 2
-#define SDATA_ERRPUT_VERIFI 4
-
-
-bool ScrInitialize(uptr heap,u32 size);
-void ScrFinalize();
-void ScrClr();
-int ScrDbgLogGetMax();
-void ScrStep();
-void scr_TopMenuDbg(bool formatted,bool insertted);
-void scr_TopMenu(bool formatted,bool inserted,bool exfm,bool sdins,int err);
-void scr_ErrorQuitDbg(tColStr **s);
-void scr_SuccessQuitDbg(tColStr **s);
-void scr_ConfirmDbg(char *str);
-void scr_DgbLog(cStrLst *p);
-void scr_BackupYesNo();
-void scr_Backup();
-void scr_RestoreYesNo();
-void scr_Restore();
-void scr_InsExitQuit();
-void scr_Status(char *s,eColor col);
-void scr_ResultQuit(char *s,eColor col);
-void scr_CountPerMax(int ct,int max);
-void scr_CountPerMax2(int ct,int max,int total);
-void scr_PrdCode(char *s);
-void scr_PrdCodeEx(char *s);
-void scr_DelConf();
-void scr_MessOnCount2(char *str);
-void scr_Draw();
-void scr_GetEvnt();
-
-#endif
-
diff --git a/trunk/CardSaveDataMover/common/common.cpp b/trunk/CardSaveDataMover/common/common.cpp
deleted file mode 100644
index 059e87f..0000000
--- a/trunk/CardSaveDataMover/common/common.cpp
+++ /dev/null
@@ -1,191 +0,0 @@
-#include
-#include
-#include "common.h"
-#include "sleep.h"
-#include "demo.h"
-
-
-extern demo::RenderSystemDrawing s_RenderSystem;
-extern nn::fnd::ExpHeap appHeap;
-extern uptr heapForGx;
-
-bool prohibitHome = false;// HOME {^֎~
-
-// t@CVXeƑJڂX[vƂ̔rɗp
-//nn::os::CriticalSection g_SleepCS;
-// HOME {^Jڂƃt@CVXe̔rɗpi蓮Zbgj
-nn::os::LightEvent g_TransitionEvent;
-// X[vƃt@CVXe̔rɗpi蓮Zbgj
-nn::os::LightEvent g_AwakeEvent;
-
-void restoreGraphicSetting()
-{
- // GPU WX^ݒ̕A
- // AL DMPGL API gpĐݒ肵Ԃ̕Â
- // WX^ݒR}h͑SčĔsׂ
- nngxUpdateState(NN_GX_STATE_ALL);
- nngxValidateState(NN_GX_STATE_ALL,GL_TRUE);
-}
-
-FUNCP end_func;
-void InitSysBreak(uptr adrs){
- end_func = (FUNCP)adrs;
-
- SleepHandler::Initialize();
-
- //g_SleepCS.Initialize();
- g_AwakeEvent.Initialize(true);
- g_TransitionEvent.Initialize(true);
-
- // N͏ Signal ԂɂĂ
- g_AwakeEvent.Signal();
- g_TransitionEvent.Signal();
-
- // AvbgCuɊւ@\Lɂ
- nn::applet::Enable(false);
- // gx, snd, dsp eCu Initialize applet::Enable() ̌ɌĂȂȂȂ
- // ɁAgx ̏ł nngxInitialize ́AEnable() ̏Ǐɍsׂ
-
- // S\ɓd{^ꂽȂǁAɏIĂꍇAŃAvI
- if ( nn::applet::IsExpectedToCloseApplication() )
- {
- SleepHandler::Finalize();
- nn::Result result = nn::applet::PrepareToCloseApplication();
- NN_UTIL_PANIC_IF_FAILED( result );
- nn::applet::CloseApplication();
- }
- // OtBbNXCȕ́Aȍ~ōsȂȂȂ
- // AAvP[V̏
-
-}
-
-
-//I
-void finish()
-{
-
- SleepHandler::Finalize();//SLEEP
- //g_SleepCS.Finalize();
-
- (*end_func)();
-
- g_AwakeEvent.Finalize();
- g_TransitionEvent.Finalize();
-
- nn::fs::Finalize();
-
-
- appHeap.Free(reinterpret_cast(heapForGx));
- appHeap.Finalize();
-
- nn::os::SetDeviceMemorySize(0);
- nn::os::SetHeapSize(0);
-
- NN_LOG("End\n");
- nn::applet::PrepareToCloseApplication();
- nn::applet::CloseApplication();
-}
-
-
-void CheckSysBreak(){
- // X[v̋ŃA1t[̕`抮҂Ă LCD Lɂ
- if ( SleepHandler::s_IsAfterWakeUp ) {
- nn::gx::StartLcdDisplay();
- SleepHandler::s_IsAfterWakeUp = false;
- }
-
- // GPU ̃WX^ݒ̐lꍇA
- // eJځAX[vvւ̕ԓ͕`Iɍsׂ
-
- // {̃X[v
- if ( SleepHandler::IsSleepRequested() )
- {
- SleepHandler::SleepSystem();
- }
-
- // Iv`FbN
- if ( nn::applet::IsExpectedToCloseApplication() )
- {
- finish();
- }
-
- // AvP[V̑Jڏs
-
- // HOME{^iOtBbNXCuς݂łȂȂȂj
- if ( nn::applet::IsExpectedToProcessHomeButton() )
- {
- if (prohibitHome){ // HOME {^֎~
- nn::applet::ClearHomeButtonState();//HOME {^tO폜
- }else
- {
- g_TransitionEvent.ClearSignal();
-
- // t@CVXe͑Jڂ҂
- //if ( g_SleepCS.TryEnter() )
- {
- // X[vv REJECT 悤
- nn::applet::DisableSleep();
-
- //nngxWaitCmdlistDone();
- nn::applet::ProcessHomeButton();
- nn::applet::AppletWakeupState wState = nn::applet::WaitForStarting();
- NN_UNUSED_VAR(wState);
-
- //g_SleepCS.Leave();
- g_TransitionEvent.Signal();
-
- // HOME j[̒fobe[s̗vɂ
- // AvIƔfꂽꍇAAṽC[vďI
- if ( nn::applet::IsExpectedToCloseApplication() )
- {
- // `挠͓nĂȂ
- finish();
- }
-
- nn::applet::EnableSleep(true);
-
- // OtBbN̐ݒ߂
- restoreGraphicSetting();
- }
- }
-
- }
-
-
- // d{^iOtBbNXCuς݂łȂȂȂj
- if ( nn::applet::IsExpectedToProcessPowerButton() )
- {
- g_TransitionEvent.ClearSignal();
-
- // t@CVXe͑Jڂ҂
- //if ( g_SleepCS.TryEnter() )
- {
- nn::applet::DisableSleep();
- //nngxWaitCmdlistDone();
- nn::applet::ProcessPowerButton();
- nn::applet::AppletWakeupState wState = nn::applet::WaitForStarting();
-
- NN_UNUSED_VAR(wState);
-
- //g_SleepCS.Leave();
- g_TransitionEvent.Signal();
-
- // AvIƔfꂽꍇAAṽC[vďI
- if ( nn::applet::IsExpectedToCloseApplication() )
- {
- // `挠͓nĂȂ
- finish();
- }
-
- nn::applet::EnableSleep(true);
-
- // OtBbN̐ݒ߂
- restoreGraphicSetting();
- }
-
- }
-
-
-
-
-}
diff --git a/trunk/CardSaveDataMover/common/common.h b/trunk/CardSaveDataMover/common/common.h
deleted file mode 100644
index 730fb6c..0000000
--- a/trunk/CardSaveDataMover/common/common.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef COMMON_H_
-#define COMMON_H_
-
-typedef void (*FUNCP)();
-
-void finish();
-void CheckSysBreak();
-void InitSysBreak(uptr adrs);
-
-
-#endif
diff --git a/trunk/CardSaveDataMover/common/shfnt.cpp b/trunk/CardSaveDataMover/common/shfnt.cpp
deleted file mode 100644
index 65ca877..0000000
--- a/trunk/CardSaveDataMover/common/shfnt.cpp
+++ /dev/null
@@ -1,368 +0,0 @@
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "demo.h"
-
-const char s_ShaderBinaryFilePath[] = "rom:/nnfont_RectDrawerShader.shbin";
-
-extern nn::fnd::ExpHeap appHeap;
-
-//---------------------------------------------------------------------------
-//! @brief シェーダの初期化を行います。
-//!
-//! @param[in,out] pResource 描画用リソースを管理するオブジェクトへのポインタ。
-//---------------------------------------------------------------------------
-void*
-InitShaders(nn::font::RectDrawer* pDrawer)
-{
- const size_t ROMFS_BUFFER_SIZE = 1024 * 64;
- static char buffer[ROMFS_BUFFER_SIZE];
-
- nn::fs::MountRom(16, 16, buffer, ROMFS_BUFFER_SIZE);
- nn::fs::FileReader shaderReader(s_ShaderBinaryFilePath);
-
- const u32 fileSize = (u32)shaderReader.GetSize();
-
- void* shaderBinary = appHeap.Allocate(fileSize);
- NN_NULL_ASSERT(shaderBinary);
-
- shaderReader.Read(shaderBinary, fileSize);
-
- const u32 vtxBufCmdBufSize =
- nn::font::RectDrawer::GetVertexBufferCommandBufferSize(shaderBinary, fileSize);
- void *const vtxBufCmdBuf = appHeap.Allocate(vtxBufCmdBufSize);
- NN_NULL_ASSERT(vtxBufCmdBuf);
- pDrawer->Initialize(vtxBufCmdBuf, shaderBinary, fileSize);
-
- appHeap.Free(shaderBinary);
-
- shaderReader.Finalize();
- nn::fs::Unmount("rom:");
- return vtxBufCmdBuf;
-}
-/*---------------------------------------------------------------------------*
- @brief グラフィックスの初期設定を行います。
- *---------------------------------------------------------------------------*/
-void
-InitGX()
-{
- glClearColor(0.3f, 0.3f, 0.3f, 1.0f);
-}
-
-
-//---------------------------------------------------------------------------
-//! @brief 描画の初期設定を行います。
-//!
-//! @param[in] width 画面の幅。
-//! @param[in] height 画面の高さ。
-//---------------------------------------------------------------------------
-void
-InitDraw(
- int width,
- int height
-)
-{
- // カラーバッファ情報
- // LCDの向きに合わせて、幅と高さを入れ替えています。
- const nn::font::ColorBufferInfo colBufInfo = { width, height, PICA_DATA_DEPTH24_STENCIL8_EXT };
-
- const u32 screenSettingCommands[] =
- {
-
- // ビューポートの設定
- NN_FONT_CMD_SET_VIEWPORT( 0, 0, colBufInfo.width, colBufInfo.height ),
-
- // シザー処理を無効
- NN_FONT_CMD_SET_DISABLE_SCISSOR( colBufInfo ),
-
- // wバッファの無効化
- // デプスレンジの設定
- // ポリゴンオフセットの無効化
- NN_FONT_CMD_SET_WBUFFER_DEPTHRANGE_POLYGONOFFSET(
- 0.0f, // wScale : 0.0 でWバッファが無効
- 0.0f, // depth range near
- 1.0f, // depth range far
- 0, // polygon offset units : 0.0 で ポリゴンオフセットが無効
- colBufInfo),
- };
-
- nngxAdd3DCommand(screenSettingCommands, sizeof(screenSettingCommands), true);
-
- static const u32 s_InitCommands[] =
- {
- // カリングを無効
- NN_FONT_CMD_SET_CULL_FACE( NN_FONT_CMD_CULL_FACE_DISABLE ),
-
- // ステンシルテストを無効
- NN_FONT_CMD_SET_DISABLE_STENCIL_TEST(),
-
- // デプステストを無効
- // カラーバッファの全ての成分を書き込み可
- NN_FONT_CMD_SET_DEPTH_FUNC_COLOR_MASK(
- false, // isDepthTestEnabled
- 0, // depthFunc
- true, // depthMask
- true, // red
- true, // green
- true, // blue
- true), // alpha
-
- // アーリーデプステストを無効
- NN_FONT_CMD_SET_ENABLE_EARLY_DEPTH_TEST( false ),
-
- // フレームバッファアクセス制御
- NN_FONT_CMD_SET_FBACCESS(
- true, // colorRead
- true, // colorWrite
- false, // depthRead
- false, // depthWrite
- false, // stencilRead
- false), // stencilWrite
- };
-
- nngxAdd3DCommand(s_InitCommands, sizeof(s_InitCommands), true);
-}
-
-//---------------------------------------------------------------------------
-//! @brief ResFontを構築します。
-//!
-//! @param[out] pFont 構築するフォントへのポインタ。
-//! @param[in] filePath ロードするフォントリソースファイル名。
-//!
-//! @return ResFont構築の成否を返します。
-//---------------------------------------------------------------------------
-bool
-InitFont(
- nn::font::ResFont* pFont,
- void* pBuffer
-)
-{
- // フォントリソースをセットします
- bool bSuccess = pFont->SetResource(pBuffer);
-
- // 描画用バッファを設定します。
- const u32 drawBufferSize = nn::font::ResFont::GetDrawBufferSize(pBuffer);
- void* drawBuffer = appHeap.Allocate(drawBufferSize, 4);
- pFont->SetDrawBuffer(drawBuffer);
- NN_NULL_ASSERT(drawBuffer);
-
- return bSuccess;
-}
-
-//---------------------------------------------------------------------------
-//! @brief ResFontを破棄します。
-//!
-//! @param[in] pFont 破棄するフォントへのポインタ。
-//---------------------------------------------------------------------------
-void
-CleanupFont(nn::font::ResFont* pFont)
-{
- // 描画用バッファの無効化
- // 描画用バッファがセットされているなら 構築時に SetDrawBuffer に渡したバッファへの
- // ポインタが返ってきます。
- void *const drawBuffer = pFont->SetDrawBuffer(NULL);
- if (drawBuffer != NULL)
- {
- appHeap.Free(drawBuffer);
- }
-}
-
-//---------------------------------------------------------------------------
-//! @brief 表示文字列用バッファを確保します。
-//!
-//! @param[in] charMax 表示する文字列の最大文字数。
-//!
-//! @return 確保した表示文字列用バッファへのポインタを返します。
-//---------------------------------------------------------------------------
-nn::font::DispStringBuffer*
-AllocDispStringBuffer(int charMax)
-{
- const u32 DrawBufferSize = nn::font::CharWriter::GetDispStringBufferSize(charMax);
- void *const bufMem = appHeap.Allocate(DrawBufferSize);
- NN_NULL_ASSERT(bufMem);
-
- return nn::font::CharWriter::InitDispStringBuffer(bufMem, charMax);
-}
-
-//---------------------------------------------------------------------------
-//! @brief 文字列表示用にモデルビュー行列と射影行列を設定します。
-//!
-//! @param[in] pDrawer RectDrawerオブジェクトへのポインタ。
-//! @param[in] width 画面の幅。
-//! @param[in] height 画面の高さ。
-//---------------------------------------------------------------------------
-void
-SetupTextCamera(
- nn::font::RectDrawer* pDrawer,
- int width,
- int height
-)
-{
- // 射影行列を正射影に設定
- {
- // 左上原点とし、Y軸とZ軸の向きが逆になるように設定します。
- nn::math::MTX44 proj;
- f32 znear = 0.0f;
- f32 zfar = -1.0f;
- f32 t = 0;
- f32 b = static_cast(width);
- f32 l = 0;
- f32 r = static_cast(height);
- nn::math::MTX44OrthoPivot(&proj, l, r, b, t, znear, zfar, nn::math::PIVOT_UPSIDE_TO_TOP);
- pDrawer->SetProjectionMtx(proj);
- }
-
- // モデルビュー行列を単位行列に設定
- {
- nn::math::MTX34 mv;
- nn::math::MTX34Identity(&mv);
- pDrawer->SetViewMtxForText(mv);
- }
-}
-
-nn::font::RectDrawer drawer;
-void *drawerBuf;
-nn::font::DispStringBuffer *pDrawStringBuf0;
-nn::font::DispStringBuffer *pDrawStringBuf1;
-nn::font::ResFont font;
-nn::font::TextWriter writer;
-//---------------------------------------------------------------------------
-//! @brief ASCII文字列を描画します。
-//---------------------------------------------------------------------------
-void shf_DrawText_0( u16 x,u16 y,char *s)
-{
- writer.SetCursor(x, y);
-
- writer.StartPrint();
- (void)writer.Print(s);
- writer.EndPrint();
- drawer.BuildTextCommand(&writer);
-
-
- drawer.DrawBegin();
-
- SetupTextCamera(&drawer, NN_GX_DISPLAY0_WIDTH, NN_GX_DISPLAY0_HEIGHT);
- writer.UseCommandBuffer();
-
- drawer.DrawEnd();
-}
-
-void shf_DrawText_1( u16 x,u16 y,char *s)
-{
- writer.SetCursor(x, y);
-
- writer.StartPrint();
- (void)writer.Print(s);
- writer.EndPrint();
- drawer.BuildTextCommand(&writer);
-
-
- drawer.DrawBegin();
-
- SetupTextCamera(&drawer, NN_GX_DISPLAY1_WIDTH, NN_GX_DISPLAY1_HEIGHT);
- writer.UseCommandBuffer();
-
- drawer.DrawEnd();
-}
-
-
-void shf_SetSize(f32 sz)
-{
- writer.SetScale(sz/14,sz/20);
-}
-
-void shf_SetScale(f32 h,f32 v)
-{
- writer.SetScale(h,v);
-}
-
-
-void shf_SetFontSize(f32 sz)
-{
- writer.SetFontSize(sz);
-}
-
-f32 shf_GetFontWidth()
-{
- return writer.GetFontWidth();
-}
-
-f32 shf_GetFontHeight()
-{
- return writer.GetFontHeight();
-}
-
-
-void shf_SetColor(f32 r,f32 g,f32 b,f32 a)
-{
- writer.SetTextColor(nn::util::FloatColor(r,g,b,a));
-}
-
-//初期化
-//AppHeap確保、RenderSystem.Inititの後に呼ぶ
-void SharedFontInit()
-{
-
- InitGX();
-
- // 共有フォントの初期化
- NN_UTIL_PANIC_IF_FAILED(nn::pl::InitializeSharedFont());
-
- // 共有フォントのロードが完了するまで待機
- while (nn::pl::GetSharedFontLoadState() != nn::pl::SHARED_FONT_LOAD_STATE_LOADED)
- {
- // 共有フォントのロードに失敗していないか確認
- if (nn::pl::GetSharedFontLoadState() == nn::pl::SHARED_FONT_LOAD_STATE_FAILED)
- {
- NN_TPANIC_("failed to load shared font!\n");
- }
- nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(1));
- }
-
- // 共有フォントの種類を取得
- //nn::pl::SharedFontType sharedFontType = nn::pl::GetSharedFontType();
-
- // 共有フォントデータのアドレスを取得
- void* pFontBuffer = nn::pl::GetSharedFontAddress();
-
- InitFont(&font, pFontBuffer);
-
- // 描画リソースの構築
- drawerBuf = InitShaders(&drawer);
-
- // 描画文字列用バッファの確保
- pDrawStringBuf0 = AllocDispStringBuffer(1024);
- pDrawStringBuf1 = AllocDispStringBuffer(512);
-
- writer.SetDispStringBuffer(pDrawStringBuf0);
- writer.SetFont(&font);
- SetupTextCamera(&drawer, NN_GX_DISPLAY0_WIDTH, NN_GX_DISPLAY0_HEIGHT);
-
-}
-
-
-void SharedFontFinalize()
-{
- drawer.Finalize();
-
- // 描画リソースの破棄
- appHeap.Free(drawerBuf);
-
- // フォントの破棄
- CleanupFont(&font);
-
- // 描画文字列用バッファの解放
- appHeap.Free(pDrawStringBuf1);
- appHeap.Free(pDrawStringBuf0);
-
-}
-
-
-/*---------------------------------------------------------------------------*
- End of file
- *---------------------------------------------------------------------------*/
diff --git a/trunk/CardSaveDataMover/common/shfnt.h b/trunk/CardSaveDataMover/common/shfnt.h
deleted file mode 100644
index e168087..0000000
--- a/trunk/CardSaveDataMover/common/shfnt.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*---------------------------------------------------------------------------*
- Project: Horizon
- File: irp.h
-
- Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
-
- These coded instructions, statements, and computer programs contain
- proprietary information of Nintendo of America Inc. and/or Nintendo
- Company Ltd., and are protected by Federal copyright law. They may
- not be disclosed to third parties or copied or duplicated in any form,
- in whole or in part, without the prior written consent of Nintendo.
-
- $Rev$
- *---------------------------------------------------------------------------*/
-
-#ifndef GUI_SHFNT_H_
-#define GUI_SHFNT_H_
-
-void SharedFontInit();
-void SharedFontFinalize();
-void shf_DrawText_0(u16 x,u16 y,char* s);
-void shf_DrawText_1(u16 x,u16 y,char* s);
-void shf_SetSize(f32 sz);
-void shf_SetScale(f32 h,f32 v);
-void shf_SetColor(f32 r,f32 g,f32 b,f32 a);
-void shf_SetFontSize(f32 sz);
-f32 shf_GetFontWidth();
-f32 shf_GetFontHeight();
-
-#endif
diff --git a/trunk/CardSaveDataMover/common/sleep.cpp b/trunk/CardSaveDataMover/common/sleep.cpp
deleted file mode 100644
index 67d32cc..0000000
--- a/trunk/CardSaveDataMover/common/sleep.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/*---------------------------------------------------------------------------*
- Project: Horizon
- File: sleep.cpp
-
- Copyright (C)2010 Nintendo Co., Ltd. All rights reserved.
-
- These coded instructions, statements, and computer programs contain
- proprietary information of Nintendo of America Inc. and/or Nintendo
- Company Ltd., and are protected by Federal copyright law. They may
- not be disclosed to third parties or copied or duplicated in any form,
- in whole or in part, without the prior written consent of Nintendo.
-
- $Rev$
- *---------------------------------------------------------------------------*/
-
-#include
-
-#include "sleep.h"
-
-//extern nn::os::CriticalSection g_SleepCS;
-extern nn::os::LightEvent g_TransitionEvent;
-extern nn::os::LightEvent g_AwakeEvent;
-
-volatile bool SleepHandler::s_IsAfterWakeUp = false;
-
-/*------------------------------------------------------------------------*/
-void SleepHandler::Initialize( void )
-{
- nn::applet::SetSleepQueryCallback(SleepQueryCallback, 0);
- nn::applet::SetAwakeCallback(AwakeCallback, 0);
-// nn::applet::SetSleepCancelCallback(NULL, 0); // CancelCallback は使わないことを推奨します
-}
-
-/*------------------------------------------------------------------------*/
-void SleepHandler::Finalize( void )
-{
- nn::applet::SetSleepQueryCallback(NULL, 0);
- nn::applet::SetAwakeCallback(NULL, 0);
-
- nn::applet::DisableSleep();
-}
-
-/*------------------------------------------------------------------------*
- システムスリープの指示が来ているかどうかを返します。
- *------------------------------------------------------------------------*/
-bool SleepHandler::IsSleepRequested( void )
-{
- if ( nn::applet::IsExpectedToReplySleepQuery() )
- return true;
-
- return false;
-}
-
-/*------------------------------------------------------------------------*
- 本体スリープ状態に移行させるための処理を行います。
- グラフィックスなどの処理がスリープに入っても問題ない
- 適切なタイミングで呼び出す必要があります。
- *------------------------------------------------------------------------*/
-void SleepHandler::SleepSystem( void )
-{
- // SleepHandler::IsSleepRequested() == true における呼び出しが前提
-
- // 何らかの理由で SleepQuery に対して REJECT を返す場合は、ここで判定して
- // REJECT を返し、この関数を抜ける
-
- // ファイルシステム処理中はスリープをしない
- //if ( g_SleepCS.TryEnter() )
- {
- // スリープ前処理
-
- nn::applet::ReplySleepQuery(nn::applet::REPLY_ACCEPT);
-
- g_AwakeEvent.Wait();
-
- // スリープ復帰時の処理
-
- // g_SleepCS.Leave();
- }
-}
-
-/*------------------------------------------------------------------------*
- スリープ問い合わせ時に呼ばれるコールバック
- *------------------------------------------------------------------------*/
-AppletQueryReply SleepHandler::SleepQueryCallback( uptr arg )
-{
- NN_UNUSED_VAR(arg);
- g_AwakeEvent.ClearSignal();
-
- if ( !nn::applet::IsActive() )
- {
- // Inactive なとき、メインスレッドは applet::WaitForStarting() で停止状態であり、
- // 他のスレッドも停止状態になっているはず(アプリケーション側の実装依存)
- return nn::applet::REPLY_ACCEPT;
- }
- else
- {
- return nn::applet::REPLY_LATER;
- }
-}
-
-/*------------------------------------------------------------------------*
- スリープ復帰時に呼ばれるコールバック
- *------------------------------------------------------------------------*/
-void SleepHandler::AwakeCallback( uptr arg )
-{
- NN_UNUSED_VAR(arg);
- g_AwakeEvent.Signal();
-
- s_IsAfterWakeUp = true;
-}
diff --git a/trunk/CardSaveDataMover/common/sleep.h b/trunk/CardSaveDataMover/common/sleep.h
deleted file mode 100644
index 15a14f1..0000000
--- a/trunk/CardSaveDataMover/common/sleep.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*---------------------------------------------------------------------------*
- Project: Horizon
- File: sleep.h
-
- Copyright (C)2010 Nintendo Co., Ltd. All rights reserved.
-
- These coded instructions, statements, and computer programs contain
- proprietary information of Nintendo of America Inc. and/or Nintendo
- Company Ltd., and are protected by Federal copyright law. They may
- not be disclosed to third parties or copied or duplicated in any form,
- in whole or in part, without the prior written consent of Nintendo.
-
- $Rev$
- *---------------------------------------------------------------------------*/
-
-#ifndef NN_SAMPLE_DEMOS_DEMO2_SLEEP_H_
-#define NN_SAMPLE_DEMOS_DEMO2_SLEEP_H_
-
-/*------------------------------------------------------------------------*
- 本体スリープに関連する処理
- *------------------------------------------------------------------------*/
- class SleepHandler
- {
- public:
- SleepHandler() {}
- ~SleepHandler() {}
-
- static void Initialize( void );
- static void Finalize( void );
- static bool IsSleepRequested( void );
- static void SleepSystem( void );
-
- static AppletQueryReply SleepQueryCallback( uptr arg );
- static void AwakeCallback( uptr arg );
- static void CancelCallback( uptr arg );
-
- // スリープからの復帰後、1フレーム分描画を待ってから LCD を有効にするためのフラグ
- static volatile bool s_IsAfterWakeUp;
-
- private:
- static nn::os::LightEvent s_AwakeEvent;
- static bool s_IsInitialized;
- };
-
-
-#endif // NN_SAMPLE_DEMOS_DEMO2_SLEEP_H_
diff --git a/trunk/CardSaveDataMover/common/ver.h b/trunk/CardSaveDataMover/common/ver.h
deleted file mode 100644
index 411a63b..0000000
--- a/trunk/CardSaveDataMover/common/ver.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*---------------------------------------------------------------------------*
- Project: Horizon
- File: irp.h
-
- Copyright (C)2009 Nintendo Co., Ltd. All rights reserved.
-
- These coded instructions, statements, and computer programs contain
- proprietary information of Nintendo of America Inc. and/or Nintendo
- Company Ltd., and are protected by Federal copyright law. They may
- not be disclosed to third parties or copied or duplicated in any form,
- in whole or in part, without the prior written consent of Nintendo.
-
- $Rev$
- *---------------------------------------------------------------------------*/
-
-#ifndef VER_H_
-#define VER_H_
-
-#define VERSION 1.04
-
-
-#endif
diff --git a/trunk/CardSaveDataMover/docs/Error_code.txt b/trunk/CardSaveDataMover/docs/Error_code.txt
deleted file mode 100644
index 0920809..0000000
--- a/trunk/CardSaveDataMover/docs/Error_code.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-
-//エラー表示コードの下位2桁
-0, //不明
-1, //デバイスが見つからない
-2,//プロダクトコード不一致
-3,//ベリファイエラー
-4,//パスが長すぎ
-5,//ディレクトリ深すぎ
-6, //メディアが見つからない(サブ基盤外れなど)
-10, //ファイルが見つからない
-20, //既に存在
-21, //空き容量がない
-22, //書込み禁止
-30, //アクセスエラー
-50, //フォーマットエラー
-60, //検証に失敗、改竄
-70, //ROM情報エラー
-80, //リトライ要求
-90, //実行時エラー
-99 //深刻なエラー
-
-
-//上位
-CARD = 100,
-BKUP DEVICE = 200,
-OTHER = 300
-
-
-これらの合成で表示される
-例えば、カードが刺さっていない場合は 101 となる
-
-
-通常時に発生しやすいと思われるもの
-
-302 .. プロダクトコードが一致しない
-101 .. カードが見つからない
-
diff --git a/trunk/CardSaveDataMover/docs/HowToビルド.txt b/trunk/CardSaveDataMover/docs/HowToビルド.txt
deleted file mode 100644
index 534ab9d..0000000
--- a/trunk/CardSaveDataMover/docs/HowToビルド.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-mFF
-ARM RVC_Nintendo 4.1
-omake 0.9.8.5
-CTR SDK2.0 + RepairtoolvCx[gpb`
-v1.03ȍ~ ps_api.h libnn_ps(SystemProgramKitɓĂ)
-
-vFSDK2.0ȍ~̃VXe{
-
-)
-SDK2.0pSampledemos common,gxrhĂ
-omakeroot̂fBNgɂomaket@C
-SAMPLED_DEMOS_COMMON_INCLUDE_DIR Ɂ@
-sampledemos/common/includëʒuw肵Ă
-Jpubkeyimp/omakeŎw
-
-rh)
-omakeroot̂fBNgomakes
-bodyŃrhocia AImpomake(SRC_IMPORTEE_PATH)Ŏw
-(ʎY@Ŏgɂ́A}X^Ociaw)
-rhNANDC|[gpccił
-
-
-C|[g:
-ciarcC|[g -> SD .. DevMenugp,DevMenufullȂnandɂ
-J[hNC|[g -> NAND
-
-ʎY@ł̎sɂ̓}X^OK{
-bodyō쐬cia OLStŃ}X^O
-ciagč쐬cci}X^O
-
-}X^O̗F
-Ebody/imagesɏocia}X^OOLSt
-EciaImpomakeŎwA͎wꏊɒu
-ibodỹrhŏ㏑Ȃ悤ꏊt@CςقSj
-Eimp/omakesAcci쐬
-Ecci}X^O
-
-OLSƃ}X^o[WXVKv
-common/ver.h͕\o[WAύXĂ_
-body/omekẽRgQl
-
-NANDC|[gŎsꍇcia`FbN
-SDC|[g
-J@œ- }X^OĂȂ
-ʎY@œ- OLStĂȂ
-
-1.03ȍ~̓C|[g̖{̂VAԍŐ
-"imp/imp_lis/"ɃXgƏTv
-OpenSSL0.9.6k,r 1.0.0d œmF
-imp/imp_list ɃR}hCc[(win32)pob`
-gcygwinł
-[UɂomakewpubkeyƑgprivatekeyōn
-
-
-{c[J̃}X^O͐iG()Ɉ˗
-}X^OςDevMenu(full)
-CUP쐬͔ѓɕ
diff --git a/trunk/CardSaveDataMover/docs/option.txt b/trunk/CardSaveDataMover/docs/option.txt
deleted file mode 100644
index 64a334f..0000000
--- a/trunk/CardSaveDataMover/docs/option.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-C|[^̃IvVL
-
-cms_inf.txt̖OŃt@C쐬
-ȉ̋LqŃIvVLɂȂ
-
--t: eXgj[
-@@@J[h̃Z[uɃeXgp^[݁xt@C
-
--p: {̃VA\
-
diff --git a/trunk/CardSaveDataMover/docs/release.txt b/trunk/CardSaveDataMover/docs/release.txt
deleted file mode 100644
index 9331b64..0000000
--- a/trunk/CardSaveDataMover/docs/release.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-////////////////////////////////////////////////////////////////
-{c[ uNintendo for 3DSvѐpJ[hpł
-J[h̃Z[uf[^obNAbvyуXgA܂
-////////////////////////////////////////////////////////////////
-
-NANDC|[gĂAAvl̎菇ŋN
-{̃VXe2.0ȍ~ɂĂ
-CUP(v1.02ȍ~)͖{̃VXeÂꍇXVj[N
-AUPP(?)Homej[NłȂƎgȂ
-
-(C|[g菇)
-EfobK̓C^"cci"J[hɏ
-EHomej[J[hNj[Inports
-Ej[ImportI
-EId{^Z ->"d"^b`
-dȂȂƃACRj[Ɍ܂
-
-
-(NAND폜)
-N܂ł̓C|[gƓl
-Ej[Deletes
-I̓j[ɖ߂܂
-
-(eXgp^[)
-J[h̃obNAbvɃeXgf[^݂܂
-茳ɎgQ[J[hꍇ̓mFpł
-N܂ł̓C|[gƓl
-EfobK̓C^"cci"J[hɏ
-EJ[h{̂ɍj[Test Datas
-EJ[\œeIAAŃCgAXŃxt@C
-ʂCasual Test IԁA̓[X̃`FbNɎgx
-
-
-CgɈUIHomej[ɂǂ
-Nand̃c[NA[hXgA
-Home{^ȂǂŃc[IAJ[hNxt@C
-
-
-c[{̂̑͑}jAQ
-
-
-[Histry]
-#\ver@}X^Over
-# ύXe
-
-v1.04 - Remaster 2.0.9 - svnrW 190
- body,imp: ACRHɕύXFj[̃oOŃtOŋۂĂɌĂ܂
- 쒆̖~
-
-v1.03 - Remaster 2.0.8 - svnrW 181
- body: "LEFT+X"SbɕύX
- ^b`̒
- imp: C|[g{̃VAԍŐ
- ݒt@CŃIvVL悤
- SDK2.0+`j[œmF
diff --git a/trunk/CardSaveDataMover/docs/マスタリング.txt b/trunk/CardSaveDataMover/docs/マスタリング.txt
deleted file mode 100644
index 3009e14..0000000
--- a/trunk/CardSaveDataMover/docs/マスタリング.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-ʎY@ł̓ɂ̓}X^OKv
-
-cia̓T[oFiOLSjK{
-OLS͑O擾烊}X^o[WグKv(2011/2)
-(ႦAO 1.0.0 Ȃ@1.0.1 )
-W[rsfŎw(Remasterversion)
-}Ciƃ}CNOmakefile
-MAKECIAFLAGS = -minor 0 -micro 1
-̏ꍇ *.0.1 (*rsfRemasterversion)
-
diff --git a/trunk/CardSaveDataMover/docs/操作説明.txt b/trunk/CardSaveDataMover/docs/操作説明.txt
deleted file mode 100644
index 5ae7423..0000000
--- a/trunk/CardSaveDataMover/docs/操作説明.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-
-<상j[>
-
-삪oԂ̂ƂʂɃ{^\
-
-EobNAbvԂŃJ[h
-obNAbvL
-
-EobNAbvԂł
-XgAL
-
-(obNAbv)
-^b`Ďs
-J[h{̓ɓǂݏo܂
-
-(XgA)
-^b`Ďs
-obNAbveJ[h֏܂
-Ǝŏ
-s̏ꍇ͏܂
-
-(obNAbvf[g)
-擪ʂ L[ LEFT + X
-
-
-
-ȉArhɃtOL(my_dess.h )ɂꍇ̂ݎg
-
-//NbV[h
-߂ۂɃf[^Axt@CŕKG[
-擪ʂŁ@x@{^
-
-//foO[h
-擪ʂ +x(0.09܂)
-擪ʂ +X+x(1.00ȍ~)
-
-NbV[hLF@L {^
-
-//eXgf[^
-foO[hɐ擪ʂłq{^
-
diff --git a/trunk/CardSaveDataMover/docs/署名に関する覚え書.txt b/trunk/CardSaveDataMover/docs/署名に関する覚え書.txt
deleted file mode 100644
index 484e487..0000000
--- a/trunk/CardSaveDataMover/docs/署名に関する覚え書.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-
-rhɑgݍJ̃yAƂȂvCx[ggďs
-
-o[WŌʂ
-ύX̏ꍇło[Wς邱
-
-Openssl.exe : cygwiñCXgAWinł
-RSAArbg͂QOSŴ
-SHA256̃_CWFXgɏ
-Openssl0.9.6.k(r),1.0.0d쐬̏œmF
-
-(쐬)
-openssl genrsa -out private_key.pem 2048
-openssl enc -d -base64 -in private_key.pem -out private_key.der
-openssl rsa -pubout -inform DER -outform DER -in private_key.der -out public_key.der
-
-(1.0.0̏ꍇ)
-openssl genpkey -out private_key.der -outform DER -algorithm rsa -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:65537
-openssl rsa -pubout -inform DER -outform DER -in private_key.der -out public_key.der
-
-()
-openssl dgst -sha256 -binary -keyform DER -sign private_key.der -out csm_sign.dat csm_list.txt
-
-vCx[g̃oCisvȂ
-openssl genrsa -out private_key.pem 2048
-openssl rsa -pubout -outform DER -in private_key.pem -out public_key.der
-
-openssl dgst -sha256 -binary -sign private_key.pem -out csm_sign.dat csm_list.txt
-
-쐬pubC|[gAvomakeŎw
-OBJECTS[] =
- $`(ObjectFromBinary $(TARGET), ./Imp_list/Public_Key.der)
-
-XgvCx[gŏ쐬AXgƏC|[gSDǂ
diff --git a/trunk/CardSaveDataMover/null_banner/model.cbmd b/trunk/CardSaveDataMover/null_banner/model.cbmd
deleted file mode 100644
index f1c7b62..0000000
Binary files a/trunk/CardSaveDataMover/null_banner/model.cbmd and /dev/null differ
diff --git a/trunk/CardSaveDataMover/null_banner/sound.cbsd b/trunk/CardSaveDataMover/null_banner/sound.cbsd
deleted file mode 100644
index f1c7b62..0000000
Binary files a/trunk/CardSaveDataMover/null_banner/sound.cbsd and /dev/null differ
diff --git a/trunk/CardSaveDataMover/null_banner/unknown24x24.ctpk b/trunk/CardSaveDataMover/null_banner/unknown24x24.ctpk
deleted file mode 100644
index 794b136..0000000
--- a/trunk/CardSaveDataMover/null_banner/unknown24x24.ctpk
+++ /dev/null
@@ -1 +0,0 @@
-888yyYyYyyyYyyYyyyyYyYy8
\ No newline at end of file
diff --git a/trunk/CardSaveDataMover/null_banner/unknown48x48.ctpk b/trunk/CardSaveDataMover/null_banner/unknown48x48.ctpk
deleted file mode 100644
index 8c7da16..0000000
--- a/trunk/CardSaveDataMover/null_banner/unknown48x48.ctpk
+++ /dev/null
@@ -1 +0,0 @@
-Y8888ƺ8888YYyyYYޚyY8YyYYޚyY8ޚ8
\ No newline at end of file