diff --git a/.github/workflows/build.bat b/.github/workflows/build.bat index 30ef46e..63c1702 100644 --- a/.github/workflows/build.bat +++ b/.github/workflows/build.bat @@ -5,11 +5,17 @@ if exist bin rd /s /q bin if exist lib rd /s /q lib if exist ucxxrt rd /s /q ucxxrt -"%PROGRAMFILES(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" /p:Configuration=Release /p:Platform=x64 ..\..\ucxxrt.sln -t:ucxxrt "%PROGRAMFILES(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" /p:Configuration=Release /p:Platform=x86 ..\..\ucxxrt.sln -t:ucxxrt +"%PROGRAMFILES(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" /p:Configuration=Debug /p:Platform=x86 ..\..\ucxxrt.sln -t:ucxxrt + +"%PROGRAMFILES(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" /p:Configuration=Release /p:Platform=x64 ..\..\ucxxrt.sln -t:ucxxrt +"%PROGRAMFILES(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" /p:Configuration=Debug /p:Platform=x64 ..\..\ucxxrt.sln -t:ucxxrt + +"%PROGRAMFILES(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" /p:Configuration=Release /p:Platform=ARM ..\..\ucxxrt.sln -t:ucxxrt +"%PROGRAMFILES(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" /p:Configuration=Debug /p:Platform=ARM ..\..\ucxxrt.sln -t:ucxxrt -"%PROGRAMFILES(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" /p:Configuration=Debug /p:Platform=x64 ..\..\ucxxrt.sln -t:ucxxrt -"%PROGRAMFILES(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" /p:Configuration=Debug /p:Platform=x86 ..\..\ucxxrt.sln -t:ucxxrt +"%PROGRAMFILES(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" /p:Configuration=Release /p:Platform=ARM64 ..\..\ucxxrt.sln -t:ucxxrt +"%PROGRAMFILES(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" /p:Configuration=Debug /p:Platform=ARM64 ..\..\ucxxrt.sln -t:ucxxrt :exit popd diff --git a/inc/malloc.h b/inc/malloc_tag.h similarity index 100% rename from inc/malloc.h rename to inc/malloc_tag.h diff --git a/inc/new_user.h b/inc/new_tag.h similarity index 100% rename from inc/new_user.h rename to inc/new_tag.h diff --git a/vsproject/ucxxrt.test.vcxproj b/msvc/ucxxrt.test.vcxproj similarity index 83% rename from vsproject/ucxxrt.test.vcxproj rename to msvc/ucxxrt.test.vcxproj index 3a662be..2448684 100644 --- a/vsproject/ucxxrt.test.vcxproj +++ b/msvc/ucxxrt.test.vcxproj @@ -51,7 +51,8 @@ WindowsKernelModeDriver10.0 Driver WDM - Desktop + Universal + Spectre Windows10 @@ -59,7 +60,8 @@ WindowsKernelModeDriver10.0 Driver WDM - Desktop + Universal + Spectre Windows10 @@ -67,7 +69,8 @@ WindowsKernelModeDriver10.0 Driver WDM - Desktop + Universal + Spectre Windows10 @@ -75,7 +78,8 @@ WindowsKernelModeDriver10.0 Driver WDM - Desktop + Universal + Spectre Windows10 @@ -83,7 +87,8 @@ WindowsKernelModeDriver10.0 Driver WDM - Desktop + Universal + Spectre Windows10 @@ -91,7 +96,8 @@ WindowsKernelModeDriver10.0 Driver WDM - Desktop + Universal + Spectre Windows10 @@ -99,7 +105,8 @@ WindowsKernelModeDriver10.0 Driver WDM - Desktop + Universal + Spectre Windows10 @@ -107,7 +114,8 @@ WindowsKernelModeDriver10.0 Driver WDM - Desktop + Universal + Spectre @@ -116,28 +124,28 @@ - + - + - + - + - + - + - + - + @@ -188,6 +196,7 @@ sha256 + @@ -195,6 +204,7 @@ sha256 + @@ -204,6 +214,7 @@ sha256 + @@ -211,20 +222,28 @@ sha256 + + + + + + + + + + + + + - - - - + - - {8d969184-788f-48aa-bf18-2898fc167c91} - + diff --git a/vsproject/ucxxrt.test.vcxproj.filters b/msvc/ucxxrt.test.vcxproj.filters similarity index 80% rename from vsproject/ucxxrt.test.vcxproj.filters rename to msvc/ucxxrt.test.vcxproj.filters index 3d8a93b..bc0e33d 100644 --- a/vsproject/ucxxrt.test.vcxproj.filters +++ b/msvc/ucxxrt.test.vcxproj.filters @@ -7,13 +7,11 @@ - + src - - src - + \ No newline at end of file diff --git a/msvc/ucxxrt.vcxproj b/msvc/ucxxrt.vcxproj new file mode 100644 index 0000000..167ed47 --- /dev/null +++ b/msvc/ucxxrt.vcxproj @@ -0,0 +1,807 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + Debug + ARM + + + Release + ARM + + + Debug + ARM64 + + + Release + ARM64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + + + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Document + true + true + true + true + true + true + + + Document + true + true + true + true + true + true + + + Document + true + true + true + true + true + true + + + Document + true + true + true + true + true + true + + + Document + true + true + true + true + true + true + + + Document + true + true + true + true + true + true + + + Document + true + true + true + true + true + true + + + Document + true + true + true + true + true + true + + + + + Document + true + true + true + true + true + true + + + Document + true + true + true + true + true + true + + + Document + true + true + true + true + true + true + + + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + true + true + true + true + true + true + + + + {8D969184-788F-48AA-BF18-2898FC167C91} + {0a049372-4c4d-4ea0-a64e-dc6ad88ceca1} + v4.5 + 12.0 + Debug + Win32 + ucxxrt_kernel + ExportDriver + ucxxrt + + + + Windows10 + true + WindowsKernelModeDriver10.0 + StaticLibrary + Unicode + 1 + Universal + Spectre + + + Windows10 + false + WindowsKernelModeDriver10.0 + StaticLibrary + Unicode + 1 + Universal + Spectre + + + Windows10 + true + WindowsKernelModeDriver10.0 + StaticLibrary + Unicode + 1 + Universal + Spectre + + + Windows10 + false + WindowsKernelModeDriver10.0 + StaticLibrary + Unicode + 1 + Universal + Spectre + + + Windows10 + true + WindowsKernelModeDriver10.0 + StaticLibrary + Unicode + 1 + Universal + Spectre + + + Windows10 + false + WindowsKernelModeDriver10.0 + StaticLibrary + Unicode + 1 + Universal + Spectre + + + Windows10 + true + WindowsKernelModeDriver10.0 + StaticLibrary + Unicode + 1 + Universal + Spectre + + + Windows10 + false + WindowsKernelModeDriver10.0 + StaticLibrary + Unicode + 1 + Universal + Spectre + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + false + + + + + + + + false + + + + + + + + false + + + + + + + \ No newline at end of file diff --git a/msvc/ucxxrt.vcxproj.filters b/msvc/ucxxrt.vcxproj.filters new file mode 100644 index 0000000..cedb95b --- /dev/null +++ b/msvc/ucxxrt.vcxproj.filters @@ -0,0 +1,784 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + h;hpp;hxx;hm;inl;inc;xsd;cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {f0ada0f1-1c9e-4e86-97f0-f93fb362aee4} + + + {4b03a16b-93fb-434c-950f-467d7dc15c02} + + + {d4ce7517-e5f4-48c9-8d2e-6da0cc4659f1} + + + {b25f4921-1647-4f61-a536-cb201f09c833} + + + {6a3f382b-ac00-414d-8a86-267e2a748b7a} + + + {0071d97c-1979-4b8a-b5d6-f8a5c0f0fa15} + + + {b7322c1c-08cc-441a-b3a0-192f0dded357} + + + {e1fc29b7-35cb-4dec-9049-0d72f85f9ed8} + + + {8a13a5c8-6a3f-4f0b-a9f1-7202d66baeb0} + + + {94aa2a52-3958-4e4e-a4dd-fa8ea7f32081} + + + {617b7471-9d4f-4df9-b7af-fee21c064cfe} + + + {7e4bf0b0-eac0-4728-bdab-d544cba69f85} + + + {36b98cc6-453d-45ca-ba66-7288a2bc1ce6} + + + {3a99c57a-6c2b-4b3e-bdf7-ddb1cb9c3ee8} + + + {8720b7e1-50de-4747-9eca-2ef4ea560fca} + + + {b1ae36f0-e82c-4518-bc71-a86e38c8a9d5} + + + + + ucxxrt + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\ucrt\inc + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + + + ucxxrt + + + ucxxrt\ucrt\inc\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\vcruntime + + + + + ucxxrt\ucrt\heap + + + ucxxrt\ucrt\heap + + + ucxxrt\ucrt\heap + + + ucxxrt\ucrt\misc + + + ucxxrt\ucrt\misc + + + ucxxrt\ucrt\misc + + + ucxxrt\ucrt\misc + + + ucxxrt\ucrt\stdlib + + + ucxxrt\ucrt\stdlib + + + ucxxrt\ucrt\stdlib + + + ucxxrt\ucrt\stdlib + + + ucxxrt\ucrt\stdlib + + + ucxxrt\ucrt\stdlib + + + ucxxrt\ucrt\stdlib + + + ucxxrt\ucrt\stdlib + + + ucxxrt\ucrt\stdlib + + + ucxxrt\ucrt\stdlib + + + ucxxrt\ucrt\stdlib + + + ucxxrt\ucrt\stdio + + + ucxxrt\ucrt\startup + + + ucxxrt\crt\arm + + + ucxxrt\crt\arm + + + ucxxrt\crt\arm64 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\x64 + + + ucxxrt\crt\x64 + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\crt\stl + + + ucxxrt\ucrt\startup + + + ucxxrt\ucrt\startup + + + ucxxrt\ucrt\internal + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + ucxxrt\ucrt\misc + + + ucxxrt\ucrt\startup + + + ucxxrt\ucrt\internal + + + ucxxrt\ucrt\internal + + + ucxxrt\crt\vcruntime + + + ucxxrt\ucrt\startup + + + ucxxrt\ucrt\internal + + + ucxxrt\ucrt\misc + + + ucxxrt\ucrt\heap + + + ucxxrt\ucrt\heap + + + ucxxrt\ucrt\heap + + + ucxxrt\ucrt\heap + + + ucxxrt\ucrt\heap + + + ucxxrt\ucrt\heap + + + ucxxrt\ucrt\heap + + + ucxxrt\ucrt\heap + + + ucxxrt\ucrt\heap + + + ucxxrt\ucrt\heap + + + ucxxrt\ucrt\heap + + + ucxxrt\ucrt\heap + + + ucxxrt + + + ucxxrt\crt\vcruntime + + + ucxxrt\crt\vcruntime + + + + + ucxxrt\crt\arm + + + ucxxrt\crt\arm + + + ucxxrt\crt\arm + + + ucxxrt\crt\arm + + + ucxxrt\crt\arm + + + ucxxrt\crt\arm + + + ucxxrt\crt\arm + + + ucxxrt\crt\arm + + + ucxxrt\crt\arm64 + + + ucxxrt\crt\arm64 + + + ucxxrt\crt\arm64 + + + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\i386 + + + ucxxrt\crt\x64 + + + \ No newline at end of file diff --git a/src/Licenses/sdk_arm_license.rtf b/src/Licenses/sdk_arm_license.rtf new file mode 100644 index 0000000..f61ad3c --- /dev/null +++ b/src/Licenses/sdk_arm_license.rtf @@ -0,0 +1,522 @@ +{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff38\deff0\stshfdbch11\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033\themelang1033\themelangfe2052\themelangcs1025{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;} +{\f11\fbidi \froman\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f13\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt \'cb\'ce\'cc\'e5};} +{\f34\fbidi \froman\fcharset1\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f39\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Trebuchet MS;} +{\f40\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@SimSun;}{\f41\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}@MS Mincho;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\fdbmajor\f31501\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt \'cb\'ce\'cc\'e5};}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;} +{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\fdbminor\f31505\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt \'cb\'ce\'cc\'e5};}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} +{\fbiminor\f31507\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}{\f42\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f43\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\f45\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f46\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f47\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f48\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\f49\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f50\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f62\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f63\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;} +{\f65\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f66\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f67\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f68\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);} +{\f69\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f70\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f174\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt \'cb\'ce\'cc\'e5};}{\f422\fbidi \fswiss\fcharset238\fprq2 Tahoma CE;} +{\f423\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f425\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek;}{\f426\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur;}{\f427\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);} +{\f428\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f429\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f430\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f431\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai);} +{\f432\fbidi \fswiss\fcharset238\fprq2 Trebuchet MS CE;}{\f433\fbidi \fswiss\fcharset204\fprq2 Trebuchet MS Cyr;}{\f435\fbidi \fswiss\fcharset161\fprq2 Trebuchet MS Greek;}{\f436\fbidi \fswiss\fcharset162\fprq2 Trebuchet MS Tur;} +{\f439\fbidi \fswiss\fcharset186\fprq2 Trebuchet MS Baltic;}{\f444\fbidi \fnil\fcharset0\fprq2 @SimSun Western;}{\f454\fbidi \fmodern\fcharset0\fprq1 @MS Mincho Western;}{\f452\fbidi \fmodern\fcharset238\fprq1 @MS Mincho CE;} +{\f453\fbidi \fmodern\fcharset204\fprq1 @MS Mincho Cyr;}{\f455\fbidi \fmodern\fcharset161\fprq1 @MS Mincho Greek;}{\f456\fbidi \fmodern\fcharset162\fprq1 @MS Mincho Tur;}{\f459\fbidi \fmodern\fcharset186\fprq1 @MS Mincho Baltic;} +{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} +{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31520\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt \'cb\'ce\'cc\'e5};} +{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;} +{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fdbminor\f31560\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt \'cb\'ce\'cc\'e5};}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;} +{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;} +{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\fbiminor\f31579\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;} +{\fbiminor\f31581\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\fbiminor\f31582\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\fbiminor\f31583\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);} +{\fbiminor\f31584\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\fbiminor\f31585\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\fbiminor\f31586\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255; +\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0; +\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \fs22\dbch\af11 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{ +\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 +\snext0 \sautoupd \sqformat \spriority0 Normal;}{\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls10\outlinelevel0\adjustright\rin0\lin357\itap0 \rtlch\fcs1 \ab\af38\afs20\alang1025 \ltrch\fcs0 +\b\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext1 \slink50 \sqformat heading 1;}{\s2\ql \fi-363\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \ab\af38\afs20\alang1025 \ltrch\fcs0 \b\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext2 \slink16 \sqformat heading 2;}{\s3\ql \li0\ri0\sb120\sa120\widctlpar\tx1077\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext3 \slink17 \sqformat heading 3;}{\s4\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar +\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl3\outlinelevel3\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext4 \slink18 \sqformat heading 4;}{\s5\ql \fi-357\li1792\ri0\sb120\sa120\widctlpar\tx1792\jclisttab\tx2155\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl4\outlinelevel4\adjustright\rin0\lin1792\itap0 \rtlch\fcs1 \af38\afs20\alang1025 +\ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext5 \slink19 \sqformat heading 5;}{\s6\ql \fi-357\li2149\ri0\sb120\sa120\widctlpar +\jclisttab\tx2152\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl5\outlinelevel5\adjustright\rin0\lin2149\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext6 \slink20 \sqformat heading 6;}{\s7\ql \fi-357\li2506\ri0\sb120\sa120\widctlpar\jclisttab\tx2509\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl6\outlinelevel6\adjustright\rin0\lin2506\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext7 \slink21 \sqformat heading 7;}{\s8\ql \fi-357\li2863\ri0\sb120\sa120\widctlpar +\jclisttab\tx2866\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl7\outlinelevel7\adjustright\rin0\lin2863\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext8 \slink22 \sqformat heading 8;}{\s9\ql \fi-358\li3221\ri0\sb120\sa120\widctlpar\jclisttab\tx3223\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl8\outlinelevel8\adjustright\rin0\lin3221\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext9 \slink23 \sqformat heading 9;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* +\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}{ +\s15\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar\jclisttab\tx1080\wrapdefault\aspalpha\aspnum\faauto\ls13\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\ul\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon35 \snext15 \sautoupd Bullet 3 Underline;}{\*\cs16 \additive \rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20 \sbasedon10 \slink2 \slocked Heading 2 Char;} +{\*\cs17 \additive \rtlch\fcs1 \ab\af31503\afs26 \ltrch\fcs0 \b\fs26\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink3 \slocked \ssemihidden \spriority9 Heading 3 Char;}{\*\cs18 \additive \rtlch\fcs1 \ab\af31507\afs28 \ltrch\fcs0 +\b\fs28\loch\f31506\hich\af31506\dbch\af31505 \sbasedon10 \slink4 \slocked \ssemihidden \spriority9 Heading 4 Char;}{\*\cs19 \additive \rtlch\fcs1 \ab\ai\af31507\afs26 \ltrch\fcs0 \b\i\fs26\loch\f31506\hich\af31506\dbch\af31505 +\sbasedon10 \slink5 \slocked \ssemihidden \spriority9 Heading 5 Char;}{\*\cs20 \additive \rtlch\fcs1 \ab\af31507 \ltrch\fcs0 \b\loch\f31506\hich\af31506\dbch\af31505 \sbasedon10 \slink6 \slocked \ssemihidden \spriority9 Heading 6 Char;}{\*\cs21 \additive +\rtlch\fcs1 \af31507\afs24 \ltrch\fcs0 \fs24\loch\f31506\hich\af31506\dbch\af31505 \sbasedon10 \slink7 \slocked \ssemihidden \spriority9 Heading 7 Char;}{\*\cs22 \additive \rtlch\fcs1 \ai\af31507\afs24 \ltrch\fcs0 +\i\fs24\loch\f31506\hich\af31506\dbch\af31505 \sbasedon10 \slink8 \slocked \ssemihidden \spriority9 Heading 8 Char;}{\*\cs23 \additive \rtlch\fcs1 \af31503 \ltrch\fcs0 \loch\f31502\hich\af31502\dbch\af31501 +\sbasedon10 \slink9 \slocked \ssemihidden \spriority9 Heading 9 Char;}{\s24\ql \li357\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin357\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext24 Body 1;}{\s25\ql \li720\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af38\afs20\alang1025 +\ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext25 Body 2;}{\s26\ql \li1077\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 +\af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext26 Body 3;}{ +\s27\ql \li1435\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext27 Body 4;}{\s28\ql \li1803\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1803\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext28 Body 5;}{\s29\ql \li2160\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2160\itap0 \rtlch\fcs1 +\af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext29 Body 6;}{ +\s30\ql \li2506\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2506\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext30 Body 7;}{\s31\ql \li2863\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2863\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext31 Body 8;}{\s32\ql \li3221\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin3221\itap0 \rtlch\fcs1 +\af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext32 Body 9;}{\s33\ql \fi-357\li357\ri0\sb120\sa120\widctlpar +\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin357\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext33 Bullet 1;}{ +\s34\ql \fi-363\li720\ri0\sb120\sa120\widctlpar\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext34 Bullet 2;}{\s35\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar\jclisttab\tx1080\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin1077\itap0 +\rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext35 \slink76 Bullet 3;}{\s36\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar +\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext36 Bullet 4;}{ +\s37\ql \fi-357\li1792\ri0\sb120\sa120\widctlpar\jclisttab\tx1795\wrapdefault\aspalpha\aspnum\faauto\ls5\adjustright\rin0\lin1792\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext37 Bullet 5;}{\s38\ql \fi-357\li2149\ri0\sb120\sa120\widctlpar\jclisttab\tx2152\wrapdefault\aspalpha\aspnum\faauto\ls6\adjustright\rin0\lin2149\itap0 +\rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext38 Bullet 6;}{\s39\ql \fi-357\li2506\ri0\sb120\sa120\widctlpar +\jclisttab\tx2509\wrapdefault\aspalpha\aspnum\faauto\ls7\adjustright\rin0\lin2506\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext39 Bullet 7;}{ +\s40\ql \fi-357\li2863\ri0\sb120\sa120\widctlpar\jclisttab\tx2866\wrapdefault\aspalpha\aspnum\faauto\ls8\adjustright\rin0\lin2863\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext40 Bullet 8;}{\s41\ql \fi-358\li3221\ri0\sb120\sa120\widctlpar\jclisttab\tx3223\wrapdefault\aspalpha\aspnum\faauto\ls9\adjustright\rin0\lin3221\itap0 +\rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon32 \snext41 Bullet 9;}{ +\s42\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af38\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext0 Heading EULA;}{\s43\ql \li0\ri0\sb120\sa120\widctlpar\brdrb\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af38\afs28\alang1025 \ltrch\fcs0 +\b\fs28\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Heading Software Title;}{\s44\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 +\ab\af38\afs20\alang1025 \ltrch\fcs0 \b\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext44 \slink80 Preamble;}{\s45\ql \li0\ri0\sb120\sa120\widctlpar\brdrb\brdrs\brdrw10\brsp20 +\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af38\afs20\alang1025 \ltrch\fcs0 \b\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext1 Preamble Border;}{ +\s46\qc \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af38\afs20\alang1025 \ltrch\fcs0 \b\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext46 Heading Warranty;}{\s47\ql \fi-360\li360\ri0\sb120\sa120\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls11\outlinelevel0\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Heading 1 Warranty;}{\s48\ql \fi-360\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls11\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext0 Heading 2 Warranty;}{\*\cs49 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf2 \sbasedon10 Hyperlink;}{\*\cs50 \additive \rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20 \sbasedon10 \slink1 \slocked Heading 1 Char;}{ +\s51\ql \li0\ri0\sa160\sl-240\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext51 Char;}{\s52\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext52 \slink53 \ssemihidden footnote text;}{\*\cs53 \additive \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20 \sbasedon10 \slink52 \slocked \ssemihidden +Footnote Text Char;}{\*\cs54 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \super \sbasedon10 \ssemihidden footnote reference;}{\s55\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 +\af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext55 \slink56 \ssemihidden endnote text;}{\*\cs56 \additive \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20 +\sbasedon10 \slink55 \slocked \ssemihidden Endnote Text Char;}{\*\cs57 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \super \sbasedon10 \ssemihidden endnote reference;}{ +\s58\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext58 \slink59 \ssemihidden annotation text;}{\*\cs59 \additive \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20 \sbasedon10 \slink58 \slocked \ssemihidden Comment Text Char;}{\*\cs60 \additive \rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \fs16 +\sbasedon10 \ssemihidden annotation reference;}{\s61\ql \li0\ri0\sa160\sl-240\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext61 Char11;}{\s62\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar +\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \ab\af38\afs20\alang1025 \ltrch\fcs0 \b\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon3 \snext62 Heading 3 Bold;}{\s63\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\ul\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon36 \snext63 Bullet 4 Underline;}{\s64\ql \li720\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 +\af38\afs20\alang1025 \ltrch\fcs0 \fs20\ul\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon25 \snext64 Body 2 Underline;}{\s65\ql \li0\ri0\sb120\sa120\widctlpar\brdrt\brdrs\brdrw10\brsp20 +\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af38\afs20\alang1025 \ltrch\fcs0 \b\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon44 \snext65 Preamble Border Above;}{\*\cs66 +\additive \v\f2\cf12\sub tw4winMark;}{\s67\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af38\afs20\alang1025 \ltrch\fcs0 +\b\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon58 \snext58 \slink68 \ssemihidden annotation subject;}{\*\cs68 \additive \rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20 +\sbasedon59 \slink67 \slocked \ssemihidden Comment Subject Char;}{\s69\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs16\alang1025 \ltrch\fcs0 +\fs16\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext69 \slink70 \ssemihidden Balloon Text;}{\*\cs70 \additive \rtlch\fcs1 \af38\afs16 \ltrch\fcs0 \f38\fs16 \sbasedon10 \slink69 \slocked \ssemihidden +Balloon Text Char;}{\s71\ql \li0\ri0\sb120\sa120\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext71 \slink72 header;}{\*\cs72 \additive \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20 \sbasedon10 \slink71 \slocked Header Char;}{ +\s73\ql \li0\ri0\sb120\sa120\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext73 \slink74 footer;}{\*\cs74 \additive \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20 \sbasedon10 \slink73 \slocked Footer Char;}{\s75\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar +\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af38\afs19\alang1025 \ltrch\fcs0 \fs19\ul\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon36 \snext75 \spriority0 +Bullet 4 Underlined;}{\*\cs76 \additive \rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \f38\fs20 \sbasedon10 \slink35 \slocked Bullet 3 Char1;}{\s77\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 +\ab\af38\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 \snext0 \slink78 Body 0 Bold;}{\*\cs78 \additive \rtlch\fcs1 \ab\af38\afs19 \ltrch\fcs0 \b\f38\fs19 \sbasedon10 \slink77 \slocked +Body 0 Bold Char;}{\*\cs79 \additive \b\f39 Heading 2 Char1;}{\*\cs80 \additive \rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20 \sbasedon10 \slink44 \slocked Preamble Char;}{\s81\ql \li0\ri0\sb120\sa120\widctlpar\brdrt\brdrs\brdrw10\brsp20 +\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \b\f38\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon44 \snext81 \sautoupd \slink82 Style Preamble + (Complex) Tahoma;}{\* +\cs82 \additive \rtlch\fcs1 \ab0\af38\afs20 \ltrch\fcs0 \b\f38\fs20 \sbasedon80 \slink81 \slocked Style Preamble + (Complex) Tahoma Char;}}{\*\listtable{\list\listtemplateid1367111956{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext +\'00;}{\levelnumbers;}\rtlch\fcs1 \af0 \ltrch\fcs0 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'00;}{\levelnumbers;}\rtlch\fcs1 \af0 \ltrch\fcs0 }{\listlevel\levelnfc0\levelnfcn0 +\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'00;}{\levelnumbers;}\rtlch\fcs1 \af0 \ltrch\fcs0 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext +\'00;}{\levelnumbers;}\rtlch\fcs1 \af0 \ltrch\fcs0 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'00;}{\levelnumbers;}\rtlch\fcs1 \af0 \ltrch\fcs0 }{\listlevel\levelnfc0\levelnfcn0 +\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'00;}{\levelnumbers;}\rtlch\fcs1 \af0 \ltrch\fcs0 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext +\'00;}{\levelnumbers;}\rtlch\fcs1 \af0 \ltrch\fcs0 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'00;}{\levelnumbers;}\rtlch\fcs1 \af0 \ltrch\fcs0 }{\listname ;}\listid-119} +{\list\listtemplateid176468498\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid692200086\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s41\fi-358\li3221 +\jclisttab\tx3223\lin3221 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel +\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691 +\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;} +\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid196815738}{\list\listtemplateid-1793664660{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers +\'01;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0 \b\i0\fbias0 \s47\fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 +\ab\ai0\af0 \ltrch\fcs0 \b\i0\fbias0 \s48\fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 +\fbias0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'03);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li1440 +\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'04);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li1800\jclisttab\tx1800\lin1800 } +{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'05);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0 +\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace0\levelindent0{\leveltext\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listname ;}\listid394402059}{\list\listtemplateid-128834446{\listlevel\levelnfc0\levelnfcn0\leveljc0 +\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af38\afs20 \ltrch\fcs0 \b\i0\f38\fs20\fbias0 \s1\fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0 +\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af38\afs20 \ltrch\fcs0 \b\i0\f38\fs20\fbias0 \s2\fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0 +\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af38\afs20 \ltrch\fcs0 \b\i0\f38\fs20\fbias0 \s62\fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3\levelnfcn3\leveljc0 +\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\strike0\f39\fs20\ulnone\fbias0 \s4\fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1 +\levelnfcn1\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\strike0\f39\fs20\ulnone\fbias0 \s5\fi-357\li1792\jclisttab\tx2155\lin1792 } +{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\f39\fs20\fbias0 \s6\fi-357\li2149\jclisttab\tx2152\lin2149 +}{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\f39\fs20\fbias0 \s7\fi-357\li2506 +\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\f39\fs20\fbias0 \s8\fi-357\li2863 +\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af39\afs20 \ltrch\fcs0 \b0\i0\f39\fs20\fbias0 \s9\fi-358\li3221 +\jclisttab\tx3223\lin3221 }{\listname ;}\listid398796681}{\list\listtemplateid789093748\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid-317712510 +\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s34\fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;} +\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160 +\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 } +{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid477573462}{\list\listtemplateid67698717{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace0\levelindent0{\leveltext\'02\'00);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\'02\'01);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02);}{\levelnumbers\'01;}\rtlch\fcs1 +\af0 \ltrch\fcs0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'03);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1440 +\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'04);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel +\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'05);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0 +\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace0\levelindent0{\leveltext\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listname ;}\listid700712945}{\list\listtemplateid-296591990\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace0\levelindent0{\leveltext\leveltemplateid-48305026\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s40\fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;} +\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600 +\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 } +{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid810947713}{\list\listtemplateid285099256\listhybrid{\listlevel +\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid-308626962\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s15\fi-357\li1077\jclisttab\tx1080\lin1077 }{\listlevel\levelnfc23\levelnfcn23 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;} +\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760 +\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 } +{\listname ;}\listid1121073746}{\list\listtemplateid-1813845996\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid2033377338\'01\u-3913 ?;}{\levelnumbers;} +\f3\fbias0 \s39\fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440 +\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 } +{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1219436735}{\list\listtemplateid-41362566\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid-1175557160\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s36\fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;} +\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600 +\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 } +{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1559511898}{\list\listtemplateid-743794326\listhybrid{\listlevel +\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1229593488\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s35\fi-357\li1077\jclisttab\tx1080\lin1077 }{\listlevel\levelnfc23\levelnfcn23 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;} +\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760 +\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 } +{\listname ;}\listid1567649130}{\list\listtemplateid1363474438\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1637229796\'01\u-3913 ?;}{\levelnumbers;} +\f3\fbias0 \s37\fi-357\li1792\jclisttab\tx1795\lin1792 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440 +\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 } +{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1848404271}{\list\listtemplateid-1802592190\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid961321180\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s38\fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;} +\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600 +\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 } +{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1877695764}{\list\listtemplateid1186249844\listhybrid{\listlevel +\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1182702444\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \s33\fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc23\levelnfcn23 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;} +\f3\fbias0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0 \fi-360\li5760 +\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0 \fi-360\li6480\jclisttab\tx6480\lin6480 } +{\listname ;}\listid2054619191}}{\*\listoverridetable{\listoverride\listid2054619191\listoverridecount0\ls1}{\listoverride\listid477573462\listoverridecount0\ls2}{\listoverride\listid1567649130\listoverridecount0\ls3}{\listoverride\listid1559511898 +\listoverridecount0\ls4}{\listoverride\listid1848404271\listoverridecount0\ls5}{\listoverride\listid1877695764\listoverridecount0\ls6}{\listoverride\listid1219436735\listoverridecount0\ls7}{\listoverride\listid810947713\listoverridecount0\ls8} +{\listoverride\listid196815738\listoverridecount0\ls9}{\listoverride\listid398796681\listoverridecount0\ls10}{\listoverride\listid394402059\listoverridecount0\ls11}{\listoverride\listid700712945\listoverridecount0\ls12}{\listoverride\listid1121073746 +\listoverridecount0\ls13}{\listoverride\listid398796681\listoverridecount0\ls14}{\listoverride\listid398796681\listoverridecount0\ls15}{\listoverride\listid1567649130\listoverridecount0\ls16}{\listoverride\listid398796681\listoverridecount0\ls17} +{\listoverride\listid398796681\listoverridecount0\ls18}{\listoverride\listid398796681\listoverridecount0\ls19}{\listoverride\listid398796681\listoverridecount0\ls20}{\listoverride\listid1121073746\listoverridecount0\ls21}{\listoverride\listid1567649130 +\listoverridecount0\ls22}{\listoverride\listid398796681\listoverridecount0\ls23}{\listoverride\listid398796681\listoverridecount0\ls24}{\listoverride\listid398796681\listoverridecount0\ls25}{\listoverride\listid398796681\listoverridecount0\ls26} +{\listoverride\listid-119\listoverridecount0\ls27}{\listoverride\listid398796681\listoverridecount9{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel +\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat +\levelstartat1}\ls28}}{\*\pgptbl {\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}}{\*\rsidtbl \rsid224019\rsid854531\rsid1981149\rsid2765386\rsid4849876\rsid6241929\rsid8670695\rsid8743077\rsid8917466\rsid9832773\rsid12915710\rsid13964805}{\mmathPr\mmathFont34\mbrkBin0 +\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\title English}{\creatim\yr2012\mo12\dy3\hr16\min37}{\revtim\yr2012\mo12\dy3\hr16\min37}{\version1}{\edmins0}{\nofpages1}{\nofwords255}{\nofchars1458} +{\nofcharsws1710}{\vern49275}}{\*\userprops {\propname db_document_id}\proptype30{\staticval 20466}{\propname ContentTypeId}\proptype30{\staticval 0x01010046B8823FA57BA9418FF517D259A73817}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/200 +3/wordml}}\paperw12240\paperh15840\margl720\margr720\margt720\margb720\gutter0\ltrsect +\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml1\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen +\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin\dghspace100\dgvspace180\dghorigin720\dgvorigin720\dghshow2\dgvshow1 +\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\viewnobound1\snaptogridincell\rempersonalinfo +\allowfieldendsel\wrppunct\asianbrkrule\rsidroot224019\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal +\nouicompat \fet0{\*\wgrffmtfilter 013f}\nofeaturethrottle1\ilfomacatclnup0{\*\ftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs20\alang1025 +\ltrch\fcs0 \fs20\lang1033\langfe1033\loch\af38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4849876 \chftnsep +\par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\af38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4849876 \chftnsepc +\par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\af38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4849876 \chftnsep +\par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\af38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid4849876 \chftnsepc +\par }}\ltrpar \sectd \ltrsect\linex0\headery0\footery0\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\headerl \ltrpar \pard\plain \ltrpar\s71\ql \li0\ri0\sb120\sa120\widctlpar +\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\loch\af38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38 \ltrch\fcs0 +\insrsid224019 +\par }{\rtlch\fcs1 \af38 \ltrch\fcs0 \insrsid8743077 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \af38 \ltrch\fcs0 \insrsid224019 +\par }}{\headerr \ltrpar \pard\plain \ltrpar\s71\ql \li0\ri0\sb120\sa120\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\af38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38 \ltrch\fcs0 \insrsid224019 +\par }{\rtlch\fcs1 \af38 \ltrch\fcs0 \insrsid8743077 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \af38 \ltrch\fcs0 \insrsid224019 +\par }}{\headerf \ltrpar \pard\plain \ltrpar\s71\ql \li0\ri0\sb120\sa120\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs20\alang1025 \ltrch\fcs0 +\fs20\lang1033\langfe1033\loch\af38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38 \ltrch\fcs0 \insrsid224019 +\par }{\rtlch\fcs1 \af38 \ltrch\fcs0 \insrsid8743077 \hich\af38\dbch\af11\loch\f38 }{\rtlch\fcs1 \af38 \ltrch\fcs0 \insrsid224019 +\par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}} +{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8 +\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\s42\ql \li0\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 +\rtlch\fcs1 \ab\af38\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\loch\af38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid13964805 \hich\af38\dbch\af13\loch\f38 +MICROSOFT SOFTWARE SUPPLEMENTAL LICENSE TERMS}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid224019 +\par }\pard \ltrpar\s42\ql \li0\ri0\sb120\sa120\nowidctlpar\brdrb\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid13964805 \hich\af38\dbch\af13\loch\f38 +WINDOWS RT ADDON PACK FOR WINDOWS }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid8670695 \hich\af38\dbch\af13\loch\f38 SOFTWARE DEVELOPMENT}{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid13964805 \hich\af38\dbch\af13\loch\f38 + KIT LIMITED PRE-RELEASE }{\rtlch\fcs1 \af38\afs20 \ltrch\fcs0 \fs20\dbch\af13\insrsid224019 +\par }\pard\plain \ltrpar\s44\ql \li0\ri0\sb120\sa120\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af38\afs20\alang1025 \ltrch\fcs0 +\b\fs20\lang1033\langfe1033\loch\af38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab0\af38 \ltrch\fcs0 \b0\dbch\af13\insrsid13964805 \hich\af38\dbch\af13\loch\f38 +Microsoft Corporation (or based on where you live, one of its affiliates) licenses this supplement to you. If you are licensed to use Microsoft Windows }{\rtlch\fcs1 \ab0\af38 \ltrch\fcs0 \b0\dbch\af13\insrsid8670695 \hich\af38\dbch\af13\loch\f38 +Software Development}{\rtlch\fcs1 \ab0\af38 \ltrch\fcs0 \b0\dbch\af13\insrsid13964805 \hich\af38\dbch\af13\loch\f38 \hich\f38 Kit Limited Pre-release software (the \'93\loch\f38 \hich\f38 software\'94\loch\f38 ), you may use this supplement. You +\hich\af38\dbch\af13\loch\f38 may not use it if you do not have a license for the software. You may use this supplement with each validly licensed copy of the software.}{\rtlch\fcs1 \ab0\af38 \ltrch\fcs0 \b0\dbch\af13\insrsid224019 +\par }{\rtlch\fcs1 \ab0\af38 \ltrch\fcs0 \b0\dbch\af13\insrsid13964805 \hich\af38\dbch\af13\loch\f38 The following license terms describe additional use terms for this supplement. These terms and the license terms for\hich\af38\dbch\af13\loch\f38 + the software apply to your use of the supplement. If there is a conflict, these supplemental license terms apply.}{\rtlch\fcs1 \ab0\af38 \ltrch\fcs0 \b0\dbch\af13\insrsid224019 +\par }{\rtlch\fcs1 \af38 \ltrch\fcs0 \dbch\af13\insrsid13964805 \hich\af38\dbch\af13\loch\f38 By using this supplement, you accept these terms. If you do not accept them, do not use this supplement.}{\rtlch\fcs1 \af38 \ltrch\fcs0 \dbch\af13\insrsid224019 + +\par }\pard\plain \ltrpar\s65\ql \li0\ri0\sb120\sa120\nowidctlpar\brdrt\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af38\afs20\alang1025 \ltrch\fcs0 +\b\fs20\lang1033\langfe1033\loch\af38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38 \ltrch\fcs0 \dbch\af13\insrsid13964805 \hich\af38\dbch\af13\loch\f38 If you comply with these license ter\hich\af38\dbch\af13\loch\f38 +ms, you have the rights below.}{\rtlch\fcs1 \af38 \ltrch\fcs0 \dbch\af13\insrsid224019 +\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\insrsid8743077\charrsid13195970 \hich\af38\dbch\af11\loch\f38 1.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar +\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls10\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid8743077 \rtlch\fcs1 \ab\af38\afs20\alang1025 \ltrch\fcs0 \b\fs20\lang1033\langfe1033\loch\af38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 { +\rtlch\fcs1 \af38 \ltrch\fcs0 \insrsid8743077\charrsid13195970 \hich\af38\dbch\af11\loch\f38 INSTALLATION AND USE RIGHTS. +\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\insrsid8670695\charrsid8670695 \hich\af38\dbch\af11\loch\f38 a.\tab}}\pard\plain \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid8743077 \rtlch\fcs1 \ab\af38\afs20\alang1025 \ltrch\fcs0 +\b\fs20\lang1033\langfe1033\loch\af38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af38 \ltrch\fcs0 \b0\insrsid8670695\charrsid8670695 \hich\af38\dbch\af11\loch\f38 \hich\f38 +You may install and use any number of copies of the software on your premises to design, develop and test your \'93\loch\f38 \hich\f38 Permitted Tools\'94\loch\f38 for use in hardware or software development to run on the Windows }{\rtlch\fcs1 \af38 +\ltrch\fcs0 \b0\insrsid8670695 \hich\af38\dbch\af11\loch\f38 RT}{\rtlch\fcs1 \af38 \ltrch\fcs0 \b0\insrsid8670695\charrsid8670695 \hich\af38\dbch\af11\loch\f38 + platform. Permitted Tools are tools used for diagnostics, quality assurance, imaging, updating or installing firmware, and testing and debugging hardware or software}{\rtlch\fcs1 \af38 \ltrch\fcs0 \b0\insrsid8743077\charrsid13195970 +\hich\af38\dbch\af11\loch\f38 . }{\rtlch\fcs1 \af38 \ltrch\fcs0 \b0\insrsid8743077 +\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\f38\fs20\insrsid8670695\charrsid8670695 \hich\af38\dbch\af11\loch\f38 b.\tab}}{\rtlch\fcs1 \af38 \ltrch\fcs0 \b0\insrsid8670695\charrsid8670695 \hich\af38\dbch\af11\loch\f38 +You may not use the software to develop applications, ActiveX controls, system exten\hich\af38\dbch\af11\loch\f38 sions, control panels or any other software intended for or available to end users}{\rtlch\fcs1 \af38 \ltrch\fcs0 +\b0\insrsid8743077\charrsid8743077 . +\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af38\afs20 \ltrch\fcs0 \b\fs20\loch\af38\hich\af38\dbch\af13\insrsid8743077\charrsid8743077 \hich\af38\dbch\af13\loch\f38 2.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\nowidctlpar +\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls10\outlinelevel0\adjustright\rin0\lin357\itap0 \rtlch\fcs1 \ab\af38\afs20\alang1025 \ltrch\fcs0 \b\fs20\lang1033\langfe1033\loch\af38\hich\af38\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 +\ab0\af38 \ltrch\fcs0 \dbch\af13\insrsid8743077\charrsid8743077 \hich\af38\dbch\af13\loch\f38 PRE-RELEASE SOFTWARE}{\rtlch\fcs1 \ab0\af38 \ltrch\fcs0 \b0\dbch\af13\insrsid8743077\charrsid811188 \hich\af38\dbch\af13\loch\f38 +. This software is a pre-release version. It may not work the way a final version of the software will. We may change it for the final, commercial versi\hich\af38\dbch\af13\loch\f38 on. We also may not release a commercial version.}{\rtlch\fcs1 \ab0\af38 +\ltrch\fcs0 \b0\dbch\af13\insrsid8743077 +\par }\pard \ltrpar\s1\ql \li357\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid8670695 {\rtlch\fcs1 \af38 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid8743077\charrsid8743077 +\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a +9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad +5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 +b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0 +0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6 +a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f +c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512 +0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462 +a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865 +6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b +4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b +4757e8d3f729e245eb2b260a0238fd010000ffff0300504b03041400060008000000210096b5ade296060000501b0000160000007468656d652f7468656d652f +7468656d65312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87 +615b8116d8a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad +79482a9c0498f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b +5d8a314d3c94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab +999fb7b4717509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9 +699640f6719e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd586 +8b37a088d1e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d6 +0cf03ac1a5193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f +9e7ef3f2d117d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be +15c308d3f28acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a9979 +3849c26ae66252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d +32a423279a668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2a +f074481847bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86 +e877f0034e16bafb0e258ebb4faf06b769e888340b103d3311da9750aa9d0a1cd3e4efca31a3508f6d0c5c5c398602f8e2ebc71591f5b616e24dd893aa3261fb +44f95d843b5974bb5c04f4edafb95b7892ec1108f3f98de75dc97d5772bdff7cc95d94cf672db4b3da0a6557f70db629362d72bcb0431e53c6066acac80d699a +6409fb44d08741bdce9c0e4971624a2378cceaba830b05366b90e0ea23aaa241845368b0eb9e2612ca8c742851ca251ceccc70256d8d87265dd96361531f186c +3d9058edf2c00eafe8e1fc5c509031bb4d680e9f39a3154de0accc56ae644441edd76156d7429d995bdd88664a9dc3ad50197c38af1a0c16d684060441db0256 +5e85f3b9660d0713cc48a0ed6ef7dedc2dc60b17e92219e180643ed27acffba86e9c94c78ab90980d8a9f0913ee49d62b512b79626fb06dccee2a432bbc60276 +b9f7dec44b7904cfbca4f3f6443ab2a49c9c2c41476dafd55c6e7ac8c769db1bc399161ee314bc2e75cf8759081743be1236ec4f4d6693e5336fb672c5dc24a8 +c33585b5fb9cc24e1d4885545b58463634cc5416022cd19cacfccb4d30eb45296023fd35a458598360f8d7a4003bbaae25e331f155d9d9a5116d3bfb9a95523e +51440ca2e0088dd844ec6370bf0e55d027a012ae264c45d02f708fa6ad6da6dce29c255df9f6cae0ec38666984b372ab5334cf640b37795cc860de4ae2816e95 +b21be5ceaf8a49f90b52a51cc6ff3355f47e0237052b81f6800fd7b802239daf6d8f0b1571a8426944fdbe80c6c1d40e8816b88b8569082ab84c36ff0539d4ff +6dce591a26ade1c0a7f669880485fd484582903d284b26fa4e2156cff62e4b9265844c4495c495a9157b440e091bea1ab8aaf7760f4510eaa69a6465c0e04ec6 +9ffb9e65d028d44d4e39df9c1a52ecbd3607fee9cec7263328e5d661d3d0e4f62f44acd855ed7ab33cdf7bcb8ae889599bd5c8b3029895b6825696f6af29c239 +b75a5bb1e6345e6ee6c28117e73586c1a2214ae1be07e93fb0ff51e133fb65426fa843be0fb515c187064d0cc206a2fa926d3c902e907670048d931db4c1a449 +59d366ad93b65abe595f70a75bf03d616c2dd959fc7d4e6317cd99cbcec9c58b34766661c7d6766ca1a9c1b327531486c6f941c638c67cd22a7f75e2a37be0e8 +2db8df9f30254d30c1372581a1f51c983c80e4b71ccdd28dbf000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468 +656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4 +350d363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d2624 +52282e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe5141 +73d9850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c020000130000000000000000 +0000000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000 +000000000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c0000000000000000000000000019 +0200007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210096b5ade296060000501b00001600000000 +000000000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b01000027 +00000000000000000000000000a00900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d0100009b0a00000000} +{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d +617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 +6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 +656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} +{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal; +\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdlocked0 heading 1;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdlocked0 heading 2;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdlocked0 heading 3; +\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdlocked0 heading 4;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdlocked0 heading 5;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdlocked0 heading 6; +\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdlocked0 heading 7;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdlocked0 heading 8;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdlocked0 heading 9;\lsdpriority39 \lsdlocked0 toc 1; +\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6;\lsdpriority39 \lsdlocked0 toc 7;\lsdpriority39 \lsdlocked0 toc 8; +\lsdpriority39 \lsdlocked0 toc 9;\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdpriority1 \lsdlocked0 Default Paragraph Font; +\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision; +\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6; +\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; +\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference; +\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010500000200000018000000 +4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000380000 +d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000200000002000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffdffffff0400000016000000050000000c000000060000000700000008000000090000000a0000000b0000000d0000000e0000000f0000001900000010000000110000001200000013000000140000001500000017000000feffffff180000001a000000fefffffffeffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff010000000c6ad98892f1d411a65f0040963251e5000000000000000000000000a048 +8a8eb7d1cd010300000080250000000000004d0073006f004400610074006100530074006f0072006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000101ffffffffffffffff050000000000000000000000000000000000000000000000a0488a8eb7d1cd01 +a0488a8eb7d1cd010000000000000000000000003500d30031004900df0043005500c500310045004b00c800cd00da004b00d10052005600de00d400da00d0003d003d000000000000000000000000000000000032000101ffffffffffffffff030000000000000000000000000000000000000000000000a0488a8eb7d1 +cd01a0488a8eb7d1cd010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff04000000ffffffff000000000000000000000000000000000000000000000000 +00000000000000000000000000000000db00000000000000010000000200000003000000feffffff0500000006000000070000000800000009000000feffffff0b0000000c0000000d0000000e0000000f000000100000001100000012000000130000001400000015000000160000001700000018000000190000001a00 +00001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f00000030000000310000003200000033000000340000003500000036000000feffffff3800000039000000 +3a0000003b0000003c000000feffffff3e0000003f00000040000000feffffff4200000043000000440000004500000046000000feffffff48000000490000004a0000004b0000004c0000004d0000004e0000004f0000005000000051000000520000005300000054000000550000005600000057000000580000005900 +00005a0000005b0000005c0000005d0000005e0000005f000000600000006100000062000000630000006400000065000000660000006700000068000000690000006a0000006b0000006c0000006d0000006e0000006f000000700000007100000072000000730000007400000075000000760000007700000078000000 +790000007a0000007b0000007c0000007d000000feffffff7f000000800000003c3f6d736f2d636f6e74656e74547970653f3e3c466f726d54656d706c6174657320786d6c6e733d22687474703a2f2f736368656d61732e6d6963726f736f66742e636f6d2f7368617265706f696e742f76332f636f6e74656e74747970 +652f666f726d73223e3c446973706c61793e446f63756d656e744c696272617279466f726d3c2f446973706c61793e3c456469743e446f63756d656e744c696272617279466f726d3c2f456469743e3c4e65773e446f63756d656e744c696272617279466f726d3c2f4e65773e3c2f466f726d54656d706c617465733e00 +0000000000000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b46434338 +333637462d323532352d343236432d413842372d4132423134353546423445427d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64733a736368656d61526566733e3c +64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6d696372500072006f007000650072007400690065007300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000200ffffffffffffffffffffffff000000000000 +000000000000000000000000000000000000000000000000000000000000040000004f0100000000000053004200d5004a004100d60052004f004d005500d2003100de003100c000dd0043004e00dd005200dc00c0003d003d000000000000000000000000000000000032000101020000000b0000000600000000000000 +00000000000000000000000000000000a0488a8eb7d1cd01a0488a8eb7d1cd010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff07000000ffffffff0000 +000000000000000000000000000000000000000000000000000000000000000000000a000000160b000000000000500072006f007000650072007400690065007300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000200ffffffffffffffffffffffff +0000000000000000000000000000000000000000000000000000000000000000000000003700000051010000000000006f736f66742e636f6d2f7368617265706f696e742f76332f636f6e74656e74747970652f666f726d73222f3e3c2f64733a736368656d61526566733e3c2f64733a6461746173746f72654974656d +3e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d227574662d3822207374616e64616c6f6e653d22796573223f3e3c53657373696f6e20786d6c6e733d22687474703a +2f2f736368656d61732e627573696e6573732d696e746567726974792e636f6d2f6465616c6275696c6465722f323030362f616e7377657273223e3c5661726961626c65204e616d653d226164646974696f6e616c7465726d73223e3c56616c75653e747275653c2f56616c75653e3c2f5661726961626c653e3c566172 +6961626c65204e616d653d226368616e6e656c223e3c56616c75653e52657461696c3c2f56616c75653e3c2f5661726961626c653e3c5661726961626c65204e616d653d226d73636f6d223e3c56616c75653e66616c73653c2f56616c75653e3c2f5661726961626c653e3c5661726961626c65204e616d653d2266696c +6574797065223e3c56616c75653e2e646f63783c2f56616c75653e3c2f5661726961626c653e3c5661726961626c65204e616d653d226c616e6775616765616c6c223e3c56616c75653e456e676c6973683c2f56616c75653e3c2f5661726961626c653e3c5661726961626c65204e616d653d225f5f6576656e74746172 +67657422204b6e6f776e3d2266616c7365222052656c6576616e743d2266616c7365222f3e3c5661726961626c65204e616d653d225f5f6576656e74617267756d656e7422204b6e6f776e3d2266616c7365222052656c6576616e743d2266616c7365222f3e3c5661726961626c65204e616d653d225f5f726571756573 +74646967657374222052656c6576616e743d2266616c7365223e3c56616c75653e307841363434373942353841393130363534343333393638303238304337323032353344344632313538373930314141353243323135424645414633313030374635344242463544433345413846333135463846384136393235333438 +314433374639353544304539454443324631344535374544433346304132323535453542342c30332044656320323031322032323a32333a3338202d303030303c2f56616c75653e3c2f5661726961626c653e3c5661726961626c65204e616d653d225f5f6576656e7476616c69646174696f6e222052656c6576616e74 +3d2266616c7365223e3c56616c75653e2f77455741674b4f3239697043414c623449756d444c2b75437032397970624e71637a6d5230493767414e52424e67333c2f56616c75653e3c2f5661726961626c653e3c5661726961626c65204e616d653d2263746c303024706c616365686f6c6465726d61696e246866636573 +70636f6e74726163747265666572656e6365222052656c6576616e743d2266616c7365223e3c56616c75653e323031322d4d41494e432d3030303330373c2f56616c75653e3c2f5661726961626c653e3c5661726961626c65204e616d653d226c61756e6368646976616374696f6e22204b6e6f776e3d2266616c736522 +2052656c6576616e743d2266616c7365222f3e3c5661726961626c65204e616d653d225f5f737064756d6d79746578743122204b6e6f776e3d2266616c7365222052656c6576616e743d2266616c7365222f3e3c5661726961626c65204e616d653d225f5f737064756d6d79746578743222204b6e6f776e3d2266616c73 +65222052656c6576616e743d2266616c7365222f3e3c5661726961626c65204e616d653d2263616e616461617661696c223e3c56616c75653e747275653c2f56616c75653e3c2f5661726961626c653e3c5661726961626c65204e616d653d2263616e6164616672656e6368223e3c56616c75653e66616c73653c2f5661 +6c75653e3c2f5661726961626c653e3c5661726961626c65204e616d653d2270726f647563746e616d65223e3c56616c75653e57696e646f7773205254204164646f6e205061636b20666f722057696e646f777320447269766572204b6974204c696d69746564205072652d72656c656173653c2f56616c75653e3c2f56 +61726961626c653e3c5661726961626c65204e616d653d226d756c7469706c6570726f6475637473223e3c56616c75653e66616c73653c2f56616c75653e3c2f5661726961626c653e3c5661726961626c65204e616d653d22756e6465726c79696e67736f6674776172656e616d65223e3c56616c75653e57696e646f77 +7320447269766572204b6974204c696d69746564205072652d72656c656173653c2f56616c75653e3c2f5661726961626c653e3c5661726961626c65204e616d653d2270726f6475637476657273696f6e223e3c56616c75653e6e6f6e653c2f56616c75653e3c2f5661726961626c653e3c5661726961626c65204e616d +653d2276657273696f6e76697369626c65223e3c56616c75653e747275653c2f56616c75653e3c2f5661726961626c653e3c5661726961626c65204e616d653d2266696c65666f726d6174223e3c56616c75653e747275653c2f56616c75653e3c2f5661726961626c653e3c5661726961626c65204e616d653d22747970 +656f66726967687473223e3c56616c75653e4164646974696f6e616c207465726d7320666f722074686520737570706c656d656e743c2f56616c75653e3c2f5661726961626c653e3c5661726961626c65204e616d653d2264697374726962757461626c65636f6465223e3c56616c75653e66616c73653c2f56616c7565 +3e3c2f5661726961626c653e3c5661726961626c65204e616d653d226d65646961656c656d656e747374656d706c61746573223e3c56616c75653e66616c73653c2f56616c75653e3c2f5661726961626c653e3c5661726961626c65204e616d653d226f7468657261646473776e6577223e3c56616c75653e66616c7365 +3c2f56616c75653e3c2f5661726961626c653e3c5661726961626c65204e616d653d226f726967696e61746f72223e3c56616c75653e5245444d4f4e445c72756e6465723c2f56616c75653e3c2f5661726961626c653e3c506172616d65746572204e616d653d2264625f646973706c61795f616c6c5f636f6d6d656e74 +73223e3c56616c75653e66616c73653c2f56616c75653e3c2f506172616d657465723e3c506172616d65746572204e616d653d2264625f73686f775f73756d6d617279223e3c56616c75653e64697361626c65643c2f56616c75653e3c2f506172616d657465723e3c506172616d65746572204e616d653d2264625f7465 +6d706c6174655f666f726d223e3c56616c75653e30623562623664652d323330332d343632362d383836652d3030666237393964393631343c2f56616c75653e3c2f506172616d657465723e3c506172616d65746572204e616d653d2264625f74656d706c6174655f7265666572656e6365223e3c56616c75653e555345 +5445524d535f4d41494e433c2f56616c75653e3c2f506172616d657465723e3c506172616d65746572204e616d653d2264625f74656d706c6174655f76657273696f6e223e3c56616c75653e32303130313130393c2f56616c75653e3c2f506172616d657465723e3c506172616d65746572204e616d653d2264625f7472 +616e73616374696f6e5f65787465726e616c5f6c6162656c223e3c56616c75653e323031322d4d41494e432d3030303330373c2f56616c75653e3c2f506172616d657465723e3c506172616d65746572204e616d653d2264625f7472616e73616374696f6e5f6964223e3c56616c75653e373338333c2f56616c75653e3c +2f506172616d657465723e3c506172616d65746572204e616d653d2264625f766973697465645f7061676573223e3c56616c75653e313c2f56616c75653e3c56616c75653e323c2f56616c75653e3c56616c75653e343c2f56616c75653e3c2f506172616d657465723e3c2f53657373696f6e3e00000000000000000000 +00000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b3033343931443438 +2d344536342d344333312d394246392d4238334430384446353146327d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64733a736368656d61526566733e3c64733a73 +6368656d615265662064733a7572693d22687474703a2f2f736368656d61732e627573696e6573732d696e746567726974792e636f6d2f6465616c6275696c6465722f323030362f616e7377657273222f3e3c2f64733a736368656d61526566733e3c2f64733a6461746173746f72654974656d3e000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d227574662d38223f3e3c703a70726f7065727469657320786d6c6e733a703d22687474703a2f2f736368656d61732e6d6963726f736f66742e636f +6d2f6f66666963652f323030362f6d657461646174612f70726f706572746965732220786d6c6e733a7873693d22687474703a2f2f7777772e77332e6f72672f323030312f584d4c536368656d612d696e7374616e6365223e3c646f63756d656e744d616e6167655a00d700df004c004b00d100d900d100410045004b00 +d500d70033004900d9004a00ce004f00cb00550041003d003d000000000000000000000000000000000032000100ffffffffffffffff090000000000000000000000000000000000000000000000a0488a8eb7d1cd01a0488a8eb7d1cd010000000000000000000000004900740065006d00000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff0a000000ffffffff0000000000000000000000000000000000000000000000000000000000000000000000003d000000d500000000000000500072006f00700065007200740069006500 +7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000200ffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000410000004f01000000000000ca00ca005a00c100dc00c7004900df00 +5500c4004300cb004e004f00c40059004300350057003100db0051003d003d000000000000000000000000000000000032000101080000000e0000000c0000000000000000000000000000000000000000000000a0488a8eb7d1cd01a0488a8eb7d1cd010000000000000000000000006d656e742f3e3c2f703a70726f70 +6572746965733e000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d206473 +3a6974656d49443d227b32424342374636372d373131452d343230302d423544442d4432333932364533414235307d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64 +733a736368656d61526566733e3c64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6d6963726f736f66742e636f6d2f6f66666963652f323030362f6d657461646174612f70726f70657274696573222f3e3c2f64733a736368656d61526566733e3c2f64733a6461746173746f +72654974656d3e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d227574662d38223f3e3c63743a636f6e74656e7454797065536368656d612063743a5f490074006500 +6d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff0d000000ffffffff00000000000000000000000000000000000000000000000000000000000000000000000047000000ad0d00000000000050007200 +6f007000650072007400690065007300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000200ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000007e0000006d03000000000000d500 +50004f00d400c30041004c00c3003200d4005300de004b0053005500cc005600c9004d004500c200c0003d003d000000000000000000000000000000000032000100ffffffffffffffff0f0000000000000000000000000000000000000000000000a0488a8eb7d1cd01a0488a8eb7d1cd01000000000000000000000000 +4900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff10000000ffffffff0000000000000000000000000000000000000000000000000000000000000000000000008c000000c10000000000 +00003d2222206d613a5f3d2222206d613a636f6e74656e74547970654e616d653d22446f63756d656e7422206d613a636f6e74656e745479706549443d223078303130313030343642383832334641353742413934313846463531374432353941373338313722206d613a636f6e74656e745479706556657273696f6e3d +223022206d613a636f6e74656e74547970654465736372697074696f6e3d224372656174652061206e657720646f63756d656e742e22206d613a636f6e74656e745479706553636f70653d2222206d613a76657273696f6e49443d2230353665623662626264373965663536333066616432653734623737326235662220 +786d6c6e733a63743d22687474703a2f2f736368656d61732e6d6963726f736f66742e636f6d2f6f66666963652f323030362f6d657461646174612f636f6e74656e74547970652220786d6c6e733a6d613d22687474703a2f2f736368656d61732e6d6963726f736f66742e636f6d2f6f66666963652f323030362f6d65 +7461646174612f70726f706572746965732f6d65746141747472696275746573223e0d0a3c7873643a736368656d61207461726765744e616d6573706163653d22687474703a2f2f736368656d61732e6d6963726f736f66742e636f6d2f6f66666963652f323030362f6d657461646174612f70726f7065727469657322 +206d613a726f6f743d227472756522206d613a6669656c647349443d2234616562323063306533343432363733616637656531303738363435383736342220786d6c6e733a7873643d22687474703a2f2f7777772e77332e6f72672f323030312f584d4c536368656d612220786d6c6e733a703d22687474703a2f2f7363 +68656d61732e6d6963726f736f66742e636f6d2f6f66666963652f323030362f6d657461646174612f70726f70657274696573223e0d0a3c7873643a656c656d656e74206e616d653d2270726f70657274696573223e0d0a3c7873643a636f6d706c6578547970653e0d0a3c7873643a73657175656e63653e0d0a3c7873 +643a656c656d656e74206e616d653d22646f63756d656e744d616e6167656d656e74223e0d0a3c7873643a636f6d706c6578547970653e0d0a3c7873643a616c6c2f3e0d0a3c2f7873643a636f6d706c6578547970653e0d0a3c2f7873643a656c656d656e743e0d0a3c2f7873643a73657175656e63653e0d0a3c2f7873 +643a636f6d706c6578547970653e0d0a3c2f7873643a656c656d656e743e0d0a3c2f7873643a736368656d613e0d0a3c7873643a736368656d61207461726765744e616d6573706163653d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f7061636b6167652f323030362f6d6574 +61646174612f636f72652d70726f706572746965732220656c656d656e74466f726d44656661756c743d227175616c69666965642220617474726962757465466f726d44656661756c743d22756e7175616c69666965642220626c6f636b44656661756c743d2223616c6c2220786d6c6e733d22687474703a2f2f736368 +656d61732e6f70656e786d6c666f726d6174732e6f72672f7061636b6167652f323030362f6d657461646174612f636f72652d70726f706572746965732220786d6c6e733a7873643d22687474703a2f2f7777772e77332e6f72672f323030312f584d4c536368656d612220786d6c6e733a7873693d22687474703a2f2f +7777772e77332e6f72672f323030312f584d4c536368656d612d696e7374616e63652220786d6c6e733a64633d22687474703a2f2f7075726c2e6f72672f64632f656c656d656e74732f312e312f2220786d6c6e733a64637465726d733d22687474703a2f2f7075726c2e6f72672f64632f7465726d732f2220786d6c6e +733a6f646f633d22687474703a2f2f736368656d61732e6d6963726f736f66742e636f6d2f6f66666963652f696e7465726e616c2f323030352f696e7465726e616c446f63756d656e746174696f6e223e0d0a3c7873643a696d706f7274206e616d6573706163653d22687474703a2f2f7075726c2e6f72672f64632f65 +6c656d656e74732f312e312f2220736368656d614c6f636174696f6e3d22687474703a2f2f6475626c696e636f72652e6f72672f736368656d61732f786d6c732f7164632f323030332f30342f30322f64632e787364222f3e0d0a3c7873643a696d706f7274206e616d6573706163653d22687474703a2f2f7075726c2e +6f72672f64632f7465726d732f2220736368656d614c6f636174696f6e3d22687474703a2f2f6475626c696e636f72652e6f72672f736368656d61732f786d6c732f7164632f323030332f30342f30322f64637465726d732e787364222f3e0d0a3c7873643a656c656d656e74206e616d653d22636f726550726f706572 +746965732220747970653d2243545f636f726550726f70657274696573222f3e0d0a3c7873643a636f6d706c657854797065206e616d653d2243545f636f726550726f70657274696573223e0d0a3c7873643a616c6c3e0d0a3c7873643a656c656d656e74207265663d2264633a63726561746f7222206d696e4f636375 +72733d223022206d61784f63637572733d2231222f3e0d0a3c7873643a656c656d656e74207265663d2264637465726d733a6372656174656422206d696e4f63637572733d223022206d61784f63637572733d2231222f3e0d0a3c7873643a656c656d656e74207265663d2264633a6964656e74696669657222206d696e +4f63637572733d223022206d61784f63637572733d2231222f3e0d0a3c7873643a656c656d656e74206e616d653d22636f6e74656e745479706522206d696e4f63637572733d223022206d61784f63637572733d22312220747970653d227873643a737472696e6722206d613a696e6465783d223022206d613a64697370 +6c61794e616d653d22436f6e74656e74205479706522206d613a726561644f6e6c793d2274727565222f3e0d0a3c7873643a656c656d656e74207265663d2264633a7469746c6522206d696e4f63637572733d223022206d61784f63637572733d223122206d613a696e6465783d223422206d613a646973706c61794e61 +6d653d225469746c65222f3e0d0a3c7873643a656c656d656e74207265663d2264633a7375626a65637422206d696e4f63637572733d223022206d61784f63637572733d2231222f3e0d0a3c7873643a656c656d656e74207265663d2264633a6465736372697074696f6e22206d696e4f63637572733d223022206d6178 +4f63637572733d2231222f3e0d0a3c7873643a656c656d656e74206e616d653d226b6579776f72647322206d696e4f63637572733d223022206d61784f63637572733d22312220747970653d227873643a737472696e67222f3e0d0a3c7873643a656c656d656e74207265663d2264633a6c616e677561676522206d696e +4f63637572733d223022206d61784f63637572733d2231222f3e0d0a3c7873643a656c656d656e74206e616d653d2263617465676f727922206d696e4f63637572733d223022206d61784f63637572733d22312220747970653d227873643a737472696e67222f3e0d0a3c7873643a656c656d656e74206e616d653d2276 +657273696f6e22206d696e4f63637572733d223022206d61784f63637572733d22312220747970653d227873643a737472696e67222f3e0d0a3c7873643a656c656d656e74206e616d653d227265766973696f6e22206d696e4f63637572733d223022206d61784f63637572733d22312220747970653d227873643a7374 +72696e67223e0d0a3c7873643a616e6e6f746174696f6e3e0d0a3c7873643a646f63756d656e746174696f6e3e0d0a202020202020202020202020202020202020202020202020546869732076616c756520696e6469636174657320746865206e756d626572206f66207361766573206f72207265766973696f6e732e20 +546865206170706c69636174696f6e20697320726573706f6e7369626c6520666f72207570646174696e6720746869732076616c75652061667465722065616368207265766973696f6e2e0d0a20202020202020202020202020202020202020203c2f7873643a646f63756d656e746174696f6e3e0d0a3c2f7873643a61 +6e6e6f746174696f6e3e0d0a3c2f7873643a656c656d656e743e0d0a3c7873643a656c656d656e74206e616d653d226c6173744d6f646966696564427922206d696e4f63637572733d223022206d61784f63637572733d22312220747970653d227873643a737472696e67222f3e0d0a3c7873643a656c656d656e742072 +65663d2264637465726d733a6d6f64696669656422206d696e4f63637572733d223022206d61784f63637572733d2231222f3e0d0a3c7873643a656c656d656e74206e616d653d226c6173745072696e74656422206d696e4f63637572733d223022206d61784f63637572733d22312220747970653d227873643a646174 +6554696d65222f3e0d0a3c7873643a656c656d656e74206e616d653d22636f6e74656e7453746174757322206d696e4f63637572733d223022206d61784f63637572733d22312220747970653d227873643a737472696e67222f3e0d0a3c2f7873643a616c6c3e0d0a3c2f7873643a636f6d706c6578547970653e0d0a3c +2f7873643a736368656d613e0d0a3c2f63743a636f6e74656e7454797065536368656d613e000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f726549 +74656d2064733a6974656d49443d227b46323631413641412d334637322d343035322d414233342d4539313830394635394245447d2220786d6c8100000082000000830000008400000085000000860000008700000088000000890000008a0000008b000000feffffff8d0000008e0000008f000000feffffff91000000 +92000000930000009400000095000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f32303036 +2f637573746f6d586d6c223e3c64733a736368656d61526566733e3c64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6d6963726f736f66742e636f6d2f6f66666963652f323030362f6d657461646174612f636f6e74656e7454797065222f3e3c64733a736368656d61526566 +2064733a7572693d22687474703a2f2f736368656d61732e6d6963726f736f66742e636f6d2f6f66666963652f323030362f6d657461646174612f70726f706572746965732f6d65746141747472696275746573222f3e3c64733a736368656d615265662064733a7572693d22687474703a2f2f7777772e77332e6f7267 +2f323030312f584d4c536368656d61222f3e3c64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6d6963726f736f66742e636f6d2f6f66666963652f323030362f6d657461646174612f70726f70657274696573222f3e3c64733a736368656d615265662064733a7572693d2268 +7474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f7061636b6167652f323030362f6d657461646174612f636f72652d70726f70657274696573222f3e3c64733a736368656d615265662064733a7572693d22687474703a2f2f7075726c2e6f72672f64632f656c656d656e74732f312e31 +2f222f3e3c64733a736368656d615265662064733a7572693d22687474703a2f2f7075726c2e6f72672f64632f7465726d732f222f3e3c64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6d6963726f736f66742e636f6d2f6f66666963652f696e7465726e616c2f323030352f +696e7465726e616c446f63756d656e746174696f6e222f3e3c2f64733a736368656d61526566733e3c2f64733a6461746173746f72654974656d3e000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d227574662d3822207374616e64616c6f6e653d +22796573223f3e3c44696374696f6e617279205361766564427956657273696f6e3d22332e362e31382e3022204d696e696d756d56657273696f6e3d22332e362e342e302220786d6c6e733d22687474703a2f2f736368656d61732e627573696e6573732d696e746567726974792e636f6d2f6465616c6275696c646572 +2f323030362f64696374696f6e617279222f3e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500072006f007000650072007400690065007300000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000016000200ffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000000000000900000005401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822 +207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b38434234463344342d453330322d343437332d424532392d3235324335363933303438417d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d61 +74732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64733a736368656d61526566733e3c64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e627573696e6573732d696e746567726974792e636f6d2f6465616c6275696c6465722f32 +3030362f64696374696f6e617279222f3e3c2f64733a736368656d61526566733e3c2f64733a6461746173746f72654974656d3e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file diff --git a/src/Licenses/sdk_license.rtf b/src/Licenses/sdk_license.rtf new file mode 100644 index 0000000..c808756 --- /dev/null +++ b/src/Licenses/sdk_license.rtf @@ -0,0 +1,1148 @@ +{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff43\deff0\stshfdbch11\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033\themelang1033\themelangfe2052\themelangcs1025{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times};} +{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New{\*\falt Arial};}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol{\*\falt Bookshelf Symbol 3};} +{\f10\fbidi \fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings{\*\falt Symbol};}{\f11\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt ?l?r ??\'81\'66c};} +{\f13\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ???????\'a1\'ec????};}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math{\*\falt Calisto MT};} +{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri{\*\falt Arial Rounded MT Bold};}{\f43\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma{\*\falt ?? ??};} +{\f44\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0603020202020204}Trebuchet MS{\*\falt Univers};}{\f45\fbidi \fnil\fcharset134\fprq2{\*\panose 00000000000000000000}@SimSun;} +{\f46\fbidi \fmodern\fcharset128\fprq1{\*\panose 00000000000000000000}@MS Mincho{\*\falt @MS Gothic};}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times};} +{\fdbmajor\f31501\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ???????\'a1\'ec????};}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;} +{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times};}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman{\*\falt Times};} +{\fdbminor\f31505\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun{\*\falt ???????\'a1\'ec????};}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri{\*\falt Arial Rounded MT Bold};} +{\fbiminor\f31507\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}{\f61\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times};}{\f62\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times};} +{\f64\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times};}{\f65\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times};}{\f66\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times};} +{\f67\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times};}{\f68\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times};}{\f69\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times};} +{\f81\fbidi \fmodern\fcharset238\fprq1 Courier New CE{\*\falt Arial};}{\f82\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr{\*\falt Arial};}{\f84\fbidi \fmodern\fcharset161\fprq1 Courier New Greek{\*\falt Arial};} +{\f85\fbidi \fmodern\fcharset162\fprq1 Courier New Tur{\*\falt Arial};}{\f86\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew){\*\falt Arial};}{\f87\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic){\*\falt Arial};} +{\f88\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic{\*\falt Arial};}{\f89\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese){\*\falt Arial};}{\f173\fbidi \fmodern\fcharset0\fprq1 MS Mincho Western{\*\falt ?l?r ??\'81\'66c};} +{\f171\fbidi \fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt ?l?r ??\'81\'66c};}{\f172\fbidi \fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt ?l?r ??\'81\'66c};}{\f174\fbidi \fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt ?l?r ??\'81\'66c};} +{\f175\fbidi \fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt ?l?r ??\'81\'66c};}{\f178\fbidi \fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt ?l?r ??\'81\'66c};}{\f193\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt ???????\'a1\'ec????};} +{\f401\fbidi \froman\fcharset238\fprq2 Cambria Math CE{\*\falt Calisto MT};}{\f402\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr{\*\falt Calisto MT};}{\f404\fbidi \froman\fcharset161\fprq2 Cambria Math Greek{\*\falt Calisto MT};} +{\f405\fbidi \froman\fcharset162\fprq2 Cambria Math Tur{\*\falt Calisto MT};}{\f408\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic{\*\falt Calisto MT};}{\f409\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese){\*\falt Calisto MT};} +{\f431\fbidi \fswiss\fcharset238\fprq2 Calibri CE{\*\falt Arial Rounded MT Bold};}{\f432\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr{\*\falt Arial Rounded MT Bold};}{\f434\fbidi \fswiss\fcharset161\fprq2 Calibri Greek{\*\falt Arial Rounded MT Bold};} +{\f435\fbidi \fswiss\fcharset162\fprq2 Calibri Tur{\*\falt Arial Rounded MT Bold};}{\f436\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew){\*\falt Arial Rounded MT Bold};} +{\f437\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic){\*\falt Arial Rounded MT Bold};}{\f438\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic{\*\falt Arial Rounded MT Bold};} +{\f439\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese){\*\falt Arial Rounded MT Bold};}{\f491\fbidi \fswiss\fcharset238\fprq2 Tahoma CE{\*\falt ?? ??};}{\f492\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr{\*\falt ?? ??};} +{\f494\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek{\*\falt ?? ??};}{\f495\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur{\*\falt ?? ??};}{\f496\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew){\*\falt ?? ??};} +{\f497\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic){\*\falt ?? ??};}{\f498\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic{\*\falt ?? ??};}{\f499\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese){\*\falt ?? ??};} +{\f500\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai){\*\falt ?? ??};}{\f501\fbidi \fswiss\fcharset238\fprq2 Trebuchet MS CE{\*\falt Univers};}{\f502\fbidi \fswiss\fcharset204\fprq2 Trebuchet MS Cyr{\*\falt Univers};} +{\f504\fbidi \fswiss\fcharset161\fprq2 Trebuchet MS Greek{\*\falt Univers};}{\f505\fbidi \fswiss\fcharset162\fprq2 Trebuchet MS Tur{\*\falt Univers};}{\f508\fbidi \fswiss\fcharset186\fprq2 Trebuchet MS Baltic{\*\falt Univers};} +{\f513\fbidi \fnil\fcharset0\fprq2 @SimSun Western;}{\f523\fbidi \fmodern\fcharset0\fprq1 @MS Mincho Western{\*\falt @MS Gothic};}{\f521\fbidi \fmodern\fcharset238\fprq1 @MS Mincho CE{\*\falt @MS Gothic};} +{\f522\fbidi \fmodern\fcharset204\fprq1 @MS Mincho Cyr{\*\falt @MS Gothic};}{\f524\fbidi \fmodern\fcharset161\fprq1 @MS Mincho Greek{\*\falt @MS Gothic};}{\f525\fbidi \fmodern\fcharset162\fprq1 @MS Mincho Tur{\*\falt @MS Gothic};} +{\f528\fbidi \fmodern\fcharset186\fprq1 @MS Mincho Baltic{\*\falt @MS Gothic};}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times};}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times};} +{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times};}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times};} +{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times};}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times};} +{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times};}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times};} +{\fdbmajor\f31520\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt ???????\'a1\'ec????};}{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;} +{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;} +{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times};}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times};} +{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times};}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times};} +{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times};}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times};} +{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times};}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times};} +{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE{\*\falt Times};}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr{\*\falt Times};} +{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek{\*\falt Times};}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur{\*\falt Times};} +{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew){\*\falt Times};}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic){\*\falt Times};} +{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic{\*\falt Times};}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese){\*\falt Times};} +{\fdbminor\f31560\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt ???????\'a1\'ec????};}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE{\*\falt Arial Rounded MT Bold};} +{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr{\*\falt Arial Rounded MT Bold};}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek{\*\falt Arial Rounded MT Bold};} +{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur{\*\falt Arial Rounded MT Bold};}{\fhiminor\f31573\fbidi \fswiss\fcharset177\fprq2 Calibri (Hebrew){\*\falt Arial Rounded MT Bold};} +{\fhiminor\f31574\fbidi \fswiss\fcharset178\fprq2 Calibri (Arabic){\*\falt Arial Rounded MT Bold};}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic{\*\falt Arial Rounded MT Bold};} +{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese){\*\falt Arial Rounded MT Bold};}{\fbiminor\f31578\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\fbiminor\f31579\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;} +{\fbiminor\f31581\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\fbiminor\f31582\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\fbiminor\f31583\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);} +{\fbiminor\f31584\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\fbiminor\f31585\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\fbiminor\f31586\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255; +\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0; +\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;\cfollowedhyperlink\ctint255\cshade255\red128\green0\blue128;\red43\green87\blue154;\red230\green230\blue230;\red96\green94\blue92; +\red225\green223\blue221;\red0\green0\blue102;\ctextone\ctint255\cshade255\red0\green0\blue0;}{\*\defchp \fs22\dbch\af11 }{\*\defpap \ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 } +\noqfpromote {\stylesheet{\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \snext0 \sautoupd \sqformat \spriority0 \styrsid14370462 Normal;}{\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar +\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls26\outlinelevel0\adjustright\rin0\lin357\itap0 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext1 \slink15 \sqformat heading 1;}{\s2\ql \fi-363\li720\ri0\sb120\sa120\widctlpar\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 +\b\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext2 \slink16 \sqformat heading 2;}{\s3\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar +\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext3 \slink17 \sqformat heading 3;}{\s4\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl3\outlinelevel3\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext4 \slink18 \sqformat heading 4;}{\s5\ql \fi-357\li1792\ri0\sb120\sa120\widctlpar +\tx1792\jclisttab\tx2155\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl4\outlinelevel4\adjustright\rin0\lin1792\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext5 \slink19 \sqformat heading 5;}{\s6\ql \fi-357\li2149\ri0\sb120\sa120\widctlpar\jclisttab\tx2152\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl5\outlinelevel5\adjustright\rin0\lin2149\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext6 \slink20 \sqformat heading 6;}{\s7\ql \fi-357\li2506\ri0\sb120\sa120\widctlpar +\jclisttab\tx2509\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl6\outlinelevel6\adjustright\rin0\lin2506\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext7 \slink21 \sqformat heading 7;}{\s8\ql \fi-357\li2863\ri0\sb120\sa120\widctlpar\jclisttab\tx2866\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl7\outlinelevel7\adjustright\rin0\lin2863\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext8 \slink22 \sqformat heading 8;}{\s9\ql \fi-358\li3221\ri0\sb120\sa120\widctlpar +\jclisttab\tx3223\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl8\outlinelevel8\adjustright\rin0\lin3221\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext9 \slink23 \sqformat heading 9;}{\*\cs10 \additive \sunhideused \spriority1 Default Paragraph Font;}{\* +\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}{\* +\cs15 \additive \rtlch\fcs1 \ab\af43\afs19 \ltrch\fcs0 \b\f43\fs19 \sbasedon10 \slink1 \slocked Heading 1 Char;}{\*\cs16 \additive \rtlch\fcs1 \ab\af43\afs19 \ltrch\fcs0 \b\f43\fs19 \sbasedon10 \slink2 \slocked Heading 2 Char;}{\*\cs17 \additive +\rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f43\fs19 \sbasedon10 \slink3 \slocked Heading 3 Char;}{\*\cs18 \additive \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f43\fs19 \sbasedon10 \slink4 \slocked Heading 4 Char;}{\*\cs19 \additive \rtlch\fcs1 \af43\afs19 +\ltrch\fcs0 \f43\fs19 \sbasedon10 \slink5 \slocked Heading 5 Char;}{\*\cs20 \additive \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f43\fs19 \sbasedon10 \slink6 \slocked Heading 6 Char;}{\*\cs21 \additive \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f43\fs19 +\sbasedon10 \slink7 \slocked Heading 7 Char;}{\*\cs22 \additive \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f43\fs19 \sbasedon10 \slink8 \slocked Heading 8 Char;}{\*\cs23 \additive \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f43\fs19 \sbasedon10 \slink9 \slocked +Heading 9 Char;}{\s24\ql \li357\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin357\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext24 Body 1;}{\s25\ql \li720\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext25 Body 2;}{\s26\ql \li1077\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 +\af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext26 Body 3;}{ +\s27\ql \li1435\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext27 Body 4;}{\s28\ql \li1803\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1803\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext28 Body 5;}{\s29\ql \li2160\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2160\itap0 \rtlch\fcs1 +\af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext29 Body 6;}{ +\s30\ql \li2506\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2506\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext30 Body 7;}{\s31\ql \li2863\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2863\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext31 Body 8;}{\s32\ql \li3221\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin3221\itap0 \rtlch\fcs1 +\af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext32 Body 9;}{\s33\ql \fi-357\li357\ri0\sb120\sa120\widctlpar +\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin357\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext33 Bullet 1;}{ +\s34\ql \fi-363\li720\ri0\sb120\sa120\widctlpar\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext34 Bullet 2;}{\s35\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar\jclisttab\tx1080\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin1077\itap0 +\rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext35 \slink87 Bullet 3;}{\s36\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar +\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext36 Bullet 4;}{ +\s37\ql \fi-357\li1792\ri0\sb120\sa120\widctlpar\jclisttab\tx1795\wrapdefault\aspalpha\aspnum\faauto\ls5\adjustright\rin0\lin1792\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext37 Bullet 5;}{\s38\ql \fi-357\li2149\ri0\sb120\sa120\widctlpar\jclisttab\tx2152\wrapdefault\aspalpha\aspnum\faauto\ls6\adjustright\rin0\lin2149\itap0 +\rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext38 Bullet 6;}{\s39\ql \fi-357\li2506\ri0\sb120\sa120\widctlpar +\jclisttab\tx2509\wrapdefault\aspalpha\aspnum\faauto\ls7\adjustright\rin0\lin2506\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext39 Bullet 7;}{ +\s40\ql \fi-357\li2863\ri0\sb120\sa120\widctlpar\jclisttab\tx2866\wrapdefault\aspalpha\aspnum\faauto\ls8\adjustright\rin0\lin2863\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext40 Bullet 8;}{\s41\ql \fi-358\li3221\ri0\sb120\sa120\widctlpar\jclisttab\tx3223\wrapdefault\aspalpha\aspnum\faauto\ls9\adjustright\rin0\lin3221\itap0 +\rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon32 \snext41 Bullet 9;}{ +\s42\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 \ab\af43\afs28\alang1025 \ltrch\fcs0 \b\fs28\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext0 Heading EULA;}{\s43\ql \li90\ri0\sb120\sa120\widctlpar\brdrb\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 \ab\af43\afs28\alang1025 \ltrch\fcs0 +\b\fs28\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Heading Software Title;}{\s44\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 +\ab\af43\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext44 Preamble;}{\s45\ql \li90\ri0\sb120\sa120\widctlpar\brdrb\brdrs\brdrw10\brsp20 +\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext1 Preamble Border;}{ +\s46\qc \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext46 Heading Warranty;}{\s47\ql \fi-360\li360\ri0\sb120\sa120\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls11\outlinelevel0\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 Heading 1 Warranty;}{\s48\ql \fi-360\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls11\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext0 Heading 2 Warranty;}{\s49\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 +\b\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon3 \snext49 \slink107 Heading 3 Bold;}{\s50\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar +\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\ul\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon36 \snext50 +Bullet 4 Underline;}{\s51\ql \li0\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\ul\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon35 \snext51 Bullet 3 Underline;}{\s52\ql \li720\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 +\af43\afs19\alang1025 \ltrch\fcs0 \fs19\ul\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon25 \snext52 Body 2 Underline;}{ +\s53\ql \li1077\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\ul\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon26 \snext53 Body 3 Underline;}{\s54\ql \li90\ri0\sb120\sa120\sl480\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext54 \slink55 Body Text Indent;}{\*\cs55 \additive \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f43\fs19 \sbasedon10 \slink54 \slocked \ssemihidden +Body Text Indent Char;}{\s56\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \ai\af43\afs19\alang1025 \ltrch\fcs0 +\i\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon36 \snext56 Bullet 4 Italics;}{\*\cs57 \additive \rtlch\fcs1 \af43 \ltrch\fcs0 \f43\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 Body 2 Char;}{\* +\cs58 \additive \rtlch\fcs1 \af43 \ltrch\fcs0 \f43\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 Body 3 Char;}{\*\cs59 \additive \rtlch\fcs1 \af43 \ltrch\fcs0 \f43\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 Body 4 Char;}{\*\cs60 +\additive \rtlch\fcs1 \af43 \ltrch\fcs0 \f43\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 Body 1 Char;}{\s61\ql \li90\ri0\sb120\sa120\widctlpar\brdrt\brdrs\brdrw10\brsp20 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 +\rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon44 \snext61 Preamble Border Above;}{ +\s62\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext62 \slink63 \ssemihidden footnote text;}{\*\cs63 \additive \rtlch\fcs1 \af43\afs20 \ltrch\fcs0 \f43\fs20 \sbasedon10 \slink62 \slocked \ssemihidden Footnote Text Char;}{\*\cs64 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \super +\sbasedon10 \ssemihidden footnote reference;}{\s65\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext65 \slink66 \ssemihidden endnote text;}{\*\cs66 \additive \rtlch\fcs1 \af43\afs20 \ltrch\fcs0 \f43\fs20 \sbasedon10 \slink65 \slocked \ssemihidden +Endnote Text Char;}{\*\cs67 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \super \sbasedon10 \ssemihidden endnote reference;}{\s68\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 +\af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext68 \slink69 \ssemihidden annotation text;}{\*\cs69 \additive \rtlch\fcs1 \af43\afs20 \ltrch\fcs0 \f43\fs20 +\sbasedon10 \slink68 \slocked \ssemihidden Comment Text Char;}{\*\cs70 \additive \rtlch\fcs1 \af0\afs16 \ltrch\fcs0 \fs16 \sbasedon10 \ssemihidden annotation reference;}{\s71\ql \li90\ri0\sa160\sl-240\slmult0 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext71 Char;}{ +\s72\ql \li90\ri0\sa160\sl-240\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext72 Char Char Char Char;}{\*\cs73 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf2 \sbasedon10 Hyperlink,Char Char7;}{\s74\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 +\af43\afs16\alang1025 \ltrch\fcs0 \fs16\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext74 \slink75 \ssemihidden Balloon Text;}{\*\cs75 \additive \rtlch\fcs1 \af43\afs16 \ltrch\fcs0 \f43\fs16 +\sbasedon10 \slink74 \slocked \ssemihidden Balloon Text Char;}{\*\cs76 \additive \rtlch\fcs1 \ab\af44 \ltrch\fcs0 \b\f44\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 Heading 2 Char1;}{\*\cs77 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 +page number;}{\s78\ql \li90\ri0\sa160\sl-240\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext78 Char Char Char Char1;}{\s79\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af43\afs19\alang1025 +\ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \snext0 \slink109 Body 0 Bold;}{\s80\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af43\afs19\alang1025 +\ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \snext0 Body 0;}{\s81\ql \li90\ri0\sb120\sa120\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 +\af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext81 \slink82 header;}{\*\cs82 \additive \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f43\fs19 \sbasedon10 \slink81 \slocked +Header Char;}{\s83\ql \li90\ri0\sb120\sa120\widctlpar\tqc\tx4320\tqr\tx8640\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext83 \slink84 footer;}{\*\cs84 \additive \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f43\fs19 \sbasedon10 \slink83 \slocked Footer Char;}{ +\s85\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 \ab\af43\afs20\alang1025 \ltrch\fcs0 \b\fs20\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon68 \snext68 \slink86 \ssemihidden \sunhideused annotation subject;}{\*\cs86 \additive \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20 \sbasedon69 \slink85 \slocked \ssemihidden Comment Subject Char;}{\*\cs87 \additive \rtlch\fcs1 \af43\afs19 +\ltrch\fcs0 \f43\fs19 \sbasedon10 \slink35 \slocked Bullet 3 Char1;}{\s88\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar\jclisttab\tx1080\wrapdefault\aspalpha\aspnum\faauto\ls3\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\ul\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon35 \snext88 Bullet 3 Underlined;}{\*\cs89 \additive \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\langnp1033\langfenp1033 \sbasedon10 Char Char;}{\s90\ql \li0\ri0\sl-240\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af43\afs20\alang1025 \ltrch\fcs0 +\fs18\lang1033\langfe1033\loch\f44\hich\af44\dbch\af11\cgrid\langnp1033\langfenp1033 \snext90 \spriority0 AdditionalSoftware;}{\*\cs91 \additive \rtlch\fcs1 \af43\afs24\alang1025 \ltrch\fcs0 \b\f44\fs24\lang1033\langfe1033\langnp1033\langfenp1033 +\sbasedon10 \spriority0 Char Char1;}{\s92\ql \fi-358\li1435\ri0\sb120\sa120\widctlpar\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin1435\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\ul\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon36 \snext92 \spriority0 Bullet 4 Underlined;}{\s93\ql \fi-360\li360\ri0\sb120\sa120\widctlpar +\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls13\adjustright\rin0\lin360\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext93 \spriority0 +Heading French Warranty;}{\*\cs94 \additive \f43\lang1033\langfe0\langnp1033\langfenp0 \slocked Body 3 Char Car Car Car Car Car Car Car Car Car Car Car Car Car Car Car Car Car Car Car Car Car Car Car Car;}{\*\cs95 \additive +\f2\cf15\lang1024\langfe1024\noproof tw4winExternal;}{\*\cs96 \additive \v\f2\fs24\cf12\sub tw4winMark;}{\*\cs97 \additive \b\f43 Preamble Char;}{\*\cs98 \additive \f2\fs40\cf4 tw4winError;}{\*\cs99 \additive \cf2 tw4winTerm;}{\*\cs100 \additive +\f2\cf11\lang1024\langfe1024\noproof tw4winPopup;}{\*\cs101 \additive \f2\cf10\lang1024\langfe1024\noproof tw4winJump;}{\*\cs102 \additive \f2\cf6\lang1024\langfe1024\noproof tw4winInternal;}{\*\cs103 \additive \f2\cf13\lang1024\langfe1024\noproof +DO_NOT_TRANSLATE;}{\s104\ql \li90\ri0\sb120\sa120\sl480\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext104 \slink105 Body Text 2;}{\*\cs105 \additive \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f43\fs19 \sbasedon10 \slink104 \slocked Body Text 2 Char;}{ +\s106\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls10\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon49 \snext106 \slink108 Style Heading 3 Bold + (Asian) Times New Roman 9.5 pt;}{\*\cs107 \additive \rtlch\fcs1 \ab\af43\afs19 \ltrch\fcs0 \b\f43\fs19 +\sbasedon10 \slink49 \slocked Heading 3 Bold Char;}{\*\cs108 \additive \rtlch\fcs1 \ab0\af43\afs19 \ltrch\fcs0 \b0\f43\fs19 \sbasedon107 \slink106 \slocked Style Heading 3 Bold + (Asian) Times New Roman 9.5 pt Char;}{\*\cs109 \additive \rtlch\fcs1 +\ab\af43\afs19 \ltrch\fcs0 \b\f43\fs19 \sbasedon10 \slink79 \slocked Body 0 Bold Char;}{\s110\ql \li90\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 \ab\af43\afs20\alang1025 \ltrch\fcs0 +\b\fs20\lang1026\langfe2052\super\loch\f43\hich\af43\dbch\af11\cgrid\langnp1026\langfenp2052 \sbasedon0 \snext110 \slink111 LIMPA_T4WINEXTERNAL;}{\*\cs111 \additive \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 +\b\f43\fs20\lang1026\langfe2052\super\langnp1026\langfenp2052 \sbasedon10 \slink110 \slocked LIMPA_T4WINEXTERNAL Char;}{\s112\ql \li720\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\contextualspace \rtlch\fcs1 +\af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\f43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext112 \sqformat \spriority34 \styrsid15671332 List Paragraph;}{\*\cs113 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf19 +\sbasedon10 \ssemihidden \sunhideused \styrsid9046424 FollowedHyperlink;}{\*\cs114 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \cf15 \sbasedon10 \ssemihidden \styrsid12455081 Placeholder Text;}{ +\s115\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs21\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f37\hich\af37\dbch\af11\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext115 \slink116 \ssemihidden \sunhideused \styrsid3099185 Plain Text;}{\*\cs116 \additive \rtlch\fcs1 \af0\afs21 \ltrch\fcs0 \f37\fs21 \sbasedon10 \slink115 \slocked \ssemihidden \styrsid3099185 Plain Text Char;}{\*\cs117 \additive +\rtlch\fcs1 \af0 \ltrch\fcs0 \cf20\chshdng0\chcfpat0\chcbpat21 \sbasedon10 \ssemihidden \sunhideused \styrsid1472633 Mention;}{\*\cs118 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \cf22\chshdng0\chcfpat0\chcbpat23 +\sbasedon10 \ssemihidden \sunhideused \styrsid8605371 Unresolved Mention;}{\s119\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 +\fs24\lang1033\langfe1033\loch\f0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext119 \ssemihidden \sunhideused \styrsid9006310 Normal (Web);}}{\*\listtable{\list\listtemplateid-1324867376\listhybrid{\listlevel\levelnfc23\levelnfcn23 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext +\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext +\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext +\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listname ;}\listid21824253}{\list\listtemplateid-1286171580\listhybrid{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698709\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li3600\lin3600 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li5760\lin5760 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li6480\lin6480 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li7200\lin7200 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li7920\lin7920 }{\listname ;}\listid103504733}{\list\listtemplateid-2038397894\listhybrid{\listlevel\levelnfc3\levelnfcn3 +\leveljc0\leveljcn0\levelfollow0\levelstartat10\levelspace0\levelindent0{\leveltext\leveltemplateid988212356\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc4\levelnfcn4 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2 +\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2 +\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2 +\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6480\lin6480 }{\listname ;}\listid103960492} +{\list\listtemplateid176468498\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid692200086\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \s41 +\fi-358\li3221\jclisttab\tx3223\lin3221 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440 +\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160 +\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880 +\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 +}{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel +\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0 +\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid196815738} +{\list\listtemplateid-1671774606\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 +\fi-360\li2157\lin2157 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li2877\lin2877 } +{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li3597\lin3597 }{\listlevel +\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li4317\lin4317 }{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5037\lin5037 }{\listlevel\levelnfc23\levelnfcn23\leveljc0 +\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li5757\lin5757 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li6477\lin6477 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li7197\lin7197 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li7917\lin7917 }{\listname ;}\listid297614354}{\list\listtemplateid-398971608\listhybrid{\listlevel\levelnfc23\levelnfcn23 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext +\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\lin6480 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext +\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li7200\lin7200 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext +\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li7920\lin7920 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li8640\lin8640 }{\listname ;}\listid362361558}{\list\listtemplateid-1793664660{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 +{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0 \b\i0\fbias0\hres0\chhres0 \s47\fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 +{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0 \b\i0\fbias0\hres0\chhres0 \s48\fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 +{\leveltext\'02\'02);}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\'03(\'03);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\'03(\'04);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li1800\jclisttab\tx1800\lin1800 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\'03(\'05);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li2520\jclisttab\tx2520\lin2520 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li3240\jclisttab\tx3240\lin3240 }{\listname ;}\listid394402059}{\list\listtemplateid1928476992{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af44\afs20 \ltrch\fcs0 \b\i0\f44\fs20\fbias0\hres0\chhres0 \fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af44\afs20 \ltrch\fcs0 \b\i0\f44\fs20\fbias0\hres0\chhres0 \fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0 +\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af43\afs20 \ltrch\fcs0 \b\i0\f43\fs20\fbias0\hres0\chhres0 \s49\fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc3 +\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af44\afs20 \ltrch\fcs0 \b0\i0\strike0\f44\fs20\ulnone\fbias0\hres0\chhres0 \fi-358\li1435 +\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc1\levelnfcn1\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af44\afs20 \ltrch\fcs0 +\b0\i0\strike0\f44\fs20\ulnone\fbias0\hres0\chhres0 \fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 +\ab0\ai0\af44\afs20 \ltrch\fcs0 \b0\i0\f44\fs20\fbias0\hres0\chhres0 \fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;} +\rtlch\fcs1 \ab0\ai0\af44\afs20 \ltrch\fcs0 \b0\i0\f44\fs20\fbias0\hres0\chhres0 \fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af44\afs20 \ltrch\fcs0 \b0\i0\f44\fs20\fbias0\hres0\chhres0 \fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 +{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af44\afs20 \ltrch\fcs0 \b0\i0\f44\fs20\fbias0\hres0\chhres0 \fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid398796681}{\list\listtemplateid727596770\listhybrid{\listlevel\levelnfc2 +\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1080\lin1080 }{\listlevel\levelnfc4\levelnfcn4 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1800\lin1800 }{\listlevel\levelnfc2\levelnfcn2\leveljc2 +\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2520\lin2520 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3240\lin3240 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3960\lin3960 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1 +\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4680\lin4680 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5400\lin5400 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li6120\lin6120 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6840\lin6840 }{\listname ;}\listid453669808}{\list\listtemplateid789093748\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid-317712510\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \s34\fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689 +\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691 +\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid477573462}{\list\listtemplateid727596770\listhybrid{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1 +\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1080\lin1080 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1800\lin1800 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2520\lin2520 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3240\lin3240 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3960\lin3960 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4680\lin4680 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5400\lin5400 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li6120\lin6120 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6840\lin6840 }{\listname ;}\listid621306136}{\list\listtemplateid-130630884{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af43\afs20 \ltrch\fcs0 \b\i0\f43\fs20\fbias0\hres0\chhres0 \s1\fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af43\afs20 \ltrch\fcs0 \b\i0\f43\fs20\fbias0\hres0\chhres0 \s2\fi-363\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc2\levelnfcn2\leveljc0 +\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af43\afs20 \ltrch\fcs0 \b\i0\f43\fs20\fbias0\hres0\chhres0 \s3\fi-357\li1077\jclisttab\tx1440\lin1077 }{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\b0\i0\strike0\f3\fs20\ulnone\fbias0\hres0\chhres0 \s4\fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc23\levelnfcn23 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\b0\i0\strike0\f3\fs20\ulnone\fbias0\hres0\chhres0 \s5\fi-357\li1792\jclisttab\tx2155\lin1792 }{\listlevel\levelnfc23\levelnfcn23\leveljc0 +\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\b0\i0\f3\fs20\fbias0\hres0\chhres0 \s6\fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\b0\i0\f3\fs20\fbias0\hres0\chhres0 \s7\fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\'02i.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af44\afs20 \ltrch\fcs0 \b0\i0\f44\fs20\fbias0\hres0\chhres0 \s8\fi-357\li2863\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc255\levelnfcn255\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace0\levelindent0{\leveltext\'02A.;}{\levelnumbers;}\rtlch\fcs1 \ab0\ai0\af44\afs20 \ltrch\fcs0 \b0\i0\f44\fs20\fbias0\hres0\chhres0 \s9\fi-358\li3221\jclisttab\tx3223\lin3221 }{\listname ;}\listid752163927}{\list\listtemplateid1638550502 +\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\b0\f3\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc4 +\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2 +\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0 +\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4 +\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2 +\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0 +\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4 +\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2 +\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6480\lin6480 }{\listname +;}\listid807170055}{\list\listtemplateid-296591990\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \s40\fi-357\li2863 +\jclisttab\tx2866\lin2863 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;} +\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760 +\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname +;}\listid810947713}{\list\listtemplateid2100600426\listhybrid{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat6\levelspace0\levelindent0{\leveltext\leveltemplateid1102760264\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li717\lin717 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-180\li6480\lin6480 }{\listname ;}\listid833034392}{\list\listtemplateid-737381984\listhybrid{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat6\levelspace0\levelindent0{\leveltext +\leveltemplateid-1591064122\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6480\lin6480 }{\listname ;}\listid1127315913}{\list\listtemplateid-1813845996\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0 +\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \s39\fi-357\li2506\jclisttab\tx2509\lin2506 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;} +\f3\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600 +\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel +\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1219436735}{\list\listtemplateid1397413230\listhybrid{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0 +\levelfollow0\levelstartat5\levelspace0\levelindent0{\leveltext\leveltemplateid1649943972\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \b\fbias0\hres0\chhres0 \fi-360\li717\lin717 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6480\lin6480 }{\listname ;}\listid1549565665} +{\list\listtemplateid303218272\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid612407812\'01\u-3913 ?;}{\levelnumbers;}\f3\cf25\fbias0\hres0\chhres0 \s36 +\fi-358\li1435\jclisttab\tx1437\lin1435 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 } +{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;} +\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760 +\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname +;}\listid1559511898}{\list\listtemplateid-789807850\listhybrid{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid872742900\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \b\fbias0\hres0\chhres0 \s35\fi-357\li1077\jclisttab\tx1080\lin1077 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;} +\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;} +\f10\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;} +\f3\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 +\fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320 +\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040 +\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 +}{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname +;}\listid1567649130}{\list\listtemplateid-517838926\listhybrid{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-180\li2880\lin2880 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-360\li4320\lin4320 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-180\li5040\lin5040 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-360\li6480\lin6480 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-180\li7200\lin7200 }{\listname ;}\listid1603076124}{\list\listtemplateid-353719276\listhybrid{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat8\levelspace0\levelindent0{\leveltext +\leveltemplateid82885166\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \b0\fbias0\hres0\chhres0 \fi-360\li2160\lin2160 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6480\lin6480 }{\listname ;}\listid1642882363}{\list\listtemplateid1826634956\listhybrid{\listlevel\levelnfc4\levelnfcn4\leveljc0 +\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1391094484\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0\hres0\chhres0 \fi-360\li717\lin717 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1437\lin1437 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2157\lin2157 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2877\lin2877 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3597\lin3597 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4317\lin4317 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5037\lin5037 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5757\lin5757 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2 +\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6477\lin6477 }{\listname ;}\listid1767533175} +{\list\listtemplateid-627926538\listhybrid{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat6\levelspace0\levelindent0{\leveltext\leveltemplateid-624682846\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af43\afs20 \ltrch\fcs0 +\b\f43\fs20\fbias0\hres0\chhres0 \fi-360\li1080\lin1080 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 +\af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1803\lin1803 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-180\li2523\lin2523 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-360\li3243\lin3243 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-360\li3963\lin3963 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-180\li4683\lin4683 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-360\li5403\lin5403 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-360\li6123\lin6123 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 +\ltrch\fcs0 \hres0\chhres0 \fi-180\li6843\lin6843 }{\listname ;}\listid1767655658}{\list\listtemplateid-154908222\listhybrid{\listlevel\levelnfc3\levelnfcn3\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid-596080174\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af0 \ltrch\fcs0 \b\i0\fbias0\hres0\chhres0 \s93\fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1795057320}{\list\listtemplateid-961874242\listhybrid{\listlevel +\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid-1175557160\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \s37\fi-357\li1792\jclisttab\tx1795\lin1792 }{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0 +\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 +\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1848404271}{\list\listtemplateid-1299277166\listhybrid{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li717\lin717 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1437\lin1437 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative +\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2157\lin2157 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2877\lin2877 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3597\lin3597 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative +\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4317\lin4317 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace0\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5037\lin5037 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\lvltentative +\levelspace0\levelindent0{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5757\lin5757 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\lvltentative +\levelspace0\levelindent0{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li6477\lin6477 }{\listname ;}\listid1850177709}{\list\listtemplateid-1802592190\listhybrid{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1229593488\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \s38\fi-357\li2149\jclisttab\tx2152\lin2149 }{\listlevel\levelnfc23\levelnfcn23 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1877695764}{\list\listtemplateid-1713720630\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li1080\lin1080 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1800\lin1800 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2520\lin2520 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;} +\f3\fbias0\hres0\chhres0 \fi-360\li3240\lin3240 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 +\fi-360\li3960\lin3960 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4680\lin4680 } +{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5400\lin5400 }{\listlevel\levelnfc23\levelnfcn23 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li6120\lin6120 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6840\lin6840 }{\listname ;}\listid2026209227}{\list\listtemplateid1186249844\listhybrid{\listlevel\levelnfc23 +\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid1637229796\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \s33\fi-357\li357\jclisttab\tx360\lin357 }{\listlevel\levelnfc23\levelnfcn23 +\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0 +\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0 +\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1 +\levelspace0\levelindent0{\leveltext\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 +{\leveltext\leveltemplateid67698693\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li4320\jclisttab\tx4320\lin4320 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698689\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0\hres0\chhres0 \fi-360\li5040\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext +\leveltemplateid67698691\'01o;}{\levelnumbers;}\f2\fbias0\hres0\chhres0 \fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67698693 +\'01\u-3929 ?;}{\levelnumbers;}\f10\fbias0\hres0\chhres0 \fi-360\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid2054619191}}{\*\listoverridetable{\listoverride\listid2054619191\listoverridecount0\ls1}{\listoverride\listid477573462 +\listoverridecount0\ls2}{\listoverride\listid1567649130\listoverridecount0\ls3}{\listoverride\listid1559511898\listoverridecount0\ls4}{\listoverride\listid1848404271\listoverridecount0\ls5}{\listoverride\listid1877695764\listoverridecount0\ls6} +{\listoverride\listid1219436735\listoverridecount0\ls7}{\listoverride\listid810947713\listoverridecount0\ls8}{\listoverride\listid196815738\listoverridecount0\ls9}{\listoverride\listid398796681\listoverridecount0\ls10}{\listoverride\listid394402059 +\listoverridecount0\ls11}{\listoverride\listid752163927\listoverridecount0\ls12}{\listoverride\listid1795057320\listoverridecount0\ls13}{\listoverride\listid752163927\listoverridecount9{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel +\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat +\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}\ls14}{\listoverride\listid752163927\listoverridecount9{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1} +{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat +\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}\ls15}{\listoverride\listid2026209227\listoverridecount0\ls16}{\listoverride\listid752163927\listoverridecount9{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat +\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel +\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}\ls17}{\listoverride\listid297614354\listoverridecount0\ls18}{\listoverride\listid1850177709\listoverridecount0\ls19}{\listoverride\listid21824253\listoverridecount0\ls20} +{\listoverride\listid362361558\listoverridecount0\ls21}{\listoverride\listid103504733\listoverridecount0\ls22}{\listoverride\listid1642882363\listoverridecount0\ls23}{\listoverride\listid103960492\listoverridecount0\ls24}{\listoverride\listid752163927 +\listoverridecount0\ls25}{\listoverride\listid752163927\listoverridecount0\ls26}{\listoverride\listid1767533175\listoverridecount0\ls27}{\listoverride\listid833034392\listoverridecount0\ls28}{\listoverride\listid1549565665\listoverridecount0\ls29} +{\listoverride\listid1127315913\listoverridecount0\ls30}{\listoverride\listid807170055\listoverridecount0\ls31}{\listoverride\listid1767655658\listoverridecount0\ls32}{\listoverride\listid453669808\listoverridecount9{\lfolevel\listoverridestartat +\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel +\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}\ls33}{\listoverride\listid621306136\listoverridecount9{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat +\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel +\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}\ls34}{\listoverride\listid1603076124\listoverridecount0\ls35}{\listoverride\listid752163927\listoverridecount9{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel +\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel}{\lfolevel}{\lfolevel}{\lfolevel}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}\ls36}{\listoverride\listid752163927 +\listoverridecount9{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel}{\lfolevel}{\lfolevel}{\lfolevel}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel +\listoverridestartat\levelstartat1}\ls37}}{\*\pgptbl {\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0 +\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0 +\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0 +\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}}{\*\rsidtbl \rsid31619\rsid138238\rsid142056\rsid278067\rsid341127\rsid421856\rsid468211\rsid532396\rsid537980\rsid543100\rsid591170\rsid733240 +\rsid742407\rsid804592\rsid863221\rsid878387\rsid927236\rsid930849\rsid942188\rsid992761\rsid999554\rsid1073171\rsid1121230\rsid1126782\rsid1196305\rsid1277370\rsid1326355\rsid1329577\rsid1451044\rsid1472633\rsid1519413\rsid1522673\rsid1524815\rsid1527996 +\rsid1528546\rsid1574971\rsid1582711\rsid1595803\rsid1639423\rsid1729066\rsid1735716\rsid1770286\rsid1846009\rsid1856079\rsid1909904\rsid1917826\rsid1968038\rsid1982071\rsid1983041\rsid2099865\rsid2102976\rsid2112928\rsid2192282\rsid2194844\rsid2316161 +\rsid2514694\rsid2521189\rsid2560822\rsid2585396\rsid2651997\rsid2706528\rsid2713409\rsid2716316\rsid2718377\rsid2829694\rsid2841082\rsid2914924\rsid2963962\rsid3018435\rsid3020156\rsid3082896\rsid3090423\rsid3099185\rsid3171575\rsid3226043\rsid3289144 +\rsid3289579\rsid3291761\rsid3293678\rsid3297071\rsid3346855\rsid3414719\rsid3503490\rsid3540656\rsid3559666\rsid3671582\rsid3744016\rsid3871134\rsid3894335\rsid3935671\rsid3939038\rsid4005392\rsid4022173\rsid4068868\rsid4093123\rsid4217617\rsid4288165 +\rsid4288919\rsid4347662\rsid4351935\rsid4353404\rsid4552639\rsid4860412\rsid4871695\rsid4944969\rsid5053459\rsid5062890\rsid5072655\rsid5111940\rsid5124098\rsid5133814\rsid5206652\rsid5210069\rsid5328105\rsid5404428\rsid5449220\rsid5464247\rsid5528190 +\rsid5534708\rsid5537145\rsid5578407\rsid5583611\rsid5593316\rsid5660982\rsid5722447\rsid5731110\rsid5774125\rsid5786846\rsid5848687\rsid5857956\rsid5861783\rsid5929695\rsid6061257\rsid6115879\rsid6168189\rsid6170881\rsid6174468\rsid6175996\rsid6178840 +\rsid6316247\rsid6509920\rsid6558882\rsid6576989\rsid6629559\rsid6651166\rsid6686745\rsid6696469\rsid6750755\rsid6831427\rsid6906187\rsid7145177\rsid7148321\rsid7150305\rsid7157427\rsid7171325\rsid7434677\rsid7539718\rsid7541157\rsid7604497\rsid7609200 +\rsid7632984\rsid7677265\rsid7685880\rsid7743015\rsid7752833\rsid7753709\rsid7799211\rsid7818577\rsid7821668\rsid7826697\rsid7959136\rsid7961222\rsid8003087\rsid8027947\rsid8135332\rsid8197462\rsid8210523\rsid8220956\rsid8264692\rsid8331401\rsid8333247 +\rsid8353149\rsid8406101\rsid8525370\rsid8526120\rsid8605371\rsid8662344\rsid8669634\rsid8680518\rsid8849181\rsid8862676\rsid8867950\rsid8879413\rsid8924419\rsid8983484\rsid9006310\rsid9046424\rsid9053936\rsid9183227\rsid9203174\rsid9308700\rsid9308785 +\rsid9329616\rsid9382181\rsid9398536\rsid9596629\rsid9653457\rsid9704396\rsid9767741\rsid9780096\rsid9963461\rsid9976771\rsid10096937\rsid10099906\rsid10168238\rsid10224565\rsid10229021\rsid10309874\rsid10356525\rsid10380985\rsid10686165\rsid10705044 +\rsid10814144\rsid10820326\rsid10881590\rsid10906834\rsid10955554\rsid11162074\rsid11226145\rsid11276212\rsid11278488\rsid11491061\rsid11564628\rsid11616408\rsid11629599\rsid11696035\rsid11803216\rsid11867748\rsid11885578\rsid11885950\rsid11993548 +\rsid12012443\rsid12021150\rsid12068916\rsid12140514\rsid12149217\rsid12218945\rsid12268008\rsid12273991\rsid12386531\rsid12413218\rsid12455081\rsid12526897\rsid12586717\rsid12735952\rsid12744258\rsid12793417\rsid12798252\rsid12812077\rsid12850423 +\rsid13068826\rsid13205063\rsid13240361\rsid13309049\rsid13310631\rsid13394076\rsid13511187\rsid13526881\rsid13566544\rsid13640804\rsid13712247\rsid13829720\rsid13850869\rsid13908149\rsid14091872\rsid14114137\rsid14178614\rsid14185747\rsid14241659 +\rsid14293112\rsid14360409\rsid14368064\rsid14370462\rsid14437949\rsid14441828\rsid14515577\rsid14579117\rsid14638697\rsid14762553\rsid14821375\rsid14842076\rsid14889818\rsid14942691\rsid15024949\rsid15025335\rsid15105390\rsid15232607\rsid15270004 +\rsid15275922\rsid15339860\rsid15490947\rsid15561557\rsid15613399\rsid15663124\rsid15671332\rsid15675979\rsid15690049\rsid15693612\rsid15732197\rsid15734173\rsid15734585\rsid15750326\rsid15867548\rsid15870935\rsid15879797\rsid15941560\rsid16000031 +\rsid16004791\rsid16076221\rsid16208507\rsid16214760\rsid16337640\rsid16386503\rsid16545116\rsid16596813\rsid16610155\rsid16661370\rsid16737391\rsid437025759\rsid1840142422}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0 +\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\creatim\yr2018\mo8\dy28\hr9\min7}{\revtim\yr2018\mo8\dy28\hr9\min7}{\version1}{\edmins0}{\nofpages7}{\nofwords4203}{\nofchars23962}{\nofcharsws28109}{\vern89}}{\*\userprops {\propname MSIP_Labe +l_f42aa342-8706-4288-bd11-ebb85995028c_Enabled}\proptype30{\staticval True}{\propname MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId}\proptype30{\staticval 72f988bf-86f1-41af-91ab-2d7cd011db47}{\propname MSIP_Label_f42aa342-8706-4288-bd11-ebb85995 +028c_Owner}\proptype30{\staticval kevinla@microsoft.com}{\propname MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate}\proptype30{\staticval 2018-08-28T16:07:36.8579462Z}{\propname MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name}\proptype30 +{\staticval General}{\propname MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Application}\proptype30{\staticval Microsoft Azure Information Protection}{\propname MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Extended_MSFT_Method}\proptype30 +{\staticval Automatic}{\propname Sensitivity}\proptype30{\staticval General}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl720\margr720\margt720\margb720\gutter0\ltrsect +\widowctrl\ftnbj\aenddoc\revisions\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1 +\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin\dghspace95\dgvspace180\dghorigin720\dgvorigin720\dghshow2\dgvshow1 +\jexpand\viewkind1\viewscale140\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\rempersonalinfo\allowfieldendsel +\wrppunct\asianbrkrule\rsidroot2829694\newtblstyruls\nogrowautofit\remdttm\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal +\nouicompat \fet0{\*\wgrffmtfilter 013f}\nofeaturethrottle1\ilfomacatclnup15{\*\ftnsep \ltrpar \pard\plain \ltrpar\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0\pararsid14370462 \rtlch\fcs1 +\af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid8879413 \chftnsep +\par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0\pararsid14370462 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid8879413 \chftnsepc +\par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0\pararsid14370462 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid8879413 \chftnsep +\par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0\pararsid14370462 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid8879413 \chftnsepc +\par }}\ltrpar \sectd \ltrsect\psz1\linex0\headery0\footery0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid421856\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3 +\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}} +{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar +\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0\pararsid14370462 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 { +\rtlch\fcs1 \af43 \ltrch\fcs0 \b\lang1036\langfe1033\langnp1036\insrsid9780096\charrsid7753709 +\par }\pard \ltrpar\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0\pararsid5210069 {\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid9780096\charrsid7753709 \hich\af43\dbch\af11\loch\f43 +MICROSOFT SOFTWARE LICENSE TERMS +\par \hich\af43\dbch\af11\loch\f43 MICROSOFT WINDOWS SOFTWARE DEVELOPMENT KIT}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid1582711\charrsid7753709 \hich\af43\dbch\af11\loch\f43 (SDK) FOR WINDOWS}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid9780096\charrsid7753709 +\hich\af43\dbch\af11\loch\f43 +\par }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid5210069\charrsid543100 \hich\af43\dbch\af11\loch\f43 _______________________________________________________________________________________________________ +\par }\pard \ltrpar\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0\pararsid5722447 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They a\hich\af43\dbch\af11\loch\f43 +pply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft +\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid927236 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s34\ql \fi-363\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid5722447 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 +\ltrch\fcs0 \insrsid927236 \hich\af43\dbch\af11\loch\f43 APIs (i.e., APIs included with the installation of the SDK or APIs accessed by installing extension packages or service to \hich\af43\dbch\af11\loch\f43 use with the SDK),}{\rtlch\fcs1 \af43 +\ltrch\fcs0 \insrsid5133814 +\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid9780096\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 updates, +\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid9780096\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 supplements, +\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid7171325 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard \ltrpar\s34\ql \fi-363\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid6629559 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid7171325 \hich\af43\dbch\af11\loch\f43 i}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid7171325\charrsid543100 +\hich\af43\dbch\af11\loch\f43 nternet}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 -based services, and +\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid9780096\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard \ltrpar\s34\ql \fi-363\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 support services +\par }\pard\plain \ltrpar\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 { +\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 for this software, unless other terms accompany those items. If so, those terms apply. +\par \hich\af43\dbch\af11\loch\f43 By using the software, you accept these terms. If you do not accept them, \hich\af43\dbch\af11\loch\f43 do not use the software.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid5053459\charrsid543100 \hich\af43\dbch\af11\loch\f43 + +\par \hich\af43\dbch\af11\loch\f43 As described below, using some features also operates as your consent to the transmission of certain standard computer information for Internet-based services.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid930849\charrsid543100 + +\par }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid5210069\charrsid543100 \hich\af43\dbch\af11\loch\f43 ________________________________________________________________________________________________}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid930849\delrsid930849\charrsid543100 \hich\af43\dbch\af11\loch\f43 }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid5210069\charrsid543100 +\par }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 If you comply with these license terms, you have the rights below. +\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 1.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar +\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls26\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid1639423 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 { +\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 INSTALLATION}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid1126782 \hich\af43\dbch\af11\loch\f43 AND }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 +\hich\af43\dbch\af11\loch\f43 USE RIGHTS. }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid16208507 \hich\af43\dbch\af11\loch\f43 }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 +\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid1126782 \hich\af43\dbch\af11\loch\f43 a.\tab}}\pard\plain \ltrpar\s2\qj \fi-360\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid1472633 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 +\b\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid1126782 \hich\af43\dbch\af11\loch\f43 +You may install and use any number of copies of the software on your devices to design, develop and test your programs that run on a Microsoft operating system. Further, you may install, use and/or deploy via a network management system or as part of a de +\hich\af43\dbch\af11\loch\f43 s\hich\af43\dbch\af11\loch\f43 +ktop image, any number of copies of the software on computer devices within your internal corporate network to design, develop and test your programs that run on a Microsoft operating system. Each copy must be comp}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid2706528 \hich\af43\dbch\af11\loch\f43 l}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid1126782 \hich\af43\dbch\af11\loch\f43 ete, including all copyright and trademar\hich\af43\dbch\af11\loch\f43 +k notices. You must require end users to agree to terms that protect the software as much as these license terms. }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid14638697 +\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid10820326\charrsid543100 \hich\af43\dbch\af11\loch\f43 b.\tab}}\pard \ltrpar\s2\qj \fi-363\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid1472633 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid10820326\charrsid543100 \hich\af43\dbch\af11\loch\f43 Utilities. }{\rtlch\fcs1 \af43 +\ltrch\fcs0 \b0\insrsid10820326\charrsid1126782 \hich\af43\dbch\af11\loch\f43 The software contains certain components that are identified in the Utilities List located at}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid3297071\charrsid1126782 +\hich\af43\dbch\af11\loch\f43 }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid4860412 \hich\af43\dbch\af11\loch\f43 HYPERLINK "http://go.microsoft.\hich\af43\dbch\af11\loch\f43 com/fwlink/?LinkId=524839" }{\rtlch\fcs1 \af43 +\ltrch\fcs0 \insrsid2706528 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b7400000068007400740070003a002f002f0067006f002e006d006900630072006f0073006f00660074002e0063006f006d002f00660077006c0069006e006b002f003f004c0069006e006b00490064003d0035003200 +34003800330039000000795881f43b1d7f48af2c825dc485276300000000a5ab000100690d00002eff0030690020006800000000}}}{\fldrslt {\rtlch\fcs1 \af43 \ltrch\fcs0 \cs73\b0\ul\cf2\insrsid4068868\charrsid9704396 \hich\af43\dbch\af11\loch\f43 +http://go.microsoft.com/fwlink/?LinkId=524839}}}\sectd \ltrsect\psz1\linex0\headery0\footery0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid421856\sftnbj {\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid10820326\charrsid1126782 .}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid4068868 \hich\af43\dbch\af11\loch\f43 }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid10820326\charrsid1126782 \hich\af43\dbch\af11\loch\f43 Depending on the specific edition of the software, t\hich\af43\dbch\af11\loch\f43 +he number of Utility files you receive with the software may not be equal to the number of Utilities listed in the Utilities List. Except as otherwise provided on the Utilities List for specific files, you may copy and install the Utilities you receive +\hich\af43\dbch\af11\loch\f43 w\hich\af43\dbch\af11\loch\f43 +ith the software on to other third party machines. These Utilities may only be used to debug and deploy your programs and databases you have developed with the software. You must delete all the Utilities installed onto a third}{\rtlch\fcs1 \af43 +\ltrch\fcs0 \b0\insrsid7157427 \hich\af43\dbch\af11\loch\f43 }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid10820326\charrsid1126782 \hich\af43\dbch\af11\loch\f43 party machine within the ear\hich\af43\dbch\af11\loch\f43 +lier of (i) when you have finished debugging or deploying your programs; or (ii) thirty (30) days after installation of the Utilities onto that machine. We may add additional files to this list from time to time.}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid15232607\charrsid1126782 +\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid10820326\charrsid543100 \hich\af43\dbch\af11\loch\f43 c.\tab}}\pard \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid16545116 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid10820326\charrsid543100 \hich\af43\dbch\af11\loch\f43 Build }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid5929695 \hich\af43\dbch\af11\loch\f43 Service}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid7150305 \hich\af43\dbch\af11\loch\f43 s and Enterprise Build Servers}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid5929695 .}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid10820326\charrsid543100 \~\hich\af43\dbch\af11\loch\f43 }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid5929695 \hich\af43\dbch\af11\loch\f43 You}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid11696035 \hich\af43\dbch\af11\loch\f43 may }{\rtlch\fcs1 +\af43 \ltrch\fcs0 \b0\insrsid3291761 \hich\af43\dbch\af11\loch\f43 install and use any number of copies of the software }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid10820326\charrsid543100 \hich\af43\dbch\af11\loch\f43 onto your build machines}{\rtlch\fcs1 +\af43 \ltrch\fcs0 \b0\insrsid11696035 \hich\af43\dbch\af11\loch\f43 or servers}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid10820326\charrsid543100 \hich\af43\dbch\af11\loch\f43 , solely for the purpose of}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid11696035 +\hich\af43\dbch\af11\loch\f43 :}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid11696035\charrsid7150305 +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid11696035 \hich\af43\dbch\af11\loch\f43 i.\tab}}\pard\plain \ltrpar\s3\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar +\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid7150305 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid11696035 \hich\af43\dbch\af11\loch\f43 C}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid10820326\charrsid543100 +\hich\af43\dbch\af11\loch\f43 ompiling, building, verifying and archiving your programs}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid11696035 \hich\af43\dbch\af11\loch\f43 ;}{\rtlch\fcs1 \ab\af43 \ltrch\fcs0 \b\insrsid11696035 +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid11696035 \hich\af43\dbch\af11\loch\f43 ii.\tab}}\pard \ltrpar\s3\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar +\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid14368064 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid11696035 \hich\af43\dbch\af11\loch\f43 Creating and configuring build +\hich\af43\dbch\af11\loch\f43 systems internal to your organization to support your internal build environment;}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid15732197 \hich\af43\dbch\af11\loch\f43 or}{\rtlch\fcs1 \ab\af43 \ltrch\fcs0 \b\insrsid11696035 +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid11696035 \hich\af43\dbch\af11\loch\f43 iii.\tab}}\pard \ltrpar\s3\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar +\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid7150305 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid11696035 \hich\af43\dbch\af11\loch\f43 +Enabling a service for third parties to design, develop and test programs or services that run on a Microsoft operating system. }{\rtlch\fcs1 \ab\af43 \ltrch\fcs0 \b\insrsid10820326\charrsid11696035 +\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 d.\tab}}\pard\plain \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid5722447 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 +\b\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 Included Microsoft Programs.}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 The s\hich\af43\dbch\af11\loch\f43 oftware contains other Microsoft programs. The license terms with those programs apply to your use of them. +\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid2514694\charrsid543100 \hich\af43\dbch\af11\loch\f43 e.\tab}}\pard \ltrpar\s2\qj \fi-363\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid2560822 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid2514694\charrsid543100 \hich\af43\dbch\af11\loch\f43 Third Party Notices.}{\rtlch\fcs1 \af43 +\ltrch\fcs0 \b0\insrsid2514694\charrsid543100 \hich\af43\dbch\af11\loch\f43 The software may include third party code that Microsoft, not the third party, licenses to you under this agreement. Notice\hich\af43\dbch\af11\loch\f43 s, if any, for the third +}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid7157427 \hich\af43\dbch\af11\loch\f43 }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid2514694\charrsid543100 \hich\af43\dbch\af11\loch\f43 +party code are included for your information only. Notices, if any, for this third}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid7157427 \hich\af43\dbch\af11\loch\f43 }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid2514694\charrsid543100 +\hich\af43\dbch\af11\loch\f43 party code are included with the software and may be located at}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid8003087 \hich\af43\dbch\af11\loch\f43 }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid1472633\charrsid7157427 \hich\af43\dbch\af11\loch\f43 HYPERLINK "http://aka.ms/thirdpartynotices" }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid9596629\charrsid7157427 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b5800000068007400740070003a002f002f0061006b0061002e006d0073002f0074006800690072006400700061007200740079006e006f00740069006300650073000000795881f43b1d7f48af2c825dc48527630000 +0000a5ab000300032e50000000030000}}}{\fldrslt {\rtlch\fcs1 \af43 \ltrch\fcs0 \cs73\b0\ul\cf2\insrsid1472633\charrsid7157427 \hich\af43\dbch\af11\loch\f43 http://aka.ms/thirdpartynotices}}}\sectd \ltrsect +\psz1\linex0\headery0\footery0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid421856\sftnbj {\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid7157427 .}{\rtlch\fcs1 \af44 \ltrch\fcs0 \b0\f44\cf24\insrsid1472633\charrsid1472633 +\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\cf24\insrsid7157427 \hich\af43\dbch\af11\loch\f43 2.\tab}}\pard\plain \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar +\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls26\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid8406101 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 { +\rtlch\fcs1 \af44 \ltrch\fcs0 \b0\f44\cf24\insrsid7157427 \page }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9329616\charrsid543100 \hich\af43\dbch\af11\loch\f43 A\hich\af43\dbch\af11\loch\f43 DDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS. +\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid1126782 \hich\af43\dbch\af11\loch\f43 a.\tab}}\pard\plain \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid5722447 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 +\b\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid1126782 \hich\af43\dbch\af11\loch\f43 Distributable Code. }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid1126782 +\hich\af43\dbch\af11\loch\f43 The software contains code that you are permitted to distribute in programs you develop if you comply with the terms below. +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid1126782 \hich\af43\dbch\af11\loch\f43 i.\tab}}\pard\plain \ltrpar\s3\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar +\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid1639423 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid1126782 \hich\af43\dbch\af11\loch\f43 \hich\f43 Right to Use and Distribute. The code and test files listed below are \'93 +\loch\f43 \hich\f43 Distributable Code\'94.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid1126782\charrsid1126782 +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid1126782\charrsid1126782 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s4\qj \fi-358\li1435\ri0\sb120\sa120\widctlpar +\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl3\outlinelevel3\adjustright\rin0\lin1435\itap0\pararsid2560822 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \ul\insrsid1126782\charrsid1126782 \hich\af43\dbch\af11\loch\f43 RE}{\rtlch\fcs1 \af43 \ltrch\fcs0 \ul\insrsid1126782\charrsid1639423 +\hich\af43\dbch\af11\loch\f43 DIST.TXT Files. }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid1126782 \hich\af43\dbch\af11\loch\f43 You may copy and distribute the object code for}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid468211 \hich\af43\dbch\af11\loch\f43 m}{ +\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid1126782 \hich\af43\dbch\af11\loch\f43 of code listed in }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid4068868 \hich\af43\dbch\af11\loch\f43 REDIST}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid1126782 +\hich\af43\dbch\af11\loch\f43 .TXT files plus the files listed on the REDIST.TXT list located at}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid4068868 \hich\af43\dbch\af11\loch\f43 }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid4860412 +\hich\af43\dbch\af11\loch\f43 HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=524842" }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid2706528 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b7400000068007400740070003a002f002f0067006f002e006d006900630072006f0073006f00660074002e0063006f006d002f00660077006c0069006e006b002f003f004c0069006e006b00490064003d0035003200 +34003800340032000000795881f43b1d7f48af2c825dc485276300000000a5ab00010075004b1c17ff00f7b56bb6000000000900}}}{\fldrslt {\rtlch\fcs1 \af43 \ltrch\fcs0 \cs73\ul\cf2\insrsid4068868\charrsid9704396 \hich\af43\dbch\af11\loch\f43 +http://go.microsoft.com/fwlink/?LinkId=524842}}}\sectd \ltrsect\psz1\linex0\headery0\footery0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid421856\sftnbj {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid4068868 \hich\af43\dbch\af11\loch\f43 . }{\rtlch\fcs1 \af43 +\ltrch\fcs0 \insrsid1126782 \hich\af43\dbch\af11\loch\f43 Depending on the specific edition of the software, the number of REDIST files you receive with the software may not be equal to the numbe\hich\af43\dbch\af11\loch\f43 +r of REDIST files listed in the REDIST.TXT List. We may add additional files to the list from time to time.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \ul\insrsid1126782\charrsid1639423 +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid1126782 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid1126782 \hich\af43\dbch\af11\loch\f43 +Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs. }{\rtlch\fcs1 \af43 \ltrch\fcs0 \ul\insrsid1126782\charrsid1639423 +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid1126782 \hich\af43\dbch\af11\loch\f43 ii.\tab}}\pard\plain \ltrpar\s3\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar +\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid1639423 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid1126782 \hich\af43\dbch\af11\loch\f43 Distribution Requirements. For any Distributable Code you distribute, you must}{ +\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid1126782\charrsid1126782 +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid1126782 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s4\qj \fi-358\li1435\ri0\sb120\sa120\widctlpar +\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl3\outlinelevel3\adjustright\rin0\lin1435\itap0\pararsid2560822 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid1126782 \hich\af43\dbch\af11\loch\f43 Add significant primary functionality to it in your programs; +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid1126782 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 +For any Distributable Code having a filename extension of .lib, distribute only the results of running such\hich\af43\dbch\af11\loch\f43 Distributable Code through a linker with your program; +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid1126782 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 +Distribute Distributable Code included in a setup program only as part of that setup program without modification; +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid1126782 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 Require distributors and external end users to agree to terms that protect it at +\hich\af43\dbch\af11\loch\f43 least as much as this agreement; +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid1126782 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 +For Distributable Code from the Windows Performance Toolkit portions of the software, distribute the unmodified software package as a whole with your programs, with the exception of the KernelTraceControl.dll and the Wind\hich\af43\dbch\af11\loch\f43 +owsPerformanceRecorderControl.dll which can be distributed with your programs; +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid1126782 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 Display your valid copyright notice on your programs; and +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid1126782 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 Indemnify, defend, and hold harmless Microsoft from any claims, including attorneys\hich\f43 +\rquote \loch\f43 fees, related to the distribut\hich\af43\dbch\af11\loch\f43 ion or use of your programs. +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid1126782 \hich\af43\dbch\af11\loch\f43 iii.\tab}}\pard\plain \ltrpar\s3\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar +\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid1639423 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid1126782 \hich\af43\dbch\af11\loch\f43 Distribution Restrictions. You may not}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid1126782\charrsid1126782 +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid1126782 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s4\qj \fi-358\li1435\ri0\sb120\sa120\widctlpar +\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl3\outlinelevel3\adjustright\rin0\lin1435\itap0\pararsid2560822 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid1126782 \hich\af43\dbch\af11\loch\f43 Alter any copyright, trademark or patent notice in the Distributable Code; +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid1126782 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 Use Microsoft\hich\f43 \rquote \loch\f43 s trademarks in your programs\hich\f43 \rquote +\loch\f43 names or in a way that suggests your programs come from or\hich\af43\dbch\af11\loch\f43 are endorsed by Microsoft; +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid1126782 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard \ltrpar\s4\qj \fi-358\li1435\ri0\sb120\sa120\widctlpar +\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl3\outlinelevel3\adjustright\rin0\lin1435\itap0\pararsid1472633 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid1126782 \hich\af43\dbch\af11\loch\f43 +Distribute partial copies of the Windows Performance Toolkit portion of the software package with the exception of the KernelTraceControl.dll and the W}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid1472633 \hich\af43\dbch\af11\loch\f43 i}{\rtlch\fcs1 \af43 +\ltrch\fcs0 \insrsid1126782 \hich\af43\dbch\af11\loch\f43 ndowsPerformanceRecorderControl.dll which can be distributed with your pro\hich\af43\dbch\af11\loch\f43 grams; +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid1126782 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard \ltrpar\s4\qj \fi-358\li1435\ri0\sb120\sa120\widctlpar +\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl3\outlinelevel3\adjustright\rin0\lin1435\itap0\pararsid2560822 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid1126782 \hich\af43\dbch\af11\loch\f43 +Distribute Distributable Code to run on a platform other than the Microsoft operating system platform; +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid1126782 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 Include Distributable Code in malicious, deceptive or unlawful programs; or +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid1126782 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 +Modified or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. And Excluded License is on}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid14762553 \hich\af43\dbch\af11\loch\f43 e}{\rtlch\fcs1 \af43 +\ltrch\fcs0 \insrsid1126782 \hich\af43\dbch\af11\loch\f43 that requir\hich\af43\dbch\af11\loch\f43 es, as a condition of use, modification or distribution, that +\par {\listtext\pard\plain\ltrpar \s6 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid1126782 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s6\ql \fi-357\li2149\ri0\sb120\sa120\widctlpar +\jclisttab\tx2152\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl5\outlinelevel5\adjustright\rin0\lin2149\itap0\pararsid1639423 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid1126782 \hich\af43\dbch\af11\loch\f43 The code be disclosed or \hich\af43\dbch\af11\loch\f43 distributed in source code form; or + +\par {\listtext\pard\plain\ltrpar \s6 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid1126782 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 Other}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid10955554 \hich\af43\dbch\af11\loch\f43 s}{ +\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid1126782 \hich\af43\dbch\af11\loch\f43 have the right to modify it.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid1126782\charrsid1126782 +\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid12455081 \hich\af43\dbch\af11\loch\f43 b.\tab}}\pard\plain \ltrpar\s2\qj \fi-363\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid2560822 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 +\b\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid12455081 \hich\af43\dbch\af11\loch\f43 Additional }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid7541157 \hich\af43\dbch\af11\loch\f43 +Rights and Restrictions}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid12455081 \hich\af43\dbch\af11\loch\f43 for Features made Available with the Software. }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid12455081\charrsid8406101 +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid12455081\charrsid8406101 \hich\af43\dbch\af11\loch\f43 i.\tab}}\pard\plain \ltrpar\s3\qj \fi-357\li1077\ri0\sb120\sa120\widctlpar +\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid2560822 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid12455081\charrsid8406101 \hich\af43\dbch\af11\loch\f43 Windows }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid15867548 +\hich\af43\dbch\af11\loch\f43 A}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid1770286 \hich\af43\dbch\af11\loch\f43 pp}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid1770286\charrsid8406101 \hich\af43\dbch\af11\loch\f43 }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b\insrsid12455081\charrsid8406101 \hich\af43\dbch\af11\loch\f43 Requirements.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid12455081\charrsid543100 \hich\af43\dbch\af11\loch\f43 }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid12455081\charrsid16208507 +\hich\af43\dbch\af11\loch\f43 If you intend to make your program available in the Windows Store, \hich\af43\dbch\af11\loch\f43 +the program must comply with the Certification Requirements as defined and described in the App Developer Agreement, currently available at:}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid12455081\charrsid543100 \hich\af43\dbch\af11\loch\f43 } +{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid4860412 \hich\af43\dbch\af11\loch\f43 HYPERLINK "https://msdn.microsoft.com/en-us/library/windows/apps/hh694058.aspx" }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid2706528 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90ba0000000680074007400700073003a002f002f006d00730064006e002e006d006900630072006f0073006f00660074002e0063006f006d002f0065006e002d00750073002f006c006900620072006100720079002f00 +770069006e0064006f00770073002f0061007000700073002f00680068003600390034003000350038002e0061007300700078000000795881f43b1d7f48af2c825dc485276300000000a5ab00010001000057fe4a3400696f6a007200d0fb00}}}{\fldrslt {\rtlch\fcs1 \af43 \ltrch\fcs0 +\cs73\ul\cf2\insrsid12413218\charrsid9704396 \hich\af43\dbch\af11\loch\f43 https://msdn.microsoft.com/en-us/library/windows/apps/hh694058.aspx}}}\sectd \ltrsect\psz1\linex0\headery0\footery0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid421856\sftnbj { +\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid12455081 .}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid12413218 \hich\af43\dbch\af11\loch\f43 }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid12455081\charrsid543100 +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid12455081\charrsid543100 \hich\af43\dbch\af11\loch\f43 ii.\tab}}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid12455081\charrsid543100 \hich\af43\dbch\af11\loch\f43 +Bing Maps. }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid12455081\charrsid543100 \hich\af43\dbch\af11\loch\f43 \hich\f43 +The software may include features that retrieve content such as maps, images and other data through the Bing Maps (or successor branded) application programming interface (the \'93\loch\f43 \hich\f43 Bing Maps API\'94\loch\f43 +) to create reports displaying data on top of maps, aerial and h\hich\af43\dbch\af11\loch\f43 y\hich\af43\dbch\af11\loch\f43 +brid imagery. If these features are included, you may use these features to create and view dynamic or static documents only in conjunction with and through methods and means of access integrated in the software. You may not otherwise copy, store, archive +,\hich\af43\dbch\af11\loch\f43 + or create a database of the entity information including business names, addresses and geocodes available through the Bing Maps API. You may not use the Bing Maps API to provide sensor based guidance/routing, nor use any Road Traffic Data or Bird +\hich\f43 \rquote \loch\f43 s Eye I\hich\af43\dbch\af11\loch\f43 m\hich\af43\dbch\af11\loch\f43 +ager (or associated metadata) even if available through the Bing Maps API for any purpose. Your use of the Bing Maps API and associated content is also subject to the additional terms and conditions at }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af43 +\ltrch\fcs0 \insrsid4860412 \hich\af43\dbch\af11\loch\f43 HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=219\hich\af43\dbch\af11\loch\f43 69" }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid2706528 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b7200000068007400740070003a002f002f0067006f002e006d006900630072006f0073006f00660074002e0063006f006d002f00660077006c0069006e006b002f003f004c0069006e006b00490064003d0032003100 +3900360039000000795881f43b1d7f48af2c825dc485276300000000a5ab00016500ff416977ff6e2e226f1000b673000000}}}{\fldrslt {\rtlch\fcs1 \af43 \ltrch\fcs0 \cs73\ul\cf2\insrsid12455081\charrsid543100 \hich\af43\dbch\af11\loch\f43 +http://go.microsoft.com/fwlink/?LinkId=21969}}}\sectd \ltrsect\psz1\linex0\headery0\footery0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid421856\sftnbj {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid12455081\charrsid543100 . +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid12455081\charrsid7961222 \hich\af43\dbch\af11\loch\f43 iii.\tab}}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid12455081\charrsid7961222 \hich\af43\dbch\af11\loch\f43 +Additional Mapping APIs. }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid12455081\charrsid10881590 \hich\af43\dbch\af11\loch\f43 The software may include application programming \hich\af43\dbch\af11\loch\f43 \hich\f43 +interfaces that provide maps and other related mapping features and services that are not provided by Bing (the \'93\loch\f43 \hich\f43 Additional Mapping APIs\'94\loch\f43 +). These Additional Mapping APIs are subject to additional terms and conditions and may require payment of fees to Mic\hich\af43\dbch\af11\loch\f43 r\hich\af43\dbch\af11\loch\f43 +osoft and/or third party providers based on the use or volume of use of such Additional Mapping APIs. These terms and conditions will be provided when you obtain any necessary license keys to use such Additional Mapping APIs or when you review or receive +\hich\af43\dbch\af11\loch\f43 d\hich\af43\dbch\af11\loch\f43 ocumentation related to the use of such Additional Mapping APIs.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid12455081\charrsid7961222 +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid12455081 \hich\af43\dbch\af11\loch\f43 iv.\tab}}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid12455081 \hich\af43\dbch\af11\loch\f43 Push Notifications. }{\rtlch\fcs1 +\af43 \ltrch\fcs0 \insrsid12455081\charrsid10881590 \hich\af43\dbch\af11\loch\f43 The Microsoft Push Notification Service may not be used to send notifications that are mission critical or otherwise could affect matters of life or death, including w +\hich\af43\dbch\af11\loch\f43 +ithout limitation critical notifications related to a medical device or condition. MICROSOFT EXPRESSLY DISCLAIMS ANY WARRANTIES THAT THE USE OF THE MICROSOFT PUSH NOTIFICATION SERVICE OR DELIVERY OF MICROSOFT PUSH NOTIFICATION SERVICE NOTIFICATIONS WILL B +\hich\af43\dbch\af11\loch\f43 E\hich\af43\dbch\af11\loch\f43 UNINTERRUPTED, ERROR FREE, OR OTHERWISE GUARANTEED TO OCCUR ON A REAL-TIME BASIS.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid12455081\charrsid8210523 +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid12455081 \hich\af43\dbch\af11\loch\f43 v.\tab}}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid12455081 \hich\af43\dbch\af11\loch\f43 Speech namespace API. }{\rtlch\fcs1 +\af43 \ltrch\fcs0 \insrsid2194844\charrsid10881590 \hich\af43\dbch\af11\loch\f43 Using speech recognition functionality via the Speech namespace APIs in a program requires the support of a speech recognition service. The service +\hich\af43\dbch\af11\loch\f43 +may require network connectivity at the time of recognition (e.g., when using a predefined grammar). In addition, the service may also collect speech-related data in order to provide and improve the service. The speech-related data may include, for exampl +\hich\af43\dbch\af11\loch\f43 e\hich\af43\dbch\af11\loch\f43 , information related to grammar size and string phrases in a grammar.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid12455081\charrsid8210523 +\par }\pard \ltrpar\s3\qj \fi-357\li1077\ri0\sb120\sa120\widctlpar\tx1077\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid2560822 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid8210523 \tab }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid2194844 \hich\af43\dbch\af11\loch\f43 Also, }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid2194844\charrsid992761 \hich\af43\dbch\af11\loch\f43 +in order for a user to use speech recognition on the phone they must first accept certain terms of use. The terms of use notify the user that data related to their use of the spe\hich\af43\dbch\af11\loch\f43 +ech recognition service will be collected and used to provide and improve the service. If a user does not accept the terms of use and speech recognition is attempted by the application, the operation will not work and an error will be returned to the appl +\hich\af43\dbch\af11\loch\f43 i\hich\af43\dbch\af11\loch\f43 cation.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid2194844 \hich\af43\dbch\af11\loch\f43 }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid8210523 +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid8210523 \hich\af43\dbch\af11\loch\f43 vi.\tab}}\pard \ltrpar +\s3\qj \fi-360\li1080\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl2\outlinelevel2\adjustright\rin0\lin1080\itap0\pararsid2560822 {\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid8210523 \hich\af43\dbch\af11\loch\f43 PlayReady Support. }{ +\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid8210523\charrsid543100 \hich\af43\dbch\af11\loch\f43 The software may include the Windows Emulator, which contains Microsoft\hich\f43 \rquote \loch\f43 s PlayReady co\hich\af43\dbch\af11\loch\f43 +ntent access technology. Content owners use Microsoft PlayReady content access technology to protect their intellectual property, including copyrighted content. This software uses PlayReady technology to access PlayReady-protected content and/or WMDRM-p +\hich\af43\dbch\af11\loch\f43 r\hich\af43\dbch\af11\loch\f43 otected content. Microsoft may decide to revoke the software\hich\f43 \rquote \loch\f43 +s ability to consume PlayReady-protected content for reasons including but not limited to (i) if a breach or potential breach of PlayReady technology occurs, (ii) proactive robustness enhanceme\hich\af43\dbch\af11\loch\f43 n\hich\af43\dbch\af11\loch\f43 +t, and (iii) if Content owners require the revocation because the software fails to properly enforce restrictions on content usage. Revocation should not affect unprotected content or content protected by other content access technologies. Content owner +\hich\af43\dbch\af11\loch\f43 s\hich\af43\dbch\af11\loch\f43 + may require you to upgrade PlayReady to access their content. If you decline an upgrade, you will not be able to access content that requires the upgrade and may not be able to install other operating system updates or upgrades.}{\rtlch\fcs1 \af43 +\ltrch\fcs0 \b\insrsid8210523 \hich\af43\dbch\af11\loch\f43 +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid8027947 \hich\af43\dbch\af11\loch\f43 vii.\tab}}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid8027947 \hich\af43\dbch\af11\loch\f43 Package Managers. }{\rtlch\fcs1 +\af43 \ltrch\fcs0 \insrsid8027947 \hich\af43\dbch\af11\loch\f43 The software may include package managers, like NuGet, }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid8027947\charrsid10881590 \hich\af43\dbch\af11\loch\f43 +that give you the option to download other Microsoft and third party software packages to use with your application. Those packages are under their own licenses, and not this agreement. Microsoft does \hich\af43\dbch\af11\loch\f43 +not distribute, license or provide any warranties for any of the third party packages.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid8027947\charrsid6831427 +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid8027947 \hich\af43\dbch\af11\loch\f43 viii.\tab}}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid8027947 \hich\af43\dbch\af11\loch\f43 Font Components. }{\rtlch\fcs1 +\af43 \ltrch\fcs0 \insrsid8027947 \hich\af43\dbch\af11\loch\f43 +While the software is running, you may use its fonts to display and print content. You may only embed fonts in content as permitted by the embedding restrictions in the fonts; and temporarily download them to a prin}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid6831427 \hich\af43\dbch\af11\loch\f43 t}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid6178840 \hich\af43\dbch\af11\loch\f43 e}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid6831427 \hich\af43\dbch\af11\loch\f43 r or other output device to help print +\hich\af43\dbch\af11\loch\f43 content. }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid8027947\charrsid6831427 +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid6831427 \hich\af43\dbch\af11\loch\f43 ix.\tab}}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid6831427 \hich\af43\dbch\af11\loch\f43 +Notice about the H.264/AVD Visual Standard, and the VC-1 Video Standard. }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid6831427 \hich\af43\dbch\af11\loch\f43 +This software may include H.264/MPEG-4 AVC and/or VD-1 decoding technology. MPEG LA, L.L.C. requires this notice: }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid6831427\charrsid6831427 +\par }\pard\plain \ltrpar\s2\qj \li1440\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin1440\itap0\pararsid2560822 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 +\b\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid6831427\charrsid543100 \hich\af43\dbch\af11\loch\f43 THIS PRODUCT IS LICENSED UNDER THE AVC AND THE VC-1 PA +\hich\af43\dbch\af11\loch\f43 \hich\f43 TENT PORTFOLIO LICENSES FOR THE PERSONAL AND NON-COMMERCIAL USE OF A CONSUMER TO (i) ENCODE VIDEO IN COMPLIANCE WITH THE ABOVE STANDARDS (\'93\loch\f43 \hich\f43 VIDEO STANDARDS\'94\loch\f43 +) AND/OR (ii) DECODE AVC, AND VC-1 VIDEO THAT WAS ENCODED BY A CONSUMER ENGAGED IN A PERSONAL AND NO\hich\af43\dbch\af11\loch\f43 N\hich\af43\dbch\af11\loch\f43 +-COMMERCIAL ACTIVITY AND/OR WAS OBTAINED FROM A VIDEO PROVIDER LICENSED TO PROVIDE SUCH VIDEO. NONE OF THE LICENSES EXTEND TO ANY OTHER PRODUCT REGARDLESS OF WHETHER SUCH PRODUCT IS INCLUDED WITH THIS SOFTWARE IN A SINGLE ARTICLE. NO LICENSE IS GRANTED OR +\hich\af43\dbch\af11\loch\f43 \hich\af43\dbch\af11\loch\f43 SHALL BE IMPLIED FOR ANY OTHER USE. ADDITIONAL INFORMATION MAY BE OBTAINED FROM MPEG LA, L.L.C. SEE }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid4860412 +\hich\af43\dbch\af11\loch\f43 HYPERLINK "http://WWW.MPEGLA.COM" }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid2706528 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b4600000068007400740070003a002f002f007700770077002e006d007000650067006c0061002e0063006f006d002f000000795881f43b1d7f48af2c825dc485276300000000a5ab000114000000816eff2200220003 +000036000003}}}{\fldrslt {\rtlch\fcs1 \af43 \ltrch\fcs0 \cs73\b0\ul\cf2\insrsid6831427\charrsid7818577 \hich\af43\dbch\af11\loch\f43 WWW.MPEGLA.COM}}}\sectd \ltrsect +\psz1\linex0\headery0\footery0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid421856\sftnbj {\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid6831427\charrsid543100 .}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid6831427 +\par }\pard \ltrpar\s2\qj \li1077\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin1077\itap0\pararsid2560822 {\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid6831427\charrsid543100 \hich\af43\dbch\af11\loch\f43 +For clarification purposes, this notice does not limit or inhibit the use of the software for normal business uses that are personal to that business which do not include (i) redistribution of the software to third parties, or (ii) creation of content wit +\hich\af43\dbch\af11\loch\f43 h the VIDEO STANDARDS compliant technologies for distribution to third parties. +\par {\*\bkmkstart _MailEndCompose}{\*\bkmkend _MailEndCompose}{\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 3.\tab}}\pard\plain \ltrpar +\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls26\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid8406101 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 +\b\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 +INTERNET-BASED SERVICES. Microsoft provides Internet-based services with the software. It may change or cancel them at any time.}{\rtlch\fcs1 \af43\afs20 \ltrch\fcs0 \fs20\dbch\af31505\insrsid4022173\charrsid543100 \hich\af43\dbch\af31505\loch\f43 }{ +\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid4022173\charrsid543100 +\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid4022173\charrsid543100 \hich\af43\dbch\af11\loch\f43 a.\tab}}\pard\plain \ltrpar\s2\qj \fi-363\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid2560822 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 +\b\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid4022173\charrsid543100 \hich\af43\dbch\af11\loch\f43 Consent fo\hich\af43\dbch\af11\loch\f43 r Internet-Based Services.}{ +\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid4022173\charrsid543100 \hich\af43\dbch\af11\loch\f43 The software features described below and in the privacy statement at }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid4860412 +\hich\af43\dbch\af11\loch\f43 HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=506737" }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid2706528 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b7400000068007400740070003a002f002f0067006f002e006d006900630072006f0073006f00660074002e0063006f006d002f00660077006c0069006e006b002f003f004c0069006e006b00490064003d0035003000 +36003700330037000000795881f43b1d7f48af2c825dc485276300000000a5ab000100000000ff65ff6900522012000070000000}}}{\fldrslt {\rtlch\fcs1 \af43 \ltrch\fcs0 \cs73\b0\ul\cf2\insrsid15867548\charrsid543100 \hich\af43\dbch\af11\loch\f43 +http://go.microsoft.com/fwlink/?LinkId=5}{\rtlch\fcs1 \af43 \ltrch\fcs0 \cs73\b0\ul\cf2\insrsid15867548 \hich\af43\dbch\af11\loch\f43 21839}}}\sectd \ltrsect\psz1\linex0\headery0\footery0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid421856\sftnbj { +\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid15867548\charrsid543100 \hich\af43\dbch\af11\loch\f43 }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid4022173\charrsid543100 \hich\af43\dbch\af11\loch\f43 connect to Microsoft or service provider computer systems +\hich\af43\dbch\af11\loch\f43 over the Internet. In some cases, you will not receive a separate notice when they connect. In some cases, you may switch off these features or not use them}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid13566544 +\hich\af43\dbch\af11\loch\f43 as described in the applicable product documentation}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid4022173\charrsid543100 \hich\af43\dbch\af11\loch\f43 . By using these features, you consent to the t +\hich\af43\dbch\af11\loch\f43 ransmission of this information. Microsoft does not use the information to identify or contact you. +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid4022173\charrsid543100 \hich\af43\dbch\af11\loch\f43 i.\tab}}\pard\plain \ltrpar\s3\qj \fi-357\li1077\ri0\sb120\sa120\widctlpar +\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid2560822 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af43 \ltrch\fcs0 \b\insrsid4022173\charrsid543100 \hich\af43\dbch\af11\loch\f43 Computer Information.}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid4022173\charrsid543100 \hich\af43\dbch\af11\loch\f43 The following features use Internet protocols, which send to the appropriate systems computer information, such as your Internet pr\hich\af43\dbch\af11\loch\f43 +otocol address, the type of operating system, browser, and name and version of the software you are using, and the language code of the device where you installed the software. Microsoft uses this information to make the Internet-based services available +\hich\af43\dbch\af11\loch\f43 t\hich\af43\dbch\af11\loch\f43 o you. +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid13566544 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s4\qj \fi-358\li1435\ri0\sb120\sa120\widctlpar +\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl3\outlinelevel3\adjustright\rin0\lin1435\itap0\pararsid927236 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \ul\insrsid13566544 \hich\af43\dbch\af11\loch\f43 Software Use and Performance}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid13566544\charrsid927236 \hich\af43\dbch\af11\loch\f43 . }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid927236\charrsid927236 \hich\af43\dbch\af11\loch\f43 This software}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid14942691\charrsid14942691 +\hich\af43\dbch\af11\loch\f43 }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid14942691 \hich\af43\dbch\af11\loch\f43 collects info }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid14942691\charrsid543100 \hich\af43\dbch\af11\loch\f43 +about your hardware and how you use the software}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid14942691 \hich\af43\dbch\af11\loch\f43 and }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid927236\charrsid927236 \hich\af43\dbch\af11\loch\f43 +automatically sends error reports to Microsoft.\~ These reports include information about problems that occur in the software.\~ Reports \hich\af43\dbch\af11\loch\f43 +might unintentionally contain personal information. For example, a report that contains a snapshot of computer memory might include your name. Part of a document you were working on could be included as well, but this information in reports }{\rtlch\fcs1 +\af43 \ltrch\fcs0 \insrsid14942691 \hich\af43\dbch\af11\loch\f43 or any info col\hich\af43\dbch\af11\loch\f43 lected about }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid15879797 \hich\af43\dbch\af11\loch\f43 hardware or your software use }{\rtlch\fcs1 \af43 +\ltrch\fcs0 \insrsid927236\charrsid927236 \hich\af43\dbch\af11\loch\f43 will not be used to identify or contact you. +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid10229021\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard \ltrpar\s4\qj \fi-358\li1435\ri0\sb120\sa120\widctlpar +\jclisttab\tx1437\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl3\outlinelevel3\adjustright\rin0\lin1435\itap0\pararsid2560822 {\rtlch\fcs1 \af43 \ltrch\fcs0 \ul\insrsid10229021\charrsid543100 \hich\af43\dbch\af11\loch\f43 Digital Certificates}{\rtlch\fcs1 +\af43 \ltrch\fcs0 \insrsid10229021\charrsid927236 .}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid10229021\charrsid543100 \hich\af43\dbch\af11\loch\f43 + The software uses digital certificates. These digital certificates confirm the identity of Internet users sending X.509 standard encryption info\hich\af43\dbch\af11\loch\f43 +rmation. They also can be used to digitally sign files and macros to verify the integrity and origin of the file contents. The software retrieves certificates and updates certificate revocation lists using the Internet, when available. +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid4022173\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af43 \ltrch\fcs0 \ul\insrsid4022173\charrsid543100 \hich\af43\dbch\af11\loch\f43 +Windows Application Certification Kit}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid4022173\charrsid543100 \hich\af43\dbch\af11\loch\f43 +. To ensure you have the latest certification tests, when launched this software periodically checks a Windows Application Certification Kit file on download.microsft.com to see if an update is available.\~ If an update \hich\af43\dbch\af11\loch\f43 +is found, you are prompted and provided a link to a web site where you can download the update.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid15867548 \hich\af43\dbch\af11\loch\f43 }{\rtlch\fcs1 \af43 \ltrch\fcs0 \cf25\insrsid15867548\charrsid5861783 +\hich\af43\dbch\af11\loch\f43 You may use the Windows Application Certification Kit solely to test your programs before you submit them for a potential Microsoft Windows Certification and fo\hich\af43\dbch\af11\loch\f43 +r inclusion on the Microsoft Windows Store. The results you receive are for informational purposes only. Microsoft has no obligation to either (i) provid}{\rtlch\fcs1 \af43 \ltrch\fcs0 \cf25\insrsid5861783\charrsid5861783 \hich\af43\dbch\af11\loch\f43 e}{ +\rtlch\fcs1 \af43 \ltrch\fcs0 \cf25\insrsid15867548\charrsid5861783 \hich\af43\dbch\af11\loch\f43 you with a Windows Certification for your programs and/or ii) include your program }{\rtlch\fcs1 \af43 \ltrch\fcs0 \cf25\insrsid5861783\charrsid5861783 +\hich\af43\dbch\af11\loch\f43 i}{\rtlch\fcs1 \af43 \ltrch\fcs0 \cf25\insrsid15867548\charrsid5861783 \hich\af43\dbch\af11\loch\f43 n the Microsoft W\hich\af43\dbch\af11\loch\f43 indows Store. }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\cf25\insrsid6174468\charrsid5861783 \hich\af43\dbch\af11\loch\f43 }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid4022173\charrsid543100 +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs20\insrsid5464247\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af43 \ltrch\fcs0 \ul\insrsid5464247\charrsid543100 \hich\af43\dbch\af11\loch\f43 +Microsoft Digital Rights Management for Silverlight. +\par }\pard \ltrpar\s4\qj \li1435\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin1435\itap0\pararsid2560822 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid5464247\charrsid543100 \hich\af43\dbch\af11\loch\f43 +If you use Silverlight to access content that has been protected with Microsoft Digital Rights Management}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9963461\charrsid543100 \hich\af43\dbch\af11\loch\f43 + (DRM), in order to let you play the content, the software may automatically +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid9963461\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard \ltrpar +\s4\qj \fi-360\li2880\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls21\outlinelevel3\adjustright\rin0\lin2880\itap0\pararsid2560822 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9963461\charrsid543100 \hich\af43\dbch\af11\loch\f43 +request media usage rights from a rights server on the Internet and +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid9963461\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 download and install available DRM Updates. +\par }\pard \ltrpar\s4\qj \li1435\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin1435\itap0\pararsid2560822 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9963461\charrsid543100 \hich\af43\dbch\af11\loch\f43 +For more information about this feature, including instructions for turning the Automatic Updates off, go to }{\field\fldedit{\*\fldinst {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid4860412 \hich\af43\dbch\af11\loch\f43 + HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=147032" }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid2706528 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b7400000068007400740070003a002f002f0067006f002e006d006900630072006f0073006f00660074002e0063006f006d002f00660077006c0069006e006b002f003f004c0069006e006b00490064003d0031003400 +37003000330032000000795881f43b1d7f48af2c825dc485276300000000a5ab000100002d0000ff000000001800000070000000}}}{\fldrslt {\rtlch\fcs1 \af43 \ltrch\fcs0 \cs73\ul\cf2\insrsid12273991\charrsid7818577 \hich\af43\dbch\af11\loch\f43 +http://go.microsoft.com/fwlink/?LinkId=147032}}}\sectd \ltrsect\psz1\linex0\headery0\footery0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid421856\sftnbj {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9963461\charrsid543100 .}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid5464247 +\par {\listtext\pard\plain\ltrpar \s4 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid12273991\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard \ltrpar +\s4\qj \fi-360\li1440\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls31\outlinelevel3\adjustright\rin0\lin1440\itap0\pararsid2560822 {\rtlch\fcs1 \af43 \ltrch\fcs0 \ul\insrsid12273991\charrsid543100 \hich\af43\dbch\af11\loch\f43 +Web Content Features. }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid12273991\charrsid543100 \hich\af43\dbch\af11\loch\f43 + Features in the software can retrieve related content from Microsoft and provide it to you. To provide the content, these features send to Microsoft the type of operating system, name and version of the software you are using, type of browser and languag +\hich\af43\dbch\af11\loch\f43 e\hich\af43\dbch\af11\loch\f43 + code of the device where you installed the software. Examples of these features are clip art, templates, online training, online assistance, help and Appshelp. You may choose not to use these web content features. +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid4022173\charrsid543100 \hich\af43\dbch\af11\loch\f43 ii.\tab}}\pard\plain \ltrpar\s3\qj \fi-357\li1077\ri0\sb120\sa120\widctlpar +\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid11616408 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af43 \ltrch\fcs0 \b\insrsid4022173\charrsid543100 \hich\af43\dbch\af11\loch\f43 Use of Information.}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid4022173\charrsid543100 \hich\af43\dbch\af11\loch\f43 We may \hich\af43\dbch\af11\loch\f43 use }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid14762553 \hich\af43\dbch\af11\loch\f43 i}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid13566544 +\hich\af43\dbch\af11\loch\f43 nform\hich\af43\dbch\af11\loch\f43 ation collected about software use and performance }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid4022173\charrsid543100 \hich\af43\dbch\af11\loch\f43 to}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid13566544 \hich\af43\dbch\af11\loch\f43 provide and}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid4022173\charrsid543100 \hich\af43\dbch\af11\loch\f43 improve }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid13566544 \hich\af43\dbch\af11\loch\f43 Microsoft }{ +\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid4022173\charrsid543100 \hich\af43\dbch\af11\loch\f43 software and services}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid13566544 \hich\af43\dbch\af11\loch\f43 as further described in Microsoft\hich\f43 \rquote \loch\f43 +s Privacy Statement available at: }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid13566544\charrsid8605371 \hich\af43\dbch\af11\loch\f43 https://go.microsoft.com/fwlink/?LinkID=521839}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid4022173\charrsid543100 +\hich\af43\dbch\af11\loch\f43 . We may also share it with others, \hich\af43\dbch\af11\loch\f43 such as hardware and software vendors. They may use the information to improve how their products run with Microsoft software.}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid4022173 +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid138238\charrsid543100 \hich\af43\dbch\af11\loch\f43 iii.\tab}}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b\insrsid138238\charrsid543100 \hich\af43\dbch\af11\loch\f43 +Misuse of Internet-based Services.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid138238\charrsid543100 \hich\af43\dbch\af11\loch\f43 You may not use these services in any way that could harm them or impair anyone else\hich\f43 \rquote \loch\f43 s us +\hich\af43\dbch\af11\loch\f43 e of them. You may not use the services to try to gain unauthorized access to any service, data, account or network by any means. +\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid7541157 \hich\af43\dbch\af11\loch\f43 4.\tab}}\pard\plain \ltrpar\s1\qj \fi-357\li357\ri0\sb120\sa120\widctlpar +\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls26\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid2560822 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 { +\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid7541157 \hich\af43\dbch\af11\loch\f43 YOUR COMPLIANCE WITH PRIVACY AND DATA PROTECTION LAWS}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid5133814 .}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid12140514 +\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid12140514 \hich\af43\dbch\af11\loch\f43 a.\tab}}\pard\plain \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid12793417 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 +\b\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid12140514 \hich\af43\dbch\af11\loch\f43 Personal Information Definition. }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid12140514\charrsid12793417 \hich\af43\dbch\af11\loch\f43 "Personal Information" means an\hich\af43\dbch\af11\loch\f43 +y information relating to an identified or identifiable natural person; an identifiable natural person is one who can be identified, directly or indirectly, in particular by reference to an identifier such as a name, an identification number, location dat +\hich\af43\dbch\af11\loch\f43 a\hich\af43\dbch\af11\loch\f43 , an online identifier or to one or more factors specific to the physical, physiological, genetic, mental, economic, cultural or social identity of that natural person.}{\rtlch\fcs1 \af43 +\ltrch\fcs0 \b0\insrsid12140514\charrsid12140514 +\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid9006310\charrsid12793417 \hich\af43\dbch\af11\loch\f43 b.\tab}}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9006310\charrsid12793417 \hich\af43\dbch\af11\loch\f43 +Collecting Personal Information using Packaged}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid6906187 \hich\af43\dbch\af11\loch\f43 and Add-on}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9006310\charrsid12793417 \hich\af43\dbch\af11\loch\f43 APIs}{\rtlch\fcs1 \af43 +\ltrch\fcs0 \insrsid9006310 \hich\af43\dbch\af11\loch\f43 . }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid5133814\charrsid12793417 \hich\af43\dbch\af11\loch\f43 If you use any API to collect }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid12140514\charrsid12793417 \hich\af43\dbch\af11\loch\f43 personal information}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid5133814\charrsid12793417 \hich\af43\dbch\af11\loch\f43 from the software, }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid7799211\charrsid12793417 \hich\af43\dbch\af11\loch\f43 you must comply with all laws and regulations applicable to your use of the data accessed through }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid7799211\charrsid11867748 +\hich\af43\dbch\af11\loch\f43 APIs }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid11867748 \hich\af43\dbch\af11\loch\f43 includin}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid7799211\charrsid12793417 \hich\af43\dbch\af11\loch\f43 g without +\hich\af43\dbch\af11\loch\f43 limitation laws related to privacy, biometric data, data protection, and confidentiality of communications. Your use of the }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid11867748 \hich\af43\dbch\af11\loch\f43 software}{ +\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid7799211\charrsid12793417 \hich\af43\dbch\af11\loch\f43 is conditioned upon implementing and maintaining appropriate protections and measures for your}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid11867748 +\hich\af43\dbch\af11\loch\f43 applications and services}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid7799211\charrsid12793417 \hich\af43\dbch\af11\loch\f43 , a\hich\af43\dbch\af11\loch\f43 +nd that includes your responsibility to the data obtained through the use of }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid11867748 \hich\af43\dbch\af11\loch\f43 APIs}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid7799211\charrsid12793417 +\hich\af43\dbch\af11\loch\f43 . For the data you obtained through }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid11867748 \hich\af43\dbch\af11\loch\f43 any APIs}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid7799211\charrsid12793417 \hich\af43\dbch\af11\loch\f43 +, you must: }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid11867748 +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid11867748 \hich\af43\dbch\af11\loch\f43 i.\tab}}\pard\plain \ltrpar\s3\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar +\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid11867748 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid11867748 \hich\af43\dbch\af11\loch\f43 +obtain all necessary consents before collecting and using data and only use the data for the limited purposes to wh\hich\af43\dbch\af11\loch\f43 ich the user consented, including any consent to changes in use}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid3289579 \hich\af43\dbch\af11\loch\f43 ;}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid11867748 \hich\af43\dbch\af11\loch\f43 +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid11867748 \hich\af43\dbch\af11\loch\f43 ii.\tab}\hich\af43\dbch\af11\loch\f43 In the event you\hich\f43 \rquote \loch\f43 +re storing data, ensure that data is kept up to date and implement corrections, restrictions to data, or the deletion of data }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid12850423 \hich\af43\dbch\af11\loch\f43 as updated through packaged }{\rtlch\fcs1 \af43 +\ltrch\fcs0 \insrsid9653457 \hich\af43\dbch\af11\loch\f43 or }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid6168189 \hich\af43\dbch\af11\loch\f43 add-on }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid12850423 \hich\af43\dbch\af11\loch\f43 APIs +\hich\af43\dbch\af11\loch\f43 or upon user request if required by applicable law}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid3289579 \hich\af43\dbch\af11\loch\f43 ;}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid11867748 +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid11867748 \hich\af43\dbch\af11\loch\f43 iii.\tab}\hich\af43\dbch\af11\loch\f43 implement proper retention and deletion policies, including deleting all data when }{ +\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid12850423 \hich\af43\dbch\af11\loch\f43 as directed by }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid3289579 \hich\af43\dbch\af11\loch\f43 your users or as required by applicable law; and}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid11867748 +\par {\listtext\pard\plain\ltrpar \s3 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid11867748 \hich\af43\dbch\af11\loch\f43 iv.\tab}}\pard \ltrpar\s3\ql \fi-357\li1077\ri0\sb120\sa120\widctlpar +\tx1077\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl2\outlinelevel2\adjustright\rin0\lin1077\itap0\pararsid12793417 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid11867748 \hich\af43\dbch\af11\loch\f43 +maintain and comply with a written statement ava\hich\af43\dbch\af11\loch\f43 ilable to your customers that describes your privacy practices regarding data and information you collect, use and that you share with any third parties.}{\rtlch\fcs1 \af43 +\ltrch\fcs0 \insrsid5133814\charrsid11867748 \hich\af43\dbch\af11\loch\f43 +\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid9006310\charrsid8210523 \hich\af43\dbch\af11\loch\f43 c.\tab}}\pard\plain \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid9006310 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 +\b\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9006310\charrsid8210523 \hich\af43\dbch\af11\loch\f43 Location Framework. }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid9006310\charrsid12793417 \hich\af43\dbch\af11\loch\f43 The software may contain a location framework component or APIs that enable su\hich\af43\dbch\af11\loch\f43 pport of location services in programs. }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid7171325 \hich\af43\dbch\af11\loch\f43 Programs}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid9006310\charrsid1527996 \~}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid9006310\charrsid12793417 \hich\af43\dbch\af11\loch\f43 +that receive device location must comply with the requirements related to the Location Service APIs as described in the Microsoft Store Policies (}{\field\flddirty{\*\fldinst {\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid9006310\charrsid12793417 +\hich\af43\dbch\af11\loch\f43 HYPERLINK "https://docs.microsoft.com/en-us/legal/windows/agreements/store-policies" }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid1527996\charrsid12793417 {\*\datafield +00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90baa000000680074007400700073003a002f002f0064006f00630073002e006d006900630072006f0073006f00660074002e0063006f006d002f0065006e002d00750073002f006c006500670061006c002f0077006900 +6e0064006f00770073002f00610067007200650065006d0065006e00740073002f00730074006f00720065002d0070006f006c00690063006900650073000000795881f43b1d7f48af2c825dc485276300000000a5ab0003000000}}}{\fldrslt {\rtlch\fcs1 \af43 \ltrch\fcs0 +\cs73\b0\ul\cf2\insrsid9006310\charrsid9006310 \hich\af43\dbch\af11\loch\f43 https://docs.microsoft.com/en-us/legal/windows/agreements/store-policies}}}\sectd \ltrsect +\psz1\linex0\headery0\footery0\endnhere\sectlinegrid360\sectdefaultcl\sectrsid421856\sftnbj {\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid9006310\charrsid9006310 \hich\af43\dbch\af11\loch\f43 ). }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid9006310 +\hich\af43\dbch\af11\loch\f43 I}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid9006310\charrsid12793417 \hich\af43\dbch\af11\loch\f43 f you choose to collect device location data }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid9006310 \hich\af43\dbch\af11\loch\f43 +outside of\hich\af43\dbch\af11\loch\f43 the control }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid1451044 \hich\af43\dbch\af11\loch\f43 of Windows system s}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid9006310 \hich\af43\dbch\af11\loch\f43 ettings, y}{ +\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid9006310\charrsid12793417 \hich\af43\dbch\af11\loch\f43 ou must }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid9006310 \hich\af43\dbch\af11\loch\f43 obtain}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid9006310\charrsid12793417 \hich\af43\dbch\af11\loch\f43 legally sufficient consent for your data practices, and such practices}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid9006310\charrsid1527996 \~}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid9006310\charrsid12793417 \hich\af43\dbch\af11\loch\f43 must comply with all other applicable laws and regulations.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid9006310\charrsid1527996 \~}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid9006310\charrsid12793417 +\par {\listtext\pard\plain\ltrpar \s2 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid3289579 \hich\af43\dbch\af11\loch\f43 d.\tab}}\pard \ltrpar\s2\ql \fi-363\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls26\ilvl1\outlinelevel1\adjustright\rin0\lin720\itap0\pararsid12793417 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid3289579 \hich\af43\dbch\af11\loch\f43 Security. }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid3289579\charrsid3289579 \hich\af43\dbch\af11\loch\f43 If your app}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid3289579 \hich\af43\dbch\af11\loch\f43 lication or service}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid3289579\charrsid3289579 +\hich\af43\dbch\af11\loch\f43 collects, stores or tr\hich\af43\dbch\af11\loch\f43 ansmits personal information, it must do so securely, by using modern cryptography methods.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9006310\charrsid3289579 +\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid6651166\charrsid543100 \hich\af43\dbch\af11\loch\f43 5.\tab}}\pard\plain \ltrpar\s1\qj \fi-357\li357\ri0\sb120\sa120\widctlpar +\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls26\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid2560822 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 { +\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid6651166\charrsid543100 \hich\af43\dbch\af11\loch\f43 BACKUP COPY. }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid6651166\charrsid12273991 \hich\af43\dbch\af11\loch\f43 +You may make one backup copy of the software. You may use it only to reinstall the software.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid6651166\charrsid543100 +\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid6651166\charrsid543100 \hich\af43\dbch\af11\loch\f43 6.\tab}\hich\af43\dbch\af11\loch\f43 DOCUMENTATION. }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid6651166\charrsid12273991 \hich\af43\dbch\af11\loch\f43 Any person that has valid access to y\hich\af43\dbch\af11\loch\f43 our computer or internal network may copy and use the documentation for your internal, reference purposes}{\rtlch\fcs1 +\af43 \ltrch\fcs0 \b0\insrsid6576989\charrsid12273991 .}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid6651166\charrsid543100 +\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 7.\tab}}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 +SCOPE OF LICENSE. }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid9780096\charrsid12273991 \hich\af43\dbch\af11\loch\f43 The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all +\hich\af43\dbch\af11\loch\f43 +other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to u +\hich\af43\dbch\af11\loch\f43 s\hich\af43\dbch\af11\loch\f43 e it in certain ways. You may not}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 +\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid11226145\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s34\qj \fi-363\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid2560822 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 +\ltrch\fcs0 \insrsid11226145\charrsid543100 \hich\af43\dbch\af11\loch\f43 Except for the Microsoft .NET Framework, \hich\af43\dbch\af11\loch\f43 disclose to a third party the results of any benchmark test of the software}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid14762553 \hich\af43\dbch\af11\loch\f43 , with\hich\af43\dbch\af11\loch\f43 out first obtaining }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid14762553\charrsid543100 \hich\af43\dbch\af11\loch\f43 Microsoft's prior written approval}{\rtlch\fcs1 \af43 +\ltrch\fcs0 \insrsid16214760 \hich\af43\dbch\af11\loch\f43 ;}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid11226145\charrsid543100 +\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid9780096\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 +work around any technical limitations in the s\hich\af43\dbch\af11\loch\f43 oftware; +\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid9780096\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 +reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation; +\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid9780096\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 make more copies of the s\hich\af43\dbch\af11\loch\f43 +oftware than specified in this agreement or allowed by applicable law, despite this limitation; +\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid9780096\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 publish the software for others to copy; +\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid9780096\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 rent, lease or lend the software; +\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid9780096\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 transfer the software or this agreement to any third party; or +\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid9780096\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 use the softwa\hich\af43\dbch\af11\loch\f43 +re for commercial software hosting services. +\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 8.\tab}}\pard\plain \ltrpar\s1\qj \fi-357\li357\ri0\sb120\sa120\widctlpar +\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls26\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid2560822 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 { +\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 EXPORT RESTRICTIONS. }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid9780096\charrsid1574971 \hich\af43\dbch\af11\loch\f43 +The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These law\hich\af43\dbch\af11\loch\f43 +s include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 +\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 9.\tab}\hich\af43\dbch\af11\loch\f43 SUPPORT SERVICES. }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid9780096\charrsid1073171 \hich\af43\dbch\af11\loch\f43 \hich\f43 Because this software is \'93\loch\f43 \hich\f43 as is,\'94\loch\f43 we may not provide support services for it.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 + +\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 10.\tab}\hich\af43\dbch\af11\loch\f43 ENTIRE AGREEMENT. }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid9780096\charrsid1073171 \hich\af43\dbch\af11\loch\f43 This agreem\hich\af43\dbch\af11\loch\f43 +ent, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid12793417 +\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid7541157 \hich\af43\dbch\af11\loch\f43 11.\tab}}\pard \ltrpar\s1\ql \fi-357\li357\ri0\sb120\sa120\widctlpar +\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls26\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid7541157 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid7541157 \hich\af43\dbch\af11\loch\f43 INDEPENDENT PARTIES. }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid7541157\charrsid12793417 \hich\af43\dbch\af11\loch\f43 Microsoft and you are independent contractors. Nothing in this\hich\af43\dbch\af11\loch\f43 }{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid7541157 \hich\af43\dbch\af11\loch\f43 a}{\rtlch\fcs1 +\af43 \ltrch\fcs0 \b0\insrsid7541157\charrsid12793417 \hich\af43\dbch\af11\loch\f43 greement shall be construed as creating an employer-employee relationship, processor-subprocessor relationship, a partnership, or a joint venture between the parties. + +\par {\*\bkmkstart OLE_LINK24}{\*\bkmkstart OLE_LINK23}{\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid14842076\charrsid14842076 \hich\af43\dbch\af11\loch\f43 12.\tab}}\pard \ltrpar +\s1\qj \fi-357\li357\ri0\sb120\sa120\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls26\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid14842076 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid14842076\charrsid14842076 +\hich\af43\dbch\af11\loch\f43 APPLICABLE LAW AND PLACE TO RESOLVE DISPUTES}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid14842076\charrsid12793417 .}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid4093123\charrsid12793417 {\*\bkmkend OLE_LINK24} +{\*\bkmkend OLE_LINK23}\hich\af43\dbch\af11\loch\f43 + If you acquired the software in the United States or Canada, the laws of the state or province where you live (or, if a business, where your principal place of business is located) govern the interpretation of this agreement, claims fo +\hich\af43\dbch\af11\loch\f43 +r its breach, and all other claims (including consumer protection, unfair competition, and tort claims), regardless of conflict of laws principles. If you acquired the software in any other country, its laws apply. If U.S. federal jurisdiction exists, you +\hich\af43\dbch\af11\loch\f43 \hich\af43\dbch\af11\loch\f43 +and Microsoft consent to exclusive jurisdiction and venue in the federal court in King County, Washington for all disputes heard in court. If not, you and Microsoft consent to exclusive jurisdiction and venue in the Superior Court of King County, Washingt +\hich\af43\dbch\af11\loch\f43 o\hich\af43\dbch\af11\loch\f43 n for all disputes heard in court.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid14842076\charrsid12793417 +\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 13.\tab}}\pard \ltrpar\s1\qj \fi-357\li357\ri0\sb120\sa120\widctlpar +\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls26\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid2560822 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 LEGAL EFFECT. }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\b0\insrsid9780096\charrsid1073171 \hich\af43\dbch\af11\loch\f43 +This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agree\hich\af43\dbch\af11\loch\f43 +ment does not change your rights under the laws of your country if the laws of your country do not permit it to do so.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \b0\insrsid14437949 \hich\af43\dbch\af11\loch\f43 }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid9780096\charrsid543100 +\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 14.\tab}\hich\af43\dbch\af11\loch\f43 DISCLAIMER OF WARRANTY. }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid9780096\charrsid14114137 \hich\af43\dbch\af11\loch\f43 \hich\f43 The software is licensed \'93\loch\f43 \hich\f43 as-is.\'94\loch\f43 You bear the risk of using it. Microsoft gives no express warranties, guar\hich\af43\dbch\af11\loch\f43 +antees or conditions. You may have additional consumer rights or statutory guarantees under your local laws which this agreement cannot change. To the extent permitted under your local laws, Microsoft excludes the implied warranties of merchantability, fi +\hich\af43\dbch\af11\loch\f43 t\hich\af43\dbch\af11\loch\f43 ness for a particular purpose and non-infringement. +\par }\pard\plain \ltrpar\qj \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0\pararsid2560822 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 FOR AUSTRALIA \hich\f43 \endash \loch\f43 + You have statutory guarantees under the Australian Consumer Law and nothing in these terms is intended to affect those rights. +\par {\listtext\pard\plain\ltrpar \s1 \rtlch\fcs1 \ab\af43\afs20 \ltrch\fcs0 \b\f43\fs20\insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 15.\tab}}\pard\plain \ltrpar\s1\qj \fi-357\li357\ri0\sb120\sa120\widctlpar +\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls26\outlinelevel0\adjustright\rin0\lin357\itap0\pararsid2560822 \rtlch\fcs1 \ab\af43\afs19\alang1025 \ltrch\fcs0 \b\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 { +\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. You \hich\af43\dbch\af11\loch\f43 +can recover from Microsoft and its suppliers only direct damages up to U.S. $5.00. You cannot recover any other damages, including consequential, lost profits, special, indirect or incidental damages. +\par }\pard\plain \ltrpar\qj \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0\pararsid2560822 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 This limitation applies to +\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid9780096\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar\s34\qj \fi-363\li720\ri0\sb120\sa120\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls2\adjustright\rin0\lin720\itap0\pararsid11616408 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 \fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 +\ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 anything related to the so\hich\af43\dbch\af11\loch\f43 ftware, services, content (including code) on third party Internet sites, or third party programs; and +\par {\listtext\pard\plain\ltrpar \s34 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\insrsid9780096\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}\hich\af43\dbch\af11\loch\f43 +claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by appli\hich\af43\dbch\af11\loch\f43 cable law. +\par }\pard\plain \ltrpar\qj \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0\pararsid11616408 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 +It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential +\hich\af43\dbch\af11\loch\f43 or other damages. +\par }\pard \ltrpar\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid10820326\charrsid543100 +\par \hich\af43\dbch\af11\loch\f43 Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French. +\par }{\rtlch\fcs1 \af43 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid10820326\charrsid543100 \hich\af43\dbch\af11\loch\f43 \hich\f43 Remarque : Ce logiciel \'e9\loch\f43 \hich\f43 tant distribu\'e9\loch\f43 \hich\f43 au Qu\'e9\loch\f43 +bec, Canada, certaines des clauses dans ce contrat sont four\hich\af43\dbch\af11\loch\f43 \hich\f43 nies ci-dessous en fran\'e7\loch\f43 ais.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid10820326\charrsid2560822 +\par }\pard \ltrpar\qj \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0\pararsid11616408 {\rtlch\fcs1 \af43 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid10820326\charrsid543100 \hich\af43\dbch\af11\loch\f43 +\hich\f43 EXON\'c9\loch\f43 \hich\f43 RATION DE GARANTIE. Le logiciel vis\'e9\loch\f43 \hich\f43 par une licence est offert \'ab\loch\f43 \hich\f43 tel quel \'bb\loch\f43 \hich\f43 . Toute utilisation de ce logiciel est \'e0\loch\f43 \hich\f43 + votre seule risque et p\'e9\loch\f43 ril. Microsoft n\hich\f43 \rquote \loch\f43 \hich\f43 accorde aucune autre garantie expresse. Vous pouvez b\'e9\loch\f43 \hich\f43 n\'e9\loch\f43 ficier d\hich\af43\dbch\af11\loch\f43 \hich\f43 +e droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualit\'e9\loch\f43 marchande, d\hich\f43 \rquote \loch\f43 +\hich\f43 ad\'e9\loch\f43 \hich\f43 quation \'e0\loch\f43 un usage particulier et d\hich\f43 \rquote \loch\f43 abse\hich\af43\dbch\af11\loch\f43 n\hich\af43\dbch\af11\loch\f43 \hich\f43 ce de contrefa\'e7\loch\f43 on sont exclues.}{\rtlch\fcs1 \af43 +\ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid10820326\charrsid2560822 +\par }{\rtlch\fcs1 \af43 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid10820326\charrsid543100 \hich\af43\dbch\af11\loch\f43 \hich\f43 LIMITATION DES DOMMAGES-INT\'c9\loch\f43 \hich\f43 R\'ca\loch\f43 \hich\f43 TS ET EXCLUSION DE RESPONSABILIT\'c9 +\loch\f43 POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une \hich\af43\dbch\af11\loch\f43 \hich\f43 indemnisation en cas de dommages directs uniquement \'e0\loch\f43 \hich\f43 hauteur de 5,00 $ US. Vous ne pouvez pr\'e9 +\loch\f43 \hich\f43 tendre \'e0\loch\f43 \hich\f43 aucune indemnisation pour les autres dommages, y compris les dommages sp\'e9\loch\f43 \hich\f43 ciaux, indirects ou accessoires et pertes de b\'e9\loch\f43 \hich\f43 n\'e9\loch\f43 fices.}{\rtlch\fcs1 +\af43 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid10820326\charrsid2560822 +\par }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid2560822\charrsid543100 \hich\af43\dbch\af11\loch\f43 Crete}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid10820326\charrsid543100 \hich\af43\dbch\af11\loch\f43 limitation }{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid1326355\charrsid543100 \hich\af43\dbch\af11\loch\f43 concern}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid10820326\charrsid543100 \hich\af43\dbch\af11\loch\f43 : +\par {\listtext\pard\plain\ltrpar \s112 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\lang1036\langfe1033\langnp1036\insrsid10820326\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}\pard\plain \ltrpar +\s112\qj \fi-360\li720\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls20\adjustright\rin0\lin720\itap0\pararsid11616408\contextualspace \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid10820326\charrsid543100 \hich\af43\dbch\af11\loch\f43 \hich\f43 tout ce qui est reli\'e9\loch\f43 + au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et}{\rtlch\fcs1 \af43 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid10820326\charrsid2560822 +\par {\listtext\pard\plain\ltrpar \s112 \rtlch\fcs1 \af43\afs19 \ltrch\fcs0 \f3\fs19\lang1036\langfe1033\langnp1036\insrsid10820326\charrsid543100 \loch\af3\dbch\af11\hich\f3 \'b7\tab}}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\lang1036\langfe1033\langnp1036\insrsid10820326\charrsid543100 \hich\af43\dbch\af11\loch\f43 \hich\f43 les r\'e9\loch\f43 \hich\f43 clamations au titre de violation de contrat ou de garantie, ou au titre de responsabilit\'e9\loch\f43 +\hich\af43\dbch\af11\loch\f43 \hich\f43 stricte, de n\'e9\loch\f43 gligence ou d\hich\f43 \rquote \loch\f43 \hich\f43 une autre faute dans la limite autoris\'e9\loch\f43 e par la loi en vigueur.}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\lang1036\langfe1033\langnp1036\insrsid10820326\charrsid2560822 +\par }\pard\plain \ltrpar\qj \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0\pararsid11616408 \rtlch\fcs1 \af43\afs19\alang1025 \ltrch\fcs0 +\fs19\lang1033\langfe1033\loch\af43\hich\af43\dbch\af11\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af43 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid10820326\charrsid543100 \hich\af43\dbch\af11\loch\f43 Elle s\hich\f43 \rquote \loch\f43 \hich\f43 +applique \'e9\loch\f43 \hich\f43 galement, m\'ea\loch\f43 \hich\f43 me si Microsoft connaissait ou devrait conna\'ee\loch\f43 tre l\hich\f43 \rquote \'e9\loch\f43 \hich\f43 ventualit\'e9\loch\f43 d\hich\f43 \rquote \loch\f43 +un tel dommage. Si votre pays n\hich\f43 \rquote \loch\f43 autorise pas l\hich\f43 \rquote \hich\af43\dbch\af11\loch\f43 \hich\f43 exclusion ou la limitation de responsabilit\'e9\loch\f43 + pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l\hich\f43 \rquote \loch\f43 exclusion ci-dessus ne s\hich\f43 \rquote \loch\f43 \hich\f43 appliquera pas \'e0\loch\f43 \hich\f43 votre \'e9 +\loch\f43 gard.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid10820326\charrsid2560822 +\par }{\rtlch\fcs1 \af43 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid10820326\charrsid543100 \hich\af43\dbch\af11\loch\f43 \hich\f43 EFFET JURIDIQUE. Le pr\'e9\loch\f43 \hich\f43 sent contrat d\'e9\loch\f43 crit cert\hich\af43\dbch\af11\loch\f43 +ains droits juridiques. Vous pourriez avoir d\hich\f43 \rquote \loch\f43 \hich\f43 autres droits pr\'e9\loch\f43 \hich\f43 vus par les lois de votre pays. Le pr\'e9\loch\f43 \hich\f43 sent contrat ne modifie pas les droits que vous conf\'e8\loch\f43 +rent les lois de votre pays si celles-ci ne le permettent pas.}{\rtlch\fcs1 \af43 \ltrch\fcs0 \lang1036\langfe1033\langnp1036\insrsid10820326\charrsid2560822 +\par }\pard \ltrpar\ql \li90\ri0\sb120\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin90\itap0 {\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid10820326\charrsid543100 \hich\af43\dbch\af11\loch\f43 *************** +\par \hich\af43\dbch\af11\loch\f43 EULAID:}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid742407\charrsid543100 \hich\af43\dbch\af11\loch\f43 WIN}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid3894335\charrsid543100 \hich\af43\dbch\af11\loch\f43 10}{\rtlch\fcs1 \af43 +\ltrch\fcs0 \insrsid742407\charrsid543100 \hich\af43\dbch\af11\loch\f43 SDK}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid10820326\charrsid543100 .}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid3559666 \hich\af43\dbch\af11\loch\f43 RTM}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\insrsid10820326\charrsid543100 .}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid6175996 \hich\af43\dbch\af11\loch\f43 AUG}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid3744016 \hich\af43\dbch\af11\loch\f43 _201}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid6175996 +\hich\af43\dbch\af11\loch\f43 8}{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid10820326\charrsid543100 \hich\af43\dbch\af11\loch\f43 _en-US +\par +\par }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid2560822 +\par }{\rtlch\fcs1 \af43 \ltrch\fcs0 \insrsid9780096\charrsid543100 \hich\af43\dbch\af11\loch\f43 *************************************************************************}{\rtlch\fcs1 \af43 \ltrch\fcs0 +\lang1036\langfe1033\langnp1036\insrsid9780096\charrsid5722447 +\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a +9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad +5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 +b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0 +0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6 +a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f +c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512 +0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462 +a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865 +6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b +4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b +4757e8d3f729e245eb2b260a0238fd010000ffff0300504b03041400060008000000210096b5ade296060000501b0000160000007468656d652f7468656d652f +7468656d65312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87 +615b8116d8a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad +79482a9c0498f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b +5d8a314d3c94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab +999fb7b4717509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9 +699640f6719e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd586 +8b37a088d1e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d6 +0cf03ac1a5193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f +9e7ef3f2d117d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be +15c308d3f28acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a9979 +3849c26ae66252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d +32a423279a668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2a +f074481847bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86 +e877f0034e16bafb0e258ebb4faf06b769e888340b103d3311da9750aa9d0a1cd3e4efca31a3508f6d0c5c5c398602f8e2ebc71591f5b616e24dd893aa3261fb +44f95d843b5974bb5c04f4edafb95b7892ec1108f3f98de75dc97d5772bdff7cc95d94cf672db4b3da0a6557f70db629362d72bcb0431e53c6066acac80d699a +6409fb44d08741bdce9c0e4971624a2378cceaba830b05366b90e0ea23aaa241845368b0eb9e2612ca8c742851ca251ceccc70256d8d87265dd96361531f186c +3d9058edf2c00eafe8e1fc5c509031bb4d680e9f39a3154de0accc56ae644441edd76156d7429d995bdd88664a9dc3ad50197c38af1a0c16d684060441db0256 +5e85f3b9660d0713cc48a0ed6ef7dedc2dc60b17e92219e180643ed27acffba86e9c94c78ab90980d8a9f0913ee49d62b512b79626fb06dccee2a432bbc60276 +b9f7dec44b7904cfbca4f3f6443ab2a49c9c2c41476dafd55c6e7ac8c769db1bc399161ee314bc2e75cf8759081743be1236ec4f4d6693e5336fb672c5dc24a8 +c33585b5fb9cc24e1d4885545b58463634cc5416022cd19cacfccb4d30eb45296023fd35a458598360f8d7a4003bbaae25e331f155d9d9a5116d3bfb9a95523e +51440ca2e0088dd844ec6370bf0e55d027a012ae264c45d02f708fa6ad6da6dce29c255df9f6cae0ec38666984b372ab5334cf640b37795cc860de4ae2816e95 +b21be5ceaf8a49f90b52a51cc6ff3355f47e0237052b81f6800fd7b802239daf6d8f0b1571a8426944fdbe80c6c1d40e8816b88b8569082ab84c36ff0539d4ff +6dce591a26ade1c0a7f669880485fd484582903d284b26fa4e2156cff62e4b9265844c4495c495a9157b440e091bea1ab8aaf7760f4510eaa69a6465c0e04ec6 +9ffb9e65d028d44d4e39df9c1a52ecbd3607fee9cec7263328e5d661d3d0e4f62f44acd855ed7ab33cdf7bcb8ae889599bd5c8b3029895b6825696f6af29c239 +b75a5bb1e6345e6ee6c28117e73586c1a2214ae1be07e93fb0ff51e133fb65426fa843be0fb515c187064d0cc206a2fa926d3c902e907670048d931db4c1a449 +59d366ad93b65abe595f70a75bf03d616c2dd959fc7d4e6317cd99cbcec9c58b34766661c7d6766ca1a9c1b327531486c6f941c638c67cd22a7f75e2a37be0e8 +2db8df9f30254d30c1372581a1f51c983c80e4b71ccdd28dbf000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468 +656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4 +350d363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d2624 +52282e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe5141 +73d9850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c020000130000000000000000 +0000000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000 +000000000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c0000000000000000000000000019 +0200007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210096b5ade296060000501b00001600000000 +000000000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b01000027 +00000000000000000000000000a00900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d0100009b0a00000000} +{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d +617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 +6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 +656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} +{\*\latentstyles\lsdstimax375\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdlocked0 heading 1;\lsdqformat1 \lsdlocked0 heading 2; +\lsdqformat1 \lsdlocked0 heading 3;\lsdqformat1 \lsdlocked0 heading 4;\lsdqformat1 \lsdlocked0 heading 5;\lsdqformat1 \lsdlocked0 heading 6;\lsdqformat1 \lsdlocked0 heading 7;\lsdqformat1 \lsdlocked0 heading 8;\lsdqformat1 \lsdlocked0 heading 9; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong; +\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority59 \lsdlocked0 Table Grid; +\lsdsemihidden1 \lsdlocked0 Placeholder Text;\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid; +\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2; +\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List;\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1; +\lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1; +\lsdsemihidden1 \lsdlocked0 Revision;\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1; +\lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2; +\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2; +\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3; +\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3; +\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4; +\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4; +\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdpriority62 \lsdlocked0 Light Grid Accent 5; +\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5; +\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6; +\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6; +\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; +\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4; +\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4; +\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1; +\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1; +\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2; +\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2; +\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3; +\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4; +\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4; +\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5; +\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5; +\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6; +\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6; +\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark; +\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1; +\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1; +\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2; +\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3; +\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3; +\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4; +\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4; +\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5; +\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5; +\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6; +\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Mention; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hashtag;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Unresolved Mention;}}{\*\datastore 010500000200000018000000 +4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000 +d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e50000000000000000000000004024 +603de93ed401feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file diff --git a/src/Licenses/sdk_third_party_notices.rtf b/src/Licenses/sdk_third_party_notices.rtf new file mode 100644 index 0000000..4a3509f --- /dev/null +++ b/src/Licenses/sdk_third_party_notices.rtf @@ -0,0 +1,325 @@ +{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033\deflangfe1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}{\f1\fswiss\fprq2\fcharset0 Tahoma;}} +{\colortbl ;\red0\green0\blue255;\red0\green0\blue0;\red255\green255\blue255;} +{\*\generator Riched20 10.0.15038}{\*\mmathPr\mdispDef1\mwrapIndent1440 }\viewkind4\uc1 +\pard\widctlpar\f0\fs22\par +CREDITS AND THIRD-PARTY SOFTWARE NOTICES AND INFORMATION\par +\par +This software is based on or incorporates material from the files listed below (collectively, \ldblquote Third Party Code\rdblquote ).\~\b Please Note\b0 : Microsoft is not the original author of the Third Party Code. The URL for the original file source, the original copyright notice and the license under which Microsoft received Third Party Code are set forth below together with the full text of such license. Such notices and license are provided solely for your information. Microsoft, not the third party, licenses this Third Party Code to you under the terms set forth in the Microsoft Software License Terms for the Microsoft Windows Software Development Kit for Windows 10 (the \ldblquote Microsoft Program\rdblquote ). Unless applicable law gives you more rights, Microsoft reserves all other rights not expressly granted under this agreement, whether by implication, estoppel or otherwise. \par +\par +The Microsoft Program includes files from certain third party software developed by their respective authors, as follows:\par +\par +BERKELEY YACC NOTICES AND INFORMATION BEGIN HERE\par +Upstream source {{\field{\*\fldinst{HYPERLINK http://dickey.his.com/byacc/byacc.html }}{\fldrslt{http://dickey.his.com/byacc/byacc.html\ul0\cf0}}}}\f0\fs22\par +=========================================\par +\par +Berkeley Yacc is in the public domain; changes made to it by the current\par +maintainer are likewise unrestricted. That applies to most of the files.\par +A few files (currently those related to autoconf scripting) have other\par +licenses as noted here.\par +\par +Current byacc upstream maintainer: Thomas Dickey \par +\par +Public domain notice and no warranty:\par +-------------------------------------------------------------------------------\par + Berkeley Yacc is an LALR(1) parser generator. Berkeley Yacc has been made\par +as compatible as possible with AT&T Yacc. Berkeley Yacc can accept any input\par +specification that conforms to the AT&T Yacc documentation. Specifications\par +that take advantage of undocumented features of AT&T Yacc will probably be\par +rejected.\par +\par + Berkeley Yacc is distributed with no warranty whatever. The code\par +is certain to contain errors. Neither the author nor any contributor\par +takes responsibility for any consequences of its use.\par +\par + Berkeley Yacc is in the public domain. The data structures and algorithms\par +used in Berkeley Yacc are all either taken from documents available to the\par +general public or are inventions of the author. Anyone may freely distribute\par +source or binary forms of Berkeley Yacc whether unchanged or modified.\par +Distributers may charge whatever fees they can obtain for Berkeley Yacc.\par +Programs generated by Berkeley Yacc may be distributed freely.\par +\par + Please report bugs to\par +\par +\tab\tab\tab robert.corbett@eng.Sun.COM\par +\par +Include a small example if possible. Please include the banner string from\par +skeleton.c with the bug report. Do not expect rapid responses.\par +=========================================\par +END OF BERKELEY YACC NOTICES AND INFORMATION\par +\par +ALLJOYN NOTICES AND INFORMATION BEGIN HERE\par +=========================================\par +%%AllSeen Alliance's AllJoyn files, available at {{\field{\*\fldinst{HYPERLINK "https://git.allseenalliance.org/gerrit/"}}{\fldrslt{\ul\cf1\cf1\ul https://git.allseenalliance.org/gerrit/#/admin/projects/}}}}\f0\fs22\par +\par +\'a9 2009-2014, AllSeen Alliance\par +\par + +\pard\widctlpar\sb144\sa288\sl408\slmult1 Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.\par +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\par + +\pard\widctlpar ALLJOYN NOTICES AND INFORMATION END HERE\par +=========================================\par +\par +DISCUTILS NOTICES AND INFORMATION BEGIN HERE\par + +\pard\widctlpar\sa200\sl276\slmult1\lang9 DiscUtils ({{\field{\*\fldinst{HYPERLINK http://discutils.codeplex.com/license }}{\fldrslt{http://discutils.codeplex.com/license\ul0\cf0}}}}\f0\fs22 )\par + +\pard\widctlpar\lang1033 =========================================\par + +\pard\widctlpar\sa200\sl276\slmult1\lang9 Copyright (c) 2008 Kenneth Bell\line\line Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\line\line The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\line\fs19\line THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\fs22\lang1033\par + +\pard\widctlpar =========================================\par +\par +END OF DISCUTILS NOTICES AND INFORMATION\par +\par + +\pard\widctlpar\sa200\sl276\slmult1 -------------------------------------------------------------------------\par +GM.DLS NOTICES AND INFORMATION BEGIN HERE\par +=========================================\par +GMREADME.TXT\par +Copyright (c) Microsoft Corporation.\~ All Rights Reserved.\par +------------\par +The GM.DLS file contains the Roland SoundCanvas Sound Set which is \par +protected under the following copyright: \par +Roland GS Sound Set/Microsoft (P) 1996 Roland Corporation U.S.\~ \par +The Roland SoundCanvas Sound Set is licensed under Microsoft's \par +End User License Agreement for use with Microsoft operating \par +system products only.\~ All other uses require a separate written \par +license from Roland.\par + +\pard\widctlpar =========================================\par +\par +END OF GM.DLS NOTICES AND INFORMATION\par +___________________________________________________\par +\par +BOOST NOTICES AND INFORMATION BEGIN HERE\par +\par +============================================\par + +\pard\cbpat3\widctlpar\sa100\sl252\slmult1\cf2\f1\fs20 Boost\fs18\par +\fs20 Provided for Informational Purposes Only\line\line Boost Software License - Version 1.0 - August 17th, 2003\line\line Permission is hereby granted, free of charge, to any person or organization\line obtaining a copy of the software and accompanying documentation covered by\line this license (the "Software") to use, reproduce, display, distribute,\line execute, and transmit the Software, and to prepare derivative works of the\line Software, and to permit third-parties to whom the Software is furnished to\line do so, all subject to the following:\line\line The copyright notices in the Software and this entire statement, including\line the above license grant, this restriction and the following disclaimer,\line must be included in all copies of the Software, in whole or in part, and\line all derivative works of the Software, unless such copies or derivative\line works are solely in the form of machine-executable object code generated by\line a source language processor.\line\line THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\line IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\line FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT\line SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE\line FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,\line ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\line DEALINGS IN THE SOFTWARE.\fs18\par +=========================================\par +END OF BOOST NOTICES AND INFORMATION\par +-------------------------------------------------------------------------\par +W3C NOTICES AND INFORMATION BEGIN HERE\par +=========================================\par +W3C\par +\par +Portions of this software are based in part on the work of W3C. Because Microsoft has included the W3C software in this product, Microsoft is required to include the following text that accompanied such software:\par +W3C \'ae SOFTWARE NOTICE AND LICENSE\par +{\cf0{\field{\*\fldinst{HYPERLINK http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 }}{\fldrslt{http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231\ul0\cf0}}}}\f1\fs18\par +This work (and included software, documentation such as READMEs, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.\par +Permission to copy, modify, and distribute this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications:\par +1.\tab The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. \par +2.\tab Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software Short Notice should be included (hypertext is preferred, text is permitted) within the body of any redistributed or derivative code. \par +3.\tab Notice of any changes or modifications to the files, including the date changes were made. (We recommend you provide URLs to the location from which the code is derived.) \par +THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS", AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.\par +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.\par +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.\par +\par +=========================================\par +END OF W3C NOTICES \par +\par +==============================================================================\par +Microsoft/DirectXShaderCompiler\par +\par +THIRD-PARTY SOFTWARE NOTICES AND INFORMATION\par +\par +Do Not Translate or Localize\par +\par +This project incorporates components from the projects listed below. The original copyright notices and the licenses under which Microsoft received such components are set forth below. Microsoft reserves all rights not expressly granted herein, whether by implication, estoppel or otherwise.\par +\par +LLVM\par +\par +==============================================================================\par +LLVM Release License\par +==============================================================================\par +University of Illinois/NCSA\par +Open Source License\par +\par +Copyright (c) 2003-2015 University of Illinois at Urbana-Champaign.\par +All rights reserved.\par +\par +Developed by:\par +\par + LLVM Team\par +\par + University of Illinois at Urbana-Champaign\par +\par + {{\field{\*\fldinst{HYPERLINK http://llvm.org }}{\fldrslt{http://llvm.org\ul0\cf0}}}}\f1\fs18\par +\par +Permission is hereby granted, free of charge, to any person obtaining a copy of\par +this software and associated documentation files (the "Software"), to deal with\par +the Software without restriction, including without limitation the rights to\par +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\par +of the Software, and to permit persons to whom the Software is furnished to do\par +so, subject to the following conditions:\par +\par + * Redistributions of source code must retain the above copyright notice,\par + this list of conditions and the following disclaimers.\par +\par + * Redistributions in binary form must reproduce the above copyright notice,\par + this list of conditions and the following disclaimers in the\par + documentation and/or other materials provided with the distribution.\par +\par + * Neither the names of the LLVM Team, University of Illinois at\par + Urbana-Champaign, nor the names of its contributors may be used to\par + endorse or promote products derived from this Software without specific\par + prior written permission.\par +\par +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\par +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\par +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\par +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\par +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\par +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE\par +SOFTWARE.\par +\par +==============================================================================\par +Copyrights and Licenses for Third Party Software Distributed with LLVM:\par +==============================================================================\par +The LLVM software contains code written by third parties. Such software will\par +have its own individual LICENSE.TXT file in the directory in which it appears.\par +This file will describe the copyrights, license, and restrictions which apply\par +to that code.\par +\par +The disclaimer of warranty in the University of Illinois Open Source License\par +applies to all code in the LLVM Distribution, and nothing in any of the\par +other licenses gives permission to use the names of the LLVM Team or the\par +University of Illinois to endorse or promote products derived from this\par +Software.\par +\par +The following pieces of software have additional or alternate copyrights,\par +licenses, and/or restrictions:\par +\par +\par +CLANG\par +\par +==============================================================================\par +LLVM Release License\par +==============================================================================\par +University of Illinois/NCSA\par +Open Source License\par +\par +Copyright (c) 2007-2015 University of Illinois at Urbana-Champaign.\par +All rights reserved.\par +\par +Developed by:\par +\par + LLVM Team\par +\par + University of Illinois at Urbana-Champaign\par +\par + {{\field{\*\fldinst{HYPERLINK http://llvm.org }}{\fldrslt{http://llvm.org\ul0\cf0}}}}\f1\fs18\par +\par +Permission is hereby granted, free of charge, to any person obtaining a copy of\par +this software and associated documentation files (the "Software"), to deal with\par +the Software without restriction, including without limitation the rights to\par +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\par +of the Software, and to permit persons to whom the Software is furnished to do\par +so, subject to the following conditions:\par +\par + * Redistributions of source code must retain the above copyright notice,\par + this list of conditions and the following disclaimers.\par +\par + * Redistributions in binary form must reproduce the above copyright notice,\par + this list of conditions and the following disclaimers in the\par + documentation and/or other materials provided with the distribution.\par +\par + * Neither the names of the LLVM Team, University of Illinois at\par + Urbana-Champaign, nor the names of its contributors may be used to\par + endorse or promote products derived from this Software without specific\par + prior written permission.\par +\par +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\par +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\par +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\par +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\par +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\par +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE\par +SOFTWARE.\par +\par +==============================================================================\par +The LLVM software contains code written by third parties. Such software will\par +have its own individual LICENSE.TXT file in the directory in which it appears.\par +This file will describe the copyrights, license, and restrictions which apply\par +to that code.\par +\par +The disclaimer of warranty in the University of Illinois Open Source License\par +applies to all code in the LLVM Distribution, and nothing in any of the\par +other licenses gives permission to use the names of the LLVM Team or the\par +University of Illinois to endorse or promote products derived from this\par +Software.\par +\par +\par +LLVM System Interface Library\par +-------------------------------------------------------------------------------\par +The LLVM System Interface Library is licensed under the Illinois Open Source\par +License and has the following additional copyright:\par +\par +Copyright (C) 2004 eXtensible Systems, Inc.\par +\par +OpenBSD regex\par +\par +$OpenBSD: COPYRIGHT,v 1.3 2003/06/02 20:18:36 millert Exp $\par +\par +Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved.\par +This software is not subject to any license of the American Telephone\par +and Telegraph Company or of the Regents of the University of California.\par +\par +Permission is granted to anyone to use this software for any purpose on\par +any computer system, and to alter it and redistribute it, subject\par +to the following restrictions:\par +\par +1. The author is not responsible for the consequences of use of this\par + software, no matter how awful, even if they arise from flaws in it.\par +\par +2. The origin of this software must not be misrepresented, either by\par + explicit claim or by omission. Since few users ever read sources,\par + credits must appear in the documentation.\par +\par +3. Altered versions must be plainly marked as such, and must not be\par + misrepresented as being the original software. Since few users\par + ever read sources, credits must appear in the documentation.\par +\par +4. This notice may not be removed or altered.\par +\par +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\par +/*-\par + * Copyright (c) 1994\par + * The Regents of the University of California. All rights reserved.\par + *\par + * Redistribution and use in source and binary forms, with or without\par + * modification, are permitted provided that the following conditions\par + * are met:\par + * 1. Redistributions of source code must retain the above copyright\par + * notice, this list of conditions and the following disclaimer.\par + * 2. Redistributions in binary form must reproduce the above copyright\par + * notice, this list of conditions and the following disclaimer in the\par + * documentation and/or other materials provided with the distribution.\par + * 3. Neither the name of the University nor the names of its contributors\par + * may be used to endorse or promote products derived from this software\par + * without specific prior written permission.\par + *\par + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND\par + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\par + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\par + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE\par + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\par + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\par + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\par + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\par + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\par + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\par + * SUCH DAMAGE.\par + *\par + * @(#)COPYRIGHT 8.1 (Berkeley) 3/16/94\par + */\par +\par +END OF THIRD-PARTY NOTICES FOR Microsoft/DirectXShaderCompiler\par +==============================================================================\par +\par +\par +For additional Microsoft Third-Party Notices see: {\cf0{\field{\*\fldinst{HYPERLINK https://aka.ms/thirdpartynotices }}{\fldrslt{https://aka.ms/thirdpartynotices\ul0\cf0}}}}\f1\fs18\par +} + \ No newline at end of file diff --git a/src/cpu_disp.cpp b/src/cpu_disp.cpp deleted file mode 100644 index 671ddff..0000000 --- a/src/cpu_disp.cpp +++ /dev/null @@ -1,387 +0,0 @@ -/* - * PROJECT: Universal C++ RunTime (UCXXRT) - * FILE: cpu_disp.cpp - * DATA: 2021/04/25 - * - * PURPOSE: Universal C++ RunTime - * - * LICENSE: Relicensed under The MIT License from The CC BY 4.0 License - * - * DEVELOPER: MiroKaku (miro.kaku AT Outlook.com) - */ - -/* - * Reference: https://github.com/SpoilerScriptsGroup/RetrievAL/blob/master/SpoilerAL-winmm.dll/crt/msvc/isa_available_init.c - */ - -#include -#include -#include - - -// BitScanForward -// -// for constant value -#define _BSF8(x, default) ( \ - ((x) & 0x01) ? 0 : \ - ((x) & 0x02) ? 1 : \ - ((x) & 0x04) ? 2 : \ - ((x) & 0x08) ? 3 : \ - ((x) & 0x10) ? 4 : \ - ((x) & 0x20) ? 5 : \ - ((x) & 0x40) ? 6 : \ - ((x) & 0x80) ? 7 : \ - (default)) -#define _BSF16(x, default) _BSF8(x, _BSF8((x) >> 8, (default) - 8) + 8) -#define _BSF32(x, default) _BSF16(x, _BSF16((x) >> 16, (default) - 16) + 16) -#define _BSF64(x, default) _BSF32(x, _BSF32((x) >> 32, (default) - 32) + 32) -#define BSF8(x) _BSF8(x, -1) -#define BSF16(x) _BSF16(x, -1) -#define BSF32(x) _BSF32(x, -1) -#define BSF64(x) _BSF64(x, -1) - -// for constant value -#define MASM_BSF32(x) ( -1 + \ - ( (x) and 1 ) + \ - ((((x) shr 1) and 1) and (((x) and 0x00000001) eq 0)) * 2 + \ - ((((x) shr 2) and 1) and (((x) and 0x00000003) eq 0)) * 3 + \ - ((((x) shr 3) and 1) and (((x) and 0x00000007) eq 0)) * 4 + \ - ((((x) shr 4) and 1) and (((x) and 0x0000000F) eq 0)) * 5 + \ - ((((x) shr 5) and 1) and (((x) and 0x0000001F) eq 0)) * 6 + \ - ((((x) shr 6) and 1) and (((x) and 0x0000003F) eq 0)) * 7 + \ - ((((x) shr 7) and 1) and (((x) and 0x0000007F) eq 0)) * 8 + \ - ((((x) shr 8) and 1) and (((x) and 0x000000FF) eq 0)) * 9 + \ - ((((x) shr 9) and 1) and (((x) and 0x000001FF) eq 0)) * 10 + \ - ((((x) shr 10) and 1) and (((x) and 0x000003FF) eq 0)) * 11 + \ - ((((x) shr 11) and 1) and (((x) and 0x000007FF) eq 0)) * 12 + \ - ((((x) shr 12) and 1) and (((x) and 0x00000FFF) eq 0)) * 13 + \ - ((((x) shr 13) and 1) and (((x) and 0x00001FFF) eq 0)) * 14 + \ - ((((x) shr 14) and 1) and (((x) and 0x00003FFF) eq 0)) * 15 + \ - ((((x) shr 15) and 1) and (((x) and 0x00007FFF) eq 0)) * 16 + \ - ((((x) shr 16) and 1) and (((x) and 0x0000FFFF) eq 0)) * 17 + \ - ((((x) shr 17) and 1) and (((x) and 0x0001FFFF) eq 0)) * 18 + \ - ((((x) shr 18) and 1) and (((x) and 0x0003FFFF) eq 0)) * 19 + \ - ((((x) shr 19) and 1) and (((x) and 0x0007FFFF) eq 0)) * 20 + \ - ((((x) shr 20) and 1) and (((x) and 0x000FFFFF) eq 0)) * 21 + \ - ((((x) shr 21) and 1) and (((x) and 0x001FFFFF) eq 0)) * 22 + \ - ((((x) shr 22) and 1) and (((x) and 0x003FFFFF) eq 0)) * 23 + \ - ((((x) shr 23) and 1) and (((x) and 0x007FFFFF) eq 0)) * 24 + \ - ((((x) shr 24) and 1) and (((x) and 0x00FFFFFF) eq 0)) * 25 + \ - ((((x) shr 25) and 1) and (((x) and 0x01FFFFFF) eq 0)) * 26 + \ - ((((x) shr 26) and 1) and (((x) and 0x03FFFFFF) eq 0)) * 27 + \ - ((((x) shr 27) and 1) and (((x) and 0x07FFFFFF) eq 0)) * 28 + \ - ((((x) shr 28) and 1) and (((x) and 0x0FFFFFFF) eq 0)) * 29 + \ - ((((x) shr 29) and 1) and (((x) and 0x1FFFFFFF) eq 0)) * 30 + \ - ((((x) shr 30) and 1) and (((x) and 0x3FFFFFFF) eq 0)) * 31 + \ - ((((x) shr 31) and 1) and (((x) and 0x7FFFFFFF) eq 0)) * 32) - -// for constant value -#define MASM_BSWAP16(value) ( \ - (((value) shr 8) and 0x00FF) or \ - (((value) shl 8) and 0xFF00)) - -// for constant value -#define MASM_BSWAP24(value) ( \ - (((value) shr 16) and 0x000000FF) or \ - ( (value) and 0x0000FF00) or \ - (((value) shl 16) and 0x00FF0000)) - -// for constant value -#define MASM_BSWAP32(value) ( \ - (((value) shr 24) and 0x000000FF) or \ - (((value) shr 8) and 0x0000FF00) or \ - (((value) shl 8) and 0x00FF0000) or \ - (((value) shl 24) and 0xFF000000)) - - -_CRT_BEGIN_C_HEADER - -#define __ISA_ENABLED_X86 0x00000001 -#define __ISA_ENABLED_SSE2 0x00000002 -#define __ISA_ENABLED_SSE42 0x00000004 -#define __ISA_ENABLED_AVX 0x00000008 -#define __ISA_ENABLED_AVX2 0x00000020 -#define __ISA_ENABLED_AVX512 0x00000040 - -#define __FAVOR_ATOM 0 -#define __FAVOR_ENFSTRG 1 -#define __FAVOR_XMMLOOP 2 - -/* Features in ecx for leaf 1 */ -#define CF_SSE42 0x00100000 -#define CF_OSXSAVE 0x08000000 -#define CF_AVX 0x10000000 - -/* Features in ebx for leaf 7 sub-leaf 0 */ -#define CX_AVX2 0x00000020 -#define CX_ERMS 0x00000200 -#define CX_AVX512F 0x00010000 -#define CX_AVX512DQ 0x00020000 -#define CX_AVX512CD 0x10000000 -#define CX_AVX512BW 0x40000000 -#define CX_AVX512VL 0x80000000 - -/* Get XCR_XFEATURE_ENABLED_MASK register with xgetbv. */ -#define XCR_XFEATURE_ENABLED_MASK 0x00000000 -#define XSTATE_FP 0x00000001 -#define XSTATE_SSE 0x00000002 -#define XSTATE_YMM 0x00000004 -#define XSTATE_OPMASK 0x00000020 -#define XSTATE_ZMM 0x00000040 -#define XSTATE_HI_ZMM 0x00000080 - -unsigned int __isa_available = __ISA_AVAILABLE_X86; -unsigned int __isa_enabled = __ISA_ENABLED_X86; -unsigned int __favor = 0; - -BOOLEAN __stdcall __IsProcessorFeaturePresent(_In_ ULONG ProcessorFeature) -{ - return (BOOLEAN)ExIsProcessorFeaturePresent(ProcessorFeature); -} - -#ifndef _M_IX86 -#pragma intrinsic(__cpuid) -#pragma intrinsic(__cpuidex) - -void __cdecl __isa_available_init() -{ - #define C1_AVX (CF_OSXSAVE | CF_AVX) - #define C7_AVX512 (CX_AVX512F | CX_AVX512DQ | CX_AVX512CD | CX_AVX512BW | CX_AVX512VL) - #define XCR_AVX (XSTATE_SSE | XSTATE_YMM) - #define XCR_AVX512F (XSTATE_OPMASK | XSTATE_ZMM | XSTATE_HI_ZMM) - - struct { - uint32_t eax; - uint32_t ebx; - uint32_t ecx; - uint32_t edx; - } cpuInfo; - uint32_t cpuid_0_eax; - uint32_t cpuid_1_ecx; - uint32_t cpuid_7_ebx; - uint32_t xgetbv_eax; - uint32_t intel_outside; - - __favor = 0; - if (!__IsProcessorFeaturePresent(PF_XMMI64_INSTRUCTIONS_AVAILABLE)) - goto ISA_AVAILABLE_X86; - __cpuid((int *)&cpuInfo, 0); - cpuid_0_eax = cpuInfo.eax; - intel_outside = - (cpuInfo.ebx ^ _ByteSwap32('Genu')) | - (cpuInfo.edx ^ _ByteSwap32('ineI')) | - (cpuInfo.ecx ^ _ByteSwap32('ntel')); - __cpuid((int *)&cpuInfo, 1); - cpuid_1_ecx = cpuInfo.ecx; - if (!intel_outside) - switch (cpuInfo.eax & 0x0FFF3FF0) { - case 0x000106C0: - case 0x00020660: - case 0x00020670: - case 0x00030650: - case 0x00030660: - case 0x00030670: - __favor = 1 << __FAVOR_ATOM; - } - cpuid_7_ebx = 0; - if (cpuid_0_eax >= 7) { - __cpuidex((int *)&cpuInfo, 7, 0); - __favor |= ((cpuid_7_ebx = cpuInfo.ebx) & CX_ERMS) >> (BSF32(CX_ERMS) - __FAVOR_ENFSTRG); - } - if (cpuid_1_ecx & CF_SSE42) - if ((cpuid_1_ecx & C1_AVX) == C1_AVX && ((xgetbv_eax = (uint32_t)_xgetbv(0)) & XCR_AVX) == XCR_AVX) - if (cpuid_7_ebx & CX_AVX2) - if ((cpuid_7_ebx & C7_AVX512) == C7_AVX512 && (xgetbv_eax & XCR_AVX512F) == XCR_AVX512F) - goto ISA_AVAILABLE_AVX512; - else - goto ISA_AVAILABLE_AVX2; - else - goto ISA_AVAILABLE_AVX; - else - goto ISA_AVAILABLE_SSE42; - else - goto ISA_AVAILABLE_SSE2; - -ISA_AVAILABLE_X86: - __isa_available = __ISA_AVAILABLE_X86; - __isa_enabled = __ISA_ENABLED_X86; - return; - -ISA_AVAILABLE_SSE2: - __isa_available = __ISA_AVAILABLE_SSE2; - __isa_enabled = __ISA_ENABLED_X86 | __ISA_ENABLED_SSE2; - return; - -ISA_AVAILABLE_SSE42: - __isa_available = __ISA_AVAILABLE_SSE42; - __isa_enabled = __ISA_ENABLED_X86 | __ISA_ENABLED_SSE2 | __ISA_ENABLED_SSE42; - return; - -ISA_AVAILABLE_AVX: - __isa_available = __ISA_AVAILABLE_AVX; - __isa_enabled = __ISA_ENABLED_X86 | __ISA_ENABLED_SSE2 | __ISA_ENABLED_SSE42 | __ISA_ENABLED_AVX; - return; - -ISA_AVAILABLE_AVX2: - __isa_available = __ISA_AVAILABLE_AVX2; - __isa_enabled = __ISA_ENABLED_X86 | __ISA_ENABLED_SSE2 | __ISA_ENABLED_SSE42 | __ISA_ENABLED_AVX | __ISA_ENABLED_AVX2; - return; - -ISA_AVAILABLE_AVX512: - __isa_available = __ISA_AVAILABLE_AVX512; - __isa_enabled = __ISA_ENABLED_X86 | __ISA_ENABLED_SSE2 | __ISA_ENABLED_SSE42 | __ISA_ENABLED_AVX | __ISA_ENABLED_AVX2 | __ISA_ENABLED_AVX512; - return; - - #undef C1_AVX - #undef C7_AVX512 - #undef XCR_AVX - #undef XCR_AVX512F -} -#else -__declspec(naked) void __cdecl __isa_available_init() -{ - __asm - { - #define C1_AVX (CF_OSXSAVE or CF_AVX) - #define C7_AVX512 (CX_AVX512F or CX_AVX512DQ or CX_AVX512CD or CX_AVX512BW or CX_AVX512VL) - #define XCR_AVX (XSTATE_SSE or XSTATE_YMM) - #define XCR_AVX512F (XSTATE_OPMASK or XSTATE_ZMM or XSTATE_HI_ZMM) - - #define cpuid_0_eax eax - #define cpuid_1_ecx ecx - #define cpuid_7_ebx ebx - - mov dword ptr [__favor], 0 - push PF_XMMI64_INSTRUCTIONS_AVAILABLE - call __IsProcessorFeaturePresent - test eax, eax - jz ISA_AVAILABLE_X86 - push ebx - xor eax, eax - cpuid - xor ebx, MASM_BSWAP32('Genu') - xor edx, MASM_BSWAP32('ineI') - xor ecx, MASM_BSWAP32('ntel') - or ebx, edx - push cpuid_0_eax - or ebx, ecx - mov eax, 1 - push ebx - cpuid - pop ebx - mov edx, eax - and eax, 0FFF3FF0H and (not (000106C0H or 00020660H or 00020670H or 00030650H or 00030660H or 00030670H)) - and edx, 000106C0H or 00020660H or 00020670H or 00030650H or 00030660H or 00030670H - or eax, ebx - jnz L2 - mov eax, edx - and edx, 000106C0H and 00020660H and 00020670H and 00030650H and 00030660H and 00030670H - cmp edx, 000106C0H and 00020660H and 00020670H and 00030650H and 00030660H and 00030670H - jne L2 - sub eax, 000106C0H - jz L1 - sub eax, 00020660H - 000106C0H - jz L1 - sub eax, 00020670H - 00020660H - jz L1 - sub eax, 00030650H - 00020670H - jz L1 - sub eax, 00030660H - 00030650H - jz L1 - cmp eax, 00030670H - 00030660H - jne L2 - L1: - mov dword ptr [__favor], 1 shl __FAVOR_ATOM - L2: - pop cpuid_0_eax - xor cpuid_7_ebx, cpuid_7_ebx - cmp cpuid_0_eax, 7 - jb L3 - push cpuid_1_ecx - mov eax, 7 - xor ecx, ecx - cpuid - mov ecx, cpuid_7_ebx - and ebx, CX_ERMS - shr ebx, MASM_BSF32(CX_ERMS) - __FAVOR_ENFSTRG - mov eax, dword ptr [__favor] - or eax, ebx - mov cpuid_7_ebx, ecx - mov dword ptr [__favor], eax - pop cpuid_1_ecx - L3: - mov eax, cpuid_1_ecx - and ecx, C1_AVX - test eax, CF_SSE42 - jz ISA_AVAILABLE_SSE2 - xor ecx, C1_AVX - jnz ISA_AVAILABLE_SSE42 - xgetbv - mov ecx, eax - and eax, XCR_AVX - cmp eax, XCR_AVX - jne ISA_AVAILABLE_SSE42 - test cpuid_7_ebx, CX_AVX2 - jz ISA_AVAILABLE_AVX - and ebx, C7_AVX512 - and ecx, XCR_AVX512F - cmp ebx, C7_AVX512 - jne ISA_AVAILABLE_AVX2 - cmp ecx, XCR_AVX512F - jne ISA_AVAILABLE_AVX2 - pop ebx - jmp ISA_AVAILABLE_AVX512 - - align 16 - ISA_AVAILABLE_X86: - mov dword ptr [__isa_available], __ISA_AVAILABLE_X86 - mov dword ptr [__isa_enabled], __ISA_ENABLED_X86 - ret - - align 16 - ISA_AVAILABLE_SSE2: - mov dword ptr [__isa_available], __ISA_AVAILABLE_SSE2 - mov dword ptr [__isa_enabled], __ISA_ENABLED_X86 or __ISA_ENABLED_SSE2 - pop ebx - ret - - align 16 - ISA_AVAILABLE_SSE42: - mov dword ptr [__isa_available], __ISA_AVAILABLE_SSE42 - mov dword ptr [__isa_enabled], __ISA_ENABLED_X86 or __ISA_ENABLED_SSE2 or __ISA_ENABLED_SSE42 - pop ebx - ret - - align 16 - ISA_AVAILABLE_AVX: - mov dword ptr [__isa_available], __ISA_AVAILABLE_AVX - mov dword ptr [__isa_enabled], __ISA_ENABLED_X86 or __ISA_ENABLED_SSE2 or __ISA_ENABLED_SSE42 or __ISA_ENABLED_AVX - pop ebx - ret - - align 16 - ISA_AVAILABLE_AVX2: - mov dword ptr [__isa_available], __ISA_AVAILABLE_AVX2 - mov dword ptr [__isa_enabled], __ISA_ENABLED_X86 or __ISA_ENABLED_SSE2 or __ISA_ENABLED_SSE42 or __ISA_ENABLED_AVX or __ISA_ENABLED_AVX2 - pop ebx - ret - - align 16 - ISA_AVAILABLE_AVX512: - mov dword ptr [__isa_available], __ISA_AVAILABLE_AVX512 - mov dword ptr [__isa_enabled], __ISA_ENABLED_X86 or __ISA_ENABLED_SSE2 or __ISA_ENABLED_SSE42 or __ISA_ENABLED_AVX or __ISA_ENABLED_AVX2 or __ISA_ENABLED_AVX512 - ret - - #undef C1_AVX - #undef C7_AVX512 - #undef XCR_AVX - #undef XCR_AVX512F - #undef cpuid_0_eax - #undef cpuid_1_ecx - #undef cpuid_7_ebx - } -} -#endif - -_CRT_END_C_HEADER - diff --git a/src/crt/arm/chkstk.asm b/src/crt/arm/chkstk.asm new file mode 100644 index 0000000..ab4ce50 --- /dev/null +++ b/src/crt/arm/chkstk.asm @@ -0,0 +1,131 @@ + TTL "Runtime Stack Checking" +;++ +; +; Copyright (c) Microsoft Corporation +; +; Module Name: +; +; chkstk.asm +; +; Abstract: +; +; This module implements runtime stack checking. +; +;-- + +#include "ksarm.h" + + TEXTAREA + + SUBT "Check Stack" +;++ +; +; ULONG +; __chkstk ( +; VOID +; ) +; +; Routine Description: +; +; This function provides runtime stack checking for local allocations +; that are more than a page and for storage dynamically allocated with +; the alloca function. Stack checking consists of probing downward in +; the stack a page at a time. If the current stack commitment is exceeded, +; then the system will automatically attempts to expand the stack. If the +; attempt succeeds, then another page is committed. Otherwise, a stack +; overflow exception is raised. It is the responsibility of the caller to +; handle this exception. +; +; N.B. This routine is called using a non-standard calling sequence since +; it is typically called from within the prologue. The allocation size +; argument is in register r4, and is divided by 4. Upon return, r4 is +; expected to contain the full allocation amount. +; +; The typical calling sequence from the prologue is: +; +; ldr r4, [pc, #xxx] ; set requested stack frame size +; bl _chkstk ; r4 is subtracted from sp in __chkstk +; +; Arguments: +; +; None. +; +; Implicit Arguments: +; +; Allocation (r4) - Supplies the size of the allocation on the stack, divided by 4. +; +; Return Value: +; +; None. +; +;-- + +#ifdef NTOS_KERNEL_RUNTIME + + LEAF_ENTRY __chkstk //, _TEXT$00 + + lsls r4, r4, #2 ; multiply adjustment by 4 + bx lr + + LEAF_END __chkstk //, _TEXT$00 + +#else + + NESTED_ENTRY __chkstk //, _TEXT$00 + ALTERNATE_ENTRY _alloca_probe + +; +; Compute the new stack address. +; +; N.B. If the computation causes a borrow, i.e., the requested size is very +; large, then the computed address is forced to zero +; + + subs r12, sp, r4, lsl #2 ; calculate new stack address + TEB_READ r4 ; get a pointer to the TEB + ldr r4, [r4, #TeStackLimit] ; get current stack limit + blo %F2 ; if wrapped through zero, fix it up out-of-band + +; +; If the new stack address is greater than the current stack limit, then the +; pages have already been allocated and nothing further needs to be done. +; +1 + cmp r12, r4 ; check if stack within limits + blo __chkstk_probe ; if stack outside of limits, probe it + sub r4, sp, r12 ; re-derive stack adjustment + EPILOG_RETURN ; otherwise, just return +2 + movs r12, #0 ; set r12 to 0 + b %B1 ; resume + + NESTED_END __chkstk + + + NESTED_ENTRY __chkstk_probe + PROLOG_PUSH {r5, r6} ; save some scratch registers + +; +; The new stack address is not within the currently allocated stack. Probe +; pages downward from the current stack limit until all pages have been +; allocated or a stack overflow occurs in which case an exception +; will be raised. +; + + mov r6, r12 ; get target stack value + bfc r6, #0, #12 ; clear out the low bits +1 + sub r4, r4, #PAGE_SIZE ; get next lower page address + ldr r5, [r4] ; probe stack address + cmp r4, r6 ; check if end of probe range + bne %B1 ; if ne, not end of probe range + + EPILOG_POP {r5, r6} ; restore scratch registers + EPILOG_NOP sub r4, sp, r12 ; re-derive stack adjustment + EPILOG_RETURN ; return + + NESTED_END __chkstk_probe //, _TEXT$00 + +#endif + + END diff --git a/src/crt/arm/divide.asm b/src/crt/arm/divide.asm new file mode 100644 index 0000000..cd8bf51 --- /dev/null +++ b/src/crt/arm/divide.asm @@ -0,0 +1,259 @@ +; +; Division help functions +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +; UINT32 __rt_udiv(UINT32 divisor, UINT32 dividend) -- also returns remainder in r1 +; UINT32 __rt_sdiv(UINT32 divisor, UINT32 dividend) -- also returns remainder in r1 +; +; UINT64 __rt_udiv64(UINT32 divisor, UINT32 dividend) -- also returns remainder in r3:r2 +; UINT64 __rt_sdiv64(UINT32 divisor, UINT32 dividend) -- also returns remainder in r3:r2 +; + +#include "kxarm.h" + + IMPORT __helper_divide_by_0 + + ; + ; Macro-ize the implementation of an unsigned 32/32 divide. + ; Assumes free use of r0-r3 + ; + + MACRO + DIVIDE_CORE_32_STEP $Shift + subs r3, r1, r2, lsl #$Shift ; r3 = r1 - r2 << Shift + movcs r1, r3 ; keep the result if carry set + adcs r0, r0, r0 ; double the result and add the carry + MEND + + MACRO + DIVIDE_CORE_32 + + cbz r0, %F1 ; skip if divide by 0 + mov r2, r0 ; save the original divisor in r2 + clz r0, r0 ; get zero count of divisor + clz r3, r1 ; get zero count of dividend + subs r0, r0, r3 ; get difference between bit counts + ; r0 is untrusted and feeds into an indir, but + ; does not need a speculation block because + ; it's already bounded 0-31 + adr r3, %F8 + 1 ; get address of entry 0 plus thumb bit + sub r3, r3, r0, lsl #3 ; subtract count * 8 + sub r3, r3, r0, lsl #1 ; subtract count * 2 = count * 10 + mov r0, #0 ; initialize final result + blt.w %F9 ; if the number of bits is < 0, result is 0 + bx r3 ; go there +1 + __brkdiv0 ; exception if zero + + DIVIDE_CORE_32_STEP 31 + DIVIDE_CORE_32_STEP 30 + DIVIDE_CORE_32_STEP 29 + DIVIDE_CORE_32_STEP 28 + DIVIDE_CORE_32_STEP 27 + DIVIDE_CORE_32_STEP 26 + DIVIDE_CORE_32_STEP 25 + DIVIDE_CORE_32_STEP 24 + DIVIDE_CORE_32_STEP 23 + DIVIDE_CORE_32_STEP 22 + DIVIDE_CORE_32_STEP 21 + DIVIDE_CORE_32_STEP 20 + DIVIDE_CORE_32_STEP 19 + DIVIDE_CORE_32_STEP 18 + DIVIDE_CORE_32_STEP 17 + DIVIDE_CORE_32_STEP 16 + DIVIDE_CORE_32_STEP 15 + DIVIDE_CORE_32_STEP 14 + DIVIDE_CORE_32_STEP 13 + DIVIDE_CORE_32_STEP 12 + DIVIDE_CORE_32_STEP 11 + DIVIDE_CORE_32_STEP 10 + DIVIDE_CORE_32_STEP 9 + DIVIDE_CORE_32_STEP 8 + DIVIDE_CORE_32_STEP 7 + DIVIDE_CORE_32_STEP 6 + DIVIDE_CORE_32_STEP 5 + DIVIDE_CORE_32_STEP 4 + DIVIDE_CORE_32_STEP 3 + DIVIDE_CORE_32_STEP 2 + DIVIDE_CORE_32_STEP 1 +8 + DIVIDE_CORE_32_STEP 0 +9 + MEND + + + ; + ; Macro-ize the implementation of an unsigned 64/64 divide. + ; Assumes free use of r0-r6, r12 + ; + + MACRO + DIVIDE_CORE_64 + + orrs r4, r0, r1 ; check divisor against 0 + beq %F6 ; exception if zero + + orrs r4, r1, r3 ; check for 32/32 fast case + beq %F7 ; if we can do it, skip ahead + + mov r6, r0 ; save the original divisor in r12:r6 + mov r12, r1 ; + + clz r1, r3 ; get zero count of high word + cbnz r3, %F1 ; if upper word is non-zero, that's it + clz r1, r2 ; else get zero count of low word + adds r1, r1, #32 ; plus 32 +1 + cmp r12, #0 ; is upper word of divisor 0? + clz r0, r12 ; get zero count of high word + bne %F2 ; if upper word is non-zero, that's it + clz r0, r6 ; else get zero count of low word + adds r0, r0, #32 ; plus 32 +2 + subs r0, r0, r1 ; get difference between bit counts + blt %F8 ; if divisor is larger than dividend, return 0 + ; with original dividend + + cmp r0, #32 ; shifting more than 32 bits? + mov r5, r12 ; copy original values + mov r4, r6 ; + blo %F3 ; if less than 32 bits, that's all + mov r5, r6 ; else preshift by shifting words + movs r4, #0 ; +3 + ands r0, r0, #31 ; keep low 32 bits of shift count + lsls r5, r5, r0 ; compute r5:r4 = r12:r6 << r0 + rsbs r1, r0, #32 ; + lsrs r1, r4, r1 ; + lsls r4, r4, r0 ; + orrs r5, r5, r1 ; + + movs r0, #0 ; start with a 0 result + movs r1, #0 ; + b %F1 ; jump into the middle of the loop + +6 + __brkdiv0 ; exception if zero + +0 + lsrs r4, r4, #1 ; shift divisor down 1 bit + adds r0, r0, r0 ; double the result + orr r4, r5, lsl #31 ; shift + adcs r1, r1, r1 ; double + lsrs r5, r5, #1 ; shift +1 + cmp r5, r3 ; compare upper word of shifted divisor to dividend + bhi %F3 ; skip if above + blo %F2 ; subtract if below + cmp r4, r2 ; compare lower word of shifted divisor to dividend + bhi %F3 ; skip if above +2 + subs r2, r2, r4 ; subtract: r3:r2 -= r5:r4 + sbcs r3, r3, r5 ; + adds r0, r0, #1 ; add one to the result: r12:r6++ + adcs r1, r1, #0 ; +3 + cmp r4, r6 ; compare lower word against original divisor + bne %B0 ; if not equal, keep looping + cmp r5, r12 ; compare upper word against original divisor + bne %B0 ; if not equal, keep looping + b %F9 ; skip over the special-case code +7 + mov r1, r2 ; copy low word of dividend to r1 + bl __rt_udiv ; do a 32/32 divide + mov r2, r1 ; move remainder to r2 + movs r1, #0 ; clear high words + movs r3, #0 ; + b %F9 ; skip over the special-case code +8 + movs r1, #0 ; set result to 0 + movs r0, #0 ; +9 + MEND + + + TEXTAREA + + + ; + ; 32-bit unsigned divide + remainder + ; + + LEAF_ENTRY __rt_udiv + + DIVIDE_CORE_32 ; handle core division of unsigned values + bx lr ; return + + LEAF_END __rt_udiv + + + ; + ; 32-bit signed divide + remainder + ; + + LEAF_ENTRY __rt_sdiv + + ands r3, r0, #0x80000000 ; get high bit of divisor in r3 + rsbmi r0, r0, #0 ; if that was negative, negate divisor + eors r12, r3, r1, asr #32 ; get sign bits XORed in top of r12 + ; and sign bit of dividend in remaining bits + rsbcs r1, r1, #0 ; if dividend was negative, negate it + + DIVIDE_CORE_32 ; handle core division of unsigned values + + lsls r12, r12, #1 ; shift XORed sign bit into carry + ; and sign bit of dividend into top bit (mi) + rsbcs r0, r0, #0 ; apply negation of result based on XOR + rsbmi r1, r1, #0 ; apply negation of remainder based on dividend + bx lr ; return + + LEAF_END __rt_sdiv + + + ; + ; 64-bit unsigned divide + remainder + ; + + NESTED_ENTRY __rt_udiv64 + PROLOG_PUSH {r4-r7,r11,lr} ; save registers and return address + + DIVIDE_CORE_64 ; handle core division of unsigned values + + EPILOG_POP {r4-r7,r11,pc} ; restore registers and return + NESTED_END __rt_udiv64 + + + ; + ; 64-bit signed divide + remainder + ; + + NESTED_ENTRY __rt_sdiv64 + PROLOG_PUSH {r4-r7,r11,lr} ; save registers and return address + + ands r4, r1, #0x80000000 ; get high bit of divisor in r4 + bpl %F1 ; if positive, skip + rsbs r0, r0, #0 ; negate divisor + sbc r1, r1, r1, lsl #1 ; trick equivalent to rsc r1, r1, #0 +1 eors r7, r4, r3, asr #32 ; get sign bits XORed in top of r7 + ; and sign bit of dividend in remaining bits + bcc %F2 ; if carry clear, skip + rsbs r2, r2, #0 ; if dividend was negative, negate it + sbc r3, r3, r3, lsl #1 ; trick equivalent to rsc r3, r3, #0 +2 + DIVIDE_CORE_64 + + lsls r7, r7, #1 ; shift XORed sign bit into carry + ; and sign bit of dividend into top bit (mi) + bcc %F3 ; if no carry, skip + rsbs r0, r0, #0 ; negate result + sbc r1, r1, r1, lsl #1 ; trick equivalent to rsc r1, r1, #0 + ands r7, r7 ; re-test r7 for minus +3 bpl %F4 ; if non-negative, skip + rsbs r2, r2, #0 ; negate remainder + sbc r3, r3, r3, lsl #1 ; trick equivalent to rsc r3, r3, #0 +4 + EPILOG_POP {r4-r7,r11,pc} ; restore registers and return + NESTED_END __rt_sdiv64 + + END diff --git a/src/crt/arm/fptoi64.asm b/src/crt/arm/fptoi64.asm new file mode 100644 index 0000000..defa409 --- /dev/null +++ b/src/crt/arm/fptoi64.asm @@ -0,0 +1,320 @@ +; +; Floating-point to 64-bit integer helper functions +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +; INT64 __dtoi64(double fpval) +; UINT64 __dtou64(double fpval) +; INT64 __stoi64(float fpval) +; UINT64 __stou64(float fpval) +; + +#include "kxarm.h" + + ; + ; FPSCR bit constants + ; + +_IXBit equ 1 +_UFBit equ 2 +_OFBit equ 4 +_DZBit equ 8 +_IOBit equ 16 + + ; + ; Floating point exception constants from fpieee.h + ; + +_FpFormatFp32 equ 0 +_FpFormatFp64 equ 1 +_FpFormatI64 equ 6 +_FpFormatU64 equ 9 + +_FpCodeConvert equ 8 + + ; + ; Derived combinations for our specific needs + ; + +_dtoi64_info equ ((_FpCodeConvert:SHL:8) :OR: (_FpFormatFp64:SHL:16) :OR: (_FpFormatI64:SHL:24)) +_dtou64_info equ ((_FpCodeConvert:SHL:8) :OR: (_FpFormatFp64:SHL:16) :OR: (_FpFormatU64:SHL:24)) +_stoi64_info equ ((_FpCodeConvert:SHL:8) :OR: (_FpFormatFp32:SHL:16) :OR: (_FpFormatI64:SHL:24)) +_stou64_info equ ((_FpCodeConvert:SHL:8) :OR: (_FpFormatFp32:SHL:16) :OR: (_FpFormatU64:SHL:24)) + + + IMPORT __fphelper_raise_exception + + ; + ; Macro-ize the implementation to handle signed/unsigned outputs, + ; and for different floating point sizes. + ; + + MACRO + CONVERT_FP_TO_I64 $Name, $ExceptFunc, $FloatSize, $Signed + + EXPORT $Name + + NESTED_ENTRY $Name + PROLOG_PUSH {r4-r5,r11,lr} ; save return address and r4/r5 for scratch + + ; + ; Set the FPSCR flags for a comparison of the original against zero, and copy + ; the raw data into r1:r0 (or just r0 for single-precision). + ; + + IF $FloatSize == 64 + + vcmp.f64 d0, #0.0 ; check input against zero + vmrs APSR_nzcv, fpscr ; move FP flags into regular flags + vmov r0, r1, d0 ; copy from double to integer registers + + ELSE + + vcmp.f32 s0, #0.0 ; check input against zero + vmrs APSR_nzcv, fpscr ; move FP flags into regular flags + vmov r0, s0 ; copy from float to integer registers + + ENDIF + + beq $Name._zero_case ; early exit if 0 + + ; + ; Extract raw FP value into an exponent (in r2) and a 64-bit, left- + ; justified mantissa (in r1:r0). By left-justifying the mantissa, we are + ; effectively shifting the binary point right 63 bits (multiply by 2**63). + ; + + IF $FloatSize == 64 + + ubfx r2, r1, #20, #11 ; extract exponent in r2 + lsls r1, r1, #11 ; left justify mantissa in r1:r0 + orr r1, r1, r0, lsr #21 ; + lsls r0, r0, #11 ; + + ELSE + + ubfx r2, r0, #23, #8 ; extract exponent in r2 + lsls r1, r0, #8 ; left justify mantissa in r1:r0 + movs r0, #0 ; + + ENDIF + + orr r1, r1, #1 << 31 ; insert implicit one (even for denorms) + + ; + ; Now unbias the exponent and account for this 63-bit shift. Actual + ; exponent is (exraw - Bias). We multiplied by 2**63, so the final exponent + ; should reflect a division by 2**63, or a -63 subtraction, giving a final + ; exponent of (exraw - Bias - 63). + ; + + IF $FloatSize == 64 + ldr r3, =(63 + 1023) ; double bias is 1023, plus 63 bit shift + ELSE + ldr r3, =(63 + 127) ; float bias is 127, plus 63 bit shift + ENDIF + + subs r2, r2, r3 ; subtract from the exponent + bgt $Name._compute_overflow ; if we end up positive, we will overflow + + ; + ; If the resulting exponent is less than or equal to 0, shift off that many + ; bits from our 64-bit value. + ; + + rsbs r2, r2, #0 ; r2 = -r2 + cmp r2, #64 ; are we going to shift everything away? + bge $Name._handle_underflow ; if so, handle it specially + + movs r5, #0 ; use r5 to accumulate bits we lose + cmp r2, #32 ; do we have less than 32 to bits to shift? + blt $Name._small_shift_right ; if so, skip ahead + + subs r2, r2, #32 ; reduce our shift count by 32 + mov r5, r0 ; remember low bits in r5 + mov r0, r1 ; copy high word to low word + movs r1, #0 ; clear high word + +$Name._small_shift_right + rsbs r3, r2, #32 ; r3 = 32 - r2 + lsls r4, r0, r3 ; get the bits that are going away in r4 + orrs r5, r5, r4 ; merge with any other shifted bits + lsrs r0, r0, r2 ; shift off lower bits + lsls r4, r1, r3 ; get bits from the upper half + orrs r0, r0, r4 ; merge into lower half + lsrs r1, r1, r2 ; perform final shift + + IF "$Signed" == "Signed" + + ; + ; Check for overflow (unsigned result must be <= 0x7FFFFFFF). + ; Note that 0x80000000 is a special case if negative. + ; + + cmp r1, #0x80000000 ; did we overflow? + bhi $Name._handle_overflow ; if so, handle it + beq $Name._handle_possible_overflow ; if maybe, see if we were positive or negative + + ENDIF + +$Name._no_overflow + vmrs APSR_nzcv, fpscr ; move FP flags into regular flags + bge $Name._non_negative ; if not negative, we're done + rsbs r0, r0, #0 ; negate the result + sbc r1, r1, r1, lsl #1 ; trick equivalent to rsc r1, r1, #0 + + IF "$Signed" != "Signed" + b $Name._handle_overflow_non_negative ; unsigned negative case is always an overflow + ENDIF + + ; + ; Check for inexact exceptions (if we shifted out any non-zero bits). + ; + +$Name._non_negative + cbnz r5, $Name._handle_inexact ; did we lose any bits? if so, handle the inexact case + +$Name._epilogue + EPILOG_POP {r4-r5,r11,pc} ; restore and exit + +$Name._zero_case + movs r0, #0 ; our result is 0 + movs r1, #0 ; + b $Name._epilogue ; standard exit + + ; + ; Handle overflow condition. Here we still do the shifts which will lose + ; data, but then we hand the result to the floating point exception + ; processor which will do the appropriate thing. + ; + +$Name._compute_overflow + cmp r2, #32 ; do we have less than 32 to bits to shift? + blt $Name._small_shift_left ; if so, skip ahead + + subs r2, r2, #32 ; reduce our shift count by 32 + mov r1, r0 ; copy low word to high word + movs r0, #0 ; clear low word + +$Name._small_shift_left + rsbs r3, r2, #32 ; r3 = 32 - r2 + lsls r1, r1, r2 ; shift off upper bits + lsrs r4, r0, r3 ; get lower half bits + orrs r1, r1, r4 ; merge into upper half + lsls r0, r0, r2 ; perform final shift + +$Name._handle_overflow + vmrs APSR_nzcv, fpscr ; move FP flags into regular flags + bge $Name._handle_overflow_non_negative ; if not negative, we're done + rsbs r0, r0, #0 ; negate the result + sbc r1, r1, r1, lsl #1 ; trick equivalent to rsc r1, r1, #0 + +$Name._handle_overflow_non_negative + vmrs r3, fpscr ; get current FPSCR + orr r3, r3, #_OFBit ; set the overflow + and r2, r3, r3, lsr #8 ; apply the enable mask + lsls r2, r2, #27 ; did we reveal any exceptions? + beq $Name._epilogue ; if not, just exit + ldr r2, =_OFBit :OR: $ExceptFunc ; set the exception type + bl __fptoi64_exception_helper ; call our helper (return value in r0:r1) + b $Name._epilogue ; standard exit + + IF "$Signed" == "Signed" + +$Name._handle_possible_overflow + vmrs APSR_nzcv, fpscr ; move FP flags into regular flags + bge $Name._handle_overflow_non_negative ; if not negative, then we did overflow + b $Name._no_overflow ; otherwise, we didn't + + ENDIF + + ; + ; Handle inexact condition. The result is already computed, so just + ; hand it off to the exception processor. + ; + +$Name._handle_inexact + vmrs r3, fpscr ; get current FPSCR + orr r3, r3, #_IXBit ; set the inexact + and r2, r3, r3, lsr #8 ; apply the enable mask + lsls r2, r2, #27 ; did we reveal any exceptions? + beq $Name._epilogue ; if not, just exit + ldr r2, =_IXBit :OR: $ExceptFunc ; set the exception type + bl __fptoi64_exception_helper ; call our helper (return value in r0:r1) + b $Name._epilogue ; standard exit + + ; + ; Handle underflow condition. The result is effectively 0, which is + ; hard-coded and passed off to the exception processor. + ; + +$Name._handle_underflow + movs r0, #0 ; our result is 0 + movs r1, #0 ; + vmrs r3, fpscr ; get current FPSCR + orr r3, r3, #_UFBit ; set the underflow + and r2, r3, r3, lsr #8 ; apply the enable mask + lsls r2, r2, #27 ; did we reveal any exceptions? + beq $Name._epilogue ; if not, just exit + ldr r2, =_UFBit :OR: $ExceptFunc ; set the exception type + bl __fptoi64_exception_helper ; call our helper (return value in r0:r1) + b $Name._epilogue ; standard exit + + NESTED_END $Name + + + MEND + + ; + ; Instantiate the macro for all the cases we need. + ; + + TEXTAREA + + CONVERT_FP_TO_I64 __dtoi64, _dtoi64_info, 64, Signed + CONVERT_FP_TO_I64 __dtou64, _dtou64_info, 64, Unsigned + + CONVERT_FP_TO_I64 __stoi64, _stoi64_info, 32, Signed + CONVERT_FP_TO_I64 __stou64, _stou64_info, 32, Unsigned + + + NESTED_ENTRY __fptoi64_exception_helper + ; + ; On input: + ; s0/d0 = original input value + ; r1:r0 = 64-bit result + ; r2 = FpscrReason | (Operation << 8) | (Param1Format << 16) | (ResultFormat << 24) + ; r3 = Updated Fpscr + ; + ; On exit: + ; r1:r0 = updated result + ; + ; Calling convention for __fphelper_raise_exception: + ; r0 = FpscrReason + ; r1 = Operation + ; r2 = Param1Format + ; r3 = ResultFormat + ; [sp+0] = Param1Value + ; [sp+8] = ResultValue + ; + + PROLOG_PUSH {r11,lr} ; save return address + PROLOG_STACK_ALLOC 16 ; allocate space for params + + vmsr fpscr, r3 ; store updated FPSCR + + vstr d0, [sp, #0] ; save parameter to sp+0 + strd r0, r1, [sp, #8] ; save initial result to sp+8 + uxtb r0, r2 ; unpack fpscr reason + ubfx r1, r2, #8, #8 ; unpack operation + ubfx r3, r2, #24, #8 ; unpack result format + ubfx r2, r2, #16, #8 ; unpack param1 format + bl __fphelper_raise_exception + ; updated result already in r0:r1 + + EPILOG_STACK_FREE 16 ; deallocate stack + EPILOG_POP {r11,pc} ; return + + NESTED_END __fptoi64_exception_helper + + END diff --git a/src/crt/arm/gshandlereh.cpp b/src/crt/arm/gshandlereh.cpp new file mode 100644 index 0000000..66aa755 --- /dev/null +++ b/src/crt/arm/gshandlereh.cpp @@ -0,0 +1,94 @@ +/*** +*gshandlereh.cpp - Defines __GSHandlerCheck_EH for ARM +* +* Copyright (c) Microsoft Corporation. All rights reserved. +* +*Purpose: +* Defines __GSHandlerCheck_EH, the ARM exception handler for functions +* with /GS-protected buffers as well as C++ EH constructs. +*******************************************************************************/ + +extern "C" void +__GSHandlerCheckCommon ( + IN PVOID EstablisherFrame, + IN PDISPATCHER_CONTEXT DispatcherContext, + IN PULONG GSHandlerData + ); + +extern "C" EXCEPTION_DISPOSITION +__CxxFrameHandler3 ( + IN PEXCEPTION_RECORD ExceptionRecord, + IN PVOID EstablisherFrame, + IN OUT PCONTEXT ContextRecord, + IN OUT PDISPATCHER_CONTEXT DispatcherContext + ); + +/*** +*__GSHandlerCheck_EH - Check local security cookie during C++ EH on ARM +* +*Purpose: +* Functions which have a local security cookie, as well as C++ EH, will +* register this routine for exception handling. It checks the validity of +* the local security cookie during exception dispatching and unwinding. This +* helps defeat buffer overrun attacks that trigger an exception to avoid the +* normal end-of-function cookie check. If the security check succeeds, +* control passes to __CxxFrameHandler3 to perform normal C++ EH processing. +* +* Note that this routine must be statically linked into any module that uses +* it, since it needs access to the global security cookie of that function's +* image. +* +*Entry: +* ExceptionRecord - Supplies a pointer to an exception record. +* EstablisherFrame - Supplies a pointer to frame of the establisher function. +* ContextRecord - Supplies a pointer to a context record. +* DispatcherContext - Supplies a pointer to the exception dispatcher or +* unwind dispatcher context. +* +*Return: +* If the security cookie check fails, the process is terminated. Otherwise, +* return the result of __CxxFrameHandler3. +* +*******************************************************************************/ + +extern "C" EXCEPTION_DISPOSITION +__GSHandlerCheck_EH ( + IN PEXCEPTION_RECORD ExceptionRecord, + IN PVOID EstablisherFrame, + IN OUT PCONTEXT ContextRecord, + IN OUT PDISPATCHER_CONTEXT DispatcherContext + ) +{ + PULONG GSHandlerData; + + // + // Retrieve a pointer to the start of that part of the handler data used + // to locate the local security cookie in the local frame. That is found + // following the image-relative offset to the FuncInfo table used by + // __CxxFrameHandler3. + // + + GSHandlerData = (PULONG)DispatcherContext->HandlerData + 1; + + // + // Perform the actual cookie check. + // + + __GSHandlerCheckCommon( + EstablisherFrame, + DispatcherContext, + GSHandlerData + ); + + // + // If the cookie check succeeds, call the normal C++ EH handler if we're + // supposed to on this exception pass. + // + + return __CxxFrameHandler3( + ExceptionRecord, + EstablisherFrame, + ContextRecord, + DispatcherContext + ); +} diff --git a/src/crt/arm/handlers.asm b/src/crt/arm/handlers.asm new file mode 100644 index 0000000..5cc5c80 --- /dev/null +++ b/src/crt/arm/handlers.asm @@ -0,0 +1,60 @@ +;*** +;handlers.asm +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;******************************************************************************* + +#include "ksarm.h" + +; CallSettingFrame +; +; this version restores and preserves the permanent register +; state of the funclet +; +; as the funclet returns to this function, it +; would be possible to insert calls to NLG +; for the debugger (are these needed for wince?) +; _ARM_WORKITEM_ NLG support? +; +;;extern "C" void* _CallSettingFrame( +;; void* handler, +;; EHRegistrationNode* pRN, +;; PULONG * pNonVolatiles, +;; ULONG NLG_CODE) +; +; funclet is expected to return continuation address in r0. +; + + IMPORT _NLG_Notify + IMPORT __NLG_Return2 + + NESTED_ENTRY _CallSettingFrame + PROLOG_NOP ldr r1,[r1] ; get establisher frame + PROLOG_PUSH {r0-r3} ; save arguments + PROLOG_PUSH {r1,r4-r11, lr} ; save registers, plus establisher frame + + mov r2, r3 ; r0, r1 already have the values we want + blx _NLG_Notify ; call debugger hook + + add r0, sp, #40 + ldm r0, {r0-r3} ; load the arguments + ldm r2, {r4-r11} ; load non-volatiles from r1 + blx r0 ; branch to handler + mov r4, r0 ; save the return from the handler + + blx __NLG_Return2 ; call debugger hook (no params) + + mov r0, r4 + ldr r1, [sp] + mov r2, #2 ; CATCH_LEAVE parameter for _NLG_Notify + blx _NLG_Notify ; call debugger hook + + mov r0, r4 ; return value from the handler + + EPILOG_POP {r3-r11, lr} ; restore everything + EPILOG_STACK_FREE 16 ; remove the arguments from the stack + EPILOG_RETURN + + NESTED_END _CallSettingFrame + END diff --git a/src/crt/arm/helpexcept.cpp b/src/crt/arm/helpexcept.cpp new file mode 100644 index 0000000..92ec57a --- /dev/null +++ b/src/crt/arm/helpexcept.cpp @@ -0,0 +1,199 @@ +/*++ + +Copyright (c) Microsoft Corporation + +Module Name: + + helpexcept.cpp + +Abstract: + + This module contains support routines for generating exceptions + for helper functions. + +--*/ + +#include +#include + +#define CPVFP_FPSCR 10, 7, 1, 0, 0 + +extern "C" UINT64 +__fphelper_raise_exception( + UINT32 FpscrReason, + UINT32 Operation, + UINT32 Param1Format, + UINT32 ResultFormat, + UINT64 Param1Value, + UINT64 ResultValue + ) + +/*++ + +Routine Description: + + This function accepts basic IEEE floating-point exception information from + a software emulation routine that detected the exception. All of the + exception information is packaged into a standard _FPIEEE_RECORD structure + and passed to RaiseException. On return from RaiseException, the structure + is unpacked, causing anything that the user changed to be reflected in the + floating-point status. The calling parameters have been selected and + arranged for the convenience of the assembly language coded emulation + routines. + +Arguments: + + FpscrReason - Supplies the exception bit from the FPSCR (one of the low 5) + which indicates the cause of this particular exception. + + Operation - Supplies a code describing the operation, which must be one + of the _FP_OPERATION_CODE values described in fpieee.h. + + Param1Format - Supplies the format of the first (and only) source parameter, + which must be one of the _FPIEEE_FORMAT values described in fpieee.h. + + ResultFormat - Supplies the format of the result, again using one of the + _FPIEEE_FORMAT values. + + Param1Value - Supplies the value of the first source parameter as a 64-bit + piece of data. If the parameter is only 32 bits, it should be placed + into the low 32 bits of this value. + + ResultValue - Supplies the (likely incorrect or inexact) result value as + a 64-bit piece of data. Again, if the result is only 32 bits, it + should be placed into the low 32 bits of this value. + +Return Value: + + The result, possibly modified by the user's exception handler, after return + from RaiseException. + +--*/ + +{ + _FPIEEE_RECORD FPIR; // Filled in for RaiseException + _FPIEEE_RECORD *pFPIR = &FPIR; // RaiseException wants &(&FPIR) + ULONG_PTR ExceptionInformation[1]; // Exception arguments passed to RaiseException + BOOL DoRaise = FALSE; // True if we need to raise an exception. + DWORD StartingFpscr = 0; + DWORD UpdatedFpscr = 0; + LONG Status = 0; // One of STATUS_FLOAT_* + + StartingFpscr = _MoveFromCoprocessor(CPVFP_FPSCR); + + // FPIEEE_ROUNDING_MODE maps to FPSCR rounding mode if you swap the two bits + FPIR.RoundingMode = ((StartingFpscr >> 21) & 2) | ((StartingFpscr >> 23) & 1); + + // Precision is implied by the operation, so just set the precision to "Full" + FPIR.Precision = _FpPrecisionFull; + + // Operation is specified by the caller + FPIR.Operation = Operation; + + // Cause comes directly from the provided cause + FPIR.Cause.InvalidOperation = (FpscrReason >> 0) & 1; + FPIR.Cause.ZeroDivide = (FpscrReason >> 1) & 1; + FPIR.Cause.Overflow = (FpscrReason >> 2) & 1; + FPIR.Cause.Underflow = (FpscrReason >> 3) & 1; + FPIR.Cause.Inexact = (FpscrReason >> 4) & 1; + + // Enable comes from the FPSCR enable bits + FPIR.Enable.InvalidOperation = (StartingFpscr >> 8) & 1; + FPIR.Enable.ZeroDivide = (StartingFpscr >> 9) & 1; + FPIR.Enable.Overflow = (StartingFpscr >> 10) & 1; + FPIR.Enable.Underflow = (StartingFpscr >> 11) & 1; + FPIR.Enable.Inexact = (StartingFpscr >> 12) & 1; + + // Status comes from the FPSCR status bits + FPIR.Status.InvalidOperation = (StartingFpscr >> 0) & 1; + FPIR.Status.ZeroDivide = (StartingFpscr >> 1) & 1; + FPIR.Status.Overflow = (StartingFpscr >> 2) & 1; + FPIR.Status.Underflow = (StartingFpscr >> 3) & 1; + FPIR.Status.Inexact = (StartingFpscr >> 4) & 1; + + // Operand 1 is provided explicitly + FPIR.Operand1.Value.Q64Value = Param1Value; + FPIR.Operand1.OperandValid = 1; + FPIR.Operand1.Format = Param1Format; + + // Operand 2 is not valid + FPIR.Operand2.OperandValid = 0; + + // Result is provided explicitly + FPIR.Result.Value.Q64Value = ResultValue; + FPIR.Result.OperandValid = 1; + FPIR.Result.Format = ResultFormat; + + // Raise the appropriate exception + if (FPIR.Status.InvalidOperation && FPIR.Enable.InvalidOperation) { + Status = STATUS_FLOAT_INVALID_OPERATION; + DoRaise = TRUE; + } + else if (FPIR.Status.ZeroDivide && FPIR.Enable.ZeroDivide) { + Status = STATUS_FLOAT_DIVIDE_BY_ZERO; + DoRaise = TRUE; + } + else if (FPIR.Status.Overflow && FPIR.Enable.Overflow) { + Status = STATUS_FLOAT_OVERFLOW; + DoRaise = TRUE; + } + else if (FPIR.Status.Underflow && FPIR.Enable.Underflow) { + Status = STATUS_FLOAT_UNDERFLOW; + DoRaise = TRUE; + } + else if (FPIR.Status.Inexact && FPIR.Enable.Inexact) { + Status = STATUS_FLOAT_INEXACT_RESULT; + DoRaise = TRUE; + } + + // bail if we don't need to do anything + if (!DoRaise) { + return ResultValue; + } + + // build the exception information + *(_FPIEEE_RECORD ***)&ExceptionInformation[0] = &pFPIR; + __CxxRaiseException((DWORD)Status, 0, 1, ExceptionInformation); + + // update the enable mask + UpdatedFpscr = StartingFpscr & ~((0x1f << 8) | (3 << 22)); + UpdatedFpscr |= FPIR.Enable.InvalidOperation ? (1 << 8) : 0; + UpdatedFpscr |= FPIR.Enable.ZeroDivide ? (1 << 9) : 0; + UpdatedFpscr |= FPIR.Enable.Overflow ? (1 << 10) : 0; + UpdatedFpscr |= FPIR.Enable.Underflow ? (1 << 11) : 0; + UpdatedFpscr |= FPIR.Enable.Inexact ? (1 << 12) : 0; + + // update the rounding mode + UpdatedFpscr |= (FPIR.RoundingMode & 1) << 23; + UpdatedFpscr |= (FPIR.RoundingMode & 2) << 21; + + _MoveToCoprocessor(UpdatedFpscr, CPVFP_FPSCR); + + // return the possibly modified value + return FPIR.Result.Value.Q64Value; +} + + +extern "C" void +__helper_divide_by_0( + ) + +/*++ + +Routine Description: + + Raise a basic integer divide by zero exception. + +Arguments: + + None + +Return Value: + + None + +--*/ + +{ + __CxxRaiseException((DWORD)STATUS_INTEGER_DIVIDE_BY_ZERO, 0, 0, NULL); +} diff --git a/src/crt/arm/i64tofp.asm b/src/crt/arm/i64tofp.asm new file mode 100644 index 0000000..9565131 --- /dev/null +++ b/src/crt/arm/i64tofp.asm @@ -0,0 +1,274 @@ +; +; 64-bit integer to floating-point helper functions +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +; double __u64tod(UINT64 intval) +; double __i64tod(INT64 intval) +; float __u64tos(UINT64 intval) +; float __i64tos(INT64 intval) +; + +#include "kxarm.h" + + ; + ; FPSCR bit constants + ; + +_IXBit equ 1 +_UFBit equ 2 +_OFBit equ 4 +_DZBit equ 8 +_IOBit equ 16 + + ; + ; Floating point exception constants from fpieee.h + ; + +_FpFormatFp32 equ 0 +_FpFormatFp64 equ 1 +_FpFormatI64 equ 6 +_FpFormatU64 equ 9 + +_FpCodeConvert equ 8 + + ; + ; Derived combinations for our specific needs + ; + +_i64tod_info equ ((_FpCodeConvert:SHL:8) :OR: (_FpFormatI64:SHL:16) :OR: (_FpFormatFp64:SHL:24)) +_u64tod_info equ ((_FpCodeConvert:SHL:8) :OR: (_FpFormatU64:SHL:16) :OR: (_FpFormatFp64:SHL:24)) +_i64tos_info equ ((_FpCodeConvert:SHL:8) :OR: (_FpFormatI64:SHL:16) :OR: (_FpFormatFp32:SHL:24)) +_u64tos_info equ ((_FpCodeConvert:SHL:8) :OR: (_FpFormatU64:SHL:16) :OR: (_FpFormatFp32:SHL:24)) + + + IMPORT __fphelper_raise_exception + + ; + ; Macro-ize the implementation to handle signed/unsigned inputs, + ; and for different floating point sizes. + ; + + MACRO + CONVERT_I64_TO_FP $Name, $ExceptFunc, $FloatSize, $Signed + + EXPORT $Name + + NESTED_ENTRY $Name + PROLOG_PUSH {r0-r1,r11,lr} ; save return address and upper half + + ; + ; Compute the absolute value of the input, and compare the upper word + ; against 0. + ; + + cmp r1, #0 ; are we zero or negative? + + IF "$Signed" == "Signed" + + bge $Name._non_negative ; if positive, skip + rsbs r0, r0, #0 ; negate the input + sbcs r1, r1, r1, lsl #1 ; trick equivalent to rsc r1, r1, #0 + + ENDIF + + ; + ; Left-justify the significant bits in r1:r0. This will become our mantissa. + ; Compute the shift amount in r2, which becomes our exponent. + ; + +$Name._non_negative + bne $Name._shift_small ; if r1 is non-zero, we shift less than 32 bits + clz r2, r0 ; count leading zeros in r2 + lsls r1, r0, r2 ; shift low word by that amount and move to high word + beq $Name._zero ; special case for zero + movs r0, #0 ; low word is 0 now + add r2, r2, #32 ; we effectively added 32 to the exponent + b $Name._post_shift + +$Name._shift_small + clz r2, r1 ; get number of leading zeros in r2 + rsbs r3, r2, #32 ; use r3 to hold 32-r2 + lsls r1, r1, r2 ; left-justify the value + lsrs r3, r0, r3 ; get upper bits from r0 + orrs r1, r1, r3 ; merge into r1 + lsls r0, r0, r2 ; shift lower bits up + + ; + ; Apply the exponent bias to the value in r2 and position everything + ; within r1:r0 (or within r1 for single-precision). The bias is further + ; biased by 63 to account for the fact that our left-justified mantissa + ; is effectively a 1.63 fixed point value (the top bit is the implicit + ; 1 from the mantissa). + ; + +$Name._post_shift + IF $FloatSize == 64 + + ldr r3, =(1023 + 63) ; double bias is 1023, plus 63 bit shift + rsbs r2, r2, r3 ; apply exponent bias + lsls r12, r0, #32 - 12 ; save low 12 bits in r12 for inexact & rounding + lsrs r0, r0, #11 ; shift right by 11 to make room for exponent + lsls r3, r1, #32 - 11 ; get lower bits from upper word + orrs r0, r0, r3 ; merge into lower word + lsrs r1, r1, #11 ; shift upper word down + bfi r1, r2, #20, #11 ; insert the exponent + + ELSE + + ldr r3, =(127 + 63) ; float bias is 127, plus 63 bit shift + rsbs r2, r2, r3 ; apply exponent bias + lsls r12, r1, #32 - 9 ; save low 9 bits in r12 for inexact & rounding + lsrs r1, r1, #8 ; shift right by 8 to make room for exponent + bfi r1, r2, #23, #8 ; insert the exponent + + ENDIF + + ; + ; If the original value was negative, insert the sign into the + ; top bit of r1. + ; + + IF "$Signed" == "Signed" + + ldr r2, [sp, #4] ; fetch top word of original value + lsrs r2, r2, #31 ; isolate the sign bit + bfi r1, r2, #31, #1 ; insert it + + ENDIF + + ; + ; Handle rounding. This is taken from the original algorithm used for Windows CE. + ; The value in r12 contains the low bit of the mantissa plus bits we lost, all + ; left-justified in the register. + ; + ; Round up if: + ; - the "guard" bit (MSB of bits we shifted out) is set + ; - AND one of the following is set: + ; - the low bit of the final mantissa + ; - any of the other (non-guard) bits shifted outs + ; + + tst r12, #0x40000000 ; guard bit set? + beq $Name._dont_round_up ; nope, don't round + bics r12, r12, #0x40000000 ; clear guard bit and check everything else + beq $Name._dont_round_up ; if nothing else is set, skip rounding + + IF $FloatSize == 64 + + adds r0, r0, #1 ; round up mantissa; overflow will carry + adc r1, r1, #0 ; into exponent + + ELSE + + add r1, r1, #1 ; round up mantissa; overflow will carry + ; into exponent + ENDIF + + ; + ; Copy to the return value and handle inexactitude. + ; + +$Name._dont_round_up + IF $FloatSize == 64 + + vmov d0, r0, r1 ; load d0 from r1:r0 + lsls r12, r12, #1 ; did we lose any bits? + + ELSE + + vmov s0, r1 ; load s0 from r1 + lsls r12, r12, #1 ; did we lose any bits? + orrs r12, r12, r0 ; make sure to include everything in r0 + + ENDIF + + bne $Name._handle_inexact ; if so, generate an inexact exception + +$Name._epilogue + EPILOG_POP {r0-r1,r11,pc} ; restore registers and return + + ; + ; Handle zero as a special case. + ; + +$Name._zero + IF $FloatSize == 64 + vmov d0, r1, r1 ; clear d0 + ELSE + vmov s0, r1 ; clear s0 + ENDIF + + b $Name._epilogue + + ; + ; Handle inexact condition. The result is already computed, so just + ; hand it off to the exception processor. + ; + +$Name._handle_inexact + vmrs r3, fpscr ; get current FPSCR + orr r3, r3, #_IXBit ; set the inexact + and r2, r3, r3, lsr #8 ; apply the enable mask + lsls r2, r2, #27 ; did we reveal any exceptions? + beq $Name._epilogue ; if not, just exit + ldr r2, =_IXBit :OR: $ExceptFunc ; set the exception type + bl __i64tofp_exception_helper ; call our helper (return value in r0:r1) + b $Name._epilogue ; standard exit + + NESTED_END $Name + + MEND + + ; + ; Instantiate the macro for all the cases we need. + ; + + TEXTAREA + + CONVERT_I64_TO_FP __i64tod, _i64tod_info, 64, Signed + CONVERT_I64_TO_FP __u64tod, _u64tod_info, 64, Unsigned + + CONVERT_I64_TO_FP __i64tos, _i64tos_info, 32, Signed + CONVERT_I64_TO_FP __u64tos, _u64tos_info, 32, Unsigned + + + + NESTED_ENTRY __i64tofp_exception_helper + ; + ; On input: + ; [sp] = original input value + ; s0/d0 = result + ; r2 = FpscrReason | (Operation << 8) | (Param1Format << 16) | (ResultFormat << 24) + ; r3 = Updated Fpscr + ; + ; On exit: + ; s0/d0 = updated result + ; + ; Calling convention for __fphelper_raise_exception: + ; r0 = FpscrReason + ; r1 = Operation + ; r2 = Param1Format + ; r3 = ResultFormat + ; [sp+0] = Param1Value + ; [sp+8] = ResultValue + ; + + PROLOG_PUSH {r11,lr} ; save return address + PROLOG_STACK_ALLOC 16 ; allocate space for params + + vmsr fpscr, r3 ; store updated FPSCR + ; parameter already at sp+0 + vstr d0, [sp, #0] ; save result to sp+8 + uxtb r0, r2 ; unpack fpscr reason + ubfx r1, r2, #8, #8 ; unpack operation + ubfx r3, r2, #24, #8 ; unpack result format + ubfx r2, r2, #16, #8 ; unpack param1 format + bl __fphelper_raise_exception + vmov d0, r0, r1 ; update the result + + EPILOG_STACK_FREE 16 ; deallocate stack + EPILOG_POP {r11,pc} ; return + NESTED_END __i64tofp_exception_helper + + END diff --git a/src/crt/arm/rshi64.asm b/src/crt/arm/rshi64.asm new file mode 100644 index 0000000..8b21bf9 --- /dev/null +++ b/src/crt/arm/rshi64.asm @@ -0,0 +1,51 @@ +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +; +; Use of this source code is subject to the terms of your Microsoft Windows CE +; Source Alliance Program license form. If you did not accept the terms of +; such a license, you are not authorized to use this source code. +; +;rshi64.asm - perform __int64 right shift operation +; + +; r0 - loword of __int64 value +; r1 - hiword of __int64 value +; r2 - amount to right shift value + +#include "kxarm.h" + + TEXTAREA + + LEAF_ENTRY __rt_srsh + + CMP r2, #0 + BXEQ lr + + CMP r2, #32 ; Check for < 32 bit shift + BLT shift31 + + CMP r2, #64 ; Check for < 64 bit shift + BLT shift63 + + MOV r1, r1, ASR #32 ; shift >= 64, value = 0 + MOV r0, r1 + BX lr + +shift63 ; 32 <= shift < 64 + AND r2, r2, #31 + MOV r0, r1, ASR r2 + MOV r1, r1, ASR #32 + BX lr + +shift31 ; shift < 32 + MOV r0, r0, LSR r2 ; Shift right loword + RSB r3, r2, #32 ; figure shift for hi to low ORR + MOV r3, r1, LSL r3 ; or in bits from hiword + ORR r0, r0, r3 ; or in bits from hiword + MOV r1, r1, ASR r2 ; Shift hiword + BX lr + + LEAF_END __rt_rsh + + END diff --git a/src/crt/arm/rshui64.asm b/src/crt/arm/rshui64.asm new file mode 100644 index 0000000..048aceb --- /dev/null +++ b/src/crt/arm/rshui64.asm @@ -0,0 +1,51 @@ +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +; +; Use of this source code is subject to the terms of your Microsoft Windows CE +; Source Alliance Program license form. If you did not accept the terms of +; such a license, you are not authorized to use this source code. +; +;rshui64.asm - perform unsigned __int64 right shift operation +; + +; r0 - loword of __int64 value +; r1 - hiword of __int64 value +; r2 - amount to right shift value + +#include "kxarm.h" + + TEXTAREA + + LEAF_ENTRY __rt_ursh + + CMP r2, #0 + BXEQ lr + + CMP r2, #32 + BLT shift31 + + CMP r2, #64 + BLT shift63 + + MOV r1, r1, LSR #32 ; shift >= 64, value = 0 + MOV r0, r1 + BX lr + +shift63 ; 32 <= shift < 64 + AND r2, r2, #31 + MOV r0, r1, LSR r2 + MOV r1, #0 + BX lr + +shift31 ; shift < 32 + MOV r0, r0, LSR r2 + RSB r3, r2, #32 + MOV r3, r1, LSL r3 + ORR r0, r0, r3 + MOV r1, r1, LSR r2 + BX lr + + LEAF_END __rt_ursh + + END diff --git a/src/crt/arm/secpushpop.asm b/src/crt/arm/secpushpop.asm new file mode 100644 index 0000000..aafe208 --- /dev/null +++ b/src/crt/arm/secpushpop.asm @@ -0,0 +1,91 @@ + TTL ARM /GS cookie check compiler helper +;++ +; +; Copyright (c) Microsoft Corporation +; +; Module Name: +; +; secpushpop.asm +; +; Abstract: +; +; ARM security cookie push & pop helpers +; +; Purpose: +; ARM prologue & epilogue helpers to save code size in functions +; with /GS cookies. +; + +#include "ksarm.h" + + TEXTAREA + + IMPORT __security_cookie + IMPORT __security_check_cookie + + TEXTAREA + +; void __security_push_cookie() +; +; NOTE: this is a prologue helper and the stack may +; not be aligned to 8-bytes on entry +; + NESTED_ENTRY __security_push_cookie + PROLOG_STACK_ALLOC 4 + + mov32 r12, __security_cookie + ldr r12, [r12] + sub r12, sp, r12 + str r12, [sp] + + ; no EPILOG_STACK_FREE since this helper allocates stack + EPILOG_RETURN + + NESTED_END __security_push_cookie + +; void __security_pop_cookie() +; +; NOTE: this is an epilogue helper and the stack may +; not be aligned to 8-bytes on entry +; + NESTED_ENTRY __security_pop_cookie + ; no PROLOG_STACK_ALLOC since this helper frees stack + + mov32 r12, __security_cookie + ldr r3, [sp] + ldr r12, [r12] + sub r3, sp, r3 + cmp r3, r12 + bne %F10 + EPILOG_STACK_FREE 4 + EPILOG_RETURN + +10 mov r0, r3 + ; __fallthrough to __ppgsfailure + + NESTED_END __security_pop_cookie + +; void __ppgsfailure(DWORD_PTR cookie) +; +; NOTE: since this can be called from __security_pop_cookie() +; we need to dynamically align the stack to the ABI requirements +; + NESTED_ENTRY __ppgsfailure + PROLOG_PUSH {r4, lr} + PROLOG_STACK_SAVE r4 + + ; dynamically align the stack to the EABI requirement + mov r12, sp + bic r12, r12, #7 + mov sp, r12 + + ; go through "standard" cookie processing + bl __security_check_cookie + + EPILOG_STACK_RESTORE r4 + EPILOG_POP {r4, lr} + EPILOG_RETURN + + NESTED_END __ppgsfailure + + END diff --git a/src/crt/arm64/chkstk.asm b/src/crt/arm64/chkstk.asm new file mode 100644 index 0000000..66446ef --- /dev/null +++ b/src/crt/arm64/chkstk.asm @@ -0,0 +1,135 @@ + TTL "Runtime Stack Checking" +;++ +; +; Copyright (c) Microsoft Corporation +; +; Module Name: +; +; chkstk.asm +; +; Abstract: +; +; This module implements runtime stack checking. +; +; Environment: +; +; Any mode. +; +;-- + +;#include "arm64/arm64asmsymbolname.h" +#include "ksarm64.h" + +#if !defined(TEBREG) + +#define TEBREG x18 + +#endif + + TEXTAREA + + SUBT "Check Stack" +;++ +; +; ULONG +; __chkstk ( +; VOID +; ) +; +; Routine Description: +; +; This function provides runtime stack checking for local allocations +; that are more than a page and for storage dynamically allocated with +; the alloca function. Stack checking consists of probing downward in +; the stack a page at a time. If the current stack commitment is exceeded, +; then the system will automatically attempts to expand the stack. If the +; attempt succeeds, then another page is committed. Otherwise, a stack +; overflow exception is raised. It is the responsibility of the caller to +; handle this exception. +; +; N.B. This routine is called using a non-standard calling sequence since +; it is typically called from within the prologue. The allocation size +; argument is in register x15, and is divided by 16. +; +; The typical calling sequence from the prologue is: +; +; mov x15, #immed ; set requested stack frame size +; bl __chkstk ; verify stack +; sub sp, sp, x15, lsl #4 ; apply stack adjust +; +; Arguments: +; +; None. +; +; Implicit Arguments: +; +; Allocation (x15) - Supplies the size of the allocation on the stack, divided by 16. +; +; Return Value: +; +; None. +; +;-- + +#ifdef NTOS_KERNEL_RUNTIME + + LEAF_ENTRY A64NAME(__chkstk) //, _TEXT$00 + + ret ; do nothing + + LEAF_END A64NAME(__chkstk) //, _TEXT$00 + +#else + +#if defined _M_ARM64EC + + LEAF_ENTRY A64NAME(__chkstk_arm64ec) //, _TEXT$00 + +#else + + LEAF_ENTRY __chkstk //, _TEXT$00 + +#endif + + ALTERNATE_ENTRY A64NAME(_alloca_probe) + +; +; Compute the new stack address. +; +; N.B. If the computation causes a borrow, i.e., the requested size is very +; large, then the computed address is forced to zero +; + + ldr x17, [TEBREG, #TeStackLimit] ; get current stack limit + subs x16, sp, x15, uxtx #4 ; calculate new stack address + csello x16, xzr, x16 ; clamp to 0 + +; +; If the new stack address is greater than the current stack limit, then the +; pages have already been allocated and nothing further needs to be done. +; + + cmp x16, x17 ; check if stack within limits + blo %F3 ; if stack outside of limits, probe it + ret ; otherwise, just return +3 +; +; The new stack address is not within the currently allocated stack. Probe +; pages downward from the current stack limit until all pages have been +; allocated or a stack overflow occurs in which case an exception +; will be raised. +; + + and x16, x16, #0xfffffffffffff000 ; get target stack value, page-aligned +1 + sub x17, x17, #PAGE_SIZE/4096, lsl #12 ; get next lower page address + ldr xzr, [x17] ; probe stack address + cmp x17, x16 ; check if end of probe range + bne %B1 ; if ne, not end of probe range + ret ; return + + LEAF_END + +#endif + + END diff --git a/src/crt/arm64/gshandlereh.cpp b/src/crt/arm64/gshandlereh.cpp new file mode 100644 index 0000000..92beb40 --- /dev/null +++ b/src/crt/arm64/gshandlereh.cpp @@ -0,0 +1,116 @@ +/*** +*gshandlereh.cpp - Defines __GSHandlerCheck_EH for ARM64 +* +* Copyright (c) Microsoft Corporation. All rights reserved. +* +*Purpose: +* Defines __GSHandlerCheck_EH, the ARM64 exception handler for functions +* with /GS-protected buffers as well as C++ EH constructs. +*******************************************************************************/ + + +#ifndef RENAME_EH_EXTERN_HYBRID +#define RENAME_EH_EXTERN_HYBRID(x) x +#endif + +typedef struct _GS_HANDLER_DATA *PGS_HANDLER_DATA; + +extern "C" void +__GSHandlerCheckCommon ( + IN PVOID EstablisherFrame, + IN PDISPATCHER_CONTEXT DispatcherContext, + IN PGS_HANDLER_DATA GSHandlerData + ); + +extern "C" EXCEPTION_DISPOSITION +RENAME_EH_EXTERN_HYBRID(__CxxFrameHandler3) ( + IN PEXCEPTION_RECORD ExceptionRecord, + IN PVOID EstablisherFrame, + IN OUT PCONTEXT ContextRecord, + IN OUT PDISPATCHER_CONTEXT DispatcherContext + ); + +/*** +*__GSHandlerCheck_EH - Check local security cookie during C++ EH on ARM64 +* +*Purpose: +* Functions which have a local security cookie, as well as C++ EH, will +* register this routine for exception handling. It checks the validity of +* the local security cookie during exception dispatching and unwinding. This +* helps defeat buffer overrun attacks that trigger an exception to avoid the +* normal end-of-function cookie check. If the security check succeeds, +* control passes to __CxxFrameHandler3 to perform normal C++ EH processing. +* +* Note that this routine must be statically linked into any module that uses +* it, since it needs access to the global security cookie of that function's +* image. +* +*Entry: +* ExceptionRecord - Supplies a pointer to an exception record. +* EstablisherFrame - Supplies a pointer to frame of the establisher function. +* ContextRecord - Supplies a pointer to a context record. +* DispatcherContext - Supplies a pointer to the exception dispatcher or +* unwind dispatcher context. +* +*Return: +* If the security cookie check fails, the process is terminated. Otherwise, +* return the result of __CxxFrameHandler3. +* +*******************************************************************************/ + +extern "C" EXCEPTION_DISPOSITION +__GSHandlerCheck_EH ( + IN PEXCEPTION_RECORD ExceptionRecord, + IN PVOID EstablisherFrame, + IN OUT PCONTEXT ContextRecord, + IN OUT PDISPATCHER_CONTEXT DispatcherContext + ) +{ + PGS_HANDLER_DATA GSHandlerData; + ULONG GSUnwindInfo; + EXCEPTION_DISPOSITION Disposition; + + // + // Retrieve a pointer to the start of that part of the handler data used + // to locate the local security cookie in the local frame. That is found + // following the image-relative offset to the FuncInfo table used by + // __CxxFrameHandler3. + // + + GSHandlerData = (PGS_HANDLER_DATA)((PULONG)DispatcherContext->HandlerData + 1); + + // + // Perform the actual cookie check. + // + + __GSHandlerCheckCommon( + EstablisherFrame, + DispatcherContext, + GSHandlerData + ); + + // + // If the cookie check succeeds, call the normal C++ EH handler if we're + // supposed to on this exception pass. Find the EHANDLER/UHANDLER flags + // controlling that in the first ULONG of our part of the handler data. + // + + GSUnwindInfo = *(PULONG)GSHandlerData; + if (IS_DISPATCHING(ExceptionRecord->ExceptionFlags) + ? (GSUnwindInfo & UNW_FLAG_EHANDLER) + : (GSUnwindInfo & UNW_FLAG_UHANDLER)) + { + Disposition = RENAME_EH_EXTERN_HYBRID(__CxxFrameHandler3)( + ExceptionRecord, + EstablisherFrame, + ContextRecord, + DispatcherContext + ); + } + else + { + Disposition = ExceptionContinueSearch; + } + + return Disposition; +} diff --git a/src/crt/arm64/handlers.asm b/src/crt/arm64/handlers.asm new file mode 100644 index 0000000..32cee0c --- /dev/null +++ b/src/crt/arm64/handlers.asm @@ -0,0 +1,101 @@ +;*** +;handlers.asm +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;******************************************************************************* + +;#include "arm64/arm64asmsymbolname.h" +#include "ksarm64.h" + +; CallSettingFrame +; +; this version restores and preserves the permanent register +; state of the funclet +; +; as the funclet returns to this function, it +; would be possible to insert calls to NLG +; for the debugger (are these needed for wince?) +; _ARM_WORKITEM_ NLG support? +; +;;extern "C" void* _CallSettingFrame( +;; void* handler, +;; EHRegistrationNode* pRN, +;; PULONG * pNonVolatiles, +;; ULONG NLG_CODE) +; +; funclet is expected to return continuation address in r0. +; + +#ifndef DISABLE_NLG + + IMPORT A64NAME(_NLG_Notify) + IMPORT A64NAME(__NLG_Return2) + +#endif + + NESTED_ENTRY _CallSettingFrame + + PROLOG_STACK_ALLOC 112 + PROLOG_SAVE_REG_PAIR_NO_FP fp, lr, #16 + PROLOG_SAVE_REG_PAIR x19, x20, #32 + PROLOG_SAVE_REG_PAIR x21, x22, #48 + PROLOG_SAVE_REG_PAIR x23, x24, #64 + PROLOG_SAVE_REG_PAIR x25, x26, #80 + PROLOG_SAVE_REG_PAIR x27, x28, #96 + + ldr x1, [x1] ; get establisher frame + str x1, [sp] ; save establisher frame at [sp] for unwind + +#ifndef DISABLE_NLG + + mov x19, x0 ; copy registers to nonvolatile space + mov x20, x1 ; + mov x21, x2 ; + mov x22, x3 ; + + mov x2, x3 ; x0, x1 already have the values we want + bl A64NAME(_NLG_Notify) ; call debugger hook + + mov x0, x19 ; recover original parameters + mov x1, x20 ; + mov x2, x21 ; + mov x3, x22 ; + +#endif + + ldp x19, x20, [x2, #0] ; load non-volatiles from r2 + ldp x21, x22, [x2, #16] ; load non-volatiles from r2 + ldp x23, x24, [x2, #32] ; load non-volatiles from r2 + ldp x25, x26, [x2, #48] ; load non-volatiles from r2 + ldp x27, x28, [x2, #64] ; load non-volatiles from r2 + ldr fp, [x2, #80] ; load non-volatiles from r2 + blr x0 ; branch to handler + +#ifndef DISABLE_NLG + + mov x19, x0 ; save the return from the handler + bl A64NAME(__NLG_Return2) ; call debugger hook (no params) + + mov x0, x19 + ldr x1, [sp, #24] ; load saved lr value + mov x2, #2 ; CATCH_LEAVE parameter for _NLG_Notify + bl A64NAME(_NLG_Notify) ; call debugger hook + + mov x0, x19 ; return value from the handler + +#endif + + + EPILOG_RESTORE_REG_PAIR x27, x28, #96 + EPILOG_RESTORE_REG_PAIR x25, x26, #80 + EPILOG_RESTORE_REG_PAIR x23, x24, #64 + EPILOG_RESTORE_REG_PAIR x21, x22, #48 + EPILOG_RESTORE_REG_PAIR x19, x20, #32 + EPILOG_RESTORE_REG_PAIR fp, lr, #16 + EPILOG_STACK_FREE 112 + EPILOG_RETURN + + NESTED_END _CallSettingFrame + + END diff --git a/src/crt/arm64/secpushpop.asm b/src/crt/arm64/secpushpop.asm new file mode 100644 index 0000000..d379c85 --- /dev/null +++ b/src/crt/arm64/secpushpop.asm @@ -0,0 +1,88 @@ + TTL ARM64 /GS cookie check compiler helper +;++ +; +; Copyright (c) Microsoft Corporation +; +; Module Name: +; +; secpushpop.asm +; +; Abstract: +; +; ARM64 security cookie push & pop helpers +; +; Purpose: +; ARM64 prologue & epilogue helpers to save code size in functions +; with /GS cookies. +; + +;#include "arm64/arm64asmsymbolname.h" +#include "ksarm64.h" + + TEXTAREA + + IMPORT __security_cookie + +#if defined(_M_ARM64EC) + + IMPORT A64NAME(__security_check_cookie_arm64ec) + +#else + + IMPORT __security_check_cookie + +#endif + + TEXTAREA + +; void __security_push_cookie() +; +; + NESTED_ENTRY_COMDAT A64NAME(__security_push_cookie) + + PROLOG_STACK_ALLOC 16 + adrp x17, __security_cookie + ldr x17, [x17, __security_cookie] ; :LOW12: + sub x17, sp, x17 + str x17, [sp, #8] + + EPILOG_RETURN + + NESTED_END + + NESTED_ENTRY_COMDAT A64NAME(__security_pop_cookie) + adrp x17, __security_cookie + ldr x16, [sp, #8] + ldr x17, [x17, __security_cookie] ; :LOW12: + sub x16, sp, x16 + cmp x16, x17 + bne %F10 + + EPILOG_STACK_FREE 16 + EPILOG_RETURN_CLEAR_UNWIND_TO_CALLER + +10 mov x0, x16 + ; In a world of EC, XFG, HotPatch, PGO... there is no such + ; thing as fallthrough from one function to the next. + b A64NAME(__ppgsfailure) + + NESTED_END + + NESTED_ENTRY_COMDAT A64NAME(__ppgsfailure) + + PROLOG_SAVE_REG_PAIR fp, lr, #16 + + ; go through "standard" cookie processing + +#if defined(_M_ARM64EC) + bl A64NAME(__security_check_cookie_arm64ec) +#else + bl __security_check_cookie +#endif + + EPILOG_RESTORE_REG_PAIR fp, lr, #16 + EPILOG_RETURN + + NESTED_END + + END diff --git a/src/crt/i386/alloca16.asm b/src/crt/i386/alloca16.asm new file mode 100644 index 0000000..dd4b7d3 --- /dev/null +++ b/src/crt/i386/alloca16.asm @@ -0,0 +1,71 @@ + page ,132 + title alloca16 - aligned C stack checking routine +;*** +;chkstk.asm - aligned C stack checking routine +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;Purpose: +; Provides 16 and 8 bit aligned alloca routines. +; +;******************************************************************************* + +.xlist + include vcruntime.inc +.list + +extern _chkstk:near + +; size of a page of memory + + CODESEG + +page +;*** +; _alloca_probe_16, _alloca_probe_8 - align allocation to 16/8 byte boundary +; +;Purpose: +; Adjust allocation size so the ESP returned from chkstk will be aligned +; to 16/8 bit boundary. Call chkstk to do the real allocation. +; +;Entry: +; EAX = size of local frame +; +;Exit: +; Adjusted EAX. +; +;Uses: +; EAX +; +;******************************************************************************* + +public _alloca_probe_8 + +_alloca_probe_16 proc ; 16 byte aligned alloca + + push ecx + lea ecx, [esp] + 8 ; TOS before entering this function + sub ecx, eax ; New TOS + and ecx, (16 - 1) ; Distance from 16 bit align (align down) + add eax, ecx ; Increase allocation size + sbb ecx, ecx ; ecx = 0xFFFFFFFF if size wrapped around + or eax, ecx ; cap allocation size on wraparound + pop ecx ; Restore ecx + jmp _chkstk + +alloca_8: ; 8 byte aligned alloca +_alloca_probe_8 = alloca_8 + + push ecx + lea ecx, [esp] + 8 ; TOS before entering this function + sub ecx, eax ; New TOS + and ecx, (8 - 1) ; Distance from 8 bit align (align down) + add eax, ecx ; Increase allocation Size + sbb ecx, ecx ; ecx = 0xFFFFFFFF if size wrapped around + or eax, ecx ; cap allocation size on wraparound + pop ecx ; Restore ecx + jmp _chkstk + +_alloca_probe_16 endp + + end diff --git a/src/crt/i386/chandler4.cpp b/src/crt/i386/chandler4.cpp new file mode 100644 index 0000000..6a7ee3f --- /dev/null +++ b/src/crt/i386/chandler4.cpp @@ -0,0 +1,584 @@ +/*** +*chandler4.c - Structured Exception Handling part of _except_handler4 +* +* Copyright (c) Microsoft Corporation. All rights reserved. +* +*Purpose: +* Defines _except_handler4, the language specific handler for structured +* exception handling on x86. First created for Visual C++ 2005, replacing +* _except_handler3, with the addition of security cookie checks. +* +* For the CRT DLL, this actually defines _except_handler4_common, which +* performs the real processing for chandler4gs.c's stub routine +* _except_handler4. We need a stub that is linked statically into an +* image, so it can access the image-local global security cookie. But all +* it needs to do is pass through to this code, sending in the address of +* the global cookie and the image's __security_check_cookie routine. This +* larger routine can then be placed in the CRT DLL. +* +*******************************************************************************/ + +#include + +_CRT_BEGIN_C_HEADER + +// copied from ntxcapi.h +#define EXCEPTION_UNWINDING 0x2 // Unwind is in progress +#define EXCEPTION_EXIT_UNWIND 0x4 // Exit unwind is in progress +#define EXCEPTION_STACK_INVALID 0x8 // Stack out of limits or unaligned +#define EXCEPTION_NESTED_CALL 0x10 // Nested exception handler call +#define EXCEPTION_TARGET_UNWIND 0x20 // Target unwind in progress +#define EXCEPTION_COLLIDED_UNWIND 0x40 // Collided exception handler call + +#define EXCEPTION_UNWIND (EXCEPTION_UNWINDING | EXCEPTION_EXIT_UNWIND | \ + EXCEPTION_TARGET_UNWIND | EXCEPTION_COLLIDED_UNWIND) + +#define IS_UNWINDING(Flag) ((Flag & EXCEPTION_UNWIND) != 0) +#define IS_DISPATCHING(Flag) ((Flag & EXCEPTION_UNWIND) == 0) +#define IS_TARGET_UNWIND(Flag) (Flag & EXCEPTION_TARGET_UNWIND) + +BEGIN_PRAGMA_OPTIMIZE_ENABLE("t", DevDivVSO:162582, "This file is performance-critical and should always be optimized for speed") + +/* + * Define __except filter/handler and __finally handler function types. + */ + +typedef LONG (__cdecl *PEXCEPTION_FILTER_X86)(void); +typedef void (__cdecl *PEXCEPTION_HANDLER_X86)(void); +typedef void (__fastcall *PTERMINATION_HANDLER_X86)(BOOL); + +/* + * Define type of pointer to __security_check_cookie. + */ + +typedef void (__fastcall *PCOOKIE_CHECK)(UINT_PTR); + +/* + * The function-specific scope table pointed to by the on-stack exception + * registration record. This describes the nesting structure of __try blocks + * in the function, the location of all __except filters, __except blocks, and + * __finally blocks, and the data required to check the security cookies in + * the function + */ + +typedef struct _EH4_SCOPETABLE_RECORD +{ + ULONG EnclosingLevel; + PEXCEPTION_FILTER_X86 FilterFunc; + union + { + PEXCEPTION_HANDLER_X86 HandlerAddress; + PTERMINATION_HANDLER_X86 FinallyFunc; + } u; +} EH4_SCOPETABLE_RECORD, *PEH4_SCOPETABLE_RECORD; + +typedef struct _EH4_SCOPETABLE +{ + ULONG GSCookieOffset; + ULONG GSCookieXOROffset; + ULONG EHCookieOffset; + ULONG EHCookieXOROffset; + EH4_SCOPETABLE_RECORD ScopeRecord[1]; +} EH4_SCOPETABLE, *PEH4_SCOPETABLE; + +#define NO_GS_COOKIE ((ULONG)-2) + +#define TOPMOST_TRY_LEVEL ((ULONG)-2) + +/* + * The exception registration record stored in the stack frame. The linked + * list of registration records goes through the EXCEPTION_REGISTRATION_RECORD + * sub-struct, so some fields here are at negative offsets with regards to + * the registration record pointer we are passed. + */ + +typedef struct _EH4_EXCEPTION_REGISTRATION_RECORD +{ + PVOID SavedESP; + PEXCEPTION_POINTERS ExceptionPointers; + EXCEPTION_REGISTRATION_RECORD SubRecord; + UINT_PTR EncodedScopeTable; + ULONG TryLevel; +} EH4_EXCEPTION_REGISTRATION_RECORD, *PEH4_EXCEPTION_REGISTRATION_RECORD; + +/* + * External dependencies not found in headers. + */ + +#pragma warning(disable: 4132) // communal object is intentionally const +void (__cdecl * const _pDestructExceptionObject)( + PEXCEPTION_RECORD pExcept, + int fThrowNotAllowed + ) = nullptr; + +#define EH_EXCEPTION_NUMBER ('msc' | 0xE0000000) + +extern LONG __fastcall +_EH4_CallFilterFunc( + _In_ PEXCEPTION_FILTER_X86 FilterFunc, + _In_ PCHAR FramePointer + ); + +extern void __declspec(noreturn) __fastcall +_EH4_TransferToHandler( + _In_ PEXCEPTION_HANDLER_X86 HandlerAddress, + _In_ PCHAR FramePointer + ); + +extern void __fastcall +_EH4_GlobalUnwind2( + _In_opt_ PEXCEPTION_REGISTRATION_RECORD EstablisherFrame, + _In_opt_ PEXCEPTION_RECORD ExceptionRecord + ); + +extern void __fastcall +_EH4_LocalUnwind( + _In_ PEXCEPTION_REGISTRATION_RECORD EstablisherFrame, + _In_ ULONG TargetLevel, + _In_ PCHAR FramePointer, + _In_ PUINT_PTR CookiePointer + ); + +#pragma warning(disable: 4100) // ignore unreferenced formal parameters + +#ifdef _M_HYBRID_X86_ARM64 + +#pragma intrinsic(_HybridGenerateThunks) + +// +// Generate wrappers for routines implemented in asm. +// + +LONG __fastcall +_EH4_CallFilterFunc( + PEXCEPTION_FILTER_X86 FilterFunc, + PCHAR FramePointer + ) +{ + _HybridGenerateThunks((void *)_EH4_CallFilterFunc, 1); + return 0; +} + +void __declspec(noreturn) __fastcall +_EH4_TransferToHandler( + PEXCEPTION_HANDLER_X86 HandlerAddress, + PCHAR FramePointer + ) +{ + _HybridGenerateThunks((void *)_EH4_TransferToHandler, 1); +} + +void __fastcall +_EH4_GlobalUnwind2( + PEXCEPTION_REGISTRATION_RECORD EstablisherFrame, + PEXCEPTION_RECORD ExceptionRecord + ) +{ + _HybridGenerateThunks((void *)_EH4_GlobalUnwind2, 1); +} + +void __fastcall +_EH4_LocalUnwind( + PEXCEPTION_REGISTRATION_RECORD EstablisherFrame, + ULONG TargetLevel, + PCHAR FramePointer, + PUINT_PTR CookiePointer + ) +{ + _HybridGenerateThunks((void *)_EH4_LocalUnwind, 1); +} + +#endif + +extern void +__except_validate_context_record( + _In_ PCONTEXT ContextRecord + ); + +/*** +*ValidateLocalCookies - perform local cookie validation during SEH processing +* +*Purpose: +* Perform the security checks for _except_handler4. +* +*Entry: +* CookieCheckFunction - (CRT DLL only) pointer to __security_check_cookie in +* the target image +* ScopeTable - pointer to the unencoded scope table from the exception +* registration record +* FramePointer - EBP frame pointer for the function that established the +* exception registration record +* +*Return: +* If the security checks fail, the process is terminated via a Watson dump. +* +*******************************************************************************/ + +static __declspec(guard(ignore)) void +ValidateLocalCookies( +#if defined(CRTDLL) + IN PCOOKIE_CHECK CookieCheckFunction, +#endif + IN PEH4_SCOPETABLE ScopeTable, + _When_(ScopeTable->GSCookieOffset >= ScopeTable->EHCookieOffset, + _In_reads_bytes_(ScopeTable->GSCookieOffset + sizeof(UINT_PTR))) + _When_(ScopeTable->GSCookieOffset < ScopeTable->EHCookieOffset, + _In_reads_bytes_(ScopeTable->EHCookieOffset + sizeof(UINT_PTR))) + PCHAR FramePointer + ) +{ + UINT_PTR GSCookie; + UINT_PTR EHCookie; + + if (ScopeTable->GSCookieOffset != NO_GS_COOKIE) + { + GSCookie = *(PUINT_PTR)(FramePointer + ScopeTable->GSCookieOffset); + GSCookie ^= (UINT_PTR)(FramePointer + ScopeTable->GSCookieXOROffset); +#if defined(CRTDLL) + _GUARD_CHECK_ICALL(CookieCheckFunction); + (*CookieCheckFunction)(GSCookie); +#else + __security_check_cookie(GSCookie); +#endif + } + + EHCookie = *(PUINT_PTR)(FramePointer + ScopeTable->EHCookieOffset); + EHCookie ^= (UINT_PTR)(FramePointer + ScopeTable->EHCookieXOROffset); +#if defined(CRTDLL) + _GUARD_CHECK_ICALL(CookieCheckFunction); + (*CookieCheckFunction)(EHCookie); +#else + __security_check_cookie(EHCookie); +#endif +} + +/*** +*_except_handler4 - (non-CRT DLL only) SEH handler with security cookie checks +* +*_except_handler4_common - (CRT DLL only) actual SEH implementation called by +* _except_handler4 stub +* +*Purpose: +* Implement structured exception handling for functions which have __try/ +* __except/__finally. This version of SEH also performs security cookie +* checks to detect buffer overruns which potentially corrupt the on-stack +* exception handling data, terminating the process before such corruption +* can be exploited. +* +* Call exception and termination handlers as necessary, based on the current +* execution point within the function. +* +*Entry: +* CookiePointer - (CRT DLL only) pointer to the global security cookie to be +* used to decode the scope table pointer in the exception registration +* record +* CookieCheckFunction - (CRT DLL only) pointer to __security_check_cookie in +* the calling image +* ExceptionRecord - pointer to the exception being dispatched +* EstablisherFrame - pointer to the on-stack exception registration record +* for this function +* ContextRecord - pointer to a context record for the point of exception +* DispatcherContext - pointer to the exception dispatcher or unwind +* dispatcher context +* +*Return: +* If the security checks fail, the process is terminated via a Watson dump. +* +* If an exception is being dispatched and the exception is handled by an +* __except filter for this exception frame, then this function does not +* return. Instead, it calls RtlUnwind and transfers control to the __except +* block corresponding to the accepting __except filter. Otherwise, an +* exception disposition of continue execution or continue search is returned. +* +* If an unwind is being dispatched, then each termination handler (__finally) +* is called and a value of continue search is returned. +* +*******************************************************************************/ + +#if defined(_M_IX86) && !defined(CRTDLL) && !defined(_M_HYBRID) +// Filter incorrect x86 floating point exceptions, unless linkopt that provides an empty filter is available. +#pragma comment(linker, "/alternatename:__filter_x86_sse2_floating_point_exception=__filter_x86_sse2_floating_point_exception_default") +#endif + +DECLSPEC_GUARD_SUPPRESS +EXCEPTION_DISPOSITION +__cdecl +#if !defined(CRTDLL) +_except_handler4( +#else +_except_handler4_common( + IN PUINT_PTR CookiePointer, + IN PCOOKIE_CHECK CookieCheckFunction, +#endif + IN PEXCEPTION_RECORD ExceptionRecord, + IN PEXCEPTION_REGISTRATION_RECORD EstablisherFrame, + IN OUT PCONTEXT ContextRecord, + IN OUT PVOID DispatcherContext + ) +{ + PEH4_EXCEPTION_REGISTRATION_RECORD RegistrationNode; + PCHAR FramePointer; + PEH4_SCOPETABLE ScopeTable; + ULONG TryLevel; + ULONG EnclosingLevel; + EXCEPTION_POINTERS ExceptionPointers; + PEH4_SCOPETABLE_RECORD ScopeTableRecord; + PEXCEPTION_FILTER_X86 FilterFunc; + LONG FilterResult; + BOOLEAN Revalidate = FALSE; + EXCEPTION_DISPOSITION Disposition = ExceptionContinueSearch; + +#ifdef _M_HYBRID_X86_ARM64 + + // + // Ensure that this function is implemented as guest code so that there are + // no dynamic EH registration nodes added for push thunk frames. + // + +#if defined(CRTDLL) + _HybridGenerateThunks((void *)_except_handler4_common, 1); +#else + _HybridGenerateThunks((void *)_except_handler4, 1); +#endif +#endif + +#if defined(_M_IX86) && !defined(CRTDLL) && !defined(_M_HYBRID) + ExceptionRecord->ExceptionCode = _filter_x86_sse2_floating_point_exception(ExceptionRecord->ExceptionCode); +#endif + + // + // We are passed a registration record which is a field offset from the + // start of our true registration record. + // + + RegistrationNode = + (PEH4_EXCEPTION_REGISTRATION_RECORD) + ( (PCHAR)EstablisherFrame - + FIELD_OFFSET(EH4_EXCEPTION_REGISTRATION_RECORD, SubRecord) ); + + // + // The EBP frame pointer in the function corresponding to the registration + // record will be immediately following the record. If the function uses + // FPO, this is a "virtual" frame pointer outside of exception handling, + // but it's still the EBP value set when calling into the handlers or + // filters. + // + + FramePointer = (PCHAR)(RegistrationNode + 1); + + // + // Retrieve the scope table pointer, which encodes where we find the local + // security cookies within the function's frame, as well as how the guarded + // blocks in the target function are laid out. This pointer was XORed with + // the image-local global security cookie when originally stored, to avoid + // attacks which spoof the table to address valid local cookies elsewhere + // on the stack. + // + +#if defined(CRTDLL) + ScopeTable = (PEH4_SCOPETABLE) + (RegistrationNode->EncodedScopeTable ^ *CookiePointer); +#else + ScopeTable = (PEH4_SCOPETABLE) + (RegistrationNode->EncodedScopeTable ^ __security_cookie); +#endif + + // + // Perform the initial security cookie validation. + // + + ValidateLocalCookies( +#if defined(CRTDLL) + CookieCheckFunction, +#endif + ScopeTable, + FramePointer + ); + + __except_validate_context_record(ContextRecord); + + // + // Security checks have passed, begin actual exception handling. + // + + if (IS_DISPATCHING(ExceptionRecord->ExceptionFlags)) + { + // + // An exception dispatch is in progress. First build the + // EXCEPTION_POINTERS record queried by the _exception_info intrinsic + // and save it in the exception registration record so the __except + // filter can find it. + // + + ExceptionPointers.ExceptionRecord = ExceptionRecord; + ExceptionPointers.ContextRecord = ContextRecord; + RegistrationNode->ExceptionPointers = &ExceptionPointers; + + // + // Scan the scope table and call the appropriate __except filters until + // we find one that accepts the exception. + // + + for (TryLevel = RegistrationNode->TryLevel; + TryLevel != TOPMOST_TRY_LEVEL; + TryLevel = EnclosingLevel) + { + ScopeTableRecord = &ScopeTable->ScopeRecord[TryLevel]; + FilterFunc = ScopeTableRecord->FilterFunc; + EnclosingLevel = ScopeTableRecord->EnclosingLevel; + + if (FilterFunc != NULL) + { + // + // The current scope table record is for an __except. + // Call the __except filter to see if we've found an + // accepting handler. + // + + FilterResult = _EH4_CallFilterFunc(FilterFunc, FramePointer); + Revalidate = TRUE; + + // + // If the __except filter returned a negative result, then + // dismiss the exception. If it returned a positive result, + // unwind to the accepting exception handler. Otherwise keep + // searching for an exception filter. + // + + if (FilterResult < 0) + { + Disposition = ExceptionContinueExecution; + break; + } + else if (FilterResult > 0) + { +#if !defined(_NTSUBSET_) + // + // If we're handling a thrown C++ exception, let the C++ + // exception handler destruct the thrown object. This call + // is through a function pointer to avoid linking to the + // C++ EH support unless it's already present. Don't call + // the function pointer unless it's in read-only memory. + // + + if (ExceptionRecord->ExceptionCode == EH_EXCEPTION_NUMBER && + _pDestructExceptionObject != NULL && + _IsNonwritableInCurrentImage((PBYTE)&_pDestructExceptionObject)) + { + (*_pDestructExceptionObject)(ExceptionRecord, TRUE); + } +#endif // !defined(_NTSUBSET_) + + + + // + // Unwind all registration nodes below this one, then unwind + // the nested __try levels. + // + _EH4_GlobalUnwind2( + &RegistrationNode->SubRecord, + ExceptionRecord + ); + + if (RegistrationNode->TryLevel != TryLevel) + { + _EH4_LocalUnwind( + &RegistrationNode->SubRecord, + TryLevel, + FramePointer, +#if defined(CRTDLL) + CookiePointer +#else + &__security_cookie +#endif + ); + } + + // + // Set the __try level to the enclosing level, since it is + // the enclosing level, if any, that guards the __except + // handler. + // + + RegistrationNode->TryLevel = EnclosingLevel; + + // + // Redo the security checks, in case any __except filters + // or __finally handlers have caused overruns in the target + // frame. + // + + ValidateLocalCookies( +#if defined(CRTDLL) + CookieCheckFunction, +#endif + ScopeTable, + FramePointer + ); + + // + // Call the __except handler. This call will not return. + // The __except handler will reload ESP from the + // registration record upon entry. The EBP frame pointer + // for the handler is directly after the registration node. + // + + _EH4_TransferToHandler( + ScopeTableRecord->u.HandlerAddress, + FramePointer + ); + } + } + } + } + else + { + // + // An exception unwind is in progress, and this isn't the target of the + // unwind. Unwind any active __try levels in this function, calling + // the applicable __finally handlers. + // + + if (RegistrationNode->TryLevel != TOPMOST_TRY_LEVEL) + { + _EH4_LocalUnwind( + &RegistrationNode->SubRecord, + TOPMOST_TRY_LEVEL, + FramePointer, +#if defined(CRTDLL) + CookiePointer +#else + &__security_cookie +#endif + ); + Revalidate = TRUE; + } + } + + // + // If we called any __except filters or __finally handlers, then redo the + // security checks, in case those funclets have caused overruns in the + // target frame. + // + + if (Revalidate) + { + ValidateLocalCookies( +#if defined(CRTDLL) + CookieCheckFunction, +#endif + ScopeTable, + FramePointer + ); + } + + // + // Continue searching for exception or termination handlers in previous + // registration records higher up the stack, or resume execution if we're + // here because an __except filter returned a negative result. + // + + return Disposition; +} + +_CRT_END_C_HEADER diff --git a/src/crt/i386/chkstk.asm b/src/crt/i386/chkstk.asm new file mode 100644 index 0000000..243ccf5 --- /dev/null +++ b/src/crt/i386/chkstk.asm @@ -0,0 +1,104 @@ + page ,132 + title chkstk - C stack checking routine +;*** +;chkstk.asm - C stack checking routine +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;Purpose: +; Provides support for automatic stack checking in C procedures +; when stack checking is enabled. +; +;******************************************************************************* + +.xlist + include vcruntime.inc +.list + +; size of a page of memory + +_PAGESIZE_ equ 1000h + + + CODESEG + +page +;*** +;_chkstk - check stack upon procedure entry +; +;Purpose: +; Provide stack checking on procedure entry. Method is to simply probe +; each page of memory required for the stack in descending order. This +; causes the necessary pages of memory to be allocated via the guard +; page scheme, if possible. In the event of failure, the OS raises the +; _XCPT_UNABLE_TO_GROW_STACK exception. +; +; NOTE: Currently, the (EAX < _PAGESIZE_) code path falls through +; to the "lastpage" label of the (EAX >= _PAGESIZE_) code path. This +; is small; a minor speed optimization would be to special case +; this up top. This would avoid the painful save/restore of +; ecx and would shorten the code path by 4-6 instructions. +; +;Entry: +; EAX = size of local frame +; +;Exit: +; ESP = new stackframe, if successful +; +;Uses: +; EAX +; +;Exceptions: +; _XCPT_GUARD_PAGE_VIOLATION - May be raised on a page probe. NEVER TRAP +; THIS!!!! It is used by the OS to grow the +; stack on demand. +; _XCPT_UNABLE_TO_GROW_STACK - The stack cannot be grown. More precisely, +; the attempt by the OS memory manager to +; allocate another guard page in response +; to a _XCPT_GUARD_PAGE_VIOLATION has +; failed. +; +;******************************************************************************* + +public _alloca_probe + +_chkstk proc + +_alloca_probe = _chkstk + + push ecx + +; Calculate new TOS. + + lea ecx, [esp] + 8 - 4 ; TOS before entering function + size for ret value + sub ecx, eax ; new TOS + +; Handle allocation size that results in wraparound. +; Wraparound will result in StackOverflow exception. + + sbb eax, eax ; 0 if CF==0, ~0 if CF==1 + not eax ; ~0 if TOS did not wrapped around, 0 otherwise + and ecx, eax ; set to 0 if wraparound + + mov eax, esp ; current TOS + and eax, not ( _PAGESIZE_ - 1) ; Round down to current page boundary + +cs10: + cmp ecx, eax ; Is new TOS + jb short cs20 ; in probed page? + mov eax, ecx ; yes. + pop ecx + xchg esp, eax ; update esp + mov eax, dword ptr [eax] ; get return address + mov dword ptr [esp], eax ; and put it at new TOS + ret + +; Find next lower page and probe +cs20: + sub eax, _PAGESIZE_ ; decrease by PAGESIZE + test dword ptr [eax],eax ; probe page. + jmp short cs10 + +_chkstk endp + + end diff --git a/src/crt/i386/dllsupp.asm b/src/crt/i386/dllsupp.asm new file mode 100644 index 0000000..4e4b259 --- /dev/null +++ b/src/crt/i386/dllsupp.asm @@ -0,0 +1,28 @@ +;*** +;dllsupp.asm - Definitions of public constants +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;Purpose: +; Provides definitions for public constants (absolutes) that are +; 'normally' defined in objects in the C library, but must be defined +; here for clients of the CRT DLL. These constants are: +; +; _except_list +; _ldused +; +;******************************************************************************* + + .686 + .model flat,c + +; offset, with respect to FS, of pointer to currently active exception handler. +; referenced by compiler generated code for SEH and by _setjmp(). + + public _except_list +_except_list equ 0 + + public _ldused +_ldused equ 9876h + + end diff --git a/src/i386/ehprolg2.cpp b/src/crt/i386/ehprolg2.cpp similarity index 88% rename from src/i386/ehprolg2.cpp rename to src/crt/i386/ehprolg2.cpp index eb5653f..accd91b 100644 --- a/src/i386/ehprolg2.cpp +++ b/src/crt/i386/ehprolg2.cpp @@ -1,15 +1,3 @@ -/* - * PROJECT: Universal C++ RunTime (UCXXRT) - * FILE: ehprolg2.cpp - * DATA: 2021/05/14 - * - * PURPOSE: Universal C++ RunTime - * - * LICENSE: Relicensed under The MIT License from The CC BY 4.0 License - * - * DEVELOPER: MiroKaku (miro.kaku AT Outlook.com) - */ - /*** *ehprolg2.c - Defines _EH_prolog2 compiler helper * @@ -19,10 +7,7 @@ * EH prologue helper function for an aligned stack. ****/ -#ifdef _X86_ - #pragma warning(disable:4733) // ignore unsafe FS:0 modifications -#define bnd repne /*** *void _EH_prolog2(alignment) - set up aligned stack with EH frame * @@ -58,7 +43,10 @@ * *******************************************************************************/ -EXTERN_C void __declspec(naked) __cdecl _EH_prolog2(void) +#ifdef __cplusplus +extern "C" +#endif +void __declspec(naked) _EH_prolog2(void) { /* * We want to generate a frame that is equivalent to @@ -129,8 +117,6 @@ EXTERN_C void __declspec(naked) __cdecl _EH_prolog2(void) push eax ; eax has return address - bnd ret ; adds 0xF2(BND) prefix to preserve bounds + ret } } - -#endif diff --git a/src/i386/ehprolg3.cpp b/src/crt/i386/ehprolg3.cpp similarity index 93% rename from src/i386/ehprolg3.cpp rename to src/crt/i386/ehprolg3.cpp index 504d10f..091d651 100644 --- a/src/i386/ehprolg3.cpp +++ b/src/crt/i386/ehprolg3.cpp @@ -1,15 +1,3 @@ -/* - * PROJECT: Universal C++ RunTime (UCXXRT) - * FILE: ehprolg3.cpp - * DATA: 2021/05/14 - * - * PURPOSE: Universal C++ RunTime - * - * LICENSE: Relicensed under The MIT License from The CC BY 4.0 License - * - * DEVELOPER: MiroKaku (miro.kaku AT Outlook.com) - */ - /*** *ehprolg3.c - Define the _EH_prolog3* compiler helpers for unaligned frames * @@ -43,8 +31,6 @@ * _EH_epilog3_catch_GS ****/ -#ifdef _X86_ - #include /* @@ -53,7 +39,6 @@ */ #pragma warning(disable:4100 4733) -#define bnd repne /*** *_EH_prolog3 - Set up C++ EH call frame variation * @@ -96,11 +81,13 @@ * *******************************************************************************/ -EXTERN_C_START - -void __declspec(naked) __cdecl _EH_prolog3( +#ifdef __cplusplus +extern "C" +#endif +extern void __declspec(naked) +_EH_prolog3( unsigned long LocalAllocation -) + ) { __asm { @@ -161,7 +148,7 @@ void __declspec(naked) __cdecl _EH_prolog3( lea eax, [ebp-12] ; all done - link in the EH node mov fs:[0], eax - bnd ret ; adds 0xF2(BND)prefix to preserve bounds + ret } } @@ -210,9 +197,13 @@ void __declspec(naked) __cdecl _EH_prolog3( * *******************************************************************************/ -void __declspec(naked) __cdecl _EH_prolog3_catch( +#ifdef __cplusplus +extern "C" +#endif +extern void __declspec(naked) +_EH_prolog3_catch( unsigned long LocalAllocation -) + ) { __asm { @@ -277,7 +268,7 @@ void __declspec(naked) __cdecl _EH_prolog3_catch( lea eax, [ebp-12] ; all done - link in the EH node mov fs:[0], eax - bnd ret ; adds 0xF2(BND)prefix to preserve bounds + ret } } @@ -325,9 +316,13 @@ void __declspec(naked) __cdecl _EH_prolog3_catch( * *******************************************************************************/ -void __declspec(naked) __cdecl _EH_prolog3_GS( +#ifdef __cplusplus +extern "C" +#endif +extern void __declspec(naked) +_EH_prolog3_GS( unsigned long LocalAllocation -) + ) { __asm { @@ -393,7 +388,7 @@ void __declspec(naked) __cdecl _EH_prolog3_GS( lea eax, [ebp-12] ; all done - link in the EH node mov fs:[0], eax - bnd ret ; adds 0xF2(BND)prefix to preserve bounds + ret } } @@ -443,9 +438,13 @@ void __declspec(naked) __cdecl _EH_prolog3_GS( * *******************************************************************************/ -void __declspec(naked) __cdecl _EH_prolog3_catch_GS( +#ifdef __cplusplus +extern "C" +#endif +extern void __declspec(naked) +_EH_prolog3_catch_GS( unsigned long LocalAllocation -) + ) { __asm { @@ -513,7 +512,7 @@ void __declspec(naked) __cdecl _EH_prolog3_catch_GS( lea eax, [ebp-12] ; all done - link in the EH node mov fs:[0], eax - bnd ret ; adds 0xF2(BND)prefix to preserve bounds + ret } } @@ -535,7 +534,13 @@ void __declspec(naked) __cdecl _EH_prolog3_catch_GS( * *******************************************************************************/ -void __declspec(naked) __cdecl _EH_epilog3(void) +#ifdef __cplusplus +extern "C" +#endif +extern void __declspec(naked) +_EH_epilog3( + void + ) { __asm { @@ -549,7 +554,7 @@ void __declspec(naked) __cdecl _EH_epilog3(void) mov esp, ebp ; free stack pop ebp ; restore frame pointer push ecx ; push return address - bnd ret 0 ; adds 0xF2(BND)prefix to preserve bounds + ret 0 } } @@ -573,15 +578,20 @@ void __declspec(naked) __cdecl _EH_epilog3(void) * *******************************************************************************/ -void __declspec(naked) __cdecl -_EH_epilog3_GS(void) +#ifdef __cplusplus +extern "C" +#endif +extern void __declspec(naked) +_EH_epilog3_GS( + void + ) { __asm { mov ecx, [ebp-16] ; rematerialize the global cookie and check xor ecx, ebp ; * its validity - bnd call __security_check_cookie ; adds 0xF2(BND)prefix to preserve bounds - bnd jmp _EH_epilog3 ; go tear down the frame + call __security_check_cookie + jmp _EH_epilog3 ; go tear down the frame } } @@ -605,18 +615,19 @@ _EH_epilog3_GS(void) * *******************************************************************************/ -void __declspec(naked) __cdecl -_EH_epilog3_catch_GS(void) +#ifdef __cplusplus +extern "C" +#endif +extern void __declspec(naked) +_EH_epilog3_catch_GS( + void + ) { __asm { mov ecx, [ebp-20] ; rematerialize the global cookie and check xor ecx, ebp ; * its validity - bnd call __security_check_cookie ; adds 0xF2(BND)prefix to preserve bounds - bnd jmp _EH_epilog3 ; go tear down the frame + call __security_check_cookie + jmp _EH_epilog3 ; go tear down the frame } } - -EXTERN_C_END - -#endif diff --git a/src/i386/ehprolg3a.cpp b/src/crt/i386/ehprolg3a.cpp similarity index 98% rename from src/i386/ehprolg3a.cpp rename to src/crt/i386/ehprolg3a.cpp index 6cafc75..ea961f0 100644 --- a/src/i386/ehprolg3a.cpp +++ b/src/crt/i386/ehprolg3a.cpp @@ -1,15 +1,3 @@ -/* - * PROJECT: Universal C++ RunTime (UCXXRT) - * FILE: ehprolg3a.cpp - * DATA: 2021/09/23 - * - * PURPOSE: Universal C++ RunTime - * - * LICENSE: Relicensed under The MIT License from The CC BY 4.0 License - * - * DEVELOPER: MiroKaku (miro.kaku AT Outlook.com) - */ - /*** *ehprolg3a.c - Define the _EH_prolog3* compiler helpers for aligned frames * @@ -44,8 +32,6 @@ * _EH_epilog3_GS_align ****/ -#ifdef _X86_ - #include /* @@ -105,8 +91,9 @@ * *******************************************************************************/ -EXTERN_C_START - +#ifdef __cplusplus +extern "C" +#endif extern void __declspec(naked) _EH_prolog3_align( unsigned long LocalAllocation, @@ -282,6 +269,9 @@ _EH_prolog3_align( * *******************************************************************************/ +#ifdef __cplusplus +extern "C" +#endif extern void __declspec(naked) _EH_prolog3_catch_align( unsigned long LocalAllocation, @@ -464,6 +454,9 @@ _EH_prolog3_catch_align( * *******************************************************************************/ +#ifdef __cplusplus +extern "C" +#endif extern void __declspec(naked) _EH_prolog3_GS_align( unsigned long LocalAllocation, @@ -653,6 +646,9 @@ _EH_prolog3_GS_align( * *******************************************************************************/ +#ifdef __cplusplus +extern "C" +#endif extern void __declspec(naked) _EH_prolog3_catch_GS_align( unsigned long LocalAllocation, @@ -812,6 +808,9 @@ _EH_prolog3_catch_GS_align( * *******************************************************************************/ +#ifdef __cplusplus +extern "C" +#endif extern void __declspec(naked) _EH_epilog3_align( void @@ -860,6 +859,9 @@ _EH_epilog3_align( * *******************************************************************************/ +#ifdef __cplusplus +extern "C" +#endif extern void __declspec(naked) _EH_epilog3_GS_align( void @@ -872,7 +874,3 @@ _EH_epilog3_GS_align( jmp _EH_epilog3_align ; go tear down the frame } } - -EXTERN_C_END - -#endif diff --git a/src/crt/i386/ehprolog.asm b/src/crt/i386/ehprolog.asm new file mode 100644 index 0000000..65e0208 --- /dev/null +++ b/src/crt/i386/ehprolog.asm @@ -0,0 +1,36 @@ +;*** +;ehprolog.asm - defines __EH_prolog +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;Purpose: +; EH prolog helper function. Sets up the frame for a C++ EH function +; with unwinds, by creating a link in the __except_list, and by setting +; up EBP as frame base pointer. +; +;******************************************************************************* + title ehprolog.asm + .386 + +.model FLAT + +ASSUME FS : NOTHING + +PUBLIC __EH_prolog + +.code + +__EH_prolog PROC NEAR + push -1 ; State index + push eax ; Push address of handler thunk + mov eax, DWORD PTR fs:[0] + push eax ; List link + mov eax, DWORD PTR [esp+12] ; Load return address + mov DWORD PTR fs:[0], esp + mov DWORD PTR [esp+12], ebp ; Save old ebp on the stack + lea ebp, DWORD PTR [esp+12] ; Set ebp to the base of the frame + push eax ; Push return addr on top of the stack + ret 0 ; JMP [eax] would be bad on P6 +__EH_prolog ENDP + +END diff --git a/src/crt/i386/except.inc b/src/crt/i386/except.inc new file mode 100644 index 0000000..94eb8b6 --- /dev/null +++ b/src/crt/i386/except.inc @@ -0,0 +1,85 @@ +;*** +;except.inc - definitions for exception handling +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;Purpose: +; Structure and constant definitions used by exception handling code. +; +;******************************************************************************* + +; structure used by SEH support function and intrinsics. the information +; passed by the OS exception dispatcher is repackaged in this form by the +; runtime (_except_handler()). + +__EXCEPTION_INFO_PTRS struc + preport dd ? + pcontext dd ? +__EXCEPTION_INFO_PTRS ends + + +; exception registration record structure. + +__EXCEPTIONREGISTRATIONRECORD struc + prev_structure dd ? + ExceptionHandler dd ? + ExceptionFilter dd ? + FilterFrame dd ? + PExceptionInfoPtrs dd ? +__EXCEPTIONREGISTRATIONRECORD ends + +; size of exception registration record in double words + +DWORDS_IN_XREGREC equ 5 + + +; exception report record + +__EXCEPTIONREPORTRECORD struc + ExceptionNum dd ? + fHandlerFlags dd ? + ExceptionReportRecord dd ? + ExceptionAddress dd ? + cParameters dd ? + ExceptionInfo dd 4 dup (?) +__EXCEPTIONREPORTRECORD ends + + +; setjmp/longjmp buffer (i.e., structure underlying jmp_buf array) + +_JMP_BUF struc + ebpsave dd ? + ebxsave dd ? + edisave dd ? + esisave dd ? + espsave dd ? + retsave dd ? + xcptsave dd ? +_JMP_BUF ends + + +; exceptions corresponding to C runtime errors (these are explicitly +; referenced in the startup code) + +_XCPT_UNABLE_TO_GROW_STACK equ 080010001h +_XCPT_INTEGER_DIVIDE_BY_ZERO equ 0C000009Bh +_XCPT_NONCONTINUABLE_EXCEPTION equ 0C0000024h +_XCPT_INVALID_DISPOSITION equ 0C0000025h +_XCPT_SIGABRT equ 020000001h + + +; unwind settings in fHandlerFlags + +_EH_UNWINDING equ 2 +_EH_EXIT_UNWIND equ 4 +UNWIND equ _EH_UNWINDING OR _EH_EXIT_UNWIND + + +; return values (to the exception dispatcher) + +IFDEF _WIN32 + +_XCPT_CONTINUE_SEARCH equ 000000001h +_XCPT_CONTINUE_EXECUTION equ 000000000h + +ENDIF diff --git a/src/i386/exsup.inc b/src/crt/i386/exsup.inc similarity index 88% rename from src/i386/exsup.inc rename to src/crt/i386/exsup.inc index f28ee90..4d9e408 100644 --- a/src/i386/exsup.inc +++ b/src/crt/i386/exsup.inc @@ -1,15 +1,3 @@ -;/* -; * PROJECT: Universal C++ RunTime (UCXXRT) -; * FILE: exsup.inc -; * DATA: 2021/05/14 -; * -; * PURPOSE: Universal C++ RunTime -; * -; * LICENSE: Relicensed under The MIT License from The CC BY 4.0 License -; * -; * DEVELOPER: MiroKaku (miro.kaku AT Outlook.com) -; */ - ;*** ;exsup.inc ; @@ -99,8 +87,8 @@ C8_TRYLEVEL equ 12 MAGIC_NUMBER1 equ 019930520h _NLG_INFO struc - dwSig dd MAGIC_NUMBER1 + dwSig dd MAGIC_NUMBER1 uoffDestination dd 0 - dwCode dd 0 + dwCode dd 0 uoffFramePointer dd 0 _NLG_INFO ends diff --git a/src/i386/ftol.asm b/src/crt/i386/ftol.asm similarity index 83% rename from src/i386/ftol.asm rename to src/crt/i386/ftol.asm index 8ff45b9..5fefad1 100644 --- a/src/i386/ftol.asm +++ b/src/crt/i386/ftol.asm @@ -1,18 +1,6 @@ page ,132 title ftol - truncate TOS to 32-bit integer -;/* -; * PROJECT: Universal C++ RunTime (UCXXRT) -; * FILE: ftol.asm -; * DATA: 2021/04/25 -; * -; * PURPOSE: Universal C++ RunTime -; * -; * LICENSE: Relicensed under The MIT License from The CC BY 4.0 License -; * -; * DEVELOPER: MiroKaku (miro.kaku AT Outlook.com) -; */ - ;*** ;ftol.asm - truncate TOS to 32-bit integer ; diff --git a/src/i386/ftol2.asm b/src/crt/i386/ftol2.asm similarity index 97% rename from src/i386/ftol2.asm rename to src/crt/i386/ftol2.asm index 97477ce..1b4b479 100644 --- a/src/i386/ftol2.asm +++ b/src/crt/i386/ftol2.asm @@ -1,19 +1,6 @@ page ,132 title ftol2 - truncate TOS to 32-bit integer -;/* -; * PROJECT: Universal C++ RunTime (UCXXRT) -; * FILE: ftol2.asm -; * DATA: 2021/04/25 -; * -; * PURPOSE: Universal C++ RunTime -; * -; * LICENSE: Relicensed under The MIT License from The CC BY 4.0 License -; * -; * DEVELOPER: MiroKaku (miro.kaku AT Outlook.com) -; */ - - .xlist include cruntime.inc .list diff --git a/src/i386/ftol3.asm b/src/crt/i386/ftol3.asm similarity index 97% rename from src/i386/ftol3.asm rename to src/crt/i386/ftol3.asm index b62adcb..3cb5bde 100644 --- a/src/i386/ftol3.asm +++ b/src/crt/i386/ftol3.asm @@ -1,18 +1,6 @@ page ,132 title ftol3 - truncate TOS to 32-bit integer -;/* -; * PROJECT: Universal C++ RunTime (UCXXRT) -; * FILE: ftol3.asm -; * DATA: 2021/04/25 -; * -; * PURPOSE: Universal C++ RunTime -; * -; * LICENSE: Relicensed under The MIT License from The CC BY 4.0 License -; * -; * DEVELOPER: MiroKaku (miro.kaku AT Outlook.com) -; */ - .xlist include cruntime.inc .list diff --git a/src/crt/i386/lldiv.asm b/src/crt/i386/lldiv.asm new file mode 100644 index 0000000..67e9648 --- /dev/null +++ b/src/crt/i386/lldiv.asm @@ -0,0 +1,203 @@ + title lldiv - signed long divide routine +;*** +;lldiv.asm - signed long divide routine +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;Purpose: +; defines the signed long divide routine +; __alldiv +; +;******************************************************************************* + + +.xlist +include vcruntime.inc +include mm.inc +.list + +;*** +;lldiv - signed long divide +; +;Purpose: +; Does a signed long divide of the arguments. Arguments are +; not changed. +; +;Entry: +; Arguments are passed on the stack: +; 1st pushed: divisor (QWORD) +; 2nd pushed: dividend (QWORD) +; +;Exit: +; EDX:EAX contains the quotient (dividend/divisor) +; NOTE: this routine removes the parameters from the stack. +; +;Uses: +; ECX +; +;Exceptions: +; +;******************************************************************************* + + CODESEG + +_alldiv PROC NEAR +.FPO (3, 4, 0, 0, 0, 0) + + push edi + push esi + push ebx + +; Set up the local stack and save the index registers. When this is done +; the stack frame will look as follows (assuming that the expression a/b will +; generate a call to lldiv(a, b)): +; +; ----------------- +; | | +; |---------------| +; | | +; |--divisor (b)--| +; | | +; |---------------| +; | | +; |--dividend (a)-| +; | | +; |---------------| +; | return addr** | +; |---------------| +; | EDI | +; |---------------| +; | ESI | +; |---------------| +; ESP---->| EBX | +; ----------------- +; + +DVND equ [esp + 16] ; stack address of dividend (a) +DVSR equ [esp + 24] ; stack address of divisor (b) + + +; Determine sign of the result (edi = 0 if result is positive, non-zero +; otherwise) and make operands positive. + + xor edi,edi ; result sign assumed positive + + mov eax,HIWORD(DVND) ; hi word of a + or eax,eax ; test to see if signed + jge short L1 ; skip rest if a is already positive + inc edi ; complement result sign flag + mov edx,LOWORD(DVND) ; lo word of a + neg eax ; make a positive + neg edx + sbb eax,0 + mov HIWORD(DVND),eax ; save positive value + mov LOWORD(DVND),edx +L1: + mov eax,HIWORD(DVSR) ; hi word of b + or eax,eax ; test to see if signed + jge short L2 ; skip rest if b is already positive + inc edi ; complement the result sign flag + mov edx,LOWORD(DVSR) ; lo word of a + neg eax ; make b positive + neg edx + sbb eax,0 + mov HIWORD(DVSR),eax ; save positive value + mov LOWORD(DVSR),edx +L2: + +; +; Now do the divide. First look to see if the divisor is less than 4194304K. +; If so, then we can use a simple algorithm with word divides, otherwise +; things get a little more complex. +; +; NOTE - eax currently contains the high order word of DVSR +; + + or eax,eax ; check to see if divisor < 4194304K + jnz short L3 ; nope, gotta do this the hard way + mov ecx,LOWORD(DVSR) ; load divisor + mov eax,HIWORD(DVND) ; load high word of dividend + xor edx,edx + div ecx ; eax <- high order bits of quotient + mov ebx,eax ; save high bits of quotient + mov eax,LOWORD(DVND) ; edx:eax <- remainder:lo word of dividend + div ecx ; eax <- low order bits of quotient + mov edx,ebx ; edx:eax <- quotient + jmp short L4 ; set sign, restore stack and return + +; +; Here we do it the hard way. Remember, eax contains the high word of DVSR +; + +L3: + mov ebx,eax ; ebx:ecx <- divisor + mov ecx,LOWORD(DVSR) + mov edx,HIWORD(DVND) ; edx:eax <- dividend + mov eax,LOWORD(DVND) +L5: + shr ebx,1 ; shift divisor right one bit + rcr ecx,1 + shr edx,1 ; shift dividend right one bit + rcr eax,1 + or ebx,ebx + jnz short L5 ; loop until divisor < 4194304K + div ecx ; now divide, ignore remainder + mov esi,eax ; save quotient + +; +; We may be off by one, so to check, we will multiply the quotient +; by the divisor and check the result against the original dividend +; Note that we must also check for overflow, which can occur if the +; dividend is close to 2**64 and the quotient is off by 1. +; + + mul dword ptr HIWORD(DVSR) ; QUOT * HIWORD(DVSR) + mov ecx,eax + mov eax,LOWORD(DVSR) + mul esi ; QUOT * LOWORD(DVSR) + add edx,ecx ; EDX:EAX = QUOT * DVSR + jc short L6 ; carry means Quotient is off by 1 + +; +; do long compare here between original dividend and the result of the +; multiply in edx:eax. If original is larger or equal, we are ok, otherwise +; subtract one (1) from the quotient. +; + + cmp edx,HIWORD(DVND) ; compare hi words of result and original + ja short L6 ; if result > original, do subtract + jb short L7 ; if result < original, we are ok + cmp eax,LOWORD(DVND) ; hi words are equal, compare lo words + jbe short L7 ; if less or equal we are ok, else subtract +L6: + dec esi ; subtract 1 from quotient +L7: + xor edx,edx ; edx:eax <- quotient + mov eax,esi + +; +; Just the cleanup left to do. edx:eax contains the quotient. Set the sign +; according to the save value, cleanup the stack, and return. +; + +L4: + dec edi ; check to see if result is negative + jnz short L8 ; if EDI == 0, result should be negative + neg edx ; otherwise, negate the result + neg eax + sbb edx,0 + +; +; Restore the saved registers and return. +; + +L8: + pop ebx + pop esi + pop edi + + ret 16 + +_alldiv ENDP + +end diff --git a/src/crt/i386/lldvrm.asm b/src/crt/i386/lldvrm.asm new file mode 100644 index 0000000..c7ea4aa --- /dev/null +++ b/src/crt/i386/lldvrm.asm @@ -0,0 +1,249 @@ + title lldvrm - signed long divide and remainder routine +;*** +;lldvrm.asm - signed long divide and remainder routine +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;Purpose: +; defines the signed long divide and remainder routine +; __alldvrm +; +;******************************************************************************* + + +.xlist +include vcruntime.inc +include mm.inc +.list + +;*** +;lldvrm - signed long divide and remainder +; +;Purpose: +; Does a signed long divide and remainder of the arguments. Arguments are +; not changed. +; +;Entry: +; Arguments are passed on the stack: +; 1st pushed: divisor (QWORD) +; 2nd pushed: dividend (QWORD) +; +;Exit: +; EDX:EAX contains the quotient (dividend/divisor) +; EBX:ECX contains the remainder (divided % divisor) +; NOTE: this routine removes the parameters from the stack. +; +;Uses: +; ECX +; +;Exceptions: +; +;******************************************************************************* + + CODESEG + +_alldvrm PROC NEAR +.FPO (3, 4, 0, 0, 1, 0) + + push edi + push esi + push ebp + +; Set up the local stack and save the index registers. When this is done +; the stack frame will look as follows (assuming that the expression a/b will +; generate a call to alldvrm(a, b)): +; +; ----------------- +; | | +; |---------------| +; | | +; |--divisor (b)--| +; | | +; |---------------| +; | | +; |--dividend (a)-| +; | | +; |---------------| +; | return addr** | +; |---------------| +; | EDI | +; |---------------| +; | ESI | +; |---------------| +; ESP---->| EBP | +; ----------------- +; + +DVND equ [esp + 16] ; stack address of dividend (a) +DVSR equ [esp + 24] ; stack address of divisor (b) + + +; Determine sign of the quotient (edi = 0 if result is positive, non-zero +; otherwise) and make operands positive. +; Sign of the remainder is kept in ebp. + + xor edi,edi ; result sign assumed positive + xor ebp,ebp ; result sign assumed positive + + mov eax,HIWORD(DVND) ; hi word of a + or eax,eax ; test to see if signed + jge short L1 ; skip rest if a is already positive + inc edi ; complement result sign flag + inc ebp ; complement result sign flag + mov edx,LOWORD(DVND) ; lo word of a + neg eax ; make a positive + neg edx + sbb eax,0 + mov HIWORD(DVND),eax ; save positive value + mov LOWORD(DVND),edx +L1: + mov eax,HIWORD(DVSR) ; hi word of b + or eax,eax ; test to see if signed + jge short L2 ; skip rest if b is already positive + inc edi ; complement the result sign flag + mov edx,LOWORD(DVSR) ; lo word of a + neg eax ; make b positive + neg edx + sbb eax,0 + mov HIWORD(DVSR),eax ; save positive value + mov LOWORD(DVSR),edx +L2: + +; +; Now do the divide. First look to see if the divisor is less than 4194304K. +; If so, then we can use a simple algorithm with word divides, otherwise +; things get a little more complex. +; +; NOTE - eax currently contains the high order word of DVSR +; + + or eax,eax ; check to see if divisor < 4194304K + jnz short L3 ; nope, gotta do this the hard way + mov ecx,LOWORD(DVSR) ; load divisor + mov eax,HIWORD(DVND) ; load high word of dividend + xor edx,edx + div ecx ; eax <- high order bits of quotient + mov ebx,eax ; save high bits of quotient + mov eax,LOWORD(DVND) ; edx:eax <- remainder:lo word of dividend + div ecx ; eax <- low order bits of quotient + mov esi,eax ; ebx:esi <- quotient +; +; Now we need to do a multiply so that we can compute the remainder. +; + mov eax,ebx ; set up high word of quotient + mul dword ptr LOWORD(DVSR) ; HIWORD(QUOT) * DVSR + mov ecx,eax ; save the result in ecx + mov eax,esi ; set up low word of quotient + mul dword ptr LOWORD(DVSR) ; LOWORD(QUOT) * DVSR + add edx,ecx ; EDX:EAX = QUOT * DVSR + jmp short L4 ; complete remainder calculation + +; +; Here we do it the hard way. Remember, eax contains the high word of DVSR +; + +L3: + mov ebx,eax ; ebx:ecx <- divisor + mov ecx,LOWORD(DVSR) + mov edx,HIWORD(DVND) ; edx:eax <- dividend + mov eax,LOWORD(DVND) +L5: + shr ebx,1 ; shift divisor right one bit + rcr ecx,1 + shr edx,1 ; shift dividend right one bit + rcr eax,1 + or ebx,ebx + jnz short L5 ; loop until divisor < 4194304K + div ecx ; now divide, ignore remainder + mov esi,eax ; save quotient + +; +; We may be off by one, so to check, we will multiply the quotient +; by the divisor and check the result against the original dividend +; Note that we must also check for overflow, which can occur if the +; dividend is close to 2**64 and the quotient is off by 1. +; + + mul dword ptr HIWORD(DVSR) ; QUOT * HIWORD(DVSR) + mov ecx,eax + mov eax,LOWORD(DVSR) + mul esi ; QUOT * LOWORD(DVSR) + add edx,ecx ; EDX:EAX = QUOT * DVSR + jc short L6 ; carry means Quotient is off by 1 + +; +; do long compare here between original dividend and the result of the +; multiply in edx:eax. If original is larger or equal, we are ok, otherwise +; subtract one (1) from the quotient. +; + + cmp edx,HIWORD(DVND) ; compare hi words of result and original + ja short L6 ; if result > original, do subtract + jb short L7 ; if result < original, we are ok + cmp eax,LOWORD(DVND) ; hi words are equal, compare lo words + jbe short L7 ; if less or equal we are ok, else subtract +L6: + dec esi ; subtract 1 from quotient + sub eax,LOWORD(DVSR) ; subtract divisor from result + sbb edx,HIWORD(DVSR) +L7: + xor ebx,ebx ; ebx:esi <- quotient + +L4: +; +; Calculate remainder by subtracting the result from the original dividend. +; Since the result is already in a register, we will do the subtract in the +; opposite direction and negate the result if necessary. +; + + sub eax,LOWORD(DVND) ; subtract dividend from result + sbb edx,HIWORD(DVND) + +; +; Now check the result sign flag to see if the result is supposed to be positive +; or negative. It is currently negated (because we subtracted in the 'wrong' +; direction), so if the sign flag is set we are done, otherwise we must negate +; the result to make it positive again. +; + + dec ebp ; check result sign flag + jns short L9 ; result is ok, set up the quotient + neg edx ; otherwise, negate the result + neg eax + sbb edx,0 + +; +; Now we need to get the quotient into edx:eax and the remainder into ebx:ecx. +; +L9: + mov ecx,edx + mov edx,ebx + mov ebx,ecx + mov ecx,eax + mov eax,esi + +; +; Just the cleanup left to do. edx:eax contains the quotient. Set the sign +; according to the save value, cleanup the stack, and return. +; + + dec edi ; check to see if result is negative + jnz short L8 ; if EDI == 0, result should be negative + neg edx ; otherwise, negate the result + neg eax + sbb edx,0 + +; +; Restore the saved registers and return. +; + +L8: + pop ebp + pop esi + pop edi + + ret 16 + +_alldvrm ENDP + +end diff --git a/src/crt/i386/llmul.asm b/src/crt/i386/llmul.asm new file mode 100644 index 0000000..9a83259 --- /dev/null +++ b/src/crt/i386/llmul.asm @@ -0,0 +1,100 @@ + title llmul - long multiply routine +;*** +;llmul.asm - long multiply routine +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;Purpose: +; Defines long multiply routine +; Both signed and unsigned routines are the same, since multiply's +; work out the same in 2's complement +; creates the following routine: +; __allmul +; +;******************************************************************************* + + +.xlist +include vcruntime.inc +include mm.inc +.list + +;*** +;llmul - long multiply routine +; +;Purpose: +; Does a long multiply (same for signed/unsigned) +; Parameters are not changed. +; +;Entry: +; Parameters are passed on the stack: +; 1st pushed: multiplier (QWORD) +; 2nd pushed: multiplicand (QWORD) +; +;Exit: +; EDX:EAX - product of multiplier and multiplicand +; NOTE: parameters are removed from the stack +; +;Uses: +; ECX +; +;Exceptions: +; +;******************************************************************************* + + CODESEG + +_allmul PROC NEAR +.FPO (0, 4, 0, 0, 0, 0) + +A EQU [esp + 4] ; stack address of a +B EQU [esp + 12] ; stack address of b + +; +; AHI, BHI : upper 32 bits of A and B +; ALO, BLO : lower 32 bits of A and B +; +; ALO * BLO +; ALO * BHI +; + BLO * AHI +; --------------------- +; + + mov eax,HIWORD(A) + mov ecx,HIWORD(B) + or ecx,eax ;test for both hiwords zero. + mov ecx,LOWORD(B) + jnz short hard ;both are zero, just mult ALO and BLO + + mov eax,LOWORD(A) + mul ecx + + ret 16 ; callee restores the stack + +hard: + push ebx +.FPO (1, 4, 0, 0, 0, 0) + +; must redefine A and B since esp has been altered + +A2 EQU [esp + 8] ; stack address of a +B2 EQU [esp + 16] ; stack address of b + + mul ecx ;eax has AHI, ecx has BLO, so AHI * BLO + mov ebx,eax ;save result + + mov eax,LOWORD(A2) + mul dword ptr HIWORD(B2) ;ALO * BHI + add ebx,eax ;ebx = ((ALO * BHI) + (AHI * BLO)) + + mov eax,LOWORD(A2) ;ecx = BLO + mul ecx ;so edx:eax = ALO*BLO + add edx,ebx ;now edx has all the LO*HI stuff + + pop ebx + + ret 16 ; callee restores the stack + +_allmul ENDP + + end diff --git a/src/crt/i386/llrem.asm b/src/crt/i386/llrem.asm new file mode 100644 index 0000000..de91620 --- /dev/null +++ b/src/crt/i386/llrem.asm @@ -0,0 +1,210 @@ + title llrem - signed long remainder routine +;*** +;llrem.asm - signed long remainder routine +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;Purpose: +; defines the signed long remainder routine +; __allrem +; +;******************************************************************************* + + +.xlist +include vcruntime.inc +include mm.inc +.list + +;*** +;llrem - signed long remainder +; +;Purpose: +; Does a signed long remainder of the arguments. Arguments are +; not changed. +; +;Entry: +; Arguments are passed on the stack: +; 1st pushed: divisor (QWORD) +; 2nd pushed: dividend (QWORD) +; +;Exit: +; EDX:EAX contains the remainder (dividend%divisor) +; NOTE: this routine removes the parameters from the stack. +; +;Uses: +; ECX +; +;Exceptions: +; +;******************************************************************************* + + CODESEG + +_allrem PROC NEAR +.FPO (2, 4, 0, 0, 0, 0) + + push ebx + push edi + +; Set up the local stack and save the index registers. When this is done +; the stack frame will look as follows (assuming that the expression a%b will +; generate a call to lrem(a, b)): +; +; ----------------- +; | | +; |---------------| +; | | +; |--divisor (b)--| +; | | +; |---------------| +; | | +; |--dividend (a)-| +; | | +; |---------------| +; | return addr** | +; |---------------| +; | EBX | +; |---------------| +; ESP---->| EDI | +; ----------------- +; + +DVND equ [esp + 12] ; stack address of dividend (a) +DVSR equ [esp + 20] ; stack address of divisor (b) + + +; Determine sign of the result (edi = 0 if result is positive, non-zero +; otherwise) and make operands positive. + + xor edi,edi ; result sign assumed positive + + mov eax,HIWORD(DVND) ; hi word of a + or eax,eax ; test to see if signed + jge short L1 ; skip rest if a is already positive + inc edi ; complement result sign flag bit + mov edx,LOWORD(DVND) ; lo word of a + neg eax ; make a positive + neg edx + sbb eax,0 + mov HIWORD(DVND),eax ; save positive value + mov LOWORD(DVND),edx +L1: + mov eax,HIWORD(DVSR) ; hi word of b + or eax,eax ; test to see if signed + jge short L2 ; skip rest if b is already positive + mov edx,LOWORD(DVSR) ; lo word of b + neg eax ; make b positive + neg edx + sbb eax,0 + mov HIWORD(DVSR),eax ; save positive value + mov LOWORD(DVSR),edx +L2: + +; +; Now do the divide. First look to see if the divisor is less than 4194304K. +; If so, then we can use a simple algorithm with word divides, otherwise +; things get a little more complex. +; +; NOTE - eax currently contains the high order word of DVSR +; + + or eax,eax ; check to see if divisor < 4194304K + jnz short L3 ; nope, gotta do this the hard way + mov ecx,LOWORD(DVSR) ; load divisor + mov eax,HIWORD(DVND) ; load high word of dividend + xor edx,edx + div ecx ; edx <- remainder + mov eax,LOWORD(DVND) ; edx:eax <- remainder:lo word of dividend + div ecx ; edx <- final remainder + mov eax,edx ; edx:eax <- remainder + xor edx,edx + dec edi ; check result sign flag + jns short L4 ; negate result, restore stack and return + jmp short L8 ; result sign ok, restore stack and return + +; +; Here we do it the hard way. Remember, eax contains the high word of DVSR +; + +L3: + mov ebx,eax ; ebx:ecx <- divisor + mov ecx,LOWORD(DVSR) + mov edx,HIWORD(DVND) ; edx:eax <- dividend + mov eax,LOWORD(DVND) +L5: + shr ebx,1 ; shift divisor right one bit + rcr ecx,1 + shr edx,1 ; shift dividend right one bit + rcr eax,1 + or ebx,ebx + jnz short L5 ; loop until divisor < 4194304K + div ecx ; now divide, ignore remainder + +; +; We may be off by one, so to check, we will multiply the quotient +; by the divisor and check the result against the original dividend +; Note that we must also check for overflow, which can occur if the +; dividend is close to 2**64 and the quotient is off by 1. +; + + mov ecx,eax ; save a copy of quotient in ECX + mul dword ptr HIWORD(DVSR) + xchg ecx,eax ; save product, get quotient in EAX + mul dword ptr LOWORD(DVSR) + add edx,ecx ; EDX:EAX = QUOT * DVSR + jc short L6 ; carry means Quotient is off by 1 + +; +; do long compare here between original dividend and the result of the +; multiply in edx:eax. If original is larger or equal, we are ok, otherwise +; subtract the original divisor from the result. +; + + cmp edx,HIWORD(DVND) ; compare hi words of result and original + ja short L6 ; if result > original, do subtract + jb short L7 ; if result < original, we are ok + cmp eax,LOWORD(DVND) ; hi words are equal, compare lo words + jbe short L7 ; if less or equal we are ok, else subtract +L6: + sub eax,LOWORD(DVSR) ; subtract divisor from result + sbb edx,HIWORD(DVSR) +L7: + +; +; Calculate remainder by subtracting the result from the original dividend. +; Since the result is already in a register, we will do the subtract in the +; opposite direction and negate the result if necessary. +; + + sub eax,LOWORD(DVND) ; subtract dividend from result + sbb edx,HIWORD(DVND) + +; +; Now check the result sign flag to see if the result is supposed to be positive +; or negative. It is currently negated (because we subtracted in the 'wrong' +; direction), so if the sign flag is set we are done, otherwise we must negate +; the result to make it positive again. +; + + dec edi ; check result sign flag + jns short L8 ; result is ok, restore stack and return +L4: + neg edx ; otherwise, negate the result + neg eax + sbb edx,0 + +; +; Just the cleanup left to do. edx:eax contains the quotient. +; Restore the saved registers and return. +; + +L8: + pop edi + pop ebx + + ret 16 + +_allrem ENDP + + end diff --git a/src/crt/i386/llshl.asm b/src/crt/i386/llshl.asm new file mode 100644 index 0000000..92012f1 --- /dev/null +++ b/src/crt/i386/llshl.asm @@ -0,0 +1,80 @@ + title llshl - long shift left +;*** +;llshl.asm - long shift left +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;Purpose: +; define long shift left routine (signed and unsigned are same) +; __allshl +; +;******************************************************************************* + + +.xlist +include vcruntime.inc +include mm.inc +.list + +;*** +;llshl - long shift left +; +;Purpose: +; Does a Long Shift Left (signed and unsigned are identical) +; Shifts a long left any number of bits. +; +;Entry: +; EDX:EAX - long value to be shifted +; CL - number of bits to shift by +; +;Exit: +; EDX:EAX - shifted value +; +;Uses: +; CL is destroyed. +; +;Exceptions: +; +;******************************************************************************* + + CODESEG + +_allshl PROC NEAR +.FPO (0, 0, 0, 0, 0 ,0) + +; +; Handle shifts of 64 or more bits (all get 0) +; + cmp cl, 64 + jae short RETZERO + +; +; Handle shifts of between 0 and 31 bits +; + cmp cl, 32 + jae short MORE32 + shld edx,eax,cl + shl eax,cl + ret + +; +; Handle shifts of between 32 and 63 bits +; +MORE32: + mov edx,eax + xor eax,eax + and cl,31 + shl edx,cl + ret + +; +; return 0 in edx:eax +; +RETZERO: + xor eax,eax + xor edx,edx + ret + +_allshl ENDP + + end diff --git a/src/crt/i386/llshr.asm b/src/crt/i386/llshr.asm new file mode 100644 index 0000000..c474bbe --- /dev/null +++ b/src/crt/i386/llshr.asm @@ -0,0 +1,81 @@ + title llshr - long shift right +;*** +;llshr.asm - long shift right +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;Purpose: +; define signed long shift right routine +; __allshr +; +;******************************************************************************* + + +.xlist +include vcruntime.inc +include mm.inc +.list + +;*** +;llshr - long shift right +; +;Purpose: +; Does a signed Long Shift Right +; Shifts a long right any number of bits. +; +;Entry: +; EDX:EAX - long value to be shifted +; CL - number of bits to shift by +; +;Exit: +; EDX:EAX - shifted value +; +;Uses: +; CL is destroyed. +; +;Exceptions: +; +;******************************************************************************* + + CODESEG + +_allshr PROC NEAR +.FPO (0, 0, 0, 0, 0, 0) + +; +; Handle shifts of 64 bits or more (if shifting 64 bits or more, the result +; depends only on the high order bit of edx). +; + cmp cl,64 + jae short RETSIGN + +; +; Handle shifts of between 0 and 31 bits +; + cmp cl, 32 + jae short MORE32 + shrd eax,edx,cl + sar edx,cl + ret + +; +; Handle shifts of between 32 and 63 bits +; +MORE32: + mov eax,edx + sar edx,31 + and cl,31 + sar eax,cl + ret + +; +; Return double precision 0 or -1, depending on the sign of edx +; +RETSIGN: + sar edx,31 + mov eax,edx + ret + +_allshr ENDP + + end diff --git a/src/i386/lowhelpr.asm b/src/crt/i386/lowhelpr.asm similarity index 53% rename from src/i386/lowhelpr.asm rename to src/crt/i386/lowhelpr.asm index 8f2fb01..6c33616 100644 --- a/src/i386/lowhelpr.asm +++ b/src/crt/i386/lowhelpr.asm @@ -1,15 +1,3 @@ -;/* -; * PROJECT: Universal C++ RunTime (UCXXRT) -; * FILE: lowhelpr.asm -; * DATA: 2021/04/25 -; * -; * PURPOSE: Universal C++ RunTime -; * -; * LICENSE: Relicensed under The MIT License from The CC BY 4.0 License -; * -; * DEVELOPER: MiroKaku (miro.kaku AT Outlook.com) -; */ - ;*** ;lowhelpr.asm ; @@ -21,10 +9,10 @@ ;Notes: ; ;******************************************************************************* - title lowhelpr.asm + title lowhelpr.asm .xlist - include cruntime.inc + include vcruntime.inc include exsup.inc .list @@ -40,7 +28,7 @@ CODESEG ;//////////////////////////////////////////////////////////////////////////// ;/ ;/ _CallSettingFrame - sets up EBP and calls the specified funclet. Restores -;/ EBP on return. +;/ EBP on return. ;/ ;/ Return value is return value of funclet (whatever is in EAX). ;/ @@ -57,39 +45,39 @@ _CallSettingFrame proc stdcall, funclet:IWORD, pRN:IWORD, dwInCode:DWORD ; 0 frame type = FPO .FPO (0,3,8,4,1,0) - sub esp,4 - push ebx - push ecx - mov eax,pRN - add eax,0Ch ; sizeof(EHRegistrationNode) -- assumed to equal 0Ch - mov dword ptr [ebp-4],eax - mov eax,funclet - push ebp ; Save our frame pointer - push dwInCode - mov ecx,dwInCode - mov ebp,dword ptr [ebp-4] ; Load target frame pointer - call _NLG_Notify1 ; Notify debugger - push esi - push edi - call eax ; Call the funclet + sub esp,4 + push ebx + push ecx + mov eax,pRN + add eax,0Ch ; sizeof(EHRegistrationNode) -- assumed to equal 0Ch + mov dword ptr [ebp-4],eax + mov eax,funclet + push ebp ; Save our frame pointer + push dwInCode + mov ecx,dwInCode + mov ebp,dword ptr [ebp-4] ; Load target frame pointer + call _NLG_Notify1 ; Notify debugger + push esi + push edi + call eax ; Call the funclet _NLG_Return:: - pop edi - pop esi - mov ebx,ebp - pop ebp - mov ecx,dwInCode - push ebp - mov ebp,ebx - cmp ecx, 0100h - jne _NLG_Continue - mov ecx, 02h + pop edi + pop esi + mov ebx,ebp + pop ebp + mov ecx,dwInCode + push ebp + mov ebp,ebx + cmp ecx, 0100h + jne _NLG_Continue + mov ecx, 02h _NLG_Continue: - push ecx - call _NLG_Notify1 ; Notify debugger yet again - pop ebp ; Restore our frame pointer - pop ecx - pop ebx - ret 0Ch + push ecx + call _NLG_Notify1 ; Notify debugger yet again + pop ebp ; Restore our frame pointer + pop ecx + pop ebx + ret 0Ch _CallSettingFrame ENDP @@ -104,4 +92,3 @@ EXTERN _TranslatorGuardHandler:PROC .SafeSEH _TranslatorGuardHandler END - diff --git a/src/crt/i386/mm.inc b/src/crt/i386/mm.inc new file mode 100644 index 0000000..800961c --- /dev/null +++ b/src/crt/i386/mm.inc @@ -0,0 +1,16 @@ +;*** +;mm.inc - macros to write memory model dependent code +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;Purpose: +; This file contains definitions of a number of macros which +; make the writing of memory model dependent code for the +; 386 a little easier and more portable. +; +;******************************************************************************* + +; Big/Little Endian Definitions for Long Integers + +LOWORD equ [0] +HIWORD equ [4] diff --git a/src/i386/trnsctrl.cpp b/src/crt/i386/trnsctrl.cpp similarity index 69% rename from src/i386/trnsctrl.cpp rename to src/crt/i386/trnsctrl.cpp index 2183a72..23b12d4 100644 --- a/src/i386/trnsctrl.cpp +++ b/src/crt/i386/trnsctrl.cpp @@ -1,15 +1,3 @@ -/* - * PROJECT: Universal C++ RunTime (UCXXRT) - * FILE: trnsctrl.cpp - * DATA: 2021/05/14 - * - * PURPOSE: Universal C++ RunTime - * - * LICENSE: Relicensed under The MIT License from The CC BY 4.0 License - * - * DEVELOPER: MiroKaku (miro.kaku AT Outlook.com) - */ - /*** *trnsctrl.cpp - Routines for doing control transfers * @@ -21,15 +9,15 @@ * _CxxFrameHandler, the entry point for the frame handler ****/ -#ifdef _X86_ - #include #include +#include #include #include #include #include +#include "ehhelpers.h" #pragma warning(disable: 4100) // unreferenced formal parameter #pragma warning(disable: 4731) // ignore EBP mod in inline-asm warning @@ -53,6 +41,7 @@ #define IS_DISPATCHING(Flag) ((Flag & EXCEPTION_UNWIND) == 0) #define IS_TARGET_UNWIND(Flag) (Flag & EXCEPTION_TARGET_UNWIND) +#define pFrameInfoChain (*((FRAMEINFO **) &(RENAME_BASE_PTD(__vcrt_getptd)()->_pFrameInfoChain))) ///////////////////////////////////////////////////////////////////////////// // @@ -67,9 +56,9 @@ // need. // -__declspec(guard(ignore)) void __stdcall _JumpToContinuation( - void* target, // The funclet to call - EHRegistrationNode* pRN // Registration node, represents location of frame +void __stdcall _JumpToContinuation( + void *target, // The funclet to call + EHRegistrationNode *pRN // Registration node, represents location of frame ) { EHTRACE_FMT1("Transfer to 0x%p", target); long targetEBP; @@ -84,9 +73,9 @@ __declspec(guard(ignore)) void __stdcall _JumpToContinuation( // // Unlink NT's marker node: // - mov ebx, FS: [0] + mov ebx, FS:[0] mov eax, [ebx] - mov FS : [0] , eax + mov FS:[0], eax // // Transfer control to the continuation point @@ -94,10 +83,10 @@ __declspec(guard(ignore)) void __stdcall _JumpToContinuation( mov eax, target // Load target address mov ebx, pRN mov ebp, targetEBP // Load target frame pointer - mov esp, [ebx - 4] // Restore target esp + mov esp, [ebx-4] // Restore target esp jmp eax // Call the funclet + } } -} @@ -141,15 +130,15 @@ __declspec(guard(ignore)) void __stdcall _JumpToContinuation( // here uses EBX, ESI, and EDI, so they will be saved in the prologue. For // the latter, optimizations are disabled for the duration of this function. // + BEGIN_PRAGMA_OPTIMIZE_DISABLE("g", DevDivVSO:162582, "RtlUnwind does not preserve registers (see above)") -BEGIN_PRAGMA_RUNTIME_CHECKS_DISABLE("s", #0, "Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call."); -__declspec(guard(ignore)) void __stdcall _UnwindNestedFrames( - EHRegistrationNode* pRN, // Unwind up to (but not including) this frame - EHExceptionRecord* pExcept // The exception that initiated this unwind +void __stdcall _UnwindNestedFrames( + EHRegistrationNode *pRN, // Unwind up to (but not including) this frame + EHExceptionRecord *pExcept // The exception that initiated this unwind ) { void* pReturnPoint; - EHRegistrationNode* pDispatcherRN; // Magic! + EHRegistrationNode *pDispatcherRN; // Magic! __asm { // @@ -159,7 +148,7 @@ __declspec(guard(ignore)) void __stdcall _UnwindNestedFrames( // We explicitly use them here in the inline-asm so they get preserved // and restored by the function prologue/epilogue. // - mov esi, dword ptr FS : [0] // use ESI + mov esi, dword ptr FS:[0] // use ESI mov pDispatcherRN, esi } @@ -174,31 +163,30 @@ __declspec(guard(ignore)) void __stdcall _UnwindNestedFrames( // // Re-link the dispatcher's marker node // - mov edi, dword ptr FS : [0] // Get the current head (use EDI) - mov ebx, pDispatcherRN // Get the saved head (use EBX) - mov [ebx], edi // Link saved head to current head - mov dword ptr FS : [0] , ebx // Make saved head current head - } + mov edi, dword ptr FS:[0] // Get the current head (use EDI) + mov ebx, pDispatcherRN // Get the saved head (use EBX) + mov [ebx], edi // Link saved head to current head + mov dword ptr FS:[0], ebx // Make saved head current head + } return; -} + } -END_PRAGMA_RUNTIME_CHECKS() END_PRAGMA_OPTIMIZE() // // This is a backwards-compatibility entry point. All new code must go to __CxxFrameHandler2 // -EXTERN_C _VCRTIMP __declspec(naked) DECLSPEC_GUARD_SUPPRESS EXCEPTION_DISPOSITION __cdecl __CxxFrameHandler( - /* - EAX=FuncInfo *pFuncInfo, // Static information for this frame - */ - EHExceptionRecord * pExcept, // Information for this exception - EHRegistrationNode * pRN, // Dynamic information for this frame - void* pContext, // Context info (we don't care what's in it) - DispatcherContext * pDC // More dynamic info for this frame (ignored on Intel) +extern "C" _VCRTIMP __declspec(naked) DECLSPEC_GUARD_SUPPRESS EXCEPTION_DISPOSITION __cdecl __CxxFrameHandler( +/* + EAX=FuncInfo *pFuncInfo, // Static information for this frame +*/ + EHExceptionRecord *pExcept, // Information for this exception + EHRegistrationNode *pRN, // Dynamic information for this frame + void *pContext, // Context info (we don't care what's in it) + DispatcherContext *pDC // More dynamic info for this frame (ignored on Intel) ) { - FuncInfo* pFuncInfo; + FuncInfo *pFuncInfo; EXCEPTION_DISPOSITION result; __asm { @@ -211,17 +199,17 @@ EXTERN_C _VCRTIMP __declspec(naked) DECLSPEC_GUARD_SUPPRESS EXCEPTION_DISPOSITIO push ebx push esi push edi - cld // A bit of paranoia -- Our code-gen assumes this + cld // A bit of paranoia -- Our code-gen assumes this // // Save the extra parameter // mov pFuncInfo, eax - } + } EHTRACE_FMT1("pRN = 0x%p", pRN); - result = __InternalCxxFrameHandler(pExcept, pRN, (PCONTEXT)pContext, pDC, pFuncInfo, 0, nullptr, FALSE); + result = __InternalCxxFrameHandler( pExcept, pRN, (PCONTEXT)pContext, pDC, pFuncInfo, 0, nullptr, FALSE ); EHTRACE_HANDLER_EXIT(result); @@ -233,7 +221,7 @@ EXTERN_C _VCRTIMP __declspec(naked) DECLSPEC_GUARD_SUPPRESS EXCEPTION_DISPOSITIO mov esp, ebp pop ebp ret 0 - } + } } // @@ -243,16 +231,16 @@ EXTERN_C _VCRTIMP __declspec(naked) DECLSPEC_GUARD_SUPPRESS EXCEPTION_DISPOSITIO // These function should be separated out if a change makes // __CxxFrameHandler3 incompatible with __CxxFrameHandler2 // -EXTERN_C _VCRTIMP __declspec(naked) DECLSPEC_GUARD_SUPPRESS EXCEPTION_DISPOSITION __cdecl __CxxFrameHandler3( - /* - EAX=FuncInfo *pFuncInfo, // Static information for this frame - */ - EHExceptionRecord * pExcept, // Information for this exception - EHRegistrationNode * pRN, // Dynamic information for this frame - void* pContext, // Context info (we don't care what's in it) - DispatcherContext * pDC // More dynamic info for this frame (ignored on Intel) +extern "C" _VCRTIMP __declspec(naked) DECLSPEC_GUARD_SUPPRESS EXCEPTION_DISPOSITION __cdecl __CxxFrameHandler3( +/* + EAX=FuncInfo *pFuncInfo, // Static information for this frame +*/ + EHExceptionRecord *pExcept, // Information for this exception + EHRegistrationNode *pRN, // Dynamic information for this frame + void *pContext, // Context info (we don't care what's in it) + DispatcherContext *pDC // More dynamic info for this frame (ignored on Intel) ) { - FuncInfo* pFuncInfo; + FuncInfo *pFuncInfo; EXCEPTION_DISPOSITION result; __asm { @@ -265,17 +253,17 @@ EXTERN_C _VCRTIMP __declspec(naked) DECLSPEC_GUARD_SUPPRESS EXCEPTION_DISPOSITIO push ebx push esi push edi - cld // A bit of paranoia -- Our code-gen assumes this + cld // A bit of paranoia -- Our code-gen assumes this // // Save the extra parameter // mov pFuncInfo, eax - } + } EHTRACE_FMT1("pRN = 0x%p", pRN); - result = __InternalCxxFrameHandler(pExcept, pRN, (PCONTEXT)pContext, pDC, pFuncInfo, 0, nullptr, FALSE); + result = __InternalCxxFrameHandler( pExcept, pRN, (PCONTEXT)pContext, pDC, pFuncInfo, 0, nullptr, FALSE ); EHTRACE_HANDLER_EXIT(result); @@ -287,22 +275,22 @@ EXTERN_C _VCRTIMP __declspec(naked) DECLSPEC_GUARD_SUPPRESS EXCEPTION_DISPOSITIO mov esp, ebp pop ebp ret 0 - } + } } // // __CxxFrameHandler2 - Remove after compiler is updated // -EXTERN_C _VCRTIMP __declspec(naked) DECLSPEC_GUARD_SUPPRESS EXCEPTION_DISPOSITION __cdecl __CxxFrameHandler2( - /* - EAX=FuncInfo *pFuncInfo, // Static information for this frame - */ - EHExceptionRecord * pExcept, // Information for this exception - EHRegistrationNode * pRN, // Dynamic information for this frame - void* pContext, // Context info (we don't care what's in it) - DispatcherContext * pDC // More dynamic info for this frame (ignored on Intel) +extern "C" _VCRTIMP __declspec(naked) DECLSPEC_GUARD_SUPPRESS EXCEPTION_DISPOSITION __cdecl __CxxFrameHandler2( +/* + EAX=FuncInfo *pFuncInfo, // Static information for this frame +*/ + EHExceptionRecord *pExcept, // Information for this exception + EHRegistrationNode *pRN, // Dynamic information for this frame + void *pContext, // Context info (we don't care what's in it) + DispatcherContext *pDC // More dynamic info for this frame (ignored on Intel) ) { - FuncInfo* pFuncInfo; + FuncInfo *pFuncInfo; EXCEPTION_DISPOSITION result; __asm { @@ -315,17 +303,17 @@ EXTERN_C _VCRTIMP __declspec(naked) DECLSPEC_GUARD_SUPPRESS EXCEPTION_DISPOSITIO push ebx push esi push edi - cld // A bit of paranoia -- Our code-gen assumes this + cld // A bit of paranoia -- Our code-gen assumes this // // Save the extra parameter // mov pFuncInfo, eax - } + } EHTRACE_FMT1("pRN = 0x%p", pRN); - result = __InternalCxxFrameHandler(pExcept, pRN, (PCONTEXT)pContext, pDC, pFuncInfo, 0, nullptr, FALSE); + result = __InternalCxxFrameHandler( pExcept, pRN, (PCONTEXT)pContext, pDC, pFuncInfo, 0, nullptr, FALSE ); EHTRACE_HANDLER_EXIT(result); @@ -337,12 +325,13 @@ EXTERN_C _VCRTIMP __declspec(naked) DECLSPEC_GUARD_SUPPRESS EXCEPTION_DISPOSITIO mov esp, ebp pop ebp ret 0 - } + } } -EXTERN_C void __cdecl __except_validate_jump_buffer( - _In_ _JUMP_BUFFER * JumpBuffer -); +extern "C" void +__except_validate_jump_buffer ( + _In_ _JUMP_BUFFER *JumpBuffer + ); ///////////////////////////////////////////////////////////////////////////// // @@ -350,15 +339,15 @@ EXTERN_C void __cdecl __except_validate_jump_buffer( // when setjmp used in same function as C++ EH. // -EXTERN_C DECLSPEC_GUARD_SUPPRESS void __stdcall __CxxLongjmpUnwind( - _JUMP_BUFFER * jbuf +extern "C" DECLSPEC_GUARD_SUPPRESS void __stdcall __CxxLongjmpUnwind( + _JUMP_BUFFER *jbuf ) { __except_validate_jump_buffer(jbuf); - RENAME_EH_EXTERN(__FrameHandler3)::FrameUnwindToState((EHRegistrationNode*)jbuf->Registration, - (DispatcherContext*)nullptr, - (FuncInfo*)jbuf->UnwindData[0], - (__ehstate_t)jbuf->TryLevel); + RENAME_EH_EXTERN(__FrameHandler3)::FrameUnwindToState((EHRegistrationNode *)jbuf->Registration, + (DispatcherContext*)nullptr, + (FuncInfo *)jbuf->UnwindData[0], + (__ehstate_t)jbuf->TryLevel); } ///////////////////////////////////////////////////////////////////////////// @@ -373,20 +362,20 @@ EXTERN_C DECLSPEC_GUARD_SUPPRESS void __stdcall __CxxLongjmpUnwind( // struct CatchGuardRN { - EHRegistrationNode* pNext; // Frame link - void* pFrameHandler; // Frame Handler + EHRegistrationNode *pNext; // Frame link + void *pFrameHandler; // Frame Handler UINT_PTR RandomCookie; // __security_cookie XOR node address - FuncInfo* pFuncInfo; // Static info for subject function - EHRegistrationNode* pRN; // Dynamic info for subject function + FuncInfo *pFuncInfo; // Static info for subject function + EHRegistrationNode *pRN; // Dynamic info for subject function int CatchDepth; // How deeply nested are we? -}; + }; -EXTERN_C EXCEPTION_DISPOSITION __cdecl _CatchGuardHandler(EHExceptionRecord*, CatchGuardRN*, void*, void*); +extern "C" EXCEPTION_DISPOSITION __cdecl _CatchGuardHandler( EHExceptionRecord*, CatchGuardRN *, void *, void * ); -__declspec(guard(ignore)) void* __stdcall _CallCatchBlock2( - EHRegistrationNode* pRN, // Dynamic info of function with catch - FuncInfo* pFuncInfo, // Static info of function with catch - void* handlerAddress, // Code address of handler +__declspec(guard(ignore)) void *_CallCatchBlock2( + EHRegistrationNode *pRN, // Dynamic info of function with catch + FuncInfo *pFuncInfo, // Static info of function with catch + void *handlerAddress, // Code address of handler int CatchDepth, // How deeply nested in catch blocks are we? unsigned long NLGCode ) { @@ -402,27 +391,27 @@ __declspec(guard(ignore)) void* __stdcall _CallCatchBlock2( }; __asm { - mov eax, FS: [0] // Fetch frame list head - mov CGRN.pNext, eax // Link this node in - lea eax, CGRN // Put this node at the head - mov FS : [0] , eax - } + mov eax, FS:[0] // Fetch frame list head + mov CGRN.pNext, eax // Link this node in + lea eax, CGRN // Put this node at the head + mov FS:[0], eax + } // // Call the catch // - void* continuationAddress = _CallSettingFrame(handlerAddress, pRN, NLGCode); + void *continuationAddress = _CallSettingFrame( handlerAddress, pRN, NLGCode ); // // Unlink our registration node // __asm { - mov eax, CGRN.pNext // Get parent node - mov FS : [0] , eax // Put it at the head - } + mov eax, CGRN.pNext // Get parent node + mov FS:[0], eax // Put it at the head + } return continuationAddress; -} + } ///////////////////////////////////////////////////////////////////////////// @@ -437,14 +426,14 @@ __declspec(guard(ignore)) void* __stdcall _CallCatchBlock2( // Does nothing on an unwind. // -EXTERN_C EXCEPTION_DISPOSITION __cdecl _CatchGuardHandler( - EHExceptionRecord * pExcept, // Information for this exception - CatchGuardRN * pRN, // The special marker frame - void* pContext, // Context info (we don't care what's in it) - void* // (ignored) +extern "C" EXCEPTION_DISPOSITION __cdecl _CatchGuardHandler( + EHExceptionRecord *pExcept, // Information for this exception + CatchGuardRN *pRN, // The special marker frame + void *pContext, // Context info (we don't care what's in it) + void * // (ignored) ) { EHTRACE_FMT1("pRN = 0x%p", pRN); - __asm cld; // Our code-gen assumes this + __asm cld; // Our code-gen assumes this // // Validate our registration record, to secure against hacker attacks. @@ -453,17 +442,17 @@ EXTERN_C EXCEPTION_DISPOSITION __cdecl _CatchGuardHandler( __security_check_cookie(pRN->RandomCookie ^ (UINT_PTR)pRN); EXCEPTION_DISPOSITION result = - __InternalCxxFrameHandler(pExcept, - pRN->pRN, - (PCONTEXT)pContext, - nullptr, - pRN->pFuncInfo, - pRN->CatchDepth, - (EHRegistrationNode*)pRN, - FALSE); + __InternalCxxFrameHandler( pExcept, + pRN->pRN, + (PCONTEXT)pContext, + nullptr, + pRN->pFuncInfo, + pRN->CatchDepth, + (EHRegistrationNode*)pRN, + FALSE ); EHTRACE_HANDLER_EXIT(result); return result; -} + } ///////////////////////////////////////////////////////////////////////////// @@ -499,19 +488,19 @@ EXTERN_C EXCEPTION_DISPOSITION __cdecl _CatchGuardHandler( // struct TranslatorGuardRN /*: CatchGuardRN */ { - EHRegistrationNode* pNext; // Frame link - void* pFrameHandler; // Frame Handler + EHRegistrationNode *pNext; // Frame link + void *pFrameHandler; // Frame Handler UINT_PTR RandomCookie; // __security_cookie XOR node address - FuncInfo* pFuncInfo; // Static info for subject function - EHRegistrationNode* pRN; // Dynamic info for subject function + FuncInfo *pFuncInfo; // Static info for subject function + EHRegistrationNode *pRN; // Dynamic info for subject function int CatchDepth; // How deeply nested are we? - EHRegistrationNode* pMarkerRN; // Marker for parent context - void* ESP; // ESP within CallSEHTranslator - void* EBP; // EBP within CallSEHTranslator + EHRegistrationNode *pMarkerRN; // Marker for parent context + void *ESP; // ESP within CallSEHTranslator + void *EBP; // EBP within CallSEHTranslator BOOL DidUnwind; // True if this frame was unwound -}; + }; -EXTERN_C EXCEPTION_DISPOSITION __cdecl _TranslatorGuardHandler(EHExceptionRecord*, TranslatorGuardRN*, void*, void*); +extern "C" EXCEPTION_DISPOSITION __cdecl _TranslatorGuardHandler( EHExceptionRecord*, TranslatorGuardRN *, void *, void * ); #define CSET_SPECIAL ((EHExceptionRecord *)0x123) @@ -522,14 +511,14 @@ BEGIN_PRAGMA_OPTIMIZE_DISABLE("g", DOLPH:3322, "Uninvestigated issue from Visual #pragma comment(linker, "/alternatename:__filter_x86_sse2_floating_point_exception=__filter_x86_sse2_floating_point_exception_default") #endif -__declspec(guard(ignore)) BOOL __stdcall _CallSETranslator( - EHExceptionRecord* pExcept, // The exception to be translated - EHRegistrationNode* pRN, // Dynamic info of function with catch - void* pContext, // Context info (we don't care what's in it) - DispatcherContext* pDC, // More dynamic info of function with catch (ignored) - FuncInfo* pFuncInfo, // Static info of function with catch +__declspec(guard(ignore)) BOOL _CallSETranslator( + EHExceptionRecord *pExcept, // The exception to be translated + EHRegistrationNode *pRN, // Dynamic info of function with catch + void *pContext, // Context info (we don't care what's in it) + DispatcherContext *pDC, // More dynamic info of function with catch (ignored) + FuncInfo *pFuncInfo, // Static info of function with catch int CatchDepth, // How deeply nested in catch blocks are we? - EHRegistrationNode* pMarkerRN // Marker for parent context + EHRegistrationNode *pMarkerRN // Marker for parent context ) { // // Process special case calling request - return address of internal @@ -539,7 +528,7 @@ __declspec(guard(ignore)) BOOL __stdcall _CallSETranslator( __asm { mov eax, offset ExceptionContinuation mov ecx, pRN - mov[ecx], eax + mov [ecx], eax } return TRUE; } @@ -547,16 +536,16 @@ __declspec(guard(ignore)) BOOL __stdcall _CallSETranslator( // // Create and link in our special guard node: // - TranslatorGuardRN TGRN = { nullptr, // Frame link + TranslatorGuardRN TGRN = { nullptr, // Frame link (void*)_TranslatorGuardHandler, __security_cookie ^ (UINT_PTR)&TGRN, pFuncInfo, pRN, CatchDepth, pMarkerRN, - nullptr, // ESP - nullptr, // EBP - FALSE // DidUnwind + nullptr, // ESP + nullptr, // EBP + FALSE // DidUnwind }; __asm { @@ -569,11 +558,11 @@ __declspec(guard(ignore)) BOOL __stdcall _CallSETranslator( // // Link this node in: // - mov eax, FS: [0] // Fetch frame list head + mov eax, FS:[0] // Fetch frame list head mov TGRN.pNext, eax // Link this node in lea eax, TGRN // Put this node at the head - mov FS : [0] , eax - } + mov FS:[0], eax + } #if defined(_M_IX86) && !defined(CRTDLL) && !defined(_M_HYBRID) // Translate exception code for SSE exceptions @@ -614,26 +603,26 @@ __declspec(guard(ignore)) BOOL __stdcall _CallSETranslator( // node was unlinked by RtlUnwind. // __asm { - mov ebx, FS: [0] // Get the node below the (bad) NT marker - mov eax, [ebx] // (it was the target of the unwind) - mov ebx, TGRN.pNext // Get the node we saved (the 'good' marker) - mov[ebx], eax // Link the good node to the unwind target - mov FS : [0] , ebx // Put the good node at the head of the list + mov ebx, FS:[0] // Get the node below the (bad) NT marker + mov eax, [ebx] // (it was the target of the unwind) + mov ebx, TGRN.pNext // Get the node we saved (the 'good' marker) + mov [ebx], eax // Link the good node to the unwind target + mov FS:[0], ebx // Put the good node at the head of the list + } } - } else { // // Translator returned normally or translation wasn't handled. // unlink our registration node and exit // __asm { - mov eax, TGRN.pNext // Get parent node - mov FS : [0] , eax // Put it at the head + mov eax, TGRN.pNext // Get parent node + mov FS:[0], eax // Put it at the head + } } - } return DidTranslate; -} + } END_PRAGMA_OPTIMIZE() @@ -652,11 +641,11 @@ END_PRAGMA_OPTIMIZE() // On unwind: // Sets the DidUnwind flag in the registration node, and returns. // -EXTERN_C EXCEPTION_DISPOSITION __cdecl _TranslatorGuardHandler( - EHExceptionRecord * pExcept, // Information for this exception - TranslatorGuardRN * pRN, // The translator guard frame - void* pContext, // Context info (we don't care what's in it) - void* // (ignored) +extern "C" EXCEPTION_DISPOSITION __cdecl _TranslatorGuardHandler( + EHExceptionRecord *pExcept, // Information for this exception + TranslatorGuardRN *pRN, // The translator guard frame + void *pContext, // Context info (we don't care what's in it) + void * // (ignored) ) { EHTRACE_FMT1("pRN = 0x%p", pRN); __asm cld; // Our code-gen assumes this @@ -668,31 +657,31 @@ EXTERN_C EXCEPTION_DISPOSITION __cdecl _TranslatorGuardHandler( __security_check_cookie(pRN->RandomCookie ^ (UINT_PTR)pRN); if (IS_UNWINDING(PER_FLAGS(pExcept))) - { + { pRN->DidUnwind = TRUE; EHTRACE_HANDLER_EXIT(ExceptionContinueSearch); return ExceptionContinueSearch; - } + } else { // // Check for a handler: // - __InternalCxxFrameHandler(pExcept, pRN->pRN, (PCONTEXT)pContext, nullptr, pRN->pFuncInfo, pRN->CatchDepth, pRN->pMarkerRN, TRUE); + __InternalCxxFrameHandler( pExcept, pRN->pRN, (PCONTEXT)pContext, nullptr, pRN->pFuncInfo, pRN->CatchDepth, pRN->pMarkerRN, TRUE ); if (!pRN->DidUnwind) { // // If no match was found, unwind the context of the translator // - _UnwindNestedFrames((EHRegistrationNode*)pRN, pExcept); - } + _UnwindNestedFrames( (EHRegistrationNode*)pRN, pExcept ); + } // // Transfer control back to establisher: // - void* pContinue; - _CallSETranslator(CSET_SPECIAL, (EHRegistrationNode*)&pContinue, - nullptr, nullptr, nullptr, 0, nullptr); + void *pContinue; + _CallSETranslator(CSET_SPECIAL, (EHRegistrationNode *)&pContinue, + nullptr, nullptr, nullptr, 0, nullptr); EHTRACE_FMT1("Transfer to establisher @ 0x%p", pContinue); __asm { @@ -701,12 +690,12 @@ EXTERN_C EXCEPTION_DISPOSITION __cdecl _TranslatorGuardHandler( mov esp, [ebx]TranslatorGuardRN.ESP mov ebp, [ebx]TranslatorGuardRN.EBP jmp eax - } + } // Unreached. return ExceptionContinueSearch; + } } -} ///////////////////////////////////////////////////////////////////////////// @@ -720,28 +709,28 @@ EXTERN_C EXCEPTION_DISPOSITION __cdecl _TranslatorGuardHandler( // pStart and pEnd get the indices of the range in question // RENAME_EH_EXTERN(__FrameHandler3)::TryBlockMap::IteratorPair RENAME_EH_EXTERN(__FrameHandler3)::GetRangeOfTrysToCheck( - RENAME_EH_EXTERN(__FrameHandler3)::TryBlockMap& TryBlockMap, - __ehstate_t curState, - DispatcherContext* /*pDC*/, - FuncInfo* pFuncInfo, - int CatchDepth + RENAME_EH_EXTERN(__FrameHandler3)::TryBlockMap &TryBlockMap, + __ehstate_t curState, + DispatcherContext * /*pDC*/, + FuncInfo * pFuncInfo, + int CatchDepth ) { - TryBlockMapEntry* pEntry = FUNC_PTRYBLOCK(*pFuncInfo, 0); + TryBlockMapEntry *pEntry = FUNC_PTRYBLOCK(*pFuncInfo, 0); unsigned start = FUNC_NTRYBLOCKS(*pFuncInfo); unsigned end = start; unsigned end1 = end; while (CatchDepth >= 0) { - _VCRT_VERIFY(start != -1); - start--; - if (TBME_HIGH(pEntry[start]) < curState && curState <= TBME_CATCHHIGH(pEntry[start]) - || (start == -1) + _VCRT_VERIFY(start != -1); + start--; + if ( TBME_HIGH(pEntry[start]) < curState && curState <= TBME_CATCHHIGH(pEntry[start]) + || (start == -1) ) { - CatchDepth--; - end = end1; - end1 = start; - } - } + CatchDepth--; + end = end1; + end1 = start; + } + } ++start; // We always overshoot by 1 (we may even wrap around) _VCRT_VERIFY(end <= FUNC_NTRYBLOCKS(*pFuncInfo) && start <= end); @@ -763,13 +752,13 @@ RENAME_EH_EXTERN(__FrameHandler3)::TryBlockMap::IteratorPair RENAME_EH_EXTERN(__ // Returns: // Pointer to the frame info (the first input argument). // -EXTERN_C _VCRTIMP FRAMEINFO * __cdecl _CreateFrameInfo( +extern "C" _VCRTIMP FRAMEINFO * __cdecl _CreateFrameInfo( FRAMEINFO * pFrameInfo, PVOID pExceptionObject ) { pFrameInfo->pExceptionObject = pExceptionObject; - pFrameInfo->pNext = pFrameInfoChain; - pFrameInfoChain = pFrameInfo; + pFrameInfo->pNext = pFrameInfoChain; + pFrameInfoChain = pFrameInfo; return pFrameInfo; } @@ -779,17 +768,16 @@ EXTERN_C _VCRTIMP FRAMEINFO * __cdecl _CreateFrameInfo( // inserted by _CreateFrameInfo. This should be the first frame in the list // (Ideally), but fibers deviate from ideal situation. // -EXTERN_C _VCRTIMP void __cdecl _FindAndUnlinkFrame( +extern "C" _VCRTIMP void __cdecl _FindAndUnlinkFrame( FRAMEINFO * pFrameInfo ) { if (pFrameInfo == pFrameInfoChain) { pFrameInfoChain = pFrameInfo->pNext; return; - } - else { - for (FRAMEINFO* pCurFrameInfo = pFrameInfoChain; - pCurFrameInfo->pNext; - pCurFrameInfo = pCurFrameInfo->pNext) + } else { + for (FRAMEINFO *pCurFrameInfo = pFrameInfoChain; + pCurFrameInfo->pNext; + pCurFrameInfo = pCurFrameInfo->pNext) { if (pFrameInfo == pCurFrameInfo->pNext) { pCurFrameInfo->pNext = pFrameInfo->pNext; @@ -801,5 +789,3 @@ EXTERN_C _VCRTIMP void __cdecl _FindAndUnlinkFrame( // Should never be reached. abort(); } - -#endif diff --git a/src/crt/i386/ulldiv.asm b/src/crt/i386/ulldiv.asm new file mode 100644 index 0000000..3c0586c --- /dev/null +++ b/src/crt/i386/ulldiv.asm @@ -0,0 +1,159 @@ + title ulldiv - unsigned long divide routine +;*** +;ulldiv.asm - unsigned long divide routine +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;Purpose: +; defines the unsigned long divide routine +; __aulldiv +; +;******************************************************************************* + + +.xlist +include vcruntime.inc +include mm.inc +.list + +;*** +;ulldiv - unsigned long divide +; +;Purpose: +; Does a unsigned long divide of the arguments. Arguments are +; not changed. +; +;Entry: +; Arguments are passed on the stack: +; 1st pushed: divisor (QWORD) +; 2nd pushed: dividend (QWORD) +; +;Exit: +; EDX:EAX contains the quotient (dividend/divisor) +; NOTE: this routine removes the parameters from the stack. +; +;Uses: +; ECX +; +;Exceptions: +; +;******************************************************************************* + + CODESEG + +_aulldiv PROC NEAR +.FPO (2, 4, 0, 0, 0, 0) + + push ebx + push esi + +; Set up the local stack and save the index registers. When this is done +; the stack frame will look as follows (assuming that the expression a/b will +; generate a call to uldiv(a, b)): +; +; ----------------- +; | | +; |---------------| +; | | +; |--divisor (b)--| +; | | +; |---------------| +; | | +; |--dividend (a)-| +; | | +; |---------------| +; | return addr** | +; |---------------| +; | EBX | +; |---------------| +; ESP---->| ESI | +; ----------------- +; + +DVND equ [esp + 12] ; stack address of dividend (a) +DVSR equ [esp + 20] ; stack address of divisor (b) + +; +; Now do the divide. First look to see if the divisor is less than 4194304K. +; If so, then we can use a simple algorithm with word divides, otherwise +; things get a little more complex. +; + + mov eax,HIWORD(DVSR) ; check to see if divisor < 4194304K + or eax,eax + jnz short L1 ; nope, gotta do this the hard way + mov ecx,LOWORD(DVSR) ; load divisor + mov eax,HIWORD(DVND) ; load high word of dividend + xor edx,edx + div ecx ; get high order bits of quotient + mov ebx,eax ; save high bits of quotient + mov eax,LOWORD(DVND) ; edx:eax <- remainder:lo word of dividend + div ecx ; get low order bits of quotient + mov edx,ebx ; edx:eax <- quotient hi:quotient lo + jmp short L2 ; restore stack and return + +; +; Here we do it the hard way. Remember, eax contains DVSRHI +; + +L1: + mov ecx,eax ; ecx:ebx <- divisor + mov ebx,LOWORD(DVSR) + mov edx,HIWORD(DVND) ; edx:eax <- dividend + mov eax,LOWORD(DVND) +L3: + shr ecx,1 ; shift divisor right one bit; hi bit <- 0 + rcr ebx,1 + shr edx,1 ; shift dividend right one bit; hi bit <- 0 + rcr eax,1 + or ecx,ecx + jnz short L3 ; loop until divisor < 4194304K + div ebx ; now divide, ignore remainder + mov esi,eax ; save quotient + +; +; We may be off by one, so to check, we will multiply the quotient +; by the divisor and check the result against the original dividend +; Note that we must also check for overflow, which can occur if the +; dividend is close to 2**64 and the quotient is off by 1. +; + + mul dword ptr HIWORD(DVSR) ; QUOT * HIWORD(DVSR) + mov ecx,eax + mov eax,LOWORD(DVSR) + mul esi ; QUOT * LOWORD(DVSR) + add edx,ecx ; EDX:EAX = QUOT * DVSR + jc short L4 ; carry means Quotient is off by 1 + +; +; do long compare here between original dividend and the result of the +; multiply in edx:eax. If original is larger or equal, we are ok, otherwise +; subtract one (1) from the quotient. +; + + cmp edx,HIWORD(DVND) ; compare hi words of result and original + ja short L4 ; if result > original, do subtract + jb short L5 ; if result < original, we are ok + cmp eax,LOWORD(DVND) ; hi words are equal, compare lo words + jbe short L5 ; if less or equal we are ok, else subtract +L4: + dec esi ; subtract 1 from quotient +L5: + xor edx,edx ; edx:eax <- quotient + mov eax,esi + +; +; Just the cleanup left to do. edx:eax contains the quotient. +; Restore the saved registers and return. +; + +L2: + + pop esi + pop ebx + + ret 16 + +_aulldiv ENDP + + end diff --git a/src/crt/i386/ulldvrm.asm b/src/crt/i386/ulldvrm.asm new file mode 100644 index 0000000..c860653 --- /dev/null +++ b/src/crt/i386/ulldvrm.asm @@ -0,0 +1,186 @@ + title ulldvrm - unsigned long divide and remainder routine +;*** +;ulldvrm.asm - unsigned long divide and remainder routine +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;Purpose: +; defines the unsigned long divide and remainder routine +; __aulldvrm +; +;******************************************************************************* + + +.xlist +include vcruntime.inc +include mm.inc +.list + +;*** +;ulldvrm - unsigned long divide and remainder +; +;Purpose: +; Does a unsigned long divide and remainder of the arguments. Arguments +; are not changed. +; +;Entry: +; Arguments are passed on the stack: +; 1st pushed: divisor (QWORD) +; 2nd pushed: dividend (QWORD) +; +;Exit: +; EDX:EAX contains the quotient (dividend/divisor) +; EBX:ECX contains the remainder (divided % divisor) +; NOTE: this routine removes the parameters from the stack. +; +;Uses: +; ECX +; +;Exceptions: +; +;******************************************************************************* + + CODESEG + +_aulldvrm PROC NEAR +.FPO (1, 4, 0, 0, 0, 0) + + push esi + +; Set up the local stack and save the index registers. When this is done +; the stack frame will look as follows (assuming that the expression a/b will +; generate a call to aulldvrm(a, b)): +; +; ----------------- +; | | +; |---------------| +; | | +; |--divisor (b)--| +; | | +; |---------------| +; | | +; |--dividend (a)-| +; | | +; |---------------| +; | return addr** | +; |---------------| +; ESP---->| ESI | +; ----------------- +; + +DVND equ [esp + 8] ; stack address of dividend (a) +DVSR equ [esp + 16] ; stack address of divisor (b) + +; +; Now do the divide. First look to see if the divisor is less than 4194304K. +; If so, then we can use a simple algorithm with word divides, otherwise +; things get a little more complex. +; + + mov eax,HIWORD(DVSR) ; check to see if divisor < 4194304K + or eax,eax + jnz short L1 ; nope, gotta do this the hard way + mov ecx,LOWORD(DVSR) ; load divisor + mov eax,HIWORD(DVND) ; load high word of dividend + xor edx,edx + div ecx ; get high order bits of quotient + mov ebx,eax ; save high bits of quotient + mov eax,LOWORD(DVND) ; edx:eax <- remainder:lo word of dividend + div ecx ; get low order bits of quotient + mov esi,eax ; ebx:esi <- quotient + +; +; Now we need to do a multiply so that we can compute the remainder. +; + mov eax,ebx ; set up high word of quotient + mul dword ptr LOWORD(DVSR) ; HIWORD(QUOT) * DVSR + mov ecx,eax ; save the result in ecx + mov eax,esi ; set up low word of quotient + mul dword ptr LOWORD(DVSR) ; LOWORD(QUOT) * DVSR + add edx,ecx ; EDX:EAX = QUOT * DVSR + jmp short L2 ; complete remainder calculation + +; +; Here we do it the hard way. Remember, eax contains DVSRHI +; + +L1: + mov ecx,eax ; ecx:ebx <- divisor + mov ebx,LOWORD(DVSR) + mov edx,HIWORD(DVND) ; edx:eax <- dividend + mov eax,LOWORD(DVND) +L3: + shr ecx,1 ; shift divisor right one bit; hi bit <- 0 + rcr ebx,1 + shr edx,1 ; shift dividend right one bit; hi bit <- 0 + rcr eax,1 + or ecx,ecx + jnz short L3 ; loop until divisor < 4194304K + div ebx ; now divide, ignore remainder + mov esi,eax ; save quotient + +; +; We may be off by one, so to check, we will multiply the quotient +; by the divisor and check the result against the original dividend +; Note that we must also check for overflow, which can occur if the +; dividend is close to 2**64 and the quotient is off by 1. +; + + mul dword ptr HIWORD(DVSR) ; QUOT * HIWORD(DVSR) + mov ecx,eax + mov eax,LOWORD(DVSR) + mul esi ; QUOT * LOWORD(DVSR) + add edx,ecx ; EDX:EAX = QUOT * DVSR + jc short L4 ; carry means Quotient is off by 1 + +; +; do long compare here between original dividend and the result of the +; multiply in edx:eax. If original is larger or equal, we are ok, otherwise +; subtract one (1) from the quotient. +; + + cmp edx,HIWORD(DVND) ; compare hi words of result and original + ja short L4 ; if result > original, do subtract + jb short L5 ; if result < original, we are ok + cmp eax,LOWORD(DVND) ; hi words are equal, compare lo words + jbe short L5 ; if less or equal we are ok, else subtract +L4: + dec esi ; subtract 1 from quotient + sub eax,LOWORD(DVSR) ; subtract divisor from result + sbb edx,HIWORD(DVSR) +L5: + xor ebx,ebx ; ebx:esi <- quotient + +L2: +; +; Calculate remainder by subtracting the result from the original dividend. +; Since the result is already in a register, we will do the subtract in the +; opposite direction and negate the result. +; + + sub eax,LOWORD(DVND) ; subtract dividend from result + sbb edx,HIWORD(DVND) + neg edx ; otherwise, negate the result + neg eax + sbb edx,0 + +; +; Now we need to get the quotient into edx:eax and the remainder into ebx:ecx. +; + mov ecx,edx + mov edx,ebx + mov ebx,ecx + mov ecx,eax + mov eax,esi +; +; Just the cleanup left to do. edx:eax contains the quotient. +; Restore the saved registers and return. +; + + pop esi + + ret 16 + +_aulldvrm ENDP + + end diff --git a/src/crt/i386/ullrem.asm b/src/crt/i386/ullrem.asm new file mode 100644 index 0000000..117ff92 --- /dev/null +++ b/src/crt/i386/ullrem.asm @@ -0,0 +1,164 @@ + title ullrem - unsigned long remainder routine +;*** +;ullrem.asm - unsigned long remainder routine +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;Purpose: +; defines the unsigned long remainder routine +; __aullrem +; +;******************************************************************************* + + +.xlist +include vcruntime.inc +include mm.inc +.list + +;*** +;ullrem - unsigned long remainder +; +;Purpose: +; Does a unsigned long remainder of the arguments. Arguments are +; not changed. +; +;Entry: +; Arguments are passed on the stack: +; 1st pushed: divisor (QWORD) +; 2nd pushed: dividend (QWORD) +; +;Exit: +; EDX:EAX contains the remainder (dividend%divisor) +; NOTE: this routine removes the parameters from the stack. +; +;Uses: +; ECX +; +;Exceptions: +; +;******************************************************************************* + + CODESEG + +_aullrem PROC NEAR +.FPO (1, 4, 0, 0, 0, 0) + + push ebx + +; Set up the local stack and save the index registers. When this is done +; the stack frame will look as follows (assuming that the expression a%b will +; generate a call to ullrem(a, b)): +; +; ----------------- +; | | +; |---------------| +; | | +; |--divisor (b)--| +; | | +; |---------------| +; | | +; |--dividend (a)-| +; | | +; |---------------| +; | return addr** | +; |---------------| +; ESP---->| EBX | +; ----------------- +; + +DVND equ [esp + 8] ; stack address of dividend (a) +DVSR equ [esp + 16] ; stack address of divisor (b) + +; Now do the divide. First look to see if the divisor is less than 4194304K. +; If so, then we can use a simple algorithm with word divides, otherwise +; things get a little more complex. +; + + mov eax,HIWORD(DVSR) ; check to see if divisor < 4194304K + or eax,eax + jnz short L1 ; nope, gotta do this the hard way + mov ecx,LOWORD(DVSR) ; load divisor + mov eax,HIWORD(DVND) ; load high word of dividend + xor edx,edx + div ecx ; edx <- remainder, eax <- quotient + mov eax,LOWORD(DVND) ; edx:eax <- remainder:lo word of dividend + div ecx ; edx <- final remainder + mov eax,edx ; edx:eax <- remainder + xor edx,edx + jmp short L2 ; restore stack and return + +; +; Here we do it the hard way. Remember, eax contains DVSRHI +; + +L1: + mov ecx,eax ; ecx:ebx <- divisor + mov ebx,LOWORD(DVSR) + mov edx,HIWORD(DVND) ; edx:eax <- dividend + mov eax,LOWORD(DVND) +L3: + shr ecx,1 ; shift divisor right one bit; hi bit <- 0 + rcr ebx,1 + shr edx,1 ; shift dividend right one bit; hi bit <- 0 + rcr eax,1 + or ecx,ecx + jnz short L3 ; loop until divisor < 4194304K + div ebx ; now divide, ignore remainder + +; +; We may be off by one, so to check, we will multiply the quotient +; by the divisor and check the result against the original dividend +; Note that we must also check for overflow, which can occur if the +; dividend is close to 2**64 and the quotient is off by 1. +; + + mov ecx,eax ; save a copy of quotient in ECX + mul dword ptr HIWORD(DVSR) + xchg ecx,eax ; put partial product in ECX, get quotient in EAX + mul dword ptr LOWORD(DVSR) + add edx,ecx ; EDX:EAX = QUOT * DVSR + jc short L4 ; carry means Quotient is off by 1 + +; +; do long compare here between original dividend and the result of the +; multiply in edx:eax. If original is larger or equal, we're ok, otherwise +; subtract the original divisor from the result. +; + + cmp edx,HIWORD(DVND) ; compare hi words of result and original + ja short L4 ; if result > original, do subtract + jb short L5 ; if result < original, we're ok + cmp eax,LOWORD(DVND) ; hi words are equal, compare lo words + jbe short L5 ; if less or equal we're ok, else subtract +L4: + sub eax,LOWORD(DVSR) ; subtract divisor from result + sbb edx,HIWORD(DVSR) +L5: + +; +; Calculate remainder by subtracting the result from the original dividend. +; Since the result is already in a register, we will perform the subtract in +; the opposite direction and negate the result to make it positive. +; + + sub eax,LOWORD(DVND) ; subtract original dividend from result + sbb edx,HIWORD(DVND) + neg edx ; and negate it + neg eax + sbb edx,0 + +; +; Just the cleanup left to do. dx:ax contains the remainder. +; Restore the saved registers and return. +; + +L2: + + pop ebx + + ret 16 + +_aullrem ENDP + + end diff --git a/src/crt/i386/ullshr.asm b/src/crt/i386/ullshr.asm new file mode 100644 index 0000000..02125ca --- /dev/null +++ b/src/crt/i386/ullshr.asm @@ -0,0 +1,81 @@ + title ullshr - long shift right +;*** +;ullshr.asm - long shift right +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;Purpose: +; define unsigned long shift right routine +; __aullshr +; +;******************************************************************************* + + +.xlist +include vcruntime.inc +include mm.inc +.list + +;*** +;ullshr - long shift right +; +;Purpose: +; Does a unsigned Long Shift Right +; Shifts a long right any number of bits. +; +;Entry: +; EDX:EAX - long value to be shifted +; CL - number of bits to shift by +; +;Exit: +; EDX:EAX - shifted value +; +;Uses: +; CL is destroyed. +; +;Exceptions: +; +;******************************************************************************* + + CODESEG + +_aullshr PROC NEAR +.FPO (0, 0, 0, 0, 0, 0) + +; +; Handle shifts of 64 bits or more (if shifting 64 bits or more, the result +; depends only on the high order bit of edx). +; + cmp cl,64 + jae short RETZERO + +; +; Handle shifts of between 0 and 31 bits +; + cmp cl, 32 + jae short MORE32 + shrd eax,edx,cl + shr edx,cl + ret + +; +; Handle shifts of between 32 and 63 bits +; +MORE32: + mov eax,edx + xor edx,edx + and cl,31 + shr eax,cl + ret + +; +; return 0 in edx:eax +; +RETZERO: + xor eax,eax + xor edx,edx + ret + +_aullshr ENDP + + end diff --git a/src/crt/i386/vcruntime.inc b/src/crt/i386/vcruntime.inc new file mode 100644 index 0000000..cae28f3 --- /dev/null +++ b/src/crt/i386/vcruntime.inc @@ -0,0 +1,326 @@ +;*** +;vcruntime.inc - multi-model assembly macros for interfacing to HLLs +; +; Copyright (c) Microsoft Corporation. All rights reserved. +; +;Purpose: +; This file defines the current memory model being used. +; +;******************************************************************************* + +;============================================================================== +; +;Use the following defines to control processor/segment model +; +; default is -DI86 -Dmem_S +; +;============================================================================== +; +;The following variables are defined by this file: +; cpu 86, 286, or 386 +; mmodel english name of the memory model, i.e. "Medium" +; ISIZE, LSIZE, NSIZE size of ints, longs, shorts +; FLTSIZE, DBLSIZE, LDBLSIZE size of float, double, long double +; +;The following macros allow easy writing of combined 16/32 bit code: +; +; 16/32 bit registers: +; rax, rbx, rcx, rdx, expand to native registers (rax = eax or ax) +; rsi, rdi, rsp, rbp +; CBI convert byte to int (al to rax) +; Numeric type instructions: +; IWORD, LWORD, SWORD data type of int, long, short +; DFLOAT, DDOUBLE, DLDOUBLE define float, double, long double +; +;The following utility macros are provided: +; codeseg define/declare code segment +; error stop assembly with message +; display display a message, unless QUIET defined +; _if cond assemble instruction only if cond is TRUE +; _ife cond assemble instruction only if cond is FALSE +; _ifd symbol assemble instruction only if symbol defined +; _ifnd symbol assemble instruction only if symbol not defined +; +; lab LabelName assembles to "LabelName:" If DEBUG is defined +; LabelName is made public +; +; JS* (ex. JSE,JSZ,JSB ...) assemble to "je short","jz short","jb short" +; +; Cmacro look alikes +; static* Name, InitialValue, Repeat defines a static variable of type * +; global* Name, InitialValue, Repeat defines a global variable of type * +; label* Name, {PUBLIC,PASCAL,C} defines a label of type * +; +;============================================================================== + +; error - Output message and generate error + +error MACRO msg +if2 ;; only on pass 2 can we generate errors + %out ********************************************************** + %out *** E r r o r -- msg + %out ********************************************************** + .err +endif + ENDM + +; display msg - Output message unless QUIET defined + +display MACRO msg +ifndef QUIET ;; only when quiet flag not set +if1 ;; and on pass 1, then display message + %out msg +endif +endif + ENDM + +; One line conditionals: +; here we create the capability of writing code lines like +; +; _if sizeD as opposed to if sizeD +; push ds +; endif + +_if MACRO cond,text + if cond + text + endif + ENDM + +_ife MACRO cond,text + ife cond + text + endif + ENDM + +_ifd MACRO cond,text + ifdef cond + text + endif + ENDM + +_ifnd MACRO cond,text + ifndef cond + text + endif + ENDM + +; Process processor arguments + + .686 + +; Set memory model + + .model flat, C + +; Define registers: +; Instead of using the "word" registers directly, we will use a set of +; text equates. This will allow you to use the native word size instead of +; hard coded to 16 bit words. We also have some instruction equates for +; instruction with the register type hard coded in. + + rax equ + rbx equ + rcx equ + rdx equ + rdi equ + rsi equ + rbp equ + rsp equ + + CBI equ ; convert byte to int (al to rax) + +; The next set of equates deals with the size of SHORTS, INTS, LONGS, and +; pointers. + + ; parameters and locals + IWORD equ + + ; sizes for fixing SP, stepping through tables, etc. + ISIZE equ 4 + +; Float/double definitions +; (currently the same for 16- and 32-bit segments) + +FLTSIZE equ 4 ; float +DBLSIZE equ 8 ; double +LDBLSIZE equ 10 ; long double + +DFLOAT equ
+DDOUBLE equ +DLDOUBLE equ
+ +; codeseg - Define/declare the standard code segment. Maps to the proper +; form of the .code directive. +; +; Input: +; +; Output: +; .code _TEXT ; for large code models +; .code ; for small code models +; assume cs:FLAT ; for 386 +; assume ds:FLAT ; for 386 +; assume es:FLAT ; for 386 +; assume ss:FLAT ; for 386 +; + +codeseg MACRO + + .code + + assume ds:FLAT + assume es:FLAT + assume ss:FLAT + + ENDM + +; Define named constants for ISA levels. + +__ISA_AVAILABLE_X86 equ 0 +__ISA_AVAILABLE_SSE2 equ 1 +__ISA_AVAILABLE_SSE42 equ 2 +__ISA_AVAILABLE_AVX equ 3 +__ISA_AVAILABLE_ENFSTRG equ 4 +__ISA_AVAILABLE_AVX2 equ 5 +__ISA_AVAILABLE_AVX512 equ 6 + +; Define named constants for favor + +__FAVOR_ATOM equ 0 +__FAVOR_ENFSTRG equ 1 + +;*************************************************************** +;* +;* Debug lab macro +;* +;*************************************************************** + +lab macro name +ifdef DEBUG + public pascal name ;; define label public for Symdeb +endif +name: + endm + + +;*************************************************************** +;* +;* Conditional jump short macros +;* +;*************************************************************** + + + irp x, +JS&x equ + endm + + +;*************************************************************** +;* +;* Global data definition macros +;* +;* Usage: +;* globalI Name, InitialValue, Repeat +;* +;*************************************************************** + + +MakeGlobal macro suffix, DataType ;; makes all of the global* macros + +global&suffix macro name, data, rep +public name +ifb + _repeat = 1 +else + _repeat = (rep) +endif + +name &DataType _repeat dup( data ) + endm + + endm + + + MakeGlobal T, dt ; globalT + MakeGlobal Q, dq ; globalQ + MakeGlobal D, dd ; globalD + MakeGlobal W, dw ; globalW + MakeGlobal B, db ; globalB + +;*************************************************************** +;* +;* Static data definition macros +;* +;* Usage: +;* staticI Name, InitialValue, Repeat +;* +;*************************************************************** + + +MakeStatic macro suffix, DataType ;; makes all of the static* macros + +static&suffix macro name, data, rep + +ifdef DEBUG + public pascal name ;; make statics public if DEBUG +endif + +ifb + _repeat = 1 +else + _repeat = (rep) +endif + +name &DataType _repeat dup( data ) + endm + + endm + + + MakeStatic T, dt ; staticT + MakeStatic Q, dq ; staticQ + MakeStatic D, dd ; staticD + MakeStatic W, dw ; staticW + MakeStatic B, db ; staticB + +;*************************************************************** +;* +;* Label definition macros +;* +;* Usage: +;* labelI Name, {PUBLIC, PASCAL, C} +;* +;*************************************************************** + +__MakePublic macro name, option ;; decides if a label should be +ifidni