From a04b6d6993e1dd2f449a84a1bb670523c9470960 Mon Sep 17 00:00:00 2001
From: Michael Oborne <mich146@hotmail.com>
Date: Mon, 7 May 2012 22:25:56 +0800
Subject: [PATCH] APM Planner 1.1.81 mavlink 1.0 fixs simulation hil fix for
 lorenz modify default att rate to 10 hz

---
 .../3DRRadio/3DRRadio.csproj                  |  216 +++
 Tools/ArdupilotMegaPlanner/3DRRadio/3dr.ico   |  Bin 0 -> 67646 bytes
 Tools/ArdupilotMegaPlanner/3DRRadio/Common.cs |   77 +
 .../3DRRadio/Config.Designer.cs               |  146 ++
 Tools/ArdupilotMegaPlanner/3DRRadio/Config.cs |   50 +
 .../ArdupilotMegaPlanner/3DRRadio/Config.resx | 1533 +++++++++++++++++
 Tools/ArdupilotMegaPlanner/3DRRadio/MainV2.cs |   17 +
 .../ArdupilotMegaPlanner/3DRRadio/Program.cs  |   24 +
 .../3DRRadio/Properties/AssemblyInfo.cs       |   36 +
 .../3DRRadio/Properties/Resources.Designer.cs |   84 +
 .../3DRRadio/Properties/Resources.resx        |  131 ++
 .../3DRRadio/Properties/Settings.Designer.cs  |   26 +
 .../3DRRadio/Properties/Settings.settings     |    7 +
 .../3DRRadio/Resources/3dr.ico                |  Bin 0 -> 67646 bytes
 .../3DRRadio/ThemeManager.cs                  |  235 +++
 .../ArdupilotMegaPlanner/3DRRadio/app.config  |   29 +
 .../ArdupilotMegaPlanner/ArdupilotMega.csproj |    4 +-
 Tools/ArdupilotMegaPlanner/ArdupilotMega.sln  |   14 +
 Tools/ArdupilotMegaPlanner/Common.cs          |    4 +-
 .../Comms/CommsSerialPort.cs                  |    2 +-
 .../BackStageViewContentPanel.cs              |    8 +-
 .../Controls/BackstageView/BackstageView.cs   |   12 +-
 .../Controls/ConfigPanel.cs                   |    2 +
 Tools/ArdupilotMegaPlanner/CurrentState.cs    |   18 +-
 .../ConfigAccelerometerCalibrationPlane.cs    |    2 +-
 .../ConfigurationView/ConfigFriendlyParams.cs |   63 +-
 .../GCSViews/FlightData.cs                    |    4 +-
 .../GCSViews/Simulation.cs                    |   22 +-
 .../Properties/AssemblyInfo.cs                |    2 +-
 Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs  |   24 +-
 .../Utilities/ParameterMetaDataRepository.cs  |   39 +-
 31 files changed, 2731 insertions(+), 100 deletions(-)
 create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/3DRRadio.csproj
 create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/3dr.ico
 create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Common.cs
 create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Config.Designer.cs
 create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Config.cs
 create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Config.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/MainV2.cs
 create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Program.cs
 create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Properties/AssemblyInfo.cs
 create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Resources.Designer.cs
 create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Resources.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Settings.Designer.cs
 create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Settings.settings
 create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/Resources/3dr.ico
 create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/ThemeManager.cs
 create mode 100644 Tools/ArdupilotMegaPlanner/3DRRadio/app.config

diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/3DRRadio.csproj b/Tools/ArdupilotMegaPlanner/3DRRadio/3DRRadio.csproj
new file mode 100644
index 000000000..7f514ee20
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/3DRRadio/3DRRadio.csproj
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{B8943726-04B0-4477-BFDA-E156A0CD98A4}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>_3DRRadio</RootNamespace>
+    <AssemblyName>3DRRadio</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+    <FileAlignment>512</FileAlignment>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <StartupObject />
+  </PropertyGroup>
+  <PropertyGroup>
+    <ApplicationIcon>3dr.ico</ApplicationIcon>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="log4net">
+      <HintPath>..\Lib\log4net.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\Arduino\ArduinoComms.cs">
+      <Link>Linked\ArduinoComms.cs</Link>
+    </Compile>
+    <Compile Include="..\Arduino\ArduinoSTK.cs">
+      <Link>Linked\ArduinoSTK.cs</Link>
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="..\Attributes\DisplayTextAttribute.cs">
+      <Link>Linked\DisplayTextAttribute.cs</Link>
+    </Compile>
+    <Compile Include="..\Attributes\PrivateAttribute.cs">
+      <Link>Linked\PrivateAttribute.cs</Link>
+    </Compile>
+    <Compile Include="..\Comms\CommsSerialInterface.cs">
+      <Link>Linked\CommsSerialInterface.cs</Link>
+    </Compile>
+    <Compile Include="..\Comms\CommsSerialPort.cs">
+      <Link>Linked\CommsSerialPort.cs</Link>
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="..\Controls\BackstageView\BackstageView.cs">
+      <Link>Linked\BackstageView.cs</Link>
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="..\Controls\BackstageView\BackstageView.designer.cs">
+      <Link>Linked\BackstageView.designer.cs</Link>
+      <DependentUpon>BackstageView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="..\Controls\BackstageView\BackstageViewButton.cs">
+      <Link>Linked\BackstageViewButton.cs</Link>
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="..\Controls\BackstageView\BackStageViewContentPanel.cs">
+      <Link>Linked\BackStageViewContentPanel.cs</Link>
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="..\Controls\BackstageView\BackStageViewMenuPanel.cs">
+      <Link>Linked\BackStageViewMenuPanel.cs</Link>
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="..\Controls\CustomMessageBox.cs">
+      <Link>Linked\CustomMessageBox.cs</Link>
+    </Compile>
+    <Compile Include="..\Controls\MyButton.cs">
+      <Link>Linked\MyButton.cs</Link>
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="..\Radio\3DRradio.cs">
+      <Link>Linked\3DRradio.cs</Link>
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="..\Radio\3DRradio.designer.cs">
+      <Link>Linked\3DRradio.designer.cs</Link>
+      <DependentUpon>3DRradio.cs</DependentUpon>
+    </Compile>
+    <Compile Include="..\Radio\IHex.cs">
+      <Link>Linked\IHex.cs</Link>
+    </Compile>
+    <Compile Include="..\Radio\Uploader.cs">
+      <Link>Linked\Uploader.cs</Link>
+    </Compile>
+    <Compile Include="Common.cs" />
+    <Compile Include="Config.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Config.Designer.cs">
+      <DependentUpon>Config.cs</DependentUpon>
+    </Compile>
+    <Compile Include="MainV2.cs" />
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="ThemeManager.cs" />
+    <EmbeddedResource Include="..\Controls\BackstageView\BackstageView.resx">
+      <Link>Linked\BackstageView.resx</Link>
+      <DependentUpon>BackstageView.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="..\Radio\3DRradio.resx">
+      <Link>Linked\3DRradio.resx</Link>
+      <DependentUpon>3DRradio.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="..\Radio\3DRradio.zh-Hans.resx">
+      <Link>Linked\3DRradio.zh-Hans.resx</Link>
+      <DependentUpon>3DRradio.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Config.resx">
+      <DependentUpon>Config.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+      <DesignTime>True</DesignTime>
+    </Compile>
+    <None Include="app.config" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows Installer 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\3dr.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\3dr2.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="3dr.ico" />
+    <None Include="Resources\3dr3.png" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/3dr.ico b/Tools/ArdupilotMegaPlanner/3DRRadio/3dr.ico
new file mode 100644
index 0000000000000000000000000000000000000000..9837bfa41691857f8f57ed0b4a2efe944300826a
GIT binary patch
literal 67646
zcmeI5378bswa0q|89){lL=%-kHrZF%X6fodlW5#`<ANqJ5g1eu6jYXx9c2^Z(<ovh
z2r6#41h82K1VN3)ZIlEPiRg396UAj(N9z4f^}RhcHPt;;vygoG?j(QiJ@=e@&bj|{
ztGc_Yx{XA#_+N2xgn!#bx-`y;w24F_T>wKe=!{EO{#qT9L{c*U8U_plh5^HXVZbn8
z7%&VN1`Gp+0mFb{z%XDKFbo(53<HJ%!+>GHFkl!k3>XFs1BL;^fMLKeU>GnA7zPXj
zh5^HXVZbn87%&VN1`Gp+0mFb{z%XDKFbo(53<HJ%!+>GHFkl!k3>XFs1BL;^fMLKe
zU>GnA7zPXj|7i?Z&(FOPtWt=2^J6><%m5FA2NlHrDzB}U(X|181S`P`@PG><F9!?3
z7|`1_uQBohApU2AhAv%q<jG(?cuwIV+DkzbZC723Z4MAW8-Vund-_$@F1{Eq0Q12X
zpzW8?KiM4%c^r5Y%yy3}ABQn6bA-dWU?h;-g^M0udo81z2!x9}!C|iPM#$#@;aKNX
zLjQJfGH9f2t81~{3T%a6d+iy&(xumS(tZG%dF@4J{Hio_-1Bw64BNZF!JrBF2#9VM
zI9U0+f&SNOT+eg2FQ7}yqs|eVv%tq`{Oo6Zrps1xk(#;Vc>9l_Z>@4%uWWZ|AG&2+
zYOd$LM_+2H<)3LgZ;Q<iWw(#^SkcpV2HVuQ_Tg>+jQ(`5KR+3}xXah&ZX0Xc-1g}H
z<<iT(b#rp2+g|sv(R(UEe<KiXCC9gb@FaK<d<T-bZ{xV%Hn#!tJ8JAT@yFPRlugoB
z)+XnUW#BWHZV$FU);V}vbotnR<FXeH<y^DIHD+UXrHZ?>(s(jwspD!O>(ZRBqc6wf
z6Kc%KTgS)WK*rtnJCP-KJ^v(a>us^wr0nFFXpOI<X#cLpWWJ2cIY5qk&AIkl&RBP^
zPp@oky)6!Gg;f2m=Wfliw%+=TOZS}2MgECv>}~o>!Tkz<pnU|C1M#^Xj8}cQz3mbm
zpWGTC4@CFA(tk&5fj5-=67f6G|Cf@*-*`BvcukP~x%IXk75ZE6)c)NqYiU&3?zV~e
z;n%W~f9OVn{mRd~v=^zq#QYMRr){ORw$9CEY)^&Ft(Vh(K*_246SpC2*j8cZaIzD5
znQJV4{kPt>N!fjbpF_c&u6Y|-!!bH9Yuh~P<?tspk-TL+1GGL}Yi*ew2e!h++75ZN
zYy3;r(o1yKb90(7{+3Ip=lZq7vAfb`o2tK#6WcO-j7z_m{wqq}W^JB*oz`KuO3!h(
zjCaH4Yi0MLwRzSNZoTxal34@L?^iZ2dG(IXmf2f~_boOX!Sl-2#{YOfd&V!pM*9>F
zpHy=y>c4r`HQJA>-AR9$OOE;ZS2=A`cJHyS!Sp{-@~6c2J=dYXL)nzm_D|<qk6Rn3
z$ARr&{nQE8v&CJl^;1V6m#Og&Xiw4h(#AH;xKZh3-X5?`;T78bK*qnst~Ko_CCk{Q
zZa>mzY%tJsHqze-#CAJasrn*UItJZ-(5-jb4R-6C7#pTt>C(^f>P05k9#+ZBUe=}=
z4Xh2*WE~Ro8z4WgSLKiK!@>JN>^=t1tA6rzYyH$5{Cwupzp47NzGbR!!}a-a-Ub}0
z@FUv8B_KANl-(|TNlhe{;68Uk_?QJA$L4W#|5P^RwAI!>wsuk+*b3j#CR{S(li!G~
znRr2L_4UqsF^L;nH>D#sUpaPbCdG9w$ftq*&iLBND;(Rklden3PK+w`N7osAp={o!
zeOL8&&<Z5C??FEu$J>(Q-OA1;*Hf$NCrwT1*G?Mg)w|``y2;J3{Z!figSMqxultNQ
z052=MFKJ&?{a3{%wr0{wCENJChW=6|@1$Lp(yg8J8U6Rc|0;Y)yBahE>w&C)7nrX4
zQj;k<4=2{zNq?)*rD`ej2D<J1`mrajj|00h#vu#b<KrHVJy_IO`-rW+;W4Ezi#;~B
zr<2DM<5s8UJT=~VT|*w58hhgUs`X!eeJAvLmCf6<@2dU|_S_4=2HycEhK}!U(fv-@
z*|8_bS9wp0ZfZ)u`ug9v=X(3Bt2wrxD*IjJ;`<o~eHQq$vilOdmsH+cV~>wLRrMwJ
zm&vIi@<VEDC+)J7z7oeNzTZGEbJi=nUHF-<Vo7Z#yYnXJiQtdK`D5&<2^#kyw{zS1
z^<yhX#)0kNp;6Ofk6b$d<bpxqY-;{`O21-6>h(MJ(5SOr<2S_~7~TeXpBj5T_VCrt
z`2u-t%5LSzs`Y<h_(1eOD4R{RJ5_%>u~z{*_7GSx;^%((%NRCKI(A9hAznLlzfS2_
zj+pAzdu422SN40!rJYwVa_qs8hhXzJW%ns|+g0AXY2Q};AK<}q>{pI_RE^2{mZ`oS
zdvMg9v4^i24aO*pqrH&vgRt44>~_KTSQSfZHP0`nnvBJkTowm*Y{{i|Z0WFHczwj~
zz3hynUTiK~qV=&q{IUtUchuY$V)tA+F=e;(^6OG|OD-Fm8ozf~)%xFa$#9qcE_}YC
z<gKx#m){(_cbM&9$z_YQPj?%;=aR$Gf2!<0qpkA3h+GFMy{sYidR58KlFP1&-F?Xz
z>-WFtiS3h){nE?r*xeUb$yw&H-a>53mESG+eLA%chfnxgI_z#81Kp!azms-Z%J$x2
zRrafE&L(B|E?k^UtgltPH?6xbNxdFxdue08|Ha7IT^C(o-FaaL>#mCqa_jv1*6nA+
zfo<J>rfn@e?E<fjwcxaytVQS?n=?}N7dyshsPP2tH>&@IwfO8~v>(RCs&Vmgt{!*h
z&po*}WACQ)i_ScQ{%cBp0Y5#hMQ7~;HuyTW;M7XjG^{x%9gOY$)}pgTZ(EDcTIu$$
z`_}Ky$wvPdWm9e~JU#U}*U4kvDgDrWOFVp>{gJi!oEse5WZd_x`KMHR?XhnA*-@;0
zN6KdL*`tvkNUbBu)rZ#qT#(v}=pI%2owUnRwhK?s)p>ebd~Q;9ACgxa@N_aJdES2d
zT-INyzOjX;{Z_3(*72(KyK{Z_h&xVnMt&UF4yFxR7o9d}estR4g<x@XdhVYXPbBqu
zc64U!;!1O87j{Eemeh+6v5DSa$!13W*pz;H?pplMi%uJIZ*+RzGmP&|>X<hp`cQOM
zEE^xYoU!S7$@kH7h8A11EIWx<0{;(SBR+4jW?C;*=&aAIxj*gdj_vMSbB3O7&59~N
z)(`kuiJ#HY83haQ@kz?h?AU$Qtv_jC&5Avd8bgoW9ZCEAxs3lkrJEgl*}C<lrsy6|
zu0`=MD|V$jKDtMhekbj+l<o8(kHN_T#kugF<bK-V5%}Eb*iFy-C_2kJ+?xBd-mKxv
zRP347HuS~VT_@`y=O2<f);W7<>KyFO!`siFaO_rKC()MHgYoDD6LKCdnAo+-b!Eoa
zR?I)vF1Wc<p*se;32uEQ{}sMBM2q{k%D<^Yqx=cSeCXJZKXw<s8%C!OI*7Q73vTLQ
z7u?iQ{8vC^!Hpe1h!*!rdmTmRQ!ugHDExet^yBj7_!0k|wnV27ajqXwhr^JcO&`~>
ze<?a`U<dJ^KmM5YDsQ-Ix4vLf_e#emx@Qy*@6kT2`c?U^;Qu9To>zAJ@b8>cqqp??
zdBKexK5^FI%LjSg+~q!NW`4EDzT}--lsy~7!8#9~MP8dbD*OK2s~caLcYPaQf4QR?
zpPF0LNNfd5az{0-v_}{_PwCwLlfH|xm*riZeQEynM>)Q8M>cAL?H_>Tb64(&h7Bc0
z`O6#A;;h_jny$*dy2)GMBk+Fi)lIkMjXq>@{<zjZN?KL_Z{FBeee<qqx|I2Excrpl
zUEAzhIBx3pkblF`*?FUzT}9kA*uDck2D_2hF<ylIA=*B7WcE}i?~#qx<X+o6bx$j$
zFUp>*)^#uK4L~?>bK>rcZYG!mgo}rAM;z?jXApmRV_Ub)yY`Totp5e_`2YwXe?xvI
zZ*=pE3nsKrUE9?0|6AH2BN`k6T7$!LiyGE=oy>2d{RH7=$nb_Oz!BikAod5shCR`c
zd|H9lp!tD_X<`@#3<Li?3|QOe7k~@Ec^;f^y}HP`=Ug~2Kc_Gj8|aTh#@+DRIl2?D
zISyopWsaCX1?PkFk|?BgLytS{IoLSYYiT84*E~lr@@XpH-n2&-T7@-!4bf}C&ymWf
ziwj>Kl6q@sj-FdzZJ`xAn6*~=-0Bz0dVU_ywanw5u@C;T$hr1WI4JKfeA%_cUgp06
z9*9}ixv{9#!Y?2181{b;8P|F5#hix&%=;Ldm%$QnJ~>sncj(Q>PiF45APhfu`1z@;
zG1k$T`mY4HRp*m?o^fFN;>CH+^}yJG+{O5`>lnN6ca2pLP2E%Q%N3i_5OEXOI(wdW
zd5C#>ZSON@F*#NHERj1`<`jjDwa`7kF8k!(gj^n1`An_OckJ<TabWvm?F6U(7WK!k
zT~F8+%`fPaE>B{XhKQTM)~P@3@(}a9Yx{<|bI9wkba}bQu`LQ2t6u6~ke}a_oFBLH
z3v7j3+<E%-ty>Fs0NWP}3Z3hu1q1UJ<J+!36nvJSmw$#|eg*jjrGVIhkigEVKkf2>
zbE^1;Lp}C-L0*1=UtaDp;uM99Rp<53%gt*Fhfe_8g=*`ccWtAefMLG4uHkXA&b)!q
z#rU`D8D;oC+0Co;^K<h{fgKPD?40`3E)O`TI^W-r*D!BhZkaemA!F5P{c{KBHq9H7
zw;I?UR9k=R%w9)>PX6fKT-KR8D0dMt>;r($h;h7|TjbIZaTC}&^@oS$9xlAxgptef
zJIbAxyN|9YM2^B^oz;KvputV?_hg#*)z-f-dg5ka`(bGGMCX1#F_r-PKw!wAA?rZ{
z%`g2@U<X73JE#6b1`k;d>^j5`tiRHILsyPP0rS)AsFV5+8aSvaIX#`BF4foHipBYy
zV5h-FvPR-O0_+2Z0fR2o+!C`iMBD_nPW|Czc?Mo;x|hGjf0g$Gj1`5*QFyF%{Rf^f
zu-TvigZ>2U45+sLd`^gG`0V1;pIEDaeE{(yv7CE90|yK&1$ICruyg7UC(ASNl8LkG
zbngu4KcJP~pVAVuC}4hi9kr_e3H=8&Cx<lw>QQa|`P>rE@Y%(wKk=Rh_5nmWu?7gY
ztg{r@0g=GYsXy%_0p|qu?Y67*91L-aLdL3b{rmOn-=crN6V?Jd0IID&pLOE$dB+z8
zQK$aIxf-kh%RE?)yb#O)vwR@qcY^mokbK=XH%a}OR~lk&0$Zp4v?G8!=lhXYf#<>d
zz#S`8|AhW0e9!!R$xr_17lrg!qx$#l)2~IpzWvt%J0NORf6fce^`GP_YyK~}w&~ZW
z|6{-o3fB6RL}YGhz_kh|3E+HBB~!N4swH-(fu})GF1>btBF8M1V^K&yq3hqfSKk(W
zd-r=5*db7D{kc{UcU>=VUptU~oz!1A>f5`2cAs8-w*xyM-oUOAYkfV$dK1`ITYvZ7
zpoW(+=kpLTH2>fC>D|})PC}pF{fdAc0-@^Pt7q>Py?gbE13M&A-)D8N+1=;bMm)oH
zojR+(#3c7~diCtHAJ_r#Pi$JT?_UM1I}j4sg{r^g#XcLtypIFMaOW~#t*a<xT>{s?
zXZKz$ssBa*XQ6S0<d^9$Z!q;A%ylDw)M@>D_UP3fd<E<P_!yg`S@T~)tUG~i==uvk
z%*zAcgoq{ec$*xvXorWK7pVT-yY)P*NB5qa*aLPL^hnxI%2ao)<GN8i&9x)BPF1J%
z@6oMiZ;$|X0DR8c+x6_;^A*7Q10jK3jp{FaP|FDc_N9C8e$P6Nr8d6`Qy*-rt$)|9
zJr3{IwMR+!u03qpQ0U&Z=gqpl)wNtBiD$S@Qm6H29n(UrWe>JTu>MztgMdh2SL6Cq
z%WRIhw}2f2XA|@CfcfclWUPPJF5O#!5@6Q=^Qx=4TYsSH-{tsjC$g4(A=dLYwvEAS
zA?75ot#SQ@7xvr@A@-;omlKJ3X^0%9rfKVceCMvM;A%6lL*fVQ=euhgq|dd;c!q12
z8IS+Yow~LJ&A}mQ(3tUKS<~p_J9pa`ay{!Mf98~in3uq|R`sVg{lNDj>Uj?_FAI^Q
z)YZ5CojP`D1z%f$T?0HDq~2Z|t|7)VTt}>~{=>*~H+To^^1)vj`xMk<J<j_V_D(6V
z10sQ4t?JJ{Z3g}q5Hk=~vA*FU*I1?g9XoVx)v4q0TY()E9XlLvC(+sN(7yA&4(&Sy
z`p%Dg57egqojP`HNUpPqOMF3R@^K^hT0CnmM;;`3a!iy0I0=LVcD1TMbvzin9-^MB
zh&eo9etI31>fipjPDjAs_R8F8PAl5>$91$dgm1AI-sD^*?_0T+A<wOZ+5=o?k7u~9
zpYizD`-s?6xEA8PXOi=v<RrOCj>om@=s@SqTGd|hw$2`Q_7L-SFyFcV!~QO<*ynn`
zr)?A1)~f#GelU1l)({Y@$aT1^Hw04kZ<o`d10206JPAkAGUgyTmaMbvM|n>w*G>BO
z>+jr)mFqTEG-~ratv$4`&^~eKP<aOR2T<wvT6CTKTCRo0GhDk4RDbb%(uqUI$TP5#
zOO$5?B{%t8A$zMY*L{2T=<R%lk@L7dXUSgB>&<D~-p*;8T6gMurf^bPv3EMMKLp;r
zladqYYE^%7YK)I}GsN)5e}p+B+&Rjcsv@~IRa>Y2tob11(clTN0(k{{Xa!uY7;wUX
z2jFirJbtcgEc~80G+Ae<w}y;+AkR!6>Q`^?7}u@i8LnLiuD|#t=9OT-&P(q}$vHWe
z%v1J=JTI3!B-hy^a_?03pq#(>%>NvFB=x;N`p)@ZA6t6Q9M`S``$hIlB_xn*Re$Dp
zq!!<T)Nz=pPo3`rmrGvB*FQOLbaCGA$X=Jv5^_C8t`Exk<aii3Ao%@%c*_}D7+d72
zueaWQ@&s?K{bcUP#53HJ2~~f!2YyYi<<;d|b&m{{y}gg|zV1BnQ)=<-d9*;D$;@}o
zE3$9oxgLGpf@4MBn@+%Qt?JLY^;i0}RO+Q6$B2HN9Kf>>IyQMsC7(;=d?)$Ixli(y
z^}E+7eSPe5o=%<r-D}O%$KR~#IQ8iNid^aYtbYEv?-9>%?;~{mB?fVS1*+Wxo_ytX
z>oRYSjFpO=m&*!1HLp&afa4n1pSf9Ja~j{OewE@$UKfC2GDpL+F27^5CiQQI-#r0*
zyW<sl`Si-%^WeTx+IuTCs=ve_&tHP?1LiBW|BW{{<;SUiKtBoWYFvNjo)IvP=2-IP
zdu`5s*JDB2(DhebtO}W*^9+R_uX?N(_Z5Mi1~sm~%J&NLt?oSV5jK^67e?o%d>oMa
zlS3P@3k0d3ws{--gTPfG=hd|Sw}*`Lu$xQ2KKHHS8SY)xs{X2e!^qih56H2z9JKe#
zOOK(i_xcl~Ifw&Y*P!hJwZ@{5b8A}vAm3?p=e|+%n6Bl$PF&vaq(QCgulTtXe!P1?
z<QvoFrN^<U*ZSlC$6!5h^A@BpuWiorAGGyee_|X8J^(>-(>BgEbj_t-%jc~)kk4IJ
z(XD5l)L-I~_vzsOeDcruj1u-?&dKun?>ztKw^sKUc5>dn80-d`uQ2Tz<~h%Q(T4s0
z?|gSILHfkFqXv0ysLnUnl;Uacb#|$!Ke6+{1R!gz3FI@uM&QS>?{6$i?$|$_W{#g9
zsejt<?xH&!^arEC3&77ukTE&-hiGo;pBd7Ze4oB0Xq5qnp=%3H0Z)P;d3kNt=^WFw
zT%U-iyWiQhOOMp?KeRB`i5%XnVIJPR{Ny6P9Eo=X*c>qKe(e4M<b9bJI~kMn=Xby_
zeweXE-dyo1$3##cUtues<s_eUcpu%rKv184c9ot}_vS1z_YUG2?scZ>FSg_&?~%9F
zGAF-0_1M)C$NNV-IZlG^0qv{4S~&)s-x%@9b8J0wQ<L?K@#g52xnC2{aPPWO{bere
zYYn#6<2tYP=BVPzxx1tu;|AgPbK*Pi`TTNJc~1K`=cv~q@2{PEsOfT*@v!w*Yn0=$
zKKH<AznqCF?}0Y~y~YFC%6p4I_tmhw<=>Q}n~yihq0(<L`f<vA#dwB$-Bpf%?E~NP
z{-i$7$-d_<VzvMqfP1a=-Iv$v)Nh|_4l=da7a!mpy&PPhDL<{_UR6B9vkPhKFY{TS
zoRc@z<2rqxWgwpHf%<$O;^y)bV*OO}6{cn06yWxCp!$C$uJ3ykZ~nEZzxX1K?13%y
zxXy9joK@Uoh$+9_RiB)`i2p#>6Z~>ic}}k99KGw8&o|ZH_tE)sUp=nxt^2eYkALlh
zct?ZR>T#XE=Q0(yKK6jTcbWs5={44-#m_|Gty6u-QhVRus7RMT&$+}iJnIsu{^Fas
zay-`O9`JphftWu6e+G5M=TrC^l8&#Mj^p#DI?T~;t#X~T%I_ytmoLvPZFN7p<mnHq
zZoXSj{2zl?>T#X&zB=`6kdDpRkwDJXe!K)3lj|&UFUrzB>!Zd0jkU-z-8$qm=^}7c
zO>*YhrE9=$;C*Io7h`GvdkX1dk%#Pob>J-^_ipM6;!m#O`TqA(8J9h<1Ek~0J-!b+
z$?HMzOVBRedg^+dSmS{^mzwnDJ?V2muE#t7{ejx#NuAs9jN5qdEZ6{UVeH7-_$05!
zAiIvy1b?aD-1p{(?kI2_5RPwfL3sKtI2YuBP9Wp&j(UC9rA+J#ft(B6IcDlh{&Ic!
z955IhQ<wROFKV6x&H?9xPIc}7K=~7HK#m9Pkmb7Nzpdu(^^-?SAUS#SOec%2oL58t
zezrTV=^F+N1BL;^fMLKeU>GnA7zPXjh5^HXVZbn87%&VN1`Gp+0mFb{z%XDKFbo(5
z3<HJ%!+>GHFkl!k3>XFs1BL;^fMLKeU>GnA7zPXjh5^HXVZbn87%&VN1`Gp+0mFb{
zz%XDKFbo(53<HJ%!@z$A1Gf1y3}j%SygX-j%LTLSf0pM&k5BBKQdZt_ch>wYyLfb?
z{Om7Ea>~jUltku6?8p@dAs4qS+gsAGY<Ah?XovR(XMfRhLD?52&B_~>PmX5qMb24J
zwr6*<@~ra7*7m)9vcEW{Wm$tgbCD-b*}k`Z<k0+<WsyC{RLIemWfS&^EcT5We34_9
zm5<36e<I@#d33&t*TRVxDa(({Zf7@cH??i#u&Fs^k+O+dbDezKMzYAaLHWe&1=;rI
z^0rpHtld*GEIp8_j9&w@$|6@}+500ow*8^VEaHlY<;dGbZXj|?N1i2emdM$ToNbqL
z9uT>K$orG>1mrA{%d^EkG8j1`a+yn>jJ!7~A0_%I@@|*h7P%z5tOfIrityX1A{S?u
zwItETktus4Es!H3+ai~Xygw-yBkzwiisY2D6!aq7BA4-hEf*v2W$9|ZE%I)cT!LH@
znS$PlXO|ol$tjN5WspNYQye)`S#BE<`~4|BKWHNUW&Mslat?B_mdQ`#lE?(*Z@-i8
zZup$y<YPPXUify)Wz-|Np5*!=S*<rI?<d71ABrEbFLUuD@^0a?T==4%Qo~4&{DWL9
zrQ*+`Bk@aE6}`xmV*WwityJXg$a|SeH_JvL>wzD!X<*Y48Ryy9BzK18@IwL-;nm>_
kek1{lIy!v9Ph>JZ>W0&D;fDmWkxQ6lvq{aLVL&tR|C)G!>i_@%

literal 0
HcmV?d00001

diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Common.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/Common.cs
new file mode 100644
index 000000000..f3d229dc0
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Common.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Security.Cryptography.X509Certificates;
+using System.IO;
+using System.Net;
+using System.Net.Sockets;
+using System.Xml; // config file
+using System.Runtime.InteropServices; // dll imports
+using System.Drawing.Drawing2D;
+using log4net;
+using System.Reflection;
+using System.Windows.Forms;
+
+namespace ArdupilotMega
+{
+    public class Common
+    {
+        private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
+        public static bool getFilefromNet(string url, string saveto)
+        {
+            try
+            {
+                // this is for mono to a ssl server
+                //ServicePointManager.CertificatePolicy = new NoCheckCertificatePolicy(); 
+
+                ServicePointManager.ServerCertificateValidationCallback =
+    new System.Net.Security.RemoteCertificateValidationCallback((sender, certificate, chain, policyErrors) => { return true; });
+
+                // Create a request using a URL that can receive a post. 
+                WebRequest request = WebRequest.Create(url);
+                request.Timeout = 10000;
+                // Set the Method property of the request to POST.
+                request.Method = "GET";
+                // Get the response.
+                WebResponse response = request.GetResponse();
+                // Display the status.
+                log.Info(((HttpWebResponse)response).StatusDescription);
+                if (((HttpWebResponse)response).StatusCode != HttpStatusCode.OK)
+                    return false;
+                // Get the stream containing content returned by the server.
+                Stream dataStream = response.GetResponseStream();
+
+                long bytes = response.ContentLength;
+                long contlen = bytes;
+
+                byte[] buf1 = new byte[1024];
+
+                FileStream fs = new FileStream(saveto + ".new", FileMode.Create);
+
+                DateTime dt = DateTime.Now;
+
+                while (dataStream.CanRead && bytes > 0)
+                {
+                    Application.DoEvents();
+                    log.Debug(saveto + " " + bytes);
+                    int len = dataStream.Read(buf1, 0, buf1.Length);
+                    bytes -= len;
+                    fs.Write(buf1, 0, len);
+                }
+
+                fs.Close();
+                dataStream.Close();
+                response.Close();
+
+                File.Delete(saveto);
+                File.Move(saveto + ".new", saveto);
+
+                return true;
+            }
+            catch (Exception ex) { log.Info("getFilefromNet(): " + ex.ToString()); return false; }
+        }
+        
+    }
+}
diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Config.Designer.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/Config.Designer.cs
new file mode 100644
index 000000000..5bc3522d9
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Config.Designer.cs
@@ -0,0 +1,146 @@
+namespace _3DRRadio
+{
+    partial class Config
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Config));
+            this.CMB_SerialPort = new System.Windows.Forms.ComboBox();
+            this.CMB_Baudrate = new System.Windows.Forms.ComboBox();
+            this.panel1 = new System.Windows.Forms.Panel();
+            this.label1 = new System.Windows.Forms.Label();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label3 = new System.Windows.Forms.Label();
+            this.groupBox1 = new System.Windows.Forms.GroupBox();
+            this.groupBox2 = new System.Windows.Forms.GroupBox();
+            this.pictureBox1 = new System.Windows.Forms.PictureBox();
+            this.groupBox1.SuspendLayout();
+            this.groupBox2.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // CMB_SerialPort
+            // 
+            this.CMB_SerialPort.FormattingEnabled = true;
+            resources.ApplyResources(this.CMB_SerialPort, "CMB_SerialPort");
+            this.CMB_SerialPort.Name = "CMB_SerialPort";
+            this.CMB_SerialPort.SelectedIndexChanged += new System.EventHandler(this.CMB_SerialPort_SelectedIndexChanged);
+            this.CMB_SerialPort.Click += new System.EventHandler(this.CMB_SerialPort_Click);
+            // 
+            // CMB_Baudrate
+            // 
+            this.CMB_Baudrate.FormattingEnabled = true;
+            this.CMB_Baudrate.Items.AddRange(new object[] {
+            resources.GetString("CMB_Baudrate.Items"),
+            resources.GetString("CMB_Baudrate.Items1"),
+            resources.GetString("CMB_Baudrate.Items2"),
+            resources.GetString("CMB_Baudrate.Items3"),
+            resources.GetString("CMB_Baudrate.Items4"),
+            resources.GetString("CMB_Baudrate.Items5"),
+            resources.GetString("CMB_Baudrate.Items6"),
+            resources.GetString("CMB_Baudrate.Items7")});
+            resources.ApplyResources(this.CMB_Baudrate, "CMB_Baudrate");
+            this.CMB_Baudrate.Name = "CMB_Baudrate";
+            this.CMB_Baudrate.SelectedIndexChanged += new System.EventHandler(this.CMB_Baudrate_SelectedIndexChanged);
+            // 
+            // panel1
+            // 
+            resources.ApplyResources(this.panel1, "panel1");
+            this.panel1.MinimumSize = new System.Drawing.Size(781, 433);
+            this.panel1.Name = "panel1";
+            // 
+            // label1
+            // 
+            resources.ApplyResources(this.label1, "label1");
+            this.label1.Name = "label1";
+            // 
+            // label2
+            // 
+            resources.ApplyResources(this.label2, "label2");
+            this.label2.Name = "label2";
+            // 
+            // label3
+            // 
+            resources.ApplyResources(this.label3, "label3");
+            this.label3.Name = "label3";
+            // 
+            // groupBox1
+            // 
+            this.groupBox1.Controls.Add(this.CMB_SerialPort);
+            this.groupBox1.Controls.Add(this.CMB_Baudrate);
+            this.groupBox1.Controls.Add(this.label1);
+            this.groupBox1.Controls.Add(this.label2);
+            resources.ApplyResources(this.groupBox1, "groupBox1");
+            this.groupBox1.Name = "groupBox1";
+            this.groupBox1.TabStop = false;
+            // 
+            // groupBox2
+            // 
+            this.groupBox2.Controls.Add(this.panel1);
+            resources.ApplyResources(this.groupBox2, "groupBox2");
+            this.groupBox2.Name = "groupBox2";
+            this.groupBox2.TabStop = false;
+            // 
+            // pictureBox1
+            // 
+            this.pictureBox1.BackgroundImage = global::_3DRRadio.Properties.Resources._3dr3;
+            resources.ApplyResources(this.pictureBox1, "pictureBox1");
+            this.pictureBox1.Name = "pictureBox1";
+            this.pictureBox1.TabStop = false;
+            // 
+            // Config
+            // 
+            resources.ApplyResources(this, "$this");
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.groupBox2);
+            this.Controls.Add(this.groupBox1);
+            this.Controls.Add(this.label3);
+            this.Controls.Add(this.pictureBox1);
+            this.Name = "Config";
+            this.groupBox1.ResumeLayout(false);
+            this.groupBox1.PerformLayout();
+            this.groupBox2.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.ComboBox CMB_SerialPort;
+        private System.Windows.Forms.ComboBox CMB_Baudrate;
+        private System.Windows.Forms.Panel panel1;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.PictureBox pictureBox1;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.GroupBox groupBox1;
+        private System.Windows.Forms.GroupBox groupBox2;
+    }
+}
+
diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Config.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/Config.cs
new file mode 100644
index 000000000..02e1d7437
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Config.cs
@@ -0,0 +1,50 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace _3DRRadio
+{
+    public partial class Config : Form
+    {
+        public Config()
+        {
+            InitializeComponent();
+
+            ArdupilotMega._3DRradio form = new ArdupilotMega._3DRradio();
+
+            panel1.Controls.Add(form);
+
+            ArdupilotMega.Utilities.ThemeManager.SetTheme(ArdupilotMega.Utilities.ThemeManager.Themes.None);
+
+            ArdupilotMega.Utilities.ThemeManager.ApplyThemeTo(this);
+
+            CMB_SerialPort.Items.AddRange(ArdupilotMega.Comms.SerialPort.GetPortNames());
+            if (CMB_SerialPort.Items.Count > 0)
+                CMB_SerialPort.SelectedIndex = 0;
+
+            // default
+            CMB_Baudrate.SelectedIndex = CMB_Baudrate.Items.IndexOf("57600");
+        }
+
+        private void CMB_SerialPort_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            ArdupilotMega.MainV2.comPort.BaseStream.PortName = CMB_SerialPort.Text;
+        }
+
+        private void CMB_Baudrate_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            ArdupilotMega.MainV2.comPort.BaseStream.BaudRate = int.Parse(CMB_Baudrate.Text);
+        }
+
+        private void CMB_SerialPort_Click(object sender, EventArgs e)
+        {
+            CMB_SerialPort.Items.Clear();
+            CMB_SerialPort.Items.AddRange(ArdupilotMega.Comms.SerialPort.GetPortNames());
+        }
+    }
+}
diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Config.resx b/Tools/ArdupilotMegaPlanner/3DRRadio/Config.resx
new file mode 100644
index 000000000..c2d6487d8
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Config.resx
@@ -0,0 +1,1533 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="CMB_SerialPort.Location" type="System.Drawing.Point, System.Drawing">
+    <value>47, 14</value>
+  </data>
+  <data name="CMB_SerialPort.Size" type="System.Drawing.Size, System.Drawing">
+    <value>109, 21</value>
+  </data>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="CMB_SerialPort.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="&gt;&gt;CMB_SerialPort.Name" xml:space="preserve">
+    <value>CMB_SerialPort</value>
+  </data>
+  <data name="&gt;&gt;CMB_SerialPort.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CMB_SerialPort.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name="&gt;&gt;CMB_SerialPort.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="CMB_Baudrate.Items" xml:space="preserve">
+    <value>4800</value>
+  </data>
+  <data name="CMB_Baudrate.Items1" xml:space="preserve">
+    <value>9600</value>
+  </data>
+  <data name="CMB_Baudrate.Items2" xml:space="preserve">
+    <value>14400</value>
+  </data>
+  <data name="CMB_Baudrate.Items3" xml:space="preserve">
+    <value>19200</value>
+  </data>
+  <data name="CMB_Baudrate.Items4" xml:space="preserve">
+    <value>28800</value>
+  </data>
+  <data name="CMB_Baudrate.Items5" xml:space="preserve">
+    <value>38400</value>
+  </data>
+  <data name="CMB_Baudrate.Items6" xml:space="preserve">
+    <value>57600</value>
+  </data>
+  <data name="CMB_Baudrate.Items7" xml:space="preserve">
+    <value>115200</value>
+  </data>
+  <data name="CMB_Baudrate.Location" type="System.Drawing.Point, System.Drawing">
+    <value>47, 41</value>
+  </data>
+  <data name="CMB_Baudrate.Size" type="System.Drawing.Size, System.Drawing">
+    <value>109, 21</value>
+  </data>
+  <data name="CMB_Baudrate.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="&gt;&gt;CMB_Baudrate.Name" xml:space="preserve">
+    <value>CMB_Baudrate</value>
+  </data>
+  <data name="&gt;&gt;CMB_Baudrate.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CMB_Baudrate.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name="&gt;&gt;CMB_Baudrate.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="panel1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Bottom, Left, Right</value>
+  </data>
+  <data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>1, 19</value>
+  </data>
+  <data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>781, 452</value>
+  </data>
+  <data name="panel1.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="&gt;&gt;panel1.Name" xml:space="preserve">
+    <value>panel1</value>
+  </data>
+  <data name="&gt;&gt;panel1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;panel1.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="label1.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>6, 49</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>32, 13</value>
+  </data>
+  <data name="label1.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Baud</value>
+  </data>
+  <data name="&gt;&gt;label1.Name" xml:space="preserve">
+    <value>label1</value>
+  </data>
+  <data name="&gt;&gt;label1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label1.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="label2.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>6, 22</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>26, 13</value>
+  </data>
+  <data name="label2.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Port</value>
+  </data>
+  <data name="&gt;&gt;label2.Name" xml:space="preserve">
+    <value>label2</value>
+  </data>
+  <data name="&gt;&gt;label2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label2.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="label3.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>184, 25</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>176, 39</value>
+  </data>
+  <data name="label3.TabIndex" type="System.Int32, mscorlib">
+    <value>6</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>1. Please Select the comport 
+    and baudrate for your 3DRRadio.
+2. Then click load settings.</value>
+  </data>
+  <data name="&gt;&gt;label3.Name" xml:space="preserve">
+    <value>label3</value>
+  </data>
+  <data name="&gt;&gt;label3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label3.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 9</value>
+  </data>
+  <data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>166, 67</value>
+  </data>
+  <data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
+    <value>7</value>
+  </data>
+  <data name="groupBox1.Text" xml:space="preserve">
+    <value>ComPort</value>
+  </data>
+  <data name="&gt;&gt;groupBox1.Name" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name="&gt;&gt;groupBox1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;groupBox1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;groupBox1.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 82</value>
+  </data>
+  <data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>786, 477</value>
+  </data>
+  <data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
+    <value>8</value>
+  </data>
+  <data name="groupBox2.Text" xml:space="preserve">
+    <value>Settings</value>
+  </data>
+  <data name="&gt;&gt;groupBox2.Name" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name="&gt;&gt;groupBox2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;groupBox2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;groupBox2.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="pictureBox1.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
+    <value>Zoom</value>
+  </data>
+  <data name="pictureBox1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="pictureBox1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>445, 5</value>
+  </data>
+  <data name="pictureBox1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>353, 81</value>
+  </data>
+  <data name="pictureBox1.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
+  </data>
+  <data name="&gt;&gt;pictureBox1.Name" xml:space="preserve">
+    <value>pictureBox1</value>
+  </data>
+  <data name="&gt;&gt;pictureBox1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;pictureBox1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;pictureBox1.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
+    <value>810, 566</value>
+  </data>
+  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8aMeT/GjKs/xoyrP8aMPgAAAAAAAAAAAAAAAAAA
+        AAA/xowBP8aMhT/GjKo/xoyoP8aMqD/GjKs/xoxnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8aMFj/G
+        jKE/xoynP8aMpj/GjKU/xoylP8aMpT/GjKY/xoykP8aMkD/GjHE/xowvAAAAAAAAAAA/xowIP8aMjz/G
+        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
+        OJA+gziQPoM4kz6DOGk+hTu+PoU8/z6EO+g+hz8SP4xHLz+HPvI/hz//P4c//z+GP8U+hTyAPoU7cj6G
+        Pqc/h0D9P4c//z+HPv8/iEJyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHgdxDx4
+        Hf88eB3/PHge/zx4Hv88eB7/PHge/zx4Hv88dx3/PHcd/zx4H6o9fCkGAAAAAAAAAAAAAAAAAAAAADx4
+        H7g8eB3/PHgd/zx4Hf89eyVBAAAAAAAAAAAAAAAAPHgdeDx4Hf88eB3/PHgd/zx4Hv88eB7/PHge/zx3
+        Hf88dx3/PHgfvT6AMxM8eiMGPHgc5zx4Hf88dx3bPHgfBD6ENwI9fCmTPXoj/z16JP89eyX/PXsl/z17
+        Jf89eiT/PXok/z15JOU+gDBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9fCpsPXoj9D16
+        JP89eyT/PXsl/z17Jf89eiT/PXoj/z16JcI+hDkVAAAAAD6DOBE9eiW6PXoj/z16JP89eyX/PXsl/z17
+        Jf89eiT/PXoj/z16Jcs+gzYjAAAAADx3HLw8eB3/PHcd/zx4ILw9fSsCAAAAAAAAAAAAAAAAPHgdtTx4
+        Hf88eB3iPHgdqjx4Hf88eB3/PHge/zx4Hv88eB7/PHge/zx4Hv88eB7/PHgeyzx4HcY8eB3/PHgd8zx3
+        HBwAAAAAPoEySj15I+o9eiT/PXok/z17Jf89eyX/PXsl/z16JP89eiP/PXsonz+GPAUAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6aweIOmsHuzprB7k6awe5OmsHuTprB7k6awe6OmsHuDps
+        B6I6bQhkO3UWBQAAAAAAAAAAAAAAAAAAAAAAAAAAOmwISzprBro6awe6OmsHnDpsCgYAAAAAAAAAAAAA
+        AAA6awdUOmsHujprB7k6awe5OmsHuTprB7o6awe4OmsHozttB1w8dRgFAAAAADpqBgk6awegOmsHuzpr
+        B5g6aQQEAAAAAAAAAAA7cQ5QOm4KqzptCdY6bQnoOm0J5DptCsU7cAt+PHQUGQAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7cxMxO24KnjptCdM6bQnoOm0J5DptCsA7bwxvPHccCgAA
+        AAAAAAAAAAAAADx2Gwc7cAxnOm4KtzptCdw6bQnpOm0J4DpuCrk7cAxrPHccCwAAAAAAAAAAOmoHgjpr
+        B7s6aga3Om8NLwAAAAAAAAAAAAAAAAAAAAA6awd+OmsHuzprB506awd2OmsHujprB7k6awe5OmsHuTpr
+        B7k6awe5OmsHuTprB7o6aweGOmsHiTprB7s6awepOmkFFAAAAAAAAAAAO3MUHjtvC4Y6bQrJOm0J5Tpt
+        Ceg6bQnaOm0KtTtwDVo9eCIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOWkDCzlp
+        AxQ5aQMSOmsEAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAOWkDCTlpAxQ5aQMSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOWgEDjlo
+        BBU5aAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAADppBQQ5aAQTOWgEFDloBA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        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
+        AAAAAAAAAAAAAECvdLtAr3T/QK90/0CvdP9Ar3T/QK90/0CvdP9AuHhZAAAAAD81OpM/PT7/Pz0+/z89
+        Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89
+        Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+xT48PTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/PT7VPz0+/z89
+        Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89Pvk/PT4tAAAAAD89PqQ/PT7/Pz0+/z89
+        Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89PvY/PT6JPjw9EQAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD89Pms/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89
+        Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89PpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9PDwKPjw9rz88
+        Pf8/PD3/Pzw9gQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP4pByD+KQf8/ikH/P4pB/z+K
+        Qf8/ikH/P4pB/z+PQV8AAAAAPTY8kz08PP89PDz/PTw8/z08PP89PDz/PTw8/z08PP89PDz/PTw8/z08
+        PP89PDz/PTw8/z08PP89PDz/PTw8/z08PP89PDz/PTw8/z08PP89PDz/PTw8/z08PP89PDz/PTw97Dw7
+        PE4AAAAAAAAAAAAAAAAAAAAAAAAAAD08PdU9PD3/PTw9/z08Pf89PD3/PTw9/z08Pf89PD3/PTw9/z08
+        Pf89PD3/PTw9+T08PS0AAAAAPTw9pD08Pf89PD3/PTw9/z08Pf89PD3/PTw9/z08Pf89PD3/PTw9/z08
+        Pf89PD3/PTw9/z08Pf89PD3/Pjw9/z08Pf89PD3SPTs8PQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAPTw9az08Pf89PD3/PTw9/z08Pf89PD3/PTw9/z08Pf89PD3/PTw9/z08Pf89PD3/PTw9kAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAOzo7Cjw7PLA8Ozz/PDs8/zw7PP88OzyBAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAA7bwZFO28GXjtvBl47bwZeO28GXjtvBl47bwZeO3IEIQAAAAA7Nj6TOzo7/zs6
+        O/87Ojv/Ozo7/zs6O/87Ojv/Ozo7/zs6O/87Ojv/Ozo7/zs6O/87Ojv/Ozo7/zs6O/87Ojv/Ozo7/zs6
+        O/87Ojv/Ozo7/zs6O/87Ojv/Ozo7/zs6O/87Ojv/Ozo7+Ds6O0gAAAAAAAAAAAAAAAAAAAAAPDo81Tw6
+        PP88Ojz/PDo8/zw6PP88Ojz/PDo8/zw6PP88Ojz/PDo8/zw6PP88Ojz5PDo8LQAAAAA8OjykPDo8/zw6
+        PP88Ojz/PDo8/zw6PP88Ojz/PDo8/zw6PP88Ojz/PDo8/zw6PP88Ojz/PDo8/zw6PP88Ojz/PDo8/zw6
+        PP88Ojz2Ozo7XgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8OjxrPDo8/zw6PP88Ojz/PDo8/zw6
+        PP88Ojz/PDo8/zw6PP88Ojz/PDo8/zw6PP88OjyQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADo4Ogo7OTuxOzk7/zs5
+        O/87OTv/Ozk7/zs5O4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD9PLhs/Ty4lP08uJT9P
+        LiU/Ty4lP08uJT9PLiU/Ty8NAAAAADo3OpI6ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4
+        Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4
+        Ov86ODr/Ojg67Do4OicAAAAAAAAAAAAAAAA6ODrVOjg6/zo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4
+        Ov86ODr/Ojg6/zo4Ovk6ODotAAAAADs5O6Q7OTv/Ozk7/zs5O/87OTv/Ozk7/zs5O/87OTv/Ozk7/zs5
+        O/87OTv/Ozk7/zs5O/87OTv/Ozk7/zs5O/87OTv/Ozk7/zs5O/87OTv8Ojg6bAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAADo4Oms6ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4
+        OpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAA4NzgKOjg6sjo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6gQAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAQT5DwUE+Q/9BPkP/QT5D/0E+Q/9BPkP/QT5D/0I+Q1sAAAAAODc4nDg3
+        OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3
+        OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj/OTc5vDk3OQMAAAAAAAAAADk3
+        OdU5Nzn/OTc5/zk3Of85Nzn/OTc5/zk3Of85Nzn/OTc5/zk3Of85Nzn/OTc5+Tk3OS0AAAAAOTg5pDk4
+        Of85ODn/OTg5/zk4Of85ODn/OTg5/zk4Of85ODn/OTg5/zk4Of85ODn/OTg5/zk4Of85ODn/OTg5/zk4
+        Of85ODn/OTg5/zk4Of85ODn9ODc4XwAAAAAAAAAAAAAAAAAAAAAAAAAAOTc5azk3Of85Nzn/OTc5/zk3
+        Of85Nzn/OTc5/zk3Of85Nzn/OTc5/zk3Of85Nzn/OTc5kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzY3Cjg3OLQ4Nzj/ODc4/zg3
+        OP84Nzj/ODc4/zg3OP84NziBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBP0C7QT9A/0E/
+        QP9BP0D/QT9A/0E/QP9BP0D/QT9AWAAAAAA3NjesNzY3/zc2N/83Njf/NzY3/zc2N/83Njf/NzY3/zc2
+        N/83Njf/NzY3/zc2N/83Njf/NzY3/zc2N/83Njf/NzY3/zc2N/83Njf/NzY3/zc2N/83Njf/NzY3/zc2
+        N/83Njf/NzY3/zc2N/83Njf/NzU3VwAAAAAAAAAANzY31Tc2N/83Njf/NzY3/zc2N/83Njf/NzY3/zc2
+        N/83Njf/NzY3/zc2N/83Njf5NzY3LQAAAAA4NzikODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3
+        OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84Nzj3NzY3PQAA
+        AAAAAAAAAAAAAAAAAAA3NjdrNzY3/zc2N/83Njf/NzY3/zc2N/83Njf/NzY3/zc2N/83Njf/NzY3/zc2
+        N/83NjeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAADY0Ngw3NTe2NzU3/zc1N/83NTf/NzU3/zc1N/83NTf/NzU3/zc1N4EAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEA+P7tAPj//QD4//0A+P/9APj//QD4//0A+P/9APj9YAAAAADY0
+        Nqs2NDb/NjQ2/zY0Nv82NDb/NjQ2/zY0Nv82NDb/NjQ2/zY0Nv82NDb/NjQ2/zY0Nv82NDb/NjQ2/zY0
+        Nv82NDb/NjQ2/zY0Nv82NDb/NjQ2/zY0Nv82NDb/NjQ2/zY0Nv82NDb/NjQ2/zY0Nv82NDbKNjQ2BAAA
+        AAA2NTbVNjU2/zY1Nv82NTb/NjU2/zY1Nv82NTb/NjU2/zY1Nv82NTb/NjU2/zY1Nvk2NTYtAAAAADc1
+        N6Q3NTf/NzU3/zc1N/83NTf/NzU3/zc1N/83NTf/NzU3/zc1N/83NTf/NzU3/zc1N/83NTf/NzU3/zc1
+        N/83NTf/NzU3/zc1N/83NTf/NzU3/zc1N/83NTfcNTM1EwAAAAAAAAAAAAAAADY1Nms2NTb/NjU2/zY1
+        Nv82NTb/NjU2/zY1Nv82NTb/NjU2/zY1Nv82NTb/NjU2/zY1NpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0MzUNNTM1tzY0Nv82NDb/NjQ2/zY0
+        Nv82NDb/NjQ2/zY0Nv82NDb/NjQ2gQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz0+uz89
+        Pv8/PT7/Pz0+/z89Pv8/PT7/Pz0+/z89PlgAAAAANDM1tDQzNf80MzX/NDM1/zQzNf80MzX/NDM1/zQz
+        Nf80MzX/NDM1/zQzNf80MzX/NDM1/zQzNf80MzX/NDM1/zQzNf80MzX/NDM1/zQzNf80MzX/NDM1/zQz
+        Nf80MzX/NDM1/zQzNf80MzX/NDM1/zQzNfw0MzU1AAAAADUzNdU1MzX/NTM1/zUzNf81MzX/NTM1/zUz
+        Nf81MzX/NTM1/zUzNf81MzX/NTM1+TUzNS0AAAAANTM1rDUzNf81MzX/NTM1/zUzNf81MzX/NTM1/zUz
+        Nf81MzX/NTM1/zUzNf81MzX/NTM1/zUzNf81MzX/NTM1/zUzNf81MzX/NTM1/zUzNf81MzX/NTM1/zUz
+        Nf81MzWcAAAAAAAAAAAAAAAANTM1azUzNf81MzX/NTM1/zUzNf81MzX/NTM1/zUzNf81MzX/NTM1/zUz
+        Nf81MzX/NTM1kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAMjIzDjMyNLgzMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjSBAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+PD27Pjw9/z48Pf8+PD3/Pjw9/z48Pf8+PD3/Pj0+WAAA
+        AAAzMjRtMzI0pjMyNKMzMjSjMzI0ozMyNKMzMjSkMzI0kDMyNIUzMjSHMzI0hzMyNIczMjSHMzI0hzMy
+        NIUzMjSXMzI04jMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMy
+        NHoAAAAAMzI01TMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjT5MzI0LQAA
+        AAAzMjRpMzI0pjMyNKMzMjSjMzI0ojMyNKszMjTGMzI05DMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMy
+        NP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zQzNPszMjQ8AAAAAAAAAAAzMjRrMzI0/zMy
+        NP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjT/MzI0/zMyNP8zMjSQAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEwMg4yMTO4MjEz/zIxM/8yMTP/MjEz/zIx
+        M/8yMTP/MjEz/zIxM/8yMTP/MjEz/zIxM4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD48
+        Pbs+PD3/Pjw9/z48Pf8+PD3/Pjw9/z48Pf8/PT5ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMTMWMjAzrjIwM/8yMDP/MjAz/zIw
+        M/8yMDP/MjAz/zIwM/8yMDP/MjAz/zIwM/8yMDP/MTAyswAAAAAyMTPVMjEz/zIxM/8yMTP/MjEz/zIx
+        M/8yMTP/MjEz/zIxM/8yMTP/MjEz/zIxM/kyMTMuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAzMjQPMjEzTDIxM7QyMTP/MjEz/zIxM/8yMTP/MjEz/zIxM/8yMTP/MjEz/zIxM/8yMTP/MjEz/zIx
+        M/8yMTP/MjEz/zIxM7YxMDIBAAAAADIxM2syMTP/MjEz/zIxM/8yMTP/MjEz/zIxM/8yMTP/MjEz/zIx
+        M/8yMTP/MjEz/zIxM5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAvLjEOMS8yujEvMv8xLzL/MS8y/zEvMv8xLzL/MS8y/zEvMv8xLzL/MS8y/zEvMv8xLzL/MS8ygQAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPDs8uzw7PP88Ozz/PDs8/zw7PP88Ozz/PDs8/zw7
+        PFkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAxLzMHMC4xxzAuMf8wLjH/MC4x/zAuMf8wLjH/MC4x/zAuMf8wLjH/MC4x/zAu
+        Mf8wLjHTMC4xBjEvMtIxLzL/MS8y/zEvMv8xLzL/MS8y/zEvMv8xLzL/MS8y/zEvMv8xLzL/MS8y+TEv
+        Mi4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEwMlwxLzLvMS8y/zEv
+        Mv8xLzL/MS8y/zEvMv8xLzL/MS8y/zEvMv8xLzL/MS8y/zEvMv8xLzL/MS8y+zAvMTIAAAAAMC8yazAv
+        Mv8wLzL/MC8y/zAvMv8wLzL/MC8y/zAvMv8wLzL/MC8y/zAvMv8wLzL/MC8ykAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALi0vDi8uMLsvLjD/Ly4w/y8uMP8vLjD/Ly4w/y8u
+        MP8vLjD/Ly4w/y8uMP8vLjD/Ly4w/y8uMP8vLjCGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAA7Oju7Ozo7/zs6O/87Ojv/Ozo7/zs6O/87Ojv/Ozo7WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvLjBSLi0w/i4t
+        MP8uLTD/Li0w/y4tMP8uLTD/Li0w/y4tMP8uLTD/Li0w/y4tMOEuLTATLy4x0C8uMf8vLjH/Ly4x/y8u
+        Mf8vLjH/Ly4x/y8uMf8vLjH/Ly4x/y8uMf8vLjH5Ly4xLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAADAuMTkvLjHpLy4x/y8uMf8vLjH/Ly4x/y8uMf8vLjH/Ly4x/y8u
+        Mf8vLjH/Ly4x/y8uMf8vLjH/Ly4xjgAAAAAvLjBrLy4w/y8uMP8vLjD/Ly4w/y8uMP8vLjD/Ly4w/y8u
+        MP8vLjD/Ly4w/y8uMP8vLjCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0r
+        Lg8uLS++Li0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4t
+        L2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs4O7s7ODv/Ozg7/zs4O/87ODv/Ozg7/zs4
+        O/87ODtZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0sLiItLC70LSwu/y0sLv8tLC7/LSwu/y0sLv8tLC7/LSwu/y0s
+        Lv8tLC7/LSwu6S0sLhsuLS/PLi0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4t
+        L/kuLS8uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4t
+        LzsuLS/2Li0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4tL/8uLS/XLSwuAS4t
+        L2guLS//Li0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4tL/8uLS//Li0v/y4tL5AAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArKi0RLCstvy0rLv8tKy7/LSsu/y0rLv8tKy7/LSsu/y0r
+        Lv8tKy7/LSsu/y0rLv8tKy7/LSsu/ywrLv8tKy59AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAOjg6uzo4Ov86ODr/Ojg6/zo4Ov86ODr/Ojg6/zo4OlkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALCotLywq
+        LfksKi3/LCot/ywqLf8sKi3/LCot/ywqLf8sKi3/LCot/ywqLf8sKi3vLCstIC0rLc4tKy3/LSst/y0r
+        Lf8tKy3/LSst/y0rLf8tKy3/LSst/y0rLf8tKy3/LSst+S0rLS4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0sLngtLC7/LSwu/y0sLv8tLC7/LSwu/y0s
+        Lv8tLC7/LSwu/y0sLv8tLC7/LSwu/y0sLvssKi0dLSsuYi0rLv8tKy7/LSsu/y0rLv8tKy7/LSsu/y0r
+        Lv8tKy7/LSsu/y0rLv8tKy7/LSsukAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKSksEiop
+        LMArKSz/Kiks/yopLP8qKSz/Kiks/yopLP8qKSz/Kiks/yopLP8qKSz/Kiks/yopLP8qKSz/KyktewAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4Nzi7ODc4/zg3OP84Nzj/ODc4/zg3
+        OP84Nzj/ODc4WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqKSyDKiks/yopLP8qKSz/Kiks/yopLP8qKSz/Kiks/yop
+        LP8qKSz/Kiks/yopLOMqKSwVKyks0CspLP8rKSz/Kyks/yspLP8rKSz/Kyks/yspLP8rKSz/Kyks/ysp
+        LP8rKSz5KyksLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAALCotBysqLdYrKi3/Kyot/ysqLf8rKi3/Kyot/ysqLf8rKi3/Kyot/ysqLf8rKi3/Kyot/ysq
+        LVErKSxfKyks/yspLP8rKSz/Kyks/yspLP8rKSz/Kyks/yspLP8rKSz/Kyks/yspLP8rKSyQAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAACkoKxMpKCvAKSgr/ykoK/8pKCv/KSgr/ykoK/8pKCv/KSgr/yko
+        K/8pKCv/KSgr/ykoK/8pKCv/KSgr/ykoK40AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAADg3OLs4Nzj/ODc4/zg3OP84Nzj/ODc4/zg3OP84NzhZAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCcqQyko
+        K/MpKCv/KSgr/ykoK/8pKCv/KSgr/ykoK/8pKCv/KSgr/ykoK/8pKCv/KSgr1ykoKwgpKCvRKSgr/yko
+        K/8pKCv/KSgr/ykoK/8pKCv/KSgr/ykoK/8pKCv/KSgr/ykoK/kpKCsuAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKiksdiopLP8qKSz/Kiks/yop
+        LP8qKSz/Kiks/yopLP8qKSz/Kiks/yopLP8qKSz/KiksfCkoK1wpKCv/KSgr/ykoK/8pKCv/KSgr/yko
+        K/8pKCv/KSgr/ykoK/8pKCv/KSgr/ykoK5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJikTKCcqwSgn
+        Kv8oJyr/KCcq/ygnKv8oJyr/KCcq/ygnKv8oJyr/KCcq/ygnKv8oJyr/KCcq/ygnKv0oJyqOAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzY3uzc2N/83Njf/NzY3/zc2
+        N/83Njf/NzY3/zc2N1kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJiUpDyYlKQ0mJSkLJiUpCyYl
+        KQsmJSkLJiUpCyYlKQsmJSkIJiUpHScmKXAnJirzKCcq/ygnKv8oJyr/KCcq/ygnKv8oJyr/KCcq/ygn
+        Kv8oJyr/KCcq/ygnKv8oJyq8AAAAACgnKtUoJyr/KCcq/ygnKv8oJyr/KCcq/ygnKv8oJyr/KCcq/ygn
+        Kv8oJyr/KCcq+SgnKi4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAApKCsyKSgr+ykoK/8pKCv/KSgr/ykoK/8pKCv/KSgr/ykoK/8pKCv/KSgr/yko
+        K/8pKCubKCcqXSgnKv8oJyr/KCcq/ygnKv8oJyr/KCcq/ygnKv8oJyr/KCcq/ygnKv8oJyr/KCcqkAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAJSQoEyYlKcImJSn/JiUp/yYlKf8mJSn/JiUp/yYlKf8mJSn/JiUp/yYl
+        Kf8mJSn/JiUp/yYlKf8mJSn/JiUpugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAA2NDa7NjQ2/zY0Nv82NDb/NjQ2/zY0Nv82NDb/NjQ2WQAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAmJSleJiUp4CYlKdwmJSnbJiUp2yYlKdsmJSnbJiUp2yYlKdkmJSnrJiUp/yYl
+        Kf8mJSn/JiUp/yYlKf8mJSn/JiUp/yYlKf8mJSn/JiUp/yYlKf8mJSn/JiUp/yYlKX0AAAAAJyYp1Scm
+        Kf8nJin/JyYp/ycmKf8nJin/JyYp/ycmKf8nJin/JyYp/ycmKf8nJin5JyYpLgAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcmKgwnJirmJyYq/ycm
+        Kv8nJir/JyYq/ycmKv8nJir/JyYq/ycmKv8nJir/JyYq/ycmKqsmJSloJiUp/yYlKf8mJSn/JiUp/yYl
+        Kf8mJSn/JiUp/yYlKf8mJSn/JiUp/yYlKf8mJSmQAAAAAAAAAAAAAAAAAAAAACQjJhMlJCfEJSQn/yUk
+        J/8lJCf/JSQn/yUkJ/8lJCf/JSQn/yUkJ/8lJCf/JSQn/yUkJ/8kIyf/JCMn/yQjJv8jIibzIyIlcgAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADY0Nrs2NDb/NjQ2/zY0
+        Nv82NDb/NjQ2/zY0Nv82NDZZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkKQQlJCeIIyIl/yMi
+        Jf8jIib/JCMm/yQjJv8kIyb/JCMn/yUkJ/8lJCf/JSQn/yUkJ/8lJCf/JSQn/yUkJ/8lJCf/JSQn/yUk
+        J/8lJCf/JSQn/yUkJ/8lJCf8JSQnNwAAAAAlJCjVJSQo/yUkKP8lJCj/JSQo/yUkKP8lJCj/JSQo/yUk
+        KP8lJCj/JSQo/yUkKPklJCguAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAJiUpBSYlKdImJSn/JiUp/yYlKf8mJSn/JiUp/yYlKf8mJSn/JiUp/yYl
+        Kf8mJSn/JiUpqyUkKGglJCj/JSQo/yUkKP8lJCj/JSQo/yUkKP8lJCj/JSQo/yUkKP8lJCj/JSQo/yUk
+        KJAAAAAAAAAAAAAAAAAiISUVIyIlxyQjJv8kIyb/JCMm/yQjJf8jIiX/IyIl/yMiJf8jIiX/IiEk/yIh
+        JP8iIST/IyIl/yQjJv8lJCf/KSgr/y0sLv8xMDL/PTw9cgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAANDM1uzQzNf80MzX/NDM1/zQzNf80MzX/NDM1/zQzNVkAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtLC5/MC8x/ysqLf8oJyr/JSQn/yQjJv8jIiX/ISAk/yEg
+        JP8iIST/IiEk/yIhJf8jIiX/IyIl/yMiJf8jIiX/IyIl/yMiJv8jIib/IyIm/yMiJcgkIyYEAAAAACQj
+        J9UkIyf/JCMn/yQjJ/8kIyf/JCMn/yQjJ/8kIyf/JCMn/yQjJ/8kIyf/JCMn+SQjJy4AAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCcFJSQn0iUk
+        J/8lJCf/JSQn/yUkJ/8lJCf/JSQn/yUkJ/8lJCf/JSQn/yUkJ/8lJCerJCMmaCQjJv8kIyb/JCMm/yQj
+        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
+        QP9BQED9QUBApEFAQCIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQUBA1UFAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED5QUBALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFAQA1BQEC7QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBAjwAAAABBQEBrQUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQECQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAEFAQKpBQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QL4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0sLrstLC7/LSwu/y0sLv8tLC7/LSwu/y0s
+        Lv8tLC5ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAABBQEBcQUBA/EFAQP9BQED/QUBA/0FAQPxBQEB5AAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAABBQEDVQUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QPlBQEAuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEAaQUBAvEFA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQPtBQEAyAAAAAEFA
+        QGtBQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQJAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEAQQUBA5UFAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBAvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAALCstuywrLf8sKy3/LCst/ywrLf8sKy3/LCst/ywqLVkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEBNQUBA7kFA
+        QP9BQED/QUBA/0FAQP9BQECBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFAQNtBQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA+UFAQC0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAABBQEACQUBAWkFAQOBBQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBAt0FAQAEAAAAAQUBAb0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBAjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAEFAQJVBQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQEC9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArKi27Kyot/ysqLf8rKi3/Kyot/ysq
+        Lf8rKi3/KygtWQAAAAAAAAAAQUBAPEFAQHhBQEBvQUBAb0FAQG9BQEBvQUBAb0FAQG9BQEBvQUBAb0FA
+        QG9BQEBvQUBAb0FAQG9BQEBvQUBAb0FAQGJBQEC+QUBA/0FAQP9BQED/QUBA/0FAQP9BQEB3AAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAQUBAtEFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED5QUBALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFAQBJBQEAzQUBAcEFAQMlBQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQPtBQEA5AAAAAAAA
+        AABBQEBPQUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQECYQUBAD0FA
+        QBNBQEATQUBAE0FAQBNBQEATQUBAE0FAQBNBQEARQUBAHkFAQElBQECyQUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQLkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAACopLLsqKSz/Kiks/yopLP8qKSz/Kiks/yopLP8pKCxZAAAAAAAAAABCQUAlQUBA1EFA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEBrAAAAAAAAAAAAAAAAAAAAAAAAAABBQEAVQUBAwUFA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP5BQEDeQUBA10FAQNdBQEDXQUBA10FA
+        QNdBQEDYQUBA5UFAQPpBQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBAkgAAAAAAAAAAAAAAAAAAAABBQEBvQUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQPRBQEDjQUBA5UFAQOVBQEDlQUBA5UFAQOVBQEDlQUBA5UFA
+        QORBQEDtQUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBAnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKSgruykoK/8pKCv/KSgr/yko
+        K/8pKCv/KSgr/ykoK1kAAAAAAAAAAAAAAABBQEAWQUBAxUFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQEBtAAAAAAAAAAAAAAAAAAAAAAAAAABBQEATQUBAwUFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQNRBQEAPAAAAAAAA
+        AAAAAAAAAAAAAAAAAABBQEBzQUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEBxAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAoJyq7KCcq/ygnKv8oJyr/KCcq/ygnKv8oJyr/KCcqWQAAAAAAAAAAAAAAAAAA
+        AABBQEAUQUBAxEFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEBvAAAAAAAAAAAAAAAAAAAAAAAA
+        AABBQEASQUBAwEFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQEDvQUBAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQECDQUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/EFAQDcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgnKrsoJyr/KCcq/ygn
+        Kv8oJyr/KCcq/ygnKv8oJypZAAAAAAAAAAAAAAAAAAAAAAAAAABBQEATQUBAxEFAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQEBwAAAAAAAAAAAAAAAAAAAAAAAAAABBQEAQQUBAv0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA+UFAQEkAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQECBQUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEDTQUBABgAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAJiUpuyYlKf8mJSn/JiUp/yYlKf8mJSn/JiUp/yYlKVkAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAABBQEARQUBAwUFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEBxAAAAAAAA
+        AAAAAAAAAAAAAAAAAABBQEAOQUBAvUFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQPRBQEBbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABBQECAQUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQHUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCi7JSQo/yUk
+        KP8lJCj/JSQo/yUkKP8lJCj/JSQoWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEASQUBAv0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEByAAAAAAAAAAAAAAAAAAAAAAAAAABBQEAOQUBAxUFA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEDqQUBARgAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEB/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEDZQUBADwAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkKLslJCj/JSQo/yUkKP8lJCj/JSQo/yUkKP8lJChZAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEASQUBAwkFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQEB0AAAAAAAAAAAAAAAAAAAAAAAAAABBQEAcQUBAzUFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBAykFAQC0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAABBQEB+QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA+kFAQEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCMmuyQj
+        Jv8kIyb/JCMm/yQjJv8kIyb/JCMm/yQjJlkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABBQEAbQUBA0UFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEB1AAAAAAAAAAAAAAAAAAAAAAAA
+        AABBQEAbQUBAzUFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/EFAQIlBQEAMAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEB8QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQPpBQEBfAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIiW7IyIl/yMiJf8jIiX/IyIl/yMiJf8jIiX/IyIlWQAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEAcQUBA0UFAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQEB4AAAAAAAAAAAAAAAAAAAAAAAAAABBQEAZQUBAzEFAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QLNBQEA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEB6QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQEDbQUBASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIh
+        JMQiIST/IiEk/yIhJP8iIST/IiEk/yIhJP8iISReAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAABBQEAaQUBAzkFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQECBQUBABAAA
+        AAAAAAAAAAAAAAAAAABBQEAXQUBAykFAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA7UFAQKRBQEA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABBQEB5QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQEDvQUBAkkFAQBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAISAkbiEgJOAhICT/ISAk/yEgJP8hICT/ISAk2yEg
+        JCkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEAaQUBAuUFA
+        QNZBQEDVQUBA1UFAQNVBQEDVQUBA1UFAQNVBQEDVQUBA1UFAQNVBQEDVQUBA1UFAQNVBQEDVQUBA1UFA
+        QNVBQEDVQUBA1UFAQNVBQEDVQUBA1kFAQNhBQEBHAAAAAAAAAAAAAAAAAAAAAAAAAABBQEAXQUBAyEFA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQPNBQEDVQUBAqEFAQGFBQEAgAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEB3QUBA/0FAQP9BQED/QUBA/0FA
+        QP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQP9BQED/QUBA/0FAQOpBQEDDQUBAeEFA
+        QCMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAISAkFiAfI3cgHyO6IB8jvSAfI4EhICQXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQUBACEFAQAdBQEAHQUBAB0FAQAdBQEAHQUBAB0FA
+        QAdBQEAHQUBAB0FAQAdBQEAHQUBAB0FAQAdBQEAHQUBAB0FAQAdBQEAHQUBAB0FAQAdBQEAHQUBACUFA
+        QAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBQEAYQUBAckFAQHdBQEB2QUBAdkFAQHZBQEB4QUBAZkFA
+        QFNBQEA7QUBAJUFAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAABBQEBXQUBAeUFAQHZBQEB2QUBAdkFAQHZBQEB2QUBAdkFAQHZBQEB2QUBAdkFA
+        QHZBQEB4QUBAb0FAQFJBQEA4QUBAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIB8jHyAfI1IgHyNVIB8jJQAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AABBQEAcQUBAH0FAQB9BQEAfQUBAH0FAQCBBQEAUQUBACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFAQA9BQEAgQUBAH0FA
+        QB9BQEAfQUBAH0FAQB9BQEAfQUBAH0FAQB9BQEAfQUBAH0FAQCBBQEAaQUBABwAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        //////////////////////////////z8H+APj4f/4fwfPif58H/4/A/gAY4B/4BwBjwH8cAf+PiPwACM
+        AP8AYAI8B/GAD/jwwAT4iPh+PiPiOAfxD4/48cAM/Aj8fj4H8DgH8R+P+OPgDPwB/H4/x/AwB/EcD/gD
+        44z8Afx8f8fwIgAQPA/4AOMc/AH8fH/H8CIAED4P+HjzHPwB/H4/x/AGA/Ef//j8cTz8CPx+P8fwBgfx
+        H//4/HA8+Ij4fj4j4g4H8Q+P+AD4PACIIP8IIIIeABGCH/gA+HwBjAH/gHAGHgABwB/4A/x8B48H/8H8
+        Hj8gAeB/////////////////////////////////////////////////////////////////////////
+        //////////////gMAAA/+ABgAf/+AB///+f4DAAAD/gAYAA//gAf///H+AwAAAP4AGAAD/4AH///h/gM
+        AAAB+ABgAAf+AB///wf//AAAAPgAYAAD/gAf//4H//wAAAB4AGAAAf4AH//8B/gMAAAAOABgAAD+AB//
+        +Af4DAAAADgAYAAAfgAf//AH+AwAAAAYAGAAAD4AH//gB/gMAAAAGABgAAAeAB//wAf4DgAAABgAcAAA
+        HgAf/4AH+A///gAIAH/wAA4AH/8AB/gP//8ACAB//AAOAB/+AAf4D///gAgAf/4ABgAf/AAP+A///4AI
+        AH//AAYAH/gAH/gP//+ACAB//4AGAB/wAD/4D///AAgAf/+ABgAf4AA/+A///wAIAH//wAYAH8AAf/gP
+        //4ACAB//8ACAB+AAP/4D/gAABgAf//AAgAfAAD/+A/4AAAYAH//wAIAHgAAf/gP/gAAGAB//8ACABwA
+        AD/4D/8AADgAf//AAgAcAAAf+A//gAA4AH//wAIAH/wAH/gP/8AAeAB//8ACAB/+AA/4D//gAPgAf/+A
+        BgAf/wAP+A//8AH4AH//gAYAH/8AD/gP//gD+AB//wAGAB//AAf4D//8B/gAf/4ABgAf/wAH+A///g/4
+        AH/8AA4AH/8AB/gP//8D+AB/+AAOAB/+AAf4D///A/gAf+AAHgAf/AAH+A8AAAH8AAAAAB8AAAAAB/gP
+        gAAA/gAAAAA/gAAAAA/4D8AAAH8AAAAAf4AAAAAP+A/gAAA/gAAAAP/AAAAAD/gP8AAAH8AAAAH/4AAA
+        AB/4D/gAAA/gAAAD//gAAAAf+A/8AAAH8AAAB//8AAAAP/gP/gAAA/gAAA///gAAAH/4D/8AAAH8AAA/
+        //8AAAD/+A//gAAAfgAA////gAAB//wP/8AAAH8AB////8AAD///H///////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        //////////////////////////////////8=
+</value>
+  </data>
+  <data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>3DRRadio Config</value>
+  </data>
+  <data name="&gt;&gt;$this.Name" xml:space="preserve">
+    <value>Config</value>
+  </data>
+  <data name="&gt;&gt;$this.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/MainV2.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/MainV2.cs
new file mode 100644
index 000000000..22232ee1c
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/3DRRadio/MainV2.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace ArdupilotMega
+{
+    class MainV2
+    {
+        public static portproxy comPort = new portproxy();
+    }
+
+    class portproxy
+    {
+        public ArdupilotMega.Comms.SerialPort BaseStream = new ArdupilotMega.Comms.SerialPort();
+    }
+}
diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Program.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/Program.cs
new file mode 100644
index 000000000..e4f207fc1
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Program.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows.Forms;
+using log4net.Config;
+
+namespace _3DRRadio
+{
+    static class Program
+    {
+        /// <summary>
+        /// The main entry point for the application.
+        /// </summary>
+        [STAThread]
+        static void Main()
+        {
+            XmlConfigurator.Configure();
+
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            Application.Run(new Config());
+        }
+    }
+}
diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/AssemblyInfo.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..ae9d3a356
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("3DRRadio")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("3DRRadio")]
+[assembly: AssemblyCopyright("Copyright ©  2012")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("5f5b5ed0-0b27-4a90-8c24-248309f363f8")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("0.1.*")]
+[assembly: AssemblyFileVersion("0.1.0.0")]
diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Resources.Designer.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Resources.Designer.cs
new file mode 100644
index 000000000..f107d01f7
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Resources.Designer.cs
@@ -0,0 +1,84 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.261
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace _3DRRadio.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("_3DRRadio.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        internal static System.Drawing.Bitmap _3dr {
+            get {
+                object obj = ResourceManager.GetObject("3dr", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        internal static System.Drawing.Bitmap _3dr2 {
+            get {
+                object obj = ResourceManager.GetObject("3dr2", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        internal static System.Drawing.Bitmap _3dr3 {
+            get {
+                object obj = ResourceManager.GetObject("3dr3", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+    }
+}
diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Resources.resx b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Resources.resx
new file mode 100644
index 000000000..40514226a
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Resources.resx
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="3dr2" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\3dr2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="3dr" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\3dr.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="3dr3" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\3dr3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Settings.Designer.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Settings.Designer.cs
new file mode 100644
index 000000000..11d738043
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.261
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace _3DRRadio.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+    }
+}
diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Settings.settings b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Settings.settings
new file mode 100644
index 000000000..39645652a
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/3DRRadio/Properties/Settings.settings
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>
diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/Resources/3dr.ico b/Tools/ArdupilotMegaPlanner/3DRRadio/Resources/3dr.ico
new file mode 100644
index 0000000000000000000000000000000000000000..9837bfa41691857f8f57ed0b4a2efe944300826a
GIT binary patch
literal 67646
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

literal 0
HcmV?d00001

diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/ThemeManager.cs b/Tools/ArdupilotMegaPlanner/3DRRadio/ThemeManager.cs
new file mode 100644
index 000000000..4468a3f3d
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/3DRRadio/ThemeManager.cs
@@ -0,0 +1,235 @@
+using System;
+using System.Drawing;
+using System.Windows.Forms;
+using ArdupilotMega.Controls.BackstageView;
+using log4net;
+using ArdupilotMega.Controls;
+
+namespace ArdupilotMega.Utilities
+{
+    /// <summary>
+    /// Helper class for the stylng 'theming' of forms and controls, and provides MessageBox
+    /// replacements which are also styled
+    /// </summary>
+    public class ThemeManager
+    {
+        private static readonly ILog log =
+            LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
+
+        private static Themes _currentTheme = Themes.BurntKermit;
+
+        public enum Themes
+        {
+            /// <summary>
+            /// no theme - standard Winforms appearance
+            /// </summary>
+            None,
+   
+            /// <summary>
+            /// Standard Planner Charcoal & Green colours
+            /// </summary>
+            BurntKermit,
+        }
+
+        /// <summary>
+        /// Change the current theme. Existing controls are not affected
+        /// </summary>
+        /// <param name="theme"></param>
+        public static void SetTheme(Themes theme)
+        {
+            log.Debug("Theme set to " +  Enum.GetName(typeof(Themes), theme));
+            _currentTheme = theme;
+        }
+
+        /// <summary>
+        /// Will recursively apply the current theme to 'control'
+        /// </summary>
+        /// <param name="control"></param>
+        public static void ApplyThemeTo(Control control)
+        {
+            switch (_currentTheme)
+            {
+                case Themes.BurntKermit: ApplyBurntKermitTheme(control, 0);
+                    break;
+
+                case Themes.None: ApplyNone(control, 0);
+                    break;
+
+                    // More themes go here
+
+
+                default:
+                    break;
+            }
+
+                    
+        }
+
+        private static void ApplyNone(Control temp, int level)
+        {
+            foreach (Control ctl in temp.Controls)
+            {
+                if (ctl.GetType() == typeof(MyButton))
+                {
+                    ArdupilotMega.Controls.MyButton but = (MyButton)ctl;
+                    but.BGGradTop = Color.FromArgb(242,242,242);
+                    but.BGGradBot = Color.FromArgb(207,207,207);
+                    but.ForeColor = Color.Black;
+                    but.TextColor = Color.Black;
+                    but.Outline = Color.FromArgb(112,112,112);
+                }
+
+                if (ctl.Controls.Count > 0)
+                    ApplyNone(ctl, 1);
+            }
+        }
+
+        private static void ApplyBurntKermitTheme(Control temp, int level)
+        {
+            Color BGColor = Color.FromArgb(0x26, 0x27, 0x28); // background
+            Color ControlBGColor = Color.FromArgb(0x43, 0x44, 0x45); // editable bg color
+            Color TextColor = Color.White;
+
+            if (level == 0)
+            {
+                temp.BackColor = BGColor;
+                temp.ForeColor = TextColor;// Color.FromArgb(0xe6, 0xe8, 0xea);
+            }
+
+            //temp.Font = new Font("Lucida Console", 8.25f);
+
+            foreach (Control ctl in temp.Controls)
+            {
+                if (ctl.GetType() == typeof(Button))
+                {
+                    ctl.ForeColor = Color.Black;
+                }
+                else if (ctl.GetType() == typeof(MyButton))
+                {
+                    Color PrimeColor = Color.FromArgb(0x94, 0xc1, 0x1f);
+
+                    ArdupilotMega.Controls.MyButton but = (MyButton)ctl;
+                    //but.BGGradTop = Color.FromArgb(PrimeColor.R, PrimeColor.G, PrimeColor.B);
+                    //but.BGGradBot = Color.FromArgb(255 - (int)(PrimeColor.R * 0.27), 255 - (int)(PrimeColor.G * 0.14), 255 - (int)(PrimeColor.B * 0.79));
+                    //but.ForeColor = Color.FromArgb(0x40, 0x57, 0x04); //Color.FromArgb(255 - (int)(PrimeColor.R * 0.7), 255 - (int)(PrimeColor.G * 0.8), 255 - (int)(PrimeColor.B * 0.1));
+                    //but.Outline = ControlBGColor;
+                }
+                else if (ctl.GetType() == typeof(TextBox))
+                {
+                    ctl.BackColor = ControlBGColor;
+                    ctl.ForeColor = TextColor;// Color.FromArgb(0xe6, 0xe8, 0xea);
+                    TextBox txt = (TextBox)ctl;
+                    txt.BorderStyle = BorderStyle.None;
+                }
+                else if (ctl.GetType() == typeof(DomainUpDown))
+                {
+                    ctl.BackColor = ControlBGColor;
+                    ctl.ForeColor = TextColor;// Color.FromArgb(0xe6, 0xe8, 0xea);
+                    DomainUpDown txt = (DomainUpDown)ctl;
+                    txt.BorderStyle = BorderStyle.None;
+                }
+                else if (ctl.GetType() == typeof(GroupBox))
+                {
+                    ctl.BackColor = BGColor;
+                    ctl.ForeColor = TextColor;// Color.FromArgb(0xe6, 0xe8, 0xea);
+                }
+               
+                else if (ctl.GetType() == typeof(Form))
+                {
+                    ctl.BackColor = BGColor;
+                    ctl.ForeColor = TextColor;// Color.FromArgb(0xe6, 0xe8, 0xea);
+                }
+                else if (ctl.GetType() == typeof(RichTextBox))
+                {
+                    ctl.BackColor = ControlBGColor;
+                    ctl.ForeColor = TextColor;
+                    RichTextBox txtr = (RichTextBox)ctl;
+                    txtr.BorderStyle = BorderStyle.None;
+                }
+                else if (ctl.GetType() == typeof(CheckedListBox))
+                {
+                    ctl.BackColor = ControlBGColor;
+                    ctl.ForeColor = TextColor;
+                    CheckedListBox txtr = (CheckedListBox)ctl;
+                    txtr.BorderStyle = BorderStyle.None;
+                }
+                else if (ctl.GetType() == typeof(TabPage))
+                {
+                    ctl.BackColor = BGColor;  //ControlBGColor
+                    ctl.ForeColor = TextColor;
+                    TabPage txtr = (TabPage)ctl;
+                    txtr.BorderStyle = BorderStyle.None;
+                }
+                else if (ctl.GetType() == typeof(TabControl))
+                {
+                    ctl.BackColor = BGColor;  //ControlBGColor
+                    ctl.ForeColor = TextColor;
+                    TabControl txtr = (TabControl)ctl;
+
+                }
+                else if (ctl.GetType() == typeof(DataGridView))
+                {
+                    ctl.ForeColor = TextColor;
+                    DataGridView dgv = (DataGridView)ctl;
+                    dgv.EnableHeadersVisualStyles = false;
+                    dgv.BorderStyle = BorderStyle.None;
+                    dgv.BackgroundColor = BGColor;
+                    DataGridViewCellStyle rs = new DataGridViewCellStyle();
+                    rs.BackColor = ControlBGColor;
+                    rs.ForeColor = TextColor;
+                    dgv.RowsDefaultCellStyle = rs;
+
+                    DataGridViewCellStyle hs = new DataGridViewCellStyle(dgv.ColumnHeadersDefaultCellStyle);
+                    hs.BackColor = BGColor;
+                    hs.ForeColor = TextColor;
+
+                    dgv.ColumnHeadersDefaultCellStyle = hs;
+                    dgv.RowHeadersDefaultCellStyle = hs;
+                }
+                else if (ctl.GetType() == typeof(ComboBox))
+                {
+                    ctl.BackColor = ControlBGColor;
+                    ctl.ForeColor = TextColor;
+                    ComboBox CMB = (ComboBox)ctl;
+                    CMB.FlatStyle = FlatStyle.Flat;
+                }
+                else if (ctl.GetType() == typeof(NumericUpDown))
+                {
+                    ctl.BackColor = ControlBGColor;
+                    ctl.ForeColor = TextColor;
+                }
+                else if (ctl.GetType() == typeof(TrackBar))
+                {
+                    ctl.BackColor = BGColor;
+                    ctl.ForeColor = TextColor;
+                }
+                else if (ctl.GetType() == typeof(LinkLabel))
+                {
+                    ctl.BackColor = BGColor;
+                    ctl.ForeColor = TextColor;
+                    LinkLabel LNK = (LinkLabel)ctl;
+                    LNK.ActiveLinkColor = TextColor;
+                    LNK.LinkColor = TextColor;
+                    LNK.VisitedLinkColor = TextColor;
+
+                }
+                else if (ctl.GetType() == typeof(BackstageView))
+                {
+                    var bsv = ctl as BackstageView;
+
+                    bsv.BackColor = BGColor;
+                    bsv.ButtonsAreaBgColor = ControlBGColor;
+                    bsv.HighlightColor2 = Color.FromArgb(0x94, 0xc1, 0x1f);
+                    bsv.HighlightColor1 = Color.FromArgb(0x40, 0x57, 0x04);
+                    bsv.SelectedTextColor = Color.White;
+                    bsv.UnSelectedTextColor = Color.Gray;
+                    bsv.ButtonsAreaPencilColor = Color.DarkGray;
+                }
+        
+                if (ctl.Controls.Count > 0)
+                    ApplyBurntKermitTheme(ctl, 1);
+            }
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/3DRRadio/app.config b/Tools/ArdupilotMegaPlanner/3DRRadio/app.config
new file mode 100644
index 000000000..8e6552666
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/3DRRadio/app.config
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<configuration>
+  <configSections>
+    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
+  </configSections>
+  <startup useLegacyV2RuntimeActivationPolicy="true"><supportedRuntime version="v2.0.50727"/></startup>
+  <log4net>
+    <appender name="Console" type="log4net.Appender.ConsoleAppender">
+      <layout type="log4net.Layout.PatternLayout">
+        <conversionPattern value="%level %logger - %message%newline" />
+      </layout>
+      <threshold value="INFO"/>
+    </appender>
+    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
+      <file value="3DRRadio.log" />
+      <appendToFile value="true" />
+      <maximumFileSize value="500KB" />
+      <maxSizeRollBackups value="2" />
+      <layout type="log4net.Layout.PatternLayout">
+        <conversionPattern value="%date %5level %logger - %message (%file:%line) [%thread]%newline" />
+      </layout>
+    </appender>
+    <root>
+      <level value="DEBUG" />
+      <appender-ref ref="RollingFile" />
+      <appender-ref ref="Console" />
+    </root>
+  </log4net>
+</configuration>
diff --git a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj
index 660aa3d65..d8d3db4b9 100644
--- a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj
+++ b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj
@@ -45,7 +45,7 @@
     <DefineConstants>TRACE;DEBUG;MAVLINK10cra</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <DocumentationFile>
     </DocumentationFile>
     <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
@@ -61,7 +61,7 @@
     <DefineConstants>TRACE;DEBUG;MAVLINK10cra</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
     <DocumentationFile>
     </DocumentationFile>
     <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
diff --git a/Tools/ArdupilotMegaPlanner/ArdupilotMega.sln b/Tools/ArdupilotMegaPlanner/ArdupilotMega.sln
index 6fe51a332..256d4bb24 100644
--- a/Tools/ArdupilotMegaPlanner/ArdupilotMega.sln
+++ b/Tools/ArdupilotMegaPlanner/ArdupilotMega.sln
@@ -7,6 +7,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Updater", "Updater\Updater.
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "wix", "wix\wix.csproj", "{76374F95-C343-4ACC-B86F-7ECFDD668F46}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "3DRRadio", "3DRRadio\3DRRadio.csproj", "{B8943726-04B0-4477-BFDA-E156A0CD98A4}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -55,6 +57,18 @@ Global
 		{76374F95-C343-4ACC-B86F-7ECFDD668F46}.Release|Win32.ActiveCfg = Release|x86
 		{76374F95-C343-4ACC-B86F-7ECFDD668F46}.Release|x86.ActiveCfg = Release|x86
 		{76374F95-C343-4ACC-B86F-7ECFDD668F46}.Release|x86.Build.0 = Release|x86
+		{B8943726-04B0-4477-BFDA-E156A0CD98A4}.Debug|Any CPU.ActiveCfg = Debug|x86
+		{B8943726-04B0-4477-BFDA-E156A0CD98A4}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{B8943726-04B0-4477-BFDA-E156A0CD98A4}.Debug|Mixed Platforms.Build.0 = Debug|x86
+		{B8943726-04B0-4477-BFDA-E156A0CD98A4}.Debug|Win32.ActiveCfg = Debug|x86
+		{B8943726-04B0-4477-BFDA-E156A0CD98A4}.Debug|x86.ActiveCfg = Debug|x86
+		{B8943726-04B0-4477-BFDA-E156A0CD98A4}.Debug|x86.Build.0 = Debug|x86
+		{B8943726-04B0-4477-BFDA-E156A0CD98A4}.Release|Any CPU.ActiveCfg = Release|x86
+		{B8943726-04B0-4477-BFDA-E156A0CD98A4}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{B8943726-04B0-4477-BFDA-E156A0CD98A4}.Release|Mixed Platforms.Build.0 = Release|x86
+		{B8943726-04B0-4477-BFDA-E156A0CD98A4}.Release|Win32.ActiveCfg = Release|x86
+		{B8943726-04B0-4477-BFDA-E156A0CD98A4}.Release|x86.ActiveCfg = Release|x86
+		{B8943726-04B0-4477-BFDA-E156A0CD98A4}.Release|x86.Build.0 = Release|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/Tools/ArdupilotMegaPlanner/Common.cs b/Tools/ArdupilotMegaPlanner/Common.cs
index 57fd516b8..ffb89d72b 100644
--- a/Tools/ArdupilotMegaPlanner/Common.cs
+++ b/Tools/ArdupilotMegaPlanner/Common.cs
@@ -524,7 +524,7 @@ namespace ArdupilotMega
                         case (int)Common.apmmodes.FLY_BY_WIRE_A:
                         case (int)Common.apmmodes.FLY_BY_WIRE_B:
                             mode.base_mode = (byte)MAVLink.MAV_MODE_FLAG.CUSTOM_MODE_ENABLED;
-                            mode.custom_mode = (uint)(int)Enum.Parse(Common.getModes(), modein);
+                            mode.custom_mode = (uint)EnumTranslator.GetValue<Common.apmmodes>(modein);
                             break;
                         default:
                             MessageBox.Show("No Mode Changed " +  modein);
@@ -544,7 +544,7 @@ namespace ArdupilotMega
                         case (int)Common.ac2modes.CIRCLE:
                         case (int)Common.ac2modes.POSITION:
                             mode.base_mode = (byte)MAVLink.MAV_MODE_FLAG.CUSTOM_MODE_ENABLED;
-                            mode.custom_mode = (uint)(int)Enum.Parse(Common.getModes(), modein);
+                            mode.custom_mode = (uint)EnumTranslator.GetValue<Common.ac2modes>(modein);
                             break;
                         default:
                             MessageBox.Show("No Mode Changed " +  modein);
diff --git a/Tools/ArdupilotMegaPlanner/Comms/CommsSerialPort.cs b/Tools/ArdupilotMegaPlanner/Comms/CommsSerialPort.cs
index ac07fc4a3..568559342 100644
--- a/Tools/ArdupilotMegaPlanner/Comms/CommsSerialPort.cs
+++ b/Tools/ArdupilotMegaPlanner/Comms/CommsSerialPort.cs
@@ -7,7 +7,7 @@ using System.Linq;
 
 namespace ArdupilotMega.Comms
 {
-    class SerialPort : System.IO.Ports.SerialPort,ICommsSerial
+    public class SerialPort : System.IO.Ports.SerialPort,ICommsSerial
     {
         public new void Open()
         {
diff --git a/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackStageViewContentPanel.cs b/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackStageViewContentPanel.cs
index d936dcec1..c74b8a3dd 100644
--- a/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackStageViewContentPanel.cs
+++ b/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackStageViewContentPanel.cs
@@ -15,9 +15,15 @@ namespace ArdupilotMega.Controls.BackstageView
                 FormClosing(this, new FormClosingEventArgs(CloseReason.UserClosing, false));
         }
 
-        public new void OnLoad(EventArgs e)
+        public void DoLoad(EventArgs e)
         {
             base.OnLoad(e);
         }
+
+        public new void OnLoad(EventArgs e)
+        {
+            // this is now done on page load via parent control
+           // base.OnLoad(e);
+        }
     }
 }
diff --git a/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackstageView.cs b/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackstageView.cs
index bb9c99ac2..effe9d5f5 100644
--- a/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackstageView.cs
+++ b/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackstageView.cs
@@ -165,9 +165,11 @@ namespace ArdupilotMega.Controls.BackstageView
             this.pnlPages.Controls.Add(page.Page);
 
             if (_activePage == null)
+            {
                 _activePage = page;
 
-            ActivatePage(page);
+                ActivatePage(page);
+            }
         }
 
         private void CreateLinkButton(BackstageViewPage page)
@@ -202,6 +204,12 @@ namespace ArdupilotMega.Controls.BackstageView
         public void ActivatePage(BackstageViewPage associatedPage)
         {
             // deactivate the old page
+            _activePage.Page.Close();
+            Pages.ForEach(x =>
+            {
+                x.Page.Visible = false;
+            });
+
             _activePage.Page.Visible = false;
             var oldButton = this.pnlMenu.Controls.OfType<BackstageViewButton>().Single(b => b.Tag == _activePage);
             oldButton.IsSelected = false;
@@ -212,7 +220,7 @@ namespace ArdupilotMega.Controls.BackstageView
 
             _activePage = associatedPage;
 
-            _activePage.Page.OnLoad(new EventArgs());
+            _activePage.Page.DoLoad(new EventArgs());
         }
 
         public void Close()
diff --git a/Tools/ArdupilotMegaPlanner/Controls/ConfigPanel.cs b/Tools/ArdupilotMegaPlanner/Controls/ConfigPanel.cs
index 539183f9b..10bdba60b 100644
--- a/Tools/ArdupilotMegaPlanner/Controls/ConfigPanel.cs
+++ b/Tools/ArdupilotMegaPlanner/Controls/ConfigPanel.cs
@@ -35,6 +35,8 @@ namespace ArdupilotMega.Controls
             // process hashdefines and update display
             foreach (string value in MainV2.comPort.param.Keys)
             {
+                if (value == null) // older ap vesion have a null param
+                    continue;
                 Control[] text = this.Controls.Find(value, true);
                 foreach (Control ctl in text)
                 {
diff --git a/Tools/ArdupilotMegaPlanner/CurrentState.cs b/Tools/ArdupilotMegaPlanner/CurrentState.cs
index 95c47e388..b15dccf96 100644
--- a/Tools/ArdupilotMegaPlanner/CurrentState.cs
+++ b/Tools/ArdupilotMegaPlanner/CurrentState.cs
@@ -312,7 +312,7 @@ namespace ArdupilotMega
         {
             mode = "";
             messages = new List<string>();
-            rateattitude = 3;
+            rateattitude = 10;
             rateposition = 3;
             ratestatus = 3;
             ratesensors = 3;
@@ -373,7 +373,7 @@ namespace ArdupilotMega
 
                 byte[] bytearray = mavinterface.packets[MAVLink.MAVLINK_MSG_ID_RC_CHANNELS_SCALED];
 
-                if (bytearray != null) // hil
+                if (bytearray != null) // hil mavlink 0.9
                 {
                     var hil = bytearray.ByteArrayToStructure<MAVLink.mavlink_rc_channels_scaled_t>(6);
 
@@ -389,6 +389,20 @@ namespace ArdupilotMega
                     //MAVLink.packets[MAVLink.MAVLINK_MSG_ID_RC_CHANNELS_SCALED] = null;
                 }
 
+                bytearray = mavinterface.packets[MAVLink.MAVLINK_MSG_ID_HIL_CONTROLS];
+
+                if (bytearray != null) // hil mavlink 0.9 and 1.0
+                {
+                    var hil = bytearray.ByteArrayToStructure<MAVLink.mavlink_hil_controls_t>(6);
+
+                    hilch1 = (int)(hil.roll_ailerons * 10000);
+                    hilch2 = (int)(hil.pitch_elevator * 10000);
+                    hilch3 = (int)(hil.throttle * 10000);
+                    hilch4 = (int)(hil.yaw_rudder * 10000);
+
+                    //MAVLink.packets[MAVLink.MAVLINK_MSG_ID_RC_CHANNELS_SCALED] = null;
+                }
+
                 bytearray = mavinterface.packets[MAVLink.MAVLINK_MSG_ID_NAV_CONTROLLER_OUTPUT];
 
                 if (bytearray != null)
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibrationPlane.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibrationPlane.cs
index 5c08a8ab7..106cef017 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibrationPlane.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibrationPlane.cs
@@ -68,7 +68,7 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
             {
 #if MAVLINK10             
                             int fixme; // needs to be accel only    
-                            MainV2.comPort.doCommand(MAVLink.MAV_CMD.PREFLIGHT_CALIBRATION,1,1,1,1,1,1,1);
+                            MainV2.comPort.doCommand(MAVLink.MAV_CMD.PREFLIGHT_CALIBRATION,1,1,1,0,0,0,0);
 #else
                 MainV2.comPort.doAction(MAVLink.MAV_ACTION.MAV_ACTION_CALIBRATE_ACC);
 #endif
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFriendlyParams.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFriendlyParams.cs
index d44d880a7..1b1529a14 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFriendlyParams.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFriendlyParams.cs
@@ -149,64 +149,6 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
 
         #region Methods
 
-        /// <summary>
-        /// Loads the param file.
-        /// </summary>
-        /// <param name="Filename">The filename.</param>
-        /// <returns></returns>
-        private Hashtable loadParamFile(string Filename)
-        {
-            Hashtable param = new Hashtable();
-
-            StreamReader sr = new StreamReader(Filename);
-            while (!sr.EndOfStream)
-            {
-                string line = sr.ReadLine();
-
-                if (line.Contains("NOTE:"))
-                    CustomMessageBox.Show(line, "Saved Note");
-
-                if (line.StartsWith("#"))
-                    continue;
-
-                string[] items = line.Split(new char[] { ' ', ',', '\t' }, StringSplitOptions.RemoveEmptyEntries);
-
-                if (items.Length != 2)
-                    continue;
-
-                string name = items[0];
-                float value = float.Parse(items[1], new System.Globalization.CultureInfo("en-US"));
-
-                MAVLink.modifyParamForDisplay(true, name, ref value);
-
-                if (name == "SYSID_SW_MREV")
-                    continue;
-                if (name == "WP_TOTAL")
-                    continue;
-                if (name == "CMD_TOTAL")
-                    continue;
-                if (name == "FENCE_TOTAL")
-                    continue;
-                if (name == "SYS_NUM_RESETS")
-                    continue;
-                if (name == "ARSPD_OFFSET")
-                    continue;
-                if (name == "GND_ABS_PRESS")
-                    continue;
-                if (name == "GND_TEMP")
-                    continue;
-                if (name == "CMD_INDEX")
-                    continue;
-                if (name == "LOG_LASTFILE")
-                    continue;
-
-                param[name] = value;
-            }
-            sr.Close();
-
-            return param;
-        }
-
         /// <summary>
         /// Sorts the param list.
         /// </summary>
@@ -241,6 +183,11 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
         {
             tableLayoutPanel1.Controls.Clear();
             if (_params == null || _params.Count == 0) SortParamList();
+
+            // get the params if nothing exists already
+            if (_params != null && _params.Count == 0)
+                Utilities.ParameterMetaDataParser.GetParameterInformation();
+
             _params.ForEach(x => 
          {
             if(!String.IsNullOrEmpty(x.Key))
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs
index 36e947d99..c03769dde 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/FlightData.cs
@@ -1180,7 +1180,7 @@ namespace ArdupilotMega.GCSViews
             {
                 ((Button)sender).Enabled = false;
 #if MAVLINK10
-				MainV2.comPort.setMode("AUTO");
+				MainV2.comPort.setMode("Auto");
 #else
                 comPort.doAction(MAVLink.MAV_ACTION.MAV_ACTION_SET_AUTO);
 #endif
@@ -1210,7 +1210,7 @@ namespace ArdupilotMega.GCSViews
             {
                 ((Button)sender).Enabled = false;
 #if MAVLINK10
-				MainV2.comPort.setMode("MANUAL");
+				MainV2.comPort.setMode("Manual");
 #else
                 comPort.doAction(MAVLink.MAV_ACTION.MAV_ACTION_SET_MANUAL);
 #endif
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs
index 307090fb1..07871632a 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/Simulation.cs
@@ -1210,11 +1210,22 @@ namespace ArdupilotMega.GCSViews
 
             TimeSpan gpsspan = DateTime.Now - lastgpsupdate;
 
+            // add gps delay
             if (gpsspan.TotalMilliseconds >= GPS_rate)
             {
                 lastgpsupdate = DateTime.Now;
-                oldgps = gps;
-                //comPort.sendPacket(gps);
+
+                // save current fix = 3
+                gpsbuffer[gpsbufferindex % gpsbuffer.Length] = gps;
+
+                //                Console.WriteLine((gpsbufferindex % gpsbuffer.Length) + " " + ((gpsbufferindex + (gpsbuffer.Length - 1)) % gpsbuffer.Length));
+
+                // return buffer index + 5 = (3 + 5) = 8 % 6 = 2
+                oldgps = gpsbuffer[(gpsbufferindex + (gpsbuffer.Length - 1)) % gpsbuffer.Length];
+
+                //comPort.sendPacket(oldgps);
+
+                gpsbufferindex++;
             }
 
 
@@ -1226,8 +1237,8 @@ namespace ArdupilotMega.GCSViews
             hilstate.roll = att.roll;
             hilstate.rollspeed = att.rollspeed;
             hilstate.time_usec = gps.time_usec;
-            hilstate.vx = (short)(gps.vel * Math.Sin(oldgps.cog / 100.0 * deg2rad));
-            hilstate.vy = (short)(gps.vel * Math.Cos(oldgps.cog / 100.0 * deg2rad));
+            hilstate.vx = (short)(gps.vel * Math.Sin(gps.cog / 100.0 * deg2rad));
+            hilstate.vy = (short)(gps.vel * Math.Cos(gps.cog / 100.0 * deg2rad));
             hilstate.vz = 0;
             hilstate.xacc = imu.xacc;
             hilstate.yacc = imu.yacc;
@@ -1237,6 +1248,8 @@ namespace ArdupilotMega.GCSViews
 
             comPort.sendPacket(hilstate);
 
+//            comPort.sendPacket(oldgps);
+
             comPort.sendPacket(asp);
 			
 #else
@@ -1266,6 +1279,7 @@ namespace ArdupilotMega.GCSViews
 
             TimeSpan gpsspan = DateTime.Now - lastgpsupdate;
 
+            // add gps delay
             if (gpsspan.TotalMilliseconds >= GPS_rate)
             {
                 lastgpsupdate = DateTime.Now;
diff --git a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs
index c7eff29d4..f87006bf3 100644
--- a/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs
+++ b/Tools/ArdupilotMegaPlanner/Properties/AssemblyInfo.cs
@@ -34,5 +34,5 @@ using System.Resources;
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyVersion("1.1.*")]
-[assembly: AssemblyFileVersion("1.1.80")]
+[assembly: AssemblyFileVersion("1.1.81")]
 [assembly: NeutralResourcesLanguageAttribute("")]
diff --git a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs
index 48a557bae..3d55bb84b 100644
--- a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs
+++ b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs
@@ -11,6 +11,8 @@ using System.IO;
 using ArdupilotMega.Controls.BackstageView;
 using ArdupilotMega.Arduino;
 using ArdupilotMega.Comms;
+using log4net;
+using System.Reflection;
 
 namespace ArdupilotMega
 {
@@ -22,6 +24,8 @@ namespace ArdupilotMega
 
         string firmwarefile = Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + "radio.hm_trp.hex";
 
+        private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
         public _3DRradio()
         {
             InitializeComponent();
@@ -34,7 +38,7 @@ namespace ArdupilotMega
         {
             // was https://raw.github.com/tridge/SiK/master/Firmware/dst/radio.hm_trp.hex
             // now http://www.samba.org/tridge/UAV/3DR/radio.hm_trp.hex
-
+            
             return Common.getFilefromNet("http://www.samba.org/tridge/UAV/3DR/radio.hm_trp.hex", firmwarefile);
         }
 
@@ -118,7 +122,7 @@ namespace ArdupilotMega
                         {
                             comPort.Write("AT&UPDATE\r\n");
                             string left = comPort.ReadExisting();
-                            Console.WriteLine(left);
+                            log.Info(left);
                             Sleep(700);
                             comPort.BaudRate = 115200;
                         }
@@ -165,6 +169,7 @@ namespace ArdupilotMega
                 {
                     Console.Write(message);
                     lbl_status.Text = message;
+                    log.Info(message);
                     Application.DoEvents();
                 }
             }
@@ -179,6 +184,7 @@ namespace ArdupilotMega
                 {
                     lbl_status.Text = message;
                     Console.WriteLine(message);
+                    log.Info(message);
                     Application.DoEvents();
                 }
             }
@@ -477,7 +483,7 @@ namespace ArdupilotMega
                         }
                         else
                         {
-                            Console.WriteLine("Odd config line :" + item);
+                            log.Info("Odd config line :" + item);
                         }
                     }
                 }
@@ -534,7 +540,7 @@ namespace ArdupilotMega
             // ignore all existing data
             comPort.DiscardInBuffer();
             lbl_status.Text = "Doing Command " + cmd;
-            Console.WriteLine("Doing Command " + cmd);
+            log.Info("Doing Command " + cmd);
             // write command
             comPort.Write(cmd + "\r\n");
             // read echoed line or existing data
@@ -544,7 +550,7 @@ namespace ArdupilotMega
                 temp = Serial_ReadLine(comPort);
             }
             catch { temp = comPort.ReadExisting(); }
-            Console.WriteLine("cmd " + cmd + " echo " + temp);
+            log.Info("cmd " + cmd + " echo " + temp);
             // delay for command
             Sleep(500);
             // get responce
@@ -564,7 +570,7 @@ namespace ArdupilotMega
                 }
             }
 
-            Console.WriteLine("responce " + level + " " + ans.Replace('\0', ' '));
+            log.Info("responce " + level + " " + ans.Replace('\0', ' '));
 
             // try again
             if (ans == "" && level == 0)
@@ -586,9 +592,9 @@ namespace ArdupilotMega
             // wait
             Sleep(1100);
             // check for config responce "OK"
-            Console.WriteLine("Connect btr " + comPort.BytesToRead + " baud " + comPort.BaudRate);
+            log.Info("Connect btr " + comPort.BytesToRead + " baud " + comPort.BaudRate);
             string conn = comPort.ReadExisting();
-            Console.WriteLine("Connect first responce " + conn.Replace('\0', ' ') + " " + conn.Length);
+            log.Info("Connect first responce " + conn.Replace('\0', ' ') + " " + conn.Length);
             if (conn.Contains("OK"))
             {
                 //return true;
@@ -601,7 +607,7 @@ namespace ArdupilotMega
 
             string version = doCommand(comPort, "ATI");
 
-            Console.Write("Connect Version: " + version.Trim() + "\n");
+            log.Info("Connect Version: " + version.Trim() + "\n");
 
             if (version.Contains("SiK") && version.Contains("on")) // should use a regex....
             {
diff --git a/Tools/ArdupilotMegaPlanner/Utilities/ParameterMetaDataRepository.cs b/Tools/ArdupilotMegaPlanner/Utilities/ParameterMetaDataRepository.cs
index 2f118a36f..898b69a37 100644
--- a/Tools/ArdupilotMegaPlanner/Utilities/ParameterMetaDataRepository.cs
+++ b/Tools/ArdupilotMegaPlanner/Utilities/ParameterMetaDataRepository.cs
@@ -17,8 +17,13 @@ namespace ArdupilotMega.Utilities
       public ParameterMetaDataRepository()
       {
          string paramMetaDataXMLFileName = String.Format("{0}\\{1}", Application.StartupPath, ConfigurationManager.AppSettings["ParameterMetaDataXMLFileName"]);
-         if (File.Exists(paramMetaDataXMLFileName))
-            _parameterMetaDataXML = XDocument.Load(paramMetaDataXMLFileName);
+         try
+         {
+             if (File.Exists(paramMetaDataXMLFileName))
+                 _parameterMetaDataXML = XDocument.Load(paramMetaDataXMLFileName);
+
+         }
+         catch { } // Exception System.Xml.XmlException: Root element is missing.
       }
 
       /// <summary>
@@ -33,19 +38,23 @@ namespace ArdupilotMega.Utilities
          {
             // Use this to find the endpoint node we are looking for
             // Either it will be pulled from a file in the ArduPlane hierarchy or the ArduCopter hierarchy
-            var element = _parameterMetaDataXML.Element("Params").Element(MainV2.cs.firmware.ToString());
-            if(element != null && element.HasElements)
-            {
-               var node = element.Element(nodeKey);
-               if(node != null && node.HasElements)
-               {
-                  var metaValue = node.Element(metaKey);
-                  if(metaValue != null)
-                  {
-                     return metaValue.Value;
-                  }
-               }
-            }
+             try
+             {
+                 var element = _parameterMetaDataXML.Element("Params").Element(MainV2.cs.firmware.ToString());
+                 if (element != null && element.HasElements)
+                 {
+                     var node = element.Element(nodeKey);
+                     if (node != null && node.HasElements)
+                     {
+                         var metaValue = node.Element(metaKey);
+                         if (metaValue != null)
+                         {
+                             return metaValue.Value;
+                         }
+                     }
+                 }
+             }
+             catch { } // Exception System.ArgumentException: '' is an invalid expanded name.
          }
          return string.Empty;
       }
-- 
GitLab