diff --git a/vendor/POCO/.gitignore b/vendor/POCO/.gitignore index a326021e..b334caf2 100644 --- a/vendor/POCO/.gitignore +++ b/vendor/POCO/.gitignore @@ -144,3 +144,10 @@ cmake-build/ *.bak stage/ releases/ + +# vim # +####### +*.orig +*.swp +*.vim +tags diff --git a/vendor/POCO/ActiveRecord/ActiveRecord_vs170.sln b/vendor/POCO/ActiveRecord/ActiveRecord_vs170.sln new file mode 100644 index 00000000..c87e3d4d --- /dev/null +++ b/vendor/POCO/ActiveRecord/ActiveRecord_vs170.sln @@ -0,0 +1,204 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ActiveRecord", "ActiveRecord_vs170.vcxproj", "{CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs170.vcxproj", "{16B8C4E7-6F29-4910-9350-848730F9EF77}" + ProjectSection(ProjectDependencies) = postProject + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E} = {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Compiler", "Compiler\Compiler_vs170.vcxproj", "{84DD1CB5-4735-478A-B48E-5E4858F0E831}" + ProjectSection(ProjectDependencies) = postProject + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E} = {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E} + {16B8C4E7-6F29-4910-9350-848730F9EF77} = {16B8C4E7-6F29-4910-9350-848730F9EF77} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|ARM64 = debug_shared|ARM64 + release_shared|ARM64 = release_shared|ARM64 + debug_static_mt|ARM64 = debug_static_mt|ARM64 + release_static_mt|ARM64 = release_static_mt|ARM64 + debug_static_md|ARM64 = debug_static_md|ARM64 + release_static_md|ARM64 = release_static_md|ARM64 + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_shared|ARM64.Build.0 = debug_shared|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_shared|ARM64.ActiveCfg = release_shared|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_shared|ARM64.Build.0 = release_shared|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_shared|ARM64.Deploy.0 = release_shared|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_md|ARM64.Build.0 = release_static_md|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_shared|Win32.Build.0 = release_shared|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_shared|x64.Build.0 = debug_shared|x64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_shared|x64.ActiveCfg = release_shared|x64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_shared|x64.Build.0 = release_shared|x64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_shared|x64.Deploy.0 = release_shared|x64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_md|x64.Build.0 = release_static_md|x64 + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_shared|ARM64.Build.0 = debug_shared|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_shared|ARM64.ActiveCfg = release_shared|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_shared|ARM64.Build.0 = release_shared|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_shared|ARM64.Deploy.0 = release_shared|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_md|ARM64.Build.0 = release_static_md|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_shared|Win32.Build.0 = release_shared|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_shared|x64.Build.0 = debug_shared|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_shared|x64.ActiveCfg = release_shared|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_shared|x64.Build.0 = release_shared|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_shared|x64.Deploy.0 = release_shared|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_md|x64.Build.0 = release_static_md|x64 + {16B8C4E7-6F29-4910-9350-848730F9EF77}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|ARM64.Build.0 = debug_shared|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|ARM64.ActiveCfg = release_shared|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|ARM64.Build.0 = release_shared|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|ARM64.Deploy.0 = release_shared|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|ARM64.Build.0 = release_static_md|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|Win32.Build.0 = release_shared|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|x64.Build.0 = debug_shared|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|x64.ActiveCfg = release_shared|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|x64.Build.0 = release_shared|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|x64.Deploy.0 = release_shared|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|x64.Build.0 = release_static_md|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/vendor/POCO/ActiveRecord/ActiveRecord_vs170.vcxproj b/vendor/POCO/ActiveRecord/ActiveRecord_vs170.vcxproj new file mode 100644 index 00000000..d0af33fa --- /dev/null +++ b/vendor/POCO/ActiveRecord/ActiveRecord_vs170.vcxproj @@ -0,0 +1,846 @@ + + + + + debug_shared + ARM64 + + + debug_shared + Win32 + + + debug_shared + x64 + + + debug_static_md + ARM64 + + + debug_static_md + Win32 + + + debug_static_md + x64 + + + debug_static_mt + ARM64 + + + debug_static_mt + Win32 + + + debug_static_mt + x64 + + + release_shared + ARM64 + + + release_shared + Win32 + + + release_shared + x64 + + + release_static_md + ARM64 + + + release_static_md + Win32 + + + release_static_md + x64 + + + release_static_mt + ARM64 + + + release_static_mt + Win32 + + + release_static_mt + x64 + + + + 17.0 + ActiveRecord + {CCC0A578-E065-4CBA-BB8D-F02BB2C24E7E} + ActiveRecord + Win32Proj + + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>17.0.32505.173 + PocoActiveRecordA64d + PocoActiveRecordmdd + PocoActiveRecordmtd + PocoActiveRecordA64 + PocoActiveRecordmd + PocoActiveRecordmt + PocoActiveRecordd + PocoActiveRecordmdd + PocoActiveRecordmtd + PocoActiveRecord + PocoActiveRecordmd + PocoActiveRecordmt + PocoActiveRecord64d + PocoActiveRecordmdd + PocoActiveRecordmtd + PocoActiveRecord64 + PocoActiveRecordmd + PocoActiveRecordmt + + + ..\binA64\ + objA64\ActiveRecord\$(Configuration)\ + true + + + ..\binA64\ + objA64\ActiveRecord\$(Configuration)\ + false + + + ..\libA64\ + objA64\ActiveRecord\$(Configuration)\ + + + ..\libA64\ + objA64\ActiveRecord\$(Configuration)\ + + + ..\libA64\ + objA64\ActiveRecord\$(Configuration)\ + + + ..\libA64\ + objA64\ActiveRecord\$(Configuration)\ + + + ..\bin\ + obj\ActiveRecord\$(Configuration)\ + true + + + ..\bin\ + obj\ActiveRecord\$(Configuration)\ + false + + + ..\lib\ + obj\ActiveRecord\$(Configuration)\ + + + ..\lib\ + obj\ActiveRecord\$(Configuration)\ + + + ..\lib\ + obj\ActiveRecord\$(Configuration)\ + + + ..\lib\ + obj\ActiveRecord\$(Configuration)\ + + + ..\bin64\ + obj64\ActiveRecord\$(Configuration)\ + true + + + ..\bin64\ + obj64\ActiveRecord\$(Configuration)\ + false + + + ..\lib64\ + obj64\ActiveRecord\$(Configuration)\ + + + ..\lib64\ + obj64\ActiveRecord\$(Configuration)\ + + + ..\lib64\ + obj64\ActiveRecord\$(Configuration)\ + + + ..\lib64\ + obj64\ActiveRecord\$(Configuration)\ + + + + Disabled + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;ActiveRecordLib_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + ..\binA64\PocoActiveRecordA64d.dll + true + true + ..\binA64\PocoActiveRecordA64d.pdb + ..\libA64;%(AdditionalLibraryDirectories) + Console + ..\libA64\PocoActiveRecordd.lib + MachineARM64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;ActiveRecordLib_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + ..\binA64\PocoActiveRecordA64.dll + true + false + ..\libA64;%(AdditionalLibraryDirectories) + Console + true + true + ..\libA64\PocoActiveRecord.lib + MachineARM64 + + + + + Disabled + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\libA64\PocoActiveRecordmtd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\libA64\PocoActiveRecordmtd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + ..\libA64\PocoActiveRecordmt.lib + + + + + Disabled + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\libA64\PocoActiveRecordmdd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\libA64\PocoActiveRecordmdd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + ..\libA64\PocoActiveRecordmd.lib + + + + + Disabled + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;ActiveRecordLib_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + ..\bin\PocoActiveRecordd.dll + true + true + ..\bin\PocoActiveRecordd.pdb + ..\lib;%(AdditionalLibraryDirectories) + Console + ..\lib\PocoActiveRecordd.lib + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;ActiveRecordLib_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + ..\bin\PocoActiveRecord.dll + true + false + ..\lib;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib\PocoActiveRecord.lib + MachineX86 + + + + + Disabled + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\lib\PocoActiveRecordmtd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\lib\PocoActiveRecordmtd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + ..\lib\PocoActiveRecordmt.lib + + + + + Disabled + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\lib\PocoActiveRecordmdd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\lib\PocoActiveRecordmdd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + ..\lib\PocoActiveRecordmd.pdb + Level3 + + Default + true + + + ..\lib\PocoActiveRecordmd.lib + + + + + Disabled + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;ActiveRecordLib_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + ..\bin64\PocoActiveRecord64d.dll + true + true + ..\bin64\PocoActiveRecord64d.pdb + ..\lib64;%(AdditionalLibraryDirectories) + Console + ..\lib64\PocoActiveRecordd.lib + MachineX64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;ActiveRecordLib_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + ..\bin64\PocoActiveRecord64.dll + true + false + ..\lib64;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib64\PocoActiveRecord.lib + MachineX64 + + + + + Disabled + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\lib64\PocoActiveRecordmtd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\lib64\PocoActiveRecordmtd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + ..\lib64\PocoActiveRecordmt.lib + + + + + Disabled + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\lib64\PocoActiveRecordmdd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\lib64\PocoActiveRecordmdd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include; ..\Data\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + ..\lib64\PocoActiveRecordmd.lib + + + + + + + + + + + + + true + + + true + + + true + + + true + + + + + true + true + true + true + true + true + true + true + true + true + true + true + + + + + diff --git a/vendor/POCO/ActiveRecord/ActiveRecord_vs170.vcxproj.filters b/vendor/POCO/ActiveRecord/ActiveRecord_vs170.vcxproj.filters new file mode 100644 index 00000000..f036fdfe --- /dev/null +++ b/vendor/POCO/ActiveRecord/ActiveRecord_vs170.vcxproj.filters @@ -0,0 +1,51 @@ + + + + + {9cca8535-cf0a-4522-9de3-ea3b7be7f991} + + + {bd01a2c1-30a0-4c11-b18c-70c3151b477b} + + + {5e2b163d-82cb-47c5-9df3-11bdd30c15c0} + + + + + ActiveRecord\Header Files + + + ActiveRecord\Header Files + + + ActiveRecord\Header Files + + + ActiveRecord\Header Files + + + ActiveRecord\Header Files + + + ActiveRecord\Header Files + + + + + ActiveRecord\Source Files + + + ActiveRecord\Source Files + + + ActiveRecord\Source Files + + + ActiveRecord\Source Files + + + + + + \ No newline at end of file diff --git a/vendor/POCO/ActiveRecord/Compiler/CMakeLists.txt b/vendor/POCO/ActiveRecord/Compiler/CMakeLists.txt index 06749c1c..40a8b23a 100644 --- a/vendor/POCO/ActiveRecord/Compiler/CMakeLists.txt +++ b/vendor/POCO/ActiveRecord/Compiler/CMakeLists.txt @@ -21,5 +21,6 @@ install( LIBRARY DESTINATION lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX} RUNTIME DESTINATION bin + BUNDLE DESTINATION bin INCLUDES DESTINATION include ) diff --git a/vendor/POCO/ActiveRecord/Compiler/Compiler.progen b/vendor/POCO/ActiveRecord/Compiler/Compiler.progen index 14d6ad15..624f293a 100644 --- a/vendor/POCO/ActiveRecord/Compiler/Compiler.progen +++ b/vendor/POCO/ActiveRecord/Compiler/Compiler.progen @@ -12,5 +12,5 @@ vc.project.compiler.defines = vc.project.compiler.defines.shared = vc.project.compiler.defines.debug_shared = ${vc.project.compiler.defines.shared} vc.project.compiler.defines.release_shared = ${vc.project.compiler.defines.shared} -vc.project.linker.dependencies = +vc.project.linker.dependencies = vc.solution.create = true diff --git a/vendor/POCO/ActiveRecord/Compiler/Compiler_vs170.sln b/vendor/POCO/ActiveRecord/Compiler/Compiler_vs170.sln new file mode 100644 index 00000000..820d34cc --- /dev/null +++ b/vendor/POCO/ActiveRecord/Compiler/Compiler_vs170.sln @@ -0,0 +1,85 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Compiler", "Compiler_vs170.vcxproj", "{84DD1CB5-4735-478A-B48E-5E4858F0E831}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|ARM64 = debug_shared|ARM64 + release_shared|ARM64 = release_shared|ARM64 + debug_static_mt|ARM64 = debug_static_mt|ARM64 + release_static_mt|ARM64 = release_static_mt|ARM64 + debug_static_md|ARM64 = debug_static_md|ARM64 + release_static_md|ARM64 = release_static_md|ARM64 + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|ARM64.Build.0 = debug_shared|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|ARM64.ActiveCfg = release_shared|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|ARM64.Build.0 = release_shared|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|ARM64.Deploy.0 = release_shared|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|ARM64.Build.0 = release_static_md|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|Win32.Build.0 = release_shared|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|x64.Build.0 = debug_shared|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|x64.ActiveCfg = release_shared|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|x64.Build.0 = release_shared|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_shared|x64.Deploy.0 = release_shared|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|x64.Build.0 = release_static_md|x64 + {84DD1CB5-4735-478A-B48E-5E4858F0E831}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/vendor/POCO/ActiveRecord/Compiler/Compiler_vs170.vcxproj b/vendor/POCO/ActiveRecord/Compiler/Compiler_vs170.vcxproj new file mode 100644 index 00000000..02a5053a --- /dev/null +++ b/vendor/POCO/ActiveRecord/Compiler/Compiler_vs170.vcxproj @@ -0,0 +1,912 @@ + + + + + debug_shared + ARM64 + + + debug_shared + Win32 + + + debug_shared + x64 + + + debug_static_md + ARM64 + + + debug_static_md + Win32 + + + debug_static_md + x64 + + + debug_static_mt + ARM64 + + + debug_static_mt + Win32 + + + debug_static_mt + x64 + + + release_shared + ARM64 + + + release_shared + Win32 + + + release_shared + x64 + + + release_static_md + ARM64 + + + release_static_md + Win32 + + + release_static_md + x64 + + + release_static_mt + ARM64 + + + release_static_mt + Win32 + + + release_static_mt + x64 + + + + 17.0 + Compiler + {84DD1CB5-4735-478A-B48E-5E4858F0E831} + Compiler + Win32Proj + + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>17.0.32505.173 + arcd + arcd + arcd + arc + arc + arc + arcd + arcd + arcd + arc + arc + arc + arcd + arcd + arcd + arc + arc + arc + + + binA64\ + objA64\Compiler\$(Configuration)\ + true + + + binA64\ + objA64\Compiler\$(Configuration)\ + false + + + binA64\static_mt\ + objA64\Compiler\$(Configuration)\ + true + + + binA64\static_mt\ + objA64\Compiler\$(Configuration)\ + false + + + binA64\static_md\ + objA64\Compiler\$(Configuration)\ + true + + + binA64\static_md\ + objA64\Compiler\$(Configuration)\ + false + + + bin\ + obj\Compiler\$(Configuration)\ + true + + + bin\ + obj\Compiler\$(Configuration)\ + false + + + bin\static_mt\ + obj\Compiler\$(Configuration)\ + true + + + bin\static_mt\ + obj\Compiler\$(Configuration)\ + false + + + bin\static_md\ + obj\Compiler\$(Configuration)\ + true + + + bin\static_md\ + obj\Compiler\$(Configuration)\ + false + + + bin64\ + obj64\Compiler\$(Configuration)\ + true + + + bin64\ + obj64\Compiler\$(Configuration)\ + false + + + bin64\static_mt\ + obj64\Compiler\$(Configuration)\ + true + + + bin64\static_mt\ + obj64\Compiler\$(Configuration)\ + false + + + bin64\static_md\ + obj64\Compiler\$(Configuration)\ + true + + + bin64\static_md\ + obj64\Compiler\$(Configuration)\ + false + + + + Disabled + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + binA64\arcd.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + true + true + binA64\arcd.pdb + Console + MachineARM64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + binA64\arc.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineARM64 + + + + + Disabled + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + binA64\static_mt\arcd.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + true + true + binA64\static_mt\arcd.pdb + Console + MachineARM64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + binA64\static_mt\arc.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineARM64 + + + + + Disabled + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + binA64\static_md\arcd.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + true + true + binA64\static_md\arcd.pdb + Console + MachineARM64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + binA64\static_md\arc.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineARM64 + + + + + Disabled + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + bin\arcd.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\arcd.pdb + Console + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + bin\arc.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + bin\static_mt\arcd.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_mt\arcd.pdb + Console + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + bin\static_mt\arc.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + bin\static_md\arcd.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\arcd.pdb + Console + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + bin\static_md\arc.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + bin64\arcd.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\arcd.pdb + Console + MachineX64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + bin64\arc.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + bin64\static_mt\arcd.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_mt\arcd.pdb + Console + MachineX64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + bin64\static_mt\arc.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + bin64\static_md\arcd.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\arcd.pdb + Console + MachineX64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\..\Foundation\include;..\..\XML\include;..\..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + bin64\static_md\arc.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + true + + + true + + + true + + + true + + + true + + + + + + + + + + + + diff --git a/vendor/POCO/ActiveRecord/Compiler/Compiler_vs170.vcxproj.filters b/vendor/POCO/ActiveRecord/Compiler/Compiler_vs170.vcxproj.filters new file mode 100644 index 00000000..859cec6e --- /dev/null +++ b/vendor/POCO/ActiveRecord/Compiler/Compiler_vs170.vcxproj.filters @@ -0,0 +1,45 @@ + + + + + {c74cd999-577b-420f-80c1-07d02f70b342} + + + {158349db-4632-4610-8c5d-dc54c381eaac} + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + \ No newline at end of file diff --git a/vendor/POCO/ActiveRecord/Compiler/src/Compiler.cpp b/vendor/POCO/ActiveRecord/Compiler/src/Compiler.cpp index 140f24be..f5bd06fa 100644 --- a/vendor/POCO/ActiveRecord/Compiler/src/Compiler.cpp +++ b/vendor/POCO/ActiveRecord/Compiler/src/Compiler.cpp @@ -78,7 +78,7 @@ protected: helpFormatter.setHeader( "\n" "The POCO C++ Libraries ActiveRecord ORM Compiler.\n" - "Copyright (c) 2020-2021 by Applied Informatics Software Engineering GmbH.\n" + "Copyright (c) 2020-2022 by Applied Informatics Software Engineering GmbH.\n" "All rights reserved.\n\n" "This program generates C++ source code from an ActiveRecord " "XML definition. " diff --git a/vendor/POCO/ActiveRecord/testsuite/TestSuite_vs170.vcxproj b/vendor/POCO/ActiveRecord/testsuite/TestSuite_vs170.vcxproj new file mode 100644 index 00000000..12f53637 --- /dev/null +++ b/vendor/POCO/ActiveRecord/testsuite/TestSuite_vs170.vcxproj @@ -0,0 +1,917 @@ + + + + + debug_shared + ARM64 + + + debug_shared + Win32 + + + debug_shared + x64 + + + debug_static_md + ARM64 + + + debug_static_md + Win32 + + + debug_static_md + x64 + + + debug_static_mt + ARM64 + + + debug_static_mt + Win32 + + + debug_static_mt + x64 + + + release_shared + ARM64 + + + release_shared + Win32 + + + release_shared + x64 + + + release_static_md + ARM64 + + + release_static_md + Win32 + + + release_static_md + x64 + + + release_static_mt + ARM64 + + + release_static_mt + Win32 + + + release_static_mt + x64 + + + + 17.0 + TestSuite + {16B8C4E7-6F29-4910-9350-848730F9EF77} + TestSuite + Win32Proj + + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>17.0.32505.173 + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + + + binA64\ + objA64\TestSuite\$(Configuration)\ + true + + + binA64\ + objA64\TestSuite\$(Configuration)\ + false + + + binA64\static_mt\ + objA64\TestSuite\$(Configuration)\ + true + + + binA64\static_mt\ + objA64\TestSuite\$(Configuration)\ + false + + + binA64\static_md\ + objA64\TestSuite\$(Configuration)\ + true + + + binA64\static_md\ + objA64\TestSuite\$(Configuration)\ + false + + + bin\ + obj\TestSuite\$(Configuration)\ + true + + + bin\ + obj\TestSuite\$(Configuration)\ + false + + + bin\static_mt\ + obj\TestSuite\$(Configuration)\ + true + + + bin\static_mt\ + obj\TestSuite\$(Configuration)\ + false + + + bin\static_md\ + obj\TestSuite\$(Configuration)\ + true + + + bin\static_md\ + obj\TestSuite\$(Configuration)\ + false + + + bin64\ + obj64\TestSuite\$(Configuration)\ + true + + + bin64\ + obj64\TestSuite\$(Configuration)\ + false + + + bin64\static_mt\ + obj64\TestSuite\$(Configuration)\ + true + + + bin64\static_mt\ + obj64\TestSuite\$(Configuration)\ + false + + + bin64\static_md\ + obj64\TestSuite\$(Configuration)\ + true + + + bin64\static_md\ + obj64\TestSuite\$(Configuration)\ + false + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitd.lib;%(AdditionalDependencies) + binA64\TestSuited.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + true + true + binA64\TestSuited.pdb + Console + MachineARM64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + CppUnit.lib;%(AdditionalDependencies) + binA64\TestSuite.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineARM64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitmtd.lib;iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + binA64\static_mt\TestSuited.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + true + true + binA64\static_mt\TestSuited.pdb + Console + MachineARM64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + CppUnitmt.lib;iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + binA64\static_mt\TestSuite.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineARM64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitmdd.lib;iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + binA64\static_md\TestSuited.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + true + true + binA64\static_md\TestSuited.pdb + Console + MachineARM64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + CppUnitmd.lib;iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + binA64\static_md\TestSuite.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineARM64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitd.lib;%(AdditionalDependencies) + bin\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\TestSuited.pdb + Console + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + CppUnit.lib;%(AdditionalDependencies) + bin\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitmtd.lib;iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + bin\static_mt\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_mt\TestSuited.pdb + Console + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + CppUnitmt.lib;iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + bin\static_mt\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitmdd.lib;iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + bin\static_md\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\TestSuited.pdb + Console + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + CppUnitmd.lib;iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + bin\static_md\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitd.lib;%(AdditionalDependencies) + bin64\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\TestSuited.pdb + Console + MachineX64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + CppUnit.lib;%(AdditionalDependencies) + bin64\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitmtd.lib;iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + bin64\static_mt\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_mt\TestSuited.pdb + Console + MachineX64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + CppUnitmt.lib;iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + bin64\static_mt\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitmdd.lib;iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + bin64\static_md\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\TestSuited.pdb + Console + MachineX64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;..\..\Data\include;..\..\Data\SQLite\include;..\..\ActiveRecord\include;.\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + CppUnitmd.lib;iphlpapi.lib;winmm.lib;%(AdditionalDependencies) + bin64\static_md\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + true + + + true + + + true + + + true + + + true + + + + + + + + + + + diff --git a/vendor/POCO/ActiveRecord/testsuite/TestSuite_vs170.vcxproj.filters b/vendor/POCO/ActiveRecord/testsuite/TestSuite_vs170.vcxproj.filters new file mode 100644 index 00000000..dfc3e31e --- /dev/null +++ b/vendor/POCO/ActiveRecord/testsuite/TestSuite_vs170.vcxproj.filters @@ -0,0 +1,48 @@ + + + + + {3947c588-f807-4200-8275-91de658656ab} + + + {df9bd59e-3743-49b1-900f-090f8eab11e3} + + + {283726aa-5601-40b5-bd69-30f542c4ed53} + + + {4fb792f6-42f2-4d69-b1ca-e6fd68675b6f} + + + + + Source Files + + + Source Files + + + Source Files + + + Generated Source Files + + + Generated Source Files + + + + + Header Files + + + Header Files + + + Generated Header Files + + + Generated Header Files + + + \ No newline at end of file diff --git a/vendor/POCO/ApacheConnector/ApacheConnector_vs170.sln b/vendor/POCO/ApacheConnector/ApacheConnector_vs170.sln new file mode 100644 index 00000000..86cdecee --- /dev/null +++ b/vendor/POCO/ApacheConnector/ApacheConnector_vs170.sln @@ -0,0 +1,37 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ApacheConnector", "ApacheConnector_vs170.vcxproj", "{9866EE28-0612-4746-BD35-3B15B0AF7267}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|ARM64 = debug_shared|ARM64 + release_shared|ARM64 = release_shared|ARM64 + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|ARM64.Build.0 = debug_shared|ARM64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|ARM64.ActiveCfg = release_shared|ARM64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|ARM64.Build.0 = release_shared|ARM64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|ARM64.Deploy.0 = release_shared|ARM64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|Win32.Build.0 = release_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|x64.Build.0 = debug_shared|x64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|x64.ActiveCfg = release_shared|x64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|x64.Build.0 = release_shared|x64 + {9866EE28-0612-4746-BD35-3B15B0AF7267}.release_shared|x64.Deploy.0 = release_shared|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/vendor/POCO/ApacheConnector/ApacheConnector_vs170.vcxproj b/vendor/POCO/ApacheConnector/ApacheConnector_vs170.vcxproj new file mode 100644 index 00000000..53d920ca --- /dev/null +++ b/vendor/POCO/ApacheConnector/ApacheConnector_vs170.vcxproj @@ -0,0 +1,353 @@ + + + + + debug_shared + ARM64 + + + debug_shared + Win32 + + + debug_shared + x64 + + + release_shared + ARM64 + + + release_shared + Win32 + + + release_shared + x64 + + + + 17.0 + ApacheConnector + {9866EE28-0612-4746-BD35-3B15B0AF7267} + ApacheConnector + Win32Proj + + + + DynamicLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>17.0.32505.173 + mod_pocoA64d + mod_pocoA64 + mod_pocod + mod_poco + mod_poco64d + mod_poco64 + + + ..\binA64\ + objA64\ApacheConnector\$(Configuration)\ + true + + + ..\binA64\ + objA64\ApacheConnector\$(Configuration)\ + false + + + ..\bin\ + obj\ApacheConnector\$(Configuration)\ + true + + + ..\bin\ + obj\ApacheConnector\$(Configuration)\ + false + + + ..\bin64\ + obj64\ApacheConnector\$(Configuration)\ + true + + + ..\bin64\ + obj64\ApacheConnector\$(Configuration)\ + false + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;ApacheHandlers_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + ..\binA64\mod_pocoA64d.dll + true + true + ..\binA64\mod_pocoA64d.pdb + ..\libA64;%(AdditionalLibraryDirectories) + Console + ..\libA64\mod_pocod.lib + MachineARM64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;ApacheHandlers_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + ..\binA64\mod_pocoA64.dll + true + false + ..\libA64;%(AdditionalLibraryDirectories) + Console + true + true + ..\libA64\mod_poco.lib + MachineARM64 + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;ApacheHandlers_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + ..\bin\mod_pocod.dll + true + true + ..\bin\mod_pocod.pdb + ..\lib;%(AdditionalLibraryDirectories) + Console + ..\lib\mod_pocod.lib + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;ApacheHandlers_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + ..\bin\mod_poco.dll + true + false + ..\lib;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib\mod_poco.lib + MachineX86 + + + + + Disabled + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;ApacheHandlers_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + ..\bin64\mod_poco64d.dll + true + true + ..\bin64\mod_poco64d.pdb + ..\lib64;%(AdditionalLibraryDirectories) + Console + ..\lib64\mod_pocod.lib + MachineX64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;..\Net\include;..\Util\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;ApacheHandlers_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + ..\bin64\mod_poco64.dll + true + false + ..\lib64;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib64\mod_poco.lib + MachineX64 + + + + + + + + + + + + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + + + diff --git a/vendor/POCO/ApacheConnector/ApacheConnector_vs170.vcxproj.filters b/vendor/POCO/ApacheConnector/ApacheConnector_vs170.vcxproj.filters new file mode 100644 index 00000000..ef035893 --- /dev/null +++ b/vendor/POCO/ApacheConnector/ApacheConnector_vs170.vcxproj.filters @@ -0,0 +1,57 @@ + + + + + {1500b978-8453-4fff-a785-5927dcf1c74b} + + + {c085c416-6266-4142-b541-c5eac7b7c514} + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + \ No newline at end of file diff --git a/vendor/POCO/ApacheConnector/CMakeLists.txt b/vendor/POCO/ApacheConnector/CMakeLists.txt index 86d7210a..544904fe 100644 --- a/vendor/POCO/ApacheConnector/CMakeLists.txt +++ b/vendor/POCO/ApacheConnector/CMakeLists.txt @@ -14,7 +14,7 @@ set_target_properties(mod_poco target_include_directories(mod_poco PUBLIC $ - $ + $ PRIVATE ${APACHE2_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/src diff --git a/vendor/POCO/ApacheConnector/doc/ApacheConnectorUserGuide.page b/vendor/POCO/ApacheConnector/doc/ApacheConnectorUserGuide.page index b045dc54..7c316222 100644 --- a/vendor/POCO/ApacheConnector/doc/ApacheConnectorUserGuide.page +++ b/vendor/POCO/ApacheConnector/doc/ApacheConnectorUserGuide.page @@ -16,7 +16,7 @@ file (usually <[httpd.conf]>): LoadModule poco_module modules/mod_pocod.so ---- - + !!!Configuring ApacheConnector ApacheConnector must be able to find shared libraries containing request handler, as well as optional configuration files. ApacheConnector provides an Poco::Util::Application class @@ -30,7 +30,7 @@ is used in the Apache configuration file: AddPocoRequestHandler ... ---- - + The first argument specifies the name of the request handler factory class. The second argument contains the path of the shared library containing the request handler. The third (and optionally following) argument(s) specify the URI paths handled by the @@ -38,7 +38,7 @@ request handler. For example: AddPocoRequestHandler TimeRequestHandlerFactory p:/Poco/ApacheConnector/samples/TimeServer/bin/TimeServerd.dll /time ---- - + loads the TimeRequestHandlerFactory from TimeServerd.dll. Whenever a request for a URI starting with "/time" is sent by a client, this request will be handled by the TimeRequestHandler. @@ -76,8 +76,8 @@ Following is a sample for a request handler implementation. The complete sample #include "Poco/DateTimeFormatter.h" #include "Poco/DateTimeFormat.h" #include "Poco/ClassLibrary.h" - - + + using Poco::Net::HTTPRequestHandler; using Poco::Net::HTTPRequestHandlerFactory; using Poco::Net::HTTPServerRequest; @@ -85,24 +85,24 @@ Following is a sample for a request handler implementation. The complete sample using Poco::Timestamp; using Poco::DateTimeFormatter; using Poco::DateTimeFormat; - - + + class TimeRequestHandler: public HTTPRequestHandler /// Return a HTML document with the current date and time. { public: - TimeRequestHandler() + TimeRequestHandler() { } - + void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response) { Timestamp now; std::string dt(DateTimeFormatter::format(now, DateTimeFormat::SORTABLE_FORMAT)); - + response.setChunkedTransferEncoding(true); response.setContentType("text/html"); - + std::ostream& ostr = response.send(); ostr << "TimeServer powered by POCO ApacheConnector"; ostr << ""; @@ -111,22 +111,22 @@ Following is a sample for a request handler implementation. The complete sample ostr << "

"; } }; - - + + class TimeRequestHandlerFactory: public HTTPRequestHandlerFactory { public: TimeRequestHandlerFactory() { } - + HTTPRequestHandler* createRequestHandler(const HTTPServerRequest& request) { return new TimeRequestHandler; } }; - - + + POCO_BEGIN_MANIFEST(HTTPRequestHandlerFactory) POCO_EXPORT_CLASS(TimeRequestHandlerFactory) POCO_END_MANIFEST diff --git a/vendor/POCO/ApacheConnector/include/ApacheConnector.h b/vendor/POCO/ApacheConnector/include/ApacheConnector.h index 55a6cf3f..1de4130f 100644 --- a/vendor/POCO/ApacheConnector/include/ApacheConnector.h +++ b/vendor/POCO/ApacheConnector/include/ApacheConnector.h @@ -25,7 +25,7 @@ class ApacheRequestRec public: ApacheRequestRec(request_rec* _pRec); /// Creates the ApacheRequestRec; - + bool haveRequestBody(); /// Returns true if the request contains a body. diff --git a/vendor/POCO/ApacheConnector/include/ApacheRequestHandlerFactory.h b/vendor/POCO/ApacheConnector/include/ApacheRequestHandlerFactory.h index 7e071aab..f24e8687 100644 --- a/vendor/POCO/ApacheConnector/include/ApacheRequestHandlerFactory.h +++ b/vendor/POCO/ApacheConnector/include/ApacheRequestHandlerFactory.h @@ -45,7 +45,7 @@ public: private: typedef std::map RequestHandlerFactories; - + RequestHandlerFactories _requestHandlers; Poco::ClassLoader _loader; Poco::FastMutex _mutex; diff --git a/vendor/POCO/ApacheConnector/include/ApacheServerRequest.h b/vendor/POCO/ApacheConnector/include/ApacheServerRequest.h index 825d6b73..6dd9b5c6 100644 --- a/vendor/POCO/ApacheConnector/include/ApacheServerRequest.h +++ b/vendor/POCO/ApacheConnector/include/ApacheServerRequest.h @@ -25,10 +25,10 @@ class ApacheServerRequest: public Poco::Net::HTTPServerRequest { public: ApacheServerRequest( - ApacheRequestRec* pApacheRequest, - const char* serverName, - int serverPort, - const char* clientName, + ApacheRequestRec* pApacheRequest, + const char* serverName, + int serverPort, + const char* clientName, int clientPort); /// Creates a new ApacheServerRequest. @@ -73,7 +73,7 @@ private: ApacheInputStream* _pStream; Poco::Net::SocketAddress _serverAddress; Poco::Net::SocketAddress _clientAddress; - + friend class ApacheServerResponse; }; @@ -84,7 +84,7 @@ private: inline std::istream& ApacheServerRequest::stream() { poco_check_ptr (_pStream); - + return *_pStream; } diff --git a/vendor/POCO/ApacheConnector/include/ApacheServerResponse.h b/vendor/POCO/ApacheConnector/include/ApacheServerResponse.h index 5b110dea..ea03caec 100644 --- a/vendor/POCO/ApacheConnector/include/ApacheServerResponse.h +++ b/vendor/POCO/ApacheConnector/include/ApacheServerResponse.h @@ -42,7 +42,7 @@ public: void sendContinue(); /// Sends a 100 Continue response to the /// client. - + void sendErrorResponse(int status); /// Sends an error response with the given /// status back to the client. @@ -55,20 +55,20 @@ public: /// The returned stream is valid until the response /// object is destroyed. /// - /// Must not be called after sendFile(), sendBuffer() + /// Must not be called after sendFile(), sendBuffer() /// or redirect() has been called. - + void sendFile(const std::string& path, const std::string& mediaType); /// Sends the response header to the client, followed /// by the content of the given file. /// - /// Must not be called after send(), sendBuffer() + /// Must not be called after send(), sendBuffer() /// or redirect() has been called. /// /// Throws a FileNotFoundException if the file /// cannot be found, or an OpenFileException if /// the file cannot be opened. - + void sendBuffer(const void* pBuffer, std::size_t length); /// Sends the response header to the client, followed /// by the contents of the given buffer. @@ -77,12 +77,12 @@ public: /// to length and chunked transfer encoding is disabled. /// /// If both the HTTP message header and body (from the - /// given buffer) fit into one single network packet, the + /// given buffer) fit into one single network packet, the /// complete response can be sent in one network packet. /// - /// Must not be called after send(), sendFile() + /// Must not be called after send(), sendFile() /// or redirect() has been called. - + void redirect(const std::string& uri, Poco::Net::HTTPResponse::HTTPStatus status); /// Sets the status code, which must be one of /// HTTP_MOVED_PERMANENTLY (301), HTTP_FOUND (302), @@ -92,12 +92,12 @@ public: /// the HTTP specification, must be absolute. /// /// Must not be called after send() has been called. - + void requireAuthentication(const std::string& realm); /// Sets the status code to 401 (Unauthorized) /// and sets the "WWW-Authenticate" header field /// according to the given realm. - + bool sent() const; /// Returns true if the response (header) has been sent. diff --git a/vendor/POCO/ApacheConnector/include/ApacheStream.h b/vendor/POCO/ApacheConnector/include/ApacheStream.h index f79cfc7e..22b355e8 100644 --- a/vendor/POCO/ApacheConnector/include/ApacheStream.h +++ b/vendor/POCO/ApacheConnector/include/ApacheStream.h @@ -33,7 +33,7 @@ protected: int writeToDevice(const char* buffer, std::streamsize length); private: - enum + enum { STREAM_BUFFER_SIZE = 1024 }; @@ -53,15 +53,15 @@ class ApacheIOS: public virtual std::ios public: ApacheIOS(ApacheRequestRec* pApacheRequest, bool haveData = false); /// Creates the ApacheIOS with the given socket. - + ~ApacheIOS(); /// Destroys the ApacheIOS. /// /// Flushes the buffer, but does not close the socket. - + ApacheStreamBuf* rdbuf(); /// Returns a pointer to the internal ApacheStreamBuf. - + void close(); /// Flushes the stream. diff --git a/vendor/POCO/ApacheConnector/samples/FormServer/FormServer_vs170.vcxproj b/vendor/POCO/ApacheConnector/samples/FormServer/FormServer_vs170.vcxproj new file mode 100644 index 00000000..153415ae --- /dev/null +++ b/vendor/POCO/ApacheConnector/samples/FormServer/FormServer_vs170.vcxproj @@ -0,0 +1,219 @@ + + + + + debug_shared + Win32 + + + debug_shared + x64 + + + release_shared + Win32 + + + release_shared + x64 + + + + FormServer + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106} + FormServer + Win32Proj + + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.28307.799 + FormServerd + FormServer + FormServerd + FormServer + + + bin\ + obj\FormServer\$(Configuration)\ + true + + + bin\ + obj\FormServer\$(Configuration)\ + false + + + bin64\ + obj64\FormServer\$(Configuration)\ + true + + + bin64\ + obj64\FormServer\$(Configuration)\ + false + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + bin\FormServerd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\FormServerd.pdb + Console + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + bin\FormServer.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + bin64\FormServerd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\FormServerd.pdb + Console + MachineX64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + bin64\FormServer.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + true + + + + + diff --git a/vendor/POCO/ApacheConnector/samples/FormServer/FormServer_vs170.vcxproj.filters b/vendor/POCO/ApacheConnector/samples/FormServer/FormServer_vs170.vcxproj.filters new file mode 100644 index 00000000..104e9ca3 --- /dev/null +++ b/vendor/POCO/ApacheConnector/samples/FormServer/FormServer_vs170.vcxproj.filters @@ -0,0 +1,17 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {5a3e677f-478b-4f37-a258-d839767dd71b} + + + + + Source Files + + + \ No newline at end of file diff --git a/vendor/POCO/ApacheConnector/samples/FormServer/src/FormServer.cpp b/vendor/POCO/ApacheConnector/samples/FormServer/src/FormServer.cpp index 278b7170..c5df459c 100644 --- a/vendor/POCO/ApacheConnector/samples/FormServer/src/FormServer.cpp +++ b/vendor/POCO/ApacheConnector/samples/FormServer/src/FormServer.cpp @@ -40,7 +40,7 @@ public: _length(0) { } - + void handlePart(const MessageHeader& header, std::istream& stream) { _type = header.get("Content-Type", "(unspecified)"); @@ -52,18 +52,18 @@ public: _name = params.get("name", "(unnamed)"); _fileName = params.get("filename", "(unnamed)"); } - + CountingInputStream istr(stream); NullOutputStream ostr; StreamCopier::copyStream(istr, ostr); _length = istr.chars(); } - + int length() const { return _length; } - + const std::string& name() const { return _name; @@ -73,12 +73,12 @@ public: { return _fileName; } - + const std::string& contentType() const { return _type; } - + private: int _length; std::string _type; @@ -91,10 +91,10 @@ class FormRequestHandler: public HTTPRequestHandler /// Return a HTML document with the current date and time. { public: - FormRequestHandler() + FormRequestHandler() { } - + void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response) { MyPartHandler partHandler; @@ -104,7 +104,7 @@ public: response.setContentType("text/html"); std::ostream& ostr = response.send(); - + ostr << "\n" "\n" @@ -127,7 +127,7 @@ public: " \n" "\n" "\n"; - + ostr << "

Request

\n"; ostr << "Method: " << request.getMethod() << "
\n"; ostr << "URI: " << request.getURI() << "
\n"; @@ -150,7 +150,7 @@ public: } ostr << "

"; } - + if (!partHandler.name().empty()) { ostr << "

Upload

\n"; diff --git a/vendor/POCO/ApacheConnector/samples/TimeServer/TimeServer_vs170.vcxproj b/vendor/POCO/ApacheConnector/samples/TimeServer/TimeServer_vs170.vcxproj new file mode 100644 index 00000000..14b397ba --- /dev/null +++ b/vendor/POCO/ApacheConnector/samples/TimeServer/TimeServer_vs170.vcxproj @@ -0,0 +1,219 @@ + + + + + debug_shared + Win32 + + + debug_shared + x64 + + + release_shared + Win32 + + + release_shared + x64 + + + + TimeServer + {59EDFD20-9968-30F7-9532-44C08DA58C6E} + TimeServer + Win32Proj + + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.28307.799 + TimeServerd + TimeServer + TimeServerd + TimeServer + + + bin\ + obj\TimeServer\$(Configuration)\ + true + + + bin\ + obj\TimeServer\$(Configuration)\ + false + + + bin64\ + obj64\TimeServer\$(Configuration)\ + true + + + bin64\ + obj64\TimeServer\$(Configuration)\ + false + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + bin\TimeServerd.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\TimeServerd.pdb + Console + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + bin\TimeServer.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + bin64\TimeServerd.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\TimeServerd.pdb + Console + MachineX64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Net\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + libapr-1.lib;libaprutil-1.lib;libhttpd.lib;%(AdditionalDependencies) + bin64\TimeServer.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + true + + + + + diff --git a/vendor/POCO/ApacheConnector/samples/TimeServer/TimeServer_vs170.vcxproj.filters b/vendor/POCO/ApacheConnector/samples/TimeServer/TimeServer_vs170.vcxproj.filters new file mode 100644 index 00000000..fc4aa43a --- /dev/null +++ b/vendor/POCO/ApacheConnector/samples/TimeServer/TimeServer_vs170.vcxproj.filters @@ -0,0 +1,17 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {1b5ba5b2-99d5-4e73-9cde-e08715c86bfa} + + + + + Source Files + + + \ No newline at end of file diff --git a/vendor/POCO/ApacheConnector/samples/TimeServer/src/TimeServer.cpp b/vendor/POCO/ApacheConnector/samples/TimeServer/src/TimeServer.cpp index d12642df..f577981f 100644 --- a/vendor/POCO/ApacheConnector/samples/TimeServer/src/TimeServer.cpp +++ b/vendor/POCO/ApacheConnector/samples/TimeServer/src/TimeServer.cpp @@ -32,10 +32,10 @@ class TimeRequestHandler: public HTTPRequestHandler /// Return a HTML document with the current date and time. { public: - TimeRequestHandler() + TimeRequestHandler() { } - + void handleRequest(HTTPServerRequest& request, HTTPServerResponse& response) { Timestamp now; diff --git a/vendor/POCO/ApacheConnector/samples/samples_vs170.sln b/vendor/POCO/ApacheConnector/samples/samples_vs170.sln new file mode 100644 index 00000000..e5367a0e --- /dev/null +++ b/vendor/POCO/ApacheConnector/samples/samples_vs170.sln @@ -0,0 +1,43 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FormServer", "FormServer\FormServer_vs170.vcxproj", "{CD77A9BA-6E9B-39EF-801A-1C7E66B19106}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TimeServer", "TimeServer\TimeServer_vs170.vcxproj", "{59EDFD20-9968-30F7-9532-44C08DA58C6E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|Win32.Build.0 = release_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|x64.Build.0 = debug_shared|x64 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|x64.ActiveCfg = release_shared|x64 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|x64.Build.0 = release_shared|x64 + {CD77A9BA-6E9B-39EF-801A-1C7E66B19106}.release_shared|x64.Deploy.0 = release_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|Win32.Build.0 = release_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|x64.Build.0 = debug_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|x64.ActiveCfg = release_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|x64.Build.0 = release_shared|x64 + {59EDFD20-9968-30F7-9532-44C08DA58C6E}.release_shared|x64.Deploy.0 = release_shared|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/vendor/POCO/ApacheConnector/src/ApacheApplication.cpp b/vendor/POCO/ApacheConnector/src/ApacheApplication.cpp index c67810ce..114356e6 100644 --- a/vendor/POCO/ApacheConnector/src/ApacheApplication.cpp +++ b/vendor/POCO/ApacheConnector/src/ApacheApplication.cpp @@ -35,7 +35,7 @@ ApacheApplication::~ApacheApplication() void ApacheApplication::setup() { FastMutex::ScopedLock lock(_mutex); - + if (!_ready) { std::vector cmdLine; diff --git a/vendor/POCO/ApacheConnector/src/ApacheRequestHandlerFactory.cpp b/vendor/POCO/ApacheConnector/src/ApacheRequestHandlerFactory.cpp index d1ac5d78..cd1fdb1b 100644 --- a/vendor/POCO/ApacheConnector/src/ApacheRequestHandlerFactory.cpp +++ b/vendor/POCO/ApacheConnector/src/ApacheRequestHandlerFactory.cpp @@ -34,7 +34,7 @@ ApacheRequestHandlerFactory::~ApacheRequestHandlerFactory() Poco::Net::HTTPRequestHandler* ApacheRequestHandlerFactory::createRequestHandler(const Poco::Net::HTTPServerRequest& request) { FastMutex::ScopedLock lock(_mutex); - + // only if the given uri is found in _uris we are // handling this request. RequestHandlerFactories::iterator it = _requestHandlers.begin(); @@ -75,7 +75,7 @@ void ApacheRequestHandlerFactory::handleURIs(const std::string& uris) void ApacheRequestHandlerFactory::addRequestHandlerFactory(const std::string& dllPath, const std::string& factoryName, const std::string& uri) -{ +{ try { _loader.loadLibrary(dllPath); diff --git a/vendor/POCO/ApacheConnector/src/ApacheServerRequest.cpp b/vendor/POCO/ApacheConnector/src/ApacheServerRequest.cpp index 0699c79b..d36382b3 100644 --- a/vendor/POCO/ApacheConnector/src/ApacheServerRequest.cpp +++ b/vendor/POCO/ApacheConnector/src/ApacheServerRequest.cpp @@ -16,10 +16,10 @@ ApacheServerRequest::ApacheServerRequest( - ApacheRequestRec* pApacheRequest, - const char* serverName, - int serverPort, - const char* clientName, + ApacheRequestRec* pApacheRequest, + const char* serverName, + int serverPort, + const char* clientName, int clientPort): _pApacheRequest(pApacheRequest), _pResponse(0), diff --git a/vendor/POCO/ApacheConnector/src/ApacheServerResponse.cpp b/vendor/POCO/ApacheConnector/src/ApacheServerResponse.cpp index a8e86605..73f1e95f 100644 --- a/vendor/POCO/ApacheConnector/src/ApacheServerResponse.cpp +++ b/vendor/POCO/ApacheConnector/src/ApacheServerResponse.cpp @@ -52,7 +52,7 @@ void ApacheServerResponse::initApacheOutputStream() std::vector cookies; getCookies(cookies); - + std::size_t cnt = cookies.size(); for (int c = 0; c < cnt; c++) { @@ -77,7 +77,7 @@ void ApacheServerResponse::sendContinue() std::ostream& ApacheServerResponse::send() { poco_assert (!_pStream); - + initApacheOutputStream(); return *_pStream; @@ -124,7 +124,7 @@ void ApacheServerResponse::redirect(const std::string& uri, HTTPStatus status) void ApacheServerResponse::sendErrorResponse(int status) -{ +{ initApacheOutputStream(); _pApacheRequest->sendErrorResponse(status); diff --git a/vendor/POCO/ApacheConnector/src/ApacheStream.cpp b/vendor/POCO/ApacheConnector/src/ApacheStream.cpp index aeaacc6a..5f92f7c7 100644 --- a/vendor/POCO/ApacheConnector/src/ApacheStream.cpp +++ b/vendor/POCO/ApacheConnector/src/ApacheStream.cpp @@ -21,7 +21,7 @@ using Poco::BufferedStreamBuf; // -ApacheStreamBuf::ApacheStreamBuf(ApacheRequestRec* pApacheRequest, bool haveData): +ApacheStreamBuf::ApacheStreamBuf(ApacheRequestRec* pApacheRequest, bool haveData): BufferedStreamBuf(STREAM_BUFFER_SIZE, std::ios::in | std::ios::out), _pApacheRequest(pApacheRequest), _haveData(haveData) diff --git a/vendor/POCO/CHANGELOG b/vendor/POCO/CHANGELOG index b4b3acf6..66afe2de 100644 --- a/vendor/POCO/CHANGELOG +++ b/vendor/POCO/CHANGELOG @@ -1,5 +1,277 @@ This is the changelog file for the POCO C++ Libraries. +Release 1.12.3 (2022-10-24) +=========================== + +- GH #3682: Including Any.h causes Compiler error on Visual Studio +- GH #3683: Poco::format receives empty Vector +- GH #3692: v1.12.0 and v1.12.1 Poco::Any compile problem +- GH #3723: DateTimeFormatter creates invalid ISO8601 string +- GH #3737: Poco EventImpl for Win32 breaks INFINITE wait +- GH #3744: bindImplLOB zero size (or NULL) HY104 "Invalid precision value" +- GH #3748: Poco 1.12.2 - Building DataMySQL still fails (issue #3689) +- GH #3753: Fix optional JSON support for MySQL +- GH #3763: Poco::Util::Application VxWorks main is incorrect +- GH #3769: Fixed converting/correcting pre-gregorian dates (#3723). +- GH #3795: aix system NumberFormatter.cpp build error +- GH #3805: Upgrade expat to 2.4.9 +- GH #3814: Security Vulnerability identified in POCO version 1.12.2 +- GH #3825: VS 2022 Net project missing ARM64 config +- GH #3834: SocketImpl::available() +- GH #3846: Upgrade bundled zlib to 1.2.13 [fixes CVE] +- GH #3847: Upgrade bundled SQLite to 3.39.4 + + +Release 1.12.2 (2022-08-08) +=========================== + +- GH #3460 fix(Platform): LoongArch support +- GH #3688 Linking Crypto-testrunner fails +- GH #3693 VS2022 compilation issues +- GH #3698 SIGABRT in OSSL_PROVIDER_unload with static OpenSSL3 +- GH #3699 POSIX Event state need not be atomic +- GH #3700 Release script must include build_vs170.cmd +- GH #3708 wakeup fd is never read +- GH #3711 lowercase winsock2 and iphlpapi to allow cross compile +- GH #3716 Compiling with clang_cl_x64_x64 on Visual Studio 2022 failed +- GH #3717 Only support extracting JSON fields when the SDK supports it +- GH #3719 PocoNet Project File does not support Visual Studio 2022 +- GH #3720 Update max MSVC version information +- GH #3721 fails to build with Visual Studio projects +- GH #3722 Added missing Crypto Header to ProGen source +- GH #3724 Crypto: Progen again to add new files and bring back ARM64 configuration +- GH #3727 Add how to install using Conan section on README +- GH #3733 Poco::format and C++20 +- GH #3734 g++ C++20 warnings + + +Release 1.12.1 (2022-07-18) +=========================== + +- GH #3677 PocoFoundationConfig.cmake should now check for PCRE2 +- GH #3686 SIGSEGV in OSSL_PROVIDER_unload with static OpenSSL3 + + +Release 1.12.0 (2022-07-08) +=========================== + +- This release introduces Prometheus library +- Upgraded bundled PCRE to PCRE2 10.40 +- Small object optimization for Any and Dynamic::Var (compile-time option, enabled by default) +- All swap operations are noexcept now +- PollSet::add() is mode-cumulative now +- UDPServer now requires explicit starting +- Move semantics for sockets and SocketAddress (compile-time option, disabled by default) + +- GH #709: Poco::Dynamic::Var memory leak +- GH #1039 Race condition in AsyncChannel close/log +- GH #1459 Fix Socket::select() epoll and poll implementations +- GH #1687 SQLite Notifier has no table information +- GH #1884 TCPServerDispatcher::run() issue +- GH #2084 LogFile_STD (LogFileImpl) fails to recover from getting out of space +- GH #2085 Crash due to race condition in TCPServerDispatcher +- GH #2091 Integrate windows poll +- GH #2222 Warning when compiling my that's use VarHolder +- GH #2270 HTTPClientSession not supporting binding source address for proxy connect +- GH #2271 HTTPClientSession source IP address +- GH #2285 SQLite::Connector::open() crashes on db file with non existing directory +- GH #2287 Poco::Data::Statement becomes unusable after exception +- GH #2352 Allow setting the socket of SecureSocketImpl to no-blocking +- GH #2386 As of C++11, std::swap is noexcept +- GH #2401 Net::MailMessage::read hangs on missing final multipart boundary +- GH #2457 Poco::Redis after executing "auth" command next command always return "OK" +- GH #2465 Operating system specific thread ID is not available any more in Logger/Formatter +- GH #2470 Can't use Poco::MongoDB::Cursor on aggregation cursor +- GH #2511 Negative precision in NumberFormatter::format() +- GH #2513 Poco::Net::SocketConnector unregistering +- GH #2516 SHA3Engine hard to use with HMACEngine duplicate enhancement +- GH #2521 MySQL Extractor null value extraction +- GH #2538 Poco::Data::Session::connector() returns empty string for MySQL session +- GH #2569 MySQL timestamp +- GH #2576 Add std::chrono support to Timespan +- GH #2590 Zip 64-bit extensions not set +- GH #2614 NTPClient ignores second fractions enhancement +- GH #2619 Decoding URI query parameters incompatible with Spring 5 +- GH #2638 Upgrade Windows SDK Used for Building Poco +- GH #2688 Static code analyzer warnings +- GH #2691 MinGW: fatal error: kernelspecs.h: No such file +- GH #2706 [windows bug] pollset WSAPoll with non blocking socket will not report error +- GH #2755 MySQL LONGTEXT +- GH #2821 Poco::Buffer: full on creation +- GH #2849 setPadding does nothing when OpenSSL 1.1.x is used +- GH #2864 SessionImpl begin +- GH #2940 Add vcpkg installation instructions +- GH #2943 Avoid clang 10 -Wimplicit-int-float-conversion warning/error when converting int into float +- GH #2959 Fix percent-encoded fragment modification in Poco::URI +- GH #2980 Memory leaks in Poco::Any +- GH #2986 Once exhausted, Poco::ObjectPool does not lend out returned objects +- GH #3016 MongoDB::Array interface improvements +- GH #3026 HTTPDigestCredentials added support for RFC7616 algorithms +- GH #3039 Poco errors with _DEBUG and NDEBUG +- GH #3052 Fix constness of URI::getPathSegments +- GH #3088 Fix error in find_package example +- GH #3056 Inconsistent behavior ConsoleChannel vs. WindowsConsoleChannel +- GH #3062 Makefile: space(s) following target name will break build (during link) +- GH #3073 libPocoCrypto.so: undefined reference to `pthread_atfork' when linking statically with OpenSSL 1.1 +- GH #3104 Publicly expose Poco::Message parameters +- GH #3105 CMake: use GNUInstallDirs +- GH #3175 SharedLibrary::isLoaded() not thread safe +- GH #3195 MinGW also defines __GNUC__ +- GH #3240 Task::postNotification possible leak +- GH #3241 Poco::Data::SessionPool change connection timeout +- GH #3251 JSON Serializing NAN +- GH #3253 Arbitrary indent of 2 applied to JSON string objects Var conversion +- GH #3261 Upgrade to PCRE2 latest version +- GH #3283 DatagramSocket does not allow IPV6_V6ONLY +- GH #3296 Add move semantics to Net (sockets and addresses) +- GH #3297 Poco Foundation Fails to Compile With POCO_ENABLE_SOO Defined +- GH #3323 Extend format patterns %T and %I to support native threads +- GH #3342 DB into() does not compile for more than 20 members in a tuple +- GH #3357 Add socket proactor +- GH #3359 Make PollSet::poll() interruptible +- GH #3371 SocketReactor::getNotifier() does not use socket.impl() +- GH #3372 FTPClientSession::activeDataConnection 1.11.0 cannot set specific data port +- GH #3374 No access to padding in Cipher +- GH #3375 PollSet::SocketModeMap poll(const Poco::Timespan& timeout) hasSignaledFDs issue slow down connections +- GH #3378 PollSet function setMode 1.11.0 cause while(1) on windows +- GH #3380 Windows SO_REUSEADDR is neither reliable nor safe +- GH #3384 Always set thread names on POSIX platforms +- GH #3385 IPAddress::tryParse does not work for "::" +- GH #3396 Poco::Data::ODBC - dbEncoding property not used for insert/update +- GH #3399 IPAddress::isLoopback() returns false for IPv4 mapped in IPv6 +- GH #3404 Net: make MessageHeader limits configurable +- GH #3415 OpenSSL 3.0 support +- GH #3417 Calling SocketReactor's run() method in a program's main thread yields a lot of null pointer exceptions +- GH #3421 Cannot use HMACEngine with SHA2Engine +- GH #3452 Syslog: Include Facility to Syslog Message +- GH #3453 added facility to SyslogChannel +- GH #3460 LoongArch support +- GH #3481 JSON DataType support for MySQL +- GH #3482 Visual Studio 2022 (v170) missing from buildwin.cmd +- GH #3486 Windows on ARM64 support +- GH #3516 Fix OpenSSL 3.0 deprecated warnings +- GH #3529 Added LocalConfigurationView to only search inside the viewed scope +- GH #3543 Visual Studio Warning C4244 +- GH #3558 Race condition in SSLManager +- GH #3561 Add envelope to crypto +- GH #3569 Readded named substring support for regexes +- GH #3580 Rounds very large negative numbers to the incorrect values +- GH #3592 Add 425 / HTTP_TOO_EARLY to HTTPResponse::HTTPStatus +- GH #3598 Socket::available does not always return correct value for UDP +- GH #3602 Add Data::JSONRowFormatter +- GH #3603 Update minimum GCC version information +- GH #3611 VS2022 Arm64 projects missing or do not load +- GH #3613 UDPHandler data race +- GH #3620 MariaDB still uses tx_isolation for transaction isolation unlike MySQL 8+ which uses transaction_isolation +- GH #3624 Upgrade double-conversion to v3.2.0 +- GH #3628 PollSet data race +- GH #3629 Event data race +- GH #3633 Redis: Support Authentication +- GH #3635 ConfigurationView and JSON is broken for array access +- GH #3639 Bugcheck: indicate compiler that functions will never return +- GH #3640 fix warning C4717: 'format': recursive on all control paths, function will cause runtime stack overflow +- GH #3641 FifoBuffer.advance method not throw exception when length==0 +- GH #3642 Make ParallelSocketReactor thread namable +- GH #3651 TCPserver missing from Net/samples/CMakeLists.txt +- GH #3652 Linking with Foundation on Android gives error +- GH #3655 Socket::select EPOLL implementation returns socket in exceptList when empty list is given +- GH #3658 Support for chunked transfer encoding trailer +- GH #3661 PollSet::add()/update() semantics +- GH #3665 MSVC does not properly recognize std version + + +Release 1.11.6 (2022-12-08) +=========================== + +- GH #3147: Reading from request stream hangs when "Transfer-Encoding: chunked" is used +- GH #3859: zlib headers not updated +- GH #3876: Replace sprintf with snprintf in Environment and NumberFormatter to avoid deprecation warnings +- Build system improvements for Xcode on Apple Silicon. +- Upgrade bundled SQLite to 3.40.0 + + +Release 1.11.5 (2022-10-31) +=========================== + +- GH #3849: Upgrade bundled libexpat to 2.5.0 [fixes CVE] + + +Release 1.11.4 (2022-10-24) +=========================== + +- GH #3805: Upgrade expat to 2.4.9 +- GH #3846: Upgrade bundled zlib to 1.2.13 [fixes CVE] +- GH #3847: Upgrade bundled SQLite to 3.39.4 + + +Release 1.11.3 (2022-06-12) +=========================== + +- GH #3567: fix(openssl-initializer): check legacy provider existence for legacy exception +- GH #3587: MySQL UUID binding temporary string +- GH #3632: Redis - add TLS support +- updated a few copyright dates + + +Release 1.11.2 (2022-04-16) +=========================== + +- GH #2882: Handle negative DST offset +- GH #3268: Poco redis command set have a bug when you want to set nx ex or expireTime +- GH #3338: NamedMutex does not work on Linux distributions where fs.protected_regular=1 +- GH #3448: Basic support for OpenSSL 3.0.0 +- GH #3458: encryptString() crash on redhat/centos 8 with FIPS enabled using md5 default digest +- GH #3465: NetSSL_Win: bad error handling when decodeMessage() fails +- GH #3466: DefinePlatformSpecific.cmake: handle RelWithDebInfo and MinSizeRel configurations +- GH #3470: bug in JSON ParseHandler.cpp (RFC 7159 should be valid) +- GH #3472: Add Windows 11 detection to Environment_WIN32U +- GH #3483: Adds Windows 11 and Server 2022 to Environment::osDisplayName() +- GH #3485: Adds Visual Studio 2022 (v170) to buildwin.cmd +- GH #3495: Should the Array::operator[] throw? +- GH #3500: Sandbox all iFrames in PocoDoc +- GH #3504: OpenSSL 3 compatibility +- GH #3505: JSON::PrintHandler.value(bool) prints incorrect value +- GH #3507: Reference counting for bound configuration in Util::Option is broken +- GH #3508: #3507: Fix bound configuration reference counting in Poco::Util::Option. +- GH #3509: fix dst and utcOffset handling for Dublin time zone +- GH #3515: NetSSL_OpenSSL Testsuite: testInterop() and testProxy() fail due to changed certificate +- GH #3518: Expat version check in #defines incorrect. +- GH #3519: Add convertation to string in Redis Command#set +- GH #3524: [linux] Why is Poco::XML linked to Poco::Zip target? +- GH #3525: Bad management of file in case of OpenSSLException in X509Certificate::readPEM and X509Certificate::writePEM +- GH #3538: Upgrade bundled expat to 2.4.7 +- GH #3544: Add back NIOS2 double conversion detection to fix compile errors +- GH #3549: Test against the correct signatures in the JWT ES384 and ES512 tests +- GH #3553: Upgrade bundled zlib to 1.2.12 +- GH #3559: Poco::Data::PostgreSQL - DateTime extraction truncates fractional seconds +- GH #3563: Remove support for OpenSSL < 1.0 + + +Release 1.11.1 (2021-11-05) +=========================== + +- Upgraded bundled PCRE to 8.45 +- Upgraded bundled SQLite to 3.36.0 +- GH #2823: error: implicit conversion from 'int' to 'float' changes value from 2147483647 to 2147483648 +- GH #2966: SocketReactor loads one core of CPU up to 100% +- GH #3221: Crash reported on Windows in X509Certificate verification +- GH #3330: Poco::Data::ODBC::ODBCStatementImpl causes crash +- GH #3334: Fork error on tvOS and watchOS +- GH #3335: XML error when build 1.11.0 +- GH #3344: [bug] MacOS bundle destination path is not set +- GH #3345: fix cmake bundle +- GH #3347: The definition POCO_NO_FORK_EXEC is not respected or something like this +- GH #3353: fix fork option +- GH #3360: Add POCO_PGSQL_{INCLUDE,LIB} variables +- GH #3363: Fixed compilation error with MongoDB::Connection and Util::Application +- GH #3377: Updates comments for windows +- GH #3381: DNS::hostByAddress not thread-safe +- GH #3397: Fix crash due to X.509 certificates with Subject Alternative Name other than DNS Host +- GH #3400: fix std::localtime not thread safe +- GH #3414: fix missing expat definition +- GH #3425: Fixed suspend/resumeEvents pair in DirectoryWatcher + + Release 1.11.0 (2021-06-28) =========================== diff --git a/vendor/POCO/CMakeLists.txt b/vendor/POCO/CMakeLists.txt index e39512fc..3b265827 100644 --- a/vendor/POCO/CMakeLists.txt +++ b/vendor/POCO/CMakeLists.txt @@ -21,6 +21,14 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) # Windows DLLs are "runtime" for CMake. Output them to "bin" like the Visual Studio projects do. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +# Reset output dirs for multi-config builds +foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) + string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/bin) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/lib) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/lib) +endforeach(OUTPUTCONFIG) + # Append our module directory to CMake list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) @@ -50,6 +58,9 @@ if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo") endif() +# Enable standard installation directories +include(GNUInstallDirs) + # Include some common macros to simpilfy the Poco CMake files include(PocoMacros) @@ -75,6 +86,11 @@ if(MSVC) if((NOT POCO_DISABLE_INTERNAL_OPENSSL) AND (ENABLE_NETSSL OR ENABLE_CRYPTO OR (ENABLE_DATA_MYSQL AND MINGW))) include(UseEmbeddedOpenSSL) endif() + + if(POCO_SANITIZE_ASAN) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fsanitize=address") + endif() + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:__cplusplus") endif() option(ENABLE_NETSSL_WIN "Enable NetSSL Windows" OFF) @@ -113,16 +129,10 @@ else() option(ENABLE_APACHECONNECTOR "Enable ApacheConnector" OFF) endif() -if (NOT ENABLE_BUILTIN_MYSQL_C) - if(ENABLE_DATA_MYSQL) - find_package(MySQL REQUIRED) - else() - find_package(MySQL) - endif() +if(ENABLE_DATA_MYSQL) + find_package(MySQL REQUIRED) else() - SET(MYSQL_FOUND TRUE) - SET(MYSQL_LIBRARIES "mariadbclient") - get_target_property(MYSQL_INCLUDE_DIRS mariadbclient INCLUDE_DIRECTORIES) + find_package(MySQL) endif() if(MYSQL_FOUND) @@ -170,6 +180,7 @@ option(ENABLE_JSON "Enable JSON" ON) option(ENABLE_MONGODB "Enable MongoDB" ON) option(ENABLE_DATA_SQLITE "Enable Data SQlite" ON) option(ENABLE_REDIS "Enable Redis" ON) +option(ENABLE_PROMETHEUS "Enable Prometheus" ON) option(ENABLE_PDF "Enable PDF" OFF) option(ENABLE_UTIL "Enable Util" ON) option(ENABLE_NET "Enable Net" ON) @@ -203,9 +214,16 @@ else() endif() if(POCO_UNBUNDLED) - message(STATUS "Using external sqlite, zlib, pcre, expat, ...") + message(STATUS "Using external sqlite, zlib, pcre2, expat, ...") else() - message(STATUS "Using internal sqlite, zlib, pcre, expat, ...") + message(STATUS "Using internal sqlite, zlib, pcre2, expat, ...") +endif() + +# Disable fork exec +option(POCO_NO_FORK_EXEC "Set to OFF|ON (default is OFF) to disable use of fork() and exec*() which are not allowed on some Apple platforms (iOS, watchOS, iPadOS, tvOS)." OFF) + +if(POCO_NO_FORK_EXEC) + add_definitions(-DPOCO_NO_FORK_EXEC=1) endif() include(DefinePlatformSpecifc) @@ -217,10 +235,6 @@ if(ENABLE_TESTS) add_subdirectory(CppUnit) set(ENABLE_XML ON CACHE BOOL "Enable XML" FORCE) set(ENABLE_JSON ON CACHE BOOL "Enable JSON" FORCE) - - if(ENABLE_ZIP) - set(ENABLE_NET ON CACHE BOOL "Enable Net" FORCE) - endif() endif() if(ENABLE_ENCODINGS_COMPILER OR ENABLE_APACHECONNECTOR) @@ -237,7 +251,7 @@ if(ENABLE_PAGECOMPILER) set(ENABLE_UTIL ON CACHE BOOL "Enable Util" FORCE) endif() -if(ENABLE_MONGODB OR ENABLE_REDIS) +if(ENABLE_MONGODB OR ENABLE_REDIS OR ENABLE_PROMETHEUS) set(ENABLE_NET ON CACHE BOOL "Enable Net" FORCE) endif() @@ -291,11 +305,6 @@ if(ENABLE_POCODOC) set(ENABLE_CPPPARSER ON CACHE BOOL "Enable C++ parser" FORCE) endif() -if(ENABLE_SEVENZIP OR ENABLE_ZIP) - set(ENABLE_UTIL ON CACHE BOOL "Enable Util" FORCE) - set(ENABLE_XML ON CACHE BOOL "Enable XML" FORCE) -endif() - if(ENABLE_UTIL AND ENABLE_TESTS) set(ENABLE_JSON ON CACHE BOOL "Enable JSON" FORCE) set(ENABLE_XML ON CACHE BOOL "Enable XML" FORCE) @@ -345,6 +354,11 @@ if(EXISTS ${PROJECT_SOURCE_DIR}/Redis AND ENABLE_REDIS) list(APPEND Poco_COMPONENTS "Redis") endif() +if(EXISTS ${PROJECT_SOURCE_DIR}/Prometheus AND ENABLE_PROMETHEUS) + add_subdirectory(Prometheus) + list(APPEND Poco_COMPONENTS "Prometheus") +endif() + if(EXISTS ${PROJECT_SOURCE_DIR}/PDF AND ENABLE_PDF) add_subdirectory(PDF) list(APPEND Poco_COMPONENTS "PDF") @@ -378,6 +392,18 @@ if(EXISTS ${PROJECT_SOURCE_DIR}/Data AND ENABLE_DATA) list(APPEND Poco_COMPONENTS "Data") endif() +if(EXISTS ${PROJECT_SOURCE_DIR}/Data/SQLite AND ENABLE_DATA_SQLITE) + list(APPEND Poco_COMPONENTS "Data/SQLite") +endif() + +if(EXISTS ${PROJECT_SOURCE_DIR}/Data/MySQL AND ENABLE_DATA_MYSQL) + list(APPEND Poco_COMPONENTS "Data/MySQL") +endif() + +if(EXISTS ${PROJECT_SOURCE_DIR}/Data/PostgresSQL AND ENABLE_DATA_POSTGRESQL) + list(APPEND Poco_COMPONENTS "Data/PostgresSQL") +endif() + if(EXISTS ${PROJECT_SOURCE_DIR}/ActiveRecord AND ENABLE_ACTIVERECORD) add_subdirectory(ActiveRecord) list(APPEND Poco_COMPONENTS "ActiveRecord") @@ -388,12 +414,12 @@ if(EXISTS ${PROJECT_SOURCE_DIR}/ActiveRecord/Compiler AND ENABLE_ACTIVERECORD_CO list(APPEND Poco_COMPONENTS "ActiveRecordCompiler") endif() -if(EXISTS ${PROJECT_SOURCE_DIR}/SevenZip AND ENABLE_SEVENZIP) +if(EXISTS ${PROJECT_SOURCE_DIR}/SevenZip AND ENABLE_SEVENZIP AND ENABLE_XML) add_subdirectory(SevenZip) list(APPEND Poco_COMPONENTS "SevenZip") endif() -if(EXISTS ${PROJECT_SOURCE_DIR}/Zip AND ENABLE_ZIP) +if(EXISTS ${PROJECT_SOURCE_DIR}/Zip AND ENABLE_ZIP AND ENABLE_XML) add_subdirectory(Zip) list(APPEND Poco_COMPONENTS "Zip") endif() @@ -444,7 +470,9 @@ add_custom_target(uninstall ############################################################# # Enable packaging -include(InstallRequiredSystemLibraries) +if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") + include(InstallRequiredSystemLibraries) +endif() set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Poco Libraries") set(CPACK_PACKAGE_VENDOR "Applied Informatics Software Engineering GmbH") @@ -470,7 +498,7 @@ write_basic_package_version_file( if(WIN32) set(PocoConfigPackageLocation "cmake") else() - set(PocoConfigPackageLocation "lib${LIB_SUFFIX}/cmake/${PROJECT_NAME}") + set(PocoConfigPackageLocation "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") endif() configure_file(cmake/${PROJECT_NAME}Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Config.cmake" @ONLY) @@ -485,7 +513,7 @@ install( ) if(POCO_UNBUNDLED) - install(FILES cmake/FindPCRE.cmake + install(FILES cmake/FindPCRE2.cmake DESTINATION "${PocoConfigPackageLocation}") install(FILES cmake/V39/FindEXPAT.cmake DESTINATION "${PocoConfigPackageLocation}/V39") diff --git a/vendor/POCO/CONTRIBUTORS b/vendor/POCO/CONTRIBUTORS index 102a4a29..7bc689d6 100644 --- a/vendor/POCO/CONTRIBUTORS +++ b/vendor/POCO/CONTRIBUTORS @@ -51,3 +51,5 @@ Martin Osborne Björn Schramke Francis Andre Kacper Piwiński +Hernan Martinez +Jacky Woo diff --git a/vendor/POCO/CppParser/CMakeLists.txt b/vendor/POCO/CppParser/CMakeLists.txt index 7e41461e..86ceca0c 100644 --- a/vendor/POCO/CppParser/CMakeLists.txt +++ b/vendor/POCO/CppParser/CMakeLists.txt @@ -25,7 +25,7 @@ target_link_libraries(CppParser PUBLIC Poco::Foundation) target_include_directories(CppParser PUBLIC $ - $ + $ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ) diff --git a/vendor/POCO/CppParser/CppParser_vs170.sln b/vendor/POCO/CppParser/CppParser_vs170.sln new file mode 100644 index 00000000..ace73f8a --- /dev/null +++ b/vendor/POCO/CppParser/CppParser_vs170.sln @@ -0,0 +1,144 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppParser", "CppParser_vs170.vcxproj", "{C77B9D92-EC91-11DA-A4CE-005056C00008}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs170.vcxproj", "{C79112BD-EC91-11DA-A4CE-005056C00008}" + ProjectSection(ProjectDependencies) = postProject + {C77B9D92-EC91-11DA-A4CE-005056C00008} = {C77B9D92-EC91-11DA-A4CE-005056C00008} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|ARM64 = debug_shared|ARM64 + release_shared|ARM64 = release_shared|ARM64 + debug_static_mt|ARM64 = debug_static_mt|ARM64 + release_static_mt|ARM64 = release_static_mt|ARM64 + debug_static_md|ARM64 = debug_static_md|ARM64 + release_static_md|ARM64 = release_static_md|ARM64 + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|ARM64.Build.0 = debug_shared|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|ARM64.ActiveCfg = release_shared|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|ARM64.Build.0 = release_shared|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|ARM64.Deploy.0 = release_shared|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|ARM64.Build.0 = release_static_md|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.Build.0 = release_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.Build.0 = debug_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|x64.ActiveCfg = release_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|x64.Build.0 = release_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_shared|x64.Deploy.0 = release_shared|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.Build.0 = release_static_md|x64 + {C77B9D92-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.Deploy.0 = release_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|ARM64.Build.0 = debug_shared|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|ARM64.ActiveCfg = release_shared|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|ARM64.Build.0 = release_shared|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|ARM64.Deploy.0 = release_shared|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|ARM64.Build.0 = release_static_md|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.Build.0 = release_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.Build.0 = debug_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|x64.ActiveCfg = release_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|x64.Build.0 = release_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_shared|x64.Deploy.0 = release_shared|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.Build.0 = release_static_md|x64 + {C79112BD-EC91-11DA-A4CE-005056C00008}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/vendor/POCO/CppParser/CppParser_vs170.vcxproj b/vendor/POCO/CppParser/CppParser_vs170.vcxproj new file mode 100644 index 00000000..9dfabac9 --- /dev/null +++ b/vendor/POCO/CppParser/CppParser_vs170.vcxproj @@ -0,0 +1,897 @@ + + + + + debug_shared + ARM64 + + + debug_shared + Win32 + + + debug_shared + x64 + + + debug_static_md + ARM64 + + + debug_static_md + Win32 + + + debug_static_md + x64 + + + debug_static_mt + ARM64 + + + debug_static_mt + Win32 + + + debug_static_mt + x64 + + + release_shared + ARM64 + + + release_shared + Win32 + + + release_shared + x64 + + + release_static_md + ARM64 + + + release_static_md + Win32 + + + release_static_md + x64 + + + release_static_mt + ARM64 + + + release_static_mt + Win32 + + + release_static_mt + x64 + + + + 17.0 + CppParser + {C77B9D92-EC91-11DA-A4CE-005056C00008} + CppParser + Win32Proj + + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>17.0.32505.173 + PocoCppParserA64d + PocoCppParsermdd + PocoCppParsermtd + PocoCppParserA64 + PocoCppParsermd + PocoCppParsermt + PocoCppParserd + PocoCppParsermdd + PocoCppParsermtd + PocoCppParser + PocoCppParsermd + PocoCppParsermt + PocoCppParser64d + PocoCppParsermdd + PocoCppParsermtd + PocoCppParser64 + PocoCppParsermd + PocoCppParsermt + + + ..\binA64\ + objA64\CppParser\$(Configuration)\ + true + + + ..\binA64\ + objA64\CppParser\$(Configuration)\ + false + + + ..\libA64\ + objA64\CppParser\$(Configuration)\ + + + ..\libA64\ + objA64\CppParser\$(Configuration)\ + + + ..\libA64\ + objA64\CppParser\$(Configuration)\ + + + ..\libA64\ + objA64\CppParser\$(Configuration)\ + + + ..\bin\ + obj\CppParser\$(Configuration)\ + true + + + ..\bin\ + obj\CppParser\$(Configuration)\ + false + + + ..\lib\ + obj\CppParser\$(Configuration)\ + + + ..\lib\ + obj\CppParser\$(Configuration)\ + + + ..\lib\ + obj\CppParser\$(Configuration)\ + + + ..\lib\ + obj\CppParser\$(Configuration)\ + + + ..\bin64\ + obj64\CppParser\$(Configuration)\ + true + + + ..\bin64\ + obj64\CppParser\$(Configuration)\ + false + + + ..\lib64\ + obj64\CppParser\$(Configuration)\ + + + ..\lib64\ + obj64\CppParser\$(Configuration)\ + + + ..\lib64\ + obj64\CppParser\$(Configuration)\ + + + ..\lib64\ + obj64\CppParser\$(Configuration)\ + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;CppParser_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + ..\binA64\PocoCppParserA64d.dll + true + true + ..\binA64\PocoCppParserA64d.pdb + ..\libA64;%(AdditionalLibraryDirectories) + Console + ..\libA64\PocoCppParserd.lib + MachineARM64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;CppParser_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + ..\binA64\PocoCppParserA64.dll + true + false + ..\libA64;%(AdditionalLibraryDirectories) + Console + true + true + ..\libA64\PocoCppParser.lib + MachineARM64 + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\libA64\PocoCppParsermtd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\libA64\PocoCppParsermtd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + ..\libA64\PocoCppParsermt.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\libA64\PocoCppParsermdd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\libA64\PocoCppParsermdd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + ..\libA64\PocoCppParsermd.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;CppParser_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + ..\bin\PocoCppParserd.dll + true + true + ..\bin\PocoCppParserd.pdb + ..\lib;%(AdditionalLibraryDirectories) + Console + ..\lib\PocoCppParserd.lib + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;CppParser_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + ..\bin\PocoCppParser.dll + true + false + ..\lib;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib\PocoCppParser.lib + MachineX86 + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\lib\PocoCppParsermtd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\lib\PocoCppParsermtd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + ..\lib\PocoCppParsermt.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\lib\PocoCppParsermdd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\lib\PocoCppParsermdd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + ..\lib\PocoCppParsermd.pdb + Level3 + + Default + true + + + ..\lib\PocoCppParsermd.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;CppParser_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + ..\bin64\PocoCppParser64d.dll + true + true + ..\bin64\PocoCppParser64d.pdb + ..\lib64;%(AdditionalLibraryDirectories) + Console + ..\lib64\PocoCppParserd.lib + MachineX64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;CppParser_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + ..\bin64\PocoCppParser64.dll + true + false + ..\lib64;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib64\PocoCppParser.lib + MachineX64 + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\lib64\PocoCppParsermtd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\lib64\PocoCppParsermtd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + ..\lib64\PocoCppParsermt.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\lib64\PocoCppParsermdd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\lib64\PocoCppParsermdd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + ..\lib64\PocoCppParsermd.lib + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + diff --git a/vendor/POCO/CppParser/CppParser_vs170.vcxproj.filters b/vendor/POCO/CppParser/CppParser_vs170.vcxproj.filters new file mode 100644 index 00000000..81ba3646 --- /dev/null +++ b/vendor/POCO/CppParser/CppParser_vs170.vcxproj.filters @@ -0,0 +1,144 @@ + + + + + {803680d7-8697-4833-ac76-c0b035a48327} + + + {6a32a7ae-3ba1-4d1b-a430-369514733719} + + + {d26b3bc1-6ae7-43a8-b70a-7b92124b85ba} + + + {d733f192-ef00-4438-9249-ed2f61cda759} + + + {835f5859-0043-4810-b49f-569906e74133} + + + {d2110c01-94b4-49f3-af2c-e902c90a3b01} + + + {f2afc2af-bcb9-4800-8ec3-7c4cdd55f76c} + + + {ceac8a5a-7b87-4cad-8be7-1578e4516e01} + + + {b152b378-58a8-4c41-8bcf-f6d1a1a247b9} + + + + + CppParser\Header Files + + + CppParser\Header Files + + + CppParser\Header Files + + + CppParser\Header Files + + + CppParser\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Symbol Table\Header Files + + + Attributes\Header Files + + + Attributes\Header Files + + + + + CppParser\Source Files + + + CppParser\Source Files + + + CppParser\Source Files + + + CppParser\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Symbol Table\Source Files + + + Attributes\Source Files + + + Attributes\Source Files + + + + + + \ No newline at end of file diff --git a/vendor/POCO/CppParser/include/Poco/CppParser/Attributes.h b/vendor/POCO/CppParser/include/Poco/CppParser/Attributes.h index 2f90db26..3c1519b2 100644 --- a/vendor/POCO/CppParser/include/Poco/CppParser/Attributes.h +++ b/vendor/POCO/CppParser/include/Poco/CppParser/Attributes.h @@ -34,7 +34,7 @@ class CppParser_API Attributes public: typedef std::map AttrMap; typedef AttrMap::const_iterator Iterator; - + Attributes(); /// Creates the Attributes object. @@ -46,15 +46,15 @@ public: Attributes& operator = (const Attributes& attrs); /// Assignment operator. - + bool has(const std::string& name) const; /// Returns true if an attribute with the given name exists. - + std::string getString(const std::string& name) const; /// Returns the attribute's value as a string. /// /// Throws a Poco::NotFoundException if the attribute does not exist. - + std::string getString(const std::string& name, const std::string& defaultValue) const; /// Returns the attribute's value as a string, if it exists. /// Returns the defaultValue if the attribute does not exist. @@ -64,7 +64,7 @@ public: /// /// Throws a Poco::NotFoundException if the attribute does not exist. /// Throws a Poco::SyntaxException if the stored value is not an integer. - + int getInt(const std::string& name, int defaultValue) const; /// Returns the attribute's value as an integer, if it exists. /// Returns the defaultValue if the attribute does not exist. @@ -74,7 +74,7 @@ public: bool getBool(const std::string& name) const; /// Returns the attribute's value as a boolean. /// The returned value is 'true', iff the stored value is not "false". - /// + /// /// Throws a Poco::NotFoundException if the attribute does not exist. bool getBool(const std::string& name, bool defaultValue) const; @@ -83,17 +83,17 @@ public: void set(const std::string& name, const std::string& value); /// Sets the value of an attribute. - + void remove(const std::string& name); /// Removes the attribute with the given name. /// Does nothing if the attribute does not exist. - + const std::string& operator [] (const std::string& name) const; - std::string& operator [] (const std::string& name); - + std::string& operator [] (const std::string& name); + Iterator begin() const; Iterator end() const; - + void clear(); /// Clears all attributes. diff --git a/vendor/POCO/CppParser/include/Poco/CppParser/AttributesParser.h b/vendor/POCO/CppParser/include/Poco/CppParser/AttributesParser.h index 8dcd6253..2cbeee8e 100644 --- a/vendor/POCO/CppParser/include/Poco/CppParser/AttributesParser.h +++ b/vendor/POCO/CppParser/include/Poco/CppParser/AttributesParser.h @@ -34,13 +34,13 @@ class CppParser_API AttributesParser /// structs/classes, functions, types, etc. can be annotated /// with attributes. /// - /// Attributes always come immediately before the symbol that + /// Attributes always come immediately before the symbol that /// is being annotated, and are written inside special comments /// with the syntax: /// //@ [,...] /// where is /// [=] - /// is a valid C++ identifier, or two identifiers separated by + /// is a valid C++ identifier, or two identifiers separated by /// a period (struct accessor notation). /// is a string, integer, identifier, bool literal, or a complex value /// in the form @@ -67,7 +67,7 @@ protected: static bool isOperator(const Poco::Token* pToken, int kind); static bool isLiteral(const Poco::Token* pToken); static bool isEOF(const Poco::Token* pToken); - + private: Attributes& _attrs; Tokenizer _tokenizer; diff --git a/vendor/POCO/CppParser/include/Poco/CppParser/Function.h b/vendor/POCO/CppParser/include/Poco/CppParser/Function.h index b59c273c..8e367171 100644 --- a/vendor/POCO/CppParser/include/Poco/CppParser/Function.h +++ b/vendor/POCO/CppParser/include/Poco/CppParser/Function.h @@ -48,7 +48,7 @@ public: FN_DEFAULT = 512, /// The function is default. FN_DELETE = 1024 /// The function has been deleted. }; - + typedef std::vector Parameters; typedef Parameters::const_iterator Iterator; @@ -68,73 +68,76 @@ public: Iterator end() const; /// Returns an iterator for iterating over the Function's Parameter's. - + void makeInline(); /// Sets the FN_INLINE flag. - + void makeConst(); /// Sets the FN_CONST flag. - + void makePureVirtual(); /// Sets the FN_PURE_VIRTUAL flag. - + void makeFinal(); /// Sets the FN_FINAL flag. - + void makeOverride(); /// Sets the FN_OVERRIDE flag. - + void makeNoexcept(); /// Sets the FN_NOEXCEPT flag. void makeDefault(); /// Sets the FN_DEFAULT flag. - + void makeDelete(); /// Sets the FN_DELETE flag. - + int flags() const; /// Returns the function's flags. - + bool isConstructor() const; /// Returns true iff the function is a constructor. - + bool isDestructor() const; /// Returns true iff the function is a destructor. bool isMethod() const; /// Returns true iff the function is a method (it's part of /// a Struct and it's neither a constructor nor a destructor). - + bool isFunction() const; /// Returns true iff the function is not a member of a class /// (a freestanding function). bool isConst() const; /// Returns true iff the method is const. - + bool isDefault() const; /// Returns true iff the method has a default implementation. bool isDeleted() const; /// Returns true iff the method has been deleted. + bool isStatic() const; + /// Returns true iff the method is static. + int countParameters() const; /// Returns the number of parameters. - + std::string signature() const; /// Returns the signature of the function. - + bool isVirtual() const; /// Returns true if the method is virtual. Also examines base /// classes to check for a virtual function with the same /// signature. - + Function* getOverridden() const; /// If the function is virtual and overrides a function in a /// base class, the base class function is returned. /// Otherwise, null is returned. - + Symbol::Kind kind() const; std::string toString() const; @@ -178,6 +181,12 @@ inline bool Function::isDeleted() const } +inline bool Function::isStatic() const +{ + return (flags() & FN_STATIC) != 0; +} + + } } // namespace Poco::CppParser diff --git a/vendor/POCO/CppParser/include/Poco/CppParser/NameSpace.h b/vendor/POCO/CppParser/include/Poco/CppParser/NameSpace.h index bd3417b9..02d7f545 100644 --- a/vendor/POCO/CppParser/include/Poco/CppParser/NameSpace.h +++ b/vendor/POCO/CppParser/include/Poco/CppParser/NameSpace.h @@ -37,7 +37,7 @@ public: typedef SymbolTable::const_iterator Iterator; typedef std::map AliasMap; typedef std::vector NameSpaceVec; - + NameSpace(); /// Creates the NameSpace. @@ -46,56 +46,56 @@ public: ~NameSpace(); /// Destroys the NameSpace. - + void addSymbol(Symbol* pSymbol); /// Adds a symbol to the namespace. - + void importSymbol(const std::string& fullName); /// Imports a symbol from another namespace (using ). - + void importNameSpace(const std::string& nameSpace); /// Imports a namespace (using namespace ). - + Iterator begin() const; /// Returns an iterator for iterating over the NameSpace's Symbol's. Iterator end() const; /// Returns an iterator for iterating over the NameSpace's Symbol's. - + Symbol* lookup(const std::string& name) const; /// Looks up the given name in the symbol table /// and returns the corresponding symbol, or null /// if no symbol can be found. The name can include /// a namespace. - + static NameSpace* root(); /// Returns the root namespace. Never delete this one! - + void nameSpaces(SymbolTable& table) const; /// Fills the symbol table with all namespaces. - + void typeDefs(SymbolTable& table) const; /// Fills the symbol table with all type definitions. - + void typeAliases(SymbolTable& table) const; /// Fills the symbol table with all type alias (using) definitions. void enums(SymbolTable& table) const; /// Fills the symbol table with all enums. - + void classes(SymbolTable& table) const; /// Fills the symbol table with all classes and structs. - + void functions(SymbolTable& table) const; /// Fills the symbol table with all functions. - + void variables(SymbolTable& table) const; /// Fills the symbol table with all variables. - + const AliasMap& importedSymbols() const; /// Returns a const reference to a SymbolTable containing all /// imported symbols. - + const NameSpaceVec& importedNameSpaces() const; /// Returns a vector containing all imported namespaces. @@ -128,7 +128,7 @@ inline const NameSpace::AliasMap& NameSpace::importedSymbols() const return _importedSymbols; } - + inline const NameSpace::NameSpaceVec& NameSpace::importedNameSpaces() const { return _importedNameSpaces; diff --git a/vendor/POCO/CppParser/include/Poco/CppParser/Parser.h b/vendor/POCO/CppParser/include/Poco/CppParser/Parser.h index 6c7e4a4d..060551b8 100644 --- a/vendor/POCO/CppParser/include/Poco/CppParser/Parser.h +++ b/vendor/POCO/CppParser/include/Poco/CppParser/Parser.h @@ -82,7 +82,7 @@ protected: const Poco::Token* parseClassMembers(const Poco::Token* pNext, Struct* pClass); const Poco::Token* parseAccess(const Poco::Token* pNext); const Poco::Token* parseIdentifier(const Poco::Token* pNext, std::string& id); - + void addSymbol(Symbol* pSymbol, int lineNumber, bool addGST = true); void pushNameSpace(NameSpace* pNameSpace, int lineNumber, bool addGST = true); void popNameSpace(); diff --git a/vendor/POCO/CppParser/include/Poco/CppParser/Struct.h b/vendor/POCO/CppParser/include/Poco/CppParser/Struct.h index 12c25cbf..2c3a5c7c 100644 --- a/vendor/POCO/CppParser/include/Poco/CppParser/Struct.h +++ b/vendor/POCO/CppParser/include/Poco/CppParser/Struct.h @@ -42,7 +42,7 @@ public: FN_TEMPLATE_SPECIALIZATION = 4, FN_FINAL = 8 }; - + struct Base { Symbol::Access access; @@ -50,7 +50,7 @@ public: std::string name; Struct* pClass; }; - + typedef std::vector BaseClasses; typedef BaseClasses::const_iterator BaseIterator; typedef std::vector StructVec; @@ -67,13 +67,13 @@ public: void addBase(const std::string&, Symbol::Access access, bool isVirtual); /// Adds a base class. - + BaseIterator baseBegin() const; /// Returns an iterator for iterating over all base classes. - + BaseIterator baseEnd() const; /// Returns an iterator for iterating over all base classes. - + void fixupBases(); /// Adds pointers for all base classes. @@ -88,13 +88,13 @@ public: const std::string& declaration() const; /// Returns the declaration. - + int flags() const; /// Returns the struct's flags. void makeInline(); /// Changes the class to a inline class, i.e. definition and implementation are hidden in a cpp file. - + void makeFinal(); /// Makes the class final. @@ -106,39 +106,39 @@ public: void constructors(Functions& functions) const; /// Returns all constructors, sorted by their parameter count. - + Function* destructor() const; /// Returns the destructor, or NULL if no /// destructor is defined. void methods(Symbol::Access access, Functions& functions) const; /// Returns all functions with the given access. - + void inheritedMethods(FunctionSet& functions) const; /// Returns all inherited methods. - + void bases(std::set& bases) const; /// Returns all base classes. - + void derived(StructSet& derived) const; - /// Returns all derived classes. - + /// Returns all derived classes. + Function* findFunction(const std::string& signature) const; /// Finds a function with the given signature. - + bool hasVirtualDestructor() const; /// Returns true if the class CppParser_API or one if its base classes /// has a virtual destructor. bool isClass() const; /// Returns true iff the struct was declared as class. - + bool isDerived() const; /// Returns true iff the struct or class is derived from another struct or class. Symbol::Kind kind() const; std::string toString() const; - + private: std::string _decl; BaseClasses _bases; diff --git a/vendor/POCO/CppParser/include/Poco/CppParser/Utility.h b/vendor/POCO/CppParser/include/Poco/CppParser/Utility.h index 3ded488e..8fa9267b 100644 --- a/vendor/POCO/CppParser/include/Poco/CppParser/Utility.h +++ b/vendor/POCO/CppParser/include/Poco/CppParser/Utility.h @@ -37,9 +37,9 @@ public: public: std::string beginNameSpaceDecl; // contains either $(NS)_BEGIN or the namespace x { decl std::string endNameSpaceDecl; // contains either $(NS)_END or the closing brackets } - std::vector classDecls; // contains strings of the form "class X;" + std::vector classDecls; // contains strings of the form "class X;" }; - + static void parse(const std::string& file, NameSpace::SymbolTable& st, const std::string& exec, const std::string& options, const std::string& path); /// Preprocesses and parses the file. The resulting symboltable has base class references already fixed, diff --git a/vendor/POCO/CppParser/include/Poco/CppParser/Variable.h b/vendor/POCO/CppParser/include/Poco/CppParser/Variable.h index d167eda5..a33607fc 100644 --- a/vendor/POCO/CppParser/include/Poco/CppParser/Variable.h +++ b/vendor/POCO/CppParser/include/Poco/CppParser/Variable.h @@ -37,13 +37,13 @@ public: VAR_VOLATILE = 4, /// The variable is volatile. VAR_CONST = 8 /// The variable is const. }; - + Variable(const std::string& decl, NameSpace* pNameSpace); /// Creates the Variable. ~Variable(); /// Destroys the Variable. - + int flags() const; /// Returns the variable's flags. @@ -57,7 +57,12 @@ public: /// /// Example: a type const std::string& -> std::string, a type const std::string* returns std::string - + bool isConst() const; + /// Returns true iff the variable is const. + + bool isStatic() const; + /// Returns true iff the variable is static. + private: int _flags; bool _isPointer; @@ -80,6 +85,18 @@ inline bool Variable::isPointer() const } +inline bool Variable::isConst() const +{ + return (flags() & VAR_CONST) != 0; +} + + +inline bool Variable::isStatic() const +{ + return (flags() & VAR_STATIC) != 0; +} + + inline const std::string& Variable::declType() const { return _type; diff --git a/vendor/POCO/CppParser/src/Attributes.cpp b/vendor/POCO/CppParser/src/Attributes.cpp index 21d14e80..5507d20c 100644 --- a/vendor/POCO/CppParser/src/Attributes.cpp +++ b/vendor/POCO/CppParser/src/Attributes.cpp @@ -48,13 +48,13 @@ Attributes& Attributes::operator = (const Attributes& attrs) return *this; } - + bool Attributes::has(const std::string& name) const { return _map.find(name) != _map.end(); } - + std::string Attributes::getString(const std::string& name) const { AttrMap::const_iterator it = _map.find(name); @@ -64,7 +64,7 @@ std::string Attributes::getString(const std::string& name) const throw Poco::NotFoundException(name); } - + std::string Attributes::getString(const std::string& name, const std::string& defaultValue) const { AttrMap::const_iterator it = _map.find(name); @@ -84,7 +84,7 @@ int Attributes::getInt(const std::string& name) const throw Poco::NotFoundException(name); } - + int Attributes::getInt(const std::string& name, int defaultValue) const { AttrMap::const_iterator it = _map.find(name); diff --git a/vendor/POCO/CppParser/src/AttributesParser.cpp b/vendor/POCO/CppParser/src/AttributesParser.cpp index 441c988b..ef8eb3dc 100644 --- a/vendor/POCO/CppParser/src/AttributesParser.cpp +++ b/vendor/POCO/CppParser/src/AttributesParser.cpp @@ -88,7 +88,7 @@ const Token* AttributesParser::parseAttribute(const Token* pNext) const Token* AttributesParser::parseComplexAttribute(const Token* pNext, const std::string& id) { poco_assert_dbg (isOperator(pNext, OperatorToken::OP_OPENBRACE)); - + pNext = next(); std::string oldId(_id); if (!_id.empty()) @@ -103,7 +103,7 @@ const Token* AttributesParser::parseComplexAttribute(const Token* pNext, const s pNext = next(); else throw SyntaxException("bad attribute declaration"); - + return pNext; } diff --git a/vendor/POCO/CppParser/src/Function.cpp b/vendor/POCO/CppParser/src/Function.cpp index b518d894..e41db800 100644 --- a/vendor/POCO/CppParser/src/Function.cpp +++ b/vendor/POCO/CppParser/src/Function.cpp @@ -111,13 +111,13 @@ void Function::makeFinal() _flags |= FN_FINAL; } - + void Function::makeOverride() { _flags |= FN_OVERRIDE; } - + void Function::makeNoexcept() { _flags |= FN_NOEXCEPT; @@ -141,7 +141,7 @@ bool Function::isConstructor() const return name() == nameSpace()->name(); } - + bool Function::isDestructor() const { return name()[0] == '~'; @@ -201,7 +201,7 @@ std::string Function::signature() const return signature; } - + bool Function::isVirtual() const { if (_flags & FN_VIRTUAL) diff --git a/vendor/POCO/CppParser/src/NameSpace.cpp b/vendor/POCO/CppParser/src/NameSpace.cpp index 7551bc17..9bd68303 100644 --- a/vendor/POCO/CppParser/src/NameSpace.cpp +++ b/vendor/POCO/CppParser/src/NameSpace.cpp @@ -49,7 +49,7 @@ NameSpace::~NameSpace() void NameSpace::addSymbol(Symbol* pSymbol) { poco_check_ptr (pSymbol); - + _symbols.insert(SymbolTable::value_type(pSymbol->name(), pSymbol)); } @@ -65,7 +65,7 @@ void NameSpace::importSymbol(const std::string& fullName) } } - + void NameSpace::importNameSpace(const std::string& nameSpace) { _importedNameSpaces.push_back(nameSpace); @@ -94,7 +94,7 @@ Symbol* NameSpace::lookup(const std::string& name) const Symbol* NameSpace::lookup(const std::string& name, std::set& alreadyVisited) const { Symbol* pSymbol = 0; - + if (name.empty()) return pSymbol; @@ -103,12 +103,12 @@ Symbol* NameSpace::lookup(const std::string& name, std::set& a std::string head; std::string tail; splitName(name, head, tail); - + alreadyVisited.insert(this); bool currentNSInserted = true; - - if (head.empty()) + + if (head.empty()) { alreadyVisited.insert(this); return root()->lookup(tail, alreadyVisited); @@ -161,13 +161,13 @@ void NameSpace::nameSpaces(SymbolTable& table) const extract(Symbol::SYM_NAMESPACE, table); } - + void NameSpace::typeDefs(SymbolTable& table) const { extract(Symbol::SYM_TYPEDEF, table); } - + void NameSpace::typeAliases(SymbolTable& table) const { extract(Symbol::SYM_TYPEALIAS, table); @@ -179,19 +179,19 @@ void NameSpace::enums(SymbolTable& table) const extract(Symbol::SYM_ENUM, table); } - + void NameSpace::classes(SymbolTable& table) const { extract(Symbol::SYM_STRUCT, table); } - + void NameSpace::functions(SymbolTable& table) const { extract(Symbol::SYM_FUNCTION, table); } - + void NameSpace::variables(SymbolTable& table) const { extract(Symbol::SYM_VARIABLE, table); @@ -226,7 +226,7 @@ void NameSpace::splitName(const std::string& name, std::string& head, std::strin head.assign(name, 0, pos); pos += 2; poco_assert (pos < name.length()); - tail.assign(name, pos, name.length() - pos); + tail.assign(name, pos, name.length() - pos); } else head = name; } diff --git a/vendor/POCO/CppParser/src/Parser.cpp b/vendor/POCO/CppParser/src/Parser.cpp index db4cc80d..1da09fab 100644 --- a/vendor/POCO/CppParser/src/Parser.cpp +++ b/vendor/POCO/CppParser/src/Parser.cpp @@ -133,6 +133,7 @@ inline void Parser::append(std::string& decl, const std::string& token) || token == "static" || token == "mutable" || token == "inline" + || token == "virtual" || token == "volatile" || token == "register" || token == "thread_local") @@ -379,7 +380,7 @@ const Token* Parser::parseClassMembers(const Token* pNext, Struct* /*pClass*/) poco_assert (isOperator(pNext, OperatorToken::OP_OPENBRACE)); pNext = next(); - while (pNext->is(Token::IDENTIFIER_TOKEN) || pNext->is(Token::KEYWORD_TOKEN) || isOperator(pNext, OperatorToken::OP_COMPL)) + while (pNext->is(Token::IDENTIFIER_TOKEN) || pNext->is(Token::KEYWORD_TOKEN) || isOperator(pNext, OperatorToken::OP_COMPL) || isOperator(pNext, OperatorToken::OP_DBL_COLON)) { switch (pNext->asInteger()) { diff --git a/vendor/POCO/CppParser/src/Struct.cpp b/vendor/POCO/CppParser/src/Struct.cpp index 02db8832..fa2ed6db 100644 --- a/vendor/POCO/CppParser/src/Struct.cpp +++ b/vendor/POCO/CppParser/src/Struct.cpp @@ -62,7 +62,7 @@ void Struct::addBase(const std::string& name, Symbol::Access access, bool isVirt _bases.push_back(base); } - + Struct::BaseIterator Struct::baseBegin() const { return _bases.begin(); @@ -78,7 +78,7 @@ Struct::BaseIterator Struct::baseEnd() const void Struct::addDerived(Struct* pClass) { poco_check_ptr (pClass); - + _derived.push_back(pClass); } diff --git a/vendor/POCO/CppParser/src/Tokenizer.cpp b/vendor/POCO/CppParser/src/Tokenizer.cpp index d557e2a8..a5125858 100644 --- a/vendor/POCO/CppParser/src/Tokenizer.cpp +++ b/vendor/POCO/CppParser/src/Tokenizer.cpp @@ -25,7 +25,7 @@ namespace CppParser { Tokenizer::Tokenizer(std::istream& istr): - StreamTokenizer(istr) + StreamTokenizer(istr) { addToken(new OperatorToken); addToken(new IdentifierToken); diff --git a/vendor/POCO/CppParser/src/Utility.cpp b/vendor/POCO/CppParser/src/Utility.cpp index 2eb93a26..c6017a01 100644 --- a/vendor/POCO/CppParser/src/Utility.cpp +++ b/vendor/POCO/CppParser/src/Utility.cpp @@ -195,14 +195,14 @@ std::string Utility::preprocessFile(const std::string& file, const std::string& newPath += path; Environment::set("PATH", path); } - - ProcessHandle proc = Process::launch(exec, args); + + ProcessHandle proc = Process::launch(exec, args); int rc = Process::wait(proc); if (rc != 0) { throw Poco::RuntimeException("Failed to process file"); } - + return pp.getFileName(); } @@ -293,7 +293,7 @@ std::string replace(const std::string& input, const std::string& oldToken, const start = pos + oldToken.length(); } while (pos != std::string::npos); - + return result; } diff --git a/vendor/POCO/CppParser/src/Variable.cpp b/vendor/POCO/CppParser/src/Variable.cpp index 01459f0e..5062e803 100644 --- a/vendor/POCO/CppParser/src/Variable.cpp +++ b/vendor/POCO/CppParser/src/Variable.cpp @@ -39,10 +39,10 @@ Variable::Variable(const std::string& decl, NameSpace* pNameSpace): std::size_t pos = decl.rfind(name()); std::string tmp = decl.substr(0, pos); tmp = Poco::trim(tmp); - + pos = tmp.rfind("*"); _isPointer = (pos == (tmp.size()-1)); - + Poco::replaceInPlace(tmp, "static ", ""); Poco::replaceInPlace(tmp, "mutable ", ""); Poco::replaceInPlace(tmp, "volatile ", ""); @@ -53,7 +53,7 @@ Variable::Variable(const std::string& decl, NameSpace* pNameSpace): tmp = tmp.substr(6); if (tmp.find("const\t") == 0) tmp = tmp.substr(6); - + std::size_t rightCut = tmp.size(); while (rightCut > 0 && (tmp[rightCut-1] == '&' || tmp[rightCut-1] == '*' || tmp[rightCut-1] == '\t' || tmp[rightCut-1] == ' ')) --rightCut; diff --git a/vendor/POCO/CppParser/testsuite/TestSuite_vs170.vcxproj b/vendor/POCO/CppParser/testsuite/TestSuite_vs170.vcxproj new file mode 100644 index 00000000..8ddceef3 --- /dev/null +++ b/vendor/POCO/CppParser/testsuite/TestSuite_vs170.vcxproj @@ -0,0 +1,917 @@ + + + + + debug_shared + ARM64 + + + debug_shared + Win32 + + + debug_shared + x64 + + + debug_static_md + ARM64 + + + debug_static_md + Win32 + + + debug_static_md + x64 + + + debug_static_mt + ARM64 + + + debug_static_mt + Win32 + + + debug_static_mt + x64 + + + release_shared + ARM64 + + + release_shared + Win32 + + + release_shared + x64 + + + release_static_md + ARM64 + + + release_static_md + Win32 + + + release_static_md + x64 + + + release_static_mt + ARM64 + + + release_static_mt + Win32 + + + release_static_mt + x64 + + + + 17.0 + TestSuite + {C79112BD-EC91-11DA-A4CE-005056C00008} + TestSuite + Win32Proj + + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + Application + MultiByte + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>17.0.32505.173 + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + TestSuited + TestSuited + TestSuited + TestSuite + TestSuite + TestSuite + + + binA64\ + objA64\TestSuite\$(Configuration)\ + true + + + binA64\ + objA64\TestSuite\$(Configuration)\ + false + + + binA64\static_mt\ + objA64\TestSuite\$(Configuration)\ + true + + + binA64\static_mt\ + objA64\TestSuite\$(Configuration)\ + false + + + binA64\static_md\ + objA64\TestSuite\$(Configuration)\ + true + + + binA64\static_md\ + objA64\TestSuite\$(Configuration)\ + false + + + bin\ + obj\TestSuite\$(Configuration)\ + true + + + bin\ + obj\TestSuite\$(Configuration)\ + false + + + bin\static_mt\ + obj\TestSuite\$(Configuration)\ + true + + + bin\static_mt\ + obj\TestSuite\$(Configuration)\ + false + + + bin\static_md\ + obj\TestSuite\$(Configuration)\ + true + + + bin\static_md\ + obj\TestSuite\$(Configuration)\ + false + + + bin64\ + obj64\TestSuite\$(Configuration)\ + true + + + bin64\ + obj64\TestSuite\$(Configuration)\ + false + + + bin64\static_mt\ + obj64\TestSuite\$(Configuration)\ + true + + + bin64\static_mt\ + obj64\TestSuite\$(Configuration)\ + false + + + bin64\static_md\ + obj64\TestSuite\$(Configuration)\ + true + + + bin64\static_md\ + obj64\TestSuite\$(Configuration)\ + false + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitd.lib;iphlpapi.lib;%(AdditionalDependencies) + binA64\TestSuited.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + true + true + binA64\TestSuited.pdb + Console + MachineARM64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + CppUnit.lib;iphlpapi.lib;%(AdditionalDependencies) + binA64\TestSuite.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineARM64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitmtd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) + binA64\static_mt\TestSuited.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + true + true + binA64\static_mt\TestSuited.pdb + Console + MachineARM64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + CppUnitmt.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) + binA64\static_mt\TestSuite.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineARM64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitmdd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) + binA64\static_md\TestSuited.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + true + true + binA64\static_md\TestSuited.pdb + Console + MachineARM64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + CppUnitmd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) + binA64\static_md\TestSuite.exe + ..\..\libA64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineARM64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitd.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\TestSuited.pdb + Console + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + CppUnit.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitmtd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_mt\TestSuited.pdb + Console + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + CppUnitmt.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_mt\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitmdd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\TestSuited.exe + ..\..\lib;%(AdditionalLibraryDirectories) + true + true + bin\static_md\TestSuited.pdb + Console + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + CppUnitmd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) + bin\static_md\TestSuite.exe + ..\..\lib;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX86 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitd.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\TestSuited.pdb + Console + MachineX64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + CppUnit.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitmtd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_mt\TestSuited.pdb + Console + MachineX64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + CppUnitmt.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_mt\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + Disabled + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + CppUnitmdd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\TestSuited.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + true + true + bin64\static_md\TestSuited.pdb + Console + MachineX64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + CppUnitmd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies) + bin64\static_md\TestSuite.exe + ..\..\lib64;%(AdditionalLibraryDirectories) + false + Console + true + true + MachineX64 + + + + + + + + + + + true + + + true + + + true + + + true + + + true + + + + + diff --git a/vendor/POCO/CppParser/testsuite/TestSuite_vs170.vcxproj.filters b/vendor/POCO/CppParser/testsuite/TestSuite_vs170.vcxproj.filters new file mode 100644 index 00000000..f1ab44ce --- /dev/null +++ b/vendor/POCO/CppParser/testsuite/TestSuite_vs170.vcxproj.filters @@ -0,0 +1,69 @@ + + + + + {32b5b8b3-f611-46b3-897a-4550a2515f92} + + + {58743500-0848-494f-a502-b68f27b3256c} + + + {a1f073e1-dc90-4eab-945f-182686ed6128} + + + {bfc413dd-7df1-44ab-b7b3-b41c2cbaecca} + + + {bc042bae-b97a-4782-8493-849b8e686ade} + + + {50afe903-da52-4eba-b6d3-e9e9616dad86} + + + {0240b864-f514-4091-acda-d84086cac637} + + + {061dd92e-31b4-44ff-907e-4a7d7bdb6ab3} + + + {c4f20879-a8ef-4a7f-adc3-987a0924f24e} + + + {c1031026-be95-4244-9610-21ee3abcd573} + + + {2c59e42b-60d9-4375-9501-4f8a179dbebc} + + + + + CppParser\Header Files + + + _Suite\Header Files + + + Attributes\Header Files + + + Attributes\Header Files + + + + + CppParser\Source Files + + + _Suite\Source Files + + + _Driver\Source Files + + + Attributes\Source Files + + + Attributes\Source Files + + + \ No newline at end of file diff --git a/vendor/POCO/CppUnit/CMakeLists.txt b/vendor/POCO/CppUnit/CMakeLists.txt index c367bd2b..78b89d44 100644 --- a/vendor/POCO/CppUnit/CMakeLists.txt +++ b/vendor/POCO/CppUnit/CMakeLists.txt @@ -18,10 +18,15 @@ target_link_libraries(CppUnit PUBLIC Poco::Foundation) target_include_directories(CppUnit PUBLIC $ - $ + $ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ) +if(WIN32) + if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + target_compile_definitions(CppUnit PUBLIC POCO_NO_AUTOMATIC_LIBS) + endif() +endif() if(NOT BUILD_SHARED_LIBS) target_compile_definitions(CppUnit diff --git a/vendor/POCO/CppUnit/CppUnit.progen b/vendor/POCO/CppUnit/CppUnit.progen index c32c5e8d..fe4a5976 100644 --- a/vendor/POCO/CppUnit/CppUnit.progen +++ b/vendor/POCO/CppUnit/CppUnit.progen @@ -1,6 +1,6 @@ vc.project.guid = 138BB448-808A-4FE5-A66D-78D1F8770F59 vc.project.name = CppUnit -vc.project.target = Poco${vc.project.name} +vc.project.target = ${vc.project.name} vc.project.type = library vc.project.pocobase = .. vc.project.outdir = ${vc.project.pocobase} diff --git a/vendor/POCO/CppUnit/CppUnit_vs140.vcxproj b/vendor/POCO/CppUnit/CppUnit_vs140.vcxproj index dd1dc673..9e23021a 100644 --- a/vendor/POCO/CppUnit/CppUnit_vs140.vcxproj +++ b/vendor/POCO/CppUnit/CppUnit_vs140.vcxproj @@ -55,7 +55,6 @@ {138BB448-808A-4FE5-A66D-78D1F8770F59} CppUnit Win32Proj - 8.1 diff --git a/vendor/POCO/CppUnit/CppUnit_vs150.vcxproj b/vendor/POCO/CppUnit/CppUnit_vs150.vcxproj index 79e00b80..3e661165 100644 --- a/vendor/POCO/CppUnit/CppUnit_vs150.vcxproj +++ b/vendor/POCO/CppUnit/CppUnit_vs150.vcxproj @@ -55,7 +55,6 @@ {138BB448-808A-4FE5-A66D-78D1F8770F59} CppUnit Win32Proj - 8.1 diff --git a/vendor/POCO/CppUnit/CppUnit_vs160.vcxproj b/vendor/POCO/CppUnit/CppUnit_vs160.vcxproj index de55fcfc..7eeafbc1 100644 --- a/vendor/POCO/CppUnit/CppUnit_vs160.vcxproj +++ b/vendor/POCO/CppUnit/CppUnit_vs160.vcxproj @@ -55,7 +55,6 @@ {138BB448-808A-4FE5-A66D-78D1F8770F59} CppUnit Win32Proj - 10.0 diff --git a/vendor/POCO/CppUnit/CppUnit_vs170.sln b/vendor/POCO/CppUnit/CppUnit_vs170.sln new file mode 100644 index 00000000..e9a5caf6 --- /dev/null +++ b/vendor/POCO/CppUnit/CppUnit_vs170.sln @@ -0,0 +1,85 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppUnit", "CppUnit_vs170.vcxproj", "{138BB448-808A-4FE5-A66D-78D1F8770F59}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + debug_shared|ARM64 = debug_shared|ARM64 + release_shared|ARM64 = release_shared|ARM64 + debug_static_mt|ARM64 = debug_static_mt|ARM64 + release_static_mt|ARM64 = release_static_mt|ARM64 + debug_static_md|ARM64 = debug_static_md|ARM64 + release_static_md|ARM64 = release_static_md|ARM64 + debug_shared|Win32 = debug_shared|Win32 + release_shared|Win32 = release_shared|Win32 + debug_static_mt|Win32 = debug_static_mt|Win32 + release_static_mt|Win32 = release_static_mt|Win32 + debug_static_md|Win32 = debug_static_md|Win32 + release_static_md|Win32 = release_static_md|Win32 + debug_shared|x64 = debug_shared|x64 + release_shared|x64 = release_shared|x64 + debug_static_mt|x64 = debug_static_mt|x64 + release_static_mt|x64 = release_static_mt|x64 + debug_static_md|x64 = debug_static_md|x64 + release_static_md|x64 = release_static_md|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|ARM64.Build.0 = debug_shared|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|ARM64.ActiveCfg = release_shared|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|ARM64.Build.0 = release_shared|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|ARM64.Deploy.0 = release_shared|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|ARM64.Build.0 = release_static_md|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|Win32.Build.0 = debug_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|Win32.Deploy.0 = debug_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|Win32.ActiveCfg = release_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|Win32.Build.0 = release_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|Win32.Deploy.0 = release_shared|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|Win32.Build.0 = release_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|Win32.Build.0 = debug_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|Win32.ActiveCfg = release_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|Win32.Build.0 = release_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|Win32.Deploy.0 = release_static_md|Win32 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|x64.ActiveCfg = debug_shared|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|x64.Build.0 = debug_shared|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_shared|x64.Deploy.0 = debug_shared|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|x64.ActiveCfg = release_shared|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|x64.Build.0 = release_shared|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_shared|x64.Deploy.0 = release_shared|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|x64.Build.0 = debug_static_mt|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|x64.ActiveCfg = release_static_mt|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|x64.Build.0 = release_static_mt|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_mt|x64.Deploy.0 = release_static_mt|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|x64.ActiveCfg = debug_static_md|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|x64.Build.0 = debug_static_md|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.debug_static_md|x64.Deploy.0 = debug_static_md|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|x64.ActiveCfg = release_static_md|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|x64.Build.0 = release_static_md|x64 + {138BB448-808A-4FE5-A66D-78D1F8770F59}.release_static_md|x64.Deploy.0 = release_static_md|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/vendor/POCO/CppUnit/CppUnit_vs170.vcxproj b/vendor/POCO/CppUnit/CppUnit_vs170.vcxproj new file mode 100644 index 00000000..5d8927b1 --- /dev/null +++ b/vendor/POCO/CppUnit/CppUnit_vs170.vcxproj @@ -0,0 +1,852 @@ + + + + + debug_shared + ARM64 + + + debug_shared + Win32 + + + debug_shared + x64 + + + debug_static_md + ARM64 + + + debug_static_md + Win32 + + + debug_static_md + x64 + + + debug_static_mt + ARM64 + + + debug_static_mt + Win32 + + + debug_static_mt + x64 + + + release_shared + ARM64 + + + release_shared + Win32 + + + release_shared + x64 + + + release_static_md + ARM64 + + + release_static_md + Win32 + + + release_static_md + x64 + + + release_static_mt + ARM64 + + + release_static_mt + Win32 + + + release_static_mt + x64 + + + + 17.0 + CppUnit + {138BB448-808A-4FE5-A66D-78D1F8770F59} + CppUnit + Win32Proj + + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + StaticLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + DynamicLibrary + MultiByte + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>17.0.32505.173 + CppUnitA64d + CppUnitmdd + CppUnitmtd + CppUnitA64 + CppUnitmd + CppUnitmt + CppUnitd + CppUnitmdd + CppUnitmtd + CppUnit + CppUnitmd + CppUnitmt + CppUnit64d + CppUnitmdd + CppUnitmtd + CppUnit64 + CppUnitmd + CppUnitmt + + + ..\binA64\ + objA64\CppUnit\$(Configuration)\ + true + + + ..\binA64\ + objA64\CppUnit\$(Configuration)\ + false + + + ..\libA64\ + objA64\CppUnit\$(Configuration)\ + + + ..\libA64\ + objA64\CppUnit\$(Configuration)\ + + + ..\libA64\ + objA64\CppUnit\$(Configuration)\ + + + ..\libA64\ + objA64\CppUnit\$(Configuration)\ + + + ..\bin\ + obj\CppUnit\$(Configuration)\ + true + + + ..\bin\ + obj\CppUnit\$(Configuration)\ + false + + + ..\lib\ + obj\CppUnit\$(Configuration)\ + + + ..\lib\ + obj\CppUnit\$(Configuration)\ + + + ..\lib\ + obj\CppUnit\$(Configuration)\ + + + ..\lib\ + obj\CppUnit\$(Configuration)\ + + + ..\bin64\ + obj64\CppUnit\$(Configuration)\ + true + + + ..\bin64\ + obj64\CppUnit\$(Configuration)\ + false + + + ..\lib64\ + obj64\CppUnit\$(Configuration)\ + + + ..\lib64\ + obj64\CppUnit\$(Configuration)\ + + + ..\lib64\ + obj64\CppUnit\$(Configuration)\ + + + ..\lib64\ + obj64\CppUnit\$(Configuration)\ + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;POCO_NO_AUTOMATIC_LIBS;CppUnit_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + ..\binA64\CppUnitA64d.dll + true + true + ..\binA64\CppUnitA64d.pdb + ..\libA64;%(AdditionalLibraryDirectories) + Console + ..\libA64\CppUnitd.lib + MachineARM64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;POCO_NO_AUTOMATIC_LIBS;CppUnit_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + ..\binA64\CppUnitA64.dll + true + false + ..\libA64;%(AdditionalLibraryDirectories) + Console + true + true + ..\libA64\CppUnit.lib + MachineARM64 + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;POCO_NO_AUTOMATIC_LIBS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\libA64\CppUnitmtd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\libA64\CppUnitmtd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;POCO_NO_AUTOMATIC_LIBS;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + ..\libA64\CppUnitmt.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;POCO_NO_AUTOMATIC_LIBS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\libA64\CppUnitmdd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\libA64\CppUnitmdd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;POCO_NO_AUTOMATIC_LIBS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + ..\libA64\CppUnitmd.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;POCO_NO_AUTOMATIC_LIBS;CppUnit_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + ..\bin\CppUnitd.dll + true + true + ..\bin\CppUnitd.pdb + ..\lib;%(AdditionalLibraryDirectories) + Console + ..\lib\CppUnitd.lib + MachineX86 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;POCO_NO_AUTOMATIC_LIBS;CppUnit_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + ..\bin\CppUnit.dll + true + false + ..\lib;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib\CppUnit.lib + MachineX86 + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;POCO_NO_AUTOMATIC_LIBS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\lib\CppUnitmtd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\lib\CppUnitmtd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;POCO_NO_AUTOMATIC_LIBS;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + ..\lib\CppUnitmt.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;POCO_NO_AUTOMATIC_LIBS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\lib\CppUnitmdd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\lib\CppUnitmdd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;POCO_NO_AUTOMATIC_LIBS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + ..\lib\CppUnitmd.pdb + Level3 + + Default + true + + + ..\lib\CppUnitmd.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;POCO_NO_AUTOMATIC_LIBS;CppUnit_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + Level3 + ProgramDatabase + Default + true + + + ..\bin64\CppUnit64d.dll + true + true + ..\bin64\CppUnit64d.pdb + ..\lib64;%(AdditionalLibraryDirectories) + Console + ..\lib64\CppUnitd.lib + MachineX64 + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;POCO_NO_AUTOMATIC_LIBS;CppUnit_EXPORTS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + ..\bin64\CppUnit64.dll + true + false + ..\lib64;%(AdditionalLibraryDirectories) + Console + true + true + ..\lib64\CppUnit.lib + MachineX64 + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;POCO_NO_AUTOMATIC_LIBS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + true + true + true + true + + ..\lib64\CppUnitmtd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\lib64\CppUnitmtd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;POCO_NO_AUTOMATIC_LIBS;%(PreprocessorDefinitions) + true + MultiThreaded + false + true + true + true + + Level3 + + Default + true + + + ..\lib64\CppUnitmt.lib + + + + + Disabled + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;POCO_STATIC;POCO_NO_AUTOMATIC_LIBS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + true + true + true + + ..\lib64\CppUnitmdd.pdb + Level3 + ProgramDatabase + Default + true + + + ..\lib64\CppUnitmdd.lib + + + + + MaxSpeed + OnlyExplicitInline + true + Speed + true + .\include;..\Foundation\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;POCO_STATIC;POCO_NO_AUTOMATIC_LIBS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + true + true + + Level3 + + Default + true + + + ..\lib64\CppUnitmd.lib + + + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vendor/POCO/CppUnit/CppUnit_vs170.vcxproj.filters b/vendor/POCO/CppUnit/CppUnit_vs170.vcxproj.filters new file mode 100644 index 00000000..cdac40a9 --- /dev/null +++ b/vendor/POCO/CppUnit/CppUnit_vs170.vcxproj.filters @@ -0,0 +1,89 @@ + + + + + {52c8067a-54e6-44bf-a510-eb95e4ec9865} + cpp;c;cxx;rc;def;r;odl;idl;hpj;bat + + + {d1a255dc-fbfb-43a1-ad75-b34778d06787} + *.h + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + Include Files + + + \ No newline at end of file diff --git a/vendor/POCO/CppUnit/doc/README.html b/vendor/POCO/CppUnit/doc/README.html index 5f8a1418..788619cd 100644 --- a/vendor/POCO/CppUnit/doc/README.html +++ b/vendor/POCO/CppUnit/doc/README.html @@ -15,14 +15,14 @@

CppUnit is a simple unit test framework for C++. It is a port from JUnit, a testing framework for Java, developed by Kent Beck and Erich Gamma.

Contents

README.html                     this file
-    
+   
     test                        the source code
         framework               the testing framework
-		extensions	some framework extension classes 
-        textui                  a command line interface to run tests 
+		extensions	some framework extension classes
+        textui                  a command line interface to run tests
     ms                          code for a Microsoft specific TestRunner
     samples                     some example test cases and extensions to the framework
-        multicaster             a sample illustrating a publish/subscribe 
+        multicaster             a sample illustrating a publish/subscribe
 				multicaster under test
     doc                         documentation

Installation

diff --git a/vendor/POCO/CppUnit/doc/cookbook.htm b/vendor/POCO/CppUnit/doc/cookbook.htm index 08224883..2cf02725 100644 --- a/vendor/POCO/CppUnit/doc/cookbook.htm +++ b/vendor/POCO/CppUnit/doc/cookbook.htm @@ -17,7 +17,7 @@

Subclass the TestCase class. Override the method "runTest ()". When you want to check a value, call "assert (bool)" and pass in an expression that is true if the test succeeds.

For example, to test the equality comparison for a Complex number class, write:

	class ComplexNumberTest : public TestCase { 
-	public: 
+	public:
                     ComplexNumberTest (string name) : TestCase (name) {}
         void        runTest () {
                         assert (Complex (10, 1) == Complex (10, 1));
@@ -59,7 +59,7 @@
 	void		setUp ()  {
 			    m_10_1 = new Complex (10, 1);
 			    m_1_1  = new Complex (1, 1);
-			    m_11_2  = new Complex (11, 2);  
+			    m_11_2  = new Complex (11, 2);
                         }
 	void		tearDown ()  {
 			    delete m_10_1, delete m_1_1, delete m_11_2;
@@ -83,7 +83,7 @@
 	void		setUp ()  {
 			    m_10_1 = new Complex (10, 1);
 			    m_1_1  = new Complex (1, 1);
-			    m_11_2 = new Complex (11, 2);  
+			    m_11_2 = new Complex (11, 2);
                         }
 	void		tearDown ()  {
 			    delete m_10_1, delete m_1_1, delete m_11_2;
diff --git a/vendor/POCO/CppUnit/include/CppUnit/CppUnitException.h b/vendor/POCO/CppUnit/include/CppUnit/CppUnitException.h
index 68eb9739..7bbc891d 100644
--- a/vendor/POCO/CppUnit/include/CppUnit/CppUnitException.h
+++ b/vendor/POCO/CppUnit/include/CppUnit/CppUnitException.h
@@ -20,8 +20,8 @@ class CppUnit_API CppUnitException: public std::exception
 	/// descriptive strings through its what() method
 {
 public:
-	CppUnitException(const std::string& message = "", 
-	                 long lineNumber = CPPUNIT_UNKNOWNLINENUMBER, 
+	CppUnitException(const std::string& message = "",
+	                 long lineNumber = CPPUNIT_UNKNOWNLINENUMBER,
 	                 const std::string& fileName = CPPUNIT_UNKNOWNFILENAME);
 	CppUnitException(const std::string& message,
 	                 long lineNumber,
@@ -110,26 +110,26 @@ inline const char* CppUnitException::what() const throw ()
 
 inline long CppUnitException::lineNumber() const
 {
-	return _lineNumber; 
+	return _lineNumber;
 }
 
 
 inline long CppUnitException::data1LineNumber() const
 {
-	return _data1lineNumber; 
+	return _data1lineNumber;
 }
 
 
 inline long CppUnitException::data2LineNumber() const
 {
-	return _data2lineNumber; 
+	return _data2lineNumber;
 }
 
 
 // The file in which the error occurred
 inline const std::string& CppUnitException::fileName() const
 {
-	return _fileName; 
+	return _fileName;
 }
 
 
diff --git a/vendor/POCO/CppUnit/include/CppUnit/Orthodox.h b/vendor/POCO/CppUnit/include/CppUnit/Orthodox.h
index 5e9f41c3..ac08c010 100644
--- a/vendor/POCO/CppUnit/include/CppUnit/Orthodox.h
+++ b/vendor/POCO/CppUnit/include/CppUnit/Orthodox.h
@@ -45,11 +45,11 @@ namespace CppUnit {
  *
  * see TestSuite
  */
-template  
+template 
 class Orthodox: public TestCase
 {
 public:
-	Orthodox(): TestCase("Orthodox") 
+	Orthodox(): TestCase("Orthodox")
 	{
 	}
 
@@ -60,7 +60,7 @@ protected:
 
 
 // Run an orthodoxy test
-template  
+template 
 void Orthodox::runTest()
 {
     // make sure we have a default constructor
@@ -90,7 +90,7 @@ void Orthodox::runTest()
 
 
 // Exercise a call
-template  
+template 
 ClassUnderTest Orthodox::call(ClassUnderTest object)
 {
     return object;
diff --git a/vendor/POCO/CppUnit/include/CppUnit/RepeatedTest.h b/vendor/POCO/CppUnit/include/CppUnit/RepeatedTest.h
index dd471c0c..9dfdf38b 100644
--- a/vendor/POCO/CppUnit/include/CppUnit/RepeatedTest.h
+++ b/vendor/POCO/CppUnit/include/CppUnit/RepeatedTest.h
@@ -10,14 +10,13 @@
 #include "CppUnit/CppUnit.h"
 #include "CppUnit/Guards.h"
 #include "CppUnit/TestDecorator.h"
+#include "CppUnit/TestResult.h"
 
 
 namespace CppUnit {
 
 
 class Test;
-class TestResult;
-
 
 /*
  * A decorator that runs a test repeatedly.
@@ -29,13 +28,13 @@ class CppUnit_API RepeatedTest: public TestDecorator
 	REFERENCEOBJECT (RepeatedTest)
 
 public:
-	RepeatedTest(Test* test, int timesRepeat): TestDecorator (test), _timesRepeat (timesRepeat) 
+	RepeatedTest(Test* test, int timesRepeat): TestDecorator (test), _timesRepeat (timesRepeat)
 	{
 	}
 
 	int countTestCases();
 	std::string toString();
-	void run(TestResult *result);
+	void run(TestResult* result, const Test::Callback& callback = nullptr);
 
 private:
 	const int _timesRepeat;
@@ -43,7 +42,7 @@ private:
 
 
 // Counts the number of test cases that will be run by this test.
-inline RepeatedTest::countTestCases ()
+inline int RepeatedTest::countTestCases()
 {
 	return TestDecorator::countTestCases() * _timesRepeat;
 }
@@ -57,9 +56,9 @@ inline std::string RepeatedTest::toString()
 
 
 // Runs a repeated test
-inline void RepeatedTest::run(TestResult *result)
+inline void RepeatedTest::run(TestResult *result, const Test::Callback& callback)
 {
-	for (int n = 0; n < _timesRepeat; n++) 
+	for (int n = 0; n < _timesRepeat; n++)
 	{
 		if (result->shouldStop())
 			break;
diff --git a/vendor/POCO/CppUnit/include/CppUnit/Test.h b/vendor/POCO/CppUnit/include/CppUnit/Test.h
index 1c69ab12..bacab5ee 100644
--- a/vendor/POCO/CppUnit/include/CppUnit/Test.h
+++ b/vendor/POCO/CppUnit/include/CppUnit/Test.h
@@ -10,6 +10,7 @@
 #include "CppUnit/CppUnit.h"
 #include 
 #include 
+#include 
 
 
 namespace CppUnit {
@@ -33,8 +34,10 @@ public:
 	};
 
 public:
+	using Callback = std::function;
+
 	virtual ~Test() = 0;
-	virtual void run(TestResult* result) = 0;
+	virtual void run(TestResult* result, const Callback& callback = nullptr) = 0;
 	virtual int countTestCases() const = 0;
 	virtual std::string toString() const = 0;
 	virtual Test::Type getType() const = 0;
@@ -43,7 +46,7 @@ public:
 	const std::vector& setup() const;
 
 private:
-	std::vector	_setup;
+	std::vector _setup;
 };
 
 
@@ -53,7 +56,7 @@ inline Test::~Test()
 
 
 // Runs a test and collects its result in a TestResult instance.
-inline void Test::run(TestResult *result)
+inline void Test::run(TestResult* result, const Callback& callback)
 {
 }
 
@@ -61,7 +64,7 @@ inline void Test::run(TestResult *result)
 // Counts the number of test cases that will be run by this test.
 inline int Test::countTestCases() const
 {
-	return 0; 
+	return 0;
 }
 
 
diff --git a/vendor/POCO/CppUnit/include/CppUnit/TestCaller.h b/vendor/POCO/CppUnit/include/CppUnit/TestCaller.h
index 46f29c15..6161e299 100644
--- a/vendor/POCO/CppUnit/include/CppUnit/TestCaller.h
+++ b/vendor/POCO/CppUnit/include/CppUnit/TestCaller.h
@@ -42,7 +42,7 @@ namespace CppUnit {
  * }
  *
  * You can use a TestCaller to bind any test method on a TestCase
- * class, as long as it returns accepts void and returns void.
+ * class, as long as it accepts void and returns void.
  *
  * See TestCase
  */
diff --git a/vendor/POCO/CppUnit/include/CppUnit/TestCase.h b/vendor/POCO/CppUnit/include/CppUnit/TestCase.h
index 109d1eca..bd18de30 100644
--- a/vendor/POCO/CppUnit/include/CppUnit/TestCase.h
+++ b/vendor/POCO/CppUnit/include/CppUnit/TestCase.h
@@ -90,7 +90,7 @@ public:
 	TestCase(const std::string& Name, Test::Type testType = Test::Normal);
 	~TestCase();
 
-	virtual void run(TestResult* result);
+	virtual void run(TestResult* result, const Test::Callback& callback = nullptr);
 	virtual TestResult* run();
 	virtual int countTestCases() const;
 	virtual std::string toString() const;
@@ -124,10 +124,17 @@ protected:
                                    long data2LineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER,
 	                               const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME);
 
-	void assertEquals(long expected,
-	                  long actual,
+	template ::value, T1>::type,
+		typename = typename std::enable_if::value, T2>::type>
+	void assertEquals(T1 expected,
+	                  T2 actual,
 	                  long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER,
-	                  const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME);
+	                  const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME)
+	{
+		if (expected != actual)
+			assertImplementation(false, notEqualsMessage(expected, actual), lineNumber, fileName);
+	}
 
 	void assertEquals(double expected,
 	                  double actual,
@@ -140,13 +147,24 @@ protected:
 	                  long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER,
 	                  const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME);
 
+	void assertEquals(const char* expected,
+	                  const std::string& actual,
+	                  long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER,
+	                  const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME);
+
 	void assertEquals(const void* expected,
 	                  const void* actual,
 	                  long lineNumber = CppUnitException::CPPUNIT_UNKNOWNLINENUMBER,
 	                  const std::string& fileName = CppUnitException::CPPUNIT_UNKNOWNFILENAME);
 
-	std::string notEqualsMessage(long expected, long actual);
-	std::string notEqualsMessage(double expected, double actual);
+	template ::value, T1>::type,
+		typename = typename std::enable_if::value, T2>::type>
+	std::string notEqualsMessage(T1 expected, T2 actual)
+	{
+		return "expected: " + std::to_string(expected) + " but was: " + std::to_string(actual);
+	}
+
 	std::string notEqualsMessage(const void* expected, const void* actual);
 	std::string notEqualsMessage(const std::string& expected, const std::string& actual);
 
diff --git a/vendor/POCO/CppUnit/include/CppUnit/TestDecorator.h b/vendor/POCO/CppUnit/include/CppUnit/TestDecorator.h
index 85b5f3de..cda17c09 100644
--- a/vendor/POCO/CppUnit/include/CppUnit/TestDecorator.h
+++ b/vendor/POCO/CppUnit/include/CppUnit/TestDecorator.h
@@ -35,7 +35,7 @@ public:
 
 	int countTestCases() const;
 
-	void run(TestResult* result);
+	void run(TestResult* result, const Test::Callback& callback = nullptr);
 
 	std::string toString() const;
 
diff --git a/vendor/POCO/CppUnit/include/CppUnit/TestFailure.h b/vendor/POCO/CppUnit/include/CppUnit/TestFailure.h
index b443f597..b2ff60aa 100644
--- a/vendor/POCO/CppUnit/include/CppUnit/TestFailure.h
+++ b/vendor/POCO/CppUnit/include/CppUnit/TestFailure.h
@@ -57,7 +57,7 @@ inline TestFailure::TestFailure(Test* failedTest, CppUnitException* thrownExcept
 
 // Deletes the owned exception.
 inline TestFailure::~TestFailure()
-{ 
+{
 	delete _thrownException;
 }
 
diff --git a/vendor/POCO/CppUnit/include/CppUnit/TestResult.h b/vendor/POCO/CppUnit/include/CppUnit/TestResult.h
index a09aa9e8..6539e0ba 100644
--- a/vendor/POCO/CppUnit/include/CppUnit/TestResult.h
+++ b/vendor/POCO/CppUnit/include/CppUnit/TestResult.h
@@ -67,7 +67,7 @@ public:
 		SynchronizationObject()
 		{
 		}
-		
+
 		virtual ~SynchronizationObject()
 		{
 		}
@@ -75,7 +75,7 @@ public:
 		virtual void lock()
 		{
 		}
-		
+
 		virtual void unlock()
 		{
 		}
@@ -112,7 +112,7 @@ protected:
 // Construct a TestResult
 inline TestResult::TestResult(): _syncObject(new SynchronizationObject())
 {
-	_runTests = 0; 
+	_runTests = 0;
 	_stop = false;
 }
 
@@ -121,7 +121,7 @@ inline TestResult::TestResult(): _syncObject(new SynchronizationObject())
 // caused the error
 inline void TestResult::addError(Test* test, CppUnitException* e)
 {
-	ExclusiveZone zone(_syncObject); 
+	ExclusiveZone zone(_syncObject);
 	_errors.push_back(new TestFailure(test, e));
 }
 
@@ -130,7 +130,7 @@ inline void TestResult::addError(Test* test, CppUnitException* e)
 // caused the failure.
 inline void TestResult::addFailure(Test* test, CppUnitException* e)
 {
-	ExclusiveZone zone(_syncObject); 
+	ExclusiveZone zone(_syncObject);
 	_failures.push_back(new TestFailure(test, e));
 }
 
@@ -138,7 +138,7 @@ inline void TestResult::addFailure(Test* test, CppUnitException* e)
 // Informs the result that a test will be started.
 inline void TestResult::startTest(Test* test)
 {
-	ExclusiveZone zone(_syncObject); 
+	ExclusiveZone zone(_syncObject);
 	_runTests++;
 }
 
@@ -153,7 +153,7 @@ inline void TestResult::endTest(Test* test)
 // Gets the number of run tests.
 inline int TestResult::runTests()
 {
-	ExclusiveZone zone(_syncObject); 
+	ExclusiveZone zone(_syncObject);
 	return _runTests;
 }
 
@@ -161,7 +161,7 @@ inline int TestResult::runTests()
 // Gets the number of detected errors.
 inline int TestResult::testErrors()
 {
-	ExclusiveZone zone(_syncObject); 
+	ExclusiveZone zone(_syncObject);
 	return (int) _errors.size();
 }
 
@@ -169,7 +169,7 @@ inline int TestResult::testErrors()
 // Gets the number of detected failures.
 inline int TestResult::testFailures()
 {
-	ExclusiveZone zone(_syncObject); 
+	ExclusiveZone zone(_syncObject);
 	return (int) _failures.size();
 }
 
@@ -177,15 +177,15 @@ inline int TestResult::testFailures()
 // Returns whether the entire test was successful or not.
 inline bool TestResult::wasSuccessful()
 {
-	ExclusiveZone zone(_syncObject); 
-	return _failures.size() == 0 && _errors.size () == 0; 
+	ExclusiveZone zone(_syncObject);
+	return _failures.size() == 0 && _errors.size () == 0;
 }
 
 
 // Returns a std::vector of the errors.
 inline std::vector& TestResult::errors()
 {
-	ExclusiveZone zone(_syncObject); 
+	ExclusiveZone zone(_syncObject);
 	return _errors;
 }
 
@@ -193,7 +193,7 @@ inline std::vector& TestResult::errors()
 // Returns a std::vector of the failures.
 inline std::vector& TestResult::failures()
 {
-	ExclusiveZone zone(_syncObject); 
+	ExclusiveZone zone(_syncObject);
 	return _failures;
 }
 
@@ -201,7 +201,7 @@ inline std::vector& TestResult::failures()
 // Returns whether testing should be stopped
 inline bool TestResult::shouldStop()
 {
-	ExclusiveZone zone(_syncObject); 
+	ExclusiveZone zone(_syncObject);
 	return _stop;
 }
 
@@ -209,7 +209,7 @@ inline bool TestResult::shouldStop()
 // Stop testing
 inline void TestResult::stop()
 {
-	ExclusiveZone zone(_syncObject); 
+	ExclusiveZone zone(_syncObject);
 	_stop = true;
 }
 
@@ -218,7 +218,7 @@ inline void TestResult::stop()
 // TestResult assumes ownership of the object
 inline void TestResult::setSynchronizationObject(SynchronizationObject* syncObject)
 {
-	delete _syncObject; 
+	delete _syncObject;
 	_syncObject = syncObject;
 }
 
diff --git a/vendor/POCO/CppUnit/include/CppUnit/TestRunner.h b/vendor/POCO/CppUnit/include/CppUnit/TestRunner.h
index fa8ea091..6157bc74 100644
--- a/vendor/POCO/CppUnit/include/CppUnit/TestRunner.h
+++ b/vendor/POCO/CppUnit/include/CppUnit/TestRunner.h
@@ -8,20 +8,19 @@
 
 
 #include "CppUnit/CppUnit.h"
+#include "CppUnit/Test.h"
 #include 
 #include 
 #include 
 #if defined(POCO_VXWORKS)
 #include 
 #endif
+#include "Poco/Exception.h"
 
 
 namespace CppUnit {
 
 
-class Test;
-
-
 /*
  * A command line based tool to run tests.
  * TestRunner expects as its only argument the name of a TestCase class.
@@ -46,7 +45,7 @@ public:
 	TestRunner(std::ostream& ostr);
 	~TestRunner();
 
-	bool run(const std::vector& args);
+	bool run(const std::vector& args, const Test::Callback& callback = nullptr);
 	void addTest(const std::string& name, Test* test);
 
 protected:
@@ -85,6 +84,16 @@ private:
 		return runner.run(args) ? 0 : 1; \
 	}
 #else
+#define CppUnitPocoExceptionText(exc) \
+	CppUnit::Test::Callback exc = [] (const std::exception& ex) \
+	{ \
+		std::string text; \
+		const Poco::Exception* pEx = dynamic_cast(&ex); \
+		if (pEx) text = pEx->displayText(); \
+		else text = ex.what(); \
+		return text; \
+	}
+
 #define CppUnitMain(testCase) \
 	int main(int ac, char **av)							\
 	{													\
@@ -93,7 +102,8 @@ private:
 			args.push_back(std::string(av[i]));			\
 		CppUnit::TestRunner runner;						\
 		runner.addTest(#testCase, testCase::suite());	\
-		return runner.run(args) ? 0 : 1;				\
+		CppUnitPocoExceptionText(exc);					\
+		return runner.run(args, exc) ? 0 : 1;			\
 	}
 #endif
 
diff --git a/vendor/POCO/CppUnit/include/CppUnit/TestSetup.h b/vendor/POCO/CppUnit/include/CppUnit/TestSetup.h
index 323d6cf5..040b7685 100644
--- a/vendor/POCO/CppUnit/include/CppUnit/TestSetup.h
+++ b/vendor/POCO/CppUnit/include/CppUnit/TestSetup.h
@@ -24,17 +24,17 @@ class CppUnit_API TestSetup: public TestDecorator
 	REFERENCEOBJECT (TestSetup)
 
 public:
-	TestSetup(Test* test): TestDecorator(test) 
+	TestSetup(Test* test): TestDecorator(test)
 	{
 	}
-	
+
 	void run(TestResult* result);
 
 protected:
-	void setUp() 
+	void setUp()
 	{
 	}
-	
+
 	void tearDown()
 	{
 	}
@@ -44,7 +44,7 @@ protected:
 inline void TestSetup::run(TestResult* result)
 {
 	setUp();
-	TestDecorator::run(result); 
+	TestDecorator::run(result);
 	tearDown();
 }
 
diff --git a/vendor/POCO/CppUnit/include/CppUnit/TestSuite.h b/vendor/POCO/CppUnit/include/CppUnit/TestSuite.h
index 7d3da3d6..9aa6a55d 100644
--- a/vendor/POCO/CppUnit/include/CppUnit/TestSuite.h
+++ b/vendor/POCO/CppUnit/include/CppUnit/TestSuite.h
@@ -41,14 +41,14 @@ public:
 	TestSuite(const std::string& name = "");
 	~TestSuite();
 
-	void run(TestResult* result);
+	void run(TestResult* result, const Test::Callback& callback = nullptr);
 	int countTestCases() const;
 	void addTest(Test* test);
 	std::string toString() const;
 	Test::Type getType() const;
 
 	virtual void deleteContents();
-	
+
 	const std::vector tests() const;
 
 private:
@@ -80,7 +80,7 @@ inline void TestSuite::addTest(Test* test)
 // Returns a std::string representation of the test suite.
 inline std::string TestSuite::toString() const
 {
-	return "suite " + _name; 
+	return "suite " + _name;
 }
 
 // Returns the type of the test, see Test::Type
diff --git a/vendor/POCO/CppUnit/include/CppUnit/TextTestResult.h b/vendor/POCO/CppUnit/include/CppUnit/TextTestResult.h
index d7421f16..86767996 100644
--- a/vendor/POCO/CppUnit/include/CppUnit/TextTestResult.h
+++ b/vendor/POCO/CppUnit/include/CppUnit/TextTestResult.h
@@ -31,7 +31,7 @@ public:
 	virtual void printErrors(std::ostream& stream);
 	virtual void printFailures(std::ostream& stream);
 	virtual void printHeader(std::ostream& stream);
-	
+
 protected:
 	std::string shortName(const std::string& testName);
 	void setup();
diff --git a/vendor/POCO/CppUnit/include/CppUnit/estring.h b/vendor/POCO/CppUnit/include/CppUnit/estring.h
index 8adf030b..b323db9e 100644
--- a/vendor/POCO/CppUnit/include/CppUnit/estring.h
+++ b/vendor/POCO/CppUnit/include/CppUnit/estring.h
@@ -32,26 +32,26 @@ inline std::string estring(std::string& expandedString)
 // Create a std::string from an int
 inline std::string estring(int number)
 {
-	char buffer[50]; 
-	std::snprintf(buffer, sizeof(buffer), "%d", number); 
-	return std::string (buffer); 
+	char buffer[50];
+	std::snprintf(buffer, sizeof(buffer), "%d", number);
+	return std::string (buffer);
 }
 
 
 // Create a string from a long
 inline std::string estring(long number)
 {
-	char buffer[50]; 
-	std::snprintf(buffer, sizeof(buffer), "%ld", number); 
-	return std::string (buffer); 
+	char buffer[50];
+	std::snprintf(buffer, sizeof(buffer), "%ld", number);
+	return std::string (buffer);
 }
 
 
 // Create a std::string from a double
 inline std::string estring(double number)
 {
-	char buffer[50]; 
-	std::snprintf(buffer, sizeof(buffer), "%lf", number); 
+	char buffer[50];
+	std::snprintf(buffer, sizeof(buffer), "%lf", number);
 	return std::string(buffer);
 }
 
@@ -59,8 +59,8 @@ inline std::string estring(double number)
 // Create a std::string from a double
 inline std::string estring(const void* ptr)
 {
-	char buffer[50]; 
-	std::snprintf(buffer, sizeof(buffer), "%p", ptr); 
+	char buffer[50];
+	std::snprintf(buffer, sizeof(buffer), "%p", ptr);
 	return std::string(buffer);
 }
 
diff --git a/vendor/POCO/CppUnit/include/Poco/CppUnit/CppUnit.h b/vendor/POCO/CppUnit/include/Poco/CppUnit/CppUnit.h
deleted file mode 100644
index 4e920e7d..00000000
--- a/vendor/POCO/CppUnit/include/Poco/CppUnit/CppUnit.h
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// CppUnit.h
-//
-
-
-#ifndef Poco_CppUnit_CppUnit_INCLUDED
-#define Poco_CppUnit_CppUnit_INCLUDED
-
-#include "CppUnit/CppUnit.h"
-
-#endif // Poco_CppUnit_CppUnit_INCLUDED
diff --git a/vendor/POCO/CppUnit/include/Poco/CppUnit/CppUnitException.h b/vendor/POCO/CppUnit/include/Poco/CppUnit/CppUnitException.h
deleted file mode 100644
index 18e375a8..00000000
--- a/vendor/POCO/CppUnit/include/Poco/CppUnit/CppUnitException.h
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// CppUnitException.h
-//
-
-
-#ifndef Poco_CppUnit_CppUnitException_INCLUDED
-#define Poco_CppUnit_CppUnitException_INCLUDED
-
-#include "CppUnit/CppUnitException.h"
-
-#endif // Poco_CppUnit_CppUnitException_INCLUDED
diff --git a/vendor/POCO/CppUnit/include/Poco/CppUnit/Guards.h b/vendor/POCO/CppUnit/include/Poco/CppUnit/Guards.h
deleted file mode 100644
index e1d93025..00000000
--- a/vendor/POCO/CppUnit/include/Poco/CppUnit/Guards.h
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// Guards.h
-//
-
-
-#ifndef Poco_CppUnit_Guards_INCLUDED
-#define Poco_CppUnit_Guards_INCLUDED
-
-#include "CppUnit/Guards.h"
-
-#endif // Poco_CppUnit_Guards_INCLUDED
diff --git a/vendor/POCO/CppUnit/include/Poco/CppUnit/Orthodox.h b/vendor/POCO/CppUnit/include/Poco/CppUnit/Orthodox.h
deleted file mode 100644
index 001e7930..00000000
--- a/vendor/POCO/CppUnit/include/Poco/CppUnit/Orthodox.h
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// Orthodox.h
-//
-
-
-#ifndef Poco_CppUnit_Orthodox_INCLUDED
-#define Poco_CppUnit__INCLUDED
-
-#include "CppUnit/Orthodox.h"
-
-#endif // Poco_CppUnit_Orthodox_INCLUDED
diff --git a/vendor/POCO/CppUnit/include/Poco/CppUnit/RepeatedTest.h b/vendor/POCO/CppUnit/include/Poco/CppUnit/RepeatedTest.h
deleted file mode 100644
index 96dd88a7..00000000
--- a/vendor/POCO/CppUnit/include/Poco/CppUnit/RepeatedTest.h
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// RepeatedTest.h
-//
-
-
-#ifndef Poco_CppUnit_RepeatedTest_INCLUDED
-#define Poco_CppUnit_RepeatedTest_INCLUDED
-
-#include "CppUnit/RepeatedTest.h"
-
-#endif // Poco_CppUnit_RepeatedTest_INCLUDED
diff --git a/vendor/POCO/CppUnit/include/Poco/CppUnit/Test.h b/vendor/POCO/CppUnit/include/Poco/CppUnit/Test.h
deleted file mode 100644
index 8db90e26..00000000
--- a/vendor/POCO/CppUnit/include/Poco/CppUnit/Test.h
+++ /dev/null
@@ -1,12 +0,0 @@
-//
-// Test.h
-//
-
-
-#ifndef Poco_CppUnit_Test_INCLUDED
-#define Poco_CppUnit_Test_INCLUDED
-
-
-#include "CppUnit/Test.h"
-
-#endif // Poco_CppUnit_Test_INCLUDED
diff --git a/vendor/POCO/CppUnit/include/Poco/CppUnit/TestCaller.h b/vendor/POCO/CppUnit/include/Poco/CppUnit/TestCaller.h
deleted file mode 100644
index d3bc9f4e..00000000
--- a/vendor/POCO/CppUnit/include/Poco/CppUnit/TestCaller.h
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// TestCaller.h
-//
-
-
-#ifndef Poco_CppUnit_TestCaller_INCLUDED
-#define Poco_CppUnit_TestCaller_INCLUDED
-
-#include "CppUnit/TestCaller.h"
-
-#endif // Poco_CppUnit_TestCaller_INCLUDED
diff --git a/vendor/POCO/CppUnit/include/Poco/CppUnit/TestCase.h b/vendor/POCO/CppUnit/include/Poco/CppUnit/TestCase.h
deleted file mode 100644
index 100c44e6..00000000
--- a/vendor/POCO/CppUnit/include/Poco/CppUnit/TestCase.h
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// TestCase.h
-//
-
-
-#ifndef Poco_CppUnit_TestCase_INCLUDED
-#define Poco_CppUnit_TestCase_INCLUDED
-
-#include "CppUnit/TestCase.h"
-
-#endif // Poco_CppUnit_TestCase_INCLUDED
diff --git a/vendor/POCO/CppUnit/include/Poco/CppUnit/TestDecorator.h b/vendor/POCO/CppUnit/include/Poco/CppUnit/TestDecorator.h
deleted file mode 100644
index 1c8cfa44..00000000
--- a/vendor/POCO/CppUnit/include/Poco/CppUnit/TestDecorator.h
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// TestDecorator.h
-//
-
-
-#ifndef Poco_CppUnit_TestDecorator_INCLUDED
-#define Poco_CppUnit_TestDecorator_INCLUDED
-
-#include "CppUnit/TestDecorator.h"
-
-#endif // Poco_CppUnit_TestDecorator_INCLUDED
diff --git a/vendor/POCO/CppUnit/include/Poco/CppUnit/TestFailure.h b/vendor/POCO/CppUnit/include/Poco/CppUnit/TestFailure.h
deleted file mode 100644
index 25ed1779..00000000
--- a/vendor/POCO/CppUnit/include/Poco/CppUnit/TestFailure.h
+++ /dev/null
@@ -1,13 +0,0 @@
-//
-// TestFailure.h
-//
-
-
-#ifndef Poco_CppUnit_TestFailure_INCLUDED
-#define Poco_CppUnit_TestFailure_INCLUDED
-
-#include "CppUnit/TestFailure.h"
-
-#endif // Poco_CppUnit_TestFailure_INCLUDED
-
-
diff --git a/vendor/POCO/CppUnit/include/Poco/CppUnit/TestResult.h b/vendor/POCO/CppUnit/include/Poco/CppUnit/TestResult.h
deleted file mode 100644
index 72e2a722..00000000
--- a/vendor/POCO/CppUnit/include/Poco/CppUnit/TestResult.h
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// TestResult.h
-//
-
-
-#ifndef Poco_CppUnit_TestResult_INCLUDED
-#define Poco_CppUnit_TestResult_INCLUDED
-
-#include "CppUnit/TestResult.h"
-
-#endif // Poco_CppUnit_TestResult_INCLUDED
diff --git a/vendor/POCO/CppUnit/include/Poco/CppUnit/TestRunner.h b/vendor/POCO/CppUnit/include/Poco/CppUnit/TestRunner.h
deleted file mode 100644
index cce17aa1..00000000
--- a/vendor/POCO/CppUnit/include/Poco/CppUnit/TestRunner.h
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// TestRunner.h
-//
-
-
-#ifndef Poco_CppUnit_TestRunner_INCLUDED
-#define Poco_CppUnit_TestRunner_INCLUDED
-
-#include "CppUnit/TestRunner.h"
-
-#endif // Poco_CppUnit_TestRunner_INCLUDED
diff --git a/vendor/POCO/CppUnit/include/Poco/CppUnit/TestSetup.h b/vendor/POCO/CppUnit/include/Poco/CppUnit/TestSetup.h
deleted file mode 100644
index 76d5e25b..00000000
--- a/vendor/POCO/CppUnit/include/Poco/CppUnit/TestSetup.h
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// TestSetup.h
-//
-
-
-#ifndef Poco_CppUnit_TestSetup_INCLUDED
-#define Poco_CppUnit_TestSetup_INCLUDED
-
-#include "CppUnit/TestSetup.h"
-
-#endif // Poco_CppUnit_TestSetup_INCLUDED
diff --git a/vendor/POCO/CppUnit/include/Poco/CppUnit/TestSuite.h b/vendor/POCO/CppUnit/include/Poco/CppUnit/TestSuite.h
deleted file mode 100644
index a010dc71..00000000
--- a/vendor/POCO/CppUnit/include/Poco/CppUnit/TestSuite.h
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// TestSuite.h
-//
-
-
-#ifndef Poco_CppUnit_TestSuite_INCLUDED
-#define Poco_CppUnit_TestSuite_INCLUDED
-
-#include "CppUnit/TestSuite.h"
-
-#endif // Poco_CppUnit_TestSuite_INCLUDED
diff --git a/vendor/POCO/CppUnit/include/Poco/CppUnit/TextTestResult.h b/vendor/POCO/CppUnit/include/Poco/CppUnit/TextTestResult.h
deleted file mode 100644
index fa8cafda..00000000
--- a/vendor/POCO/CppUnit/include/Poco/CppUnit/TextTestResult.h
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// TextTestResult.h
-//
-
-
-#ifndef Poco_CppUnit_TextTestResult_INCLUDED
-#define Poco_CppUnit_TextTestResult_INCLUDED
-
-#include "CppUnit/TextTestResult.h"
-
-#endif // Poco_CppUnit_TextTestResult_INCLUDED
diff --git a/vendor/POCO/CppUnit/include/Poco/CppUnit/estring.h b/vendor/POCO/CppUnit/include/Poco/CppUnit/estring.h
deleted file mode 100644
index 3eb087f4..00000000
--- a/vendor/POCO/CppUnit/include/Poco/CppUnit/estring.h
+++ /dev/null
@@ -1,11 +0,0 @@
-//
-// estring.h
-//
-
-
-#ifndef Poco_CppUnit_estring_INCLUDED
-#define Poco_CppUnit_estring_INCLUDED
-
-#include "CppUnit/estring.h"
-
-#endif // Poco_CppUnit_estring_INCLUDED
diff --git a/vendor/POCO/CppUnit/src/TestCase.cpp b/vendor/POCO/CppUnit/src/TestCase.cpp
index 6863080c..7aa9136d 100644
--- a/vendor/POCO/CppUnit/src/TestCase.cpp
+++ b/vendor/POCO/CppUnit/src/TestCase.cpp
@@ -47,14 +47,6 @@ void TestCase::loop2assertImplementation(bool condition, const std::string& cond
 }
 
 
-// Check for a failed equality assertion
-void TestCase::assertEquals(long expected, long actual, long lineNumber, const std::string& fileName)
-{
-	if (expected != actual)
-		assertImplementation(false, notEqualsMessage(expected, actual), lineNumber, fileName);
-}
-
-
 // Check for a failed equality assertion
 void TestCase::assertEquals(double expected, double actual, double delta, long lineNumber, const std::string& fileName)
 {
@@ -79,6 +71,14 @@ void TestCase::assertEquals(const std::string& expected, const std::string& actu
 }
 
 
+// Check for a failed equality assertion
+void TestCase::assertEquals(const char* expected, const std::string& actual, long lineNumber, const std::string& fileName)
+{
+	if (std::string(expected) != actual)
+		assertImplementation(false, notEqualsMessage(std::string(expected), actual), lineNumber, fileName);
+}
+
+
 void TestCase::assertNotNull(const void* pointer, const std::string& pointerExpression, long lineNumber, const std::string& fileName)
 {
 	if (pointer == NULL)
@@ -106,7 +106,7 @@ void TestCase::warn(const std::string& message, long lineNumber, const std::stri
 
 
 // Run the test and catch any exceptions that are triggered by it
-void TestCase::run(TestResult *result)
+void TestCase::run(TestResult *result, const Test::Callback& callback)
 {
 	result->startTest(this);
 
@@ -123,8 +123,7 @@ void TestCase::run(TestResult *result)
 	catch (std::exception& e)
 	{
 		std::string msg(typeid(e).name());
-		msg.append(": ");
-		msg.append(e.what());
+		msg.append(":\n").append(callback(e));
 		result->addError(this, new CppUnitException(msg));
 	}
 	catch (...)
@@ -153,20 +152,6 @@ void TestCase::runTest()
 }
 
 
-// Build a message about a failed equality check
-std::string TestCase::notEqualsMessage(long expected, long actual)
-{
-	return "expected: " + estring(expected) + " but was: " + estring(actual);
-}
-
-
-// Build a message about a failed equality check
-std::string TestCase::notEqualsMessage(double expected, double actual)
-{
-	return "expected: " + estring(expected) + " but was: " + estring(actual);
-}
-
-
 // Build a message about a failed equality check
 std::string TestCase::notEqualsMessage(const void* expected, const void* actual)
 {
diff --git a/vendor/POCO/CppUnit/src/TestDecorator.cpp b/vendor/POCO/CppUnit/src/TestDecorator.cpp
index 634af35b..281289d9 100644
--- a/vendor/POCO/CppUnit/src/TestDecorator.cpp
+++ b/vendor/POCO/CppUnit/src/TestDecorator.cpp
@@ -26,7 +26,7 @@ int TestDecorator::countTestCases() const
 }
 
 
-void TestDecorator::run(TestResult* result)
+void TestDecorator::run(TestResult* result, const Test::Callback& callback)
 {
 	_test->run(result);
 }
diff --git a/vendor/POCO/CppUnit/src/TestRunner.cpp b/vendor/POCO/CppUnit/src/TestRunner.cpp
index c6814da4..31c54ec9 100644
--- a/vendor/POCO/CppUnit/src/TestRunner.cpp
+++ b/vendor/POCO/CppUnit/src/TestRunner.cpp
@@ -41,7 +41,7 @@ void TestRunner::printBanner()
 }
 
 
-bool TestRunner::run(const std::vector& args)
+bool TestRunner::run(const std::vector& args, const Test::Callback& callback)
 {
 	std::string testCase;
 	int numberOfTests = 0;
@@ -139,7 +139,7 @@ bool TestRunner::run(const std::vector& args)
 		if (setup.size() > 0)
 			testToRun->addSetup(setup);
 
-		testToRun->run(&result);
+		testToRun->run(&result, callback);
 		numberOfTests++;
 	}
 	_ostr << result << std::endl;
diff --git a/vendor/POCO/CppUnit/src/TestSuite.cpp b/vendor/POCO/CppUnit/src/TestSuite.cpp
index b89c47b4..1ba61678 100644
--- a/vendor/POCO/CppUnit/src/TestSuite.cpp
+++ b/vendor/POCO/CppUnit/src/TestSuite.cpp
@@ -19,17 +19,17 @@ void TestSuite::deleteContents()
 
 
 // Runs the tests and collects their result in a TestResult.
-void TestSuite::run(TestResult *result)
+void TestSuite::run(TestResult *result, const Test::Callback& callback)
 {
-	for (std::vector::iterator it = _tests.begin(); it != _tests.end(); ++it) 
+	for (std::vector::iterator it = _tests.begin(); it != _tests.end(); ++it)
 	{
-		if (result->shouldStop ())
+		if (result->shouldStop())
 			break;
 
 		Test *test = *it;
 		if (!setup().empty())
 			test->addSetup(setup());
-		test->run(result);
+		test->run(result, callback);
 	}
 }
 
@@ -39,7 +39,7 @@ int TestSuite::countTestCases() const
 {
 	int count = 0;
 
-	for (std::vector::const_iterator it = _tests.begin (); it != _tests.end (); ++it)
+	for (std::vector::const_iterator it = _tests.begin(); it != _tests.end(); ++it)
 		count += (*it)->countTestCases();
 
 	return count;
diff --git a/vendor/POCO/Crypto/CMakeLists.txt b/vendor/POCO/Crypto/CMakeLists.txt
index 9204a91c..0a3b620d 100644
--- a/vendor/POCO/Crypto/CMakeLists.txt
+++ b/vendor/POCO/Crypto/CMakeLists.txt
@@ -25,7 +25,7 @@ target_link_libraries(Crypto PUBLIC Poco::Foundation OpenSSL::SSL OpenSSL::Crypt
 target_include_directories(Crypto
 	PUBLIC
 		$
-		$
+		$
 	PRIVATE
 		${CMAKE_CURRENT_SOURCE_DIR}/src
 )
diff --git a/vendor/POCO/Crypto/Crypto_VS90.vcproj b/vendor/POCO/Crypto/Crypto_VS90.vcproj
index 4f8545e6..0a76f3c1 100644
--- a/vendor/POCO/Crypto/Crypto_VS90.vcproj
+++ b/vendor/POCO/Crypto/Crypto_VS90.vcproj
@@ -653,6 +653,10 @@
 					RelativePath=".\include\Poco\Crypto\CryptoException.h"
 					>
 				
+				
+				
 				
@@ -677,6 +681,10 @@
 					RelativePath=".\src\CryptoException.cpp"
 					>
 				
+				
+				
 				
@@ -733,6 +741,10 @@
 					RelativePath=".\include\Poco\Crypto\ECKeyImpl.h"
 					>
 				
+				
+				
 			
 			
 				
+				
+				
 			
 		
 		
     
     
+    
+    
     
     
     
@@ -607,6 +609,12 @@
     
       true
     
+    
+      true
+    
+    
+      true
+    
     
       true
     
diff --git a/vendor/POCO/Crypto/Crypto_vs140.vcxproj.filters b/vendor/POCO/Crypto/Crypto_vs140.vcxproj.filters
index d270f7e7..489e410f 100644
--- a/vendor/POCO/Crypto/Crypto_vs140.vcxproj.filters
+++ b/vendor/POCO/Crypto/Crypto_vs140.vcxproj.filters
@@ -2,58 +2,58 @@
 
   
     
-      {04b70b04-697e-42a9-9aeb-e9ce6c343be9}
+      {60a8c7e2-2faa-4d2f-9395-a8a7b0b27799}
     
     
-      {75a7f23f-980b-4c33-b078-16605d946917}
+      {5810f1ac-f1a0-4eec-805c-4f10c8731258}
     
     
-      {af502e4d-9e80-4ff0-8e62-177ccd345d80}
+      {079a0514-d9e9-4c7e-814e-7bc6941f7492}
     
     
-      {ee9d5c88-630f-41f3-9e82-4c7dd16e8125}
+      {d9e32eb5-0f20-4262-8c04-ce30a11b5278}
     
     
-      {ac0454d9-cb57-4244-b7be-2dc1b78415bd}
+      {4d5ddd1e-5b34-493d-b3e6-696b3950239d}
     
     
-      {9356d389-2a2b-4bbb-9a48-0069ebce4ac6}
+      {52e2d122-9409-4b00-bb5d-8596e350271f}
     
     
-      {9edcc672-ed8e-493a-8a98-716bcc14c6e9}
+      {dc9887bc-80fa-4400-8ae3-798d0216e70e}
     
     
-      {e07cca81-0e0c-45ca-85f7-901a3ad549de}
+      {9af8f56b-58e6-471c-99dd-649f82bb513d}
     
     
-      {3cb68e52-e52f-453e-b02a-e88618254bcb}
+      {e986c9a0-8d5f-4ece-b226-97b00f75c36b}
     
     
-      {4ad478a3-34ab-4eb5-aff3-f3c6c93f4c5d}
+      {815003c3-868c-4edb-b8fc-71239f111d12}
     
     
-      {2af5aa00-cfb8-4d7a-9aed-fed3ee3f9ca1}
+      {83254184-d4b3-4e90-aaf8-6185be913f80}
     
     
-      {7cec80c3-6ea2-43cc-ada1-53605f124468}
+      {975ee625-4d9c-42c8-a51a-5ae6c152f3f7}
     
     
-      {f76416de-9deb-4dba-b54f-35ed9e474073}
+      {3ab5ac8f-2b83-4dfc-9603-0dac69d52013}
     
     
-      {696a1fff-7f4d-4595-9c40-e6596ef086b6}
+      {8b978dca-eb5f-4437-a1c2-4491c531c24e}
     
     
-      {9e86ecc5-a026-4432-8b10-45b575c1fa87}
+      {0a3d66e4-a2fd-41a2-b579-95aa9bd44595}
     
     
-      {edffd197-3071-4677-bdff-b0a00c7a014a}
+      {a612ef80-bf86-4cd6-912c-ba726353cc2a}
     
     
-      {dc754ea7-075d-48ff-9777-ff9aa6c9ddac}
+      {c46a2637-5bab-4cf6-93c0-d09d784e65f6}
     
     
-      {7a39a221-fafa-4375-9b1b-19488f30606b}
+      {e84f7326-3466-4a9e-bba3-1b0c4885717a}
     
   
   
@@ -102,6 +102,9 @@
     
       CryptoCore\Header Files
     
+    
+      CryptoCore\Header Files
+    
     
       CryptoCore\Header Files
     
@@ -126,6 +129,9 @@
     
       EC\Header Files
     
+    
+      EC\Header Files
+    
   
   
     
@@ -170,6 +176,9 @@
     
       CryptoCore\Source Files
     
+    
+      CryptoCore\Source Files
+    
     
       CryptoCore\Source Files
     
@@ -194,6 +203,9 @@
     
       EC\Source Files
     
+    
+      EC\Source Files
+    
   
   
     
diff --git a/vendor/POCO/Crypto/Crypto_vs150.vcxproj b/vendor/POCO/Crypto/Crypto_vs150.vcxproj
index 53f4b5d2..66fe8298 100644
--- a/vendor/POCO/Crypto/Crypto_vs150.vcxproj
+++ b/vendor/POCO/Crypto/Crypto_vs150.vcxproj
@@ -559,6 +559,8 @@
     
     
     
+    
+    
     
     
     
@@ -607,6 +609,12 @@
     
       true
     
+    
+      true
+    
+    
+      true
+    
     
       true
     
diff --git a/vendor/POCO/Crypto/Crypto_vs150.vcxproj.filters b/vendor/POCO/Crypto/Crypto_vs150.vcxproj.filters
index a3005263..3e30674e 100644
--- a/vendor/POCO/Crypto/Crypto_vs150.vcxproj.filters
+++ b/vendor/POCO/Crypto/Crypto_vs150.vcxproj.filters
@@ -2,58 +2,58 @@
 
   
     
-      {d9c44334-4a59-4b62-9f69-ceece97c18ed}
+      {75698788-03bc-4370-ab55-99d48c973dce}
     
     
-      {b8ed2f18-0b9c-4769-bc96-7a08bbdf8467}
+      {bcaac4d6-7340-4f39-9b36-724a1408f06c}
     
     
-      {42d8ab87-49fa-462d-8eab-709bb5c01557}
+      {e455849b-48cb-431b-983f-30c955a93552}
     
     
-      {b9a6f7a6-4b5c-4098-9d5c-65c2c2c394ef}
+      {b3905243-9455-4c38-a56e-1edaf52d18c3}
     
     
-      {29984b35-3df8-42a1-a712-2aecf201add5}
+      {8541c53c-aa29-4062-9029-6ba5ab950d9a}
     
     
-      {d33e4790-ed28-418b-9833-4bc1076e96f5}
+      {43690a3d-2085-46bd-8722-a153c2170f3e}
     
     
-      {646c27d1-6e6e-4637-88b3-4319186e3c55}
+      {c7c75237-17b5-443e-b48d-d276bedafb7e}
     
     
-      {3524e378-6f24-42ad-b273-c566e755b3ef}
+      {ca5d30c0-a95e-413d-a182-8ee7dfed0bff}
     
     
-      {47293d8d-14cd-43a0-b269-750216980bf1}
+      {cd24b06b-7900-4c1f-b1a3-8d5b2110ef46}
     
     
-      {e7a8b613-2fca-4175-8c42-19f40617fff7}
+      {ef3bafde-f2e0-4779-b50a-bcb066c09583}
     
     
-      {b9e2d34e-d0d6-49c5-912b-745b2d6aef07}
+      {deb5208b-9e44-47da-b191-718552850f5f}
     
     
-      {e07d97b9-8fd9-4c1d-bf49-65bce81a160d}
+      {01df9f00-078a-4cca-829a-d7421dfe4a43}
     
     
-      {cb31088c-c4cd-4a55-85a2-b59ac56cdecf}
+      {08b5b434-275e-46a4-a528-b6da06cc5691}
     
     
-      {9fc80937-4552-4263-b935-d62b68bfb981}
+      {d7cb049c-8340-4eda-899a-27c4d0ff3746}
     
     
-      {45c655ac-89aa-41b9-8d45-22b15ae4d07e}
+      {7e05b39f-e6ff-4225-8527-eb37bbcdfb18}
     
     
-      {ed9f6c2f-b58a-4306-b9aa-2142ebb895dd}
+      {3c7f4c55-1189-43b5-a9f6-5debd66906ba}
     
     
-      {61b07ccd-ce5a-4b1b-9254-8925309edbda}
+      {c3c69023-452b-455e-902a-684735fc89c7}
     
     
-      {3daecefa-a485-48f9-8297-854d4ca4b2ae}
+      {f3238968-0490-44f5-8031-00edec99904c}
     
   
   
@@ -102,6 +102,9 @@
     
       CryptoCore\Header Files
     
+    
+      CryptoCore\Header Files
+    
     
       CryptoCore\Header Files
     
@@ -126,6 +129,9 @@
     
       EC\Header Files
     
+    
+      EC\Header Files
+    
   
   
     
@@ -170,6 +176,9 @@
     
       CryptoCore\Source Files
     
+    
+      CryptoCore\Source Files
+    
     
       CryptoCore\Source Files
     
@@ -194,6 +203,9 @@
     
       EC\Source Files
     
+    
+      EC\Source Files
+    
   
   
     
diff --git a/vendor/POCO/Crypto/Crypto_vs160.vcxproj b/vendor/POCO/Crypto/Crypto_vs160.vcxproj
index 2ed57cca..833edebb 100644
--- a/vendor/POCO/Crypto/Crypto_vs160.vcxproj
+++ b/vendor/POCO/Crypto/Crypto_vs160.vcxproj
@@ -559,6 +559,8 @@
     
     
     
+    
+    
     
     
     
@@ -607,6 +609,12 @@
     
       true
     
+    
+      true
+    
+    
+      true
+    
     
       true
     
diff --git a/vendor/POCO/Crypto/Crypto_vs160.vcxproj.filters b/vendor/POCO/Crypto/Crypto_vs160.vcxproj.filters
index 3ebeca3f..f5040138 100644
--- a/vendor/POCO/Crypto/Crypto_vs160.vcxproj.filters
+++ b/vendor/POCO/Crypto/Crypto_vs160.vcxproj.filters
@@ -2,58 +2,58 @@
 
   
     
-      {3ecf5332-c0c0-4122-b6e6-5dfabcb3b7fa}
+      {3e947499-e07e-49ae-9368-67ebdce7e2d9}
     
     
-      {4f8087f2-96ea-4728-8555-d1188d7dc40a}
+      {56cd8b79-7799-4706-be30-2f2551da9b06}
     
     
-      {546fc14e-2cad-438b-9670-e97a20c93227}
+      {ba015481-3cdc-4b4e-979f-73af16c9f113}
     
     
-      {78b6b52e-8707-4bad-8e63-a00446e610b5}
+      {29330975-8f63-4932-ae8b-2fc823bb5729}
     
     
-      {8da8d37c-0726-4c66-8375-9c2215bfdb6e}
+      {0de2d2fa-d52e-4b93-8429-1cc40ac5d89c}
     
     
-      {b33478ac-7764-436b-9419-797b445d9e83}
+      {73da9949-c7b1-450e-bfca-78e4fbaf01d0}
     
     
-      {9f50f3b5-a45f-45cd-a667-5c287f5f9025}
+      {56b61611-cae5-4a96-bec3-89dce21181c0}
     
     
-      {9d19bec5-a10f-4327-b252-0d33d1b4364f}
+      {7c16cc60-1306-47e1-aebf-18a33bbc40d3}
     
     
-      {d4e7ac76-ba3e-42d8-a8fb-1657f654d44b}
+      {15ccacc4-e673-4461-979f-862c147d2d0b}
     
     
-      {c0e23a57-a0d8-46aa-b1c5-977e4e8f95d1}
+      {26ce3381-5dc3-4241-8d27-09e14c4043b6}
     
     
-      {20f51cfd-b923-4182-a7ab-31806eccc848}
+      {9c578c8e-c65f-4088-9ca6-7609d2e7ebc0}
     
     
-      {765d54fc-025a-4e99-9274-a88d057bb402}
+      {418ebbbe-2a7d-4015-adf8-2e86566935a2}
     
     
-      {f5523a96-c1d3-493a-bc12-5033ec02d098}
+      {0a5aa58f-8179-480c-8805-7b64cb7c282a}
     
     
-      {ae54a1d7-7704-4a81-a841-ea05b0dc149c}
+      {66cbfe0e-ff30-42fe-9736-9fe8afad9463}
     
     
-      {e5b2f762-c12e-4cb6-9800-3df0cfcf2359}
+      {5ef84937-9e64-4f4a-af40-1118ac399fdc}
     
     
-      {95bc93c4-7fa9-4859-81b8-e7e886e927fe}
+      {59903614-4362-40ca-90f9-61958a40bf02}
     
     
-      {a996aa2c-ddc3-433f-9c82-a45e8e2ed763}
+      {6f907377-ea23-41d7-8008-63bf458c1a99}
     
     
-      {f39359ba-7374-4c3a-a42e-d9bafcf29f3e}
+      {e724e3f7-8adc-4738-8be3-fb6edbd76351}
     
   
   
@@ -102,6 +102,9 @@
     
       CryptoCore\Header Files
     
+    
+      CryptoCore\Header Files
+    
     
       CryptoCore\Header Files
     
@@ -126,6 +129,9 @@
     
       EC\Header Files
     
+    
+      EC\Header Files
+    
   
   
     
@@ -170,6 +176,9 @@
     
       CryptoCore\Source Files
     
+    
+      CryptoCore\Source Files
+    
     
       CryptoCore\Source Files
     
@@ -194,6 +203,9 @@
     
       EC\Source Files
     
+    
+      EC\Source Files
+    
   
   
     
diff --git a/vendor/POCO/Crypto/Crypto_vs170.sln b/vendor/POCO/Crypto/Crypto_vs170.sln
new file mode 100644
index 00000000..a73ee33f
--- /dev/null
+++ b/vendor/POCO/Crypto/Crypto_vs170.sln
@@ -0,0 +1,144 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Crypto", "Crypto_vs170.vcxproj", "{EEEE7259-32E9-4D56-B023-C733940AB2A0}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs170.vcxproj", "{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}"
+	ProjectSection(ProjectDependencies) = postProject
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0} = {EEEE7259-32E9-4D56-B023-C733940AB2A0}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		debug_shared|ARM64 = debug_shared|ARM64
+		release_shared|ARM64 = release_shared|ARM64
+		debug_static_mt|ARM64 = debug_static_mt|ARM64
+		release_static_mt|ARM64 = release_static_mt|ARM64
+		debug_static_md|ARM64 = debug_static_md|ARM64
+		release_static_md|ARM64 = release_static_md|ARM64
+		debug_shared|Win32 = debug_shared|Win32
+		release_shared|Win32 = release_shared|Win32
+		debug_static_mt|Win32 = debug_static_mt|Win32
+		release_static_mt|Win32 = release_static_mt|Win32
+		debug_static_md|Win32 = debug_static_md|Win32
+		release_static_md|Win32 = release_static_md|Win32
+		debug_shared|x64 = debug_shared|x64
+		release_shared|x64 = release_shared|x64
+		debug_static_mt|x64 = debug_static_mt|x64
+		release_static_mt|x64 = release_static_mt|x64
+		debug_static_md|x64 = debug_static_md|x64
+		release_static_md|x64 = release_static_md|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|ARM64.Build.0 = release_shared|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Win32.Build.0 = debug_shared|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|Win32.ActiveCfg = release_shared|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|Win32.Build.0 = release_shared|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|Win32.Deploy.0 = release_shared|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|Win32.Build.0 = release_static_md|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|x64.ActiveCfg = debug_shared|x64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|x64.Build.0 = debug_shared|x64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_shared|x64.Deploy.0 = debug_shared|x64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|x64.ActiveCfg = release_shared|x64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|x64.Build.0 = release_shared|x64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_shared|x64.Deploy.0 = release_shared|x64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|x64.Build.0 = release_static_mt|x64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|x64.Build.0 = debug_static_md|x64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|x64.ActiveCfg = release_static_md|x64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|x64.Build.0 = release_static_md|x64
+		{EEEE7259-32E9-4D56-B023-C733940AB2A0}.release_static_md|x64.Deploy.0 = release_static_md|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|ARM64.Build.0 = release_shared|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.Build.0 = debug_shared|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Win32.ActiveCfg = release_shared|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Win32.Build.0 = release_shared|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Win32.Deploy.0 = release_shared|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Win32.Build.0 = release_static_md|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|x64.ActiveCfg = debug_shared|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|x64.Build.0 = debug_shared|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|x64.Deploy.0 = debug_shared|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|x64.ActiveCfg = release_shared|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|x64.Build.0 = release_shared|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|x64.Deploy.0 = release_shared|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|x64.Build.0 = release_static_mt|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|x64.Build.0 = debug_static_md|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|x64.ActiveCfg = release_static_md|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|x64.Build.0 = release_static_md|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|x64.Deploy.0 = release_static_md|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/vendor/POCO/Crypto/Crypto_vs170.vcxproj b/vendor/POCO/Crypto/Crypto_vs170.vcxproj
new file mode 100644
index 00000000..ca4d885d
--- /dev/null
+++ b/vendor/POCO/Crypto/Crypto_vs170.vcxproj
@@ -0,0 +1,931 @@
+
+
+  
+    
+      debug_shared
+      ARM64
+    
+    
+      debug_shared
+      Win32
+    
+    
+      debug_shared
+      x64
+    
+    
+      debug_static_md
+      ARM64
+    
+    
+      debug_static_md
+      Win32
+    
+    
+      debug_static_md
+      x64
+    
+    
+      debug_static_mt
+      ARM64
+    
+    
+      debug_static_mt
+      Win32
+    
+    
+      debug_static_mt
+      x64
+    
+    
+      release_shared
+      ARM64
+    
+    
+      release_shared
+      Win32
+    
+    
+      release_shared
+      x64
+    
+    
+      release_static_md
+      ARM64
+    
+    
+      release_static_md
+      Win32
+    
+    
+      release_static_md
+      x64
+    
+    
+      release_static_mt
+      ARM64
+    
+    
+      release_static_mt
+      Win32
+    
+    
+      release_static_mt
+      x64
+    
+  
+  
+    Crypto
+    {EEEE7259-32E9-4D56-B023-C733940AB2A0}
+    Crypto
+    Win32Proj
+  
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+  
+    <_ProjectFileVersion>16.0.32629.160
+    PocoCryptoA64d
+    PocoCryptomdd
+    PocoCryptomtd
+    PocoCryptoA64
+    PocoCryptomd
+    PocoCryptomt
+    PocoCryptod
+    PocoCryptomdd
+    PocoCryptomtd
+    PocoCrypto
+    PocoCryptomd
+    PocoCryptomt
+    PocoCrypto64d
+    PocoCryptomdd
+    PocoCryptomtd
+    PocoCrypto64
+    PocoCryptomd
+    PocoCryptomt
+  
+  
+    ..\binA64\
+    objA64\Crypto\$(Configuration)\
+    true
+  
+  
+    ..\binA64\
+    objA64\Crypto\$(Configuration)\
+    false
+  
+  
+    ..\libA64\
+    objA64\Crypto\$(Configuration)\
+  
+  
+    ..\libA64\
+    objA64\Crypto\$(Configuration)\
+  
+  
+    ..\libA64\
+    objA64\Crypto\$(Configuration)\
+  
+  
+    ..\libA64\
+    objA64\Crypto\$(Configuration)\
+  
+  
+    ..\bin\
+    obj\Crypto\$(Configuration)\
+    true
+  
+  
+    ..\bin\
+    obj\Crypto\$(Configuration)\
+    false
+  
+  
+    ..\lib\
+    obj\Crypto\$(Configuration)\
+  
+  
+    ..\lib\
+    obj\Crypto\$(Configuration)\
+  
+  
+    ..\lib\
+    obj\Crypto\$(Configuration)\
+  
+  
+    ..\lib\
+    obj\Crypto\$(Configuration)\
+  
+  
+    ..\bin64\
+    obj64\Crypto\$(Configuration)\
+    true
+  
+  
+    ..\bin64\
+    obj64\Crypto\$(Configuration)\
+    false
+  
+  
+    ..\lib64\
+    obj64\Crypto\$(Configuration)\
+  
+  
+    ..\lib64\
+    obj64\Crypto\$(Configuration)\
+  
+  
+    ..\lib64\
+    obj64\Crypto\$(Configuration)\
+  
+  
+    ..\lib64\
+    obj64\Crypto\$(Configuration)\
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;_USRDLL;Crypto_EXPORTS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      ..\binA64\PocoCryptoA64d.dll
+      true
+      true
+      ..\binA64\PocoCryptoA64d.pdb
+      ..\libA64;%(AdditionalLibraryDirectories)
+      Console
+      ..\libA64\PocoCryptod.lib
+      MachineARM64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;_USRDLL;Crypto_EXPORTS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      ..\binA64\PocoCryptoA64.dll
+      true
+      false
+      ..\libA64;%(AdditionalLibraryDirectories)
+      Console
+      true
+      true
+      ..\libA64\PocoCrypto.lib
+      MachineARM64
+    
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      ..\libA64\PocoCryptomtd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\libA64\PocoCryptomtd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\libA64\PocoCryptomt.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      ..\libA64\PocoCryptomdd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\libA64\PocoCryptomdd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\libA64\PocoCryptomd.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;_USRDLL;Crypto_EXPORTS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      ..\bin\PocoCryptod.dll
+      true
+      true
+      ..\bin\PocoCryptod.pdb
+      ..\lib;%(AdditionalLibraryDirectories)
+      Console
+      ..\lib\PocoCryptod.lib
+      MachineX86
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;_USRDLL;Crypto_EXPORTS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      ..\bin\PocoCrypto.dll
+      true
+      false
+      ..\lib;%(AdditionalLibraryDirectories)
+      Console
+      true
+      true
+      ..\lib\PocoCrypto.lib
+      MachineX86
+    
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      ..\lib\PocoCryptomtd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\lib\PocoCryptomtd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\lib\PocoCryptomt.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      ..\lib\PocoCryptomdd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\lib\PocoCryptomdd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      ..\lib\PocoCryptomd.pdb
+      Level3
+      
+      Default
+      true
+    
+    
+      ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies)
+      ..\lib\PocoCryptomd.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;_USRDLL;Crypto_EXPORTS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      ..\bin64\PocoCrypto64d.dll
+      true
+      true
+      ..\bin64\PocoCrypto64d.pdb
+      ..\lib64;%(AdditionalLibraryDirectories)
+      Console
+      ..\lib64\PocoCryptod.lib
+      MachineX64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;_USRDLL;Crypto_EXPORTS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      ..\bin64\PocoCrypto64.dll
+      true
+      false
+      ..\lib64;%(AdditionalLibraryDirectories)
+      Console
+      true
+      true
+      ..\lib64\PocoCrypto.lib
+      MachineX64
+    
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      ..\lib64\PocoCryptomtd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\lib64\PocoCryptomtd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\lib64\PocoCryptomt.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      ..\lib64\PocoCryptomdd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\lib64\PocoCryptomdd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\lib64\PocoCryptomd.lib
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+  
+    
+      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
+    
+  
+  
+  
+
diff --git a/vendor/POCO/Crypto/Crypto_vs170.vcxproj.filters b/vendor/POCO/Crypto/Crypto_vs170.vcxproj.filters
new file mode 100644
index 00000000..151ae573
--- /dev/null
+++ b/vendor/POCO/Crypto/Crypto_vs170.vcxproj.filters
@@ -0,0 +1,213 @@
+
+
+  
+    
+      {956bb6d7-1946-4d8e-a988-6f840553f433}
+    
+    
+      {ac7c9562-5031-4fd3-bf00-58ee2afd58f1}
+    
+    
+      {bc2c461a-a460-43c5-9dda-e1ac05590b4a}
+    
+    
+      {6f66dac0-646c-425e-98f9-0443b14bea15}
+    
+    
+      {3cd7a042-61b8-4430-88a3-96de91011504}
+    
+    
+      {5480a739-70e8-4989-9388-858bc73745bf}
+    
+    
+      {10a1798e-fd19-4a4b-a4fa-078316b35b4a}
+    
+    
+      {948b072b-d50b-4e17-bed4-3bae8345be51}
+    
+    
+      {984e69ae-d972-430f-84ad-885ce648930e}
+    
+    
+      {c4a637d7-9aad-4d1b-b9ce-b00a3a9bf47c}
+    
+    
+      {ef263eac-80d3-4c1a-abee-af439456b293}
+    
+    
+      {2af1dbe7-277e-4ab3-b8ad-255c4cf4f3ac}
+    
+    
+      {8d350d20-818d-4e10-8a87-6df008441927}
+    
+    
+      {a6bd57e4-6d39-4a42-aa3d-4b1ad9e262fa}
+    
+    
+      {1c3b1b7c-2a2b-4eba-bc22-cedfdcc12b48}
+    
+    
+      {a692dced-8e66-4531-9567-6b57a3f9d89f}
+    
+    
+      {d6b09c46-8d74-4ab2-99b0-31923c880bed}
+    
+    
+      {b0414365-c964-4c45-a80e-8539c5fe0b5b}
+    
+  
+  
+    
+      Cipher\Header Files
+    
+    
+      Cipher\Header Files
+    
+    
+      Cipher\Header Files
+    
+    
+      Cipher\Header Files
+    
+    
+      Cipher\Header Files
+    
+    
+      Cipher\Header Files
+    
+    
+      Cipher\Header Files
+    
+    
+      RSA\Header Files
+    
+    
+      RSA\Header Files
+    
+    
+      RSA\Header Files
+    
+    
+      RSA\Header Files
+    
+    
+      Certificate\Header Files
+    
+    
+      Certificate\Header Files
+    
+    
+      CryptoCore\Header Files
+    
+    
+      CryptoCore\Header Files
+    
+    
+      CryptoCore\Header Files
+    
+    
+      CryptoCore\Header Files
+    
+    
+      CryptoCore\Header Files
+    
+    
+      CryptoCore\Header Files
+    
+    
+      CryptoCore\Header Files
+    
+    
+      Digest\Header Files
+    
+    
+      EC\Header Files
+    
+    
+      EC\Header Files
+    
+    
+      EC\Header Files
+    
+    
+      EC\Header Files
+    
+  
+  
+    
+      Cipher\Source Files
+    
+    
+      Cipher\Source Files
+    
+    
+      Cipher\Source Files
+    
+    
+      Cipher\Source Files
+    
+    
+      Cipher\Source Files
+    
+    
+      Cipher\Source Files
+    
+    
+      Cipher\Source Files
+    
+    
+      RSA\Source Files
+    
+    
+      RSA\Source Files
+    
+    
+      RSA\Source Files
+    
+    
+      RSA\Source Files
+    
+    
+      Certificate\Source Files
+    
+    
+      Certificate\Source Files
+    
+    
+      CryptoCore\Source Files
+    
+    
+      CryptoCore\Source Files
+    
+    
+      CryptoCore\Source Files
+    
+    
+      CryptoCore\Source Files
+    
+    
+      CryptoCore\Source Files
+    
+    
+      CryptoCore\Source Files
+    
+    
+      Digest\Source Files
+    
+    
+      EC\Source Files
+    
+    
+      EC\Source Files
+    
+    
+      EC\Source Files
+    
+    
+      EC\Source Files
+    
+  
+  
+    
+  
+
\ No newline at end of file
diff --git a/vendor/POCO/Crypto/Makefile b/vendor/POCO/Crypto/Makefile
index 3e654d1b..6542b5b7 100644
--- a/vendor/POCO/Crypto/Makefile
+++ b/vendor/POCO/Crypto/Makefile
@@ -6,11 +6,19 @@
 
 include $(POCO_BASE)/build/rules/global
 
-SYSLIBS += -lssl -lcrypto
+# see https://github.com/pocoproject/poco/issues/3073
+GLOBAL_SYSLIBS := $(SYSLIBS)
+ifeq ($(findstring AIX, $(POCO_CONFIG)), AIX)
+SYSLIBS = -lssl_a -lcrypto_a
+else
+SYSLIBS = -lssl -lcrypto
+endif
+SYSLIBS += $(GLOBAL_SYSLIBS)
 
 objects = Cipher CipherFactory CipherImpl CipherKey CipherKeyImpl \
-	CryptoException CryptoStream CryptoTransform ECDSADigestEngine \
-	ECKey ECKeyImpl EVPPKey KeyPair KeyPairImpl PKCS12Container \
+	CryptoException CryptoStream CryptoTransform \
+	ECDSADigestEngine ECKey ECKeyImpl Envelope \
+	EVPCipherImpl EVPPKey KeyPair KeyPairImpl PKCS12Container \
 	RSACipherImpl RSAKey RSAKeyImpl RSADigestEngine DigestEngine \
 	X509Certificate OpenSSLInitializer
 
diff --git a/vendor/POCO/Crypto/include/Poco/Crypto/Cipher.h b/vendor/POCO/Crypto/include/Poco/Crypto/Cipher.h
index 30cb0506..c0a6188f 100644
--- a/vendor/POCO/Crypto/include/Poco/Crypto/Cipher.h
+++ b/vendor/POCO/Crypto/include/Poco/Crypto/Cipher.h
@@ -93,7 +93,6 @@ public:
 		ENC_BINHEX       = 0x02, /// BinHex-encoded output
 		ENC_BASE64_NO_LF = 0x81, /// Base64-encoded output, no linefeeds
 		ENC_BINHEX_NO_LF = 0x82  /// BinHex-encoded output, no linefeeds
-
 	};
 
 	virtual ~Cipher();
@@ -108,16 +107,16 @@ public:
 	virtual CryptoTransform::Ptr createDecryptor() = 0;
 		/// Creates a decryptor object to be used with a CryptoStream.
 
-	virtual std::string encryptString(const std::string& str, Encoding encoding = ENC_NONE);
+	virtual std::string encryptString(const std::string& str, Encoding encoding = ENC_NONE, bool padding = true);
 		/// Directly encrypt a string and encode it using the given encoding.
 
-	virtual std::string decryptString(const std::string& str, Encoding encoding = ENC_NONE);
+	virtual std::string decryptString(const std::string& str, Encoding encoding = ENC_NONE, bool padding = true);
 		/// Directly decrypt a string that is encoded with the given encoding.
 
-	virtual void encrypt(std::istream& source, std::ostream& sink, Encoding encoding = ENC_NONE);
+	virtual void encrypt(std::istream& source, std::ostream& sink, Encoding encoding = ENC_NONE, bool padding = true);
 		/// Directly encrypts an input stream and encodes it using the given encoding.
 
-	virtual void decrypt(std::istream& source, std::ostream& sink, Encoding encoding = ENC_NONE);
+	virtual void decrypt(std::istream& source, std::ostream& sink, Encoding encoding = ENC_NONE, bool padding = true);
 		/// Directly decrypt an input stream that is encoded with the given encoding.
 
 protected:
diff --git a/vendor/POCO/Crypto/include/Poco/Crypto/CipherFactory.h b/vendor/POCO/Crypto/include/Poco/Crypto/CipherFactory.h
index 36aa964a..5202e3f7 100644
--- a/vendor/POCO/Crypto/include/Poco/Crypto/CipherFactory.h
+++ b/vendor/POCO/Crypto/include/Poco/Crypto/CipherFactory.h
@@ -28,6 +28,7 @@ namespace Crypto {
 class Cipher;
 class CipherKey;
 class RSAKey;
+class EVPPKey;
 
 
 class Crypto_API CipherFactory
@@ -42,8 +43,8 @@ public:
 		/// Destroys the CipherFactory.
 
 	Cipher* createCipher(const CipherKey& key);
-		/// Creates a Cipher object for the given Cipher name. Valid cipher 
-		/// names depend on the OpenSSL version the library is linked with;  
+		/// Creates a Cipher object for the given Cipher name. Valid cipher
+		/// names depend on the OpenSSL version the library is linked with;
 		/// see the output of
 		///
 		///     openssl enc --help
@@ -59,7 +60,11 @@ public:
 	Cipher* createCipher(const RSAKey& key, RSAPaddingMode paddingMode = RSA_PADDING_PKCS1);
 		/// Creates a RSACipher using the given RSA key and padding mode
 		/// for public key encryption/private key decryption.
-	
+
+	Cipher* createCipher(const EVPPKey& key);
+		/// Creates an EVPCipher using the given EVP key
+		/// for public key encryption/private key decryption.
+
 	static CipherFactory& defaultFactory();
 		/// Returns the default CipherFactory.
 
diff --git a/vendor/POCO/Crypto/include/Poco/Crypto/Crypto.h b/vendor/POCO/Crypto/include/Poco/Crypto/Crypto.h
index edd2e360..7b857cf3 100644
--- a/vendor/POCO/Crypto/include/Poco/Crypto/Crypto.h
+++ b/vendor/POCO/Crypto/include/Poco/Crypto/Crypto.h
@@ -24,8 +24,18 @@
 #define POCO_EXTERNAL_OPENSSL_SLPRO 2
 
 
+//
+// Temporarily suppress deprecation warnings coming
+// from OpenSSL 3.0, until we have updated our code.
+//
+#if !defined(POCO_DONT_SUPPRESS_OPENSSL_DEPRECATED)
+#define OPENSSL_SUPPRESS_DEPRECATED
+#endif
+
+
 #include "Poco/Foundation.h"
 #include 
+#include 
 
 
 #ifndef OPENSSL_VERSION_PREREQ
@@ -39,6 +49,11 @@
 #endif
 
 
+#if OPENSSL_VERSION_NUMBER < 0x10000000L
+#error "OpenSSL version too old. At least OpenSSL 1.0.0 is required."
+#endif
+
+
 enum RSAPaddingMode
 	/// The padding mode used for RSA public key encryption.
 {
@@ -164,6 +179,20 @@ namespace Poco {
 namespace Crypto {
 
 
+inline std::string& getError(std::string& msg)
+	/// Appends OpenSSL error(s) to msg and
+	/// returns the augmented error description.
+{
+	unsigned long err;
+	while ((err = ERR_get_error()))
+	{
+		if (!msg.empty()) msg.append(1, '\n');
+		msg.append(ERR_error_string(err, 0));
+	}
+	return msg;
+}
+
+
 void Crypto_API initializeCrypto();
 	/// Initialize the Crypto library, as well as the underlying OpenSSL
 	/// libraries, by calling OpenSSLInitializer::initialize().
diff --git a/vendor/POCO/Crypto/include/Poco/Crypto/DigestEngine.h b/vendor/POCO/Crypto/include/Poco/Crypto/DigestEngine.h
index 8244a6ea..1c30e769 100644
--- a/vendor/POCO/Crypto/include/Poco/Crypto/DigestEngine.h
+++ b/vendor/POCO/Crypto/include/Poco/Crypto/DigestEngine.h
@@ -39,13 +39,13 @@ public:
 		/// See the OpenSSL documentation for a list of supported digest algorithms.
 		///
 		/// Throws a Poco::NotFoundException if no algorithm with the given name exists.
-		
+
 	~DigestEngine();
 		/// Destroys the DigestEngine.
-	
+
 	const std::string& algorithm() const;
 		/// Returns the name of the digest algorithm.
-	
+
 	int nid() const;
 		/// Returns the NID (OpenSSL object identifier) of the digest algorithm.
 
@@ -56,7 +56,7 @@ public:
 
 protected:
 	void updateImpl(const void* data, std::size_t length);
-	
+
 private:
 	std::string _name;
 	EVP_MD_CTX* _pContext;
diff --git a/vendor/POCO/Crypto/include/Poco/Crypto/ECKey.h b/vendor/POCO/Crypto/include/Poco/Crypto/ECKey.h
index e2abb928..950b8692 100644
--- a/vendor/POCO/Crypto/include/Poco/Crypto/ECKey.h
+++ b/vendor/POCO/Crypto/include/Poco/Crypto/ECKey.h
@@ -32,6 +32,7 @@ class X509Certificate;
 class PKCS12Container;
 
 
+//@ deprecated
 class Crypto_API ECKey: public KeyPair
 	/// This class stores an EC key pair, consisting
 	/// of private and public key. Storage of the private
diff --git a/vendor/POCO/Crypto/include/Poco/Crypto/ECKeyImpl.h b/vendor/POCO/Crypto/include/Poco/Crypto/ECKeyImpl.h
index 1795e958..f9c1b1d4 100644
--- a/vendor/POCO/Crypto/include/Poco/Crypto/ECKeyImpl.h
+++ b/vendor/POCO/Crypto/include/Poco/Crypto/ECKeyImpl.h
@@ -62,8 +62,8 @@ public:
 
 	ECKeyImpl(const std::string& publicKeyFile, const std::string& privateKeyFile, const std::string& privateKeyPassphrase);
 		/// Creates the ECKey, by reading public and private key from the given files and
-		/// using the given passphrase for the private key. Can only by used for signing if 
-		/// a private key is available. 
+		/// using the given passphrase for the private key. Can only by used for signing if
+		/// a private key is available.
 
 	ECKeyImpl(std::istream* pPublicKeyStream, std::istream* pPrivateKeyStream, const std::string& privateKeyPassphrase);
 		/// Creates the ECKey. Can only by used for signing if pPrivKey
@@ -91,7 +91,7 @@ public:
 	void save(const std::string& publicKeyFile,
 		const std::string& privateKeyFile = "",
 		const std::string& privateKeyPassphrase = "") const;
-		/// Exports the public and private keys to the given files. 
+		/// Exports the public and private keys to the given files.
 		///
 		/// If an empty filename is specified, the corresponding key
 		/// is not exported.
diff --git a/vendor/POCO/Crypto/include/Poco/Crypto/EVPCipherImpl.h b/vendor/POCO/Crypto/include/Poco/Crypto/EVPCipherImpl.h
new file mode 100644
index 00000000..b85d7eaa
--- /dev/null
+++ b/vendor/POCO/Crypto/include/Poco/Crypto/EVPCipherImpl.h
@@ -0,0 +1,76 @@
+//
+// EVPCipherImpl.h
+//
+// Library: Crypto
+// Package: EVP
+// Module:  EVPCipherImpl
+//
+// Definition of the EVPCipherImpl class.
+//
+// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier:	BSL-1.0
+//
+
+
+#ifndef Crypto_EVPCipherImpl_INCLUDED
+#define Crypto_EVPCipherImpl_INCLUDED
+
+
+#include "Poco/Crypto/Crypto.h"
+#include "Poco/Crypto/Cipher.h"
+#include "Poco/Crypto/EVPPKey.h"
+#include "Poco/Crypto/OpenSSLInitializer.h"
+#include 
+
+
+namespace Poco {
+namespace Crypto {
+
+
+class EVPCipherImpl: public Cipher
+	/// An implementation of the Cipher class for
+	/// asymmetric (public-private key) encryption
+	/// based on the OpenSSL crypto library.
+	///
+	/// Encryption is using the public key, decryption
+	/// requires the private key.
+{
+public:
+	EVPCipherImpl(const EVPPKey& key);
+		/// Creates a new EVPCipherImpl object for the given EVPPKey
+		/// and using the given padding mode.
+
+	virtual ~EVPCipherImpl();
+		/// Destroys the EVPCipherImpl.
+
+	const std::string& name() const;
+		/// Returns the name of the Cipher.
+
+	CryptoTransform::Ptr createEncryptor();
+		/// Creates an encryptor object.
+
+	CryptoTransform::Ptr createDecryptor();
+		/// Creates a decryptor object.
+
+private:
+	EVPPKey _key;
+	OpenSSLInitializer _openSSLInitializer;
+};
+
+
+//
+// Inlines
+//
+
+inline const std::string& EVPCipherImpl::name() const
+{
+	return _key.name();
+}
+
+
+} } // namespace Poco::Crypto
+
+
+#endif // Crypto_EVPCipherImpl_INCLUDED
diff --git a/vendor/POCO/Crypto/include/Poco/Crypto/EVPPKey.h b/vendor/POCO/Crypto/include/Poco/Crypto/EVPPKey.h
index 7cf44d86..1bc0356f 100644
--- a/vendor/POCO/Crypto/include/Poco/Crypto/EVPPKey.h
+++ b/vendor/POCO/Crypto/include/Poco/Crypto/EVPPKey.h
@@ -22,20 +22,25 @@
 #include "Poco/Crypto/Crypto.h"
 #include "Poco/Crypto/CryptoException.h"
 #include "Poco/StreamCopier.h"
+#include "Poco/Format.h"
 #include 
 #include 
 #include 
 #include 
 #include 
 #include 
+#include 
 
 
 namespace Poco {
 namespace Crypto {
 
-
+//@deprecated
 class ECKey;
+//@deprecated
 class RSAKey;
+class PKCS12Container;
+class X509Certificate;
 
 
 class Crypto_API EVPPKey
@@ -55,10 +60,36 @@ public:
 		/// Only EC keys can be wrapped by an EVPPKey
 		/// created using this constructor.
 
+	EVPPKey(const X509Certificate& cert);
+		/// Constructs EVPPKey from the given certificate.
+
+	EVPPKey(const PKCS12Container& cert);
+		/// Constructs EVPPKey from the given container.
+
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
+
+	EVPPKey(int type, int param);
+		/// Creates the EVPPKey.
+		/// Creates a new public/private keypair using the given parameters.
+		/// Can be used to sign data and verify signatures.
+		///
+		/// Suported types:
+		///   - EVP_PKEY_RSA
+		///   - EVP_PKEY_EC
+		///
+		/// Parameters:
+		///   - for EVP_PKEY_RSA: key length in bits
+		///   - for EVP_PKEY_EC: curve NID
+		///
+		/// This constructor is not available for OpenSSL version < 1.0.0
+
+#endif // OPENSSL_VERSION_NUMBER >= 0x10000000L
+
 	explicit EVPPKey(EVP_PKEY* pEVPPKey);
 		/// Constructs EVPPKey from EVP_PKEY pointer.
 		/// The content behind the supplied pointer is internally duplicated.
 
+	//@ deprecated
 	template
 	explicit EVPPKey(K* pKey): _pEVPPKey(EVP_PKEY_new())
 		/// Constructs EVPPKey from a "native" OpenSSL (RSA or EC_KEY),
@@ -124,6 +155,9 @@ public:
 	int type() const;
 		/// Retuns the EVPPKey type NID.
 
+	const std::string& name() const;
+		/// Retuns the EVPPKey name.
+
 	bool isSupported(int type) const;
 		/// Returns true if OpenSSL type is supported
 
@@ -135,19 +169,25 @@ public:
 
 	static EVP_PKEY* duplicate(const EVP_PKEY* pFromKey, EVP_PKEY** pToKey);
 		/// Duplicates pFromKey into *pToKey and returns
-		// the pointer to duplicated EVP_PKEY.
+		/// the pointer to duplicated EVP_PKEY.
 
 private:
 	EVPPKey();
 
 	static int type(const EVP_PKEY* pEVPPKey);
+	void checkType();
 	void newECKey(const char* group);
 	void duplicate(EVP_PKEY* pEVPPKey);
 
+	//@ deprecated
 	void setKey(ECKey* pKey);
+	//@ deprecated
 	void setKey(RSAKey* pKey);
+	//@ deprecated
 	void setKey(EC_KEY* pKey);
+	//@ deprecated
 	void setKey(RSA* pKey);
+
 	static int passCB(char* buf, int size, int, void* pass);
 
 	typedef EVP_PKEY* (*PEM_read_FILE_Key_fn)(FILE*, EVP_PKEY**, pem_password_cb*, void*);
@@ -180,7 +220,7 @@ private:
 #if defined(_MSC_VER)
 #pragma warning(push)
 #pragma warning(disable:4996) // deprecation warnings
-#endif				
+#endif
 				pFile = fopen(keyFile.c_str(), "r");
 #if defined(_MSC_VER)
 #pragma warning(pop)
@@ -211,8 +251,10 @@ private:
 				}
 				else
 				{
+					std::string msg = Poco::format("EVPPKey::loadKey('%s')\n", keyFile);
+					getError(msg);
 					if (getFunc) EVP_PKEY_free(pKey);
-					throw IOException("ECKeyImpl, cannot open file", keyFile);
+					throw IOException(msg);
 				}
 			}
 			else goto error;
@@ -220,8 +262,10 @@ private:
 		return false;
 
 	error:
+		std::string msg = Poco::format("EVPPKey::loadKey('%s')\n", keyFile);
+		getError(msg);
 		if (pFile) fclose(pFile);
-		throw OpenSSLException("EVPKey::loadKey(string)");
+		throw OpenSSLException(msg);
 	}
 
 	template 
@@ -277,13 +321,18 @@ private:
 		return false;
 
 	error:
+		std::string msg = "EVPPKey::loadKey(istream)\n";
+		getError(msg);
 		if (pBIO) BIO_free(pBIO);
-		throw OpenSSLException("EVPKey::loadKey(stream)");
+		throw OpenSSLException(msg);
 	}
 
-	EVP_PKEY* _pEVPPKey;
+	EVP_PKEY* _pEVPPKey = 0;
+	static const std::map KNOWN_TYPES;
 
+	//@deprecated
 	friend class ECKeyImpl;
+	//@deprecated
 	friend class RSAKeyImpl;
 };
 
@@ -297,7 +346,11 @@ inline bool EVPPKey::operator == (const EVPPKey& other) const
 {
 	poco_check_ptr (other._pEVPPKey);
 	poco_check_ptr (_pEVPPKey);
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+	return (1 == EVP_PKEY_eq(_pEVPPKey, other._pEVPPKey));
+#else
 	return (1 == EVP_PKEY_cmp(_pEVPPKey, other._pEVPPKey));
+#endif
 }
 
 
@@ -311,7 +364,7 @@ inline int EVPPKey::type(const EVP_PKEY* pEVPPKey)
 {
 	if (!pEVPPKey) return NID_undef;
 
-	return EVP_PKEY_type(EVP_PKEY_id(pEVPPKey));
+	return EVP_PKEY_type(EVP_PKEY_base_id(pEVPPKey));
 }
 
 
@@ -339,20 +392,6 @@ inline EVPPKey::operator EVP_PKEY*()
 }
 
 
-inline void EVPPKey::setKey(EC_KEY* pKey)
-{
-	if (!EVP_PKEY_set1_EC_KEY(_pEVPPKey, pKey))
-		throw OpenSSLException();
-}
-
-
-inline void EVPPKey::setKey(RSA* pKey)
-{
-	if (!EVP_PKEY_set1_RSA(_pEVPPKey, pKey))
-		throw OpenSSLException();
-}
-
-
 } } // namespace Poco::Crypto
 
 
diff --git a/vendor/POCO/Crypto/include/Poco/Crypto/Envelope.h b/vendor/POCO/Crypto/include/Poco/Crypto/Envelope.h
new file mode 100644
index 00000000..5102de3d
--- /dev/null
+++ b/vendor/POCO/Crypto/include/Poco/Crypto/Envelope.h
@@ -0,0 +1,174 @@
+//
+// Envelope.h
+//
+// Library: Crypto
+// Package: Envelope
+// Module:  Envelope
+//
+// Definition of the Envelope class.
+//
+// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier:	BSL-1.0
+//
+
+
+#ifndef Crypto_Envelope_INCLUDED
+#define Crypto_Envelope_INCLUDED
+
+
+#include "Poco/Crypto/Crypto.h"
+#include "Poco/Crypto/EVPPKey.h"
+#include 
+#include 
+
+
+namespace Poco {
+namespace Crypto {
+
+
+class Crypto_API Envelope
+	/// Envelope encrypts/decrypts data using a symmetric key.
+	///
+	/// Encryption and decryption with asymmetric keys is computationally expensive.
+	/// To alleviate that, Envelope encrypts data using a symmetric session key;
+	/// the key is then itself asymmetrically encrypted using a public key.
+	/// It is also possible to encrypt the session key with multiple public keys,
+	/// so that the message can be sent to multiple recipients.
+	///
+	/// Each recipient decrypts the session with their private key; the session
+	/// key for the message decryption is the same for each recipient.
+{
+public:
+	using Byte = unsigned char;
+	using ByteVec = std::vector;
+	using EVPPKeyVec = std::vector;
+	using EVP_PKEYVec = std::vector;
+	using EncKeyVec = std::vector;
+
+	Envelope() = delete;
+
+	Envelope(const EVPPKey& key, int cipherNID);
+		/// Creates a new Envelope object.
+		/// Initialization vector is automatically
+		/// generated.
+
+	Envelope(const EVPPKeyVec& keys, int cipherNID);
+		/// Creates a new Envelope object.
+		/// Initialization vector is automatically
+		/// generated.
+
+	~Envelope();
+		/// Destroys the Envelope.
+
+	const ByteVec& iv() const;
+		/// Returns the initialization vector.
+
+	void addKey(const EVPPKey& key);
+		/// Adds the key to the list of private keys.
+
+	const EncKeyVec& keys() const;
+		/// Returns encrypted symmetric keys.
+
+	int cipherNID() const;
+		/// Reurns the cipher NID.
+
+	const ByteVec& seal(const std::string& plainText);
+		/// Encrypts the given text and returns the encrypted text.
+
+	const ByteVec& seal(const ByteVec& plainData);
+		/// Encrypts the given data and returns the encrypted data.
+
+	const ByteVec& getContent() const;
+		/// Returns the encrypted content.
+	
+	void setContent(const ByteVec& enc);
+		/// Sets the encrypted content.
+
+	ByteVec open(const EVPPKey& privKey, const ByteVec& encKeys, const ByteVec& iv = ByteVec());
+		/// Decrypts the stored encrypted data and returns it.
+
+	std::string openAsString(const EVPPKey& privKey, const ByteVec& encKeys, const ByteVec& iv = ByteVec());
+		/// Decrypts the stored encrypted data and returns it.
+
+	static std::string toString(const ByteVec& data);
+		/// Converts and returns string from ByteVec.
+
+private:
+	Envelope(int cipherNID);
+	Envelope(int cipherNID, const ByteVec& iv);
+
+	int ivSize() const;
+	int blockSize() const;
+	void handleErrors(std::string&& msg);
+
+	const EVP_CIPHER* _pCipher;
+	EVP_CIPHER_CTX*   _pCtx;
+	EVP_CIPHER_CTX*   _pDecCtx;
+	ByteVec           _iv;
+	EVP_PKEYVec       _pubKeys;
+	EncKeyVec         _encKeys;
+	std::vector  _encKeysSizes;
+	ByteVec           _encContent;
+};
+
+
+inline int Envelope::ivSize() const
+{
+	return EVP_CIPHER_iv_length(_pCipher);
+}
+
+
+inline const Envelope::ByteVec& Envelope::iv() const
+{
+	return _iv;
+}
+
+
+inline int Envelope::blockSize() const
+{
+	return EVP_CIPHER_block_size(_pCipher);
+}
+
+
+inline const Envelope::EncKeyVec& Envelope::keys() const
+{
+	return _encKeys;
+}
+
+
+inline std::string Envelope::toString(const ByteVec& data)
+{
+	return std::string(data.begin(), data.end());
+}
+
+
+inline std::string Envelope::openAsString(const EVPPKey& privKey, const ByteVec& encKey, const ByteVec& iv)
+{
+	return toString(open(privKey, encKey, iv));
+}
+
+
+inline const Envelope::ByteVec& Envelope::getContent() const
+{
+	return _encContent;
+}
+	
+
+inline void Envelope::setContent(const ByteVec& enc)
+{
+	_encContent = enc;
+}
+
+
+inline int Envelope::cipherNID() const
+{
+	return EVP_CIPHER_nid(_pCipher);
+}
+
+
+} } // namespace Poco::Crypto
+
+
+#endif // Crypto_Envelope_INCLUDED
diff --git a/vendor/POCO/Crypto/include/Poco/Crypto/KeyPairImpl.h b/vendor/POCO/Crypto/include/Poco/Crypto/KeyPairImpl.h
index 6999a46d..50718ce3 100644
--- a/vendor/POCO/Crypto/include/Poco/Crypto/KeyPairImpl.h
+++ b/vendor/POCO/Crypto/include/Poco/Crypto/KeyPairImpl.h
@@ -56,7 +56,7 @@ public:
 	virtual void save(const std::string& publicKeyFile,
 		const std::string& privateKeyFile = "",
 		const std::string& privateKeyPassphrase = "") const = 0;
-		/// Exports the public and private keys to the given files. 
+		/// Exports the public and private keys to the given files.
 		///
 		/// If an empty filename is specified, the corresponding key
 		/// is not exported.
diff --git a/vendor/POCO/Crypto/include/Poco/Crypto/OpenSSLInitializer.h b/vendor/POCO/Crypto/include/Poco/Crypto/OpenSSLInitializer.h
index 42c97ae4..c46fd741 100644
--- a/vendor/POCO/Crypto/include/Poco/Crypto/OpenSSLInitializer.h
+++ b/vendor/POCO/Crypto/include/Poco/Crypto/OpenSSLInitializer.h
@@ -22,7 +22,10 @@
 #include "Poco/Mutex.h"
 #include "Poco/AtomicCounter.h"
 #include 
-
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+#include 
+#include 
+#endif
 #if defined(OPENSSL_FIPS) && OPENSSL_VERSION_NUMBER < 0x010001000L
 #include 
 #endif
@@ -50,10 +53,10 @@ class Crypto_API OpenSSLInitializer
 public:
 	OpenSSLInitializer();
 		/// Automatically initialize OpenSSL on startup.
-		
+
 	~OpenSSLInitializer();
 		/// Automatically shut down OpenSSL on exit.
-	
+
 	static void initialize();
 		/// Initializes the OpenSSL machinery.
 
@@ -61,27 +64,37 @@ public:
 		/// Shuts down the OpenSSL machinery.
 
 	static bool isFIPSEnabled();
-		// Returns true if FIPS mode is enabled, false otherwise.
+		/// Returns true if FIPS mode is enabled, false otherwise.
 
 	static void enableFIPSMode(bool enabled);
-		// Enable or disable FIPS mode. If FIPS is not available, this method doesn't do anything.
+		/// Enable or disable FIPS mode. If FIPS is not available, this method doesn't do anything.
 
 protected:
 	enum
 	{
 		SEEDSIZE = 256
 	};
-	
+
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
 	// OpenSSL multithreading support
 	static void lock(int mode, int n, const char* file, int line);
 	static unsigned long id();
 	static struct CRYPTO_dynlock_value* dynlockCreate(const char* file, int line);
 	static void dynlock(int mode, struct CRYPTO_dynlock_value* lock, const char* file, int line);
 	static void dynlockDestroy(struct CRYPTO_dynlock_value* lock, const char* file, int line);
+#endif
 
 private:
-	static Poco::FastMutex* _mutexes;
 	static Poco::AtomicCounter _rc;
+
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+	static Poco::FastMutex* _mutexes;
+#endif
+
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+	static OSSL_PROVIDER* _defaultProvider;
+	static OSSL_PROVIDER* _legacyProvider;
+#endif
 };
 
 
diff --git a/vendor/POCO/Crypto/include/Poco/Crypto/RSADigestEngine.h b/vendor/POCO/Crypto/include/Poco/Crypto/RSADigestEngine.h
index 7c4d3860..e0c451d2 100644
--- a/vendor/POCO/Crypto/include/Poco/Crypto/RSADigestEngine.h
+++ b/vendor/POCO/Crypto/include/Poco/Crypto/RSADigestEngine.h
@@ -39,7 +39,7 @@ class Crypto_API RSADigestEngine: public Poco::DigestEngine
 	/// signed. Then, the hash value is encrypted, using
 	/// the RSA private key.
 	///
-	/// To verify a signature, pass it to the verify() 
+	/// To verify a signature, pass it to the verify()
 	/// member function. It will decrypt the signature
 	/// using the RSA public key and compare the resulting
 	/// hash with the actual hash of the data.
@@ -50,7 +50,7 @@ public:
 		DIGEST_MD5,
 		DIGEST_SHA1
 	};
-	
+
 	//@ deprecated
 	RSADigestEngine(const RSAKey& key, DigestType digestType = DIGEST_SHA1);
 		/// Creates the RSADigestEngine with the given RSA key,
@@ -74,11 +74,11 @@ public:
 	void reset();
 		/// Resets the engine so that a new
 		/// digest can be computed.
-		
+
 	const DigestEngine::Digest& digest();
-		/// Finishes the computation of the digest 
+		/// Finishes the computation of the digest
 		/// (the first time it's called) and
-		/// returns the message digest. 
+		/// returns the message digest.
 		///
 		/// Can be called multiple times.
 
diff --git a/vendor/POCO/Crypto/include/Poco/Crypto/RSAKey.h b/vendor/POCO/Crypto/include/Poco/Crypto/RSAKey.h
index 51c97432..767d5cd3 100644
--- a/vendor/POCO/Crypto/include/Poco/Crypto/RSAKey.h
+++ b/vendor/POCO/Crypto/include/Poco/Crypto/RSAKey.h
@@ -31,6 +31,7 @@ class X509Certificate;
 class PKCS12Container;
 
 
+//@ deprecated
 class Crypto_API RSAKey: public KeyPair
 	/// This class stores an RSA key pair, consisting
 	/// of private and public key. Storage of the private
@@ -56,7 +57,7 @@ public:
 	};
 
 	RSAKey(const EVPPKey& key);
-		/// Constructs ECKeyImpl by extracting the EC key.
+		/// Constructs RSAKey by extracting the RSA key.
 
 	RSAKey(const X509Certificate& cert);
 		/// Extracts the RSA public key from the given certificate.
diff --git a/vendor/POCO/Crypto/include/Poco/Crypto/RSAKeyImpl.h b/vendor/POCO/Crypto/include/Poco/Crypto/RSAKeyImpl.h
index f89c3bf2..f0397381 100644
--- a/vendor/POCO/Crypto/include/Poco/Crypto/RSAKeyImpl.h
+++ b/vendor/POCO/Crypto/include/Poco/Crypto/RSAKeyImpl.h
@@ -51,13 +51,13 @@ public:
 	using ByteVec = std::vector;
 
 	RSAKeyImpl(const EVPPKey& key);
-		/// Constructs ECKeyImpl by extracting the EC key.
+		/// Constructs RSAKeyImpl by extracting the RSA key.
 
 	RSAKeyImpl(const X509Certificate& cert);
 		/// Extracts the RSA public key from the given certificate.
 
 	RSAKeyImpl(const PKCS12Container& cert);
-		/// Extracts the EC private key from the given certificate.
+		/// Extracts the RSA private key from the given certificate.
 
 	RSAKeyImpl(int keyLength, unsigned long exponent);
 		/// Creates the RSAKey. Creates a new public/private keypair using the given parameters.
@@ -65,8 +65,8 @@ public:
 
 	RSAKeyImpl(const std::string& publicKeyFile, const std::string& privateKeyFile, const std::string& privateKeyPassphrase);
 		/// Creates the RSAKey, by reading public and private key from the given files and
-		/// using the given passphrase for the private key. Can only by used for signing if 
-		/// a private key is available. 
+		/// using the given passphrase for the private key. Can only by used for signing if
+		/// a private key is available.
 
 	RSAKeyImpl(std::istream* pPublicKeyStream, std::istream* pPrivateKeyStream, const std::string& privateKeyPassphrase);
 		/// Creates the RSAKey. Can only by used for signing if pPrivKey
@@ -97,7 +97,7 @@ public:
 	void save(const std::string& publicKeyFile,
 		const std::string& privateKeyFile = "",
 		const std::string& privateKeyPassphrase = "") const;
-		/// Exports the public and private keys to the given files. 
+		/// Exports the public and private keys to the given files.
 		///
 		/// If an empty filename is specified, the corresponding key
 		/// is not exported.
diff --git a/vendor/POCO/Crypto/include/Poco/Crypto/X509Certificate.h b/vendor/POCO/Crypto/include/Poco/Crypto/X509Certificate.h
index a3ea8e16..8284dd71 100644
--- a/vendor/POCO/Crypto/include/Poco/Crypto/X509Certificate.h
+++ b/vendor/POCO/Crypto/include/Poco/Crypto/X509Certificate.h
@@ -84,7 +84,7 @@ public:
 	X509Certificate& operator = (X509Certificate&& cert) noexcept;
 		/// Move assignment.
 
-	void swap(X509Certificate& cert);
+	void swap(X509Certificate& cert) noexcept;
 		/// Exchanges the certificate with another one.
 
 	~X509Certificate();
diff --git a/vendor/POCO/Crypto/samples/genrsakey/Makefile b/vendor/POCO/Crypto/samples/genrsakey/Makefile
index b891a960..0f8be4c6 100644
--- a/vendor/POCO/Crypto/samples/genrsakey/Makefile
+++ b/vendor/POCO/Crypto/samples/genrsakey/Makefile
@@ -13,9 +13,13 @@ else
 ifeq ($(POCO_CONFIG),QNX)
 SYSLIBS += -lssl -lcrypto -lz
 else
+ifeq ($(findstring AIX, $(POCO_CONFIG)), AIX)
+SYSLIBS += -lssl_a -lcrypto_a -lz -ldl
+else
 SYSLIBS += -lssl -lcrypto -lz -ldl
 endif
 endif
+endif
 objects = genrsakey
 
 target         = genrsakey
diff --git a/vendor/POCO/Crypto/samples/genrsakey/genrsakey_vs170.vcxproj b/vendor/POCO/Crypto/samples/genrsakey/genrsakey_vs170.vcxproj
new file mode 100644
index 00000000..41e3f268
--- /dev/null
+++ b/vendor/POCO/Crypto/samples/genrsakey/genrsakey_vs170.vcxproj
@@ -0,0 +1,607 @@
+
+
+  
+    
+      debug_shared
+      Win32
+    
+    
+      debug_shared
+      x64
+    
+    
+      debug_static_md
+      Win32
+    
+    
+      debug_static_md
+      x64
+    
+    
+      debug_static_mt
+      Win32
+    
+    
+      debug_static_mt
+      x64
+    
+    
+      release_shared
+      Win32
+    
+    
+      release_shared
+      x64
+    
+    
+      release_static_md
+      Win32
+    
+    
+      release_static_md
+      x64
+    
+    
+      release_static_mt
+      Win32
+    
+    
+      release_static_mt
+      x64
+    
+  
+  
+    genrsakey
+    {D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}
+    genrsakey
+    Win32Proj
+  
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+  
+    <_ProjectFileVersion>15.0.28307.799
+    genrsakeyd
+    genrsakeyd
+    genrsakeyd
+    genrsakey
+    genrsakey
+    genrsakey
+    genrsakeyd
+    genrsakeyd
+    genrsakeyd
+    genrsakey
+    genrsakey
+    genrsakey
+  
+  
+    bin\
+    obj\genrsakey\$(Configuration)\
+    true
+  
+  
+    bin\
+    obj\genrsakey\$(Configuration)\
+    false
+  
+  
+    bin\static_mt\
+    obj\genrsakey\$(Configuration)\
+    true
+  
+  
+    bin\static_mt\
+    obj\genrsakey\$(Configuration)\
+    false
+  
+  
+    bin\static_md\
+    obj\genrsakey\$(Configuration)\
+    true
+  
+  
+    bin\static_md\
+    obj\genrsakey\$(Configuration)\
+    false
+  
+  
+    bin64\
+    obj64\genrsakey\$(Configuration)\
+    true
+  
+  
+    bin64\
+    obj64\genrsakey\$(Configuration)\
+    false
+  
+  
+    bin64\static_mt\
+    obj64\genrsakey\$(Configuration)\
+    true
+  
+  
+    bin64\static_mt\
+    obj64\genrsakey\$(Configuration)\
+    false
+  
+  
+    bin64\static_md\
+    obj64\genrsakey\$(Configuration)\
+    true
+  
+  
+    bin64\static_md\
+    obj64\genrsakey\$(Configuration)\
+    false
+  
+  
+    
+      Disabled
+      .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\genrsakeyd.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin\genrsakeyd.pdb
+      Console
+      MachineX86
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\genrsakey.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX86
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\static_mt\genrsakeyd.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin\static_mt\genrsakeyd.pdb
+      Console
+      MachineX86
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\static_mt\genrsakey.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX86
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\static_md\genrsakeyd.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin\static_md\genrsakeyd.pdb
+      Console
+      MachineX86
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\static_md\genrsakey.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX86
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\genrsakeyd.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin64\genrsakeyd.pdb
+      Console
+      MachineX64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\genrsakey.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX64
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\static_mt\genrsakeyd.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin64\static_mt\genrsakeyd.pdb
+      Console
+      MachineX64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\static_mt\genrsakey.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX64
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\static_md\genrsakeyd.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin64\static_md\genrsakeyd.pdb
+      Console
+      MachineX64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\..\Foundation\include;..\..\..\XML\include;..\..\..\Util\include;..\..\..\Crypto\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0500;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      iphlpapi.lib;winmm.lib;Crypt32.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\static_md\genrsakey.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX64
+    
+  
+  
+    
+      true
+    
+  
+  
+  
+
diff --git a/vendor/POCO/Crypto/samples/genrsakey/genrsakey_vs170.vcxproj.filters b/vendor/POCO/Crypto/samples/genrsakey/genrsakey_vs170.vcxproj.filters
new file mode 100644
index 00000000..3998bf9b
--- /dev/null
+++ b/vendor/POCO/Crypto/samples/genrsakey/genrsakey_vs170.vcxproj.filters
@@ -0,0 +1,16 @@
+
+
+  
+    
+      {23a8923d-3376-47f4-9a6f-19a3a66382c3}
+    
+    
+      {8fc78ac1-efab-4a1b-8e59-1b68d96f306a}
+    
+  
+  
+    
+      Source Files
+    
+  
+
\ No newline at end of file
diff --git a/vendor/POCO/Crypto/samples/genrsakey/src/genrsakey.cpp b/vendor/POCO/Crypto/samples/genrsakey/src/genrsakey.cpp
index 75ce3754..f284c628 100644
--- a/vendor/POCO/Crypto/samples/genrsakey/src/genrsakey.cpp
+++ b/vendor/POCO/Crypto/samples/genrsakey/src/genrsakey.cpp
@@ -52,29 +52,29 @@ public:
 	{
 		Poco::Crypto::initializeCrypto();
 	}
-	
+
 	~RSAApp()
 	{
 		Poco::Crypto::uninitializeCrypto();
 	}
 
-protected:	
+protected:
 	void initialize(Application& self)
 	{
 		loadConfiguration(); // load default configuration files, if present
 		Application::initialize(self);
 	}
-	
+
 	void uninitialize()
 	{
 		Application::uninitialize();
 	}
-	
+
 	void reinitialize(Application& self)
 	{
 		Application::reinitialize(self);
 	}
-	
+
 	void defineOptions(OptionSet& options)
 	{
 		Application::defineOptions(options);
@@ -97,7 +97,7 @@ protected:
 				.repeatable(false)
 				.argument("512|1024|2048|4096")
 				.callback(OptionCallback(this, &RSAApp::handleKeyLength)));
-				
+
 		options.addOption(
 			Option("exponent", "e", "defines the exponent of the key")
 				.required(false)
@@ -119,14 +119,14 @@ protected:
 				.argument("pwd")
 				.callback(OptionCallback(this, &RSAApp::handlePassword)));
 	}
-	
+
 	void handleHelp(const std::string& name, const std::string& value)
 	{
 		_helpRequested = true;
 		displayHelp();
 		stopOptionsProcessing();
 	}
-	
+
 	void handleKeyLength(const std::string& name, const std::string& value)
 	{
 		int keyLen = Poco::NumberParser::parse(value);
@@ -150,12 +150,12 @@ protected:
 			throw Poco::Util::IncompatibleOptionsException("Empty file prefix forbidden");
 		_name = value;
 	}
-	
+
 	void handlePassword(const std::string& name, const std::string& value)
 	{
 		_pwd = value;
 	}
-		
+
 	void displayHelp()
 	{
 		HelpFormatter helpFormatter(options());
@@ -176,14 +176,14 @@ protected:
 			logger().information("Generating key: DONE");
 			std::string pubFile(_name + ".pub");
 			std::string privFile(_name + ".priv");
-			
+
 			logger().information("Saving key to " + pubFile + " and " + privFile);
 			key.save(pubFile, privFile, _pwd);
 			logger().information("Key saved");
 		}
 		return Application::EXIT_OK;
 	}
-	
+
 private:
 	bool _helpRequested;
 	RSAKey::KeyLength _length;
diff --git a/vendor/POCO/Crypto/samples/samples_vs170.sln b/vendor/POCO/Crypto/samples/samples_vs170.sln
new file mode 100644
index 00000000..a28401cf
--- /dev/null
+++ b/vendor/POCO/Crypto/samples/samples_vs170.sln
@@ -0,0 +1,61 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genrsakey", "genrsakey\genrsakey_vs170.vcxproj", "{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		debug_shared|Win32 = debug_shared|Win32
+		release_shared|Win32 = release_shared|Win32
+		debug_static_mt|Win32 = debug_static_mt|Win32
+		release_static_mt|Win32 = release_static_mt|Win32
+		debug_static_md|Win32 = debug_static_md|Win32
+		release_static_md|Win32 = release_static_md|Win32
+		debug_shared|x64 = debug_shared|x64
+		release_shared|x64 = release_shared|x64
+		debug_static_mt|x64 = debug_static_mt|x64
+		release_static_mt|x64 = release_static_mt|x64
+		debug_static_md|x64 = debug_static_md|x64
+		release_static_md|x64 = release_static_md|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|Win32.Build.0 = debug_shared|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|Win32.ActiveCfg = release_shared|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|Win32.Build.0 = release_shared|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|Win32.Deploy.0 = release_shared|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|Win32.Build.0 = release_static_md|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|x64.ActiveCfg = debug_shared|x64
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|x64.Build.0 = debug_shared|x64
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_shared|x64.Deploy.0 = debug_shared|x64
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|x64.ActiveCfg = release_shared|x64
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|x64.Build.0 = release_shared|x64
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_shared|x64.Deploy.0 = release_shared|x64
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|x64.Build.0 = release_static_mt|x64
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|x64.Build.0 = debug_static_md|x64
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|x64.ActiveCfg = release_static_md|x64
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|x64.Build.0 = release_static_md|x64
+		{D6BE1AD9-4CB6-3184-8DF8-5210AE7D6947}.release_static_md|x64.Deploy.0 = release_static_md|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/vendor/POCO/Crypto/src/Cipher.cpp b/vendor/POCO/Crypto/src/Cipher.cpp
index 8b4d5796..2e9326f4 100644
--- a/vendor/POCO/Crypto/src/Cipher.cpp
+++ b/vendor/POCO/Crypto/src/Cipher.cpp
@@ -39,30 +39,32 @@ Cipher::~Cipher()
 }
 
 
-std::string Cipher::encryptString(const std::string& str, Encoding encoding)
+std::string Cipher::encryptString(const std::string& str, Encoding encoding, bool padding)
 {
 	std::istringstream source(str);
 	std::ostringstream sink;
 
-	encrypt(source, sink, encoding);
+	encrypt(source, sink, encoding, padding);
 
 	return sink.str();
 }
 
 
-std::string Cipher::decryptString(const std::string& str, Encoding encoding)
+std::string Cipher::decryptString(const std::string& str, Encoding encoding, bool padding)
 {
 	std::istringstream source(str);
 	std::ostringstream sink;
 
-	decrypt(source, sink, encoding);
+	decrypt(source, sink, encoding, padding);
 	return sink.str();
 }
 
 
-void Cipher::encrypt(std::istream& source, std::ostream& sink, Encoding encoding)
+void Cipher::encrypt(std::istream& source, std::ostream& sink, Encoding encoding, bool padding)
 {
-	CryptoInputStream encryptor(source, createEncryptor());
+	CryptoTransform::Ptr p = createEncryptor();
+	if (!padding) p->setPadding(0);
+	CryptoInputStream encryptor(source, p);
 
 	switch (encoding)
 	{
@@ -102,9 +104,11 @@ void Cipher::encrypt(std::istream& source, std::ostream& sink, Encoding encoding
 }
 
 
-void Cipher::decrypt(std::istream& source, std::ostream& sink, Encoding encoding)
+void Cipher::decrypt(std::istream& source, std::ostream& sink, Encoding encoding, bool padding)
 {
-	CryptoOutputStream decryptor(sink, createDecryptor());
+	CryptoTransform::Ptr p = createDecryptor();
+	if (!padding) p->setPadding(0);
+	CryptoOutputStream decryptor(sink, p);
 
 	switch (encoding)
 	{
diff --git a/vendor/POCO/Crypto/src/CipherFactory.cpp b/vendor/POCO/Crypto/src/CipherFactory.cpp
index 28ba3748..9e59dc26 100644
--- a/vendor/POCO/Crypto/src/CipherFactory.cpp
+++ b/vendor/POCO/Crypto/src/CipherFactory.cpp
@@ -18,10 +18,14 @@
 #include "Poco/Crypto/RSAKey.h"
 #include "Poco/Crypto/CipherImpl.h"
 #include "Poco/Crypto/RSACipherImpl.h"
+#include "Poco/Crypto/EVPCipherImpl.h"
 #include "Poco/Exception.h"
 #include "Poco/SingletonHolder.h"
 #include 
 #include 
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+#include 
+#endif
 
 
 namespace Poco {
@@ -30,6 +34,10 @@ namespace Crypto {
 
 CipherFactory::CipherFactory()
 {
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+	OSSL_PROVIDER_load(NULL, "default");
+	OSSL_PROVIDER_load(NULL, "legacy");
+#endif
 }
 
 
@@ -62,4 +70,10 @@ Cipher* CipherFactory::createCipher(const RSAKey& key, RSAPaddingMode paddingMod
 }
 
 
+Cipher* CipherFactory::createCipher(const EVPPKey& key)
+{
+	return new EVPCipherImpl(key);
+}
+
+
 } } // namespace Poco::Crypto
diff --git a/vendor/POCO/Crypto/src/CipherImpl.cpp b/vendor/POCO/Crypto/src/CipherImpl.cpp
index 23ad40ed..b3d77b88 100644
--- a/vendor/POCO/Crypto/src/CipherImpl.cpp
+++ b/vendor/POCO/Crypto/src/CipherImpl.cpp
@@ -98,20 +98,22 @@ namespace
 	{
 #if OPENSSL_VERSION_NUMBER >= 0x10100000L
 		_pContext = EVP_CIPHER_CTX_new();
-		EVP_CipherInit(
+		if (!_pContext) throwError();
+		int rc = EVP_CipherInit(
 			_pContext,
 			_pCipher,
 			&_key[0],
 			_iv.empty() ? 0 : &_iv[0],
 			(dir == DIR_ENCRYPT) ? 1 : 0);
 #else
-		EVP_CipherInit(
+		int rc = EVP_CipherInit(
 			&_context,
 			_pCipher,
 			&_key[0],
 			_iv.empty() ? 0 : &_iv[0],
 			(dir == DIR_ENCRYPT) ? 1 : 0);
 #endif
+		if (rc == 0) throwError();
 
 #if OPENSSL_VERSION_NUMBER >= 0x10001000L
 		if (_iv.size() != EVP_CIPHER_iv_length(_pCipher) && EVP_CIPHER_mode(_pCipher) == EVP_CIPH_GCM_MODE)
diff --git a/vendor/POCO/Crypto/src/CipherKeyImpl.cpp b/vendor/POCO/Crypto/src/CipherKeyImpl.cpp
index 2af173bc..fbe74230 100644
--- a/vendor/POCO/Crypto/src/CipherKeyImpl.cpp
+++ b/vendor/POCO/Crypto/src/CipherKeyImpl.cpp
@@ -21,6 +21,25 @@
 #include 
 
 
+namespace
+{
+	void throwError()
+	{
+		unsigned long err;
+		std::string msg;
+
+		while ((err = ERR_get_error()))
+		{
+			if (!msg.empty())
+				msg.append("; ");
+			msg.append(ERR_error_string(err, 0));
+		}
+
+		throw Poco::IOException(msg);
+	}
+}
+
+
 namespace Poco {
 namespace Crypto {
 
@@ -186,6 +205,8 @@ void CipherKeyImpl::generateKey(
 		keyBytes,
 		ivBytes);
 
+	if (!keySize) throwError();
+
 	// Copy the buffers to our member byte vectors.
 	_key.assign(keyBytes, keyBytes + keySize);
 
diff --git a/vendor/POCO/Crypto/src/CryptoTransform.cpp b/vendor/POCO/Crypto/src/CryptoTransform.cpp
index e4e58fd6..6ecba2ec 100644
--- a/vendor/POCO/Crypto/src/CryptoTransform.cpp
+++ b/vendor/POCO/Crypto/src/CryptoTransform.cpp
@@ -28,7 +28,7 @@ CryptoTransform::~CryptoTransform()
 {
 }
 
-  
+
 int CryptoTransform::setPadding(int padding)
 {
 	return 1;
diff --git a/vendor/POCO/Crypto/src/DigestEngine.cpp b/vendor/POCO/Crypto/src/DigestEngine.cpp
index bac2d44e..db5cf606 100644
--- a/vendor/POCO/Crypto/src/DigestEngine.cpp
+++ b/vendor/POCO/Crypto/src/DigestEngine.cpp
@@ -26,10 +26,10 @@ DigestEngine::DigestEngine(const std::string& name):
 {
 	const EVP_MD* md = EVP_get_digestbyname(_name.c_str());
 	if (!md) throw Poco::NotFoundException(_name);
-	EVP_DigestInit_ex(_pContext, md, NULL);	
+	EVP_DigestInit_ex(_pContext, md, NULL);
 }
 
-	
+
 DigestEngine::~DigestEngine()
 {
 	EVP_MD_CTX_destroy(_pContext);
@@ -37,7 +37,11 @@ DigestEngine::~DigestEngine()
 
 int DigestEngine::nid() const
 {
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+	return EVP_MD_nid(EVP_MD_CTX_get0_md(_pContext));
+#else
 	return EVP_MD_nid(EVP_MD_CTX_md(_pContext));
+#endif
 }
 
 std::size_t DigestEngine::digestLength() const
diff --git a/vendor/POCO/Crypto/src/ECKeyImpl.cpp b/vendor/POCO/Crypto/src/ECKeyImpl.cpp
index 99ffae76..e11b134c 100644
--- a/vendor/POCO/Crypto/src/ECKeyImpl.cpp
+++ b/vendor/POCO/Crypto/src/ECKeyImpl.cpp
@@ -21,9 +21,7 @@
 #include "Poco/StreamCopier.h"
 #include 
 #include 
-#if OPENSSL_VERSION_NUMBER >= 0x00908000L
 #include 
-#endif
 
 
 namespace Poco {
@@ -78,8 +76,8 @@ ECKeyImpl::ECKeyImpl(int curve):
 }
 
 
-ECKeyImpl::ECKeyImpl(const std::string& publicKeyFile, 
-	const std::string& privateKeyFile, 
+ECKeyImpl::ECKeyImpl(const std::string& publicKeyFile,
+	const std::string& privateKeyFile,
 	const std::string& privateKeyPassphrase): KeyPairImpl("ec", KT_EC_IMPL), _pEC(0)
 {
 	if (EVPPKey::loadKey(&_pEC, PEM_read_PrivateKey, EVP_PKEY_get1_EC_KEY, privateKeyFile, privateKeyPassphrase))
diff --git a/vendor/POCO/Crypto/src/EVPCipherImpl.cpp b/vendor/POCO/Crypto/src/EVPCipherImpl.cpp
new file mode 100644
index 00000000..76385c53
--- /dev/null
+++ b/vendor/POCO/Crypto/src/EVPCipherImpl.cpp
@@ -0,0 +1,310 @@
+//
+// EVPCipherImpl.cpp
+//
+// Library: Crypto
+// Package: EVP
+// Module:  EVPCipherImpl
+//
+// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier:	BSL-1.0
+//
+
+
+#include "Poco/Crypto/EVPCipherImpl.h"
+#include "Poco/Crypto/CryptoTransform.h"
+#include "Poco/Exception.h"
+#include "Poco/Logger.h"
+#include 
+#include 
+#include 
+
+
+namespace Poco {
+namespace Crypto {
+
+
+namespace
+{
+	void throwError(std::string&& msg)
+	{
+		unsigned long err;
+		while ((err = ERR_get_error()))
+		{
+			if (!msg.empty()) msg.append("; ");
+			msg.append(ERR_error_string(err, 0));
+		}
+
+		throw Poco::IOException(msg);
+	}
+
+	class EVPPKeyContext
+	{
+	public:
+		EVPPKeyContext() = delete;
+		EVPPKeyContext(const EVP_PKEY* pEVP) : _pCtx(EVP_PKEY_CTX_new(const_cast(pEVP), NULL))
+		{
+			if (!_pCtx)
+			{
+				std::string fmt = "EVPPKeyContext():%s()";
+				throwError(Poco::format(fmt, std::string("EVP_PKEY_CTX_new")));
+			}
+		}
+
+		~EVPPKeyContext()
+		{
+			EVP_PKEY_CTX_free(_pCtx);
+		}
+
+		operator EVP_PKEY_CTX*()
+		{
+			return _pCtx;
+		}
+
+	private:
+		EVP_PKEY_CTX* _pCtx = nullptr;
+	};
+
+	class EVPEncryptImpl: public CryptoTransform
+	{
+	public:
+		EVPEncryptImpl(const EVP_PKEY* pEVP):
+			_pEVP(pEVP),
+			_pCtx(_pEVP),
+			_pos(0),
+			_pBuf(0)
+		{
+			std::string fmt = "EVPEncryptImpl():%s()";
+			poco_check_ptr(_pEVP);
+
+			if (!_pCtx)
+				throwError(Poco::format(fmt, std::string("EVP_PKEY_CTX_new")));
+
+			if (EVP_PKEY_encrypt_init(_pCtx) <= 0)
+        		throwError(Poco::format(fmt, std::string("EVP_PKEY_encrypt_init")));
+
+			_blockSize = EVP_PKEY_size(const_cast(_pEVP));
+			if (!_blockSize)
+				throwError(Poco::format(fmt, std::string("EVP_PKEY_size")));
+			_pBuf = new unsigned char[_blockSize];
+		}
+
+		~EVPEncryptImpl()
+		{
+			delete [] _pBuf;
+		}
+
+		std::size_t blockSize() const
+		{
+			return _blockSize;
+		}
+
+		std::string getTag(std::size_t)
+		{
+			return "";
+		}
+
+		void setTag(const std::string&)
+		{
+		}
+
+		std::streamsize transform(const unsigned char* input, std::streamsize inputLength,
+			unsigned char* output, std::streamsize outputLength)
+		{
+			std::string fmt = "EVPEncryptImpl::transform():%s()";
+			std::streamsize maxSize = static_cast(maxDataSize(input, inputLength));
+			std::streamsize evpSize = static_cast(_blockSize);
+			poco_assert_dbg(_pos <= maxSize);
+			poco_assert (outputLength >= evpSize);
+			int rc = 0;
+			while (inputLength > 0)
+			{
+				poco_assert_dbg (maxSize >= _pos);
+				std::streamsize missing = maxSize - _pos;
+				if (missing == 0)
+				{
+					poco_assert (outputLength >= evpSize);
+					std::size_t outLen;
+					if (EVP_PKEY_encrypt(_pCtx, NULL, &outLen, _pBuf, static_cast(maxSize)) <= 0)
+						throwError(Poco::format(fmt, std::string("EVP_PKEY_encrypt(NULL)")));
+					if (EVP_PKEY_encrypt(_pCtx, output, &outLen, _pBuf, static_cast(maxSize)) <= 0)
+						throwError(Poco::format(fmt, std::string("EVP_PKEY_encrypt")));
+					rc += static_cast(outLen);
+					output += outLen;
+					outputLength -= outLen;
+					_pos = 0;
+
+				}
+				else
+				{
+					if (missing > inputLength) missing = inputLength;
+					std::memcpy(_pBuf + _pos, input, static_cast(missing));
+					input += missing;
+					_pos += missing;
+					inputLength -= missing;
+				}
+			}
+			return rc;
+		}
+
+		std::streamsize finalize(unsigned char*	output, std::streamsize length)
+		{
+			poco_assert (length >= blockSize());
+			poco_assert (_pos <= maxDataSize(output, length));
+			std::string fmt = "EVPEncryptImpl::finalize():%s()";
+			std::size_t outLen = 0;
+			if (_pos > 0)
+			{
+				if (EVP_PKEY_encrypt(_pCtx, NULL, &outLen, _pBuf, static_cast(_pos)) <= 0)
+					throwError(Poco::format(fmt, std::string("EVP_PKEY_encrypt")));
+				if (EVP_PKEY_encrypt(_pCtx, output, &outLen, _pBuf, static_cast(_pos)) <= 0)
+					throwError(Poco::format(fmt, std::string("EVP_PKEY_encrypt")));
+			}
+			return static_cast(outLen);
+		}
+
+	private:
+		std::size_t maxDataSize(const unsigned char* pIO, std::streamsize length)
+		{
+			std::string fmt = "EVPEncryptImpl::maxDataSize():%s()";
+			std::size_t outLength = 0;
+			if (EVP_PKEY_encrypt(_pCtx, NULL, &outLength, pIO, length) <= 0)
+				throwError(Poco::format(fmt, std::string("EVP_PKEY_encrypt")));
+			return outLength;
+		}
+
+		const EVP_PKEY* _pEVP;
+		EVPPKeyContext  _pCtx;
+		int             _blockSize;
+		std::streamsize _pos;
+		unsigned char*  _pBuf;
+	};
+
+
+	class EVPDecryptImpl: public CryptoTransform
+	{
+	public:
+		EVPDecryptImpl(const EVP_PKEY* pEVP):
+			_pEVP(pEVP),
+			_pCtx(_pEVP),
+			_pos(0),
+			_pBuf(0)
+		{
+			std::string fmt = "EVPDecryptImpl():%s()";
+			poco_check_ptr(_pEVP);
+
+			if (EVP_PKEY_decrypt_init(_pCtx) <= 0)
+        		throwError(Poco::format(fmt, std::string("EVP_PKEY_decrypt_init")));
+
+			_blockSize = EVP_PKEY_size(const_cast(_pEVP));
+			if (!_blockSize)
+				throwError(Poco::format(fmt, std::string("EVP_PKEY_size")));
+			_pBuf = new unsigned char[_blockSize];
+		}
+
+		~EVPDecryptImpl()
+		{
+			delete [] _pBuf;
+		}
+
+		std::size_t blockSize() const
+		{
+			return _blockSize;
+		}
+
+		std::string getTag(std::size_t)
+		{
+			return "";
+		}
+
+		void setTag(const std::string&)
+		{
+		}
+
+		std::streamsize transform(const unsigned char* input, std::streamsize inputLength,
+			unsigned char* output, std::streamsize outputLength)
+		{
+			std::string fmt = "EVPDecryptImpl::transform():%s()";
+			std::streamsize evpSize = static_cast(_blockSize);
+			poco_assert_dbg(_pos <= evpSize);
+			poco_assert (outputLength >= evpSize);
+			int rc = 0;
+			while (inputLength > 0)
+			{
+				poco_assert_dbg (evpSize >= _pos);
+				std::streamsize missing = evpSize - _pos;
+				if (missing == 0)
+				{
+					std::size_t outLen = 0;
+					if (EVP_PKEY_decrypt(_pCtx, NULL, &outLen, _pBuf, static_cast(_pos)) <= 0)
+						throwError(Poco::format(fmt, std::string("EVP_PKEY_decrypt(NULL)")));
+					if (EVP_PKEY_decrypt(_pCtx, output, &outLen, _pBuf, static_cast(_pos)) <= 0)
+						throwError(Poco::format(fmt, std::string("EVP_PKEY_decrypt")));
+					rc += static_cast(outLen);
+					output += outLen;
+					outputLength -= outLen;
+					_pos = 0;
+				}
+				else
+				{
+					if (missing > inputLength) missing = inputLength;
+					std::memcpy(_pBuf + _pos, input, static_cast(missing));
+					input += missing;
+					_pos += missing;
+					inputLength -= missing;
+				}
+			}
+			return rc;
+		}
+
+		std::streamsize finalize(unsigned char* output, std::streamsize length)
+		{
+			poco_assert (length >= _blockSize);
+			std::string fmt = "EVPDecryptImpl::finalize():%s()";
+			std::size_t outLen = 0;
+			if (EVP_PKEY_decrypt(_pCtx, NULL, &outLen, _pBuf, static_cast(_pos)) <= 0)
+					throwError(Poco::format(fmt, std::string("EVP_PKEY_decrypt(NULL)")));
+			poco_assert (length >= outLen);
+			if (_pos > 0)
+			{
+				if (EVP_PKEY_decrypt(_pCtx, output, &outLen, _pBuf, static_cast(_pos)) <= 0)
+					throwError(Poco::format(fmt, std::string("EVP_PKEY_decrypt")));
+			}
+			return outLen;
+		}
+
+	private:
+		const EVP_PKEY* _pEVP;
+		EVPPKeyContext  _pCtx;
+		int             _blockSize;
+		std::streamsize _pos;
+		unsigned char*  _pBuf;
+	};
+}
+
+
+EVPCipherImpl::EVPCipherImpl(const EVPPKey& key):
+	_key(key)
+{
+}
+
+
+EVPCipherImpl::~EVPCipherImpl()
+{
+}
+
+
+CryptoTransform::Ptr EVPCipherImpl::createEncryptor()
+{
+	return new EVPEncryptImpl(_key);
+}
+
+
+CryptoTransform::Ptr EVPCipherImpl::createDecryptor()
+{
+	return new EVPDecryptImpl(_key);
+}
+
+
+} } // namespace Poco::Crypto
diff --git a/vendor/POCO/Crypto/src/EVPPKey.cpp b/vendor/POCO/Crypto/src/EVPPKey.cpp
index 832add75..2964bf0d 100644
--- a/vendor/POCO/Crypto/src/EVPPKey.cpp
+++ b/vendor/POCO/Crypto/src/EVPPKey.cpp
@@ -14,19 +14,33 @@
 
 
 #include "Poco/Crypto/EVPPKey.h"
+#include "Poco/Crypto/PKCS12Container.h"
+#include "Poco/Crypto/X509Certificate.h"
 #include "Poco/Crypto/ECKey.h"
 #include "Poco/Crypto/RSAKey.h"
 #include "Poco/NumberFormatter.h"
+#include 
 
 
 namespace Poco {
 namespace Crypto {
 
 
+const std::map EVPPKey::KNOWN_TYPES =
+	{
+		{ EVP_PKEY_RSA, "rsa" },
+		// not implemented
+		//{ EVP_PKEY_DSA, "dsa" },
+		//{ EVP_PKEY_DH, "dh" },
+		{ EVP_PKEY_EC, "ec" }
+	};
+
+
 EVPPKey::EVPPKey(const std::string& ecCurveName): _pEVPPKey(0)
 {
 	newECKey(ecCurveName.c_str());
 	poco_check_ptr(_pEVPPKey);
+	checkType();
 }
 
 
@@ -34,13 +48,93 @@ EVPPKey::EVPPKey(const char* ecCurveName): _pEVPPKey(0)
 {
 	newECKey(ecCurveName);
 	poco_check_ptr(_pEVPPKey);
+	checkType();
 }
 
 
+EVPPKey::EVPPKey(const X509Certificate& cert):
+	_pEVPPKey(X509_get_pubkey(const_cast(cert.certificate())))
+{
+	poco_check_ptr(_pEVPPKey);
+	checkType();
+}
+
+
+EVPPKey::EVPPKey(const PKCS12Container& cont): EVPPKey(cont.getKey())
+{
+	poco_check_ptr(_pEVPPKey);
+	checkType();
+}
+
+
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
+
+EVPPKey::EVPPKey(int type, int param): _pEVPPKey(0)
+{
+	EVP_PKEY_CTX *pCtx = EVP_PKEY_CTX_new_id(type, NULL);
+	if (NULL == pCtx)
+	{
+		std::string msg = Poco::format(
+			"EVPPKey(%d, %d):EVP_PKEY_CTX_new_id()\n", type, param);
+		throw OpenSSLException(getError(msg));
+	}
+	int ret = EVP_PKEY_keygen_init(pCtx);
+	if (ret != 1)
+	{
+		std::string msg = Poco::format(
+			"EVPPKey(%d, %d):EVP_PKEY_keygen_init()\n", type, param);
+		throw OpenSSLException(getError(msg));
+	}
+
+	if (EVP_PKEY_RSA == type)
+	{
+		ret = EVP_PKEY_CTX_set_rsa_keygen_bits(pCtx, param);
+		if (ret != 1)
+		{
+			std::string msg = Poco::format(
+				"EVPPKey(%d, %d):EVP_PKEY_CTX_set_rsa_keygen_bits()\n", type, param);
+			throw OpenSSLException(getError(msg));
+		}
+	}
+	else if (EVP_PKEY_EC == type)
+	{
+		ret = EVP_PKEY_CTX_set_ec_paramgen_curve_nid(pCtx, param);
+		if (ret != 1)
+		{
+			std::string msg = Poco::format(
+				"EVPPKey(%d, %d):EVP_PKEY_CTX_set_ec_paramgen_curve_nid()\n", type, param);
+			throw OpenSSLException(getError(msg));
+		}
+	}
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+	ret = EVP_PKEY_generate(pCtx, &_pEVPPKey);
+	if (ret != 1)
+	{
+		std::string msg = Poco::format(
+			"EVPPKey(%d, %d):EVP_PKEY_generate()\n", type, param);
+		throw OpenSSLException(getError(msg));
+	}
+#else
+	ret = EVP_PKEY_keygen(pCtx, &_pEVPPKey);
+	if (ret != 1)
+	{
+		std::string msg = Poco::format(
+			"EVPPKey(%d, %d):EVP_PKEY_keygen()\n", type, param);
+		throw OpenSSLException(getError(msg));
+	}
+#endif
+	EVP_PKEY_CTX_free(pCtx);
+	checkType();
+}
+
+#endif // OPENSSL_VERSION_NUMBER >= 0x10000000L
+
+
 EVPPKey::EVPPKey(EVP_PKEY* pEVPPKey): _pEVPPKey(0)
 {
 	duplicate(pEVPPKey, &_pEVPPKey);
 	poco_check_ptr(_pEVPPKey);
+	checkType();
 }
 
 
@@ -57,9 +151,11 @@ EVPPKey::EVPPKey(const std::string& publicKeyFile,
 	// no private key, this must be public key only, otherwise throw
 	if (!loadKey(&_pEVPPKey, PEM_read_PUBKEY, (EVP_PKEY_get_Key_fn)0, publicKeyFile))
 	{
-		throw OpenSSLException("ECKeyImpl(const string&, const string&, const string&");
+		std::string msg = "EVPPKey(const string&, const string&, const string&)\n";
+		throw OpenSSLException(getError(msg));
 	}
 	poco_check_ptr(_pEVPPKey);
+	checkType();
 }
 
 
@@ -76,9 +172,11 @@ EVPPKey::EVPPKey(std::istream* pPublicKeyStream,
 	// no private key, this must be public key only, otherwise throw
 	if (!loadKey(&_pEVPPKey, PEM_read_bio_PUBKEY, (EVP_PKEY_get_Key_fn)0, pPublicKeyStream))
 	{
-		throw OpenSSLException("ECKeyImpl(istream*, istream*, const string&");
+		std::string msg = "EVPPKey(istream* ,istream* const string&)\n";
+		throw OpenSSLException(getError(msg));
 	}
 	poco_check_ptr(_pEVPPKey);
+	checkType();
 }
 
 
@@ -86,6 +184,7 @@ EVPPKey::EVPPKey(const EVPPKey& other)
 {
 	duplicate(other._pEVPPKey, &_pEVPPKey);
 	poco_check_ptr(_pEVPPKey);
+	checkType();
 }
 
 
@@ -93,6 +192,7 @@ EVPPKey::EVPPKey(EVPPKey&& other) noexcept:
 	_pEVPPKey(other._pEVPPKey)
 {
 	other._pEVPPKey = nullptr;
+	checkType();
 }
 
 
@@ -100,6 +200,7 @@ EVPPKey& EVPPKey::operator = (const EVPPKey& other)
 {
 	duplicate(other._pEVPPKey, &_pEVPPKey);
 	poco_check_ptr(_pEVPPKey);
+	checkType();
 	return *this;
 }
 
@@ -108,6 +209,7 @@ EVPPKey& EVPPKey::operator = (EVPPKey&& other) noexcept
 {
 	_pEVPPKey = other._pEVPPKey;
 	other._pEVPPKey = nullptr;
+	checkType();
 	return *this;
 }
 
@@ -118,19 +220,68 @@ EVPPKey::~EVPPKey()
 }
 
 
+const std::string& EVPPKey::name() const
+{
+	int t = type(_pEVPPKey);
+	auto it = KNOWN_TYPES.find(t);
+	if (it == KNOWN_TYPES.end())
+		throw Poco::NotImplementedException(Poco::format("EVPPKey::type(%d)", t));
+	return it->second;
+}
+
+
+void EVPPKey::checkType()
+{
+	if (_pEVPPKey)
+	{
+		int t = type(_pEVPPKey);
+		if (KNOWN_TYPES.find(t) == KNOWN_TYPES.end())
+			throw Poco::NotImplementedException(Poco::format("EVPPKey::type(%d)", t));
+	}
+}
+
+
+void EVPPKey::setKey(EC_KEY* pKey)
+{
+	if (!EVP_PKEY_set1_EC_KEY(_pEVPPKey, pKey))
+	{
+		std::string msg = "EVPPKey::setKey('EC')\n";
+		throw OpenSSLException(getError(msg));
+	}
+}
+
+
+void EVPPKey::setKey(RSA* pKey)
+{
+	if (!EVP_PKEY_set1_RSA(_pEVPPKey, pKey))
+	{
+		std::string msg = "EVPPKey::setKey('RSA')\n";
+		throw OpenSSLException(getError(msg));
+	}
+}
+
+
 void EVPPKey::save(const std::string& publicKeyFile, const std::string& privateKeyFile, const std::string& privateKeyPassphrase) const
 {
 	if (!publicKeyFile.empty() && (publicKeyFile != privateKeyFile))
 	{
 		BIO* bio = BIO_new(BIO_s_file());
-		if (!bio) throw Poco::IOException("Cannot create BIO for writing public key file", publicKeyFile);
+		if (!bio)
+		{
+			std::string msg = Poco::format(
+				"EVPPKey::save(%s) Cannot create BIO for writing public key file\n", publicKeyFile);
+			throw Poco::IOException(getError(msg));
+		}
 		try
 		{
 			if (BIO_write_filename(bio, const_cast(publicKeyFile.c_str())))
 			{
 				if (!PEM_write_bio_PUBKEY(bio, _pEVPPKey))
 				{
-					throw Poco::WriteFileException("Failed to write public key to file", publicKeyFile);
+					std::string msg = Poco::format("EVPPKey::save('%s', '%s', '%s')\n",
+						publicKeyFile, privateKeyFile, privateKeyPassphrase);
+					msg.append(Poco::format("Failed to write public key '%s' to file", publicKeyFile));
+					throw Poco::WriteFileException(getError(msg));
 				}
 			}
 			else throw Poco::CreateFileException("Cannot create public key file");
@@ -146,7 +297,12 @@ void EVPPKey::save(const std::string& publicKeyFile, const std::string& privateK
 	if (!privateKeyFile.empty())
 	{
 		BIO* bio = BIO_new(BIO_s_file());
-		if (!bio) throw Poco::IOException("Cannot create BIO for writing private key file", privateKeyFile);
+		if (!bio)
+		{
+			std::string msg = Poco::format(
+				"EVPPKey::save(%s): Cannot create BIO for writing private key file\n", privateKeyFile);
+			throw Poco::IOException(getError(msg));
+		}
 		try
 		{
 			if (BIO_write_filename(bio, const_cast(privateKeyFile.c_str())))
@@ -163,9 +319,18 @@ void EVPPKey::save(const std::string& publicKeyFile, const std::string& privateK
 						static_cast(privateKeyPassphrase.length()), 0, 0);
 				}
 				if (!rc)
-					throw Poco::FileException("Failed to write private key to file", privateKeyFile);
+				{
+					std::string msg = Poco::format(
+						"EVPPKey::save(%s):PEM_write_bio_PrivateKey()\n", privateKeyFile);
+					throw Poco::FileException(getError(msg));
+				}
+			}
+			else
+			{
+				std::string msg = Poco::format(
+					"EVPPKey::save(%s):BIO_write_filename()\n", privateKeyFile);
+				throw Poco::CreateFileException(getError(msg));
 			}
-			else throw Poco::CreateFileException("Cannot create private key file", privateKeyFile);
 		}
 		catch (...)
 		{
@@ -182,11 +347,18 @@ void EVPPKey::save(std::ostream* pPublicKeyStream, std::ostream* pPrivateKeyStre
 	if (pPublicKeyStream && (pPublicKeyStream != pPrivateKeyStream))
 	{
 		BIO* bio = BIO_new(BIO_s_mem());
-		if (!bio) throw Poco::IOException("Cannot create BIO for writing public key");
+		if (!bio)
+		{
+			std::string msg = "EVPPKey::save(ostream*, ostream*, const string&)\n";
+			msg.append("Cannot create BIO for writing public key");
+			throw Poco::IOException(getError(msg));
+		}
 		if (!PEM_write_bio_PUBKEY(bio, _pEVPPKey))
 		{
+			std::string msg = "EVPPKey::save(ostream*, ostream*, const string&)\n";
+			msg.append("Failed to write public key to stream");
 			BIO_free(bio);
-			throw Poco::WriteFileException("Failed to write public key to stream");
+			throw Poco::WriteFileException(getError(msg));
 		}
 		char* pData;
 		long size = BIO_get_mem_data(bio, &pData);
@@ -197,7 +369,12 @@ void EVPPKey::save(std::ostream* pPublicKeyStream, std::ostream* pPrivateKeyStre
 	if (pPrivateKeyStream)
 	{
 		BIO* bio = BIO_new(BIO_s_mem());
-		if (!bio) throw Poco::IOException("Cannot create BIO for writing public key");
+		if (!bio)
+		{
+			std::string msg = "EVPPKey::save(ostream*, ostream*, const string&)\n";
+			msg.append("Cannot create BIO for writing private key");
+			throw Poco::IOException(getError(msg));
+		}
 		int rc = 0;
 		if (privateKeyPassphrase.empty())
 			rc = PEM_write_bio_PrivateKey(bio, _pEVPPKey, 0, 0, 0, 0, 0);
@@ -207,8 +384,10 @@ void EVPPKey::save(std::ostream* pPublicKeyStream, std::ostream* pPrivateKeyStre
 				static_cast(privateKeyPassphrase.length()), 0, 0);
 		if (!rc)
 		{
+			std::string msg = "EVPPKey::save(ostream*, ostream*, const string&)\n";
+			msg.append("Failed to write private key to stream");
 			BIO_free(bio);
-			throw Poco::FileException("Failed to write private key to stream");
+			throw Poco::FileException(getError(msg));
 		}
 		char* pData;
 		long size = BIO_get_mem_data(bio, &pData);
@@ -224,8 +403,11 @@ EVP_PKEY* EVPPKey::duplicate(const EVP_PKEY* pFromKey, EVP_PKEY** pToKey)
 		"provided key pointer is null.");
 
 	*pToKey = EVP_PKEY_new();
-	if (!*pToKey) throw NullPointerException("EVPPKey::duplicate(): "
-		"EVP_PKEY_new() returned null.");
+	if (!*pToKey)
+	{
+		std::string msg = "EVPPKey::duplicate():EVP_PKEY_new()\n";
+		throw NullPointerException(getError(msg));
+	}
 
 	int keyType = type(pFromKey);
 	switch (keyType)
@@ -238,7 +420,11 @@ EVP_PKEY* EVPPKey::duplicate(const EVP_PKEY* pFromKey, EVP_PKEY** pToKey)
 				EVP_PKEY_set1_RSA(*pToKey, pRSA);
 				RSA_free(pRSA);
 			}
-			else throw OpenSSLException("EVPPKey::duplicate(): EVP_PKEY_get1_RSA()");
+			else
+			{
+				std::string msg = "EVPPKey::duplicate():EVP_PKEY_get1_RSA()\n";
+				throw OpenSSLException(getError(msg));
+			}
 			break;
 		}
 		case EVP_PKEY_EC:
@@ -250,14 +436,24 @@ EVP_PKEY* EVPPKey::duplicate(const EVP_PKEY* pFromKey, EVP_PKEY** pToKey)
 				EC_KEY_free(pEC);
 				int cmp = EVP_PKEY_cmp_parameters(*pToKey, pFromKey);
 				if (cmp < 0)
-					throw OpenSSLException("EVPPKey::duplicate(): EVP_PKEY_cmp_parameters()");
+				{
+					std::string msg = "EVPPKey::duplicate():EVP_PKEY_cmp_parameters()\n";
+					throw OpenSSLException(getError(msg));
+				}
 				if (0 == cmp)
 				{
 					if(!EVP_PKEY_copy_parameters(*pToKey, pFromKey))
-						throw OpenSSLException("EVPPKey::duplicate(): EVP_PKEY_copy_parameters()");
+					{
+						std::string msg = "EVPPKey::duplicate():EVP_PKEY_copy_parameters()\n";
+						throw OpenSSLException(getError(msg));
+					}
 				}
 			}
-			else throw OpenSSLException();
+			else
+			{
+				std::string msg = "EVPPKey::duplicate():EVP_PKEY_get1_EC_KEY()\n";
+				throw OpenSSLException(getError(msg));
+			}
 			break;
 		}
 		default:
@@ -281,7 +477,8 @@ void EVPPKey::newECKey(const char* ecCurveName)
 	EC_KEY_free(pEC);
 	return;
 err:
-	throw OpenSSLException("EVPPKey:newECKey()");
+	std::string msg = "EVPPKey::newECKey()\n";
+	throw OpenSSLException(getError(msg));
 }
 
 
diff --git a/vendor/POCO/Crypto/src/Envelope.cpp b/vendor/POCO/Crypto/src/Envelope.cpp
new file mode 100644
index 00000000..c74fc25d
--- /dev/null
+++ b/vendor/POCO/Crypto/src/Envelope.cpp
@@ -0,0 +1,168 @@
+//
+// Envelope.cpp
+//
+// Library: Crypto
+// Package: Envelope
+// Module:  Envelope
+//
+// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier:	BSL-1.0
+//
+
+
+#include "Poco/Crypto/Envelope.h"
+
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+	#if !defined(EVP_CIPHER_CTX_init)
+		#define EVP_CIPHER_CTX_init(a)
+	#endif
+#endif
+
+namespace Poco {
+namespace Crypto {
+
+
+Envelope::Envelope(int cipherNID): _pCipher(EVP_get_cipherbynid(cipherNID)),
+	_pCtx(EVP_CIPHER_CTX_new())
+{
+	poco_check_ptr(_pCipher);
+	poco_check_ptr(_pCtx);
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+	if (1 != EVP_CIPHER_CTX_init(_pCtx))
+		handleErrors(std::string("Envelope():EVP_CIPHER_CTX_init()"));
+#else
+	EVP_CIPHER_CTX_init(_pCtx);
+#endif
+	_iv.resize(ivSize(), 0);
+}
+
+
+Envelope::Envelope(const EVPPKey& key, int cipherNID):
+	Envelope(cipherNID)
+{
+	addKey(key);
+}
+
+
+Envelope::Envelope(const EVPPKeyVec& keys, int cipherNID):
+	Envelope(cipherNID)
+{
+	for (const auto& k : keys) addKey(k);
+}
+
+
+Envelope::~Envelope()
+{
+	for (auto& pK : _pubKeys)
+		EVP_PKEY_free(pK);
+	EVP_CIPHER_CTX_free(_pCtx);
+}
+
+
+void Envelope::addKey(const EVPPKey& key)
+{
+	EVP_PKEY* pKey;
+	_pubKeys.push_back(EVPPKey::duplicate((const EVP_PKEY*)key, &pKey));
+	_encKeys.emplace_back(EVP_PKEY_size(_pubKeys.back()));
+}
+
+
+const Envelope::ByteVec& Envelope::seal(const ByteVec& plainData)
+{
+	std::vector pEncKeys(_encKeys.size(), 0);
+	std::vector encKeysSizes(_encKeys.size(), 0);
+	int i = 0;
+	for (const auto& k : _encKeys)
+		pEncKeys[i++] = new Byte[k.size()];
+
+	int noOfKeys = static_cast(_pubKeys.size());
+	if (_encKeys.size() != EVP_SealInit(_pCtx, _pCipher, &pEncKeys[0], &encKeysSizes[0], &_iv[0], &_pubKeys[0], noOfKeys))
+	{
+		i = 0;
+		for (; i < _encKeys.size(); ++i) delete [] pEncKeys[i];
+		handleErrors(std::string("Envelope::seal():EVP_SealInit()"));
+	}
+	i = 0;
+	for (auto& k : _encKeys)
+	{
+		if (encKeysSizes[i] != k.size())
+			k.resize(encKeysSizes[i]);
+		std::memcpy(&k[0], pEncKeys[i], encKeysSizes[i]);
+		++i;
+	}
+
+	i = 0;
+	for (; i < _encKeys.size(); ++i) delete [] pEncKeys[i];
+
+	int cipherTextLen = 0, len = 0;
+	int plainDataSize = static_cast(plainData.size());
+    _encContent.resize(plainDataSize + blockSize());
+	if (1 != EVP_SealUpdate(_pCtx, &_encContent[0], &len, &plainData[0], plainDataSize))
+		handleErrors(std::string("Envelope::seal():EVP_SealUpdate()"));
+	
+	cipherTextLen = len;
+	poco_assert (cipherTextLen < _encContent.size());
+
+	if(1 != EVP_SealFinal(_pCtx, &_encContent[len], &len))
+		handleErrors(std::string("Envelope::seal():EVP_SealFinal()"));
+	cipherTextLen += len;
+	poco_assert (cipherTextLen <= _encContent.size());
+	_encContent.resize(cipherTextLen);
+
+	return _encContent;
+}
+
+
+const Envelope::ByteVec& Envelope::seal(const std::string& plainText)
+{
+	return seal(ByteVec(plainText.begin(), plainText.end()));
+}
+
+
+Envelope::ByteVec Envelope::open(const EVPPKey& privKey, const ByteVec& encKey, const ByteVec& iv)
+{
+	if (iv.size() > 0) _iv = iv;
+	int encContentLen = static_cast(_encContent.size());
+	int blockSz = blockSize();
+	int mod = encContentLen % blockSz;
+	if (mod || (encContentLen < blockSz))
+	{
+		throw Poco::InvalidArgumentException(
+			Poco::format("Envelope::open(): bad encrypted buffer size: %z (must be N x %d)",
+				_encContent.size(), blockSz));
+	}
+
+	int encKeyLen = static_cast(encKey.size());
+	EVP_PKEY* pKey = const_cast((const EVP_PKEY*)privKey);
+	if (1 != EVP_OpenInit(_pCtx, _pCipher, &encKey[0], encKeyLen, &_iv[0], pKey))
+		handleErrors(std::string("Envelope::open():EVP_OpenInit()"));
+
+	ByteVec plainData(_encContent.size()+blockSz, 0);
+	int len = 0;
+	if(1 != EVP_OpenUpdate(_pCtx, &plainData[0], &len, &_encContent[0], encContentLen))
+		handleErrors(std::string("Envelope::open():EVP_OpenUpdate()"));
+	int totalLen = len;
+	
+	if(1 != EVP_OpenFinal(_pCtx, &plainData[len], &len))
+		handleErrors(std::string("Envelope::open():EVP_OpenFinal()"));
+	totalLen += len;
+	plainData.resize(totalLen);
+	return plainData;
+}
+
+
+void Envelope::handleErrors(std::string&& msg)
+{
+	unsigned long err;
+	while ((err = ERR_get_error()))
+	{
+		if (!msg.empty()) msg.append("\n");
+		msg.append(ERR_error_string(err, 0));
+	}
+	throw CryptoException(msg);
+}
+
+
+} } // namespace Poco::Crypto
diff --git a/vendor/POCO/Crypto/src/OpenSSLInitializer.cpp b/vendor/POCO/Crypto/src/OpenSSLInitializer.cpp
index 47078302..1d2c9255 100644
--- a/vendor/POCO/Crypto/src/OpenSSLInitializer.cpp
+++ b/vendor/POCO/Crypto/src/OpenSSLInitializer.cpp
@@ -13,15 +13,16 @@
 
 
 #include "Poco/Crypto/OpenSSLInitializer.h"
+#include "Poco/Crypto/CryptoException.h"
 #include "Poco/RandomStream.h"
 #include "Poco/Thread.h"
 #include 
 #include 
 #include 
 #include 
-#if OPENSSL_VERSION_NUMBER >= 0x0907000L
 #include 
-#endif
+
+
 #if defined(POCO_OS_FAMILY_WINDOWS)
 	#define POCO_STR_HELPER(x) #x
 	#define POCO_STR(x) POCO_STR_HELPER(x)
@@ -58,9 +59,17 @@ namespace Poco {
 namespace Crypto {
 
 
-Poco::FastMutex* OpenSSLInitializer::_mutexes(0);
 Poco::AtomicCounter OpenSSLInitializer::_rc;
 
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+Poco::FastMutex* OpenSSLInitializer::_mutexes(0);
+#endif
+
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+OSSL_PROVIDER* OpenSSLInitializer::_defaultProvider(0);
+OSSL_PROVIDER* OpenSSLInitializer::_legacyProvider(0);
+#endif
+
 
 OpenSSLInitializer::OpenSSLInitializer()
 {
@@ -87,18 +96,15 @@ void OpenSSLInitializer::initialize()
 	{
 #if OPENSSL_VERSION_NUMBER >= 0x10100000L
 		CONF_modules_load(NULL, NULL, 0);
-#elif OPENSSL_VERSION_NUMBER >= 0x0907000L
+#else
 		OPENSSL_config(NULL);
 #endif
+
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
 		SSL_library_init();
 		SSL_load_error_strings();
 		OpenSSL_add_all_algorithms();
-		
-		char seed[SEEDSIZE];
-		RandomInputStream rnd;
-		rnd.read(seed, sizeof(seed));
-		RAND_seed(seed, SEEDSIZE);
-		
+
 		int nMutexes = CRYPTO_num_locks();
 		_mutexes = new Poco::FastMutex[nMutexes];
 		CRYPTO_set_locking_callback(&OpenSSLInitializer::lock);
@@ -107,14 +113,33 @@ void OpenSSLInitializer::initialize()
 // https://sourceforge.net/p/poco/bugs/110/
 //
 // From http://www.openssl.org/docs/crypto/threads.html :
-// "If the application does not register such a callback using CRYPTO_THREADID_set_callback(), 
-//  then a default implementation is used - on Windows and BeOS this uses the system's 
+// "If the application does not register such a callback using CRYPTO_THREADID_set_callback(),
+//  then a default implementation is used - on Windows and BeOS this uses the system's
 //  default thread identifying APIs"
 		CRYPTO_set_id_callback(&OpenSSLInitializer::id);
 #endif
 		CRYPTO_set_dynlock_create_callback(&OpenSSLInitializer::dynlockCreate);
 		CRYPTO_set_dynlock_lock_callback(&OpenSSLInitializer::dynlock);
 		CRYPTO_set_dynlock_destroy_callback(&OpenSSLInitializer::dynlockDestroy);
+
+		char seed[SEEDSIZE];
+		RandomInputStream rnd;
+		rnd.read(seed, sizeof(seed));
+		RAND_seed(seed, SEEDSIZE);
+#endif
+
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+		if (!_defaultProvider)
+		{
+			_defaultProvider = OSSL_PROVIDER_load(NULL, "default");
+			if (!_defaultProvider) throw CryptoException("Failed to load OpenSSL default provider");
+		}
+		if (!_legacyProvider)
+		{
+			_legacyProvider = OSSL_PROVIDER_load(NULL, "legacy");
+			if (!_legacyProvider) throw CryptoException("Failed to load OpenSSL legacy provider");
+		}
+#endif
 	}
 }
 
@@ -123,6 +148,7 @@ void OpenSSLInitializer::uninitialize()
 {
 	if (--_rc == 0)
 	{
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
 		EVP_cleanup();
 		ERR_free_strings();
 		CRYPTO_set_locking_callback(0);
@@ -130,12 +156,14 @@ void OpenSSLInitializer::uninitialize()
 		CRYPTO_set_id_callback(0);
 #endif
 		delete [] _mutexes;
-		
-		CONF_modules_free();
+#endif
 	}
 }
 
 
+#if OPENSSL_VERSION_NUMBER < 0x10100000L
+
+
 void OpenSSLInitializer::lock(int mode, int n, const char* file, int line)
 {
 	if (mode & CRYPTO_LOCK)
@@ -177,6 +205,9 @@ void OpenSSLInitializer::dynlockDestroy(struct CRYPTO_dynlock_value* lock, const
 }
 
 
+#endif // OPENSSL_VERSION_NUMBER < 0x10100000L
+
+
 void initializeCrypto()
 {
 	OpenSSLInitializer::initialize();
diff --git a/vendor/POCO/Crypto/src/PKCS12Container.cpp b/vendor/POCO/Crypto/src/PKCS12Container.cpp
index dfc41113..da961550 100644
--- a/vendor/POCO/Crypto/src/PKCS12Container.cpp
+++ b/vendor/POCO/Crypto/src/PKCS12Container.cpp
@@ -128,19 +128,12 @@ std::string PKCS12Container::extractFriendlyName(X509* pCert)
 	std::string friendlyName;
 	if(pCert)
 	{
-		STACK_OF(PKCS12_SAFEBAG)*pBags = 0;
-		PKCS12_SAFEBAG*pBag = PKCS12_add_cert(&pBags, pCert);
-		if(pBag)
+		int length = 0;
+		char* pBuffer = reinterpret_cast(X509_alias_get0(pCert, &length));
+		if (pBuffer)
 		{
-			char* pBuffer = PKCS12_get_friendlyname(pBag);
-			if(pBuffer)
-			{
-				friendlyName = pBuffer;
-				OPENSSL_free(pBuffer);
-			}
-			if(pBags) sk_PKCS12_SAFEBAG_pop_free(pBags, PKCS12_SAFEBAG_free);
+			friendlyName.append(pBuffer, length);
 		}
-		else throw OpenSSLException("PKCS12Container::extractFriendlyName()");
 	}
 	else throw NullPointerException("PKCS12Container::extractFriendlyName()");
 
@@ -171,7 +164,15 @@ void PKCS12Container::load(PKCS12* pPKCS12, const std::string& password)
 				int certCount = sk_X509_num(pCA);
 				for (int i = 0; i < certCount; ++i)
 				{
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
 					X509* pX509 = sk_X509_value(pCA, i);
+#else
+					// Cert order is reversed on OpenSSL < 3.
+					// https://github.com/openssl/openssl/issues/16421
+					// https://github.com/openssl/openssl/pull/12641
+					// https://github.com/jeroen/openssl/commit/f5eb85eb0fd432406a24abda6511c449eaee6162
+					X509* pX509 = sk_X509_value(pCA, (certCount - i - 1));
+#endif
 					if (pX509)
 					{
 						_caCertList.push_back(X509Certificate(pX509, true));
diff --git a/vendor/POCO/Crypto/src/RSADigestEngine.cpp b/vendor/POCO/Crypto/src/RSADigestEngine.cpp
index 948aa25a..9786eec3 100644
--- a/vendor/POCO/Crypto/src/RSADigestEngine.cpp
+++ b/vendor/POCO/Crypto/src/RSADigestEngine.cpp
@@ -51,7 +51,7 @@ void RSADigestEngine::reset()
 	_signature.clear();
 }
 
-	
+
 const DigestEngine::Digest& RSADigestEngine::digest()
 {
 	if (_digest.empty())
@@ -77,7 +77,7 @@ const DigestEngine::Digest& RSADigestEngine::signature()
     return _signature;
 }
 
-	
+
 bool RSADigestEngine::verify(const DigestEngine::Digest& sig)
 {
 	digest();
diff --git a/vendor/POCO/Crypto/src/RSAKeyImpl.cpp b/vendor/POCO/Crypto/src/RSAKeyImpl.cpp
index 8aa3890b..58396ccb 100644
--- a/vendor/POCO/Crypto/src/RSAKeyImpl.cpp
+++ b/vendor/POCO/Crypto/src/RSAKeyImpl.cpp
@@ -21,9 +21,7 @@
 #include 
 #include 
 #include 
-#if OPENSSL_VERSION_NUMBER >= 0x00908000L
 #include 
-#endif
 
 
 namespace Poco {
@@ -66,7 +64,6 @@ RSAKeyImpl::RSAKeyImpl(const PKCS12Container& cont):
 RSAKeyImpl::RSAKeyImpl(int keyLength, unsigned long exponent): KeyPairImpl("rsa", KT_RSA_IMPL),
 	_pRSA(0)
 {
-#if OPENSSL_VERSION_NUMBER >= 0x00908000L
 	_pRSA = RSA_new();
 	int ret = 0;
 	BIGNUM* bn = 0;
@@ -83,15 +80,11 @@ RSAKeyImpl::RSAKeyImpl(int keyLength, unsigned long exponent): KeyPairImpl("rsa"
 		throw;
 	}
 	if (!ret) throw Poco::InvalidArgumentException("Failed to create RSA context");
-#else
-	_pRSA = RSA_generate_key(keyLength, exponent, 0, 0);
-	if (!_pRSA) throw Poco::InvalidArgumentException("Failed to create RSA context");
-#endif
 }
 
 
-RSAKeyImpl::RSAKeyImpl(const std::string& publicKeyFile, 
-	const std::string& privateKeyFile, 
+RSAKeyImpl::RSAKeyImpl(const std::string& publicKeyFile,
+	const std::string& privateKeyFile,
 	const std::string& privateKeyPassphrase): KeyPairImpl("rsa", KT_RSA_IMPL),
 		_pRSA(0)
 {
@@ -109,7 +102,7 @@ RSAKeyImpl::RSAKeyImpl(const std::string& publicKeyFile,
 			if (!pubKey)
 			{
 				int rc = BIO_reset(bio);
-				// BIO_reset() normally returns 1 for success and 0 or -1 for failure. 
+				// BIO_reset() normally returns 1 for success and 0 or -1 for failure.
 				// File BIOs are an exception, they return 0 for success and -1 for failure.
 				if (rc != 0) throw Poco::FileException("Failed to load public key", publicKeyFile);
 				pubKey = PEM_read_bio_RSA_PUBKEY(bio, &_pRSA, 0, 0);
@@ -174,7 +167,7 @@ RSAKeyImpl::RSAKeyImpl(std::istream* pPublicKeyStream,
 		if (!publicKey)
 		{
 			int rc = BIO_reset(bio);
-			// BIO_reset() normally returns 1 for success and 0 or -1 for failure. 
+			// BIO_reset() normally returns 1 for success and 0 or -1 for failure.
 			// File BIOs are an exception, they return 0 for success and -1 for failure.
 			if (rc != 1) throw Poco::FileException("Failed to load public key");
 			publicKey = PEM_read_bio_RSA_PUBKEY(bio, &_pRSA, 0, 0);
@@ -293,7 +286,7 @@ void RSAKeyImpl::save(const std::string& publicKeyFile,
 		}
 		BIO_free(bio);
 	}
-	
+
 	if (!privateKeyFile.empty())
 	{
 		BIO* bio = BIO_new(BIO_s_file());
@@ -306,8 +299,8 @@ void RSAKeyImpl::save(const std::string& publicKeyFile,
 				if (privateKeyPassphrase.empty())
 					rc = PEM_write_bio_RSAPrivateKey(bio, _pRSA, 0, 0, 0, 0, 0);
 				else
-					rc = PEM_write_bio_RSAPrivateKey(bio, _pRSA, EVP_des_ede3_cbc(), 
-						reinterpret_cast(const_cast(privateKeyPassphrase.c_str())), 
+					rc = PEM_write_bio_RSAPrivateKey(bio, _pRSA, EVP_des_ede3_cbc(),
+						reinterpret_cast(const_cast(privateKeyPassphrase.c_str())),
 						static_cast(privateKeyPassphrase.length()), 0, 0);
 				if (!rc) throw Poco::FileException("Failed to write private key to file", privateKeyFile);
 			}
@@ -350,10 +343,10 @@ void RSAKeyImpl::save(std::ostream* pPublicKeyStream,
 		if (privateKeyPassphrase.empty())
 			rc = PEM_write_bio_RSAPrivateKey(bio, _pRSA, 0, 0, 0, 0, 0);
 		else
-			rc = PEM_write_bio_RSAPrivateKey(bio, _pRSA, EVP_des_ede3_cbc(), 
-				reinterpret_cast(const_cast(privateKeyPassphrase.c_str())), 
+			rc = PEM_write_bio_RSAPrivateKey(bio, _pRSA, EVP_des_ede3_cbc(),
+				reinterpret_cast(const_cast(privateKeyPassphrase.c_str())),
 				static_cast(privateKeyPassphrase.length()), 0, 0);
-		if (!rc) 
+		if (!rc)
 		{
 			BIO_free(bio);
 			throw Poco::FileException("Failed to write private key to stream");
diff --git a/vendor/POCO/Crypto/src/X509Certificate.cpp b/vendor/POCO/Crypto/src/X509Certificate.cpp
index 31ab3b2f..d3f3e537 100644
--- a/vendor/POCO/Crypto/src/X509Certificate.cpp
+++ b/vendor/POCO/Crypto/src/X509Certificate.cpp
@@ -121,7 +121,7 @@ X509Certificate& X509Certificate::operator = (X509Certificate&& cert) noexcept
 }
 
 
-void X509Certificate::swap(X509Certificate& cert)
+void X509Certificate::swap(X509Certificate& cert) noexcept
 {
 	using std::swap;
 	swap(cert._issuerName, _issuerName);
@@ -416,10 +416,14 @@ X509Certificate::List X509Certificate::readPEM(const std::string& pemFileName)
 {
 	List caCertList;
 	BIO* pBIO = BIO_new_file(pemFileName.c_str(), "r");
-	if (pBIO == NULL) throw OpenFileException("X509Certificate::readPEM()");
+	if (pBIO == NULL) throw OpenFileException(Poco::format("X509Certificate::readPEM(%s)", pemFileName));
 	X509* x = PEM_read_bio_X509(pBIO, NULL, 0, NULL);
-	if (!x) throw OpenSSLException(Poco::format("X509Certificate::readPEM(%s)", pemFileName));
-	while(x)
+	if (!x)
+	{
+		BIO_free(pBIO);
+		throw OpenSSLException(Poco::format("X509Certificate::readPEM(%s)", pemFileName));
+	}
+	while (x)
 	{
 		caCertList.push_back(X509Certificate(x));
 		x = PEM_read_bio_X509(pBIO, NULL, 0, NULL);
@@ -432,14 +436,15 @@ X509Certificate::List X509Certificate::readPEM(const std::string& pemFileName)
 void X509Certificate::writePEM(const std::string& pemFileName, const List& list)
 {
 	BIO* pBIO = BIO_new_file(pemFileName.c_str(), "a");
-	if (pBIO == NULL) throw OpenFileException("X509Certificate::writePEM()");
+	if (pBIO == NULL) throw OpenFileException(Poco::format("X509Certificate::writePEM(%s)", pemFileName));
 	List::const_iterator it = list.begin();
 	List::const_iterator end = list.end();
 	for (; it != end; ++it)
 	{
 		if (!PEM_write_bio_X509(pBIO, const_cast(it->certificate())))
 		{
-			throw OpenSSLException("X509Certificate::writePEM()");
+			BIO_free(pBIO);
+			throw OpenSSLException(Poco::format("X509Certificate::writePEM(%s)", pemFileName));
 		}
 	}
 	BIO_free(pBIO);
diff --git a/vendor/POCO/Crypto/testsuite/Makefile b/vendor/POCO/Crypto/testsuite/Makefile
index df050ecf..8ec1c270 100644
--- a/vendor/POCO/Crypto/testsuite/Makefile
+++ b/vendor/POCO/Crypto/testsuite/Makefile
@@ -13,13 +13,18 @@ else
 ifeq ($(POCO_CONFIG),QNX)
 SYSLIBS += -lssl -lcrypto -lz
 else
+ifeq ($(findstring AIX, $(POCO_CONFIG)), AIX)
+SYSLIBS += -lssl_a -lcrypto_a -lz -ldl
+else
 SYSLIBS += -lssl -lcrypto -lz -ldl
 endif
 endif
+endif
 
 objects = CryptoTestSuite Driver \
 	CryptoTest DigestEngineTest ECTest \
-	EVPTest RSATest PKCS12ContainerTest
+	EVPTest RSATest PKCS12ContainerTest \
+	EnvelopeTest
 
 target         = testrunner
 target_version = 1
diff --git a/vendor/POCO/Crypto/testsuite/TestSuite_VS90.vcproj b/vendor/POCO/Crypto/testsuite/TestSuite_VS90.vcproj
index 9804eb3f..3d38900f 100644
--- a/vendor/POCO/Crypto/testsuite/TestSuite_VS90.vcproj
+++ b/vendor/POCO/Crypto/testsuite/TestSuite_VS90.vcproj
@@ -582,6 +582,10 @@
 					RelativePath=".\src\PKCS12ContainerTest.h"
 					>
 				
+				
+				
 				
@@ -610,6 +614,10 @@
 					RelativePath=".\src\PKCS12ContainerTest.cpp"
 					>
 				
+				
+				
 				
diff --git a/vendor/POCO/Crypto/testsuite/TestSuite_vs140.vcxproj b/vendor/POCO/Crypto/testsuite/TestSuite_vs140.vcxproj
index 63f4268e..de77af4b 100644
--- a/vendor/POCO/Crypto/testsuite/TestSuite_vs140.vcxproj
+++ b/vendor/POCO/Crypto/testsuite/TestSuite_vs140.vcxproj
@@ -602,6 +602,7 @@
     
     
     
+    
     
     
     
@@ -622,6 +623,9 @@
     
       true
     
+    
+      true
+    
     
       true
     
diff --git a/vendor/POCO/Crypto/testsuite/TestSuite_vs140.vcxproj.filters b/vendor/POCO/Crypto/testsuite/TestSuite_vs140.vcxproj.filters
index 92766ad1..dec7fb61 100644
--- a/vendor/POCO/Crypto/testsuite/TestSuite_vs140.vcxproj.filters
+++ b/vendor/POCO/Crypto/testsuite/TestSuite_vs140.vcxproj.filters
@@ -2,28 +2,28 @@
 
   
     
-      {0307e461-0372-4b61-b88a-24f59d5291f5}
+      {9dff95b8-7a0a-42a2-882d-240353eebc86}
     
     
-      {ea60f0b1-8f41-4785-b21c-ea51871b27b6}
+      {c461d935-f1d4-468f-8e89-a06090c1b7d6}
     
     
-      {73a5e4b2-0a40-4682-adcd-f76a09839671}
+      {dcfe4ffa-6b62-4c48-9625-6fa8d16841f6}
     
     
-      {1cf95bad-cc85-45a5-82db-4348109089a6}
+      {66610ad9-d08d-4cd7-b3d2-d6d71a7d9ac5}
     
     
-      {e596f9e4-e909-41be-9311-df2d6d3747aa}
+      {0cfb4e9f-5fe7-42dd-96f1-3dc5e779bf88}
     
     
-      {4484ecb8-1194-4fc5-bb53-264ad9a608b2}
+      {0cd7e466-afb0-40c7-abff-08147e0e6da7}
     
     
-      {4d620dde-5cd7-4b0e-a142-d965960c8a72}
+      {89a0f0f0-fd2a-49aa-91f2-5b766adcd945}
     
     
-      {be860c27-4ecf-4076-bf9a-214fec9a6bb5}
+      {e110d68e-1724-4d5e-8ab5-f774c2735147}
     
   
   
@@ -42,6 +42,9 @@
     
       Crypto\Header Files
     
+    
+      Crypto\Header Files
+    
     
       Crypto\Header Files
     
@@ -65,6 +68,9 @@
     
       Crypto\Source Files
     
+    
+      Crypto\Source Files
+    
     
       Crypto\Source Files
     
diff --git a/vendor/POCO/Crypto/testsuite/TestSuite_vs150.vcxproj b/vendor/POCO/Crypto/testsuite/TestSuite_vs150.vcxproj
index b57bc883..1167f02c 100644
--- a/vendor/POCO/Crypto/testsuite/TestSuite_vs150.vcxproj
+++ b/vendor/POCO/Crypto/testsuite/TestSuite_vs150.vcxproj
@@ -602,6 +602,7 @@
     
     
     
+    
     
     
     
@@ -622,6 +623,9 @@
     
       true
     
+    
+      true
+    
     
       true
     
diff --git a/vendor/POCO/Crypto/testsuite/TestSuite_vs150.vcxproj.filters b/vendor/POCO/Crypto/testsuite/TestSuite_vs150.vcxproj.filters
index 3c4912f8..ab329fa9 100644
--- a/vendor/POCO/Crypto/testsuite/TestSuite_vs150.vcxproj.filters
+++ b/vendor/POCO/Crypto/testsuite/TestSuite_vs150.vcxproj.filters
@@ -2,28 +2,28 @@
 
   
     
-      {2bb088de-648b-44f3-a6da-7e01203baa0c}
+      {c36620ad-ed1f-44db-b632-628f09517b5a}
     
     
-      {b0434cc3-d68a-4a24-a60e-ba34498152ea}
+      {93ac862f-ef66-4c96-82c6-82f03c87b786}
     
     
-      {c7b2facf-5022-4c9b-85b2-55ca7ff19a47}
+      {c59358e6-8395-4e21-b952-d8f99d0805c9}
     
     
-      {cbd4a023-92b8-4bb5-a9df-435c6a7afe13}
+      {f96aacb4-a5dc-4cd9-9af3-9181ca3d08e8}
     
     
-      {2a3ebbe8-0b82-4b0b-b75a-2a14e7cf8510}
+      {0f12e848-51bd-4dcb-ac5a-21cfe7a2d3f9}
     
     
-      {6384c5af-9c91-4a65-b82a-f21cd1e0889e}
+      {79f7b368-e662-4165-b04b-4a1d652b6a32}
     
     
-      {c41d57c8-f31f-4791-ba37-a1976e798c72}
+      {4c17d29d-4e86-4175-8704-3d1374a9e47c}
     
     
-      {4c8e8c4a-0480-47c4-ab2e-0271c7874e63}
+      {d54ac5e8-d98b-4c54-a8a4-8553a21a9ac7}
     
   
   
@@ -42,6 +42,9 @@
     
       Crypto\Header Files
     
+    
+      Crypto\Header Files
+    
     
       Crypto\Header Files
     
@@ -65,6 +68,9 @@
     
       Crypto\Source Files
     
+    
+      Crypto\Source Files
+    
     
       Crypto\Source Files
     
diff --git a/vendor/POCO/Crypto/testsuite/TestSuite_vs160.vcxproj b/vendor/POCO/Crypto/testsuite/TestSuite_vs160.vcxproj
index adf78089..4ff3fed0 100644
--- a/vendor/POCO/Crypto/testsuite/TestSuite_vs160.vcxproj
+++ b/vendor/POCO/Crypto/testsuite/TestSuite_vs160.vcxproj
@@ -157,7 +157,7 @@
   
   
   
-    <_ProjectFileVersion>15.0.28307.799
+    <_ProjectFileVersion>16.0.32629.160
     TestSuited
     TestSuited
     TestSuited
@@ -602,6 +602,7 @@
     
     
     
+    
     
     
     
@@ -622,6 +623,9 @@
     
       true
     
+    
+      true
+    
     
       true
     
diff --git a/vendor/POCO/Crypto/testsuite/TestSuite_vs160.vcxproj.filters b/vendor/POCO/Crypto/testsuite/TestSuite_vs160.vcxproj.filters
index 10566c16..9319e767 100644
--- a/vendor/POCO/Crypto/testsuite/TestSuite_vs160.vcxproj.filters
+++ b/vendor/POCO/Crypto/testsuite/TestSuite_vs160.vcxproj.filters
@@ -2,28 +2,28 @@
 
   
     
-      {0dc0ac78-ca59-458b-8c95-bb50bba12e83}
+      {8e27cadf-c720-479f-92da-b1e97f437438}
     
     
-      {7ab4046f-488c-47f4-b6db-18fe2cc37af5}
+      {91a5793c-8b68-45d0-b350-877dd6cf2c02}
     
     
-      {a2b63aa7-58ba-4f3a-b391-a3f32a67bce7}
+      {a14e5add-e33d-424b-be23-0b8371e22609}
     
     
-      {92de59df-1db3-4ac4-a545-9e16c5a4aaeb}
+      {f231f366-be62-4292-ab26-f91a41191403}
     
     
-      {859f2c78-4de9-4aa2-b113-d5b2fc4fda8f}
+      {ec44c7f3-b2a1-4b59-9081-8e61ddef1c44}
     
     
-      {62840282-6976-4ef5-934c-9e7ef7f4aad1}
+      {728bece6-f76d-483c-a028-52f91599a7e7}
     
     
-      {c2dfb797-2cf1-48e9-a3db-9578c1be834d}
+      {57064194-c6d7-414b-9f0d-a1707f6e0c8d}
     
     
-      {68a624c7-5f73-4259-9035-b8c7eb047dd9}
+      {60671a47-3546-4b5d-b1e9-275110dd36ca}
     
   
   
@@ -42,6 +42,9 @@
     
       Crypto\Header Files
     
+    
+      Crypto\Header Files
+    
     
       Crypto\Header Files
     
@@ -65,6 +68,9 @@
     
       Crypto\Source Files
     
+    
+      Crypto\Source Files
+    
     
       Crypto\Source Files
     
diff --git a/vendor/POCO/Crypto/testsuite/TestSuite_vs170.vcxproj b/vendor/POCO/Crypto/testsuite/TestSuite_vs170.vcxproj
new file mode 100644
index 00000000..0cb17b77
--- /dev/null
+++ b/vendor/POCO/Crypto/testsuite/TestSuite_vs170.vcxproj
@@ -0,0 +1,932 @@
+
+
+  
+    
+      debug_shared
+      ARM64
+    
+    
+      debug_shared
+      Win32
+    
+    
+      debug_shared
+      x64
+    
+    
+      debug_static_md
+      ARM64
+    
+    
+      debug_static_md
+      Win32
+    
+    
+      debug_static_md
+      x64
+    
+    
+      debug_static_mt
+      ARM64
+    
+    
+      debug_static_mt
+      Win32
+    
+    
+      debug_static_mt
+      x64
+    
+    
+      release_shared
+      ARM64
+    
+    
+      release_shared
+      Win32
+    
+    
+      release_shared
+      x64
+    
+    
+      release_static_md
+      ARM64
+    
+    
+      release_static_md
+      Win32
+    
+    
+      release_static_md
+      x64
+    
+    
+      release_static_mt
+      ARM64
+    
+    
+      release_static_mt
+      Win32
+    
+    
+      release_static_mt
+      x64
+    
+  
+  
+    TestSuite
+    {C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}
+    TestSuite
+    Win32Proj
+  
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+  
+    <_ProjectFileVersion>16.0.32629.160
+    TestSuited
+    TestSuited
+    TestSuited
+    TestSuite
+    TestSuite
+    TestSuite
+    TestSuited
+    TestSuited
+    TestSuited
+    TestSuite
+    TestSuite
+    TestSuite
+    TestSuited
+    TestSuited
+    TestSuited
+    TestSuite
+    TestSuite
+    TestSuite
+  
+  
+    binA64\
+    objA64\TestSuite\$(Configuration)\
+    true
+  
+  
+    binA64\
+    objA64\TestSuite\$(Configuration)\
+    false
+  
+  
+    binA64\static_mt\
+    objA64\TestSuite\$(Configuration)\
+    true
+  
+  
+    binA64\static_mt\
+    objA64\TestSuite\$(Configuration)\
+    false
+  
+  
+    binA64\static_md\
+    objA64\TestSuite\$(Configuration)\
+    true
+  
+  
+    binA64\static_md\
+    objA64\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin\
+    obj\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin\
+    obj\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin\static_mt\
+    obj\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin\static_mt\
+    obj\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin\static_md\
+    obj\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin\static_md\
+    obj\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin64\
+    obj64\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin64\
+    obj64\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin64\static_mt\
+    obj64\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin64\static_mt\
+    obj64\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin64\static_md\
+    obj64\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin64\static_md\
+    obj64\TestSuite\$(Configuration)\
+    false
+  
+  
+    
+      Disabled
+      ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitd.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      binA64\TestSuited.exe
+      ..\..\libA64;%(AdditionalLibraryDirectories)
+      true
+      true
+      binA64\TestSuited.pdb
+      Console
+      MachineARM64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnit.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      binA64\TestSuite.exe
+      ..\..\libA64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineARM64
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmtd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies)
+      binA64\static_mt\TestSuited.exe
+      ..\..\libA64;%(AdditionalLibraryDirectories)
+      true
+      true
+      binA64\static_mt\TestSuited.pdb
+      Console
+      MachineARM64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmt.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies)
+      binA64\static_mt\TestSuite.exe
+      ..\..\libA64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineARM64
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmdd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      binA64\static_md\TestSuited.exe
+      ..\..\libA64;%(AdditionalLibraryDirectories)
+      true
+      true
+      binA64\static_md\TestSuited.pdb
+      Console
+      MachineARM64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      binA64\static_md\TestSuite.exe
+      ..\..\libA64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineARM64
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitd.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\TestSuited.exe
+      ..\..\lib;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin\TestSuited.pdb
+      Console
+      MachineX86
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnit.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\TestSuite.exe
+      ..\..\lib;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX86
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmtd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies)
+      bin\static_mt\TestSuited.exe
+      ..\..\lib;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin\static_mt\TestSuited.pdb
+      Console
+      MachineX86
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmt.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies)
+      bin\static_mt\TestSuite.exe
+      ..\..\lib;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX86
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\CppUnit\include;..\..\CppUnit\WinTestRunner\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmdd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\static_md\TestSuited.exe
+      ..\..\lib;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin\static_md\TestSuited.pdb
+      Console
+      MachineX86
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\static_md\TestSuite.exe
+      ..\..\lib;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX86
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitd.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\TestSuited.exe
+      ..\..\lib64;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin64\TestSuited.pdb
+      Console
+      MachineX64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnit.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\TestSuite.exe
+      ..\..\lib64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX64
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmtd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies)
+      bin64\static_mt\TestSuited.exe
+      ..\..\lib64;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin64\static_mt\TestSuited.pdb
+      Console
+      MachineX64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmt.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;Crypt32.lib;%(AdditionalDependencies)
+      bin64\static_mt\TestSuite.exe
+      ..\..\lib64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX64
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmdd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\static_md\TestSuited.exe
+      ..\..\lib64;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin64\static_md\TestSuited.pdb
+      Console
+      MachineX64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\CppUnit\include;..\..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmd.lib;iphlpapi.lib;winmm.lib;ws2_32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\static_md\TestSuite.exe
+      ..\..\lib64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX64
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+  
+  
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+  
+  
+  
+
diff --git a/vendor/POCO/Crypto/testsuite/TestSuite_vs170.vcxproj.filters b/vendor/POCO/Crypto/testsuite/TestSuite_vs170.vcxproj.filters
new file mode 100644
index 00000000..ffa5b9bc
--- /dev/null
+++ b/vendor/POCO/Crypto/testsuite/TestSuite_vs170.vcxproj.filters
@@ -0,0 +1,84 @@
+
+
+  
+    
+      {acf5407e-78f8-481f-aede-24ca7504422d}
+    
+    
+      {ed75d974-1e6e-4d97-83fb-7111122dba8b}
+    
+    
+      {0271bc10-a0c8-408a-8b2b-64e557c63f32}
+    
+    
+      {30319608-5ad4-43c1-af6e-84729e9e9aa6}
+    
+    
+      {aa5fc0e5-cee3-4f44-8a6a-7f64fbbda341}
+    
+    
+      {d2e3ae91-4bc3-4259-ab5d-9bc19d47d37c}
+    
+    
+      {9e497b70-abc5-4962-8853-36eb7d61b4ba}
+    
+    
+      {d16fc517-f3ee-4181-acac-c11efb90d9e8}
+    
+  
+  
+    
+      Crypto\Header Files
+    
+    
+      Crypto\Header Files
+    
+    
+      Crypto\Header Files
+    
+    
+      Crypto\Header Files
+    
+    
+      Crypto\Header Files
+    
+    
+      Crypto\Header Files
+    
+    
+      Crypto\Header Files
+    
+    
+      _Suite\Header Files
+    
+  
+  
+    
+      Crypto\Source Files
+    
+    
+      Crypto\Source Files
+    
+    
+      Crypto\Source Files
+    
+    
+      Crypto\Source Files
+    
+    
+      Crypto\Source Files
+    
+    
+      Crypto\Source Files
+    
+    
+      Crypto\Source Files
+    
+    
+      _Suite\Source Files
+    
+    
+      _Driver\Source Files
+    
+  
+
\ No newline at end of file
diff --git a/vendor/POCO/Crypto/testsuite/src/CryptoTestSuite.cpp b/vendor/POCO/Crypto/testsuite/src/CryptoTestSuite.cpp
index 03efca93..0e3a1663 100644
--- a/vendor/POCO/Crypto/testsuite/src/CryptoTestSuite.cpp
+++ b/vendor/POCO/Crypto/testsuite/src/CryptoTestSuite.cpp
@@ -21,6 +21,7 @@
 #include "EVPTest.h"
 #include "DigestEngineTest.h"
 #include "PKCS12ContainerTest.h"
+#include "EnvelopeTest.h"
 
 
 CppUnit::Test* CryptoTestSuite::suite()
@@ -33,5 +34,6 @@ CppUnit::Test* CryptoTestSuite::suite()
 	pSuite->addTest(EVPTest::suite());
 	pSuite->addTest(DigestEngineTest::suite());
 	pSuite->addTest(PKCS12ContainerTest::suite());
+	pSuite->addTest(EnvelopeTest::suite());
 	return pSuite;
 }
diff --git a/vendor/POCO/Crypto/testsuite/src/DigestEngineTest.cpp b/vendor/POCO/Crypto/testsuite/src/DigestEngineTest.cpp
index bedba5b9..7e1ccd81 100644
--- a/vendor/POCO/Crypto/testsuite/src/DigestEngineTest.cpp
+++ b/vendor/POCO/Crypto/testsuite/src/DigestEngineTest.cpp
@@ -47,7 +47,7 @@ void DigestEngineTest::testMD5()
 
 	engine.update("abcdefghijklmnopqrstuvwxyz");
 	assertTrue (DigestEngine::digestToHex(engine.digest()) == "c3fcd3d76192e4007dfb496cca67e13b");
-	
+
 	engine.update("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
 	engine.update("abcdefghijklmnopqrstuvwxyz0123456789");
 	assertTrue (DigestEngine::digestToHex(engine.digest()) == "d174ab98d277d9f5a5611c2c9f419d9f");
diff --git a/vendor/POCO/Crypto/testsuite/src/Driver.cpp b/vendor/POCO/Crypto/testsuite/src/Driver.cpp
index 5e1a899c..a4c76e97 100644
--- a/vendor/POCO/Crypto/testsuite/src/Driver.cpp
+++ b/vendor/POCO/Crypto/testsuite/src/Driver.cpp
@@ -13,6 +13,7 @@
 #include "CppUnit/TestRunner.h"
 #include "CryptoTestSuite.h"
 #include "Poco/Crypto/Crypto.h"
+#include "Poco/Exception.h"
 
 
 class CryptoInitializer
@@ -22,7 +23,7 @@ public:
 	{
 		Poco::Crypto::initializeCrypto();
 	}
-	
+
 	~CryptoInitializer()
 	{
 		Poco::Crypto::uninitializeCrypto();
@@ -33,11 +34,12 @@ public:
 int main(int ac, char **av)
 {
 	CryptoInitializer ci;
-	
+
 	std::vector args;
 	for (int i = 0; i < ac; ++i)
 		args.push_back(std::string(av[i]));
 	CppUnit::TestRunner runner;
 	runner.addTest("CryptoTestSuite", CryptoTestSuite::suite());
-	return runner.run(args) ? 0 : 1;
+	CppUnitPocoExceptionText (exc);
+	return runner.run(args, exc) ? 0 : 1;
 }
diff --git a/vendor/POCO/Crypto/testsuite/src/EVPTest.cpp b/vendor/POCO/Crypto/testsuite/src/EVPTest.cpp
index f5921b35..bebf963d 100644
--- a/vendor/POCO/Crypto/testsuite/src/EVPTest.cpp
+++ b/vendor/POCO/Crypto/testsuite/src/EVPTest.cpp
@@ -9,9 +9,13 @@
 
 
 #include "EVPTest.h"
+#include "PKCS12ContainerTest.h"
 #include "Poco/Crypto/RSAKey.h"
 #include "Poco/Crypto/ECKey.h"
 #include "Poco/Crypto/EVPPKey.h"
+#include "Poco/Crypto/CipherFactory.h"
+#include "Poco/Crypto/Cipher.h"
+#include "Poco/Crypto/X509Certificate.h"
 #include "Poco/TemporaryFile.h"
 #include "Poco/StreamCopier.h"
 #include "CppUnit/TestCaller.h"
@@ -28,6 +32,58 @@ using Poco::TemporaryFile;
 using Poco::StreamCopier;
 
 
+static const std::string anyPemRSA(
+	"-----BEGIN CERTIFICATE-----\r\n"
+	"MIICaDCCAdECCQCzfxSsk7yaLjANBgkqhkiG9w0BAQUFADBzMQswCQYDVQQGEwJB\r\n"
+	"VDESMBAGA1UECBMJQ2FyaW50aGlhMRIwEAYDVQQHEwlTdC4gSmFrb2IxDzANBgNV\r\n"
+	"BAoTBkFwcEluZjEPMA0GA1UEAxMGQXBwSW5mMRowGAYJKoZIhvcNAQkBFgthcHBA\r\n"
+	"aW5mLmNvbTAeFw0wNjAzMDExMzA3MzFaFw0wNjAzMzExMzA3MzFaMH4xCzAJBgNV\r\n"
+	"BAYTAkFUMRIwEAYDVQQIEwlDYXJpbnRoaWExETAPBgNVBAcTCFN0IEpha29iMRww\r\n"
+	"GgYDVQQKExNBcHBsaWVkIEluZm9ybWF0aWNzMQowCAYDVQQDFAEqMR4wHAYJKoZI\r\n"
+	"hvcNAQkBFg9pbmZvQGFwcGluZi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ\r\n"
+	"AoGBAJHGyXDHyCYoWz+65ltNwwZbhwOGnxr9P1WMATuFJh0bPBZxKbZRdbTm9KhZ\r\n"
+	"OlvsEIsfgiYdsxURYIqXfEgISYLZcZY0pQwGEOmB+0NeC/+ENSfOlNSthx6zSVlc\r\n"
+	"zhJ7+dJOGwepHAiLr1fRuc5jogYLraE+lKTnqAAFfzwvti77AgMBAAEwDQYJKoZI\r\n"
+	"hvcNAQEFBQADgYEAY/ZoeY1ukkEJX7259NeoVM0oahlulWV0rlCqyaeosOiDORPT\r\n"
+	"m6X1w/5MTCf9VyaD1zukoSZ4QqNVjHFXcXidbB7Tgt3yRuZ5PC5LIFCDPv9mgPne\r\n"
+	"mUA70yfctNfza2z3ZiQ6NDkW3mZX+1tmxYIrJQIrkVeYeqf1Gh2nyZrUMcE=\r\n"
+	"-----END CERTIFICATE-----\r\n"
+	"-----BEGIN RSA PRIVATE KEY-----\r\n"
+	"Proc-Type: 4,ENCRYPTED\r\n"
+	"DEK-Info: DES-EDE3-CBC,E7AE93C9E49184EA\r\n"
+	"\r\n"
+	"A2IqzNcWs+I5vzV+i+woDk56+yr58eU0Onw8eEvXkLjnSc58JU4327IF7yUbKWdW\r\n"
+	"Q7BYGGOkVFiZ7ANOwviDg5SUhxRDWCcW8dS6/p1vfdQ1C3qj2OwJjkpg0aDBIzJn\r\n"
+	"FzgguT3MF3ama77vxv0S3kOfmCj62MLqPGpj5pQ0/1hefRFbL8oAX8bXUN7/rmGM\r\n"
+	"Zc0QyzFZv2iQ04dY/6TNclwKPB4H0On4K+8BMs3PRkWA0clCaQaFO2+iwnk3XZfe\r\n"
+	"+MsKUEbLCpAQeYspYv1cw38dCdWq1KTP5aJk+oXgwjfX5cAaPTz74NTqTIsCcaTD\r\n"
+	"3vy7ukJYFlDR9Kyo7z8rMazYrKJslhnuRH0BhK9st9McwL957j5tZmrKyraCcmCx\r\n"
+	"dMAGcsis1va3ayYZpIpFqA4EhYrTM+6N8ZRfUap20+b5IQwHfTQDejUhL6rBwy7j\r\n"
+	"Ti5yD83/itoOMyXq2sV/XWfVD5zk/P5iv22O1EAQMhhnPB9K/I/JhuSGQJfn3cNh\r\n"
+	"ykOUYT0+vDeSeEVa+FVEP1W35G0alTbKbNs5Tb8KxJ3iDJUxokM//SvPXZy9hOVX\r\n"
+	"Y05imB04J15DaGbAHlNzunhuJi7121WV/JRXZRW9diE6hwpD8rwqi3FMuRUmy7U9\r\n"
+	"aFA5poKRAYlo9YtZ3YpFyjGKB6MfCQcB2opuSnQ/gbugV41m67uQ4CDwWLaNRkTb\r\n"
+	"GlsMBNcHnidg15Bsat5HaB7l250ukrI13Uw1MYdDUzaS3gPfw9aC4F2w0p3U+DPH\r\n"
+	"80/zePxtroR7T4/+rI136Rl+aMXDMOEGCX1TVP8rjuZzuRyUSUKC8Q==\r\n"
+	"-----END RSA PRIVATE KEY-----\r\n"
+	"-----BEGIN CERTIFICATE-----\r\n"
+	"MIICXTCCAcYCCQC1Vk/N8qR4AjANBgkqhkiG9w0BAQUFADBzMQswCQYDVQQGEwJB\r\n"
+	"VDESMBAGA1UECBMJQ2FyaW50aGlhMRIwEAYDVQQHEwlTdC4gSmFrb2IxDzANBgNV\r\n"
+	"BAoTBkFwcEluZjEPMA0GA1UEAxMGQXBwSW5mMRowGAYJKoZIhvcNAQkBFgthcHBA\r\n"
+	"aW5mLmNvbTAeFw0wNjAyMjcxMzI3MThaFw0wNjAzMjkxMzI3MThaMHMxCzAJBgNV\r\n"
+	"BAYTAkFUMRIwEAYDVQQIEwlDYXJpbnRoaWExEjAQBgNVBAcTCVN0LiBKYWtvYjEP\r\n"
+	"MA0GA1UEChMGQXBwSW5mMQ8wDQYDVQQDEwZBcHBJbmYxGjAYBgkqhkiG9w0BCQEW\r\n"
+	"C2FwcEBpbmYuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsFXiPuicN\r\n"
+	"Im4oJwF8NuaFN+lgYwcZ6dAO3ILIR3kLA2PxF8HSQLfF8J8a4odZhLhctIMAKTxm\r\n"
+	"k0w8TW5qhL8QLdGzY9vzvkgdKOkan2t3sMeXJAfrM1AphTsmgntAQazGZjOj5p4W\r\n"
+	"jDnxQ+VXAylqwjHh49eSBxM3wgoscF4iLQIDAQABMA0GCSqGSIb3DQEBBQUAA4GB\r\n"
+	"AIpfLdXiKchPvFMhQS8xTtXvrw5dVL3yImUMYs4GQi8RrjGmfGB3yMAR7B/b8v4a\r\n"
+	"+ztfusgWAWiUKuSGTk4S8YB0fsFlmOv0WDr+PyZ4Lui/a8opbyzGE7rqpnF/s0GO\r\n"
+	"M7uLCNNwIN7WhmxcWV0KZU1wTppoSWPJda1yTbBzF9XP\r\n"
+	"-----END CERTIFICATE-----\r\n"
+);
+
+
 EVPTest::EVPTest(const std::string& name): CppUnit::TestCase(name)
 {
 }
@@ -512,6 +568,124 @@ void EVPTest::testECEVPSaveLoadFileNoPass()
 }
 
 
+void EVPTest::testRSAEVPKeyFromX509()
+{
+	std::istringstream str(anyPemRSA);
+	X509Certificate cert(str);
+	EVPPKey publicKey(cert);
+	std::istringstream str2(anyPemRSA);
+	EVPPKey privateKey(0, &str2, "test");
+	Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(publicKey);
+	Cipher::Ptr pCipher2 = CipherFactory::defaultFactory().createCipher(privateKey);
+	std::string val("lets do some encryption");
+	std::string enc = pCipher->encryptString(val);
+	std::string dec = pCipher2->decryptString(enc);
+	assertTrue (dec == val);
+}
+
+
+void EVPTest::testRSAEVPKeyFromPKCS12()
+{
+	std::string file = PKCS12ContainerTest::getTestFilesPath("full");
+	PKCS12Container pkcs12(file.c_str(), "crypto");
+	assertTrue (pkcs12.hasKey());
+	EVPPKey pKey(pkcs12);
+	assertTrue (EVP_PKEY_RSA == pKey.type());
+	Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(pKey);
+	Cipher::Ptr pCipher2 = CipherFactory::defaultFactory().createCipher(pKey);
+	std::string val("lets do some encryption");
+	std::string enc = pCipher->encryptString(val);
+	std::string dec = pCipher2->decryptString(enc);
+	assertTrue (dec == val);
+}
+
+
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
+
+void EVPTest::testRSAEVPKeyByLength()
+{
+	try
+	{
+		EVPPKey key(EVP_PKEY_RSA, 1024);
+		std::ostringstream strPub;
+		std::ostringstream strPriv;
+		key.save(&strPub, &strPriv);
+		std::string pubKey = strPub.str();
+		std::string privKey = strPriv.str();
+
+		// now do the round trip
+		std::istringstream iPub(pubKey);
+		std::istringstream iPriv(privKey);
+		EVPPKey key2(&iPub, &iPriv);
+
+		assertTrue (key == key2);
+		assertTrue (!(key != key2));
+
+		EVPPKey keyNE(EVP_PKEY_RSA, 2048);
+		assertTrue (key != keyNE);
+		assertTrue (!(key == keyNE));
+		assertTrue (key2 != keyNE);;
+		assertTrue (!(key2 == keyNE));
+
+		std::istringstream iPriv2(privKey);
+		EVPPKey key3(0, &iPriv2);
+		std::ostringstream strPub3;
+		key3.save(&strPub3);
+		std::string pubFromPrivate = strPub3.str();
+		assertTrue (pubFromPrivate == pubKey);
+	}
+	catch(Poco::Exception& ex)
+	{
+		std::cerr << ex.displayText() << std::endl;
+		throw;
+	}
+}
+
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+
+void EVPTest::testECEVPKeyByLength()
+{
+	try
+	{
+		EVPPKey key(EVP_PKEY_EC, NID_X9_62_prime256v1);
+		std::ostringstream strPub;
+		std::ostringstream strPriv;
+		key.save(&strPub, &strPriv);
+		std::string pubKey = strPub.str();
+		std::string privKey = strPriv.str();
+
+		// now do the round trip
+		std::istringstream iPub(pubKey);
+		std::istringstream iPriv(privKey);
+		EVPPKey key2(&iPub, &iPriv);
+
+		assertTrue (key == key2);
+		assertTrue (!(key != key2));
+
+		EVPPKey keyNE(EVP_PKEY_EC, NID_X9_62_prime256v1);
+		assertTrue (key != keyNE);
+		assertTrue (!(key == keyNE));
+		assertTrue (key2 != keyNE);;
+		assertTrue (!(key2 == keyNE));
+
+		std::istringstream iPriv2(privKey);
+		EVPPKey key3(0, &iPriv2);
+		std::ostringstream strPub3;
+		key3.save(&strPub3);
+		std::string pubFromPrivate = strPub3.str();
+		assertTrue (pubFromPrivate == pubKey);
+	}
+	catch(Poco::Exception& ex)
+	{
+		std::cerr << ex.displayText() << std::endl;
+		throw;
+	}
+}
+
+#endif // OPENSSL_VERSION_NUMBER >= 0x30000000
+#endif // OPENSSL_VERSION_NUMBER >= 0x10000000L
+
+
 void EVPTest::setUp()
 {
 }
@@ -534,6 +708,14 @@ CppUnit::Test* EVPTest::suite()
 	CppUnit_addTest(pSuite, EVPTest, testECEVPSaveLoadStreamNoPass);
 	CppUnit_addTest(pSuite, EVPTest, testECEVPSaveLoadFile);
 	CppUnit_addTest(pSuite, EVPTest, testECEVPSaveLoadFileNoPass);
+	CppUnit_addTest(pSuite, EVPTest, testRSAEVPKeyFromX509);
+	CppUnit_addTest(pSuite, EVPTest, testRSAEVPKeyFromPKCS12);
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
+	CppUnit_addTest(pSuite, EVPTest, testRSAEVPKeyByLength);
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+	CppUnit_addTest(pSuite, EVPTest, testECEVPKeyByLength);
+#endif // OPENSSL_VERSION_NUMBER >= 0x30000000
+#endif // OPENSSL_VERSION_NUMBER >= 0x10000000L
 
 	return pSuite;
 }
diff --git a/vendor/POCO/Crypto/testsuite/src/EVPTest.h b/vendor/POCO/Crypto/testsuite/src/EVPTest.h
index 9e0a49fe..3cd086dd 100644
--- a/vendor/POCO/Crypto/testsuite/src/EVPTest.h
+++ b/vendor/POCO/Crypto/testsuite/src/EVPTest.h
@@ -34,6 +34,16 @@ public:
 	void testECEVPSaveLoadFile();
 	void testECEVPSaveLoadFileNoPass();
 
+	void testRSAEVPKeyFromX509();
+	void testRSAEVPKeyFromPKCS12();
+
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
+	void testRSAEVPKeyByLength();
+#if OPENSSL_VERSION_NUMBER >= 0x30000000L
+	void testECEVPKeyByLength();
+#endif // OPENSSL_VERSION_NUMBER >= 0x30000000L
+#endif // OPENSSL_VERSION_NUMBER >= 0x10000000L
+
 	void setUp();
 	void tearDown();
 
diff --git a/vendor/POCO/Crypto/testsuite/src/EnvelopeTest.cpp b/vendor/POCO/Crypto/testsuite/src/EnvelopeTest.cpp
new file mode 100644
index 00000000..d377b9d1
--- /dev/null
+++ b/vendor/POCO/Crypto/testsuite/src/EnvelopeTest.cpp
@@ -0,0 +1,147 @@
+//
+// EnvelopeTest.cpp
+//
+// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier:	BSL-1.0
+//
+
+
+#include "EnvelopeTest.h"
+#include "CppUnit/TestCaller.h"
+#include "CppUnit/TestSuite.h"
+#include "Poco/Crypto/Envelope.h"
+#include "Poco/Crypto/EVPPKey.h"
+#include 
+
+
+using Poco::Crypto::Envelope;
+using Poco::Crypto::EVPPKey;
+
+
+EnvelopeTest::EnvelopeTest(const std::string& name): CppUnit::TestCase(name)
+{
+}
+
+
+EnvelopeTest::~EnvelopeTest()
+{
+}
+
+
+void EnvelopeTest::testOneKeyRSA()
+{
+	try
+	{
+		EVPPKey key(EVP_PKEY_RSA, 1024);
+		Envelope env(key, NID_aes_256_cbc);
+		assertEqual(env.cipherNID(), NID_aes_256_cbc);
+		std::string dec = "let's encrypt some text";
+		env.seal(dec);
+		assertTrue(env.openAsString(key, env.keys()[0]) == dec);
+	}
+	catch(const Poco::Exception& e)
+	{
+		std::cerr << e.displayText() << '\n';
+		throw;
+	}
+}
+
+
+void EnvelopeTest::testMultiKeyRSA()
+{
+	try
+	{
+		Envelope::EVPPKeyVec keyVec;
+		keyVec.emplace_back(EVP_PKEY_RSA, 1024);
+		keyVec.emplace_back(EVP_PKEY_RSA, 2048);
+		keyVec.emplace_back(EVP_PKEY_RSA, 1024);
+		Envelope env(keyVec, NID_aes_256_cbc);
+		assertEqual(env.cipherNID(), NID_aes_256_cbc);
+		std::string dec = "let's encrypt some text";
+		env.seal(dec);
+		int i = 0;
+		for (const auto& key : keyVec)
+		{
+			assertTrue(env.openAsString(key, env.keys()[i++]) == dec);
+		}
+	}
+	catch(const Poco::Exception& e)
+	{
+		std::cerr << e.displayText() << '\n';
+		throw;
+	}
+}
+
+
+void EnvelopeTest::testRSATransfer()
+{
+	try
+	{
+		EVPPKey key(EVP_PKEY_RSA, 1024);
+		Envelope env1(key, NID_aes_256_cbc);
+		std::string dec = "let's encrypt some text";
+
+		Envelope env2(key, NID_aes_256_cbc);
+		env2.setContent(env1.seal(dec));
+		assertTrue(env2.openAsString(key, env1.keys()[0], env1.iv()) == dec);
+	}
+	catch(const Poco::Exception& e)
+	{
+		std::cerr << e.displayText() << '\n';
+		throw;
+	}
+}
+
+
+void EnvelopeTest::testRSAMultiTransfer()
+{
+	try
+	{
+		Envelope::EVPPKeyVec keyVec;
+		keyVec.emplace_back(EVP_PKEY_RSA, 1024);
+		keyVec.emplace_back(EVP_PKEY_RSA, 2048);
+		keyVec.emplace_back(EVP_PKEY_RSA, 1024);
+
+		Envelope env0(keyVec, NID_aes_256_cbc);
+		std::string dec = "let's encrypt some text";
+
+		const Envelope::ByteVec enc = env0.seal(dec);
+
+		int i = 0;
+		for (const auto& key : keyVec)
+		{
+			Envelope env(key, NID_aes_256_cbc);
+			env.setContent(enc);
+			assertTrue(env.openAsString(key, env0.keys()[i++], env0.iv()) == dec);
+		}
+	}
+	catch(const Poco::Exception& e)
+	{
+		std::cerr << e.displayText() << '\n';
+		throw;
+	}
+}
+
+void EnvelopeTest::setUp()
+{
+}
+
+
+void EnvelopeTest::tearDown()
+{
+}
+
+
+CppUnit::Test* EnvelopeTest::suite()
+{
+	CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("EnvelopeTest");
+
+	CppUnit_addTest(pSuite, EnvelopeTest, testOneKeyRSA);
+	CppUnit_addTest(pSuite, EnvelopeTest, testMultiKeyRSA);
+	CppUnit_addTest(pSuite, EnvelopeTest, testRSATransfer);
+	CppUnit_addTest(pSuite, EnvelopeTest, testRSAMultiTransfer);
+
+	return pSuite;
+}
diff --git a/vendor/POCO/Crypto/testsuite/src/EnvelopeTest.h b/vendor/POCO/Crypto/testsuite/src/EnvelopeTest.h
new file mode 100644
index 00000000..6f16db50
--- /dev/null
+++ b/vendor/POCO/Crypto/testsuite/src/EnvelopeTest.h
@@ -0,0 +1,41 @@
+//
+// EnvelopeTest.h
+//
+// Definition of the EnvelopeTest class.
+//
+// Copyright (c) 2012, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier:	BSL-1.0
+//
+
+
+#ifndef EnvelopeTest_INCLUDED
+#define EnvelopeTest_INCLUDED
+
+
+#include "Poco/Crypto/Crypto.h"
+#include "CppUnit/TestCase.h"
+
+
+class EnvelopeTest: public CppUnit::TestCase
+{
+public:
+	EnvelopeTest(const std::string& name);
+	~EnvelopeTest();
+
+	void testOneKeyRSA();
+	void testMultiKeyRSA();
+	void testRSATransfer();
+	void testRSAMultiTransfer();
+
+	void setUp();
+	void tearDown();
+
+	static CppUnit::Test* suite();
+
+private:
+};
+
+
+#endif // EnvelopeTest_INCLUDED
diff --git a/vendor/POCO/Crypto/testsuite/src/PKCS12ContainerTest.cpp b/vendor/POCO/Crypto/testsuite/src/PKCS12ContainerTest.cpp
index c8d7a3e2..78cba18b 100644
--- a/vendor/POCO/Crypto/testsuite/src/PKCS12ContainerTest.cpp
+++ b/vendor/POCO/Crypto/testsuite/src/PKCS12ContainerTest.cpp
@@ -134,29 +134,29 @@ void PKCS12ContainerTest::fullList(const PKCS12Container::CAList& caList,
 		assertTrue (caNamesList[certOrder[1]].empty());
 	}
 
-	assertTrue (caList[certOrder[0]].subjectName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
+	assertTrue (caList[certOrder[0]].subjectName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Intermediate CA v3");
 	assertTrue (caList[certOrder[0]].issuerName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
-	assertTrue (caList[certOrder[0]].commonName() == "CV Root CA v3");
+	assertTrue (caList[certOrder[0]].commonName() == "CV Intermediate CA v3");
 	assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_COUNTRY) == "CH");
 	assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_LOCALITY_NAME).empty());
 	assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE) == "Zug");
 	assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Crypto Vally");
 	assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_ORGANIZATION_UNIT_NAME).empty());
 	assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_PKCS9_EMAIL_ADDRESS).empty());
-	assertTrue (caList[certOrder[0]].serialNumber() == "C3ECA1FCEAA16055");
+	assertTrue (caList[certOrder[0]].serialNumber() == "1000");
 	assertTrue (caList[certOrder[0]].version() == 3);
 	assertTrue (caList[certOrder[0]].signatureAlgorithm() == "sha256WithRSAEncryption");
 
-	assertTrue (caList[certOrder[1]].subjectName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Intermediate CA v3");
+	assertTrue (caList[certOrder[1]].subjectName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
 	assertTrue (caList[certOrder[1]].issuerName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
-	assertTrue (caList[certOrder[1]].commonName() == "CV Intermediate CA v3");
+	assertTrue (caList[certOrder[1]].commonName() == "CV Root CA v3");
 	assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_COUNTRY) == "CH");
 	assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_LOCALITY_NAME).empty());
 	assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE) == "Zug");
 	assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Crypto Vally");
 	assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_ORGANIZATION_UNIT_NAME).empty());
 	assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_PKCS9_EMAIL_ADDRESS).empty());
-	assertTrue (caList[certOrder[1]].serialNumber() == "1000");
+	assertTrue (caList[certOrder[1]].serialNumber() == "C3ECA1FCEAA16055");
 	assertTrue (caList[certOrder[1]].version() == 3);
 	assertTrue (caList[certOrder[1]].signatureAlgorithm() == "sha256WithRSAEncryption");
 }
@@ -200,36 +200,36 @@ void PKCS12ContainerTest::certsOnlyList(const PKCS12Container::CAList& caList,
 
 	if (caNamesList.size())
 	{
-		assertTrue (caNamesList[certOrder[0]].empty());
-		assertTrue (caNamesList[certOrder[1]].empty());
+		assertTrue (caNamesList[certOrder[0]] == "vally-ca");
+		assertTrue (caNamesList[certOrder[1]] == "vally-ca");
 		assertTrue (caNamesList[certOrder[2]].empty());
-		assertTrue (caNamesList[certOrder[3]] == "vally-ca");
-		assertTrue (caNamesList[certOrder[4]] == "vally-ca");
+		assertTrue (caNamesList[certOrder[3]].empty());
+		assertTrue (caNamesList[certOrder[4]].empty());
 	}
 
-	assertTrue (caList[certOrder[0]].subjectName() == "C=US,O=Let's Encrypt,CN=Let's Encrypt Authority X3");
-	assertTrue (caList[certOrder[0]].issuerName() == "C=US,O=Internet Security Research Group,CN=ISRG Root X1");
-	assertTrue (caList[certOrder[0]].commonName() == "Let's Encrypt Authority X3");
-	assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_COUNTRY) == "US");
+	assertTrue (caList[certOrder[0]].subjectName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Intermediate CA v3");
+	assertTrue (caList[certOrder[0]].issuerName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
+	assertTrue (caList[certOrder[0]].commonName() == "CV Intermediate CA v3");
+	assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_COUNTRY) == "CH");
 	assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_LOCALITY_NAME).empty());
-	assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE).empty());
-	assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Let's Encrypt");
+	assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE) == "Zug");
+	assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Crypto Vally");
 	assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_ORGANIZATION_UNIT_NAME).empty());
 	assertTrue (caList[certOrder[0]].subjectName(X509Certificate::NID_PKCS9_EMAIL_ADDRESS).empty());
-	assertTrue (caList[certOrder[0]].serialNumber() == "D3B17226342332DCF40528512AEC9C6A");
+	assertTrue (caList[certOrder[0]].serialNumber()== "1000");
 	assertTrue (caList[certOrder[0]].version() == 3);
 	assertTrue (caList[certOrder[0]].signatureAlgorithm() == "sha256WithRSAEncryption");
 
-	assertTrue (caList[certOrder[1]].subjectName() == "C=US,O=Let's Encrypt,CN=Let's Encrypt Authority X3");
-	assertTrue (caList[certOrder[1]].issuerName() == "O=Digital Signature Trust Co.,CN=DST Root CA X3");
-	assertTrue (caList[certOrder[1]].commonName() == "Let's Encrypt Authority X3");
-	assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_COUNTRY) == "US");
+	assertTrue (caList[certOrder[1]].subjectName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
+	assertTrue (caList[certOrder[1]].issuerName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
+	assertTrue (caList[certOrder[1]].commonName() == "CV Root CA v3");
+	assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_COUNTRY) == "CH");
 	assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_LOCALITY_NAME).empty());
-	assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE).empty());
-	assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Let's Encrypt");
+	assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE) == "Zug");
+	assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Crypto Vally");
 	assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_ORGANIZATION_UNIT_NAME).empty());
 	assertTrue (caList[certOrder[1]].subjectName(X509Certificate::NID_PKCS9_EMAIL_ADDRESS).empty());
-	assertTrue (caList[certOrder[1]].serialNumber() == "0A0141420000015385736A0B85ECA708");
+	assertTrue (caList[certOrder[1]].serialNumber() == "C3ECA1FCEAA16055");
 	assertTrue (caList[certOrder[1]].version() == 3);
 	assertTrue (caList[certOrder[1]].signatureAlgorithm() == "sha256WithRSAEncryption");
 
@@ -246,31 +246,32 @@ void PKCS12ContainerTest::certsOnlyList(const PKCS12Container::CAList& caList,
 	assertTrue (caList[certOrder[2]].version() == 3);
 	assertTrue (caList[certOrder[2]].signatureAlgorithm() == "sha256WithRSAEncryption");
 
-	assertTrue (caList[certOrder[3]].subjectName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
-	assertTrue (caList[certOrder[3]].issuerName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
-	assertTrue (caList[certOrder[3]].commonName() == "CV Root CA v3");
-	assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_COUNTRY) == "CH");
+	assertTrue (caList[certOrder[3]].subjectName() == "C=US,O=Let's Encrypt,CN=Let's Encrypt Authority X3");
+	assertTrue (caList[certOrder[3]].issuerName() == "O=Digital Signature Trust Co.,CN=DST Root CA X3");
+	assertTrue (caList[certOrder[3]].commonName() == "Let's Encrypt Authority X3");
+	assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_COUNTRY) == "US");
 	assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_LOCALITY_NAME).empty());
-	assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE) == "Zug");
-	assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Crypto Vally");
+	assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE).empty());
+	assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Let's Encrypt");
 	assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_ORGANIZATION_UNIT_NAME).empty());
 	assertTrue (caList[certOrder[3]].subjectName(X509Certificate::NID_PKCS9_EMAIL_ADDRESS).empty());
-	assertTrue (caList[certOrder[3]].serialNumber() == "C3ECA1FCEAA16055");
+	assertTrue (caList[certOrder[3]].serialNumber() == "0A0141420000015385736A0B85ECA708");
 	assertTrue (caList[certOrder[3]].version() == 3);
 	assertTrue (caList[certOrder[3]].signatureAlgorithm() == "sha256WithRSAEncryption");
 
-	assertTrue (caList[certOrder[4]].subjectName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Intermediate CA v3");
-	assertTrue (caList[certOrder[4]].issuerName() == "C=CH,ST=Zug,O=Crypto Vally,CN=CV Root CA v3");
-	assertTrue (caList[certOrder[4]].commonName() == "CV Intermediate CA v3");
-	assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_COUNTRY) == "CH");
+	assertTrue (caList[certOrder[4]].subjectName() == "C=US,O=Let's Encrypt,CN=Let's Encrypt Authority X3");
+	assertTrue (caList[certOrder[4]].issuerName() == "C=US,O=Internet Security Research Group,CN=ISRG Root X1");
+	assertTrue (caList[certOrder[4]].commonName() == "Let's Encrypt Authority X3");
+	assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_COUNTRY) == "US");
 	assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_LOCALITY_NAME).empty());
-	assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE) == "Zug");
-	assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Crypto Vally");
+	assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_STATE_OR_PROVINCE).empty());
+	assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_ORGANIZATION_NAME) == "Let's Encrypt");
 	assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_ORGANIZATION_UNIT_NAME).empty());
 	assertTrue (caList[certOrder[4]].subjectName(X509Certificate::NID_PKCS9_EMAIL_ADDRESS).empty());
-	assertTrue (caList[certOrder[4]].serialNumber()== "1000");
+	assertTrue (caList[certOrder[4]].serialNumber() == "D3B17226342332DCF40528512AEC9C6A");
 	assertTrue (caList[certOrder[4]].version() == 3);
 	assertTrue (caList[certOrder[4]].signatureAlgorithm() == "sha256WithRSAEncryption");
+
 }
 
 
@@ -281,9 +282,8 @@ void PKCS12ContainerTest::testPEMReadWrite()
 		std::string file = getTestFilesPath("certs-only", "pem");
 		X509Certificate::List certsOnly = X509Certificate::readPEM(file);
 		assertTrue (certsOnly.size() == 5);
-		// PEM is written by openssl in reverse order from p12
 		std::vector certOrder;
-		for(int i = (int)certsOnly.size() - 1; i >= 0; --i) certOrder.push_back(i);
+		for(int i = 0; i < certsOnly.size(); ++i) certOrder.push_back(i);
 		certsOnlyList(certsOnly, PKCS12Container::CANameList(), certOrder);
 
 		TemporaryFile tmpFile;
@@ -301,7 +301,7 @@ void PKCS12ContainerTest::testPEMReadWrite()
 		assertTrue (full.size() == 2);
 
 		certOrder.clear();
-		for(int i = (int)full.size() - 1; i >= 0; --i) certOrder.push_back(i);
+		for(int i = 0; i < full.size(); ++i) certOrder.push_back(i);
 		fullList(full, PKCS12Container::CANameList(), certOrder);
 
 		TemporaryFile tmpFile2;
diff --git a/vendor/POCO/Crypto/testsuite/src/PKCS12ContainerTest.h b/vendor/POCO/Crypto/testsuite/src/PKCS12ContainerTest.h
index fdb85066..9f4c2f70 100644
--- a/vendor/POCO/Crypto/testsuite/src/PKCS12ContainerTest.h
+++ b/vendor/POCO/Crypto/testsuite/src/PKCS12ContainerTest.h
@@ -35,9 +35,10 @@ public:
 
 	static CppUnit::Test* suite();
 
-private:
-	std::string getTestFilesPath(const std::string& name,
+	static std::string getTestFilesPath(const std::string& name,
 		const std::string& ext = "p12");
+
+private:
 	void certsOnly(const Poco::Crypto::PKCS12Container& pkcs12);
 	void certsOnlyList(const Poco::Crypto::PKCS12Container::CAList& caList,
 		const Poco::Crypto::PKCS12Container::CANameList& caNamesList,
diff --git a/vendor/POCO/Crypto/testsuite/src/RSATest.cpp b/vendor/POCO/Crypto/testsuite/src/RSATest.cpp
index 5ea1eda8..e5a978cf 100644
--- a/vendor/POCO/Crypto/testsuite/src/RSATest.cpp
+++ b/vendor/POCO/Crypto/testsuite/src/RSATest.cpp
@@ -15,7 +15,10 @@
 #include "Poco/Crypto/CipherFactory.h"
 #include "Poco/Crypto/Cipher.h"
 #include "Poco/Crypto/X509Certificate.h"
+#include "Poco/Path.h"
+#include "Poco/File.h"
 #include 
+#include 
 
 
 using namespace Poco::Crypto;
@@ -203,6 +206,33 @@ void RSATest::testRSACipher()
 		std::string dec = pCipher->decryptString(enc);
 		assertTrue (dec == val);
 	}
+
+	RSAKey key(RSAKey::KL_1024, RSAKey::EXP_SMALL);
+	std::string pubKeyFile = Poco::Path::temp() + "poco.key.pub";
+	std::string privKeyFile = Poco::Path::temp() + "poco.key.priv";
+
+	if (Poco::File(pubKeyFile).exists()) Poco::File(pubKeyFile).remove();
+	if (Poco::File(privKeyFile).exists()) Poco::File(privKeyFile).remove();
+	std::ofstream strPub(pubKeyFile);
+	std::ofstream strPriv(privKeyFile);
+	key.save(&strPub, &strPriv);
+	strPub.close();
+	strPriv.close();
+
+    Poco::Crypto::RSAKey encryptKey(pubKeyFile);
+	Poco::Crypto::RSAKey decryptKey(pubKeyFile, privKeyFile);
+
+    Poco::Crypto::CipherFactory factory;
+    auto iengine = factory.createCipher(encryptKey);
+    auto oengine = factory.createCipher(decryptKey);
+
+    std::string ss = "test_str";
+    auto enc = iengine->encryptString(ss);
+    auto dec = oengine->decryptString(enc);
+    assertEqual (ss, dec);
+
+	delete iengine;
+	delete oengine;
 }
 
 
@@ -221,7 +251,7 @@ void RSATest::testRSACipherLarge()
 	sizes.push_back (16383);
 	sizes.push_back (16384);
 	sizes.push_back (16385);
-	
+
 	Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(RSAKey(RSAKey::KL_1024, RSAKey::EXP_SMALL));
 	for (std::vector::const_iterator it = sizes.begin(); it != sizes.end(); ++it)
 	{
@@ -243,7 +273,7 @@ void RSATest::testCertificate()
 	Cipher::Ptr pCipher = CipherFactory::defaultFactory().createCipher(publicKey);
 	Cipher::Ptr pCipher2 = CipherFactory::defaultFactory().createCipher(privateKey);
 	std::string val("lets do some encryption");
-	
+
 	std::string enc = pCipher->encryptString(val);
 	std::string dec = pCipher2->decryptString(enc);
 	assertTrue (dec == val);
diff --git a/vendor/POCO/Crypto/testsuite/src/WinCEDriver.cpp b/vendor/POCO/Crypto/testsuite/src/WinCEDriver.cpp
index 9bbd0b29..6f0530a7 100644
--- a/vendor/POCO/Crypto/testsuite/src/WinCEDriver.cpp
+++ b/vendor/POCO/Crypto/testsuite/src/WinCEDriver.cpp
@@ -23,7 +23,7 @@ public:
 	{
 		Poco::Crypto::initializeCrypto();
 	}
-	
+
 	~CryptoInitializer()
 	{
 		Poco::Crypto::uninitializeCrypto();
@@ -42,7 +42,7 @@ int _tmain(int argc, wchar_t* argv[])
 		std::wcstombs(buffer, argv[i], sizeof(buffer));
 		args.push_back(std::string(buffer));
 	}
-	CppUnit::TestRunner runner;	
+	CppUnit::TestRunner runner;
 	runner.addTest("CryptoTestSuite", CryptoTestSuite::suite());
 	return runner.run(args) ? 0 : 1;
 }
diff --git a/vendor/POCO/Crypto/testsuite/src/WinDriver.cpp b/vendor/POCO/Crypto/testsuite/src/WinDriver.cpp
index d7f26bba..90d085fd 100644
--- a/vendor/POCO/Crypto/testsuite/src/WinDriver.cpp
+++ b/vendor/POCO/Crypto/testsuite/src/WinDriver.cpp
@@ -22,7 +22,7 @@ public:
 	{
 		Poco::Crypto::initializeCrypto();
 	}
-	
+
 	~CryptoInitializer()
 	{
 		Poco::Crypto::uninitializeCrypto();
diff --git a/vendor/POCO/Data/CMakeLists.txt b/vendor/POCO/Data/CMakeLists.txt
index 30c39024..0772af64 100644
--- a/vendor/POCO/Data/CMakeLists.txt
+++ b/vendor/POCO/Data/CMakeLists.txt
@@ -30,7 +30,7 @@ target_link_libraries(Data PUBLIC Poco::Foundation)
 target_include_directories(Data
 	PUBLIC
 		$
-		$
+		$
 	PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
 )
 
@@ -45,7 +45,7 @@ else(ENABLE_DATA_SQLITE)
 	message(STATUS "SQLite Support Disabled")
 endif()
 
-if((ENABLE_BUILTIN_MYSQL_C OR MYSQL_FOUND) AND ENABLE_DATA_MYSQL)
+if(MYSQL_FOUND AND ENABLE_DATA_MYSQL)
 	message(STATUS "MySQL Support Enabled")
 	add_subdirectory(MySQL)
 else()
diff --git a/vendor/POCO/Data/Data_VS90.vcproj b/vendor/POCO/Data/Data_VS90.vcproj
index 2955c991..bdd6f6e7 100644
--- a/vendor/POCO/Data/Data_VS90.vcproj
+++ b/vendor/POCO/Data/Data_VS90.vcproj
@@ -583,6 +583,10 @@
 					RelativePath=".\include\Poco\Data\Extraction.h"
 					>
 				
+				
+				
 				
@@ -667,6 +671,10 @@
 					RelativePath=".\include\Poco\Data\Transaction.h"
 					>
 				
+				
+				
 				
@@ -719,6 +727,10 @@
 					RelativePath=".\src\DynamicLOB.cpp"
 					>
 				
+				
+				
 				
@@ -791,6 +803,10 @@
 					RelativePath=".\src\Transaction.cpp"
 					>
 				
+				
+				
 			
 		
 		
-
+
   
     
       debug_shared
@@ -157,7 +157,7 @@
   
   
   
-    <_ProjectFileVersion>14.0.25420.1
+    <_ProjectFileVersion>16.0.32002.118
     PocoDatad
     PocoDatamdd
     PocoDatamtd
@@ -595,6 +595,7 @@
     
     
     
+    
     
   
   
@@ -703,6 +704,9 @@
     
       true
     
+    
+      true
+    
   
   
     
diff --git a/vendor/POCO/Data/Data_vs140.vcxproj.filters b/vendor/POCO/Data/Data_vs140.vcxproj.filters
index 80c32082..728781f8 100644
--- a/vendor/POCO/Data/Data_vs140.vcxproj.filters
+++ b/vendor/POCO/Data/Data_vs140.vcxproj.filters
@@ -2,31 +2,31 @@
 
   
     
-      {4630cfec-6a3b-45dd-9d9e-0fd2052abb2d}
+      {a918a581-0b94-4c8e-9fb9-958a05520fb3}
     
     
-      {48fbd0eb-1cb1-4f72-8fff-4ae28eb87945}
+      {35b035eb-d96e-4f12-ac40-fdfcffbfa511}
     
     
-      {e4421ebf-77eb-439f-9377-260010e240a3}
+      {cbe6bea8-a94c-4022-8e34-ade5cf268bda}
     
     
-      {d68a747a-68d9-4d71-8b63-96e0a839ce19}
+      {10e6a489-5fac-49d4-8ee0-73555f49d15c}
     
     
-      {20822f2a-f72a-4717-8315-788b6ea4a799}
+      {c86ed4bd-93ce-466a-932c-1baf6d70fc6b}
     
     
-      {12285d08-05f2-4daf-8b48-7fe113c43626}
+      {749d2b0b-1512-4ce0-81f9-f94fc4d77c1c}
     
     
-      {6f51ecaf-0e63-4626-b373-9b9a635f32a3}
+      {3358309f-c181-457a-a176-572c9c29e54e}
     
     
-      {62eedc44-364a-408f-918e-dd2fb360f554}
+      {170fbdcf-8f02-4198-b22b-812d62cae3a0}
     
     
-      {4252b3e7-3a2f-4690-b64d-56cbf0a07396}
+      {8f4b30b1-f7dc-451e-b618-23b2587336aa}
     
   
   
@@ -156,6 +156,9 @@
     
       DataCore\Header Files
     
+    
+      DataCore\Header Files
+    
     
       DataCore\Header Files
     
@@ -266,6 +269,9 @@
     
       DataCore\Source Files
     
+    
+      DataCore\Source Files
+    
     
       SessionPooling\Source Files
     
diff --git a/vendor/POCO/Data/Data_vs150.vcxproj b/vendor/POCO/Data/Data_vs150.vcxproj
index c64a40fe..ac6e5ea8 100644
--- a/vendor/POCO/Data/Data_vs150.vcxproj
+++ b/vendor/POCO/Data/Data_vs150.vcxproj
@@ -157,7 +157,7 @@
   
   
   
-    <_ProjectFileVersion>15.0.28307.799
+    <_ProjectFileVersion>16.0.32002.118
     PocoDatad
     PocoDatamdd
     PocoDatamtd
@@ -595,6 +595,7 @@
     
     
     
+    
     
   
   
@@ -703,6 +704,9 @@
     
       true
     
+    
+      true
+    
   
   
     
diff --git a/vendor/POCO/Data/Data_vs150.vcxproj.filters b/vendor/POCO/Data/Data_vs150.vcxproj.filters
index ae6fa443..59b0865a 100644
--- a/vendor/POCO/Data/Data_vs150.vcxproj.filters
+++ b/vendor/POCO/Data/Data_vs150.vcxproj.filters
@@ -2,31 +2,31 @@
 
   
     
-      {793d98db-e0fa-4880-9db4-b0a7c9f88c68}
+      {7b0fd170-a5ff-470c-a6f2-36ab15c21f11}
     
     
-      {3d8ad51d-10e6-4f08-8410-ea40913bebba}
+      {1dac28cd-cf73-421b-924b-06f576cda9fb}
     
     
-      {4ea7edd0-e04b-4f1e-896b-5081d9b342b5}
+      {6db26f6f-4cc3-44ce-b0f6-b1bebab18fa5}
     
     
-      {cfd4b786-dcdc-423b-b5d4-c73039b20eed}
+      {bf2ebeda-2feb-4e6b-9e99-17e58078fdef}
     
     
-      {ff57a93a-487b-4129-bbef-67cdd568b2b8}
+      {92b1ea48-8b24-4e4a-aed4-a5cc247b6f4f}
     
     
-      {320cddef-7436-4a3c-b669-e831bb16315c}
+      {8c266092-f761-4a17-abe2-5c211f46273f}
     
     
-      {1ec35c1f-bc55-4077-b093-41ec1be8096a}
+      {2b1ba35d-2ae9-428b-967b-2b80ec813c16}
     
     
-      {3603e43e-380c-4622-b020-cf3910cb56d3}
+      {ee5a2056-14b3-4c70-a2e4-28cf7a1d8da8}
     
     
-      {0edc5cb3-3735-441b-a71c-eab1a3c6f02f}
+      {e36e4188-9ff6-468c-ac65-55ef1d5a4988}
     
   
   
@@ -156,6 +156,9 @@
     
       DataCore\Header Files
     
+    
+      DataCore\Header Files
+    
     
       DataCore\Header Files
     
@@ -266,6 +269,9 @@
     
       DataCore\Source Files
     
+    
+      DataCore\Source Files
+    
     
       SessionPooling\Source Files
     
diff --git a/vendor/POCO/Data/Data_vs160.vcxproj b/vendor/POCO/Data/Data_vs160.vcxproj
index 2054796c..82955760 100644
--- a/vendor/POCO/Data/Data_vs160.vcxproj
+++ b/vendor/POCO/Data/Data_vs160.vcxproj
@@ -157,7 +157,7 @@
   
   
   
-    <_ProjectFileVersion>15.0.28307.799
+    <_ProjectFileVersion>16.0.32002.118
     PocoDatad
     PocoDatamdd
     PocoDatamtd
@@ -569,6 +569,7 @@
     
     
     
+    
     
     
     
@@ -595,6 +596,7 @@
     
     
     
+    
     
   
   
@@ -634,6 +636,9 @@
     
       true
     
+    
+      true
+    
     
       true
     
@@ -703,6 +708,9 @@
     
       true
     
+    
+      true
+    
   
   
     
diff --git a/vendor/POCO/Data/Data_vs160.vcxproj.filters b/vendor/POCO/Data/Data_vs160.vcxproj.filters
index 1b1b91be..eed50b05 100644
--- a/vendor/POCO/Data/Data_vs160.vcxproj.filters
+++ b/vendor/POCO/Data/Data_vs160.vcxproj.filters
@@ -2,31 +2,31 @@
 
   
     
-      {6c162c5f-b7ae-436f-a1a5-ecf733b32d81}
+      {ca802690-e052-4003-ae74-b2cd7e2c95f9}
     
     
-      {1beac889-c2f5-48df-93de-07a0658b987e}
+      {c9a3889d-4e2d-43ac-887e-3b22b1cf4ba9}
     
     
-      {d6fccab3-e509-4d0f-be51-81116507be0d}
+      {b6b0997e-c4d7-4526-88c6-614fba4407cf}
     
     
-      {3777237e-6510-4397-932b-8b99b2baf730}
+      {ca986e9c-3287-419e-8f6a-7472a96c71b9}
     
     
-      {4f1ff28e-858b-432a-8c0d-adbf7515b180}
+      {33a16a37-8706-47fb-ac35-f3e913ff6a03}
     
     
-      {22669877-0409-48ce-9ef4-815bd034f536}
+      {934c7f71-50fb-452a-94a6-c123cdaa043e}
     
     
-      {bd891b52-55cd-48f0-893f-4370dc2264ef}
+      {e6946b3f-5400-4275-a315-25a8db846def}
     
     
-      {ceffc496-da4c-44a3-9fab-95a41fde3cdc}
+      {6fd48faa-50da-4192-bf66-27068d6b2156}
     
     
-      {a80cd2cd-b1b2-40f1-96c9-fcdf376aeba4}
+      {71eaafa2-e2fe-4cb8-80e2-82ea694abeec}
     
   
   
@@ -93,6 +93,9 @@
     
       DataCore\Header Files
     
+    
+      DataCore\Header Files
+    
     
       DataCore\Header Files
     
@@ -156,6 +159,9 @@
     
       DataCore\Header Files
     
+    
+      DataCore\Header Files
+    
     
       DataCore\Header Files
     
@@ -212,6 +218,9 @@
     
       DataCore\Source Files
     
+    
+      DataCore\Source Files
+    
     
       DataCore\Source Files
     
@@ -266,6 +275,9 @@
     
       DataCore\Source Files
     
+    
+      DataCore\Source Files
+    
     
       SessionPooling\Source Files
     
diff --git a/vendor/POCO/Data/Data_vs170.sln b/vendor/POCO/Data/Data_vs170.sln
new file mode 100644
index 00000000..222c7e57
--- /dev/null
+++ b/vendor/POCO/Data/Data_vs170.sln
@@ -0,0 +1,144 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Data", "Data_vs170.vcxproj", "{240E83C3-368D-11DB-9FBC-00123FC423B5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs170.vcxproj", "{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}"
+	ProjectSection(ProjectDependencies) = postProject
+		{240E83C3-368D-11DB-9FBC-00123FC423B5} = {240E83C3-368D-11DB-9FBC-00123FC423B5}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		debug_shared|ARM64 = debug_shared|ARM64
+		release_shared|ARM64 = release_shared|ARM64
+		debug_static_mt|ARM64 = debug_static_mt|ARM64
+		release_static_mt|ARM64 = release_static_mt|ARM64
+		debug_static_md|ARM64 = debug_static_md|ARM64
+		release_static_md|ARM64 = release_static_md|ARM64
+		debug_shared|Win32 = debug_shared|Win32
+		release_shared|Win32 = release_shared|Win32
+		debug_static_mt|Win32 = debug_static_mt|Win32
+		release_static_mt|Win32 = release_static_mt|Win32
+		debug_static_md|Win32 = debug_static_md|Win32
+		release_static_md|Win32 = release_static_md|Win32
+		debug_shared|x64 = debug_shared|x64
+		release_shared|x64 = release_shared|x64
+		debug_static_mt|x64 = debug_static_mt|x64
+		release_static_mt|x64 = release_static_mt|x64
+		debug_static_md|x64 = debug_static_md|x64
+		release_static_md|x64 = release_static_md|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|ARM64.Build.0 = release_shared|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|Win32.Build.0 = debug_shared|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|Win32.ActiveCfg = release_shared|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|Win32.Build.0 = release_shared|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|Win32.Deploy.0 = release_shared|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_md|Win32.Build.0 = release_static_md|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|x64.ActiveCfg = debug_shared|x64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|x64.Build.0 = debug_shared|x64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_shared|x64.Deploy.0 = debug_shared|x64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|x64.ActiveCfg = release_shared|x64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|x64.Build.0 = release_shared|x64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_shared|x64.Deploy.0 = release_shared|x64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_mt|x64.Build.0 = release_static_mt|x64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_md|x64.Build.0 = debug_static_md|x64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_md|x64.ActiveCfg = release_static_md|x64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_md|x64.Build.0 = release_static_md|x64
+		{240E83C3-368D-11DB-9FBC-00123FC423B5}.release_static_md|x64.Deploy.0 = release_static_md|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_shared|ARM64.Build.0 = release_shared|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_shared|Win32.Build.0 = debug_shared|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_shared|Win32.ActiveCfg = release_shared|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_shared|Win32.Build.0 = release_shared|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_shared|Win32.Deploy.0 = release_shared|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_md|Win32.Build.0 = release_static_md|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_shared|x64.ActiveCfg = debug_shared|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_shared|x64.Build.0 = debug_shared|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_shared|x64.Deploy.0 = debug_shared|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_shared|x64.ActiveCfg = release_shared|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_shared|x64.Build.0 = release_shared|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_shared|x64.Deploy.0 = release_shared|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_mt|x64.Build.0 = release_static_mt|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_md|x64.Build.0 = debug_static_md|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_md|x64.ActiveCfg = release_static_md|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_md|x64.Build.0 = release_static_md|x64
+		{1813A463-E349-4FEA-8A8E-4A41E41C0DC7}.release_static_md|x64.Deploy.0 = release_static_md|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/vendor/POCO/Data/Data_vs170.vcxproj b/vendor/POCO/Data/Data_vs170.vcxproj
new file mode 100644
index 00000000..a3f0a4dd
--- /dev/null
+++ b/vendor/POCO/Data/Data_vs170.vcxproj
@@ -0,0 +1,996 @@
+
+
+  
+    
+      debug_shared
+      ARM64
+    
+    
+      debug_shared
+      Win32
+    
+    
+      debug_shared
+      x64
+    
+    
+      debug_static_md
+      ARM64
+    
+    
+      debug_static_md
+      Win32
+    
+    
+      debug_static_md
+      x64
+    
+    
+      debug_static_mt
+      ARM64
+    
+    
+      debug_static_mt
+      Win32
+    
+    
+      debug_static_mt
+      x64
+    
+    
+      release_shared
+      ARM64
+    
+    
+      release_shared
+      Win32
+    
+    
+      release_shared
+      x64
+    
+    
+      release_static_md
+      ARM64
+    
+    
+      release_static_md
+      Win32
+    
+    
+      release_static_md
+      x64
+    
+    
+      release_static_mt
+      ARM64
+    
+    
+      release_static_mt
+      Win32
+    
+    
+      release_static_mt
+      x64
+    
+  
+  
+    17.0
+    Data
+    {240E83C3-368D-11DB-9FBC-00123FC423B5}
+    Data
+    Win32Proj
+  
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+  
+    <_ProjectFileVersion>17.0.32505.173
+    PocoDataA64d
+    PocoDatamdd
+    PocoDatamtd
+    PocoDataA64
+    PocoDatamd
+    PocoDatamt
+    PocoDatad
+    PocoDatamdd
+    PocoDatamtd
+    PocoData
+    PocoDatamd
+    PocoDatamt
+    PocoData64d
+    PocoDatamdd
+    PocoDatamtd
+    PocoData64
+    PocoDatamd
+    PocoDatamt
+  
+  
+    ..\binA64\
+    objA64\Data\$(Configuration)\
+    true
+  
+  
+    ..\binA64\
+    objA64\Data\$(Configuration)\
+    false
+  
+  
+    ..\libA64\
+    objA64\Data\$(Configuration)\
+  
+  
+    ..\libA64\
+    objA64\Data\$(Configuration)\
+  
+  
+    ..\libA64\
+    objA64\Data\$(Configuration)\
+  
+  
+    ..\libA64\
+    objA64\Data\$(Configuration)\
+  
+  
+    ..\bin\
+    obj\Data\$(Configuration)\
+    true
+  
+  
+    ..\bin\
+    obj\Data\$(Configuration)\
+    false
+  
+  
+    ..\lib\
+    obj\Data\$(Configuration)\
+  
+  
+    ..\lib\
+    obj\Data\$(Configuration)\
+  
+  
+    ..\lib\
+    obj\Data\$(Configuration)\
+  
+  
+    ..\lib\
+    obj\Data\$(Configuration)\
+  
+  
+    ..\bin64\
+    obj64\Data\$(Configuration)\
+    true
+  
+  
+    ..\bin64\
+    obj64\Data\$(Configuration)\
+    false
+  
+  
+    ..\lib64\
+    obj64\Data\$(Configuration)\
+  
+  
+    ..\lib64\
+    obj64\Data\$(Configuration)\
+  
+  
+    ..\lib64\
+    obj64\Data\$(Configuration)\
+  
+  
+    ..\lib64\
+    obj64\Data\$(Configuration)\
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;_USRDLL;Data_EXPORTS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\binA64\PocoDataA64d.dll
+      true
+      true
+      ..\binA64\PocoDataA64d.pdb
+      ..\libA64;%(AdditionalLibraryDirectories)
+      Console
+      ..\libA64\PocoDatad.lib
+      MachineARM64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;_USRDLL;Data_EXPORTS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\binA64\PocoDataA64.dll
+      true
+      false
+      ..\libA64;%(AdditionalLibraryDirectories)
+      Console
+      true
+      true
+      ..\libA64\PocoData.lib
+      MachineARM64
+    
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      ..\libA64\PocoDatamtd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\libA64\PocoDatamtd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\libA64\PocoDatamt.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      ..\libA64\PocoDatamdd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\libA64\PocoDatamdd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\libA64\PocoDatamd.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;_USRDLL;Data_EXPORTS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\bin\PocoDatad.dll
+      true
+      true
+      ..\bin\PocoDatad.pdb
+      ..\lib;%(AdditionalLibraryDirectories)
+      Console
+      ..\lib\PocoDatad.lib
+      MachineX86
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;_USRDLL;Data_EXPORTS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\bin\PocoData.dll
+      true
+      false
+      ..\lib;%(AdditionalLibraryDirectories)
+      Console
+      true
+      true
+      ..\lib\PocoData.lib
+      MachineX86
+    
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      ..\lib\PocoDatamtd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\lib\PocoDatamtd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\lib\PocoDatamt.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      ..\lib\PocoDatamdd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\lib\PocoDatamdd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      ..\lib\PocoDatamd.pdb
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\lib\PocoDatamd.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;_USRDLL;Data_EXPORTS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      /bigobj %(AdditionalOptions)
+      true
+    
+    
+      ..\bin64\PocoData64d.dll
+      true
+      true
+      ..\bin64\PocoData64d.pdb
+      ..\lib64;%(AdditionalLibraryDirectories)
+      Console
+      ..\lib64\PocoDatad.lib
+      MachineX64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;_USRDLL;Data_EXPORTS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      /bigobj %(AdditionalOptions)
+      true
+    
+    
+      ..\bin64\PocoData64.dll
+      true
+      false
+      ..\lib64;%(AdditionalLibraryDirectories)
+      Console
+      true
+      true
+      ..\lib64\PocoData.lib
+      MachineX64
+    
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      ..\lib64\PocoDatamtd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      /bigobj %(AdditionalOptions)
+      true
+    
+    
+      ..\lib64\PocoDatamtd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      /bigobj %(AdditionalOptions)
+      true
+    
+    
+      ..\lib64\PocoDatamt.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      ..\lib64\PocoDatamdd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      /bigobj %(AdditionalOptions)
+      true
+    
+    
+      ..\lib64\PocoDatamdd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\Foundation\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      /bigobj %(AdditionalOptions)
+      true
+    
+    
+      ..\lib64\PocoDatamd.lib
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+  
+    
+      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
+    
+  
+  
+  
+
diff --git a/vendor/POCO/Data/Data_vs170.vcxproj.filters b/vendor/POCO/Data/Data_vs170.vcxproj.filters
new file mode 100644
index 00000000..b229d0a2
--- /dev/null
+++ b/vendor/POCO/Data/Data_vs170.vcxproj.filters
@@ -0,0 +1,297 @@
+
+
+  
+    
+      {25181de0-3e99-4db9-a218-4580b16cbb0a}
+    
+    
+      {bf1fcd58-d750-4f91-8eea-0dc1e09013b6}
+    
+    
+      {9ccb9717-2829-450a-b3ea-715077fc770f}
+    
+    
+      {fa110a23-abc0-4838-8c37-2cf0a512d556}
+    
+    
+      {6dd4ce47-c8de-48c7-891f-6fc47fff19e9}
+    
+    
+      {5011cbf7-2ae9-4b14-9a03-bb9f9c754dc4}
+    
+    
+      {39e78f99-76eb-4ca6-a6e5-69380ba1e19f}
+    
+    
+      {c2cbcb61-3c9c-4208-aebc-bf1e7ec77703}
+    
+    
+      {f59283d4-ff32-4856-903b-81bd84ebb146}
+    
+  
+  
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      DataCore\Header Files
+    
+    
+      SessionPooling\Header Files
+    
+    
+      SessionPooling\Header Files
+    
+    
+      SessionPooling\Header Files
+    
+    
+      SessionPooling\Header Files
+    
+    
+      Logging\Header Files
+    
+    
+      Logging\Header Files
+    
+  
+  
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      DataCore\Source Files
+    
+    
+      SessionPooling\Source Files
+    
+    
+      SessionPooling\Source Files
+    
+    
+      SessionPooling\Source Files
+    
+    
+      SessionPooling\Source Files
+    
+    
+      Logging\Source Files
+    
+    
+      Logging\Source Files
+    
+  
+  
+    
+  
+
\ No newline at end of file
diff --git a/vendor/POCO/Data/Makefile b/vendor/POCO/Data/Makefile
index ea61d29a..ea354f6c 100644
--- a/vendor/POCO/Data/Makefile
+++ b/vendor/POCO/Data/Makefile
@@ -8,12 +8,12 @@ include $(POCO_BASE)/build/rules/global
 
 objects = AbstractBinder AbstractBinding AbstractExtraction AbstractExtractor \
 	AbstractPreparation AbstractPreparator ArchiveStrategy Transaction \
-	Bulk Connector DataException Date DynamicLOB Limit MetaColumn \
-	PooledSessionHolder PooledSessionImpl Position \
+	Bulk Connector DataException Date DynamicLOB JSONRowFormatter \
+	Limit MetaColumn PooledSessionHolder PooledSessionImpl Position \
 	Range RecordSet Row RowFilter RowFormatter RowIterator \
 	SimpleRowFormatter Session SessionFactory SessionImpl \
 	SessionPool SessionPoolContainer SQLChannel \
-	Statement StatementCreator StatementImpl Time
+	Statement StatementCreator StatementImpl Time Transcoder
 
 target         = PocoData
 target_version = $(LIBVERSION)
diff --git a/vendor/POCO/Data/MySQL/CMakeLists.txt b/vendor/POCO/Data/MySQL/CMakeLists.txt
index 69e49a03..8c9eefe4 100644
--- a/vendor/POCO/Data/MySQL/CMakeLists.txt
+++ b/vendor/POCO/Data/MySQL/CMakeLists.txt
@@ -20,6 +20,7 @@ set_target_properties(DataMySQL
 	OUTPUT_NAME PocoDataMySQL
 	DEFINE_SYMBOL MySQL_EXPORTS
 )
+
 if (ENABLE_BUILTIN_MYSQL_C)
 	target_link_libraries(DataMySQL PUBLIC Poco::Data mariadbclient)
 else()
@@ -28,7 +29,7 @@ endif()
 target_include_directories(DataMySQL
 	PUBLIC
 		$
-		$
+		$
 	PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
 )
 target_compile_definitions(DataMySQL PUBLIC THREADSAFE NO_TCL)
diff --git a/vendor/POCO/Data/MySQL/MySQL.make b/vendor/POCO/Data/MySQL/MySQL.make
index 69df87f0..878c1fbd 100644
--- a/vendor/POCO/Data/MySQL/MySQL.make
+++ b/vendor/POCO/Data/MySQL/MySQL.make
@@ -1,32 +1,61 @@
 #
 # MySQL.make
 #
-# Makefile fragment for finding MySQL library
+# Makefile fragment for finding MySQL headers and library
 #
 
-ifndef POCO_MYSQL_INCLUDE
-ifeq (0, $(shell test -d /usr/local/include/mysql; echo $$?))
-POCO_MYSQL_INCLUDE = /usr/local/include
+ifeq ($(OSNAME),Darwin)
+  POCO_MYSQL_CONFIG = $(shell whereis -bq mysql_config)
 else
-ifeq (0, $(shell test -d /usr/local/opt/mysql-client/include; echo $$?))
-POCO_MYSQL_INCLUDE = /usr/local/opt/mysql-client/include
-endif
-endif
+  ifeq ($(OSNAME),Linux)
+    POCO_MYSQL_CONFIG = $(shell which mysql_config)
+  endif
 endif
 
-ifndef POCO_MYSQL_LIB
-ifeq (0, $(shell test -d /usr/local/include/mysql; echo $$?))
-POCO_MYSQL_LIB = /usr/local/lib
+ifneq (, $(POCO_MYSQL_CONFIG))
+  ifndef POCO_MYSQL_INCLUDE
+    POCO_MYSQL_INCLUDE = $(shell mysql_config --include)
+  endif
+  ifndef POCO_MYSQL_LIB
+    POCO_MYSQL_LIB = $(shell mysql_config --libs)
+  endif
 else
-ifeq (0, $(shell test -d /usr/local/opt/mysql-client/lib; echo $$?))
-POCO_MYSQL_LIB = /usr/local/opt/mysql-client/lib
-endif
-endif
+  ifndef POCO_MYSQL_INCLUDE
+    ifeq (0, $(shell test -d /usr/local/include/mysql; echo $$?))
+      POCO_MYSQL_INCLUDE = -I/usr/local/include
+    else
+      ifeq (0, $(shell test -d /usr/local/opt/mysql-client/include/mysql; echo $$?))
+        POCO_MYSQL_INCLUDE = -I/usr/local/opt/mysql-client/include/mysql
+      else
+        ifeq (0, $(shell test -d /usr/local/opt/mysql-client/include; echo $$?))
+          POCO_MYSQL_INCLUDE = -I/usr/local/opt/mysql-client/include
+        else
+          ifeq (0, $(shell test -d /opt/homebrew/opt/mysql-client/include; echo $$?))
+            POCO_MYSQL_INCLUDE = -I/opt/homebrew/opt/mysql-client/include
+          endif
+        endif
+      endif
+    endif
+  endif
+
+  ifndef POCO_MYSQL_LIB
+    ifeq (0, $(shell test -d /usr/local/include/mysql; echo $$?))
+      POCO_MYSQL_LIB = -L/usr/local/lib
+    else
+      ifeq (0, $(shell test -d /usr/local/opt/mysql-client/lib; echo $$?))
+        POCO_MYSQL_LIB = -L/usr/local/opt/mysql-client/lib
+      else
+        ifeq (0, $(shell test -d /opt/homebrew/opt/mysql-client/lib; echo $$?))
+          POCO_MYSQL_LIB = -L/opt/homebrew/opt/mysql-client/lib
+        endif
+      endif
+    endif
+  endif
 endif
 
 ifdef POCO_MYSQL_INCLUDE
-INCLUDE += -I$(POCO_MYSQL_INCLUDE)
+  INCLUDE += $(POCO_MYSQL_INCLUDE)
 endif
 ifdef POCO_MYSQL_LIB
-SYSLIBS += -L$(POCO_MYSQL_LIB)
+  SYSLIBS += $(POCO_MYSQL_LIB)
 endif
diff --git a/vendor/POCO/Data/MySQL/MySQL_vs170.sln b/vendor/POCO/Data/MySQL/MySQL_vs170.sln
new file mode 100644
index 00000000..1352dbb9
--- /dev/null
+++ b/vendor/POCO/Data/MySQL/MySQL_vs170.sln
@@ -0,0 +1,144 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MySQL", "MySQL_vs170.vcxproj", "{73E19FDE-1570-488C-B3DB-72A60FADD408}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs170.vcxproj", "{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}"
+	ProjectSection(ProjectDependencies) = postProject
+		{73E19FDE-1570-488C-B3DB-72A60FADD408} = {73E19FDE-1570-488C-B3DB-72A60FADD408}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		debug_shared|ARM64 = debug_shared|ARM64
+		release_shared|ARM64 = release_shared|ARM64
+		debug_static_mt|ARM64 = debug_static_mt|ARM64
+		release_static_mt|ARM64 = release_static_mt|ARM64
+		debug_static_md|ARM64 = debug_static_md|ARM64
+		release_static_md|ARM64 = release_static_md|ARM64
+		debug_shared|Win32 = debug_shared|Win32
+		release_shared|Win32 = release_shared|Win32
+		debug_static_mt|Win32 = debug_static_mt|Win32
+		release_static_mt|Win32 = release_static_mt|Win32
+		debug_static_md|Win32 = debug_static_md|Win32
+		release_static_md|Win32 = release_static_md|Win32
+		debug_shared|x64 = debug_shared|x64
+		release_shared|x64 = release_shared|x64
+		debug_static_mt|x64 = debug_static_mt|x64
+		release_static_mt|x64 = release_static_mt|x64
+		debug_static_md|x64 = debug_static_md|x64
+		release_static_md|x64 = release_static_md|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|ARM64.Build.0 = release_shared|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.Build.0 = debug_shared|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.ActiveCfg = release_shared|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.Build.0 = release_shared|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.Deploy.0 = release_shared|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.Build.0 = release_static_md|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.ActiveCfg = debug_shared|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.Build.0 = debug_shared|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.Deploy.0 = debug_shared|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.ActiveCfg = release_shared|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.Build.0 = release_shared|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.Deploy.0 = release_shared|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.Build.0 = release_static_mt|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.Build.0 = debug_static_md|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.ActiveCfg = release_static_md|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.Build.0 = release_static_md|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.Deploy.0 = release_static_md|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_shared|ARM64.Build.0 = release_shared|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_shared|Win32.Build.0 = debug_shared|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_shared|Win32.ActiveCfg = release_shared|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_shared|Win32.Build.0 = release_shared|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_shared|Win32.Deploy.0 = release_shared|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_md|Win32.Build.0 = release_static_md|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_shared|x64.ActiveCfg = debug_shared|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_shared|x64.Build.0 = debug_shared|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_shared|x64.Deploy.0 = debug_shared|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_shared|x64.ActiveCfg = release_shared|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_shared|x64.Build.0 = release_shared|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_shared|x64.Deploy.0 = release_shared|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_mt|x64.Build.0 = release_static_mt|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_md|x64.Build.0 = debug_static_md|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_md|x64.ActiveCfg = release_static_md|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_md|x64.Build.0 = release_static_md|x64
+		{4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}.release_static_md|x64.Deploy.0 = release_static_md|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/vendor/POCO/Data/MySQL/MySQL_vs170.vcxproj b/vendor/POCO/Data/MySQL/MySQL_vs170.vcxproj
new file mode 100644
index 00000000..29b7943d
--- /dev/null
+++ b/vendor/POCO/Data/MySQL/MySQL_vs170.vcxproj
@@ -0,0 +1,869 @@
+
+
+  
+    
+      debug_shared
+      ARM64
+    
+    
+      debug_shared
+      Win32
+    
+    
+      debug_shared
+      x64
+    
+    
+      debug_static_md
+      ARM64
+    
+    
+      debug_static_md
+      Win32
+    
+    
+      debug_static_md
+      x64
+    
+    
+      debug_static_mt
+      ARM64
+    
+    
+      debug_static_mt
+      Win32
+    
+    
+      debug_static_mt
+      x64
+    
+    
+      release_shared
+      ARM64
+    
+    
+      release_shared
+      Win32
+    
+    
+      release_shared
+      x64
+    
+    
+      release_static_md
+      ARM64
+    
+    
+      release_static_md
+      Win32
+    
+    
+      release_static_md
+      x64
+    
+    
+      release_static_mt
+      ARM64
+    
+    
+      release_static_mt
+      Win32
+    
+    
+      release_static_mt
+      x64
+    
+  
+  
+    17.0
+    MySQL
+    {73E19FDE-1570-488C-B3DB-72A60FADD408}
+    MySQL
+    Win32Proj
+  
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+  
+    <_ProjectFileVersion>17.0.32505.173
+    PocoDataMySQLA64d
+    PocoDataMySQLmdd
+    PocoDataMySQLmtd
+    PocoDataMySQLA64
+    PocoDataMySQLmd
+    PocoDataMySQLmt
+    PocoDataMySQLd
+    PocoDataMySQLmdd
+    PocoDataMySQLmtd
+    PocoDataMySQL
+    PocoDataMySQLmd
+    PocoDataMySQLmt
+    PocoDataMySQL64d
+    PocoDataMySQLmdd
+    PocoDataMySQLmtd
+    PocoDataMySQL64
+    PocoDataMySQLmd
+    PocoDataMySQLmt
+  
+  
+    ..\..\binA64\
+    objA64\MySQL\$(Configuration)\
+    true
+  
+  
+    ..\..\binA64\
+    objA64\MySQL\$(Configuration)\
+    false
+  
+  
+    ..\..\libA64\
+    objA64\MySQL\$(Configuration)\
+  
+  
+    ..\..\libA64\
+    objA64\MySQL\$(Configuration)\
+  
+  
+    ..\..\libA64\
+    objA64\MySQL\$(Configuration)\
+  
+  
+    ..\..\libA64\
+    objA64\MySQL\$(Configuration)\
+  
+  
+    ..\..\bin\
+    obj\MySQL\$(Configuration)\
+    true
+  
+  
+    ..\..\bin\
+    obj\MySQL\$(Configuration)\
+    false
+  
+  
+    ..\..\lib\
+    obj\MySQL\$(Configuration)\
+  
+  
+    ..\..\lib\
+    obj\MySQL\$(Configuration)\
+  
+  
+    ..\..\lib\
+    obj\MySQL\$(Configuration)\
+  
+  
+    ..\..\lib\
+    obj\MySQL\$(Configuration)\
+  
+  
+    ..\..\bin64\
+    obj64\MySQL\$(Configuration)\
+    true
+  
+  
+    ..\..\bin64\
+    obj64\MySQL\$(Configuration)\
+    false
+  
+  
+    ..\..\lib64\
+    obj64\MySQL\$(Configuration)\
+  
+  
+    ..\..\lib64\
+    obj64\MySQL\$(Configuration)\
+  
+  
+    ..\..\lib64\
+    obj64\MySQL\$(Configuration)\
+  
+  
+    ..\..\lib64\
+    obj64\MySQL\$(Configuration)\
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;_USRDLL;THREADSAFE;__LCC__;MySQL_EXPORTS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\binA64\PocoDataMySQLA64d.dll
+      true
+      true
+      ..\..\binA64\PocoDataMySQLA64d.pdb
+      ..\..\libA64;%(AdditionalLibraryDirectories)
+      Console
+      ..\..\libA64\PocoDataMySQLd.lib
+      MachineARM64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;_USRDLL;THREADSAFE;__LCC__;MySQL_EXPORTS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\binA64\PocoDataMySQLA64.dll
+      true
+      false
+      ..\..\libA64;%(AdditionalLibraryDirectories)
+      Console
+      true
+      true
+      ..\..\libA64\PocoDataMySQL.lib
+      MachineARM64
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      ..\..\libA64\PocoDataMySQLmtd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\libA64\PocoDataMySQLmtd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\libA64\PocoDataMySQLmt.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      ..\..\libA64\PocoDataMySQLmdd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\libA64\PocoDataMySQLmdd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\libA64\PocoDataMySQLmd.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;_USRDLL;THREADSAFE;__LCC__;MySQL_EXPORTS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\bin\PocoDataMySQLd.dll
+      true
+      true
+      ..\..\bin\PocoDataMySQLd.pdb
+      ..\..\lib;%(AdditionalLibraryDirectories)
+      Console
+      ..\..\lib\PocoDataMySQLd.lib
+      MachineX86
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;_USRDLL;THREADSAFE;__LCC__;MySQL_EXPORTS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\bin\PocoDataMySQL.dll
+      true
+      false
+      ..\..\lib;%(AdditionalLibraryDirectories)
+      Console
+      true
+      true
+      ..\..\lib\PocoDataMySQL.lib
+      MachineX86
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      ..\..\lib\PocoDataMySQLmtd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\lib\PocoDataMySQLmtd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\lib\PocoDataMySQLmt.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      ..\..\lib\PocoDataMySQLmdd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\lib\PocoDataMySQLmdd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      ..\..\lib\PocoDataMySQLmd.pdb
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\lib\PocoDataMySQLmd.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;_USRDLL;THREADSAFE;__LCC__;MySQL_EXPORTS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\bin64\PocoDataMySQL64d.dll
+      true
+      true
+      ..\..\bin64\PocoDataMySQL64d.pdb
+      ..\..\lib64;%(AdditionalLibraryDirectories)
+      Console
+      ..\..\lib64\PocoDataMySQLd.lib
+      MachineX64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;_USRDLL;THREADSAFE;__LCC__;MySQL_EXPORTS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\bin64\PocoDataMySQL64.dll
+      true
+      false
+      ..\..\lib64;%(AdditionalLibraryDirectories)
+      Console
+      true
+      true
+      ..\..\lib64\PocoDataMySQL.lib
+      MachineX64
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      ..\..\lib64\PocoDataMySQLmtd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\lib64\PocoDataMySQLmtd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\lib64\PocoDataMySQLmt.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      ..\..\lib64\PocoDataMySQLmdd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\lib64\PocoDataMySQLmdd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;..\..\mysql\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;__LCC__;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\lib64\PocoDataMySQLmd.lib
+    
+  
+  
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+  
+    
+      true
+      true
+      true
+      true
+      true
+      true
+      true
+      true
+      true
+      true
+      true
+      true
+    
+  
+  
+  
+
diff --git a/vendor/POCO/Data/MySQL/MySQL_vs170.vcxproj.filters b/vendor/POCO/Data/MySQL/MySQL_vs170.vcxproj.filters
new file mode 100644
index 00000000..ca717ec9
--- /dev/null
+++ b/vendor/POCO/Data/MySQL/MySQL_vs170.vcxproj.filters
@@ -0,0 +1,83 @@
+
+
+  
+    
+      {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+      cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+    
+    
+      {93995380-89BD-4b04-88EB-625FBE52EBFB}
+      h;hpp;hxx;hm;inl;inc;xsd
+    
+  
+  
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+  
+  
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+  
+  
+    
+  
+
\ No newline at end of file
diff --git a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/Binder.h b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/Binder.h
index 82fa617a..672961e6 100644
--- a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/Binder.h
+++ b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/Binder.h
@@ -22,7 +22,11 @@
 #include "Poco/Data/AbstractBinder.h"
 #include "Poco/Data/LOB.h"
 #include "Poco/Data/MySQL/MySQLException.h"
-#include 
+#if defined(__MINGW32__) || defined(__MINGW64__)
+	#include 
+#else
+	#include 
+#endif
 
 
 namespace Poco {
diff --git a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/Connector.h b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/Connector.h
index 14960f43..77878ac6 100644
--- a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/Connector.h
+++ b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/Connector.h
@@ -35,7 +35,7 @@ public:
 
 	Connector();
 		/// Creates the Connector.
-	
+
 	virtual ~Connector();
 		/// Destroys the Connector.
 
diff --git a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/Extractor.h b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/Extractor.h
index 36226fc6..606916b7 100644
--- a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/Extractor.h
+++ b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/Extractor.h
@@ -323,6 +323,10 @@ public:
 private:
 	bool realExtractFixed(std::size_t pos, enum_field_types type, void* buffer, bool isUnsigned = false);
 
+	bool extractLongLOB(std::size_t pos);
+#ifdef POCO_MYSQL_JSON
+	bool extractJSON(std::size_t pos);
+#endif
 	// Prevent VC8 warning "operator= could not be generated"
 	Extractor& operator=(const Extractor&);
 
diff --git a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/MySQL.h b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/MySQL.h
index 6ddcd398..bbfeb06e 100644
--- a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/MySQL.h
+++ b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/MySQL.h
@@ -17,10 +17,12 @@
 #ifndef MySQL_MySQL_INCLUDED
 #define MySQL_MySQL_INCLUDED
 
-
 #include "Poco/Foundation.h"
-#include 
-
+#if defined(__MINGW32__) || defined(__MINGW64__)
+	#include 
+#else
+	#include 
+#endif
 
 //
 // The following block is the standard way of creating macros which make exporting
@@ -62,5 +64,17 @@
 	#endif
 #endif
 
+//
+// Detect support for JSON data type
+//
+#if defined(MARIADB_VERSION_ID)
+	#if MARIADB_VERSION_ID >= 100207
+		#define POCO_MYSQL_JSON
+	#endif
+#else
+	#if MYSQL_VERSION_ID >= 50708
+		#define POCO_MYSQL_JSON
+	#endif
+#endif
 
 #endif // MySQL_MySQL_INCLUDED
diff --git a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/MySQLException.h b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/MySQLException.h
index 67692df3..694be5a0 100644
--- a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/MySQLException.h
+++ b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/MySQLException.h
@@ -20,7 +20,11 @@
 
 #include "Poco/Data/MySQL/MySQL.h"
 #include "Poco/Data/DataException.h"
-#include 
+#if defined(__MINGW32__) || defined(__MINGW64__)
+	#include 
+#else
+	#include 
+#endif
 #include 
 #include 
 
diff --git a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/MySQLStatementImpl.h b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/MySQLStatementImpl.h
index d06a8ba2..e303afd2 100644
--- a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/MySQLStatementImpl.h
+++ b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/MySQLStatementImpl.h
@@ -40,10 +40,10 @@ class MySQL_API MySQLStatementImpl: public Poco::Data::StatementImpl
 public:
 	MySQLStatementImpl(SessionImpl& s);
 		/// Creates the MySQLStatementImpl.
-		
+
 	~MySQLStatementImpl();
 		/// Destroys the MySQLStatementImpl.
-		
+
 protected:
 	virtual std::size_t columnsReturned() const;
 		/// Returns number of columns returned by query.
@@ -51,32 +51,32 @@ protected:
 	virtual int affectedRowCount() const;
 		/// Returns the number of affected rows.
 		/// Used to find out the number of rows affected by insert, delete or update.
-	
+
 	virtual const MetaColumn& metaColumn(std::size_t pos) const;
 		/// Returns column meta data.
-		
+
 	virtual bool hasNext();
 		/// Returns true if a call to next() will return data.
-		
+
 	virtual std::size_t next();
 		/// Retrieves the next row from the resultset.
 		/// Will throw, if the resultset is empty.
-	
+
 	virtual bool canBind() const;
 		/// Returns true if a valid statement is set and we can bind.
 
 	virtual bool canCompile() const;
 		/// Returns true if another compile is possible.
-		
+
 	virtual void compileImpl();
 		/// Compiles the statement, doesn't bind yet
-		
+
 	virtual void bindImpl();
 		/// Binds parameters
-		
+
 	virtual Poco::Data::AbstractExtractor::Ptr extractor();
 		/// Returns the concrete extractor used by the statement.
-		
+
 	virtual Poco::Data::AbstractBinder::Ptr binder();
 		/// Returns the concrete binder used by the statement.
 
diff --git a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/ResultMetadata.h b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/ResultMetadata.h
index 3a45387b..1023b744 100644
--- a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/ResultMetadata.h
+++ b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/ResultMetadata.h
@@ -19,7 +19,11 @@
 
 
 #include "Poco/Data/MetaColumn.h"
-#include 
+#if defined(__MINGW32__) || defined(__MINGW64__)
+	#include 
+#else
+	#include 
+#endif
 #include 
 
 
@@ -40,6 +44,9 @@ class ResultMetadata
 	/// MySQL result metadata
 {
 public:
+	~ResultMetadata();
+		/// Destroys the ResultMetadata.
+
 	void reset();
 		/// Resets the metadata.
 
@@ -64,10 +71,15 @@ public:
 	bool isNull(std::size_t pos) const;
 		/// Returns true if value at pos is null.
 
+	void adjustColumnSizeToFit(std::size_t pos);
+		/// Expands the size allocated for column to fit the length of the data.
+
 private:
+	void freeMemory();
+
 	std::vector    _columns;
 	std::vector    _row;
-	std::vector          _buffer;
+	std::vector         _buffer;
 	std::vector _lengths;
 	std::vector      _isNull; // using char instead of bool to avoid std::vector disaster
 };
diff --git a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/SessionHandle.h b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/SessionHandle.h
index 4f65ae5c..d5fb5f4f 100644
--- a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/SessionHandle.h
+++ b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/SessionHandle.h
@@ -19,7 +19,11 @@
 
 
 #include "Poco/Data/MySQL/MySQLException.h"
-#include 
+#if defined(__MINGW32__) || defined(__MINGW64__)
+	#include 
+#else
+	#include 
+#endif
 
 
 namespace Poco {
diff --git a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/StatementExecutor.h b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/StatementExecutor.h
index 6767b68b..8b6909fd 100644
--- a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/StatementExecutor.h
+++ b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/StatementExecutor.h
@@ -19,7 +19,11 @@
 
 
 #include "Poco/Data/MySQL/MySQLException.h"
-#include 
+#if defined(__MINGW32__) || defined(__MINGW64__)
+	#include 
+#else
+	#include 
+#endif
 
 
 namespace Poco {
diff --git a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/Utility.h b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/Utility.h
index 79c13c39..4efde23e 100644
--- a/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/Utility.h
+++ b/vendor/POCO/Data/MySQL/include/Poco/Data/MySQL/Utility.h
@@ -20,7 +20,11 @@
 
 #include "Poco/Data/MySQL/MySQL.h"
 #include "Poco/Data/Session.h"
-#include 
+#if defined(__MINGW32__) || defined(__MINGW64__)
+	#include 
+#else
+	#include 
+#endif
 
 
 namespace Poco {
@@ -50,9 +54,6 @@ public:
 	static std::string hostInfo(Poco::Data::Session& session);
 		/// Returns host info.
 
-	static bool hasMicrosecond();
-		/// Rturns true if microseconds are suported.
-
 	static MYSQL* handle(Poco::Data::Session& session);
 		/// Returns native MySQL handle for the session.
 };
diff --git a/vendor/POCO/Data/MySQL/src/Binder.cpp b/vendor/POCO/Data/MySQL/src/Binder.cpp
index c1fb4e7d..9bb19ee9 100644
--- a/vendor/POCO/Data/MySQL/src/Binder.cpp
+++ b/vendor/POCO/Data/MySQL/src/Binder.cpp
@@ -213,8 +213,7 @@ void Binder::bind(std::size_t pos, const Time& val, Direction dir)
 
 void Binder::bind(std::size_t pos, const UUID& val, Direction dir)
 {
-	std::string str = val.toString();
-	bind(pos, str, dir);
+	bind(pos, toString(val), dir);
 }
 
 
diff --git a/vendor/POCO/Data/MySQL/src/Connector.cpp b/vendor/POCO/Data/MySQL/src/Connector.cpp
index b90abab0..40b52da9 100644
--- a/vendor/POCO/Data/MySQL/src/Connector.cpp
+++ b/vendor/POCO/Data/MySQL/src/Connector.cpp
@@ -16,7 +16,11 @@
 #include "Poco/Data/MySQL/SessionImpl.h"
 #include "Poco/Data/SessionFactory.h"
 #include "Poco/Exception.h"
-#include 
+#if defined(__MINGW32__) || defined(__MINGW64__)
+	#include 
+#else
+	#include 
+#endif
 
 
 namespace Poco {
diff --git a/vendor/POCO/Data/MySQL/src/Extractor.cpp b/vendor/POCO/Data/MySQL/src/Extractor.cpp
index 0ff16d34..9af6ba46 100644
--- a/vendor/POCO/Data/MySQL/src/Extractor.cpp
+++ b/vendor/POCO/Data/MySQL/src/Extractor.cpp
@@ -128,8 +128,18 @@ bool Extractor::extract(std::size_t pos, std::string& val)
 
 	//mysql reports TEXT types as FDT_BLOB when being extracted
 	MetaColumn::ColumnDataType columnType = _metadata.metaColumn(static_cast(pos)).type();
+#ifdef POCO_MYSQL_JSON
+	if (columnType != Poco::Data::MetaColumn::FDT_STRING && columnType != Poco::Data::MetaColumn::FDT_BLOB && columnType != Poco::Data::MetaColumn::FDT_JSON)
+#else
 	if (columnType != Poco::Data::MetaColumn::FDT_STRING && columnType != Poco::Data::MetaColumn::FDT_BLOB)
+#endif
 		throw MySQLException("Extractor: not a string");
+#ifdef POCO_MYSQL_JSON
+	if (columnType == Poco::Data::MetaColumn::FDT_JSON && !extractJSON(pos))
+		return false;
+#endif
+	if (columnType == Poco::Data::MetaColumn::FDT_BLOB && !extractLongLOB(pos))
+		return false;
 
 	val.assign(reinterpret_cast(_metadata.rawData(pos)), _metadata.length(pos));
 	return true;
@@ -142,11 +152,14 @@ bool Extractor::extract(std::size_t pos, Poco::Data::BLOB& val)
 		throw MySQLException("Extractor: attempt to extract more parameters, than query result contain");
 
 	if (_metadata.isNull(static_cast(pos)))
-	return false;
+		return false;
 
 	if (_metadata.metaColumn(static_cast(pos)).type() != Poco::Data::MetaColumn::FDT_BLOB)
 		throw MySQLException("Extractor: not a blob");
 
+	if (_metadata.metaColumn(static_cast(pos)).length() == 0 && !extractLongLOB(pos))
+		return false;
+
 	val.assignRaw(_metadata.rawData(pos), _metadata.length(pos));
 	return true;
 }
@@ -163,6 +176,9 @@ bool Extractor::extract(std::size_t pos, Poco::Data::CLOB& val)
 	if (_metadata.metaColumn(static_cast(pos)).type() != Poco::Data::MetaColumn::FDT_BLOB)
 		throw MySQLException("Extractor: not a blob");
 
+	if (_metadata.metaColumn(static_cast(pos)).length() == 0 && !extractLongLOB(pos))
+		return false;
+
 	val.assignRaw(reinterpret_cast(_metadata.rawData(pos)), _metadata.length(pos));
 	return true;
 }
@@ -263,6 +279,39 @@ bool Extractor::realExtractFixed(std::size_t pos, enum_field_types type, void* b
 	return isNull == 0;
 }
 
+bool Extractor::extractLongLOB(std::size_t pos)
+{
+	// Large LOBs (LONGBLOB and LONGTEXT) are fetched
+	// with a zero-length buffer to avoid allocating
+	// huge amounts of memory. Therefore, when extracting
+	// the buffers need to be adjusted.
+	
+	_metadata.adjustColumnSizeToFit(pos);
+	
+	MYSQL_BIND* row = _metadata.row();
+	if (!_stmt.fetchColumn(pos, &row[pos]))
+		return false;
+	
+	return true;
+}
+
+#ifdef POCO_MYSQL_JSON
+bool Extractor::extractJSON(std::size_t pos)
+{
+	// JSON columns are fetched with a zero-length
+	// buffer to avoid allocating huge amounts of memory.
+	// Therefore, when extracting the buffers need to be adjusted.
+
+	_metadata.adjustColumnSizeToFit(pos);
+
+	MYSQL_BIND* row = _metadata.row();
+	row->buffer_type = MYSQL_TYPE_JSON;
+	if (!_stmt.fetchColumn(pos, &row[pos]))
+		return false;
+
+	return true;
+}
+#endif
 
 //////////////
 // Not implemented
diff --git a/vendor/POCO/Data/MySQL/src/MySQLException.cpp b/vendor/POCO/Data/MySQL/src/MySQLException.cpp
index bffdaae6..a66b8357 100644
--- a/vendor/POCO/Data/MySQL/src/MySQLException.cpp
+++ b/vendor/POCO/Data/MySQL/src/MySQLException.cpp
@@ -18,8 +18,7 @@
 
 
 #include "Poco/Data/MySQL/MySQLException.h"
-#include 
-#include 
+#include "Poco/NumberFormatter.h"
 
 
 namespace Poco {
@@ -71,9 +70,7 @@ std::string ConnectionException::compose(const std::string& text, MYSQL* h)
 	str += mysql_error(h);
 
 	str += "\t[mysql_errno]: ";
-	char buff[30];
-	sprintf(buff, "%d", mysql_errno(h));
-	str += buff;
+	Poco::NumberFormatter::append(str, mysql_errno(h));
 
 	str += "\t[mysql_sqlstate]: ";
 	str += mysql_sqlstate(h);
@@ -125,9 +122,7 @@ std::string StatementException::compose(const std::string& text, MYSQL_STMT* h,
 		str += mysql_stmt_error(h);
 
 		str += "\t[mysql_stmt_errno]: ";
-		char buff[30];
-		sprintf(buff, "%d", mysql_stmt_errno(h));
-		str += buff;
+		Poco::NumberFormatter::append(str, mysql_stmt_errno(h));
 
 		str += "\t[mysql_stmt_sqlstate]: ";
 		str += mysql_stmt_sqlstate(h);
diff --git a/vendor/POCO/Data/MySQL/src/ResultMetadata.cpp b/vendor/POCO/Data/MySQL/src/ResultMetadata.cpp
index bcc45c3d..adb5dae8 100644
--- a/vendor/POCO/Data/MySQL/src/ResultMetadata.cpp
+++ b/vendor/POCO/Data/MySQL/src/ResultMetadata.cpp
@@ -61,6 +61,7 @@ namespace
 		case MYSQL_TYPE_DATE:
 		case MYSQL_TYPE_TIME:
 		case MYSQL_TYPE_DATETIME:
+		case MYSQL_TYPE_TIMESTAMP:
 			return sizeof(MYSQL_TIME);
 
 		case MYSQL_TYPE_DECIMAL:
@@ -71,21 +72,24 @@ namespace
 		case MYSQL_TYPE_MEDIUM_BLOB:
 		case MYSQL_TYPE_LONG_BLOB:
 		case MYSQL_TYPE_BLOB:
+#ifdef POCO_MYSQL_JSON
+		case MYSQL_TYPE_JSON:
+#endif		
 			return field.length;
 
 		default:
 			throw Poco::Data::MySQL::StatementException("unknown field type");
 		}
-	}	
+	}
 
 	Poco::Data::MetaColumn::ColumnDataType fieldType(const MYSQL_FIELD& field)
-		/// Convert field MySQL-type to Poco-type	
+		/// Convert field MySQL-type to Poco-type
 	{
 		bool unsig = ((field.flags & UNSIGNED_FLAG) == UNSIGNED_FLAG);
 
 		switch (field.type)
 		{
-		case MYSQL_TYPE_TINY:     
+		case MYSQL_TYPE_TINY:
 			if (unsig) return Poco::Data::MetaColumn::FDT_UINT8;
 			return Poco::Data::MetaColumn::FDT_INT8;
 
@@ -94,31 +98,32 @@ namespace
 			return Poco::Data::MetaColumn::FDT_INT16;
 
 		case MYSQL_TYPE_INT24:
-		case MYSQL_TYPE_LONG:     
+		case MYSQL_TYPE_LONG:
 			if (unsig) return Poco::Data::MetaColumn::FDT_UINT32;
 			return Poco::Data::MetaColumn::FDT_INT32;
 
-		case MYSQL_TYPE_FLOAT:    
+		case MYSQL_TYPE_FLOAT:
 			return Poco::Data::MetaColumn::FDT_FLOAT;
 
 		case MYSQL_TYPE_DECIMAL:
 		case MYSQL_TYPE_NEWDECIMAL:
-		case MYSQL_TYPE_DOUBLE:   
+		case MYSQL_TYPE_DOUBLE:
 			return Poco::Data::MetaColumn::FDT_DOUBLE;
 
-		case MYSQL_TYPE_LONGLONG: 
+		case MYSQL_TYPE_LONGLONG:
 			if (unsig) return Poco::Data::MetaColumn::FDT_UINT64;
 			return Poco::Data::MetaColumn::FDT_INT64;
-			
+
 		case MYSQL_TYPE_DATE:
 			return Poco::Data::MetaColumn::FDT_DATE;
-			
+
 		case MYSQL_TYPE_TIME:
 			return Poco::Data::MetaColumn::FDT_TIME;
-			
+
 		case MYSQL_TYPE_DATETIME:
+		case MYSQL_TYPE_TIMESTAMP:
 			return Poco::Data::MetaColumn::FDT_TIMESTAMP;
-			
+
 		case MYSQL_TYPE_STRING:
 		case MYSQL_TYPE_VAR_STRING:
 			return Poco::Data::MetaColumn::FDT_STRING;
@@ -128,6 +133,10 @@ namespace
 		case MYSQL_TYPE_LONG_BLOB:
 		case MYSQL_TYPE_BLOB:
 			return Poco::Data::MetaColumn::FDT_BLOB;
+#ifdef POCO_MYSQL_JSON
+		case MYSQL_TYPE_JSON:
+			return Poco::Data::MetaColumn::FDT_JSON;
+#endif
 		default:
 			return Poco::Data::MetaColumn::FDT_UNKNOWN;
 		}
@@ -140,8 +149,15 @@ namespace Data {
 namespace MySQL {
 
 
+ResultMetadata::~ResultMetadata()
+{
+	freeMemory();
+}
+
+
 void ResultMetadata::reset()
 {
+	freeMemory();
 	_columns.resize(0);
 	_row.resize(0);
 	_buffer.resize(0);
@@ -150,14 +166,20 @@ void ResultMetadata::reset()
 }
 
 
+void ResultMetadata::freeMemory()
+{
+	for (std::vector::iterator it = _buffer.begin(); it != _buffer.end(); ++it)
+		std::free(*it);
+}
+
+
 void ResultMetadata::init(MYSQL_STMT* stmt)
 {
 	ResultMetadataHandle h(stmt);
 
 	if (!h)
 	{
-		// all right, it is normal
-		// querys such an "INSERT INTO" just does not have result at all
+		// some queries (eg. INSERT) don't have result
 		reset();
 		return;
 	}
@@ -165,7 +187,6 @@ void ResultMetadata::init(MYSQL_STMT* stmt)
 	std::size_t count = mysql_num_fields(h);
 	MYSQL_FIELD* fields = mysql_fetch_fields(h);
 
-	std::size_t commonSize = 0;
 	_columns.reserve(count);
 
 	for (std::size_t i = 0; i < count; i++)
@@ -181,29 +202,24 @@ void ResultMetadata::init(MYSQL_STMT* stmt)
 			0,                               // TODO: precision
 			!IS_NOT_NULL(fields[i].flags)    // nullable
 			));
-
-		commonSize += _columns[i].length();
 	}
 
-	_buffer.resize(commonSize);
+	_buffer.resize(count);
 	_row.resize(count);
 	_lengths.resize(count);
 	_isNull.resize(count);
 
-	std::size_t offset = 0;
-
 	for (std::size_t i = 0; i < count; i++)
 	{
 		std::memset(&_row[i], 0, sizeof(MYSQL_BIND));
 		unsigned int len = static_cast(_columns[i].length());
+		_buffer[i] = (char*) std::calloc(len, sizeof(char));
 		_row[i].buffer_type   = fields[i].type;
 		_row[i].buffer_length = len;
-		_row[i].buffer        = (len > 0) ? (&_buffer[0] + offset) : 0;
+		_row[i].buffer        = _buffer[i];
 		_row[i].length        = &_lengths[i];
 		_row[i].is_null       = reinterpret_cast(&_isNull[i]); // workaround to make it work with both MySQL 8 and earlier
 		_row[i].is_unsigned   = (fields[i].flags & UNSIGNED_FLAG) > 0;
-		
-		offset += _row[i].buffer_length;
 	}
 }
 
@@ -232,16 +248,29 @@ std::size_t ResultMetadata::length(std::size_t pos) const
 }
 
 
-const unsigned char* ResultMetadata::rawData(std::size_t pos) const 
+const unsigned char* ResultMetadata::rawData(std::size_t pos) const
 {
+	if ((_lengths[pos] == 0) && (_row[pos].buffer == nullptr))
+		return reinterpret_cast("");
+	else
+		poco_check_ptr (_row[pos].buffer);
 	return reinterpret_cast(_row[pos].buffer);
 }
 
 
-bool ResultMetadata::isNull(std::size_t pos) const 
+bool ResultMetadata::isNull(std::size_t pos) const
 {
 	return (_isNull[pos] != 0);
 }
 
 
+void ResultMetadata::adjustColumnSizeToFit(std::size_t pos)
+{
+	std::free(_buffer[pos]);
+	_buffer[pos] = (char*) std::calloc(_lengths[pos], sizeof(char));
+	_row[pos].buffer = _buffer[pos];
+	_row[pos].buffer_length = _lengths[pos];
+}
+
+
 } } } // namespace Poco::Data::MySQL
diff --git a/vendor/POCO/Data/MySQL/src/SessionHandle.cpp b/vendor/POCO/Data/MySQL/src/SessionHandle.cpp
index 8f25169f..ba935cdb 100644
--- a/vendor/POCO/Data/MySQL/src/SessionHandle.cpp
+++ b/vendor/POCO/Data/MySQL/src/SessionHandle.cpp
@@ -183,8 +183,7 @@ void SessionHandle::rollback()
 
 void SessionHandle::reset()
 {
-//#if ((defined (MYSQL_VERSION_ID)) && (MYSQL_VERSION_ID >= 50700)) || ((defined (MARIADB_PACKAGE_VERSION_ID)) && (MARIADB_PACKAGE_VERSION_ID >= 30000))
-#if ((POCO_OS == POCO_OS_LINUX) && defined (HAVE_MYSQL_RESET_CONNECTION)) && (((defined (MYSQL_VERSION_ID)) && (MYSQL_VERSION_ID >= 50700)) || ((defined (MARIADB_PACKAGE_VERSION_ID)) && (MARIADB_PACKAGE_VERSION_ID >= 30000)))
+#if ((defined (MYSQL_VERSION_ID)) && (MYSQL_VERSION_ID >= 50700)) || ((defined (MARIADB_PACKAGE_VERSION_ID)) && (MARIADB_PACKAGE_VERSION_ID >= 30000))
 	if (mysql_reset_connection(_pHandle) != 0)
 #else
 	if (mysql_refresh(_pHandle, REFRESH_TABLES | REFRESH_STATUS | REFRESH_THREADS | REFRESH_READ_LOCK) != 0)
diff --git a/vendor/POCO/Data/MySQL/src/SessionImpl.cpp b/vendor/POCO/Data/MySQL/src/SessionImpl.cpp
index 3a2c865f..dab3ada0 100644
--- a/vendor/POCO/Data/MySQL/src/SessionImpl.cpp
+++ b/vendor/POCO/Data/MySQL/src/SessionImpl.cpp
@@ -14,6 +14,7 @@
 
 #include "Poco/Data/MySQL/SessionImpl.h"
 #include "Poco/Data/MySQL/MySQLStatementImpl.h"
+#include "Poco/Data/MySQL/Utility.h"
 #include "Poco/Data/Session.h"
 #include "Poco/NumberParser.h"
 #include "Poco/String.h"
@@ -254,8 +255,29 @@ void SessionImpl::setTransactionIsolation(Poco::UInt32 ti)
 
 Poco::UInt32 SessionImpl::getTransactionIsolation() const
 {
+	const std::string MARIADB_SERVERINFO = "MariaDB";
+
 	std::string isolation;
-	getSetting("tx_isolation", isolation);
+	std::string serverInfo = Utility::serverInfo(_handle);
+	unsigned long version = Utility::serverVersion(_handle);
+
+	if (serverInfo.find(MARIADB_SERVERINFO) != std::string::npos) //MariaDB
+	{
+		getSetting("tx_isolation", isolation);
+		isolation = isolation.c_str();
+	}
+	else //MySQL
+	{
+		if (version >= 80000)
+		{
+			getSetting("transaction_isolation", isolation);
+			isolation = isolation.c_str();
+		}
+		else
+		{
+			getSetting("tx_isolation", isolation);
+		}
+	}
 	Poco::replaceInPlace(isolation, "-", " ");
 	if (MYSQL_READ_UNCOMMITTED == isolation)
 		return Session::TRANSACTION_READ_UNCOMMITTED;
diff --git a/vendor/POCO/Data/MySQL/src/StatementExecutor.cpp b/vendor/POCO/Data/MySQL/src/StatementExecutor.cpp
index b7e8dbcd..fc11ae75 100644
--- a/vendor/POCO/Data/MySQL/src/StatementExecutor.cpp
+++ b/vendor/POCO/Data/MySQL/src/StatementExecutor.cpp
@@ -14,7 +14,11 @@
 
 #include "Poco/Data/MySQL/StatementExecutor.h"
 #include "Poco/Format.h"
-#include 
+#if defined(__MINGW32__) || defined(__MINGW64__)
+	#include 
+#else
+	#include 
+#endif
 
 
 namespace Poco {
diff --git a/vendor/POCO/Data/MySQL/src/Utility.cpp b/vendor/POCO/Data/MySQL/src/Utility.cpp
index 84e5cfca..db0cf2d3 100644
--- a/vendor/POCO/Data/MySQL/src/Utility.cpp
+++ b/vendor/POCO/Data/MySQL/src/Utility.cpp
@@ -15,7 +15,11 @@
 
 
 #include "Poco/Data/MySQL/Utility.h"
-#include 
+#if defined(__MINGW32__) || defined(__MINGW64__)
+	#include 
+#else
+	#include 
+#endif
 
 
 namespace Poco {
diff --git a/vendor/POCO/Data/MySQL/testsuite/TestSuite_vs170.vcxproj b/vendor/POCO/Data/MySQL/testsuite/TestSuite_vs170.vcxproj
new file mode 100644
index 00000000..146f19de
--- /dev/null
+++ b/vendor/POCO/Data/MySQL/testsuite/TestSuite_vs170.vcxproj
@@ -0,0 +1,913 @@
+
+
+  
+    
+      debug_shared
+      ARM64
+    
+    
+      debug_shared
+      Win32
+    
+    
+      debug_shared
+      x64
+    
+    
+      debug_static_md
+      ARM64
+    
+    
+      debug_static_md
+      Win32
+    
+    
+      debug_static_md
+      x64
+    
+    
+      debug_static_mt
+      ARM64
+    
+    
+      debug_static_mt
+      Win32
+    
+    
+      debug_static_mt
+      x64
+    
+    
+      release_shared
+      ARM64
+    
+    
+      release_shared
+      Win32
+    
+    
+      release_shared
+      x64
+    
+    
+      release_static_md
+      ARM64
+    
+    
+      release_static_md
+      Win32
+    
+    
+      release_static_md
+      x64
+    
+    
+      release_static_mt
+      ARM64
+    
+    
+      release_static_mt
+      Win32
+    
+    
+      release_static_mt
+      x64
+    
+  
+  
+    17.0
+    TestSuite
+    {4D6E42AE-EB6A-47EB-A186-B8A183FABCF7}
+    TestSuite
+    Win32Proj
+  
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+  
+    <_ProjectFileVersion>17.0.32505.173
+    TestSuited
+    TestSuited
+    TestSuited
+    TestSuite
+    TestSuite
+    TestSuite
+    TestSuited
+    TestSuited
+    TestSuited
+    TestSuite
+    TestSuite
+    TestSuite
+    TestSuited
+    TestSuited
+    TestSuited
+    TestSuite
+    TestSuite
+    TestSuite
+  
+  
+    binA64\
+    objA64\TestSuite\$(Configuration)\
+    true
+  
+  
+    binA64\
+    objA64\TestSuite\$(Configuration)\
+    false
+  
+  
+    binA64\static_mt\
+    objA64\TestSuite\$(Configuration)\
+    true
+  
+  
+    binA64\static_mt\
+    objA64\TestSuite\$(Configuration)\
+    false
+  
+  
+    binA64\static_md\
+    objA64\TestSuite\$(Configuration)\
+    true
+  
+  
+    binA64\static_md\
+    objA64\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin\
+    obj\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin\
+    obj\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin\static_mt\
+    obj\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin\static_mt\
+    obj\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin\static_md\
+    obj\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin\static_md\
+    obj\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin64\
+    obj64\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin64\
+    obj64\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin64\static_mt\
+    obj64\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin64\static_mt\
+    obj64\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin64\static_md\
+    obj64\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin64\static_md\
+    obj64\TestSuite\$(Configuration)\
+    false
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitd.lib;iphlpapi.lib;%(AdditionalDependencies)
+      binA64\TestSuited.exe
+      ..\..\..\libA64;%(AdditionalLibraryDirectories)
+      true
+      true
+      binA64\TestSuited.pdb
+      Console
+      MachineARM64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnit.lib;iphlpapi.lib;%(AdditionalDependencies)
+      binA64\TestSuite.exe
+      ..\..\..\libA64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineARM64
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmtd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies)
+      binA64\static_mt\TestSuited.exe
+      ..\..\..\libA64;%(AdditionalLibraryDirectories)
+      true
+      true
+      binA64\static_mt\TestSuited.pdb
+      Console
+      MachineARM64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmt.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies)
+      binA64\static_mt\TestSuite.exe
+      ..\..\..\libA64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineARM64
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmdd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies)
+      binA64\static_md\TestSuited.exe
+      ..\..\..\libA64;%(AdditionalLibraryDirectories)
+      true
+      true
+      binA64\static_md\TestSuited.pdb
+      Console
+      MachineARM64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies)
+      binA64\static_md\TestSuite.exe
+      ..\..\..\libA64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineARM64
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitd.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\TestSuited.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin\TestSuited.pdb
+      Console
+      MachineX86
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnit.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\TestSuite.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX86
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmtd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\static_mt\TestSuited.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin\static_mt\TestSuited.pdb
+      Console
+      MachineX86
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmt.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\static_mt\TestSuite.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX86
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\CppUnit\WinTestRunner\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmdd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\static_md\TestSuited.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin\static_md\TestSuited.pdb
+      Console
+      MachineX86
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\static_md\TestSuite.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX86
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitd.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\TestSuited.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin64\TestSuited.pdb
+      Console
+      MachineX64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnit.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\TestSuite.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX64
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmtd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\static_mt\TestSuited.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin64\static_mt\TestSuited.pdb
+      Console
+      MachineX64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmt.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\static_mt\TestSuite.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX64
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmdd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\static_md\TestSuited.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin64\static_md\TestSuited.pdb
+      Console
+      MachineX64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\mysql\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmd.lib;iphlpapi.lib;winmm.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\static_md\TestSuite.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX64
+    
+  
+  
+    
+    
+    
+  
+  
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+  
+  
+  
+
diff --git a/vendor/POCO/Data/MySQL/testsuite/TestSuite_vs170.vcxproj.filters b/vendor/POCO/Data/MySQL/testsuite/TestSuite_vs170.vcxproj.filters
new file mode 100644
index 00000000..1c224ebd
--- /dev/null
+++ b/vendor/POCO/Data/MySQL/testsuite/TestSuite_vs170.vcxproj.filters
@@ -0,0 +1,54 @@
+
+
+  
+    
+      {449315c7-5108-4fb4-b8a0-0442787a8945}
+    
+    
+      {2fa4dffd-6dba-4189-b9f5-3c4a041e6809}
+    
+    
+      {cb8a4a23-72b2-4622-ac88-ded8df44a54a}
+    
+    
+      {da3d59c5-7f8e-4ffe-942d-cecdeee6ec58}
+    
+    
+      {7d488ccf-a2e1-42d4-b6bd-fc91269fb5df}
+    
+    
+      {90fc90a8-745f-4296-a8e9-7a09caef75f8}
+    
+    
+      {848aa036-edb1-4b2e-bd60-8db096b13241}
+    
+    
+      {ff2f59ec-d56d-45a5-890a-0a0a6cd26044}
+    
+  
+  
+    
+      MySQL\Header Files
+    
+    
+      MySQL\Header Files
+    
+    
+      _Suite\Header Files
+    
+  
+  
+    
+      MySQL\Source Files
+    
+    
+      MySQL\Source Files
+    
+    
+      _Suite\Source Files
+    
+    
+      _Driver\Source Files
+    
+  
+
\ No newline at end of file
diff --git a/vendor/POCO/Data/MySQL/testsuite/run-db-setup.sh b/vendor/POCO/Data/MySQL/testsuite/run-db-setup.sh
new file mode 100644
index 00000000..c675b58c
--- /dev/null
+++ b/vendor/POCO/Data/MySQL/testsuite/run-db-setup.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+#apt-get install mariadb-server
+USER=pocotest
+PASS=pocotest
+
+mysql -uroot <date();
 	recreatePersonTimeTable();
 	_pExecutor->time();
+	recreatePersonTimestampTable();
+	_pExecutor->timestamp();
 }
 
 
@@ -469,6 +471,32 @@ void MySQLTest::testBLOBStmt()
 }
 
 
+void MySQLTest::testLongBLOB()
+{
+	if (!_pSession) fail ("Test not available.");
+
+	recreatePersonLongBLOBTable();
+	_pExecutor->longBlob();
+}
+
+void MySQLTest::testLongTEXT()
+{
+	if (!_pSession) fail ("Test not available.");
+
+	recreatePersonLongBLOBTable();
+	_pExecutor->longText();
+}
+
+#ifdef POCO_MYSQL_JSON
+void MySQLTest::testJSON()
+{
+	if (!_pSession) fail("Test not available.");
+
+	recreatePersonJSONTable();
+	_pExecutor->json();
+}
+#endif
+
 void MySQLTest::testUnsignedInts()
 {
 	if (!_pSession) fail ("Test not available.");
@@ -752,6 +780,33 @@ void MySQLTest::recreatePersonTimeTable()
 }
 
 
+void MySQLTest::recreatePersonTimestampTable()
+{
+	dropTable("Person");
+	try { *_pSession << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Birthday TIMESTAMP(6))", now; }
+	catch(ConnectionException& ce){ std::cout << ce.displayText() << std::endl; fail ("recreatePersonTimestampTable()"); }
+	catch(StatementException& se){ std::cout << se.displayText() << std::endl; fail ("recreatePersonTimestampTable()"); }
+}
+
+
+void MySQLTest::recreatePersonLongBLOBTable()
+{
+	dropTable("Person");
+	try { *_pSession << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Biography LONGTEXT)", now; }
+	catch(ConnectionException& ce){ std::cout << ce.displayText() << std::endl; fail ("recreatePersonLongBLOBTable()"); }
+	catch(StatementException& se){ std::cout << se.displayText() << std::endl; fail ("recreatePersonLongBLOBTable()"); }
+}
+
+#ifdef POCO_MYSQL_JSON
+void MySQLTest::recreatePersonJSONTable()
+{
+	dropTable("Person");
+	try { *_pSession << "CREATE TABLE Person (LastName VARCHAR(30), FirstName VARCHAR(30), Address VARCHAR(30), Biography JSON)", now; }
+	catch (ConnectionException& ce) { std::cout << ce.displayText() << std::endl; fail("recreatePersonJSONTable()"); }
+	catch (StatementException& se) { std::cout << se.displayText() << std::endl; fail("recreatePersonJSONTable()"); }
+}
+#endif
+
 void MySQLTest::recreateIntsTable()
 {
 	dropTable("Strings");
@@ -919,6 +974,11 @@ CppUnit::Test* MySQLTest::suite()
 	CppUnit_addTest(pSuite, MySQLTest, testDateTime);
 	//CppUnit_addTest(pSuite, MySQLTest, testBLOB);
 	CppUnit_addTest(pSuite, MySQLTest, testBLOBStmt);
+	CppUnit_addTest(pSuite, MySQLTest, testLongBLOB);
+	CppUnit_addTest(pSuite, MySQLTest, testLongTEXT);
+#ifdef POCO_MYSQL_JSON
+	CppUnit_addTest(pSuite, MySQLTest, testJSON);
+#endif
 	CppUnit_addTest(pSuite, MySQLTest, testUnsignedInts);
 	CppUnit_addTest(pSuite, MySQLTest, testFloat);
 	CppUnit_addTest(pSuite, MySQLTest, testDouble);
diff --git a/vendor/POCO/Data/MySQL/testsuite/src/MySQLTest.h b/vendor/POCO/Data/MySQL/testsuite/src/MySQLTest.h
index 150401c4..9a2568b3 100644
--- a/vendor/POCO/Data/MySQL/testsuite/src/MySQLTest.h
+++ b/vendor/POCO/Data/MySQL/testsuite/src/MySQLTest.h
@@ -79,6 +79,11 @@ public:
 	void testDateTime();
 	void testBLOB();
 	void testBLOBStmt();
+	void testLongBLOB();
+	void testLongTEXT();
+#ifdef POCO_MYSQL_JSON
+	void testJSON();
+#endif
 
 	void testUnsignedInts();
 	void testFloat();
@@ -117,6 +122,11 @@ private:
 	void recreatePersonDateTimeTable();
 	void recreatePersonDateTable();
 	void recreatePersonTimeTable();
+	void recreatePersonTimestampTable();
+	void recreatePersonLongBLOBTable();
+#ifdef POCO_MYSQL_JSON
+	void recreatePersonJSONTable();
+#endif
 	void recreateStringsTable();
 	void recreateIntsTable();
 	void recreateUnsignedIntsTable();
diff --git a/vendor/POCO/Data/MySQL/testsuite/src/SQLExecutor.cpp b/vendor/POCO/Data/MySQL/testsuite/src/SQLExecutor.cpp
index 27beb6f4..7939564b 100644
--- a/vendor/POCO/Data/MySQL/testsuite/src/SQLExecutor.cpp
+++ b/vendor/POCO/Data/MySQL/testsuite/src/SQLExecutor.cpp
@@ -29,7 +29,7 @@
 #include 
 #endif
 
-#include 
+
 #include 
 #include 
 
@@ -1364,6 +1364,34 @@ void SQLExecutor::time()
 }
 
 
+void SQLExecutor::timestamp()
+{
+	std::string funct = "timestamp()";
+	std::string lastName("Bart");
+	std::string firstName("Simpson");
+	std::string address("Springfield");
+	DateTime birthday(1980, 4, 1, 5, 45, 12, 354, 879);
+	
+	int count = 0;
+	try { *_pSession << "INSERT INTO Person VALUES (?,?,?,?)", use(lastName), use(firstName), use(address), use(birthday), now; }
+	catch(ConnectionException& ce){ std::cout << ce.displayText() << std::endl; fail (funct); }
+	catch(StatementException& se){ std::cout << se.displayText() << std::endl; fail (funct); }
+	try { *_pSession << "SELECT COUNT(*) FROM Person", into(count), now; }
+	catch(ConnectionException& ce){ std::cout << ce.displayText() << std::endl; fail (funct); }
+	catch(StatementException& se){ std::cout << se.displayText() << std::endl; fail (funct); }
+	assertTrue (count == 1);
+	
+	DateTime bd;
+	assertTrue (bd != birthday);
+	try { *_pSession << "SELECT Birthday FROM Person", into(bd), now; }
+	catch(ConnectionException& ce){ std::cout << ce.displayText() << std::endl; fail (funct); }
+	catch(StatementException& se){ std::cout << se.displayText() << std::endl; fail (funct); }
+	assertTrue (bd == birthday);
+	
+	std::cout << std::endl << RecordSet(*_pSession, "SELECT * FROM Person");
+}
+
+
 void SQLExecutor::blob(unsigned int bigSize)
 {
 	std::string funct = "blob()";
@@ -1435,6 +1463,83 @@ void SQLExecutor::blobStmt()
 }
 
 
+void SQLExecutor::longBlob()
+{
+	std::string funct = "longBlob()";
+	std::string lastName("lastname");
+	std::string firstName("firstname");
+	std::string address("Address");
+	Poco::Data::CLOB biography("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 123);
+
+	int count = 0;
+	Statement ins = (*_pSession << "INSERT INTO Person VALUES (?,?,?,?)", use(lastName), use(firstName), use(address), use(biography));
+	ins.execute();
+	try { *_pSession << "SELECT COUNT(*) FROM Person", into(count), now; }
+	catch(ConnectionException& ce){ std::cout << ce.displayText() << std::endl; fail (funct); }
+	catch(StatementException& se){ std::cout << se.displayText() << std::endl; fail (funct); }
+	assertTrue (count == 1);
+
+	Poco::Data::CLOB res;
+	poco_assert (res.size() == 0);
+	Statement stmt = (*_pSession << "SELECT Biography FROM Person", into(res));
+	try { stmt.execute(); }
+	catch(ConnectionException& ce){ std::cout << ce.displayText() << std::endl; fail (funct); }
+	catch(StatementException& se){ std::cout << se.displayText() << std::endl; fail (funct); }
+	poco_assert (res == biography);
+}
+
+void SQLExecutor::longText()
+{
+	std::string funct = "longText()";
+	std::string lastName("lastname");
+	std::string firstName("firstname");
+	std::string address("Address");
+	std::string biography("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 123);
+
+	int count = 0;
+	Statement ins = (*_pSession << "INSERT INTO Person VALUES (?,?,?,?)", use(lastName), use(firstName), use(address), use(biography));
+	ins.execute();
+	try { *_pSession << "SELECT COUNT(*) FROM Person", into(count), now; }
+	catch(ConnectionException& ce){ std::cout << ce.displayText() << std::endl; fail (funct); }
+	catch(StatementException& se){ std::cout << se.displayText() << std::endl; fail (funct); }
+	assertTrue (count == 1);
+
+	std::string longTextRes;
+	poco_assert (longTextRes.size() == 0);
+	Statement stmt = (*_pSession << "SELECT Biography FROM Person", into(longTextRes));
+	try { stmt.execute(); }
+	catch(ConnectionException& ce){ std::cout << ce.displayText() << std::endl; fail (funct); }
+	catch(StatementException& se){ std::cout << se.displayText() << std::endl; fail (funct); }
+	poco_assert (longTextRes == biography);
+}
+
+#ifdef POCO_MYSQL_JSON
+void SQLExecutor::json()
+{
+	std::string funct = "json()";
+	std::string lastName("lastname");
+	std::string firstName("firstname");
+	std::string address("Address");
+	std::string biography(R"({"biography": {"count": 42, "title": "Lorem Ipsum", "released": true}})");
+
+	int count = 0;
+	Statement ins = (*_pSession << "INSERT INTO Person VALUES (?,?,?,?)", use(lastName), use(firstName), use(address), use(biography));
+	ins.execute();
+	try { *_pSession << "SELECT COUNT(*) FROM Person", into(count), now; }
+	catch (ConnectionException& ce) { std::cout << ce.displayText() << std::endl; fail(funct); }
+	catch (StatementException& se) { std::cout << se.displayText() << std::endl; fail(funct); }
+	assertTrue(count == 1);
+
+	Poco::Data::JSON res;
+	poco_assert(res.size() == 0);
+	Statement stmt = (*_pSession << "SELECT Biography FROM Person", into(res));
+	try { stmt.execute(); }
+	catch (ConnectionException& ce) { std::cout << ce.displayText() << std::endl; fail(funct); }
+	catch (StatementException& se) { std::cout << se.displayText() << std::endl; fail(funct); }
+	poco_assert(res == biography);
+}
+#endif
+
 void SQLExecutor::tuples()
 {
 	typedef Tuple TupleType;
diff --git a/vendor/POCO/Data/MySQL/testsuite/src/SQLExecutor.h b/vendor/POCO/Data/MySQL/testsuite/src/SQLExecutor.h
index 03e4ffe2..ba300212 100644
--- a/vendor/POCO/Data/MySQL/testsuite/src/SQLExecutor.h
+++ b/vendor/POCO/Data/MySQL/testsuite/src/SQLExecutor.h
@@ -83,6 +83,12 @@ public:
 	void dateTime();
 	void date();
 	void time();
+	void timestamp();
+	void longBlob();
+	void longText();
+#ifdef POCO_MYSQL_JSON
+	void json();
+#endif	
 	void unsignedInts();
 	void floats();
 	void doubles();
diff --git a/vendor/POCO/Data/ODBC/CMakeLists.txt b/vendor/POCO/Data/ODBC/CMakeLists.txt
index 98cd133b..764f6a50 100644
--- a/vendor/POCO/Data/ODBC/CMakeLists.txt
+++ b/vendor/POCO/Data/ODBC/CMakeLists.txt
@@ -25,7 +25,7 @@ target_link_libraries(DataODBC PUBLIC Poco::Data ODBC::ODBC)
 target_include_directories(DataODBC
 	PUBLIC
 		$
-		$
+		$
 	PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
 )
 target_compile_definitions(DataODBC PUBLIC THREADSAFE)
diff --git a/vendor/POCO/Data/ODBC/Makefile b/vendor/POCO/Data/ODBC/Makefile
index 00e86dc4..180a72b7 100644
--- a/vendor/POCO/Data/ODBC/Makefile
+++ b/vendor/POCO/Data/ODBC/Makefile
@@ -10,7 +10,7 @@ include ODBC.make
 
 objects = Binder ConnectionHandle Connector EnvironmentHandle \
 	Extractor ODBCException ODBCMetaColumn ODBCStatementImpl \
-	Parameter Preparator SessionImpl TypeInfo Unicode Utility 
+	Parameter Preparator SessionImpl TypeInfo Unicode Utility
 
 target         = PocoDataODBC
 target_version = $(LIBVERSION)
diff --git a/vendor/POCO/Data/ODBC/ODBC_vs170.sln b/vendor/POCO/Data/ODBC/ODBC_vs170.sln
new file mode 100644
index 00000000..c591617b
--- /dev/null
+++ b/vendor/POCO/Data/ODBC/ODBC_vs170.sln
@@ -0,0 +1,144 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ODBC", "ODBC_vs170.vcxproj", "{1B29820D-375F-11DB-837B-00123FC423B5}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs170.vcxproj", "{00627063-395B-4413-9099-23BDB56562FA}"
+	ProjectSection(ProjectDependencies) = postProject
+		{1B29820D-375F-11DB-837B-00123FC423B5} = {1B29820D-375F-11DB-837B-00123FC423B5}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		debug_shared|ARM64 = debug_shared|ARM64
+		release_shared|ARM64 = release_shared|ARM64
+		debug_static_mt|ARM64 = debug_static_mt|ARM64
+		release_static_mt|ARM64 = release_static_mt|ARM64
+		debug_static_md|ARM64 = debug_static_md|ARM64
+		release_static_md|ARM64 = release_static_md|ARM64
+		debug_shared|Win32 = debug_shared|Win32
+		release_shared|Win32 = release_shared|Win32
+		debug_static_mt|Win32 = debug_static_mt|Win32
+		release_static_mt|Win32 = release_static_mt|Win32
+		debug_static_md|Win32 = debug_static_md|Win32
+		release_static_md|Win32 = release_static_md|Win32
+		debug_shared|x64 = debug_shared|x64
+		release_shared|x64 = release_shared|x64
+		debug_static_mt|x64 = debug_static_mt|x64
+		release_static_mt|x64 = release_static_mt|x64
+		debug_static_md|x64 = debug_static_md|x64
+		release_static_md|x64 = release_static_md|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_shared|ARM64.Build.0 = release_shared|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_shared|Win32.Build.0 = debug_shared|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_shared|Win32.ActiveCfg = release_shared|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_shared|Win32.Build.0 = release_shared|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_shared|Win32.Deploy.0 = release_shared|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_md|Win32.Build.0 = release_static_md|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_shared|x64.ActiveCfg = debug_shared|x64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_shared|x64.Build.0 = debug_shared|x64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_shared|x64.Deploy.0 = debug_shared|x64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_shared|x64.ActiveCfg = release_shared|x64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_shared|x64.Build.0 = release_shared|x64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_shared|x64.Deploy.0 = release_shared|x64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_mt|x64.Build.0 = release_static_mt|x64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_md|x64.Build.0 = debug_static_md|x64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_md|x64.ActiveCfg = release_static_md|x64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_md|x64.Build.0 = release_static_md|x64
+		{1B29820D-375F-11DB-837B-00123FC423B5}.release_static_md|x64.Deploy.0 = release_static_md|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_shared|ARM64.Build.0 = release_shared|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_shared|Win32.Build.0 = debug_shared|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.release_shared|Win32.ActiveCfg = release_shared|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.release_shared|Win32.Build.0 = release_shared|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.release_shared|Win32.Deploy.0 = release_shared|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_md|Win32.Build.0 = release_static_md|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_shared|x64.ActiveCfg = debug_shared|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_shared|x64.Build.0 = debug_shared|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_shared|x64.Deploy.0 = debug_shared|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_shared|x64.ActiveCfg = release_shared|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_shared|x64.Build.0 = release_shared|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_shared|x64.Deploy.0 = release_shared|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_mt|x64.Build.0 = release_static_mt|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_md|x64.Build.0 = debug_static_md|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_md|x64.ActiveCfg = release_static_md|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_md|x64.Build.0 = release_static_md|x64
+		{00627063-395B-4413-9099-23BDB56562FA}.release_static_md|x64.Deploy.0 = release_static_md|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/vendor/POCO/Data/ODBC/ODBC_vs170.vcxproj b/vendor/POCO/Data/ODBC/ODBC_vs170.vcxproj
new file mode 100644
index 00000000..52b5e120
--- /dev/null
+++ b/vendor/POCO/Data/ODBC/ODBC_vs170.vcxproj
@@ -0,0 +1,939 @@
+
+
+  
+    
+      debug_shared
+      ARM64
+    
+    
+      debug_shared
+      Win32
+    
+    
+      debug_shared
+      x64
+    
+    
+      debug_static_md
+      ARM64
+    
+    
+      debug_static_md
+      Win32
+    
+    
+      debug_static_md
+      x64
+    
+    
+      debug_static_mt
+      ARM64
+    
+    
+      debug_static_mt
+      Win32
+    
+    
+      debug_static_mt
+      x64
+    
+    
+      release_shared
+      ARM64
+    
+    
+      release_shared
+      Win32
+    
+    
+      release_shared
+      x64
+    
+    
+      release_static_md
+      ARM64
+    
+    
+      release_static_md
+      Win32
+    
+    
+      release_static_md
+      x64
+    
+    
+      release_static_mt
+      ARM64
+    
+    
+      release_static_mt
+      Win32
+    
+    
+      release_static_mt
+      x64
+    
+  
+  
+    17.0
+    ODBC
+    {1B29820D-375F-11DB-837B-00123FC423B5}
+    ODBC
+    Win32Proj
+  
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+  
+    <_ProjectFileVersion>17.0.32505.173
+    PocoDataODBCA64d
+    PocoDataODBCmdd
+    PocoDataODBCmtd
+    PocoDataODBCA64
+    PocoDataODBCmd
+    PocoDataODBCmt
+    PocoDataODBCd
+    PocoDataODBCmdd
+    PocoDataODBCmtd
+    PocoDataODBC
+    PocoDataODBCmd
+    PocoDataODBCmt
+    PocoDataODBC64d
+    PocoDataODBCmdd
+    PocoDataODBCmtd
+    PocoDataODBC64
+    PocoDataODBCmd
+    PocoDataODBCmt
+  
+  
+    ..\..\binA64\
+    objA64\ODBC\$(Configuration)\
+    true
+  
+  
+    ..\..\binA64\
+    objA64\ODBC\$(Configuration)\
+    false
+  
+  
+    ..\..\libA64\
+    objA64\ODBC\$(Configuration)\
+  
+  
+    ..\..\libA64\
+    objA64\ODBC\$(Configuration)\
+  
+  
+    ..\..\libA64\
+    objA64\ODBC\$(Configuration)\
+  
+  
+    ..\..\libA64\
+    objA64\ODBC\$(Configuration)\
+  
+  
+    ..\..\bin\
+    obj\ODBC\$(Configuration)\
+    true
+  
+  
+    ..\..\bin\
+    obj\ODBC\$(Configuration)\
+    false
+  
+  
+    ..\..\lib\
+    obj\ODBC\$(Configuration)\
+  
+  
+    ..\..\lib\
+    obj\ODBC\$(Configuration)\
+  
+  
+    ..\..\lib\
+    obj\ODBC\$(Configuration)\
+  
+  
+    ..\..\lib\
+    obj\ODBC\$(Configuration)\
+  
+  
+    ..\..\bin64\
+    obj64\ODBC\$(Configuration)\
+    true
+  
+  
+    ..\..\bin64\
+    obj64\ODBC\$(Configuration)\
+    false
+  
+  
+    ..\..\lib64\
+    obj64\ODBC\$(Configuration)\
+  
+  
+    ..\..\lib64\
+    obj64\ODBC\$(Configuration)\
+  
+  
+    ..\..\lib64\
+    obj64\ODBC\$(Configuration)\
+  
+  
+    ..\..\lib64\
+    obj64\ODBC\$(Configuration)\
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;_USRDLL;THREADSAFE;ODBC_EXPORTS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+      ..\..\binA64\PocoDataODBCA64d.dll
+      true
+      true
+      ..\..\binA64\PocoDataODBCA64d.pdb
+      ..\..\libA64;%(AdditionalLibraryDirectories)
+      Console
+      ..\..\libA64\PocoDataODBCd.lib
+      MachineARM64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;_USRDLL;THREADSAFE;ODBC_EXPORTS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+      ..\..\binA64\PocoDataODBCA64.dll
+      true
+      false
+      ..\..\libA64;%(AdditionalLibraryDirectories)
+      Console
+      true
+      true
+      ..\..\libA64\PocoDataODBC.lib
+      MachineARM64
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      ..\..\libA64\PocoDataODBCmtd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\libA64\PocoDataODBCmtd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\libA64\PocoDataODBCmt.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      ..\..\libA64\PocoDataODBCmdd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\libA64\PocoDataODBCmdd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\libA64\PocoDataODBCmd.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;_USRDLL;THREADSAFE;ODBC_EXPORTS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+      ..\..\bin\PocoDataODBCd.dll
+      true
+      true
+      ..\..\bin\PocoDataODBCd.pdb
+      ..\..\lib;%(AdditionalLibraryDirectories)
+      Console
+      ..\..\lib\PocoDataODBCd.lib
+      MachineX86
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;_USRDLL;THREADSAFE;ODBC_EXPORTS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+      ..\..\bin\PocoDataODBC.dll
+      true
+      false
+      ..\..\lib;%(AdditionalLibraryDirectories)
+      Console
+      true
+      true
+      ..\..\lib\PocoDataODBC.lib
+      MachineX86
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      ..\..\lib\PocoDataODBCmtd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\lib\PocoDataODBCmtd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\lib\PocoDataODBCmt.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      ..\..\lib\PocoDataODBCmdd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\lib\PocoDataODBCmdd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      ..\..\lib\PocoDataODBCmd.pdb
+      Level3
+      
+      Default
+      true
+    
+    
+      odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+      ..\..\lib\PocoDataODBCmd.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;_USRDLL;THREADSAFE;ODBC_EXPORTS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+      ..\..\bin64\PocoDataODBC64d.dll
+      true
+      true
+      ..\..\bin64\PocoDataODBC64d.pdb
+      ..\..\lib64;%(AdditionalLibraryDirectories)
+      Console
+      ..\..\lib64\PocoDataODBCd.lib
+      MachineX64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;_USRDLL;THREADSAFE;ODBC_EXPORTS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+      ..\..\bin64\PocoDataODBC64.dll
+      true
+      false
+      ..\..\lib64;%(AdditionalLibraryDirectories)
+      Console
+      true
+      true
+      ..\..\lib64\PocoDataODBC.lib
+      MachineX64
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      ..\..\lib64\PocoDataODBCmtd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\lib64\PocoDataODBCmtd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\lib64\PocoDataODBCmt.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      ..\..\lib64\PocoDataODBCmdd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\lib64\PocoDataODBCmdd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;THREADSAFE;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\lib64\PocoDataODBCmd.lib
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+  
+    
+      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
+    
+  
+  
+  
+
diff --git a/vendor/POCO/Data/ODBC/ODBC_vs170.vcxproj.filters b/vendor/POCO/Data/ODBC/ODBC_vs170.vcxproj.filters
new file mode 100644
index 00000000..6ea3e1d0
--- /dev/null
+++ b/vendor/POCO/Data/ODBC/ODBC_vs170.vcxproj.filters
@@ -0,0 +1,129 @@
+
+
+  
+    
+      {b8ec0707-a887-473f-b9df-d375a3cecfc6}
+    
+    
+      {5e75780b-745d-43a9-b8d4-2df43dff6bf0}
+    
+    
+      {fd620827-243b-4487-8eaa-0a5fa27be6ee}
+    
+  
+  
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+  
+  
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+  
+  
+    
+  
+
\ No newline at end of file
diff --git a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Binder.h b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Binder.h
index 94293c91..92fc6f1e 100644
--- a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Binder.h
+++ b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Binder.h
@@ -71,7 +71,9 @@ public:
 	Binder(const StatementHandle& rStmt,
 		std::size_t maxFieldSize,
 		ParameterBinding dataBinding = PB_IMMEDIATE,
-		const TypeInfo* pDataTypes = 0);
+		const TypeInfo* pDataTypes = 0,
+		Poco::TextEncoding::Ptr pFromEncoding = nullptr,
+		Poco::TextEncoding::Ptr pDBEncoding = nullptr);
 		/// Creates the Binder.
 
 	~Binder();
@@ -422,6 +424,8 @@ private:
 
 		SQLLEN* pLenIn = new SQLLEN;
 		*pLenIn  = size;
+		// prevent SQLSTATE = HY104 "Invalid precision value"
+		SQLULEN columnSize = size ? size : 1;
 
 		if (PB_AT_EXEC == _paramBinding)
 			*pLenIn  = SQL_LEN_DATA_AT_EXEC(size);
@@ -433,7 +437,7 @@ private:
 			SQL_PARAM_INPUT,
 			SQL_C_BINARY,
 			SQL_LONGVARBINARY,
-			(SQLUINTEGER) size,
+			columnSize,
 			0,
 			pVal,
 			(SQLINTEGER) size,
@@ -538,7 +542,7 @@ private:
 	}
 
 	template 
-	void bindImplContainerString(std::size_t pos, const C& val, Direction dir)
+	void bindImplContainerString(std::size_t pos, const C& valC, Direction dir)
 		/// Utility function to bind containers of strings.
 	{
 		if (isOutBound(dir) || !isInBound(dir))
@@ -547,7 +551,19 @@ private:
 		if (PB_IMMEDIATE != _paramBinding)
 			throw InvalidAccessException("Containers can only be bound immediately.");
 
-		std::size_t length = val.size();
+		const C* pVal = 0;
+		if (!transcodeRequired()) pVal = &valC;
+		else
+		{
+			pVal = new C(valC.size());
+			typename C::const_iterator valIt = valC.begin();
+			typename C::const_iterator valEnd = valC.end();
+			typename C::iterator tcIt = const_cast(pVal)->begin();
+			for (; valIt != valEnd; ++valIt, ++tcIt)
+				transcode(*valIt, *tcIt);
+		}
+
+		std::size_t length = pVal->size();
 
 		if (0 == length)
 			throw InvalidArgumentException("Empty container not allowed.");
@@ -560,7 +576,7 @@ private:
 
 		if (size == _maxFieldSize)
 		{
-			getMinValueSize(val, size);
+			getMinValueSize(*pVal, size);
 			// accomodate for terminating zero
 			if (size != _maxFieldSize) ++size;
 		}
@@ -574,20 +590,25 @@ private:
 		if (_charPtrs.size() <= pos)
 			_charPtrs.resize(pos + 1, 0);
 
-		_charPtrs[pos] = (char*) std::calloc(val.size() * size, sizeof(char));
+		_charPtrs[pos] = (char*) std::calloc(pVal->size() * size, sizeof(char));
 
+		std::string typeID = typeid(*pVal).name();
 		std::size_t strSize;
 		std::size_t offset = 0;
-		typename C::const_iterator it = val.begin();
-		typename C::const_iterator end = val.end();
+		typename C::const_iterator it = pVal->begin();
+		typename C::const_iterator end = pVal->end();
 		for (; it != end; ++it)
 		{
 			strSize = it->size();
 			if (strSize > size)
-				throw LengthExceededException("SQLBindParameter(std::vector)");
+			{
+				if (transcodeRequired()) delete pVal;
+				throw LengthExceededException(Poco::format("SQLBindParameter(%s)", typeID));
+			}
 			std::memcpy(_charPtrs[pos] + offset, it->c_str(), strSize);
 			offset += size;
 		}
+		if (transcodeRequired()) delete pVal;
 
 		if (Utility::isError(SQLBindParameter(_rStmt,
 			(SQLUSMALLINT) pos + 1,
@@ -600,7 +621,7 @@ private:
 			(SQLINTEGER) size,
 			&(*_vecLengthIndicator[pos])[0])))
 		{
-			throw StatementException(_rStmt, "SQLBindParameter(std::vector)");
+			throw StatementException(_rStmt, Poco::format("SQLBindParameter(%s)", typeID));
 		}
 	}
 
diff --git a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Connector.h b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Connector.h
index 8849bf77..6ddfedf7 100644
--- a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Connector.h
+++ b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Connector.h
@@ -58,7 +58,7 @@ public:
 		///
 		/// This can cause issues with SQL Server, resulting in an error
 		/// ("The data types varchar and text are incompatible in the equal to operator")
-		/// when comparing against a VARCHAR. 
+		/// when comparing against a VARCHAR.
 		///
 		/// Set this to false to bind std::string to SQL_VARCHAR.
 		///
diff --git a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Diagnostics.h b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Diagnostics.h
index 86c15fa4..818be4a1 100644
--- a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Diagnostics.h
+++ b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Diagnostics.h
@@ -36,7 +36,7 @@ template 
 class Diagnostics
 	/// Utility class providing functionality for retrieving ODBC diagnostic
 	/// records. Diagnostics object must be created with corresponding handle
-	/// as constructor argument. During construction, diagnostic records fields 
+	/// as constructor argument. During construction, diagnostic records fields
 	/// are populated and the object is ready for querying.
 {
 public:
@@ -92,7 +92,7 @@ public:
 	}
 
 	std::string connectionName() const
-		/// Returns the connection name. 
+		/// Returns the connection name.
 		/// If there is no active connection, connection name defaults to NONE.
 		/// If connection name is not applicable for query context (such as when querying environment handle),
 		/// connection name defaults to NOT_APPLICABLE.
@@ -146,54 +146,54 @@ public:
 
 		reset();
 
-		while (!Utility::isError(SQLGetDiagRec(handleType, 
-			_handle, 
-			count, 
-			df._sqlState, 
-			&df._nativeError, 
-			df._message, 
-			SQL_MESSAGE_LENGTH, 
-			&messageLength))) 
+		while (!Utility::isError(SQLGetDiagRec(handleType,
+			_handle,
+			count,
+			df._sqlState,
+			&df._nativeError,
+			df._message,
+			SQL_MESSAGE_LENGTH,
+			&messageLength)))
 		{
 			if (1 == count)
 			{
 				// success of the following two calls is optional
 				// (they fail if connection has not been established yet
 				//  or return empty string if not applicable for the context)
-				if (Utility::isError(SQLGetDiagField(handleType, 
-					_handle, 
-					count, 
-					SQL_DIAG_CONNECTION_NAME, 
-					_connectionName, 
-					sizeof(_connectionName), 
+				if (Utility::isError(SQLGetDiagField(handleType,
+					_handle,
+					count,
+					SQL_DIAG_CONNECTION_NAME,
+					_connectionName,
+					sizeof(_connectionName),
 					&messageLength)))
 				{
-					std::size_t len = sizeof(_connectionName) > none.length() ? 
+					std::size_t len = sizeof(_connectionName) > none.length() ?
 						none.length() : sizeof(_connectionName) - 1;
 					std::memcpy(_connectionName, none.c_str(), len);
 				}
-				else if (0 == _connectionName[0]) 
+				else if (0 == _connectionName[0])
 				{
-					std::size_t len = sizeof(_connectionName) > na.length() ? 
+					std::size_t len = sizeof(_connectionName) > na.length() ?
 						na.length() : sizeof(_connectionName) - 1;
 					std::memcpy(_connectionName, na.c_str(), len);
 				}
-				
-				if (Utility::isError(SQLGetDiagField(handleType, 
-					_handle, 
-					count, 
-					SQL_DIAG_SERVER_NAME, 
-					_serverName, 
-					sizeof(_serverName), 
+
+				if (Utility::isError(SQLGetDiagField(handleType,
+					_handle,
+					count,
+					SQL_DIAG_SERVER_NAME,
+					_serverName,
+					sizeof(_serverName),
 					&messageLength)))
 				{
-					std::size_t len = sizeof(_serverName) > none.length() ? 
+					std::size_t len = sizeof(_serverName) > none.length() ?
 						none.length() : sizeof(_serverName) - 1;
 					std::memcpy(_serverName, none.c_str(), len);
 				}
-				else if (0 == _serverName[0]) 
+				else if (0 == _serverName[0])
 				{
-					std::size_t len = sizeof(_serverName) > na.length() ? 
+					std::size_t len = sizeof(_serverName) > na.length() ?
 						na.length() : sizeof(_serverName) - 1;
 					std::memcpy(_serverName, na.c_str(), len);
 				}
diff --git a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Error.h b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Error.h
index 049cc02d..8afc0846 100644
--- a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Error.h
+++ b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Error.h
@@ -66,11 +66,11 @@ public:
 	std::string& toString(int index, std::string& str) const
 		/// Generates the string for the diagnostic record.
 	{
-		if ((index < 0) || (index > (count() - 1))) 
+		if ((index < 0) || (index > (count() - 1)))
 			return str;
 
 		std::string s;
-		Poco::format(s, 
+		Poco::format(s,
 			"===========================\n"
 			"ODBC Diagnostic record #%d:\n"
 			"===========================\n"
@@ -90,7 +90,7 @@ public:
 	{
 		std::string str;
 
-		Poco::format(str, 
+		Poco::format(str,
 			"Connection:%s\nServer:%s\n",
 			_diagnostics.connectionName(),
 			_diagnostics.serverName());
diff --git a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Extractor.h b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Extractor.h
index 1779cb61..eff01dda 100644
--- a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Extractor.h
+++ b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Extractor.h
@@ -33,7 +33,6 @@
 #include "Poco/Nullable.h"
 #include "Poco/UTFString.h"
 #include "Poco/TextEncoding.h"
-#include "Poco/TextConverter.h"
 #include "Poco/Exception.h"
 #include 
 #ifdef POCO_OS_FAMILY_WINDOWS
@@ -56,7 +55,8 @@ public:
 
 	Extractor(const StatementHandle& rStmt,
 		Preparator::Ptr pPreparator,
-		Poco::TextEncoding::Ptr pDBEncoding = nullptr);
+		Poco::TextEncoding::Ptr pDBEncoding = nullptr,
+		Poco::TextEncoding::Ptr pToEncoding = nullptr);
 		/// Creates the Extractor.
 
 	~Extractor();
@@ -592,11 +592,10 @@ private:
 		val.clear();
 		if (ret)
 		{
-			Poco::TextConverter conv(*_pDBEncoding, *_pToEncoding);
 			val.resize(res.size());
 			typename C::iterator vIt = val.begin();
 			typename C::iterator it = res.begin();
-			for (; it != res.end(); ++it, ++vIt) conv.convert(*it, *vIt);
+			for (; it != res.end(); ++it, ++vIt) transcode(*it, *vIt);
 		}
 		return ret;
 	}
@@ -607,7 +606,7 @@ private:
 		bool ret = false;
 		if (Preparator::DE_BOUND == _dataExtraction)
 		{
-			if (!_transcode)
+			if (!transcodeRequired())
 				ret = extractBoundImplContainer(pos, val);
 			else
 				ret = stringContainerExtractConvert(pos, val);
@@ -628,9 +627,6 @@ private:
 	PreparatorPtr              _pPreparator;
 	Preparator::DataExtraction _dataExtraction;
 	std::vector        _lengths;
-	Poco::TextEncoding::Ptr    _pDBEncoding;
-	bool                       _transcode;
-	Poco::TextEncoding::Ptr    _pToEncoding;
 };
 
 
diff --git a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Handle.h b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Handle.h
index 962ffe6c..9d9dbc60 100644
--- a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Handle.h
+++ b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Handle.h
@@ -39,14 +39,14 @@ class Handle
 /// ODBC handle class template
 {
 public:
-	Handle(const ConnectionHandle& rConnection): 
+	Handle(const ConnectionHandle& rConnection):
 		_rConnection(rConnection),
 		_handle(0)
 			/// Creates the Handle.
 	{
-		if (Utility::isError(SQLAllocHandle(handleType, 
-			_rConnection, 
-			&_handle))) 
+		if (Utility::isError(SQLAllocHandle(handleType,
+			_rConnection,
+			&_handle)))
 		{
 			throw ODBCException("Could not allocate statement handle.");
 		}
@@ -58,7 +58,7 @@ public:
 		try
 		{
 #if defined(_DEBUG)
-			SQLRETURN rc = 
+			SQLRETURN rc =
 #endif
 			SQLFreeHandle(handleType, _handle);
 			// N.B. Destructors should not throw, but neither do we want to
diff --git a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/ODBCMetaColumn.h b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/ODBCMetaColumn.h
index cc9df6d3..374f34df 100644
--- a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/ODBCMetaColumn.h
+++ b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/ODBCMetaColumn.h
@@ -39,15 +39,15 @@ class ODBC_API ODBCMetaColumn: public MetaColumn
 public:
 	explicit ODBCMetaColumn(const StatementHandle& rStmt, std::size_t position);
 		/// Creates the ODBCMetaColumn.
-		
+
 	~ODBCMetaColumn();
 		/// Destroys the ODBCMetaColumn.
 
 	std::size_t dataLength() const;
-		/// A numeric value that is either the maximum or actual character length of a character 
-		/// string or binary data type. It is the maximum character length for a fixed-length data type, 
-		/// or the actual character length for a variable-length data type. Its value always excludes the 
-		/// null-termination byte that ends the character string. 
+		/// A numeric value that is either the maximum or actual character length of a character
+		/// string or binary data type. It is the maximum character length for a fixed-length data type,
+		/// or the actual character length for a variable-length data type. Its value always excludes the
+		/// null-termination byte that ends the character string.
 		/// This information is returned from the SQL_DESC_LENGTH record field of the IRD.
 
 	bool isUnsigned() const;
diff --git a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/ODBCStatementImpl.h b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/ODBCStatementImpl.h
index e3a6492c..db83e6d2 100644
--- a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/ODBCStatementImpl.h
+++ b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/ODBCStatementImpl.h
@@ -76,7 +76,7 @@ protected:
 		/// Returns true if another compile is possible.
 
 	void compileImpl();
-		/// Compiles the statement, doesn't bind yet. 
+		/// Compiles the statement, doesn't bind yet.
 		/// Does nothing if the statement has already been compiled.
 
 	void bindImpl();
@@ -101,12 +101,12 @@ private:
 	typedef std::vector         ExtractorVec;
 	typedef std::vector      ColumnPtrVec;
 	typedef std::vector         ColumnPtrVecVec;
-	
+
 	static const std::string INVALID_CURSOR_STATE;
 
 	void clear();
 		/// Closes the cursor and resets indicator variables.
-	
+
 	void doBind();
 		/// Binds parameters.
 
@@ -119,8 +119,8 @@ private:
 	void doPrepare();
 		/// Prepares placeholders for data returned by statement.
 		/// It is called during statement compilation for SQL statements
-		/// returning data. For stored procedures returning datasets, 
-		/// it is called upon the first check for data availability 
+		/// returning data. For stored procedures returning datasets,
+		/// it is called upon the first check for data availability
 		/// (see hasNext() function).
 
 	bool hasData() const;
@@ -133,8 +133,8 @@ private:
 		/// Returns true if there is a row fetched but not yet extracted.
 
 	void putData();
-		/// Called whenever SQLExecute returns SQL_NEED_DATA. This is expected 
-		/// behavior for PB_AT_EXEC binding mode. 
+		/// Called whenever SQLExecute returns SQL_NEED_DATA. This is expected
+		/// behavior for PB_AT_EXEC binding mode.
 
 	void addPreparator();
 	void fillColumns();
diff --git a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Parameter.h b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Parameter.h
index e9f11bdb..6afc4fec 100644
--- a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Parameter.h
+++ b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Parameter.h
@@ -36,7 +36,7 @@ class ODBC_API Parameter
 public:
 	explicit Parameter(const StatementHandle& rStmt, std::size_t colNum);
 		/// Creates the Parameter.
-		
+
 	~Parameter();
 		/// Destroys the Parameter.
 
@@ -47,11 +47,11 @@ public:
 		/// Returns the SQL data type.
 
 	std::size_t columnSize() const;
-		/// Returns the the size of the column or expression of the corresponding 
+		/// Returns the the size of the column or expression of the corresponding
 		/// parameter marker as defined by the data source.
 
 	std::size_t decimalDigits() const;
-		/// Returns the number of decimal digits of the column or expression 
+		/// Returns the number of decimal digits of the column or expression
 		/// of the corresponding parameter as defined by the data source.
 
 	bool isNullable() const;
diff --git a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/SessionImpl.h b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/SessionImpl.h
index 0b132cbc..d6726981 100644
--- a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/SessionImpl.h
+++ b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/SessionImpl.h
@@ -54,15 +54,15 @@ public:
 
 	SessionImpl(const std::string& connect,
 		std::size_t loginTimeout,
-		std::size_t maxFieldSize = ODBC_MAX_FIELD_SIZE, 
+		std::size_t maxFieldSize = ODBC_MAX_FIELD_SIZE,
 		bool autoBind = true,
 		bool autoExtract = true);
 		/// Creates the SessionImpl. Opens a connection to the database.
 		/// Throws NotConnectedException if connection was not succesful.
 
 	//@ deprecated
-	SessionImpl(const std::string& connect, 
-		Poco::Any maxFieldSize = ODBC_MAX_FIELD_SIZE, 
+	SessionImpl(const std::string& connect,
+		Poco::Any maxFieldSize = ODBC_MAX_FIELD_SIZE,
 		bool enforceCapability=false,
 		bool autoBind = true,
 		bool autoExtract = true);
@@ -144,7 +144,7 @@ public:
 
 	void setMaxFieldSize(const std::string& rName, const Poco::Any& rValue);
 		/// Sets the max field size (the default used when column size is unknown).
-		
+
 	Poco::Any getMaxFieldSize(const std::string& rName="") const;
 		/// Returns the max field size (the default used when column size is unknown).
 
@@ -154,11 +154,11 @@ public:
 	void setQueryTimeout(const std::string&, const Poco::Any& value);
 		/// Sets the timeout (in seconds) for queries.
 		/// Value must be of type int.
-		
+
 	Poco::Any getQueryTimeout(const std::string&) const;
 		/// Returns the timeout (in seconds) for queries,
 		/// or -1 if no timeout has been set.
-		
+
 	int queryTimeout() const;
 		/// Returns the timeout (in seconds) for queries,
 		/// or -1 if no timeout has been set.
@@ -230,7 +230,7 @@ inline void SessionImpl::setMaxFieldSize(const std::string& rName, const Poco::A
 	_maxFieldSize = rValue;
 }
 
-		
+
 inline Poco::Any SessionImpl::getMaxFieldSize(const std::string& rName) const
 {
 	return _maxFieldSize;
@@ -242,7 +242,7 @@ inline void SessionImpl::setDataTypeInfo(const std::string& rName, const Poco::A
 	throw InvalidAccessException();
 }
 
-		
+
 inline Poco::Any SessionImpl::dataTypeInfo(const std::string& rName) const
 {
 	return &_dataTypes;
diff --git a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/TypeInfo.h b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/TypeInfo.h
index f8b14a80..043bf7e7 100644
--- a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/TypeInfo.h
+++ b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/TypeInfo.h
@@ -89,12 +89,12 @@ public:
 		/// Returns information about specified data type as specified by parameter 'type'.
 		/// The requested information is specified by parameter 'param'.
 		/// Will fail with a Poco::NotFoundException thrown if the param is not found
-		
+
 	bool tryGetInfo(SQLSMALLINT type, const std::string& param, DynamicAny& result) const;
 		/// Returns information about specified data type as specified by parameter 'type' in param result.
 		/// The requested information is specified by parameter 'param'.
 		/// Will return false if the param is not found. The value of result will be not changed in this case.
-			
+
 
 	void print(std::ostream& ostr);
 		/// Prints all the types (as reported by the underlying database)
@@ -104,8 +104,8 @@ private:
 	void fillCTypes();
 	void fillSQLTypes();
 
-	DataTypeMap _cDataTypes; 
-	DataTypeMap _sqlDataTypes; 
+	DataTypeMap _cDataTypes;
+	DataTypeMap _sqlDataTypes;
 	TypeInfoVec _typeInfo;
 	SQLHDBC*    _pHDBC;
 };
diff --git a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Unicode_WIN32.h b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Unicode_WIN32.h
index 2cd237b9..8c22d31c 100644
--- a/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Unicode_WIN32.h
+++ b/vendor/POCO/Data/ODBC/include/Poco/Data/ODBC/Unicode_WIN32.h
@@ -27,7 +27,7 @@ inline void makeUTF16(SQLCHAR* pSQLChar, SQLINTEGER length, std::wstring& target
 	/// Utility function for conversion from UTF-8 to UTF-16
 {
 	int len = length;
-	if (SQL_NTS == len) 
+	if (SQL_NTS == len)
 		len = (int) std::strlen((const char *) pSQLChar);
 
 	UnicodeConverter::toUTF16((const char *) pSQLChar, len, target);
@@ -45,7 +45,7 @@ inline void makeUTF8(Poco::Buffer& buffer, SQLINTEGER length, SQLPOINTE
 	length /= sizeof(wchar_t);
 	std::string result;
 	UnicodeConverter::toUTF8(buffer.begin(), length, result);
-	
+
 	std::memset(pTarget, 0, targetLength);
 #if defined(_MSC_VER)
 #pragma warning(push)
diff --git a/vendor/POCO/Data/ODBC/src/Binder.cpp b/vendor/POCO/Data/ODBC/src/Binder.cpp
index 28cf42fc..9908d3c3 100644
--- a/vendor/POCO/Data/ODBC/src/Binder.cpp
+++ b/vendor/POCO/Data/ODBC/src/Binder.cpp
@@ -30,7 +30,10 @@ namespace ODBC {
 Binder::Binder(const StatementHandle& rStmt,
 	std::size_t maxFieldSize,
 	Binder::ParameterBinding dataBinding,
-	const TypeInfo* pDataTypes):
+	const TypeInfo* pDataTypes,
+	Poco::TextEncoding::Ptr pFromEncoding,
+	Poco::TextEncoding::Ptr pDBEncoding):
+	Poco::Data::AbstractBinder(pFromEncoding, pDBEncoding),
 	_rStmt(rStmt),
 	_paramBinding(dataBinding),
 	_pTypeInfo(pDataTypes),
@@ -99,13 +102,30 @@ void Binder::freeMemory()
 	DateTimeVecVec::iterator itDateTimeVec = _dateTimeVecVec.begin();
 	DateTimeVecVec::iterator itDateTimeVecEnd = _dateTimeVecVec.end();
 	for (; itDateTimeVec != itDateTimeVecEnd; ++itDateTimeVec) delete *itDateTimeVec;
+
+	if (transcodeRequired() && _inParams.size())
+	{
+		ParamMap::iterator itInParams = _inParams.begin();
+		ParamMap::iterator itInParamsEnd = _inParams.end();
+		for (; itInParams != itInParamsEnd; ++itInParams) free(itInParams->first);
+	}
 }
 
 
 void Binder::bind(std::size_t pos, const std::string& val, Direction dir)
 {
+	char* pTCVal = 0;
+	SQLINTEGER size = 0;
+	if (transcodeRequired())
+	{
+		std::string tcVal;
+		transcode(val, tcVal);
+		size = (SQLINTEGER)tcVal.size();
+		pTCVal = reinterpret_cast(std::calloc((size_t)size+1, 1));
+		std::memcpy(pTCVal, tcVal.data(), size);
+	}
+	else size = (SQLINTEGER)val.size();
 	SQLPOINTER pVal = 0;
-	SQLINTEGER size = (SQLINTEGER) val.size();
 	SQLINTEGER colSize = 0;
 	SQLSMALLINT decDigits = 0;
 	getColSizeAndPrecision(pos, SQL_C_CHAR, colSize, decDigits, val.size());
@@ -120,8 +140,16 @@ void Binder::bind(std::size_t pos, const std::string& val, Direction dir)
 	}
 	else if (isInBound(dir))
 	{
-		pVal = (SQLPOINTER) val.c_str();
-		_inParams.insert(ParamMap::value_type(pVal, size));
+		if (!pTCVal)
+		{
+			pVal = (SQLPOINTER)val.c_str();
+			_inParams.insert(ParamMap::value_type(pVal, size));
+		}
+		else
+		{
+			pVal = (SQLPOINTER)pTCVal;
+			_inParams.insert(ParamMap::value_type(pVal, size));
+		}
 	}
 	else
 		throw InvalidArgumentException("Parameter must be [in] OR [out] bound.");
@@ -421,12 +449,28 @@ void Binder::synchronize()
 			Utility::dateTimeSync(*it->second, *it->first);
 	}
 
-	if (_strings.size())
+	if (!transcodeRequired())
 	{
-		StringMap::iterator it = _strings.begin();
-		StringMap::iterator end = _strings.end();
-		for(; it != end; ++it)
-			it->second->assign(it->first, std::strlen(it->first));
+		if (_strings.size())
+		{
+			StringMap::iterator it = _strings.begin();
+			StringMap::iterator end = _strings.end();
+			for (; it != end; ++it)
+				it->second->assign(it->first, std::strlen(it->first));
+		}
+	}
+	else
+	{
+		if (_strings.size())
+		{
+			StringMap::iterator it = _strings.begin();
+			StringMap::iterator end = _strings.end();
+			for (; it != end; ++it)
+			{
+				std::string str(it->first, std::strlen(it->first));
+				reverseTranscode(str, *it->second);
+			}
+		}
 	}
 
 	if (_uuids.size())
diff --git a/vendor/POCO/Data/ODBC/src/ConnectionHandle.cpp b/vendor/POCO/Data/ODBC/src/ConnectionHandle.cpp
index 065031bb..3efc0482 100644
--- a/vendor/POCO/Data/ODBC/src/ConnectionHandle.cpp
+++ b/vendor/POCO/Data/ODBC/src/ConnectionHandle.cpp
@@ -15,6 +15,8 @@
 #include "Poco/Data/ODBC/ConnectionHandle.h"
 #include "Poco/Data/ODBC/Utility.h"
 #include "Poco/Data/ODBC/ODBCException.h"
+#include "Poco/Error.h"
+#include "Poco/Debugger.h"
 
 
 namespace Poco {
@@ -22,14 +24,14 @@ namespace Data {
 namespace ODBC {
 
 
-ConnectionHandle::ConnectionHandle(EnvironmentHandle* pEnvironment): 
+ConnectionHandle::ConnectionHandle(EnvironmentHandle* pEnvironment):
 	_pEnvironment(pEnvironment ? pEnvironment : new EnvironmentHandle),
-	_hdbc(SQL_NULL_HDBC), 
+	_hdbc(SQL_NULL_HDBC),
 	_ownsEnvironment(pEnvironment ? false : true)
 {
-	if (Utility::isError(SQLAllocHandle(SQL_HANDLE_DBC, 
-		_pEnvironment->handle(), 
-		&_hdbc))) 
+	if (Utility::isError(SQLAllocHandle(SQL_HANDLE_DBC,
+		_pEnvironment->handle(),
+		&_hdbc)))
 	{
 		throw ODBCException("Could not allocate connection handle.");
 	}
@@ -42,10 +44,11 @@ ConnectionHandle::~ConnectionHandle()
 	{
 		SQLDisconnect(_hdbc);
 		SQLRETURN rc = SQLFreeHandle(SQL_HANDLE_DBC, _hdbc);
-
 		if (_ownsEnvironment) delete _pEnvironment;
-
-		poco_assert (!Utility::isError(rc));
+#if defined(_DEBUG)
+		if (Utility::isError(rc))
+			Debugger::enter(Poco::Error::getMessage(Poco::Error::last()), __FILE__, __LINE__);
+#endif
 	}
 	catch (...)
 	{
diff --git a/vendor/POCO/Data/ODBC/src/EnvironmentHandle.cpp b/vendor/POCO/Data/ODBC/src/EnvironmentHandle.cpp
index 61ce83f3..b9c19182 100644
--- a/vendor/POCO/Data/ODBC/src/EnvironmentHandle.cpp
+++ b/vendor/POCO/Data/ODBC/src/EnvironmentHandle.cpp
@@ -15,6 +15,8 @@
 #include "Poco/Data/ODBC/EnvironmentHandle.h"
 #include "Poco/Data/ODBC/Utility.h"
 #include "Poco/Data/ODBC/ODBCException.h"
+#include "Poco/Error.h"
+#include "Poco/Debugger.h"
 
 
 namespace Poco {
@@ -24,12 +26,12 @@ namespace ODBC {
 
 EnvironmentHandle::EnvironmentHandle(): _henv(SQL_NULL_HENV)
 {
-	if (Utility::isError(SQLAllocHandle(SQL_HANDLE_ENV, 
-			SQL_NULL_HANDLE, 
+	if (Utility::isError(SQLAllocHandle(SQL_HANDLE_ENV,
+			SQL_NULL_HANDLE,
 			&_henv)) ||
-		Utility::isError(SQLSetEnvAttr(_henv, 
-			SQL_ATTR_ODBC_VERSION, 
-			(SQLPOINTER) SQL_OV_ODBC3, 
+		Utility::isError(SQLSetEnvAttr(_henv,
+			SQL_ATTR_ODBC_VERSION,
+			(SQLPOINTER) SQL_OV_ODBC3,
 			0)))
 	{
 		throw ODBCException("Could not initialize environment.");
@@ -42,7 +44,10 @@ EnvironmentHandle::~EnvironmentHandle()
 	try
 	{
 		SQLRETURN rc = SQLFreeHandle(SQL_HANDLE_ENV, _henv);
-		poco_assert (!Utility::isError(rc));
+#if defined(_DEBUG)
+		if (Utility::isError(rc))
+			Debugger::enter(Poco::Error::getMessage(Poco::Error::last()), __FILE__, __LINE__);
+#endif
 	}
 	catch (...)
 	{
diff --git a/vendor/POCO/Data/ODBC/src/Extractor.cpp b/vendor/POCO/Data/ODBC/src/Extractor.cpp
index 90da7851..b5ce0ca4 100644
--- a/vendor/POCO/Data/ODBC/src/Extractor.cpp
+++ b/vendor/POCO/Data/ODBC/src/Extractor.cpp
@@ -35,13 +35,11 @@ const std::string Extractor::FLD_SIZE_EXCEEDED_FMT = "Specified data size (%z by
 
 Extractor::Extractor(const StatementHandle& rStmt,
 	Preparator::Ptr pPreparator,
-	TextEncoding::Ptr pDBEncoding):
+	TextEncoding::Ptr pDBEncoding,
+	Poco::TextEncoding::Ptr pToEncoding): AbstractExtractor(pDBEncoding, pToEncoding),
 	_rStmt(rStmt),
 	_pPreparator(pPreparator),
-	_dataExtraction(pPreparator->getDataExtraction()),
-	_pDBEncoding(pDBEncoding),
-	_transcode(_pDBEncoding && !_pDBEncoding->isA("UTF-8")),
-	_pToEncoding(_transcode ? Poco::TextEncoding::find("UTF-8") : nullptr)
+	_dataExtraction(pPreparator->getDataExtraction())
 {
 }
 
@@ -707,7 +705,7 @@ bool Extractor::extract(std::size_t pos, std::string& val)
 {
 	bool ret = false;
 
-	if (!_transcode)
+	if (!transcodeRequired())
 	{
 		if (Preparator::DE_MANUAL == _dataExtraction)
 			ret = extractManualImpl(pos, val, SQL_C_CHAR);
@@ -721,8 +719,8 @@ bool Extractor::extract(std::size_t pos, std::string& val)
 			ret = extractManualImpl(pos, result, SQL_C_CHAR);
 		else
 			ret = extractBoundImpl(pos, result);
-		Poco::TextConverter converter(*_pDBEncoding, *_pToEncoding);
-		converter.convert(result, val);
+		transcode(result, val);
+		
 	}
 
 	return ret;
diff --git a/vendor/POCO/Data/ODBC/src/ODBCMetaColumn.cpp b/vendor/POCO/Data/ODBC/src/ODBCMetaColumn.cpp
index f2603c0f..debf3a1a 100644
--- a/vendor/POCO/Data/ODBC/src/ODBCMetaColumn.cpp
+++ b/vendor/POCO/Data/ODBC/src/ODBCMetaColumn.cpp
@@ -160,6 +160,7 @@ void ODBCMetaColumn::init()
 		setType(MetaColumn::FDT_DATE); break;
 
 	case SQL_TYPE_TIME:
+	case -154: //MS SQL Server custom type SQL_SS_TIME2
 		setType(MetaColumn::FDT_TIME); break;
 
 	case SQL_TYPE_TIMESTAMP:
diff --git a/vendor/POCO/Data/ODBC/src/ODBCStatementImpl.cpp b/vendor/POCO/Data/ODBC/src/ODBCStatementImpl.cpp
index ce4c149b..ca22afed 100644
--- a/vendor/POCO/Data/ODBC/src/ODBCStatementImpl.cpp
+++ b/vendor/POCO/Data/ODBC/src/ODBCStatementImpl.cpp
@@ -83,7 +83,7 @@ void ODBCStatementImpl::compileImpl()
 
 	addPreparator();
 
-	Binder::ParameterBinding bind = session().getFeature("autoBind") ? 
+	Binder::ParameterBinding bind = session().getFeature("autoBind") ?
 		Binder::PB_IMMEDIATE : Binder::PB_AT_EXEC;
 
 	const TypeInfo* pDT = 0;
@@ -92,14 +92,15 @@ void ODBCStatementImpl::compileImpl()
 		Poco::Any dti = session().getProperty("dataTypeInfo");
 		pDT = AnyCast(dti);
 	}
-	catch (NotSupportedException&) 
+	catch (NotSupportedException&)
 	{
 	}
 
 	std::size_t maxFieldSize = AnyCast(session().getProperty("maxFieldSize"));
-	
-	_pBinder = new Binder(_stmt, maxFieldSize, bind, pDT);
-	
+
+	_pBinder = new Binder(_stmt, maxFieldSize, bind, pDT, TextEncoding::find("UTF-8"),
+		TextEncoding::find(Poco::RefAnyCast(session().getProperty("dbEncoding"))));
+
 	makeInternalExtractors();
 	doPrepare();
 
@@ -109,12 +110,12 @@ void ODBCStatementImpl::compileImpl()
 
 void ODBCStatementImpl::makeInternalExtractors()
 {
-	if (hasData() && !extractions().size()) 
+	if (hasData() && !extractions().size())
 	{
 		try
 		{
 			fillColumns();
-		} 
+		}
 		catch (DataFormatException&)
 		{
 			if (isStoredProcedure()) return;
@@ -135,7 +136,7 @@ void ODBCStatementImpl::addPreparator()
 		if (statement.empty())
 			throw ODBCException("Empty statements are illegal");
 
-		Preparator::DataExtraction ext = session().getFeature("autoExtract") ? 
+		Preparator::DataExtraction ext = session().getFeature("autoExtract") ?
 			Preparator::DE_BOUND : Preparator::DE_MANUAL;
 
 		std::size_t maxFieldSize = AnyCast(session().getProperty("maxFieldSize"));
@@ -146,7 +147,8 @@ void ODBCStatementImpl::addPreparator()
 		_preparations.push_back(new Preparator(*_preparations[0]));
 
 	_extractors.push_back(new Extractor(_stmt, _preparations.back(),
-		TextEncoding::find(Poco::RefAnyCast(session().getProperty("dbEncoding")))));
+		TextEncoding::find(Poco::RefAnyCast(session().getProperty("dbEncoding"))),
+		TextEncoding::find("UTF-8")));
 }
 
 
@@ -164,7 +166,7 @@ void ODBCStatementImpl::doPrepare()
 		if (it != itEnd && (*it)->isBulk())
 		{
 			std::size_t limit = getExtractionLimit();
-			if (limit == Limit::LIMIT_UNLIMITED) 
+			if (limit == Limit::LIMIT_UNLIMITED)
 				throw InvalidArgumentException("Bulk operation not allowed without limit.");
 			checkError(Poco::Data::ODBC::SQLSetStmtAttr(_stmt, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER) limit, 0),
 					"SQLSetStmtAttr(SQL_ATTR_ROW_ARRAY_SIZE)");
@@ -239,13 +241,13 @@ void ODBCStatementImpl::putData()
 		{
 			dataSize = (SQLINTEGER) _pBinder->parameterSize(pParam);
 
-			if (Utility::isError(SQLPutData(_stmt, pParam, dataSize))) 
+			if (Utility::isError(SQLPutData(_stmt, pParam, dataSize)))
 				throw StatementException(_stmt, "SQLPutData()");
 		}
 		else // if pParam is null pointer, do a dummy call
 		{
 			char dummy = 0;
-			if (Utility::isError(SQLPutData(_stmt, &dummy, 0))) 
+			if (Utility::isError(SQLPutData(_stmt, &dummy, 0)))
 				throw StatementException(_stmt, "SQLPutData()");
 		}
 	}
@@ -399,10 +401,10 @@ void ODBCStatementImpl::checkError(SQLRETURN rc, const std::string& msg)
 	if (Utility::isError(rc))
 	{
 		std::ostringstream os;
-		os << std::endl << "Requested SQL statement: " << toString() << std::endl; 	 
-		os << "Native SQL statement: " << nativeSQL() << std::endl; 	 
+		os << std::endl << "Requested SQL statement: " << toString() << std::endl;
+		os << "Native SQL statement: " << nativeSQL() << std::endl;
 		std::string str(msg); str += os.str();
-		
+
 		throw StatementException(_stmt, str);
 	}
 }
@@ -420,26 +422,28 @@ void ODBCStatementImpl::fillColumns()
 }
 
 
-bool ODBCStatementImpl::isStoredProcedure() const 	 
-{ 	 
-	std::string str = toString(); 	 
-	if (trimInPlace(str).size() < 2) return false; 	 
+bool ODBCStatementImpl::isStoredProcedure() const
+{
+	std::string str = toString();
+	if (trimInPlace(str).size() < 2) return false;
 
-	return ('{' == str[0] && '}' == str[str.size()-1]); 	 
+	return ('{' == str[0] && '}' == str[str.size()-1]);
 }
 
 
 const MetaColumn& ODBCStatementImpl::metaColumn(std::size_t pos) const
 {
 	std::size_t curDataSet = currentDataSet();
-	poco_assert_dbg (curDataSet < _columnPtrs.size());
+	if (curDataSet < _columnPtrs.size())
+	{
+		std::size_t sz = _columnPtrs[curDataSet].size();
 
-	std::size_t sz = _columnPtrs[curDataSet].size();
+		if (0 == sz || pos > sz - 1)
+			throw InvalidAccessException(format("Invalid column number: %u", pos));
 
-	if (0 == sz || pos > sz - 1)
-		throw InvalidAccessException(format("Invalid column number: %u", pos));
-
-	return *_columnPtrs[curDataSet][pos];
+		return *_columnPtrs[curDataSet][pos];
+	}
+	else throw Poco::IllegalStateException("currentDataSet index out of range");
 }
 
 
diff --git a/vendor/POCO/Data/ODBC/src/Parameter.cpp b/vendor/POCO/Data/ODBC/src/Parameter.cpp
index 23023779..b7dfe297 100644
--- a/vendor/POCO/Data/ODBC/src/Parameter.cpp
+++ b/vendor/POCO/Data/ODBC/src/Parameter.cpp
@@ -23,14 +23,14 @@ namespace Data {
 namespace ODBC {
 
 
-Parameter::Parameter(const StatementHandle& rStmt, std::size_t colNum) : 
-	_rStmt(rStmt), 
+Parameter::Parameter(const StatementHandle& rStmt, std::size_t colNum) :
+	_rStmt(rStmt),
 	_number(colNum)
 {
 	init();
 }
 
-	
+
 Parameter::~Parameter()
 {
 }
@@ -38,8 +38,8 @@ Parameter::~Parameter()
 
 void Parameter::init()
 {
-	if (Utility::isError(SQLDescribeParam(_rStmt, 
-		(SQLUSMALLINT) _number + 1, 
+	if (Utility::isError(SQLDescribeParam(_rStmt,
+		(SQLUSMALLINT) _number + 1,
 		&_dataType,
 		&_columnSize,
 		&_decimalDigits,
diff --git a/vendor/POCO/Data/ODBC/src/SessionImpl.cpp b/vendor/POCO/Data/ODBC/src/SessionImpl.cpp
index 50d83470..dc21541a 100644
--- a/vendor/POCO/Data/ODBC/src/SessionImpl.cpp
+++ b/vendor/POCO/Data/ODBC/src/SessionImpl.cpp
@@ -31,7 +31,7 @@ SessionImpl::SessionImpl(const std::string& connect,
 	std::size_t loginTimeout,
 	std::size_t maxFieldSize,
 	bool autoBind,
-	bool autoExtract): 
+	bool autoExtract):
 	Poco::Data::AbstractSessionImpl(connect, loginTimeout),
 		_connector(Connector::KEY),
 		_maxFieldSize(maxFieldSize),
@@ -49,7 +49,7 @@ SessionImpl::SessionImpl(const std::string& connect,
 
 
 SessionImpl::SessionImpl(const std::string& connect,
-	Poco::Any maxFieldSize, 
+	Poco::Any maxFieldSize,
 	bool enforceCapability,
 	bool autoBind,
 	bool autoExtract): Poco::Data::AbstractSessionImpl(connect),
@@ -136,20 +136,20 @@ void SessionImpl::open(const std::string& connect)
 	}
 
 	_dataTypes.fillTypeInfo(_db);
-		addProperty("dataTypeInfo", 
-		&SessionImpl::setDataTypeInfo, 
+		addProperty("dataTypeInfo",
+		&SessionImpl::setDataTypeInfo,
 		&SessionImpl::dataTypeInfo);
 
-	addFeature("autoCommit", 
-		&SessionImpl::autoCommit, 
+	addFeature("autoCommit",
+		&SessionImpl::autoCommit,
 		&SessionImpl::isAutoCommit);
 
-	addFeature("autoBind", 
-		&SessionImpl::autoBind, 
+	addFeature("autoBind",
+		&SessionImpl::autoBind,
 		&SessionImpl::isAutoBind);
 
-	addFeature("autoExtract", 
-		&SessionImpl::autoExtract, 
+	addFeature("autoExtract",
+		&SessionImpl::autoExtract,
 		&SessionImpl::isAutoExtract);
 
 	addProperty("maxFieldSize",
@@ -222,11 +222,11 @@ bool SessionImpl::canTransact() const
 	if (ODBC_TXN_CAPABILITY_UNKNOWN == _canTransact)
 	{
 		SQLUSMALLINT ret;
-		checkError(Poco::Data::ODBC::SQLGetInfo(_db, SQL_TXN_CAPABLE, &ret, 0, 0), 
+		checkError(Poco::Data::ODBC::SQLGetInfo(_db, SQL_TXN_CAPABLE, &ret, 0, 0),
 			"Failed to obtain transaction capability info.");
 
-		_canTransact = (SQL_TC_NONE != ret) ? 
-			ODBC_TXN_CAPABILITY_TRUE : 
+		_canTransact = (SQL_TC_NONE != ret) ?
+			ODBC_TXN_CAPABILITY_TRUE :
 			ODBC_TXN_CAPABILITY_FALSE;
 	}
 
@@ -329,10 +329,10 @@ Poco::UInt32 SessionImpl::transactionIsolation(SQLULEN isolation)
 
 void SessionImpl::autoCommit(const std::string&, bool val)
 {
-	checkError(Poco::Data::ODBC::SQLSetConnectAttr(_db, 
-		SQL_ATTR_AUTOCOMMIT, 
-		val ? (SQLPOINTER) SQL_AUTOCOMMIT_ON : 
-			(SQLPOINTER) SQL_AUTOCOMMIT_OFF, 
+	checkError(Poco::Data::ODBC::SQLSetConnectAttr(_db,
+		SQL_ATTR_AUTOCOMMIT,
+		val ? (SQLPOINTER) SQL_AUTOCOMMIT_ON :
+			(SQLPOINTER) SQL_AUTOCOMMIT_OFF,
 		SQL_IS_UINTEGER), "Failed to set automatic commit.");
 }
 
@@ -415,7 +415,7 @@ void SessionImpl::close()
 	{
 		commit();
 	}
-	catch (ConnectionException&) 
+	catch (ConnectionException&)
 	{
 	}
 
@@ -433,7 +433,7 @@ int SessionImpl::maxStatementLength() const
 		0,
 		0)))
 	{
-		throw ConnectionException(_db, 
+		throw ConnectionException(_db,
 			"SQLGetInfo(SQL_MAXIMUM_STATEMENT_LENGTH)");
 	}
 
diff --git a/vendor/POCO/Data/ODBC/src/TypeInfo.cpp b/vendor/POCO/Data/ODBC/src/TypeInfo.cpp
index ca5aa0eb..d667ad00 100644
--- a/vendor/POCO/Data/ODBC/src/TypeInfo.cpp
+++ b/vendor/POCO/Data/ODBC/src/TypeInfo.cpp
@@ -110,7 +110,7 @@ void TypeInfo::fillTypeInfo(SQLHDBC pHDBC)
 				char literalSuffix[stringSize] = { 0 };
 				char createParams[stringSize] = { 0 };
 				char localTypeName[stringSize] = { 0 };
-				
+
 				TypeInfoTup ti("TYPE_NAME", "",
 					"DATA_TYPE", 0,
 					"COLUMN_SIZE", 0,
@@ -142,10 +142,10 @@ void TypeInfo::fillTypeInfo(SQLHDBC pHDBC)
 				ti.set<4>(literalSuffix);
 				rc = SQLGetData(hstmt, 6, SQL_C_CHAR, createParams, sizeof(createParams), &ind);
 				ti.set<5>(createParams);
-				rc = SQLGetData(hstmt, 7, SQL_C_SSHORT, &ti.get<6>(), sizeof(SQLSMALLINT), &ind); 
-				rc = SQLGetData(hstmt, 8, SQL_C_SSHORT, &ti.get<7>(), sizeof(SQLSMALLINT), &ind); 
-				rc = SQLGetData(hstmt, 9, SQL_C_SSHORT, &ti.get<8>(), sizeof(SQLSMALLINT), &ind); 
-				rc = SQLGetData(hstmt, 10, SQL_C_SSHORT, &ti.get<9>(), sizeof(SQLSMALLINT), &ind); 
+				rc = SQLGetData(hstmt, 7, SQL_C_SSHORT, &ti.get<6>(), sizeof(SQLSMALLINT), &ind);
+				rc = SQLGetData(hstmt, 8, SQL_C_SSHORT, &ti.get<7>(), sizeof(SQLSMALLINT), &ind);
+				rc = SQLGetData(hstmt, 9, SQL_C_SSHORT, &ti.get<8>(), sizeof(SQLSMALLINT), &ind);
+				rc = SQLGetData(hstmt, 10, SQL_C_SSHORT, &ti.get<9>(), sizeof(SQLSMALLINT), &ind);
 				rc = SQLGetData(hstmt, 11, SQL_C_SSHORT, &ti.get<10>(), sizeof(SQLSMALLINT), &ind);
 				rc = SQLGetData(hstmt, 12, SQL_C_SSHORT, &ti.get<11>(), sizeof(SQLSMALLINT), &ind);
 				rc = SQLGetData(hstmt, 13, SQL_C_CHAR, localTypeName, sizeof(localTypeName), &ind);
@@ -192,7 +192,7 @@ bool TypeInfo::tryGetInfo(SQLSMALLINT type, const std::string& param, DynamicAny
 			return true;
 		}
 	}
-	
+
 	return false;
 }
 
@@ -239,24 +239,24 @@ void TypeInfo::print(std::ostream& ostr)
 
 	for (; it != end; ++it)
 	{
-		ostr << it->get<0>() << "\t" 
-			<< it->get<1>() << "\t" 
-			<< it->get<2>() << "\t" 
-			<< it->get<3>() << "\t" 
-			<< it->get<4>() << "\t" 
-			<< it->get<5>() << "\t" 
-			<< it->get<6>() << "\t" 
-			<< it->get<7>() << "\t" 
-			<< it->get<8>() << "\t" 
-			<< it->get<9>() << "\t" 
-			<< it->get<10>() << "\t" 
-			<< it->get<11>() << "\t" 
-			<< it->get<12>() << "\t" 
-			<< it->get<13>() << "\t" 
+		ostr << it->get<0>() << "\t"
+			<< it->get<1>() << "\t"
+			<< it->get<2>() << "\t"
+			<< it->get<3>() << "\t"
+			<< it->get<4>() << "\t"
+			<< it->get<5>() << "\t"
+			<< it->get<6>() << "\t"
+			<< it->get<7>() << "\t"
+			<< it->get<8>() << "\t"
+			<< it->get<9>() << "\t"
+			<< it->get<10>() << "\t"
+			<< it->get<11>() << "\t"
+			<< it->get<12>() << "\t"
+			<< it->get<13>() << "\t"
 			<< it->get<14>() << "\t"
-			<< it->get<15>() << "\t" 
-			<< it->get<16>() << "\t" 
-			<< it->get<17>() << "\t" 
+			<< it->get<15>() << "\t"
+			<< it->get<16>() << "\t"
+			<< it->get<17>() << "\t"
 			<< it->get<18>() << std::endl;
 	}
 }
diff --git a/vendor/POCO/Data/ODBC/src/Unicode_UNIXODBC.cpp b/vendor/POCO/Data/ODBC/src/Unicode_UNIXODBC.cpp
index 4caf097c..1f671fed 100644
--- a/vendor/POCO/Data/ODBC/src/Unicode_UNIXODBC.cpp
+++ b/vendor/POCO/Data/ODBC/src/Unicode_UNIXODBC.cpp
@@ -38,7 +38,7 @@ namespace ODBC {
 void makeUTF16(SQLCHAR* pSQLChar, SQLINTEGER length, std::string& target)
 {
 	int len = length;
-	if (SQL_NTS == len) 
+	if (SQL_NTS == len)
 		len = (int) std::strlen((const char *) pSQLChar);
 
 	UTF8Encoding utf8Encoding;
@@ -59,7 +59,7 @@ void makeUTF8(Poco::Buffer& buffer, SQLINTEGER length, SQLPOINTER pTar
 	std::string result;
 	if (0 != converter.convert(buffer.begin(), length, result))
 		throw DataFormatException("Error converting UTF-16 to UTF-8");
-	
+
 	std::memset(pTarget, 0, targetLength);
 	std::strncpy((char*) pTarget, result.c_str(), result.size() < targetLength ? result.size() : targetLength);
 }
@@ -69,7 +69,7 @@ SQLRETURN SQLColAttribute(SQLHSTMT hstmt,
 	SQLUSMALLINT   iCol,
 	SQLUSMALLINT   iField,
 	SQLPOINTER	   pCharAttr,
-	SQLSMALLINT	   cbCharAttrMax,	
+	SQLSMALLINT	   cbCharAttrMax,
 	SQLSMALLINT*   pcbCharAttr,
 	NumAttrPtrType pNumAttr)
 {
@@ -93,7 +93,7 @@ SQLRETURN SQLColAttribute(SQLHSTMT hstmt,
 		iCol,
 		iField,
 		pCharAttr,
-		cbCharAttrMax,	
+		cbCharAttrMax,
 		pcbCharAttr,
 		pNumAttr);
 }
@@ -133,8 +133,8 @@ SQLRETURN SQLConnect(SQLHDBC hdbc,
 
 	std::string sqlPWD;
 	makeUTF16(szAuthStr, cbAuthStr, sqlPWD);
-	
-	return SQLConnectW(hdbc, 
+
+	return SQLConnectW(hdbc,
 		(SQLWCHAR*) sqlDSN.c_str(), cbDSN,
 		(SQLWCHAR*) sqlUID.c_str(), cbUID,
 		(SQLWCHAR*) sqlPWD.c_str(), cbAuthStr);
@@ -211,7 +211,7 @@ SQLRETURN SQLGetConnectAttr(SQLHDBC hdbc,
 		makeUTF8(buffer, *pcbValue, rgbValue, cbValueMax);
 		return rc;
 	}
-	
+
 
 	return SQLGetConnectAttrW(hdbc,
 		fAttribute,
@@ -231,9 +231,9 @@ SQLRETURN SQLGetCursorName(SQLHSTMT hstmt,
 
 
 SQLRETURN SQLSetDescField(SQLHDESC hdesc,
-	SQLSMALLINT iRecord, 
+	SQLSMALLINT iRecord,
 	SQLSMALLINT iField,
-	SQLPOINTER  rgbValue, 
+	SQLPOINTER  rgbValue,
 	SQLINTEGER  cbValueMax)
 {
 	if (isString(rgbValue, cbValueMax))
@@ -242,16 +242,16 @@ SQLRETURN SQLSetDescField(SQLHDESC hdesc,
 		makeUTF16((SQLCHAR*) rgbValue, cbValueMax, str);
 
 		return SQLSetDescFieldW(hdesc,
-			iRecord, 
+			iRecord,
 			iField,
-			(SQLPOINTER) str.c_str(), 
+			(SQLPOINTER) str.c_str(),
 			(SQLINTEGER) str.size() * sizeof(SQLWCHAR));
 	}
 
 	return SQLSetDescFieldW(hdesc,
-		iRecord, 
+		iRecord,
 		iField,
-		rgbValue, 
+		rgbValue,
 		cbValueMax);
 }
 
@@ -296,7 +296,7 @@ SQLRETURN SQLGetDescRec(SQLHDESC hdesc,
 	SQLSMALLINT* pfType,
 	SQLSMALLINT* pfSubType,
 	SQLLEN*      pLength,
-	SQLSMALLINT* pPrecision, 
+	SQLSMALLINT* pPrecision,
 	SQLSMALLINT* pScale,
 	SQLSMALLINT* pNullable)
 {
@@ -391,7 +391,7 @@ SQLRETURN SQLSetConnectAttr(SQLHDBC hdbc,
 
 		return SQLSetConnectAttrW(hdbc,
 			fAttribute,
-			(SQLWCHAR*) str.c_str(), 
+			(SQLWCHAR*) str.c_str(),
 			(SQLINTEGER) str.size() * sizeof(SQLWCHAR));
 	}
 
@@ -487,7 +487,7 @@ SQLRETURN SQLGetInfo(SQLHDBC hdbc,
 			pcbInfoValue);
 
 		makeUTF8(buffer, *pcbInfoValue, rgbInfoValue, cbInfoValueMax);
-		
+
 		return rc;
 	}
 
@@ -590,12 +590,12 @@ SQLRETURN SQLDriverConnect(SQLHDBC hdbc,
 	SQLUSMALLINT fDriverCompletion)
 {
 	SQLSMALLINT len = cbConnStrIn;
-	if (SQL_NTS == len) 
+	if (SQL_NTS == len)
 		len = (SQLSMALLINT) std::strlen((const char*) szConnStrIn) + 1;
 
 	std::string connStrIn;
 	makeUTF16(szConnStrIn, len, connStrIn);
-	
+
 	Buffer out(cbConnStrOutMax);
 	SQLRETURN rc = SQLDriverConnectW(hdbc,
 		hwnd,
diff --git a/vendor/POCO/Data/ODBC/src/Unicode_WIN32.cpp b/vendor/POCO/Data/ODBC/src/Unicode_WIN32.cpp
index fe637e49..ed472115 100644
--- a/vendor/POCO/Data/ODBC/src/Unicode_WIN32.cpp
+++ b/vendor/POCO/Data/ODBC/src/Unicode_WIN32.cpp
@@ -97,7 +97,7 @@ SQLRETURN SQLConnect(SQLHDBC hdbc,
 
 	std::wstring sqlPWD;
 	makeUTF16(szAuthStr, cbAuthStr, sqlPWD);
-	
+
 	return SQLConnectW(hdbc,
 		(SQLWCHAR*) sqlDSN.c_str(),
 		(SQLSMALLINT) sqlDSN.size(),
@@ -155,8 +155,8 @@ SQLRETURN SQLExecDirect(SQLHSTMT hstmt,
 	std::wstring sqlStr;
 	makeUTF16(szSqlStr, cbSqlStr, sqlStr);
 
-	return SQLExecDirectW(hstmt, 
-		(SQLWCHAR*) sqlStr.c_str(), 
+	return SQLExecDirectW(hstmt,
+		(SQLWCHAR*) sqlStr.c_str(),
 		(SQLINTEGER) sqlStr.size());
 }
 
@@ -180,7 +180,7 @@ SQLRETURN SQLGetConnectAttr(SQLHDBC hdbc,
 		makeUTF8(buffer, *pcbValue, rgbValue, cbValueMax);
 		return rc;
 	}
-	
+
 
 	return SQLGetConnectAttrW(hdbc,
 		fAttribute,
@@ -200,9 +200,9 @@ SQLRETURN SQLGetCursorName(SQLHSTMT hstmt,
 
 
 SQLRETURN SQLSetDescField(SQLHDESC hdesc,
-	SQLSMALLINT iRecord, 
+	SQLSMALLINT iRecord,
 	SQLSMALLINT iField,
-	SQLPOINTER  rgbValue, 
+	SQLPOINTER  rgbValue,
 	SQLINTEGER  cbValueMax)
 {
 	if (isString(rgbValue, cbValueMax))
@@ -211,18 +211,18 @@ SQLRETURN SQLSetDescField(SQLHDESC hdesc,
 		makeUTF16((SQLCHAR*) rgbValue, cbValueMax, str);
 
 		SQLRETURN rc = SQLSetDescFieldW(hdesc,
-			iRecord, 
+			iRecord,
 			iField,
-			(SQLPOINTER) str.c_str(), 
+			(SQLPOINTER) str.c_str(),
 			(SQLINTEGER) str.size() * sizeof(std::wstring::value_type));
 
 		return rc;
 	}
 
 	return SQLSetDescFieldW(hdesc,
-		iRecord, 
+		iRecord,
 		iField,
-		rgbValue, 
+		rgbValue,
 		cbValueMax);
 }
 
@@ -266,7 +266,7 @@ SQLRETURN SQLGetDescRec(SQLHDESC hdesc,
 	SQLSMALLINT* pfType,
 	SQLSMALLINT* pfSubType,
 	SQLLEN*      pLength,
-	SQLSMALLINT* pPrecision, 
+	SQLSMALLINT* pPrecision,
 	SQLSMALLINT* pScale,
 	SQLSMALLINT* pNullable)
 {
@@ -344,8 +344,8 @@ SQLRETURN SQLPrepare(SQLHSTMT hstmt,
 	std::wstring sqlStr;
 	makeUTF16(szSqlStr, cbSqlStr, sqlStr);
 
-	return SQLPrepareW(hstmt, 
-		(SQLWCHAR*) sqlStr.c_str(), 
+	return SQLPrepareW(hstmt,
+		(SQLWCHAR*) sqlStr.c_str(),
 		(SQLINTEGER) sqlStr.size());
 }
 
@@ -362,13 +362,13 @@ SQLRETURN SQLSetConnectAttr(SQLHDBC hdbc,
 
 		return SQLSetConnectAttrW(hdbc,
 			fAttribute,
-			(SQLWCHAR*) str.c_str(), 
+			(SQLWCHAR*) str.c_str(),
 			(SQLINTEGER) str.size() * sizeof(std::wstring::value_type));
 	}
 
 	return SQLSetConnectAttrW(hdbc,
 		fAttribute,
-		rgbValue, 
+		rgbValue,
 		cbValue);
 }
 
@@ -576,7 +576,7 @@ SQLRETURN SQLDriverConnect(SQLHDBC hdbc,
 {
 	std::wstring connStrIn;
 	int len = cbConnStrIn;
-	if (SQL_NTS == len) 
+	if (SQL_NTS == len)
 		len = (int) std::strlen((const char*) szConnStrIn);
 
 	Poco::UnicodeConverter::toUTF16((const char *) szConnStrIn, len, connStrIn);
diff --git a/vendor/POCO/Data/ODBC/src/Utility.cpp b/vendor/POCO/Data/ODBC/src/Utility.cpp
index 62a22a40..8d3b4a5e 100644
--- a/vendor/POCO/Data/ODBC/src/Utility.cpp
+++ b/vendor/POCO/Data/ODBC/src/Utility.cpp
@@ -41,7 +41,7 @@ Utility::DriverMap& Utility::drivers(Utility::DriverMap& driverMap)
 	SQLSMALLINT len2 = length;
 	RETCODE rc = 0;
 
-	if (!Utility::isError(rc = SQLDrivers(henv, 
+	if (!Utility::isError(rc = SQLDrivers(henv,
 		SQL_FETCH_FIRST,
 		desc,
 		length,
@@ -52,12 +52,12 @@ Utility::DriverMap& Utility::drivers(Utility::DriverMap& driverMap)
 	{
 		do
 		{
-			driverMap.insert(DSNMap::value_type(std::string((char *) desc), 
+			driverMap.insert(DSNMap::value_type(std::string((char *) desc),
 				std::string((char *) attr)));
 			std::memset(desc, 0, length);
 			std::memset(attr, 0, length);
 			len2 = length;
-		}while (!Utility::isError(rc = SQLDrivers(henv, 
+		}while (!Utility::isError(rc = SQLDrivers(henv,
 			SQL_FETCH_NEXT,
 			desc,
 			length,
@@ -67,7 +67,7 @@ Utility::DriverMap& Utility::drivers(Utility::DriverMap& driverMap)
 			&len2)));
 	}
 
-	if (SQL_NO_DATA != rc) 
+	if (SQL_NO_DATA != rc)
 		throw EnvironmentException(henv);
 
 	return driverMap;
@@ -88,7 +88,7 @@ Utility::DSNMap& Utility::dataSources(Utility::DSNMap& dsnMap)
 	SQLSMALLINT len2 = length;
 	RETCODE rc = 0;
 
-	while (!Utility::isError(rc = Poco::Data::ODBC::SQLDataSources(henv, 
+	while (!Utility::isError(rc = Poco::Data::ODBC::SQLDataSources(henv,
 		SQL_FETCH_NEXT,
 		dsn,
 		SQL_MAX_DSN_LENGTH,
@@ -103,7 +103,7 @@ Utility::DSNMap& Utility::dataSources(Utility::DSNMap& dsnMap)
 		len2 = length;
 	}
 
-	if (SQL_NO_DATA != rc) 
+	if (SQL_NO_DATA != rc)
 		throw EnvironmentException(henv);
 
 	return dsnMap;
diff --git a/vendor/POCO/Data/ODBC/testsuite/TestSuite_vs170.vcxproj b/vendor/POCO/Data/ODBC/testsuite/TestSuite_vs170.vcxproj
new file mode 100644
index 00000000..214f11b4
--- /dev/null
+++ b/vendor/POCO/Data/ODBC/testsuite/TestSuite_vs170.vcxproj
@@ -0,0 +1,941 @@
+
+
+  
+    
+      debug_shared
+      ARM64
+    
+    
+      debug_shared
+      Win32
+    
+    
+      debug_shared
+      x64
+    
+    
+      debug_static_md
+      ARM64
+    
+    
+      debug_static_md
+      Win32
+    
+    
+      debug_static_md
+      x64
+    
+    
+      debug_static_mt
+      ARM64
+    
+    
+      debug_static_mt
+      Win32
+    
+    
+      debug_static_mt
+      x64
+    
+    
+      release_shared
+      ARM64
+    
+    
+      release_shared
+      Win32
+    
+    
+      release_shared
+      x64
+    
+    
+      release_static_md
+      ARM64
+    
+    
+      release_static_md
+      Win32
+    
+    
+      release_static_md
+      x64
+    
+    
+      release_static_mt
+      ARM64
+    
+    
+      release_static_mt
+      Win32
+    
+    
+      release_static_mt
+      x64
+    
+  
+  
+    17.0
+    TestSuite
+    {00627063-395B-4413-9099-23BDB56562FA}
+    TestSuite
+    Win32Proj
+  
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+    Application
+    MultiByte
+    v143
+  
+  
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+  
+    <_ProjectFileVersion>17.0.32505.173
+    TestSuited
+    TestSuited
+    TestSuited
+    TestSuite
+    TestSuite
+    TestSuite
+    TestSuited
+    TestSuited
+    TestSuited
+    TestSuite
+    TestSuite
+    TestSuite
+    TestSuited
+    TestSuited
+    TestSuited
+    TestSuite
+    TestSuite
+    TestSuite
+  
+  
+    binA64\
+    objA64\TestSuite\$(Configuration)\
+    true
+  
+  
+    binA64\
+    objA64\TestSuite\$(Configuration)\
+    false
+  
+  
+    binA64\static_mt\
+    objA64\TestSuite\$(Configuration)\
+    true
+  
+  
+    binA64\static_mt\
+    objA64\TestSuite\$(Configuration)\
+    false
+  
+  
+    binA64\static_md\
+    objA64\TestSuite\$(Configuration)\
+    true
+  
+  
+    binA64\static_md\
+    objA64\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin\
+    obj\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin\
+    obj\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin\static_mt\
+    obj\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin\static_mt\
+    obj\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin\static_md\
+    obj\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin\static_md\
+    obj\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin64\
+    obj64\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin64\
+    obj64\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin64\static_mt\
+    obj64\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin64\static_mt\
+    obj64\TestSuite\$(Configuration)\
+    false
+  
+  
+    bin64\static_md\
+    obj64\TestSuite\$(Configuration)\
+    true
+  
+  
+    bin64\static_md\
+    obj64\TestSuite\$(Configuration)\
+    false
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitd.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      binA64\TestSuited.exe
+      ..\..\..\libA64;%(AdditionalLibraryDirectories)
+      true
+      true
+      binA64\TestSuited.pdb
+      Console
+      MachineARM64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnit.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      binA64\TestSuite.exe
+      ..\..\..\libA64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineARM64
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmtd.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      binA64\static_mt\TestSuited.exe
+      ..\..\..\libA64;%(AdditionalLibraryDirectories)
+      true
+      true
+      binA64\static_mt\TestSuited.pdb
+      Console
+      MachineARM64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmt.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      binA64\static_mt\TestSuite.exe
+      ..\..\..\libA64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineARM64
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmdd.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      binA64\static_md\TestSuited.exe
+      ..\..\..\libA64;%(AdditionalLibraryDirectories)
+      true
+      true
+      binA64\static_md\TestSuited.pdb
+      Console
+      MachineARM64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmd.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      binA64\static_md\TestSuite.exe
+      ..\..\..\libA64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineARM64
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitd.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\TestSuited.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin\TestSuited.pdb
+      Console
+      MachineX86
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnit.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\TestSuite.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX86
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmtd.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\static_mt\TestSuited.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin\static_mt\TestSuited.pdb
+      Console
+      MachineX86
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmt.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\static_mt\TestSuite.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX86
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\CppUnit\WinTestRunner\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmdd.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\static_md\TestSuited.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin\static_md\TestSuited.pdb
+      Console
+      MachineX86
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmd.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin\static_md\TestSuite.exe
+      ..\..\..\lib;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX86
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitd.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\TestSuited.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin64\TestSuited.pdb
+      Console
+      MachineX64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnit.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\TestSuite.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX64
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmtd.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\static_mt\TestSuited.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin64\static_mt\TestSuited.pdb
+      Console
+      MachineX64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmt.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\static_mt\TestSuite.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX64
+    
+  
+  
+    
+      Disabled
+      ..\include;..\..\..\CppUnit\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      CppUnitmdd.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\static_md\TestSuited.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      true
+      true
+      bin64\static_md\TestSuited.pdb
+      Console
+      MachineX64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      ..\include;..\..\..\CppUnit\include;..\..\..\Foundation\include;..\..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;WINVER=0x0600;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      CppUnitmd.lib;iphlpapi.lib;winmm.lib;odbc32.lib;odbccp32.lib;iphlpapi.lib;%(AdditionalDependencies)
+      bin64\static_md\TestSuite.exe
+      ..\..\..\lib64;%(AdditionalLibraryDirectories)
+      false
+      Console
+      true
+      true
+      MachineX64
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+  
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+  
+  
+  
+
diff --git a/vendor/POCO/Data/ODBC/testsuite/TestSuite_vs170.vcxproj.filters b/vendor/POCO/Data/ODBC/testsuite/TestSuite_vs170.vcxproj.filters
new file mode 100644
index 00000000..3bd195b9
--- /dev/null
+++ b/vendor/POCO/Data/ODBC/testsuite/TestSuite_vs170.vcxproj.filters
@@ -0,0 +1,96 @@
+
+
+  
+    
+      {cc2d8726-73aa-4a01-a748-9d5240c35137}
+    
+    
+      {679e2ecd-01b8-4875-96cc-35ee6773be2a}
+    
+    
+      {ad30d348-df1b-462c-9d88-94be1caed184}
+    
+    
+      {7d56d4fd-4d2a-402b-b43b-237218f25a61}
+    
+    
+      {9d4c68cd-e9c7-43fa-929e-fd784f31edf5}
+    
+    
+      {039d0dc7-42cd-4aec-8039-db32d6d02327}
+    
+    
+      {7b6c55d5-94ba-4c63-bc86-68714e168729}
+    
+    
+      {1ec29134-77b5-4419-846e-92210003beb2}
+    
+  
+  
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      ODBC\Header Files
+    
+    
+      _Suite\Header Files
+    
+  
+  
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      ODBC\Source Files
+    
+    
+      _Suite\Source Files
+    
+    
+      _Driver\Source Files
+    
+  
+
\ No newline at end of file
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/ODBCAccessTest.cpp b/vendor/POCO/Data/ODBC/testsuite/src/ODBCAccessTest.cpp
index 12bea371..55aec9ba 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/ODBCAccessTest.cpp
+++ b/vendor/POCO/Data/ODBC/testsuite/src/ODBCAccessTest.cpp
@@ -40,7 +40,7 @@ std::string ODBCAccessTest::_dbConnString;
 Poco::Data::ODBC::Utility::DriverMap ODBCAccessTest::_drivers;
 
 
-ODBCAccessTest::ODBCAccessTest(const std::string& name): 
+ODBCAccessTest::ODBCAccessTest(const std::string& name):
 	CppUnit::TestCase(name)
 {
 }
@@ -123,13 +123,13 @@ bool ODBCAccessTest::canConnect(const std::string& driver, const std::string& ds
 	{
 		if (((itDrv->first).find(driver) != std::string::npos))
 		{
-			std::cout << "Driver found: " << itDrv->first 
+			std::cout << "Driver found: " << itDrv->first
 				<< " (" << itDrv->second << ')' << std::endl;
 			break;
 		}
 	}
 
-	if (_drivers.end() == itDrv) 
+	if (_drivers.end() == itDrv)
 	{
 		std::cout << driver << " driver NOT found, tests not available." << std::endl;
 		return false;
@@ -142,7 +142,7 @@ bool ODBCAccessTest::canConnect(const std::string& driver, const std::string& ds
 	{
 		if (itDSN->first == dsn && itDSN->second == driver)
 		{
-			std::cout << "DSN found: " << itDSN->first 
+			std::cout << "DSN found: " << itDSN->first
 				<< " (" << itDSN->second << ')' << std::endl;
 			format(_dbConnString, "DSN=%s", dsn);
 			return true;
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/ODBCAccessTest.h b/vendor/POCO/Data/ODBC/testsuite/src/ODBCAccessTest.h
index 498b23f2..18bd6ce1 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/ODBCAccessTest.h
+++ b/vendor/POCO/Data/ODBC/testsuite/src/ODBCAccessTest.h
@@ -25,7 +25,7 @@
 class ODBCAccessTest: public CppUnit::TestCase
 	/// MS Access ODBC test class
 	/// Tested:
-	/// 
+	///
 	/// Driver		|	DB		| OS
 	/// ------------+-----------+------------------------------------------
 	///	4.00.6305.00| Jet 4.0	| MS Windows XP Professional x64 v.2003/SP1
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/ODBCDB2Test.cpp b/vendor/POCO/Data/ODBC/testsuite/src/ODBCDB2Test.cpp
index f5c2ff79..c880ad6f 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/ODBCDB2Test.cpp
+++ b/vendor/POCO/Data/ODBC/testsuite/src/ODBCDB2Test.cpp
@@ -66,7 +66,7 @@ std::string          ODBCDB2Test::_connectString = "Driver=" DB2_ODBC_DRIVER ";"
 	"Pwd=" DB2_PWD ";";
 
 
-ODBCDB2Test::ODBCDB2Test(const std::string& name): 
+ODBCDB2Test::ODBCDB2Test(const std::string& name):
 	ODBCTest(name, _pSession, _pExecutor, _dsn, _uid, _pwd, _connectString)
 {
 }
@@ -110,7 +110,7 @@ void ODBCDB2Test::testBareboneODBC()
 void ODBCDB2Test::testBLOB()
 {
 	if (!_pSession) fail ("Test not available.");
-	
+
 	const std::size_t maxFldSize = 1000000;
 	_pSession->setProperty("maxFieldSize", Poco::Any(maxFldSize-1));
 	recreatePersonBLOBTable();
@@ -120,7 +120,7 @@ void ODBCDB2Test::testBLOB()
 		_pExecutor->blob(maxFldSize);
 		fail ("must fail");
 	}
-	catch (DataException&) 
+	catch (DataException&)
 	{
 		_pSession->setProperty("maxFieldSize", Poco::Any(maxFldSize));
 	}
@@ -183,14 +183,14 @@ void ODBCDB2Test::testStoredProcedure()
 			"BEGIN "
 			" SET outParam = inParam*inParam; "
 			"END" , now;
-		
+
 
 		i = 2;
 		int j = 0;
 		*_pSession << "{call storedProcedure(?, ?)}", in(i), out(j), now;
 		assertTrue (4 == j);
 		dropObject("PROCEDURE", "storedProcedure");
-	
+
 		*_pSession << "CREATE PROCEDURE storedProcedure(INOUT ioParam INTEGER) "
 			"BEGIN "
 			" SET ioParam = ioParam*ioParam; "
@@ -209,7 +209,7 @@ void ODBCDB2Test::testStoredProcedure()
 			" SET outParam = inParam; "
 			"END" , now;
 
-		std::string inParam = 
+		std::string inParam =
 			"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
 			"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
 			"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
@@ -272,7 +272,7 @@ void ODBCDB2Test::testStoredProcedureDynamicAny()
 	for (int k = 0; k < 8;)
 	{
 		_pSession->setFeature("autoBind", bindValue(k));
-		
+
 		DynamicAny i = 2;
 		DynamicAny j = 0;
 
@@ -319,12 +319,12 @@ void ODBCDB2Test::testStoredFunction()
 		*_pSession << "{? = call storedFunction()}", out(i), now;
 		assertTrue (-1 == i);
 		dropObject("PROCEDURE", "storedFunction");
-		
+
 		*_pSession << "CREATE PROCEDURE storedFunction(inParam INTEGER) "
 			"BEGIN "
 			" RETURN inParam*inParam; "
 			"END" , now;
-		
+
 		i = 2;
 		int result = 0;
 		*_pSession << "{? = call storedFunction(?)}", out(result), in(i), now;
@@ -342,7 +342,7 @@ void ODBCDB2Test::testStoredFunction()
 		result = 0;
 		*_pSession << "{? = call storedFunction(?, ?)}", out(result), in(i), out(j), now;
 		assertTrue (4 == j);
-		assertTrue (j == result); 
+		assertTrue (j == result);
 		dropObject("PROCEDURE", "storedFunction");
 
 		*_pSession << "CREATE PROCEDURE storedFunction(INOUT param1 INTEGER, INOUT param2 INTEGER) "
@@ -360,7 +360,7 @@ void ODBCDB2Test::testStoredFunction()
 		*_pSession << "{? = call storedFunction(?, ?)}", out(result), io(i), io(j), now;
 		assertTrue (1 == j);
 		assertTrue (2 == i);
-		assertTrue (3 == result); 
+		assertTrue (3 == result);
 
 		Tuple params(1, 2);
 		assertTrue (1 == params.get<0>());
@@ -369,7 +369,7 @@ void ODBCDB2Test::testStoredFunction()
 		*_pSession << "{? = call storedFunction(?, ?)}", out(result), io(params), now;
 		assertTrue (1 == params.get<1>());
 		assertTrue (2 == params.get<0>());
-		assertTrue (3 == result); 
+		assertTrue (3 == result);
 
 		dropObject("PROCEDURE", "storedFunction");
 
@@ -545,14 +545,14 @@ void ODBCDB2Test::recreateNullsTable(const std::string& notNull)
 void ODBCDB2Test::recreateMiscTable()
 {
 	dropObject("TABLE", "MiscTest");
-	try 
-	{ 
+	try
+	{
 		session() << "CREATE TABLE MiscTest "
 			"(First VARCHAR(30),"
 			"Second BLOB,"
 			"Third INTEGER,"
 			"Fourth FLOAT,"
-			"Fifth TIMESTAMP)", now; 
+			"Fifth TIMESTAMP)", now;
 	} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateMiscTable()"); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateMiscTable()"); }
 }
@@ -563,19 +563,19 @@ void ODBCDB2Test::recreateLogTable()
 	dropObject("TABLE", "T_POCO_LOG");
 	dropObject("TABLE", "T_POCO_LOG_ARCHIVE");
 
-	try 
-	{ 
+	try
+	{
 		std::string sql = "CREATE TABLE %s "
 			"(Source VARCHAR(100),"
 			"Name VARCHAR(100),"
 			"ProcessId INTEGER,"
 			"Thread VARCHAR(100), "
-			"ThreadId INTEGER," 
+			"ThreadId INTEGER,"
 			"Priority INTEGER,"
 			"Text VARCHAR(100),"
-			"DateTime TIMESTAMP)"; 
+			"DateTime TIMESTAMP)";
 
-		session() << sql, "T_POCO_LOG", now; 
+		session() << sql, "T_POCO_LOG", now;
 		session() << sql, "T_POCO_LOG_ARCHIVE", now;
 
 	} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateLogTable()"); }
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/ODBCDB2Test.h b/vendor/POCO/Data/ODBC/testsuite/src/ODBCDB2Test.h
index e0e18da7..57263707 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/ODBCDB2Test.h
+++ b/vendor/POCO/Data/ODBC/testsuite/src/ODBCDB2Test.h
@@ -21,7 +21,7 @@
 class ODBCDB2Test: public ODBCTest
 	/// IBM DB2 UDB ODBC test class
 	/// Tested:
-	/// 
+	///
 	/// Driver		|	DB				| OS
 	/// ------------+-------------------+------------------------------------------
 	///	9.01.00.356 | DB2 Express-C 9.1	| MS Windows XP Professional x64 v.2003/SP1
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/ODBCMySQLTest.cpp b/vendor/POCO/Data/ODBC/testsuite/src/ODBCMySQLTest.cpp
index ed539e13..bd90d438 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/ODBCMySQLTest.cpp
+++ b/vendor/POCO/Data/ODBC/testsuite/src/ODBCMySQLTest.cpp
@@ -61,7 +61,7 @@ std::string          ODBCMySQLTest::_connectString = "DRIVER={" MYSQL_ODBC_DRIVE
 	"PWD=" MYSQL_PWD ";";
 
 
-ODBCMySQLTest::ODBCMySQLTest(const std::string& name): 
+ODBCMySQLTest::ODBCMySQLTest(const std::string& name):
 	ODBCTest(name, _pSession, _pExecutor, _dsn, _uid, _pwd, _connectString)
 {
 	_pExecutor->execute("SET @@global.sql_mode= '';"); // disable strict mode
@@ -120,7 +120,7 @@ So, we skip this test.
 void ODBCMySQLTest::testBLOB()
 {
 	if (!_pSession) fail ("Test not available.");
-	
+
 	const std::size_t maxFldSize = 65534;
 	_pSession->setProperty("maxFieldSize", Poco::Any(maxFldSize-1));
 	recreatePersonBLOBTable();
@@ -130,7 +130,7 @@ void ODBCMySQLTest::testBLOB()
 		_pExecutor->blob(maxFldSize);
 		fail ("must fail");
 	}
-	catch (DataException&) 
+	catch (DataException&)
 	{
 		_pSession->setProperty("maxFieldSize", Poco::Any(maxFldSize));
 	}
@@ -182,10 +182,10 @@ void ODBCMySQLTest::testNull()
 
 void ODBCMySQLTest::testStoredProcedure()
 {
-	//MySQL is currently buggy in this area: 
+	//MySQL is currently buggy in this area:
 	// http://bugs.mysql.com/bug.php?id=17898
 	// http://bugs.mysql.com/bug.php?id=27632
-	// Additionally, the standard ODBC stored procedure call syntax 
+	// Additionally, the standard ODBC stored procedure call syntax
 	// {call storedProcedure(?)} is currently (3.51.12.00) not supported.
 	// See http://bugs.mysql.com/bug.php?id=26535
 	// Poco::Data support for MySQL ODBC is postponed until the above
@@ -195,10 +195,10 @@ void ODBCMySQLTest::testStoredProcedure()
 
 void ODBCMySQLTest::testStoredFunction()
 {
-	//MySQL is currently buggy in this area: 
+	//MySQL is currently buggy in this area:
 	// http://bugs.mysql.com/bug.php?id=17898
 	// http://bugs.mysql.com/bug.php?id=27632
-	// Additionally, the standard ODBC stored procedure call syntax 
+	// Additionally, the standard ODBC stored procedure call syntax
 	// {call storedProcedure(?)} is currently (3.51.12.00) not supported.
 	// See http://bugs.mysql.com/bug.php?id=26535
 	// Poco::Data support for MySQL ODBC is postponed until the above
@@ -390,19 +390,19 @@ void ODBCMySQLTest::recreateLogTable()
 	dropObject("TABLE", "T_POCO_LOG");
 	dropObject("TABLE", "T_POCO_LOG_ARCHIVE");
 
-	try 
-	{ 
+	try
+	{
 		std::string sql = "CREATE TABLE %s "
 			"(Source VARCHAR(100),"
 			"Name VARCHAR(100),"
 			"ProcessId INTEGER,"
 			"Thread VARCHAR(100), "
-			"ThreadId INTEGER," 
+			"ThreadId INTEGER,"
 			"Priority INTEGER,"
 			"Text VARCHAR(100),"
-			"DateTime DATETIME)"; 
+			"DateTime DATETIME)";
 
-		session() << sql, "T_POCO_LOG", now; 
+		session() << sql, "T_POCO_LOG", now;
 		session() << sql, "T_POCO_LOG_ARCHIVE", now;
 
 	} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateLogTable()"); }
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/ODBCMySQLTest.h b/vendor/POCO/Data/ODBC/testsuite/src/ODBCMySQLTest.h
index c1ea5dc5..ce110410 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/ODBCMySQLTest.h
+++ b/vendor/POCO/Data/ODBC/testsuite/src/ODBCMySQLTest.h
@@ -21,8 +21,8 @@
 class ODBCMySQLTest: public ODBCTest
 	/// MySQL ODBC test class
 	/// Tested:
-	/// 
-	/// Driver          | DB                        | OS                                        | Driver Manager 
+	///
+	/// Driver          | DB                        | OS                                        | Driver Manager
 	/// ----------------+---------------------------+-------------------------------------------+---------------------
 	/// 03.51.12.00     | MySQL 5.0.27-community-nt | MS Windows XP Professional x64 v.2003/SP1 | 3.526.3959.0
 	///  3.51.11.-6     | MySQL 5.0.27-community-nt | Ubuntu 7.04 (2.6.20-15-generic #2 SMP)    | unixODBC 2.2.11.-13
@@ -41,7 +41,7 @@ public:
 	void testStoredFunction();
 
 	void testNull();
-	
+
 	void testMultipleResults();
 	void testFilter();
 
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/ODBCOracleTest.cpp b/vendor/POCO/Data/ODBC/testsuite/src/ODBCOracleTest.cpp
index fc90a070..29091efe 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/ODBCOracleTest.cpp
+++ b/vendor/POCO/Data/ODBC/testsuite/src/ODBCOracleTest.cpp
@@ -81,7 +81,7 @@ std::string          ODBCOracleTest::_connectString = "DRIVER={" ORACLE_ODBC_DRI
 	"APA=T;" // thread safety (T/F), default T
 	"DBA=W;"; // write access (R/W)
 
-const std::string ODBCOracleTest::MULTI_INSERT = 
+const std::string ODBCOracleTest::MULTI_INSERT =
 	"BEGIN "
 	"INSERT INTO Test VALUES ('1', 2, 3.5);"
 	"INSERT INTO Test VALUES ('2', 3, 4.5);"
@@ -94,7 +94,7 @@ const std::string ODBCOracleTest::MULTI_SELECT =
 	"{CALL multiResultsProcedure()}";
 
 
-ODBCOracleTest::ODBCOracleTest(const std::string& name): 
+ODBCOracleTest::ODBCOracleTest(const std::string& name):
 	ODBCTest(name, _pSession, _pExecutor, _dsn, _uid, _pwd, _connectString)
 {
 }
@@ -139,27 +139,27 @@ void ODBCOracleTest::testBarebone()
 			"OPEN ret5 FOR SELECT * FROM Test WHERE First = '5';"
 			"END multiResultsProcedure;" , now;
 
-	_pExecutor->bareboneODBCMultiResultTest(_connectString, 
-		tableCreateString, 
-		SQLExecutor::PB_IMMEDIATE, 
+	_pExecutor->bareboneODBCMultiResultTest(_connectString,
+		tableCreateString,
+		SQLExecutor::PB_IMMEDIATE,
 		SQLExecutor::DE_MANUAL,
 		MULTI_INSERT,
 		MULTI_SELECT);
-	_pExecutor->bareboneODBCMultiResultTest(_connectString, 
-		tableCreateString, 
-		SQLExecutor::PB_IMMEDIATE, 
+	_pExecutor->bareboneODBCMultiResultTest(_connectString,
+		tableCreateString,
+		SQLExecutor::PB_IMMEDIATE,
 		SQLExecutor::DE_BOUND,
 		MULTI_INSERT,
 		MULTI_SELECT);
-	_pExecutor->bareboneODBCMultiResultTest(_connectString, 
-		tableCreateString, 
-		SQLExecutor::PB_AT_EXEC, 
+	_pExecutor->bareboneODBCMultiResultTest(_connectString,
+		tableCreateString,
+		SQLExecutor::PB_AT_EXEC,
 		SQLExecutor::DE_MANUAL,
 		MULTI_INSERT,
 		MULTI_SELECT);
-	_pExecutor->bareboneODBCMultiResultTest(_connectString, 
-		tableCreateString, 
-		SQLExecutor::PB_AT_EXEC, 
+	_pExecutor->bareboneODBCMultiResultTest(_connectString,
+		tableCreateString,
+		SQLExecutor::PB_AT_EXEC,
 		SQLExecutor::DE_BOUND,
 		MULTI_INSERT,
 		MULTI_SELECT);
@@ -178,7 +178,7 @@ void ODBCOracleTest::testBLOB()
 		executor().blob(maxFldSize);
 		fail ("must fail");
 	}
-	catch (DataException&) 
+	catch (DataException&)
 	{
 		session().setProperty("maxFieldSize", Poco::Any(maxFldSize));
 	}
@@ -277,7 +277,7 @@ void ODBCOracleTest::testStoredProcedure()
 		k += 2;
 	}
 
-	
+
 	//strings only work with auto-binding
 	session().setFeature("autoBind", true);
 
@@ -286,7 +286,7 @@ void ODBCOracleTest::testStoredProcedure()
 		" BEGIN outParam := inParam; "
 		"END storedProcedure;" , now;
 
-	std::string inParam = 
+	std::string inParam =
 		"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
 		"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
 		"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
@@ -342,7 +342,7 @@ void ODBCOracleTest::testStoredProcedureDynamicAny()
 	for (int k = 0; k < 8;)
 	{
 		session().setFeature("autoBind", bindValue(k));
-		
+
 		DynamicAny i = 2;
 		DynamicAny j = 0;
 
@@ -391,15 +391,15 @@ void ODBCOracleTest::testCursorStoredProcedure()
 			" OPEN ret FOR "
 			" SELECT * "
 			" FROM Person "
-			" WHERE Age < ageLimit " 
+			" WHERE Age < ageLimit "
 			" ORDER BY Age DESC; "
 			" END storedCursorProcedure;" , now;
 
 		people.clear();
 		int age = 13;
-		
+
 		*_pSession << "{call storedCursorProcedure(?)}", in(age), into(people), now;
-		
+
 		assertTrue (2 == people.size());
 		assertTrue (Person("Simpson", "Bart", "Springfield", 12) == people[0]);
 		assertTrue (Person("Simpson", "Lisa", "Springfield", 10) == people[1]);
@@ -460,7 +460,7 @@ void ODBCOracleTest::testStoredFunction()
 		result = 0;
 		*_pSession << "{? = call storedFunction(?, ?)}", out(result), in(i), out(j), now;
 		assertTrue (4 == j);
-		assertTrue (j == result); 
+		assertTrue (j == result);
 		dropObject("FUNCTION", "storedFunction");
 
 		*_pSession << "CREATE OR REPLACE "
@@ -475,8 +475,8 @@ void ODBCOracleTest::testStoredFunction()
 		*_pSession << "{? = call storedFunction(?, ?)}", out(result), io(i), io(j), now;
 		assertTrue (1 == j);
 		assertTrue (2 == i);
-		assertTrue (3 == result); 
-		
+		assertTrue (3 == result);
+
 		Tuple params(1, 2);
 		assertTrue (1 == params.get<0>());
 		assertTrue (2 == params.get<1>());
@@ -484,9 +484,9 @@ void ODBCOracleTest::testStoredFunction()
 		*_pSession << "{? = call storedFunction(?, ?)}", out(result), io(params), now;
 		assertTrue (1 == params.get<1>());
 		assertTrue (2 == params.get<0>());
-		assertTrue (3 == result); 
+		assertTrue (3 == result);
 		dropObject("FUNCTION", "storedFunction");
-		
+
 		k += 2;
 	}
 
@@ -530,16 +530,16 @@ void ODBCOracleTest::testCursorStoredFunction()
 			" OPEN ret FOR "
 			" SELECT * "
 			" FROM Person "
-			" WHERE Age < ageLimit " 
+			" WHERE Age < ageLimit "
 			" ORDER BY Age DESC; "
 			" RETURN ret; "
 			" END storedCursorFunction;" , now;
 
 		people.clear();
 		int age = 13;
-		
+
 		*_pSession << "{call storedCursorFunction(?)}", in(age), into(people), now;
-		
+
 		assertTrue (2 == people.size());
 		assertTrue (Person("Simpson", "Bart", "Springfield", 12) == people[0]);
 		assertTrue (Person("Simpson", "Lisa", "Springfield", 10) == people[1]);
@@ -553,7 +553,7 @@ void ODBCOracleTest::testCursorStoredFunction()
 
 		dropObject("TABLE", "Person");
 		dropObject("FUNCTION", "storedCursorFunction");
-		
+
 		k += 2;
 	}
 }
@@ -611,7 +611,7 @@ void ODBCOracleTest::testAutoTransaction()
 	assertTrue (0 == count);
 
 	session().setFeature("autoCommit", false);
-	
+
 	try
 	{
 		AutoTransaction at(session());
@@ -794,14 +794,14 @@ void ODBCOracleTest::recreateNullsTable(const std::string& notNull)
 void ODBCOracleTest::recreateMiscTable()
 {
 	dropObject("TABLE", "MiscTest");
-	try 
-	{ 
+	try
+	{
 		session() << "CREATE TABLE MiscTest "
 			"(First VARCHAR(30),"
 			"Second BLOB,"
 			"Third INTEGER,"
 			"Fourth NUMBER,"
-			"Fifth TIMESTAMP)", now; 
+			"Fifth TIMESTAMP)", now;
 	} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateMiscTable()"); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateMiscTable()"); }
 }
@@ -812,20 +812,20 @@ void ODBCOracleTest::recreateLogTable()
 	dropObject("TABLE", "T_POCO_LOG");
 	dropObject("TABLE", "T_POCO_LOG_ARCHIVE");
 
-	try 
-	{ 
+	try
+	{
 		std::string sql = "CREATE TABLE %s "
 			"(Source VARCHAR(100),"
 			"Name VARCHAR(100),"
 			"ProcessId INTEGER,"
 			"Thread VARCHAR(100), "
-			"ThreadId INTEGER," 
+			"ThreadId INTEGER,"
 			"Priority INTEGER,"
 			"Text VARCHAR(100),"
-			"DateTime TIMESTAMP)"; 
+			"DateTime TIMESTAMP)";
 
-		session() << sql, "T_POCO_LOG", now; 
-		session() << sql, "T_POCO_LOG_ARCHIVE", now; 
+		session() << sql, "T_POCO_LOG", now;
+		session() << sql, "T_POCO_LOG_ARCHIVE", now;
 
 	} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateLogTable()"); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateLogTable()"); }
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/ODBCOracleTest.h b/vendor/POCO/Data/ODBC/testsuite/src/ODBCOracleTest.h
index 92a1bbca..168710be 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/ODBCOracleTest.h
+++ b/vendor/POCO/Data/ODBC/testsuite/src/ODBCOracleTest.h
@@ -21,7 +21,7 @@
 class ODBCOracleTest: public ODBCTest
 	/// Oracle ODBC test class
 	/// Tested:
-	/// 
+	///
 	/// Driver		|	DB							| OS
 	/// ------------+-------------------------------+------------------------------------------
 	///	10.02.00.01	| Oracle9i Release 9.2.0.4.0	| MS Windows XP Professional x64 v.2003/SP1
@@ -51,7 +51,7 @@ public:
 
 private:
 	static void testBarebone();
-	
+
 	void dropObject(const std::string& type, const std::string& name);
 	void recreateNullableTable();
 	void recreatePersonTable();
@@ -72,7 +72,7 @@ private:
 
 	static ODBCTest::SessionPtr _pSession;
 	static ODBCTest::ExecPtr    _pExecutor;
-	
+
 	static std::string _driver;
 	static std::string _dsn;
 	static std::string _uid;
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/ODBCPostgreSQLTest.cpp b/vendor/POCO/Data/ODBC/testsuite/src/ODBCPostgreSQLTest.cpp
index 2c2f1cf3..81d467b5 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/ODBCPostgreSQLTest.cpp
+++ b/vendor/POCO/Data/ODBC/testsuite/src/ODBCPostgreSQLTest.cpp
@@ -75,7 +75,7 @@ std::string          ODBCPostgreSQLTest::_driver = POSTGRESQL_ODBC_DRIVER;
 std::string          ODBCPostgreSQLTest::_dsn = POSTGRESQL_DSN;
 std::string          ODBCPostgreSQLTest::_uid = POSTGRESQL_UID;
 std::string          ODBCPostgreSQLTest::_pwd = POSTGRESQL_PWD;
-std::string ODBCPostgreSQLTest::_connectString = 
+std::string ODBCPostgreSQLTest::_connectString =
 	"DRIVER=" POSTGRESQL_ODBC_DRIVER ";"
 	"DATABASE=" POSTGRESQL_DB ";"
 	"SERVER=" POSTGRESQL_SERVER ";"
@@ -114,7 +114,7 @@ std::string ODBCPostgreSQLTest::_connectString =
 	"ReadOnly=0;";
 
 
-ODBCPostgreSQLTest::ODBCPostgreSQLTest(const std::string& name): 
+ODBCPostgreSQLTest::ODBCPostgreSQLTest(const std::string& name):
 	ODBCTest(name, _pSession, _pExecutor, _dsn, _uid, _pwd, _connectString)
 {
 }
@@ -179,7 +179,7 @@ void ODBCPostgreSQLTest::testBLOB()
 		executor().blob(maxFldSize);
 		fail ("must fail");
 	}
-	catch (DataException&) 
+	catch (DataException&)
 	{
 		session().setProperty("maxFieldSize", Poco::Any(maxFldSize));
 	}
@@ -207,7 +207,7 @@ void ODBCPostgreSQLTest::testStoredFunction()
 		session().setFeature("autoExtract", bindValue(k+1));
 
 		dropObject("FUNCTION", "storedFunction()");
-		try 
+		try
 		{
 			session() << "CREATE FUNCTION storedFunction() RETURNS INTEGER AS '"
 				"BEGIN "
@@ -223,7 +223,7 @@ void ODBCPostgreSQLTest::testStoredFunction()
 		assertTrue (-1 == i);
 		dropObject("FUNCTION", "storedFunction()");
 
-		try 
+		try
 		{
 			session() << "CREATE FUNCTION storedFunction(INTEGER) RETURNS INTEGER AS '"
 				"BEGIN "
@@ -241,7 +241,7 @@ void ODBCPostgreSQLTest::testStoredFunction()
 		dropObject("FUNCTION", "storedFunction(INTEGER)");
 
 		dropObject("FUNCTION", "storedFunction(TIMESTAMP)");
-		try 
+		try
 		{
 			session() << "CREATE FUNCTION storedFunction(TIMESTAMP) RETURNS TIMESTAMP AS '"
 				"BEGIN "
@@ -259,23 +259,23 @@ void ODBCPostgreSQLTest::testStoredFunction()
 		dropObject("FUNCTION", "storedFunction(TIMESTAMP)");
 
 		dropObject("FUNCTION", "storedFunction(TEXT, TEXT)");
-		try 
+		try
 		{
 			session() << "CREATE FUNCTION storedFunction(TEXT,TEXT) RETURNS TEXT AS '"
 				"BEGIN "
 				" RETURN $1 || '', '' || $2 || ''!'';"
 				"END;'"
-				"LANGUAGE 'plpgsql'" , now; 
+				"LANGUAGE 'plpgsql'" , now;
 		}
 		catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (func); }
 		catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (func); }
-		
+
 		std::string param1 = "Hello";
 		std::string param2 = "world";
 		std::string ret;
-		try 
+		try
 		{
-			session() << "{? = call storedFunction(?,?)}", out(ret), in(param1), in(param2), now; 
+			session() << "{? = call storedFunction(?,?)}", out(ret), in(param1), in(param2), now;
 		}
 		catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (func); }
 		catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (func); }
@@ -346,13 +346,13 @@ void ODBCPostgreSQLTest::configurePLPgSQL()
 			"RETURNS OPAQUE "
 			"AS '%splpgsql.dll' "
 			"LANGUAGE 'C';", _libDir), now;
-		
+
 		session() << "CREATE LANGUAGE 'plpgsql' "
 			"HANDLER plpgsql_call_handler "
 			"LANCOMPILER 'PL/pgSQL'", now;
 
-	}catch(StatementException& ex) 
-	{  
+	}catch(StatementException& ex)
+	{
 		if (1 != ex.diagnostics().nativeError(0))
 			throw;
 	}
@@ -522,15 +522,15 @@ void ODBCPostgreSQLTest::recreateBoolTable()
 void ODBCPostgreSQLTest::recreateMiscTable()
 {
 	dropObject("TABLE", "MiscTest");
-	try 
-	{ 
+	try
+	{
 		// Mammoth does not bind columns properly
 		session() << "CREATE TABLE MiscTest "
 			"(First VARCHAR(30),"
 			"Second BYTEA,"
 			"Third INTEGER,"
 			"Fourth FLOAT,"
-			"Fifth TIMESTAMP)", now; 
+			"Fifth TIMESTAMP)", now;
 	} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateMiscTable()"); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateMiscTable()"); }
 }
@@ -541,20 +541,20 @@ void ODBCPostgreSQLTest::recreateLogTable()
 	dropObject("TABLE", "T_POCO_LOG");
 	dropObject("TABLE", "T_POCO_LOG_ARCHIVE");
 
-	try 
-	{ 
+	try
+	{
 		std::string sql = "CREATE TABLE %s "
 			"(Source VARCHAR,"
 			"Name VARCHAR,"
 			"ProcessId INTEGER,"
 			"Thread VARCHAR, "
-			"ThreadId INTEGER," 
+			"ThreadId INTEGER,"
 			"Priority INTEGER,"
 			"Text VARCHAR,"
-			"DateTime TIMESTAMP)"; 
+			"DateTime TIMESTAMP)";
 
-		session() << sql, "T_POCO_LOG", now; 
-		session() << sql, "T_POCO_LOG_ARCHIVE", now; 
+		session() << sql, "T_POCO_LOG", now;
+		session() << sql, "T_POCO_LOG_ARCHIVE", now;
 
 	} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateLogTable()"); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateLogTable()"); }
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/ODBCPostgreSQLTest.h b/vendor/POCO/Data/ODBC/testsuite/src/ODBCPostgreSQLTest.h
index 072d670b..37b47a7b 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/ODBCPostgreSQLTest.h
+++ b/vendor/POCO/Data/ODBC/testsuite/src/ODBCPostgreSQLTest.h
@@ -25,15 +25,15 @@
 class ODBCPostgreSQLTest: public ODBCTest
 	/// PostgreSQL ODBC test class
 	/// Tested:
-	/// 
+	///
 	/// Driver		   |	DB                | OS                                        | Driver Manager     |Notes
 	/// ---------------+----------------------+-------------------------------------------+--------------------+--------------------------
 	///	07.03.02.60	   | PostgreSQL 7.4.6     | MS Windows XP Professional x64 v.2003/SP1 | 3.526.3959.0       | BLOB fails (missing 'lo')
 	/// 08.01.02.00    | PostgreSQL 8.1.5-1   | MS Windows XP Professional x64 v.2003/SP1 | 3.526.3959.0       |
 	/// 1:08.01.0200-2 | PostgreSQL 8.1.5-1   | Ubuntu 7.04 (2.6.20-15-generic #2 SMP)    | unixODBC 2.2.11.-13|
-	/// Mammoth ODBCng |                      |                                           |                    | 
+	/// Mammoth ODBCng |                      |                                           |                    |
 	/// (0.99.00.122)  | PostgreSQL 8.1.5-1   | MS Windows XP Professional x64 v.2003/SP1 | 3.526.3959.0       |
-	/// 
+	///
 {
 public:
 	ODBCPostgreSQLTest(const std::string& name);
@@ -71,8 +71,8 @@ private:
 
 	void configurePLPgSQL();
 		/// Configures PL/pgSQL in the database. A reasonable defaults
-		/// for the interpreter location on WIN32 and POSIX platforms are 
-		/// supplied (see installDir member variable). 
+		/// for the interpreter location on WIN32 and POSIX platforms are
+		/// supplied (see installDir member variable).
 		/// If these do not work, user must determine the proper location,
 		/// modify the function and recompile.
 		/// Alternative is direct database configuration for PL/pgSQL usage.
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/ODBCSQLServerTest.cpp b/vendor/POCO/Data/ODBC/testsuite/src/ODBCSQLServerTest.cpp
index bff4d1dc..97a6c919 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/ODBCSQLServerTest.cpp
+++ b/vendor/POCO/Data/ODBC/testsuite/src/ODBCSQLServerTest.cpp
@@ -87,6 +87,7 @@ using Poco::DateTime;
 
 
 ODBCTest::SessionPtr ODBCSQLServerTest::_pSession;
+ODBCTest::SessionPtr ODBCSQLServerTest::_pEncSession;
 ODBCTest::ExecPtr    ODBCSQLServerTest::_pExecutor;
 std::string          ODBCSQLServerTest::_driver = MS_SQL_SERVER_ODBC_DRIVER;
 std::string          ODBCSQLServerTest::_dsn = MS_SQL_SERVER_DSN;
@@ -106,7 +107,7 @@ std::string ODBCSQLServerTest::_connectString = "DRIVER=" MS_SQL_SERVER_ODBC_DRI
 	;
 
 
-ODBCSQLServerTest::ODBCSQLServerTest(const std::string& name): 
+ODBCSQLServerTest::ODBCSQLServerTest(const std::string& name):
 	ODBCTest(name, _pSession, _pExecutor, _dsn, _uid, _pwd, _connectString)
 {
 }
@@ -127,13 +128,13 @@ void ODBCSQLServerTest::testBareboneODBC()
 		"Fifth FLOAT,"
 		"Sixth DATETIME)";
 
-	executor().bareboneODBCTest(dbConnString(), tableCreateString, 
+	executor().bareboneODBCTest(dbConnString(), tableCreateString,
 		SQLExecutor::PB_IMMEDIATE, SQLExecutor::DE_MANUAL, true, "CONVERT(VARBINARY(30),?)");
-	executor().bareboneODBCTest(dbConnString(), tableCreateString, 
+	executor().bareboneODBCTest(dbConnString(), tableCreateString,
 		SQLExecutor::PB_IMMEDIATE, SQLExecutor::DE_BOUND, true, "CONVERT(VARBINARY(30),?)");
-	executor().bareboneODBCTest(dbConnString(), tableCreateString, 
+	executor().bareboneODBCTest(dbConnString(), tableCreateString,
 		SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_MANUAL, true, "CONVERT(VARBINARY(30),?)");
-	executor().bareboneODBCTest(dbConnString(), tableCreateString, 
+	executor().bareboneODBCTest(dbConnString(), tableCreateString,
 		SQLExecutor::PB_AT_EXEC, SQLExecutor::DE_BOUND, true, "CONVERT(VARBINARY(30),?)");
 
 	tableCreateString = "CREATE TABLE Test "
@@ -254,7 +255,7 @@ void ODBCSQLServerTest::testStoredProcedure()
 			"SET @outParam = -1; "
 			"END;"
 		, now;
-		
+
 		int i = 0;
 		session() << "{call storedProcedure(?)}", out(i), now;
 		assertTrue (-1 == i);
@@ -297,8 +298,8 @@ void ODBCSQLServerTest::testStoredProcedure()
 	}
 /*TODO - currently fails with following error:
 
-[Microsoft][ODBC SQL Server Driver][SQL Server]Invalid parameter 
-2 (''):  Data type 0x23 is a deprecated large object, or LOB, but is marked as output parameter.  
+[Microsoft][ODBC SQL Server Driver][SQL Server]Invalid parameter
+2 (''):  Data type 0x23 is a deprecated large object, or LOB, but is marked as output parameter.
 Deprecated types are not supported as output parameters.  Use current large object types instead.
 
 	session().setFeature("autoBind", true);
@@ -339,16 +340,16 @@ void ODBCSQLServerTest::testCursorStoredProcedure()
 			"BEGIN "
 			" SELECT * "
 			" FROM Person "
-			" WHERE Age < @ageLimit " 
+			" WHERE Age < @ageLimit "
 			" ORDER BY Age DESC; "
 			"END;"
 		, now;
 
 		people.clear();
 		int age = 13;
-		
+
 		session() << "{call storedCursorProcedure(?)}", in(age), into(people), now;
-		
+
 		assertTrue (2 == people.size());
 		assertTrue (Person("Simpson", "Bart", "Springfield", 12) == people[0]);
 		assertTrue (Person("Simpson", "Lisa", "Springfield", 10) == people[1]);
@@ -409,7 +410,7 @@ void ODBCSQLServerTest::testStoredProcedureDynamicAny()
 	for (int k = 0; k < 8;)
 	{
 		session().setFeature("autoBind", bindValue(k));
-		
+
 		DynamicAny i = 2;
 		DynamicAny j = 0;
 
@@ -506,7 +507,7 @@ void ODBCSQLServerTest::testStoredFunction()
 		session() << "{? = call storedFunction(?, ?)}", out(result), io(i), io(j), now;
 		assertTrue (1 == j);
 		assertTrue (2 == i);
-		assertTrue (3 == result); 
+		assertTrue (3 == result);
 
 		Tuple params(1, 2);
 		assertTrue (1 == params.get<0>());
@@ -515,7 +516,7 @@ void ODBCSQLServerTest::testStoredFunction()
 		session() << "{? = call storedFunction(?, ?)}", out(result), io(params), now;
 		assertTrue (1 == params.get<1>());
 		assertTrue (2 == params.get<0>());
-		assertTrue (3 == result); 
+		assertTrue (3 == result);
 
 		dropObject("PROCEDURE", "storedFunction");
 
@@ -683,15 +684,15 @@ void ODBCSQLServerTest::recreateBoolTable()
 void ODBCSQLServerTest::recreateMiscTable()
 {
 	dropObject("TABLE", "MiscTest");
-	try 
-	{ 
+	try
+	{
 		session() << "CREATE TABLE MiscTest "
 			"(First VARCHAR(30),"
 			"Second VARBINARY(30),"
 			"Third INTEGER,"
 			"Fourth FLOAT,"
 			"Fifth DATETIME,"
-			"Sixth BIT)", now; 
+			"Sixth BIT)", now;
 	} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateMiscTable()"); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateMiscTable()"); }
 }
@@ -702,20 +703,20 @@ void ODBCSQLServerTest::recreateLogTable()
 	dropObject("TABLE", "T_POCO_LOG");
 	dropObject("TABLE", "T_POCO_LOG_ARCHIVE");
 
-	try 
-	{ 
+	try
+	{
 		std::string sql = "CREATE TABLE %s "
 			"(Source VARCHAR(max),"
 			"Name VARCHAR(max),"
 			"ProcessId INTEGER,"
 			"Thread VARCHAR(max), "
-			"ThreadId INTEGER," 
+			"ThreadId INTEGER,"
 			"Priority INTEGER,"
 			"Text VARCHAR(max),"
 			"DateTime DATETIME)";
 
-		session() << sql, "T_POCO_LOG", now; 
-		session() << sql, "T_POCO_LOG_ARCHIVE", now; 
+		session() << sql, "T_POCO_LOG", now;
+		session() << sql, "T_POCO_LOG_ARCHIVE", now;
 
 	} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateLogTable()"); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateLogTable()"); }
@@ -733,13 +734,28 @@ void ODBCSQLServerTest::recreateUnicodeTable()
 }
 
 
+void ODBCSQLServerTest::recreateEncodingTables()
+{
+#if defined (POCO_ODBC_UNICODE)
+	dropObject("TABLE", "Latin1Table");
+	try { session() << "CREATE TABLE Latin1Table (str NVARCHAR(30))", now; }
+	catch (ConnectionException& ce) { std::cout << ce.toString() << std::endl; fail("recreateEncodingTables()"); }
+	catch (StatementException& se) { std::cout << se.toString() << std::endl; fail("recreateEncodingTables()"); }
+#endif
+}
+
+
 CppUnit::Test* ODBCSQLServerTest::suite()
 {
 	if ((_pSession = init(_driver, _dsn, _uid, _pwd, _connectString, _db)))
 	{
 		std::cout << "*** Connected to [" << _driver << "] test database." << std::endl;
+		std::string enc = "Latin1";
+		if ((_pEncSession = init(_driver, _dsn, _uid, _pwd, _connectString, _db, enc)))
+			std::cout << "*** Connected to [" << _driver << "] test database, encoding: [" << enc << "]." << std::endl;
+		// ...
 
-		_pExecutor = new SQLExecutor(_driver + " SQL Executor", _pSession);
+		_pExecutor = new SQLExecutor(_driver + " SQL Executor", _pSession, _pEncSession);
 
 		CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("ODBCSQLServerTest");
 
@@ -822,6 +838,7 @@ CppUnit::Test* ODBCSQLServerTest::suite()
 		CppUnit_addTest(pSuite, ODBCSQLServerTest, testTransactor);
 		CppUnit_addTest(pSuite, ODBCSQLServerTest, testNullable);
 		CppUnit_addTest(pSuite, ODBCSQLServerTest, testUnicode);
+		CppUnit_addTest(pSuite, ODBCSQLServerTest, testEncoding);
 		CppUnit_addTest(pSuite, ODBCSQLServerTest, testReconnect);
 
 		return pSuite;
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/ODBCSQLServerTest.h b/vendor/POCO/Data/ODBC/testsuite/src/ODBCSQLServerTest.h
index 67a6fedb..40de5141 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/ODBCSQLServerTest.h
+++ b/vendor/POCO/Data/ODBC/testsuite/src/ODBCSQLServerTest.h
@@ -25,7 +25,7 @@
 class ODBCSQLServerTest: public ODBCTest
 	/// SQLServer ODBC test class
 	/// Tested:
-	/// 
+	///
 	/// Driver				|	DB								| OS
 	/// --------------------+-----------------------------------+------------------------------------------
 	/// 2000.86.1830.00		| SQL Server Express 9.0.2047		| MS Windows XP Professional x64 v.2003/SP1
@@ -48,7 +48,7 @@ public:
 	void testCursorStoredProcedure();
 	void testStoredProcedureAny();
 	void testStoredProcedureDynamicAny();
-	
+
 	void testStoredFunction();
 
 	static CppUnit::Test* suite();
@@ -74,8 +74,10 @@ private:
 	void recreateMiscTable();
 	void recreateLogTable();
 	void recreateUnicodeTable();
+	void recreateEncodingTables();
 
 	static SessionPtr  _pSession;
+	static SessionPtr  _pEncSession;
 	static ExecPtr     _pExecutor;
 	static std::string _driver;
 	static std::string _dsn;
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/ODBCSQLiteTest.cpp b/vendor/POCO/Data/ODBC/testsuite/src/ODBCSQLiteTest.cpp
index 645a9a8b..61b4bcf6 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/ODBCSQLiteTest.cpp
+++ b/vendor/POCO/Data/ODBC/testsuite/src/ODBCSQLiteTest.cpp
@@ -45,11 +45,11 @@ std::string          ODBCSQLiteTest::_driver = SQLITE_ODBC_DRIVER;
 std::string          ODBCSQLiteTest::_dsn = SQLITE_DSN;
 std::string          ODBCSQLiteTest::_uid = "";
 std::string          ODBCSQLiteTest::_pwd = "";
-std::string          ODBCSQLiteTest::_connectString = "Driver=" SQLITE_ODBC_DRIVER 
+std::string          ODBCSQLiteTest::_connectString = "Driver=" SQLITE_ODBC_DRIVER
 	";Database=" SQLITE_DB ";";
 
 
-ODBCSQLiteTest::ODBCSQLiteTest(const std::string& name): 
+ODBCSQLiteTest::ODBCSQLiteTest(const std::string& name):
 	ODBCTest(name, _pSession, _pExecutor, _dsn, _uid, _pwd, _connectString)
 {
 }
@@ -116,7 +116,7 @@ void ODBCSQLiteTest::testAffectedRows()
 		// why "WHERE 1" is necessary here
 		_pExecutor->affectedRows("WHERE 1");
 		i += 2;
-	}	
+	}
 }
 
 
@@ -156,7 +156,7 @@ void ODBCSQLiteTest::dropObject(const std::string& type, const std::string& name
 			}
 		}
 
-		if (!ignoreError) 
+		if (!ignoreError)
 		{
 			std::cout << ex.toString() << std::endl;
 			throw;
@@ -273,15 +273,15 @@ void ODBCSQLiteTest::recreateNullsTable(const std::string& notNull)
 void ODBCSQLiteTest::recreateMiscTable()
 {
 	dropObject("TABLE", "MiscTest");
-	try 
-	{ 
+	try
+	{
 		// SQLite fails with BLOB bulk operations
 		session() << "CREATE TABLE MiscTest "
 			"(First VARCHAR(30),"
 			//"Second BLOB,"
 			"Third INTEGER,"
 			"Fourth REAL,"
-			"Fifth DATETIME)", now; 
+			"Fifth DATETIME)", now;
 	} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateMiscTable()"); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateMiscTable()"); }
 }
@@ -292,20 +292,20 @@ void ODBCSQLiteTest::recreateLogTable()
 	dropObject("TABLE", "T_POCO_LOG");
 	dropObject("TABLE", "T_POCO_LOG_ARCHIVE");
 
-	try 
-	{ 
+	try
+	{
 		std::string sql = "CREATE TABLE %s "
 			"(Source VARCHAR,"
 			"Name VARCHAR,"
 			"ProcessId INTEGER,"
 			"Thread VARCHAR, "
-			"ThreadId INTEGER," 
+			"ThreadId INTEGER,"
 			"Priority INTEGER,"
 			"Text VARCHAR,"
 			"DateTime DATETIME)";
 
-		session() << sql, "T_POCO_LOG", now; 
-		session() << sql, "T_POCO_LOG_ARCHIVE", now; 
+		session() << sql, "T_POCO_LOG", now;
+		session() << sql, "T_POCO_LOG_ARCHIVE", now;
 
 	} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("recreateLogTable()"); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("recreateLogTable()"); }
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/ODBCSQLiteTest.h b/vendor/POCO/Data/ODBC/testsuite/src/ODBCSQLiteTest.h
index 83a6d1ed..b878c157 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/ODBCSQLiteTest.h
+++ b/vendor/POCO/Data/ODBC/testsuite/src/ODBCSQLiteTest.h
@@ -21,7 +21,7 @@
 class ODBCSQLiteTest: public ODBCTest
 	/// SQLite3 ODBC test class
 	/// Tested:
-	/// 
+	///
 	/// Driver		|	DB			| OS
 	/// ------------+---------------+------------------------------------------
 	///	00.70.00.00	| SQLite 3.*	| MS Windows XP Professional x64 v.2003/SP1
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/ODBCTest.cpp b/vendor/POCO/Data/ODBC/testsuite/src/ODBCTest.cpp
index 41668eee..6d5e98b7 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/ODBCTest.cpp
+++ b/vendor/POCO/Data/ODBC/testsuite/src/ODBCTest.cpp
@@ -49,7 +49,7 @@ using Poco::NotFoundException;
 
 
 ODBCTest::Drivers ODBCTest::_drivers;
-const bool        ODBCTest::_bindValues[8] = 
+const bool        ODBCTest::_bindValues[8] =
 	{true, true, true, false, false, true, false, false};
 
 
@@ -59,7 +59,7 @@ ODBCTest::ODBCTest(const std::string& name,
 	std::string& rDSN,
 	std::string& rUID,
 	std::string& rPwd,
-	std::string& rConnectString): 
+	std::string& rConnectString):
 	CppUnit::TestCase(name),
 	_pSession(pSession),
 	_pExecutor(pExecutor),
@@ -212,7 +212,7 @@ void ODBCTest::testInsertVector()
 		_pSession->setFeature("autoExtract", bindValue(i+1));
 		_pExecutor->insertVector();
 		i += 2;
-	}	
+	}
 }
 
 
@@ -227,7 +227,7 @@ void ODBCTest::testInsertEmptyVector()
 		_pSession->setFeature("autoExtract", bindValue(i+1));
 		_pExecutor->insertEmptyVector();
 		i += 2;
-	}	
+	}
 }
 
 
@@ -257,7 +257,7 @@ void ODBCTest::testComplexTypeList()
 		_pSession->setFeature("autoExtract", bindValue(i+1));
 		_pExecutor->complexTypeList();
 		i += 2;
-	}	
+	}
 }
 
 
@@ -272,7 +272,7 @@ void ODBCTest::testInsertList()
 		_pSession->setFeature("autoExtract", bindValue(i+1));
 		_pExecutor->insertList();
 		i += 2;
-	}	
+	}
 }
 
 
@@ -287,7 +287,7 @@ void ODBCTest::testInsertEmptyList()
 		_pSession->setFeature("autoExtract", bindValue(i+1));
 		_pExecutor->insertEmptyList();
 		i += 2;
-	}	
+	}
 }
 
 
@@ -317,7 +317,7 @@ void ODBCTest::testComplexTypeDeque()
 		_pSession->setFeature("autoExtract", bindValue(i+1));
 		_pExecutor->complexTypeDeque();
 		i += 2;
-	}	
+	}
 }
 
 
@@ -332,7 +332,7 @@ void ODBCTest::testInsertDeque()
 		_pSession->setFeature("autoExtract", bindValue(i+1));
 		_pExecutor->insertDeque();
 		i += 2;
-	}	
+	}
 }
 
 
@@ -347,7 +347,7 @@ void ODBCTest::testInsertEmptyDeque()
 		_pSession->setFeature("autoExtract", bindValue(i+1));
 		_pExecutor->insertEmptyDeque();
 		i += 2;
-	}	
+	}
 }
 
 
@@ -362,7 +362,7 @@ void ODBCTest::testAffectedRows()
 		_pSession->setFeature("autoExtract", bindValue(i+1));
 		_pExecutor->affectedRows();
 		i += 2;
-	}	
+	}
 }
 
 
@@ -377,7 +377,7 @@ void ODBCTest::testInsertSingleBulk()
 		_pSession->setFeature("autoExtract", bindValue(i+1));
 		_pExecutor->insertSingleBulk();
 		i += 2;
-	}	
+	}
 }
 
 
@@ -392,7 +392,7 @@ void ODBCTest::testInsertSingleBulkVec()
 		_pSession->setFeature("autoExtract", bindValue(i+1));
 		_pExecutor->insertSingleBulkVec();
 		i += 2;
-	}	
+	}
 }
 
 
@@ -422,7 +422,7 @@ void ODBCTest::testLimitZero()
 		_pSession->setFeature("autoExtract", bindValue(i+1));
 		_pExecutor->limitZero();
 		i += 2;
-	}	
+	}
 }
 
 
@@ -432,7 +432,7 @@ void ODBCTest::testLimitOnce()
 
 	recreateIntsTable();
 	_pExecutor->limitOnce();
-	
+
 }
 
 
@@ -579,7 +579,7 @@ void ODBCTest::testMultiSetComplex()
 		_pSession->setFeature("autoExtract", bindValue(i+1));
 		_pExecutor->multiSetComplex();
 		i += 2;
-	}	
+	}
 }
 
 
@@ -654,7 +654,7 @@ void ODBCTest::testSelectIntoSingleStep()
 		_pSession->setFeature("autoExtract", bindValue(i+1));
 		_pExecutor->selectIntoSingleStep();
 		i += 2;
-	}	
+	}
 }
 
 
@@ -669,7 +669,7 @@ void ODBCTest::testSelectIntoSingleFail()
 		_pSession->setFeature("autoExtract", bindValue(i+1));
 		_pExecutor->selectIntoSingleFail();
 		i += 2;
-	}	
+	}
 }
 
 
@@ -684,7 +684,7 @@ void ODBCTest::testLowerLimitOk()
 		_pSession->setFeature("autoExtract", bindValue(i+1));
 		_pExecutor->lowerLimitOk();
 		i += 2;
-	}	
+	}
 }
 
 
@@ -699,7 +699,7 @@ void ODBCTest::testSingleSelect()
 		_pSession->setFeature("autoExtract", bindValue(i+1));
 		_pExecutor->singleSelect();
 		i += 2;
-	}	
+	}
 }
 
 
@@ -1252,6 +1252,25 @@ void ODBCTest::testUnicode()
 }
 
 
+void ODBCTest::testEncoding()
+{
+#if defined (POCO_ODBC_UNICODE)
+	if (!_pSession) fail("Test not available.");
+
+	for (int i = 0; i < 8;)
+	{
+		recreateEncodingTables();
+		_pSession->setFeature("autoBind", bindValue(i));
+		_pSession->setFeature("autoExtract", bindValue(i + 1));
+		_pExecutor->encoding(_rConnectString);
+		i += 2;
+	}
+#else
+	std::cout << "Not an UNICODE build, skipping." << std::endl;
+#endif
+}
+
+
 void ODBCTest::testReconnect()
 {
 	if (!_pSession) fail ("Test not available.");
@@ -1281,13 +1300,13 @@ bool ODBCTest::canConnect(const std::string& driver,
 	{
 		if (((itDrv->first).find(driver) != std::string::npos))
 		{
-			std::cout << "Driver found: " << itDrv->first 
+			std::cout << "Driver found: " << itDrv->first
 				<< " (" << itDrv->second << ')' << std::endl;
 			break;
 		}
 	}
 
-	if (_drivers.end() == itDrv) 
+	if (_drivers.end() == itDrv)
 	{
 		dsn = "";
 		uid = "";
@@ -1341,15 +1360,19 @@ ODBCTest::SessionPtr ODBCTest::init(const std::string& driver,
 	std::string& uid,
 	std::string& pwd,
 	std::string& dbConnString,
-	const std::string& db)
+	const std::string& db,
+	const std::string& dbEncoding)
 {
 	Utility::drivers(_drivers);
 	if (!canConnect(driver, dsn, uid, pwd, dbConnString, db)) return 0;
-	
+
 	try
 	{
 		std::cout << "Conecting to [" << dbConnString << ']' << std::endl;
-		return new Session(Poco::Data::ODBC::Connector::KEY, dbConnString, 5);
+		SessionPtr ptr = new Session(Poco::Data::ODBC::Connector::KEY, dbConnString, 5);
+		if (!dbEncoding.empty())
+			ptr->setProperty("dbEncoding", dbEncoding);
+		return ptr;
 	}catch (ConnectionFailedException& ex)
 	{
 		std::cout << ex.displayText() << std::endl;
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/ODBCTest.h b/vendor/POCO/Data/ODBC/testsuite/src/ODBCTest.h
index d574ea8c..1971e6db 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/ODBCTest.h
+++ b/vendor/POCO/Data/ODBC/testsuite/src/ODBCTest.h
@@ -151,6 +151,7 @@ public:
 	virtual void testNullable();
 
 	virtual void testUnicode();
+	virtual void testEncoding();
 
 	virtual void testReconnect();
 
@@ -177,13 +178,15 @@ protected:
 	virtual void recreateMiscTable();
 	virtual void recreateLogTable();
 	virtual void recreateUnicodeTable();
+	virtual void recreateEncodingTables();
 
 	static SessionPtr init(const std::string& driver,
 		std::string& dsn,
 		std::string& uid,
 		std::string& pwd,
 		std::string& dbConnString,
-		const std::string& db = "");
+		const std::string& db = "",
+		const std::string& dbEncoding = "");
 
 	static bool canConnect(const std::string& driver,
 		std::string& dsn,
@@ -218,38 +221,38 @@ private:
 // inlines
 //
 
-inline void ODBCTest::testStoredProcedure() 
-{ 
+inline void ODBCTest::testStoredProcedure()
+{
 	throw Poco::NotImplementedException("ODBCTest::testStoredProcedure()");
 }
 
 
-inline void ODBCTest::testStoredProcedureAny() 
-{ 
+inline void ODBCTest::testStoredProcedureAny()
+{
 	throw Poco::NotImplementedException("ODBCTest::testStoredProcedureAny()");
 }
 
 
-inline void ODBCTest::testStoredProcedureDynamicAny() 
-{ 
+inline void ODBCTest::testStoredProcedureDynamicAny()
+{
 	throw Poco::NotImplementedException("ODBCTest::testStoredProcedureDynamicAny()");
 }
 
 
-inline void ODBCTest::testStoredFunction() 
-{ 
+inline void ODBCTest::testStoredFunction()
+{
 	throw Poco::NotImplementedException("ODBCTest::testStoredFunction()");
 }
 
 
-inline void ODBCTest::testStoredFunctionAny() 
-{ 
+inline void ODBCTest::testStoredFunctionAny()
+{
 	throw Poco::NotImplementedException("ODBCTest::testStoredFunctionAny()");
 }
 
 
-inline void ODBCTest::testStoredFunctionDynamicAny() 
-{ 
+inline void ODBCTest::testStoredFunctionDynamicAny()
+{
 	throw Poco::NotImplementedException("ODBCTest::testStoredFunctionDynamicAny()");
 }
 
@@ -261,109 +264,109 @@ inline void ODBCTest::dropObject(const std::string& type, const std::string& nam
 
 
 inline void ODBCTest::recreateNullableTable()
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreateNullableTable()");
 }
 
 
 inline void ODBCTest::recreatePersonTable()
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreatePersonTable()");
 }
 
 
 inline void ODBCTest::recreatePersonTupleTable()
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreatePersonTupleTable()");
 }
 
 
 inline void ODBCTest::recreatePersonBLOBTable()
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreatePersonBLOBTable()");
 }
 
 
 inline void ODBCTest::recreatePersonDateTimeTable()
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreatePersonDateTimeTable()");
 }
 
 
 inline void ODBCTest::recreatePersonDateTable()
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreatePersonDateTable()");
 }
 
 
 inline void ODBCTest::recreatePersonTimeTable()
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreatePersonTimeTable()");
 }
 
 
 inline void ODBCTest::recreateStringsTable()
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreateStringsTable()");
 }
 
 
 inline void ODBCTest::recreateIntsTable()
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreateIntsTable()");
 }
 
 
 inline void ODBCTest::recreateFloatsTable()
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreateFloatsTable()");
 }
 
 
 inline void ODBCTest::recreateUUIDsTable()
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreateUUIDsTable()");
 }
 
 
 inline void ODBCTest::recreateTuplesTable()
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreateTuplesTable()");
 }
 
 
 inline void ODBCTest::recreateVectorsTable()
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreateVectorsTable()");
 }
 
 
 inline void ODBCTest::recreateAnysTable()
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreateAnysTable()");
 }
 
 
 inline void ODBCTest::recreateNullsTable(const std::string&)
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreateNullsTable()");
 }
 
 
 inline void ODBCTest::recreateBoolTable()
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreateBoolTable()");
 }
 
 
 inline void ODBCTest::recreateMiscTable()
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreateMiscTable()");
 }
 
 
 inline void ODBCTest::recreateLogTable()
-{ 
+{
 	throw Poco::NotImplementedException("ODBCTest::recreateLogTable()");
 }
 
@@ -374,48 +377,54 @@ inline void ODBCTest::recreateUnicodeTable()
 }
 
 
-inline bool ODBCTest::bindValue(int i) 
-{ 
+inline void ODBCTest::recreateEncodingTables()
+{
+	throw Poco::NotImplementedException("ODBCTest::recreateUnicodeTables()");
+}
+
+
+inline bool ODBCTest::bindValue(int i)
+{
 	poco_assert (i < 8);
-	return _bindValues[i]; 
+	return _bindValues[i];
 }
 
 
-inline Poco::Data::Session& ODBCTest::session() 
-{ 
+inline Poco::Data::Session& ODBCTest::session()
+{
 	poco_check_ptr (_pSession);
-	return *_pSession; 
+	return *_pSession;
 }
 
 
-inline SQLExecutor& ODBCTest::executor() 
-{ 
+inline SQLExecutor& ODBCTest::executor()
+{
 	poco_check_ptr (_pExecutor);
-	return *_pExecutor; 
+	return *_pExecutor;
 }
 
 
-inline const std::string& ODBCTest::dsn() 
-{ 
-	return _rDSN; 
+inline const std::string& ODBCTest::dsn()
+{
+	return _rDSN;
 }
 
 
-inline const std::string& ODBCTest::uid() 
-{ 
-	return _rUID; 
+inline const std::string& ODBCTest::uid()
+{
+	return _rUID;
 }
 
 
-inline const std::string& ODBCTest::pwd() 
-{ 
-	return _rPwd; 
+inline const std::string& ODBCTest::pwd()
+{
+	return _rPwd;
 }
 
 
-inline const std::string& ODBCTest::dbConnString() 
-{ 
-	return _rConnectString; 
+inline const std::string& ODBCTest::dbConnString()
+{
+	return _rConnectString;
 }
 
 
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/ODBCTestSuite.cpp b/vendor/POCO/Data/ODBC/testsuite/src/ODBCTestSuite.cpp
index 64e508e6..d9d418a6 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/ODBCTestSuite.cpp
+++ b/vendor/POCO/Data/ODBC/testsuite/src/ODBCTestSuite.cpp
@@ -26,15 +26,15 @@ CppUnit::Test* ODBCTestSuite::suite()
 
 	// WARNING!
 	// On Win XP Pro, the PostgreSQL connection fails if attempted after DB2 w/ following error:
-	// 
-	// sqlState="IM003" 
-	// message="Specified driver could not be loaded due to system error  127 (PostgreSQL ANSI)." 
-	// nativeError=160 
+	//
+	// sqlState="IM003"
+	// message="Specified driver could not be loaded due to system error  127 (PostgreSQL ANSI)."
+	// nativeError=160
 	// System error 127 is "The specified procedure could not be found."
 	// This problem does not manifest with Mammoth ODBCng PostgreSQL driver.
 	//
 	// Oracle tests do not exit cleanly if Oracle driver is loaded after DB2.
-	// 
+	//
 	// For the time being, the workaround is to connect to DB2 after connecting to PostgreSQL and Oracle.
 
 	addTest(pSuite, ODBCMySQLTest::suite());
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/SQLExecutor.cpp b/vendor/POCO/Data/ODBC/testsuite/src/SQLExecutor.cpp
index 95aa2270..84f44c7a 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/SQLExecutor.cpp
+++ b/vendor/POCO/Data/ODBC/testsuite/src/SQLExecutor.cpp
@@ -180,9 +180,9 @@ template <>
 class TypeHandler
 {
 public:
-	static void bind(std::size_t pos, 
-		const Person& obj, 
-		AbstractBinder::Ptr pBinder, 
+	static void bind(std::size_t pos,
+		const Person& obj,
+		AbstractBinder::Ptr pBinder,
 		AbstractBinder::Direction dir = AbstractBinder::PD_IN)
 	{
 		// the table is defined as Person (LastName VARCHAR(30), FirstName VARCHAR, Address VARCHAR, Age INTEGER(3))
@@ -231,9 +231,9 @@ template <>
 class TypeHandler
 {
 public:
-	static void bind(std::size_t pos, 
-		const RefCountedPerson& obj, 
-		AbstractBinder::Ptr pBinder, 
+	static void bind(std::size_t pos,
+		const RefCountedPerson& obj,
+		AbstractBinder::Ptr pBinder,
 		AbstractBinder::Direction dir = AbstractBinder::PD_IN)
 	{
 		// the table is defined as Person (LastName VARCHAR(30), FirstName VARCHAR, Address VARCHAR, Age INTEGER(3))
@@ -281,7 +281,7 @@ private:
 } } // namespace Poco::Data
 
 
-const std::string SQLExecutor::MULTI_INSERT = 
+const std::string SQLExecutor::MULTI_INSERT =
 	"INSERT INTO Test VALUES ('1', 2, 3.5);"
 	"INSERT INTO Test VALUES ('2', 3, 4.5);"
 	"INSERT INTO Test VALUES ('3', 4, 5.5);"
@@ -296,9 +296,10 @@ const std::string SQLExecutor::MULTI_SELECT =
 	"SELECT * FROM Test WHERE First = '5';";
 
 
-SQLExecutor::SQLExecutor(const std::string& name, Poco::Data::Session* pSession): 
+SQLExecutor::SQLExecutor(const std::string& name, Poco::Data::Session* pSession, Poco::Data::Session* pEncSession):
 	CppUnit::TestCase(name),
-	_pSession(pSession)
+	_pSession(pSession),
+	_pEncSession(pEncSession)
 {
 }
 
@@ -308,9 +309,9 @@ SQLExecutor::~SQLExecutor()
 }
 
 
-void SQLExecutor::bareboneODBCTest(const std::string& dbConnString, 
-	const std::string& tableCreateString, 
-	SQLExecutor::DataBinding bindMode, 
+void SQLExecutor::bareboneODBCTest(const std::string& dbConnString,
+	const std::string& tableCreateString,
+	SQLExecutor::DataBinding bindMode,
 	SQLExecutor::DataExtraction extractMode,
 	bool doTime,
 	const std::string& blobPlaceholder)
@@ -348,7 +349,7 @@ void SQLExecutor::bareboneODBCTest(const std::string& dbConnString,
 
 		rc = SQLGetTypeInfo(hstmt, SQL_TYPE_TIMESTAMP);
 		poco_odbc_check_stmt (rc, hstmt);
-		
+
 		rc = SQLFetch(hstmt);
 		assertTrue (SQL_SUCCEEDED(rc) || SQL_NO_DATA == rc);
 
@@ -413,15 +414,15 @@ void SQLExecutor::bareboneODBCTest(const std::string& dbConnString,
 			if (SQLExecutor::PB_AT_EXEC == bindMode)
 				li[0] = SQL_LEN_DATA_AT_EXEC(size);
 
-			rc = SQLBindParameter(hstmt, 
-				(SQLUSMALLINT) 1, 
-				SQL_PARAM_INPUT, 
-				SQL_C_CHAR, 
-				SQL_LONGVARCHAR, 
+			rc = SQLBindParameter(hstmt,
+				(SQLUSMALLINT) 1,
+				SQL_PARAM_INPUT,
+				SQL_C_CHAR,
+				SQL_LONGVARCHAR,
 				(SQLUINTEGER) size,
 				0,
-				(SQLPOINTER) str[0].c_str(), 
-				size, 
+				(SQLPOINTER) str[0].c_str(),
+				size,
 				&li[0]);
 			poco_odbc_check_stmt (rc, hstmt);
 
@@ -430,15 +431,15 @@ void SQLExecutor::bareboneODBCTest(const std::string& dbConnString,
 				li[1] = SQL_LEN_DATA_AT_EXEC(size);
 			else li[1] = SQL_NTS;
 
-			rc = SQLBindParameter(hstmt, 
-				(SQLUSMALLINT) 2, 
-				SQL_PARAM_INPUT, 
-				SQL_C_CHAR, 
-				SQL_LONGVARCHAR, 
+			rc = SQLBindParameter(hstmt,
+				(SQLUSMALLINT) 2,
+				SQL_PARAM_INPUT,
+				SQL_C_CHAR,
+				SQL_LONGVARCHAR,
 				(SQLUINTEGER) size,
 				0,
-				(SQLPOINTER) str[1].c_str(), 
-				size, 
+				(SQLPOINTER) str[1].c_str(),
+				size,
 				&li[1]);
 			poco_odbc_check_stmt (rc, hstmt);
 
@@ -447,39 +448,39 @@ void SQLExecutor::bareboneODBCTest(const std::string& dbConnString,
 				li[2] = SQL_LEN_DATA_AT_EXEC(size);
 			else li[2] = size;
 
-			rc = SQLBindParameter(hstmt, 
-				(SQLUSMALLINT) 3, 
-				SQL_PARAM_INPUT, 
-				SQL_C_BINARY, 
-				SQL_LONGVARBINARY, 
+			rc = SQLBindParameter(hstmt,
+				(SQLUSMALLINT) 3,
+				SQL_PARAM_INPUT,
+				SQL_C_BINARY,
+				SQL_LONGVARBINARY,
 				(SQLUINTEGER) size,
 				0,
-				(SQLPOINTER) str[2].data(), 
-				size, 
+				(SQLPOINTER) str[2].data(),
+				size,
 				&li[2]);
 			poco_odbc_check_stmt (rc, hstmt);
 
-			rc = SQLBindParameter(hstmt, 
-				(SQLUSMALLINT) 4, 
-				SQL_PARAM_INPUT, 
-				SQL_C_SLONG, 
-				SQL_INTEGER, 
+			rc = SQLBindParameter(hstmt,
+				(SQLUSMALLINT) 4,
+				SQL_PARAM_INPUT,
+				SQL_C_SLONG,
+				SQL_INTEGER,
 				0,
 				0,
-				(SQLPOINTER) &fourth, 
-				0, 
+				(SQLPOINTER) &fourth,
+				0,
 				0);
 			poco_odbc_check_stmt (rc, hstmt);
 
-			rc = SQLBindParameter(hstmt, 
-				(SQLUSMALLINT) 5, 
-				SQL_PARAM_INPUT, 
-				SQL_C_FLOAT, 
-				SQL_REAL, 
+			rc = SQLBindParameter(hstmt,
+				(SQLUSMALLINT) 5,
+				SQL_PARAM_INPUT,
+				SQL_C_FLOAT,
+				SQL_REAL,
 				0,
 				1,
-				(SQLPOINTER) &fifth, 
-				0, 
+				(SQLPOINTER) &fifth,
+				0,
 				0);
 			poco_odbc_check_stmt (rc, hstmt);
 
@@ -498,14 +499,14 @@ void SQLExecutor::bareboneODBCTest(const std::string& dbConnString,
 			else
 				std::cerr << '[' << name() << ']' << " Warning: could not get SQL_TYPE_TIMESTAMP parameter description." << std::endl;
 
-			rc = SQLBindParameter(hstmt, 
-				(SQLUSMALLINT) 6, 
-				SQL_PARAM_INPUT, 
-				SQL_C_TYPE_TIMESTAMP, 
-				SQL_TYPE_TIMESTAMP, 
+			rc = SQLBindParameter(hstmt,
+				(SQLUSMALLINT) 6,
+				SQL_PARAM_INPUT,
+				SQL_C_TYPE_TIMESTAMP,
+				SQL_TYPE_TIMESTAMP,
 				dateTimeColSize,
 				dateTimeDecDigits,
-				(SQLPOINTER) &sixth, 
+				(SQLPOINTER) &sixth,
 				0,
 				0);
 			poco_odbc_check_stmt (rc, hstmt);
@@ -519,9 +520,9 @@ void SQLExecutor::bareboneODBCTest(const std::string& dbConnString,
 				while (SQL_NEED_DATA == (rc = SQLParamData(hstmt, &pParam)))
 				{
 					SQLINTEGER dataSize = 0;
-					// Data size should be ignored for non-null, 
-					// non-variable length fields, but SQLite ODBC 
-					// driver insists on it always being the actual 
+					// Data size should be ignored for non-null,
+					// non-variable length fields, but SQLite ODBC
+					// driver insists on it always being the actual
 					// data length
 
 					if (pParam == (SQLPOINTER) str[0].c_str())
@@ -557,55 +558,55 @@ void SQLExecutor::bareboneODBCTest(const std::string& dbConnString,
 
 			if (SQLExecutor::DE_BOUND == extractMode)
 			{
-				rc = SQLBindCol(hstmt, 
-					(SQLUSMALLINT) 1, 
-					SQL_C_CHAR, 
-					(SQLPOINTER) chr[0], 
-					(SQLINTEGER) sizeof(chr[0]), 
+				rc = SQLBindCol(hstmt,
+					(SQLUSMALLINT) 1,
+					SQL_C_CHAR,
+					(SQLPOINTER) chr[0],
+					(SQLINTEGER) sizeof(chr[0]),
 					&lengths[0]);
 				poco_odbc_check_stmt (rc, hstmt);
 
-				rc = SQLBindCol(hstmt, 
-					(SQLUSMALLINT) 2, 
-					SQL_C_CHAR, 
-					(SQLPOINTER) chr[1], 
-					(SQLINTEGER) sizeof(chr[1]), 
+				rc = SQLBindCol(hstmt,
+					(SQLUSMALLINT) 2,
+					SQL_C_CHAR,
+					(SQLPOINTER) chr[1],
+					(SQLINTEGER) sizeof(chr[1]),
 					&lengths[1]);
 				poco_odbc_check_stmt (rc, hstmt);
 
-				rc = SQLBindCol(hstmt, 
-					(SQLUSMALLINT) 3, 
-					SQL_C_BINARY, 
-					(SQLPOINTER) chr[2], 
-					(SQLINTEGER) sizeof(chr[2]), 
+				rc = SQLBindCol(hstmt,
+					(SQLUSMALLINT) 3,
+					SQL_C_BINARY,
+					(SQLPOINTER) chr[2],
+					(SQLINTEGER) sizeof(chr[2]),
 					&lengths[2]);
 				poco_odbc_check_stmt (rc, hstmt);
 
-				rc = SQLBindCol(hstmt, 
-					(SQLUSMALLINT) 4, 
-					SQL_C_SLONG, 
-					(SQLPOINTER) &fourth, 
-					(SQLINTEGER) 0, 
+				rc = SQLBindCol(hstmt,
+					(SQLUSMALLINT) 4,
+					SQL_C_SLONG,
+					(SQLPOINTER) &fourth,
+					(SQLINTEGER) 0,
 					&lengths[3]);
 				poco_odbc_check_stmt (rc, hstmt);
 
-				rc = SQLBindCol(hstmt, 
-					(SQLUSMALLINT) 5, 
-					SQL_C_FLOAT, 
-					(SQLPOINTER) &fifth, 
-					(SQLINTEGER) 0, 
+				rc = SQLBindCol(hstmt,
+					(SQLUSMALLINT) 5,
+					SQL_C_FLOAT,
+					(SQLPOINTER) &fifth,
+					(SQLINTEGER) 0,
 					&lengths[4]);
 				poco_odbc_check_stmt (rc, hstmt);
 
-				rc = SQLBindCol(hstmt, 
-					(SQLUSMALLINT) 6, 
-					SQL_C_TYPE_TIMESTAMP, 
-					(SQLPOINTER) &sixth, 
-					(SQLINTEGER) 0, 
+				rc = SQLBindCol(hstmt,
+					(SQLUSMALLINT) 6,
+					SQL_C_TYPE_TIMESTAMP,
+					(SQLPOINTER) &sixth,
+					(SQLINTEGER) 0,
 					&lengths[5]);
 				poco_odbc_check_stmt (rc, hstmt);
 			}
-			
+
 			rc = SQLExecute(hstmt);
 			poco_odbc_check_stmt (rc, hstmt);
 			rc = SQLFetch(hstmt);
@@ -614,67 +615,67 @@ void SQLExecutor::bareboneODBCTest(const std::string& dbConnString,
 			if (SQLExecutor::DE_MANUAL == extractMode)
 			{
 				SQLLEN len = lengths[0] = 0;
-				while (SQL_SUCCESS_WITH_INFO == (rc = SQLGetData(hstmt, 
-					(SQLUSMALLINT) 1, 
-					SQL_C_CHAR, 
-					chr[0] + len, 
+				while (SQL_SUCCESS_WITH_INFO == (rc = SQLGetData(hstmt,
+					(SQLUSMALLINT) 1,
+					SQL_C_CHAR,
+					chr[0] + len,
 					sizeof(chr[0]) - len,
 					&lengths[0])))
 				{
 					len += lengths[0];
-					if (!lengths[0] || len >= sizeof(chr[1])) 
+					if (!lengths[0] || len >= sizeof(chr[1]))
 						break;
 				}
 				poco_odbc_check_stmt (rc, hstmt);
 
 				len = lengths[1] = 0;
-				while (SQL_SUCCESS_WITH_INFO == (rc = SQLGetData(hstmt, 
-					(SQLUSMALLINT) 2, 
-					SQL_C_CHAR, 
-					chr[1] + len, 
+				while (SQL_SUCCESS_WITH_INFO == (rc = SQLGetData(hstmt,
+					(SQLUSMALLINT) 2,
+					SQL_C_CHAR,
+					chr[1] + len,
 					sizeof(chr[1]) - len,
 					&lengths[1])))
 				{
 					len += lengths[1];
-					if (!lengths[1] || len >= sizeof(chr[1])) 
+					if (!lengths[1] || len >= sizeof(chr[1]))
 						break;
 				}
 				poco_odbc_check_stmt (rc, hstmt);
 
 				len = lengths[2] = 0;
-				while (SQL_SUCCESS_WITH_INFO == (rc = SQLGetData(hstmt, 
-					(SQLUSMALLINT) 3, 
-					SQL_C_BINARY, 
-					chr[2] + len, 
+				while (SQL_SUCCESS_WITH_INFO == (rc = SQLGetData(hstmt,
+					(SQLUSMALLINT) 3,
+					SQL_C_BINARY,
+					chr[2] + len,
 					sizeof(chr[2]) - len,
 					&lengths[2])))
 				{
 					len += lengths[1];
-					if (!lengths[2] || len >= sizeof(chr[2])) 
+					if (!lengths[2] || len >= sizeof(chr[2]))
 						break;
 				}
 				poco_odbc_check_stmt (rc, hstmt);
 
-				rc = SQLGetData(hstmt, 
-					(SQLUSMALLINT) 4, 
-					SQL_C_SLONG, 
-					&fourth, 
+				rc = SQLGetData(hstmt,
+					(SQLUSMALLINT) 4,
+					SQL_C_SLONG,
+					&fourth,
 					0,
 					&lengths[3]);
 				poco_odbc_check_stmt (rc, hstmt);
 
-				rc = SQLGetData(hstmt, 
-					(SQLUSMALLINT) 5, 
-					SQL_C_FLOAT, 
-					&fifth, 
+				rc = SQLGetData(hstmt,
+					(SQLUSMALLINT) 5,
+					SQL_C_FLOAT,
+					&fifth,
 					0,
 					&lengths[4]);
 				poco_odbc_check_stmt (rc, hstmt);
 
-				rc = SQLGetData(hstmt, 
-					(SQLUSMALLINT) 6, 
-					SQL_C_TYPE_TIMESTAMP, 
-					&sixth, 
+				rc = SQLGetData(hstmt,
+					(SQLUSMALLINT) 6,
+					SQL_C_TYPE_TIMESTAMP,
+					&sixth,
 					0,
 					&lengths[5]);
 				poco_odbc_check_stmt (rc, hstmt);
@@ -727,9 +728,9 @@ void SQLExecutor::bareboneODBCTest(const std::string& dbConnString,
 }
 
 
-void SQLExecutor::bareboneODBCMultiResultTest(const std::string& dbConnString, 
-	const std::string& tableCreateString, 
-	SQLExecutor::DataBinding bindMode, 
+void SQLExecutor::bareboneODBCMultiResultTest(const std::string& dbConnString,
+	const std::string& tableCreateString,
+	SQLExecutor::DataBinding bindMode,
 	SQLExecutor::DataExtraction extractMode,
 	const std::string& insert,
 	const std::string& select)
@@ -801,11 +802,11 @@ void SQLExecutor::bareboneODBCMultiResultTest(const std::string& dbConnString,
 			poco_odbc_check_stmt (rc, hstmt);
 			if (SQLExecutor::DE_BOUND == extractMode)
 			{
-				rc = SQLBindCol(hstmt, 
-						(SQLUSMALLINT) 1, 
-						SQL_C_SLONG, 
-						(SQLPOINTER) &count, 
-						(SQLINTEGER) 0, 
+				rc = SQLBindCol(hstmt,
+						(SQLUSMALLINT) 1,
+						SQL_C_SLONG,
+						(SQLPOINTER) &count,
+						(SQLINTEGER) 0,
 						&length);
 				poco_odbc_check_stmt (rc, hstmt);
 			}
@@ -818,10 +819,10 @@ void SQLExecutor::bareboneODBCMultiResultTest(const std::string& dbConnString,
 
 			if (SQLExecutor::DE_MANUAL == extractMode)
 			{
-				rc = SQLGetData(hstmt, 
-					(SQLUSMALLINT) 1, 
-					SQL_C_SLONG, 
-					&count, 
+				rc = SQLGetData(hstmt,
+					(SQLUSMALLINT) 1,
+					SQL_C_SLONG,
+					&count,
 					0,
 					&length);
 				poco_odbc_check_stmt (rc, hstmt);
@@ -840,34 +841,34 @@ void SQLExecutor::bareboneODBCMultiResultTest(const std::string& dbConnString,
 			SQLLEN lengths[3] = { 0 };
 			int second = 0;
 			float third = 0.0f;
-			
+
 			if (SQLExecutor::DE_BOUND == extractMode)
 			{
-				rc = SQLBindCol(hstmt, 
-					(SQLUSMALLINT) 1, 
-					SQL_C_CHAR, 
-					(SQLPOINTER) chr, 
-					(SQLINTEGER) 4, 
+				rc = SQLBindCol(hstmt,
+					(SQLUSMALLINT) 1,
+					SQL_C_CHAR,
+					(SQLPOINTER) chr,
+					(SQLINTEGER) 4,
 					&lengths[0]);
 				poco_odbc_check_stmt (rc, hstmt);
 
-				rc = SQLBindCol(hstmt, 
-					(SQLUSMALLINT) 2, 
-					SQL_C_SLONG, 
-					(SQLPOINTER) &second, 
-					(SQLINTEGER) 0, 
+				rc = SQLBindCol(hstmt,
+					(SQLUSMALLINT) 2,
+					SQL_C_SLONG,
+					(SQLPOINTER) &second,
+					(SQLINTEGER) 0,
 					&lengths[1]);
 				poco_odbc_check_stmt (rc, hstmt);
 
-				rc = SQLBindCol(hstmt, 
-					(SQLUSMALLINT) 3, 
-					SQL_C_FLOAT, 
-					(SQLPOINTER) &third, 
-					(SQLINTEGER) 0, 
+				rc = SQLBindCol(hstmt,
+					(SQLUSMALLINT) 3,
+					SQL_C_FLOAT,
+					(SQLPOINTER) &third,
+					(SQLINTEGER) 0,
 					&lengths[2]);
 				poco_odbc_check_stmt (rc, hstmt);
 			}
-			
+
 			rc = SQLExecute(hstmt);
 			poco_odbc_check_stmt (rc, hstmt);
 
@@ -883,26 +884,26 @@ void SQLExecutor::bareboneODBCMultiResultTest(const std::string& dbConnString,
 
 				if (SQLExecutor::DE_MANUAL == extractMode)
 				{
-					rc = SQLGetData(hstmt, 
-						(SQLUSMALLINT) 1, 
-						SQL_C_CHAR, 
-						chr, 
+					rc = SQLGetData(hstmt,
+						(SQLUSMALLINT) 1,
+						SQL_C_CHAR,
+						chr,
 						4,
 						&lengths[0]);
 					poco_odbc_check_stmt (rc, hstmt);
 
-					rc = SQLGetData(hstmt, 
-						(SQLUSMALLINT) 2, 
-						SQL_C_SLONG, 
-						&second, 
+					rc = SQLGetData(hstmt,
+						(SQLUSMALLINT) 2,
+						SQL_C_SLONG,
+						&second,
 						0,
 						&lengths[1]);
 					poco_odbc_check_stmt (rc, hstmt);
 
-					rc = SQLGetData(hstmt, 
-						(SQLUSMALLINT) 3, 
-						SQL_C_FLOAT, 
-						&third, 
+					rc = SQLGetData(hstmt,
+						(SQLUSMALLINT) 3,
+						SQL_C_FLOAT,
+						&third,
 						0,
 						&lengths[2]);
 					poco_odbc_check_stmt (rc, hstmt);
@@ -1567,7 +1568,7 @@ void SQLExecutor::insertSingleBulkVec()
 {
 	std::string funct = "insertSingleBulkVec()";
 	std::vector data;
-	
+
 	for (int x = 0; x < 100; ++x)
 		data.push_back(x);
 
@@ -1673,9 +1674,9 @@ void SQLExecutor::limitPrepare()
 		data.push_back(x);
 	}
 
-	try 
-	{ 
-		Statement stmt = (session() << "INSERT INTO Strings VALUES (?)", use(data)); 
+	try
+	{
+		Statement stmt = (session() << "INSERT INTO Strings VALUES (?)", use(data));
 		assertTrue (100 == stmt.execute());
 	}
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
@@ -1737,13 +1738,13 @@ void SQLExecutor::doBulkPerformance(Poco::UInt32 size)
 	std::vector strings(size, "abc");
 	std::vector floats(size, .5);
 	std::vector dateTimes(size);
-	
+
 	Stopwatch sw;
-	try 
+	try
 	{
 		sw.start();
-		session() << "INSERT INTO MiscTest (First, Third, Fourth, Fifth) VALUES (?,?,?,?)", 
-			use(strings), 
+		session() << "INSERT INTO MiscTest (First, Third, Fourth, Fifth) VALUES (?,?,?,?)",
+			use(strings),
 			use(ints),
 			use(floats),
 			use(dateTimes), now;
@@ -1757,18 +1758,18 @@ void SQLExecutor::doBulkPerformance(Poco::UInt32 size)
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
 
-	try 
+	try
 	{
 		sw.restart();
-		session() << "INSERT INTO MiscTest (First, Third, Fourth, Fifth) VALUES (?,?,?,?)", 
-			use(strings, bulk), 
+		session() << "INSERT INTO MiscTest (First, Third, Fourth, Fifth) VALUES (?,?,?,?)",
+			use(strings, bulk),
 			use(ints, bulk),
 			use(floats, bulk),
 			use(dateTimes, bulk), now;
 		sw.stop();
 	} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
-	
+
 	double bulkTime = sw.elapsed() / 1000.0;
 
 	double speedup;
@@ -1780,10 +1781,10 @@ void SQLExecutor::doBulkPerformance(Poco::UInt32 size)
 	else
 		speedup = time / bulkTime;
 
-	std::cout << "INSERT => Size:" << size 
-		<< ", Time: " << time 
-		<< ", Bulk Time: " << bulkTime 
-		<< " [ms], Speedup: " << speedup 
+	std::cout << "INSERT => Size:" << size
+		<< ", Time: " << time
+		<< ", Bulk Time: " << bulkTime
+		<< " [ms], Speedup: " << speedup
 		<< 'x' << std::endl;
 
 	ints.clear();
@@ -1791,19 +1792,19 @@ void SQLExecutor::doBulkPerformance(Poco::UInt32 size)
 	floats.clear();
 	dateTimes.clear();
 
-	try 
-	{ 
+	try
+	{
 		sw.restart();
-		session() << "SELECT First, Third, Fourth, Fifth FROM MiscTest", 
-			into(strings), 
-			into(ints), 
+		session() << "SELECT First, Third, Fourth, Fifth FROM MiscTest",
+			into(strings),
+			into(ints),
 			into(floats),
 			into(dateTimes),
-			now; 
+			now;
 		sw.stop();
 	} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
-	
+
 	time = sw.elapsed() / 1000.0;
 
 	assertTrue (ints.size() == size);
@@ -1812,20 +1813,20 @@ void SQLExecutor::doBulkPerformance(Poco::UInt32 size)
 	strings.clear();
 	floats.clear();
 	dateTimes.clear();
-	
-	try 
-	{ 
+
+	try
+	{
 		sw.restart();
-		session() << "SELECT First, Third, Fourth, Fifth FROM MiscTest", 
+		session() << "SELECT First, Third, Fourth, Fifth FROM MiscTest",
 			into(strings, bulk(size)),
 			into(ints, bulk(size)),
 			into(floats, bulk(size)),
 			into(dateTimes, bulk(size)),
-			now; 
+			now;
 		sw.stop();
 	} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
-	
+
 	bulkTime = sw.elapsed() / 1000.0;
 
 	assertTrue (ints.size() == size);
@@ -1838,10 +1839,10 @@ void SQLExecutor::doBulkPerformance(Poco::UInt32 size)
 	else
 		speedup = time / bulkTime;
 
-	std::cout << "SELECT => Size:" << size 
-		<< ", Time: " << time 
-		<< ", Bulk Time: " << bulkTime 
-		<< " [ms], Speedup: " << speedup 
+	std::cout << "SELECT => Size:" << size
+		<< ", Time: " << time
+		<< ", Bulk Time: " << bulkTime
+		<< " [ms], Speedup: " << speedup
 		<< 'x' << std::endl;
 }
 
@@ -2077,7 +2078,7 @@ void SQLExecutor::multiMapComplex()
 	people.insert(std::make_pair("LN1", p1));
 	people.insert(std::make_pair("LN1", p1));
 	people.insert(std::make_pair("LN2", p2));
-	
+
 	try { session() << "INSERT INTO Person VALUES (?,?,?,?)", use(people), now; }
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
@@ -2139,7 +2140,7 @@ void SQLExecutor::selectIntoSingleStep()
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
 	assertTrue (count == 2);
 	Person result;
-	Statement stmt = (session() << "SELECT * FROM Person", into(result), limit(1)); 
+	Statement stmt = (session() << "SELECT * FROM Person", into(result), limit(1));
 	stmt.execute();
 	assertTrue (result == p1);
 	assertTrue (!stmt.done());
@@ -2405,7 +2406,7 @@ void SQLExecutor::blob(int bigSize, const std::string& blobPlaceholder)
 
 	CLOB img("0123456789", 10);
 	int count = 0;
-	try { session() << format("INSERT INTO Person VALUES (?,?,?,%s)", blobPlaceholder), 
+	try { session() << format("INSERT INTO Person VALUES (?,?,?,%s)", blobPlaceholder),
 		use(lastName), use(firstName), use(address), use(img), now; }
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
@@ -2431,7 +2432,7 @@ void SQLExecutor::blob(int bigSize, const std::string& blobPlaceholder)
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
 
-	try { session() << format("INSERT INTO Person VALUES (?,?,?,%s)", blobPlaceholder), 
+	try { session() << format("INSERT INTO Person VALUES (?,?,?,%s)", blobPlaceholder),
 		use(lastName), use(firstName), use(address), use(big), now; }
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
@@ -2509,11 +2510,11 @@ void SQLExecutor::date()
 
 	Date bornDate(1965, 6, 18);
 	int count = 0;
-	try { session() << "INSERT INTO Person VALUES (?,?,?,?)", 
-		use(lastName), 
-		use(firstName), 
-		use(address), 
-		use(bornDate), 
+	try { session() << "INSERT INTO Person VALUES (?,?,?,?)",
+		use(lastName),
+		use(firstName),
+		use(address),
+		use(bornDate),
 		now; }
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
@@ -2548,11 +2549,11 @@ void SQLExecutor::time()
 
 	Time bornTime (5, 35, 1);
 	int count = 0;
-	try { session() << "INSERT INTO Person VALUES (?,?,?,?)", 
-		use(lastName), 
-		use(firstName), 
-		use(address), 
-		use(bornTime), 
+	try { session() << "INSERT INTO Person VALUES (?,?,?,?)",
+		use(lastName),
+		use(firstName),
+		use(address),
+		use(bornTime),
 		now; }
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
@@ -2600,7 +2601,7 @@ void SQLExecutor::tupleVector()
 	typedef Tuple TupleType;
 	std::string funct = "tupleVector()";
 	TupleType t(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19);
-	Tuple 
+	Tuple
 		t10(10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29);
 	TupleType t100(100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119);
 	std::vector v;
@@ -2639,8 +2640,8 @@ void SQLExecutor::internalExtraction()
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
 
-	try 
-	{ 
+	try
+	{
 		Statement stmt = (session() << "SELECT * FROM Vectors", now);
 		RecordSet rset(stmt);
 
@@ -2696,7 +2697,7 @@ void SQLExecutor::internalExtraction()
 
 		i = rset.value("str0", 2);
 		assertTrue (5 == i);
-		
+
 		const Column >& col = rset.column >(0);
 		Column >::Iterator it = col.begin();
 		Column >::Iterator end = col.end();
@@ -2736,7 +2737,7 @@ void SQLExecutor::internalExtraction()
 
 		try	{ rset.value(0,0); fail ("must fail"); }
 		catch (BadCastException&) {	}
-		
+
 		stmt = (session() << "DELETE FROM Vectors", now);
 		rset = stmt;
 
@@ -2761,8 +2762,8 @@ void SQLExecutor::filter(const std::string& query, const std::string& intFldName
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
 
-	try 
-	{ 
+	try
+	{
 		Statement stmt = (session() << query, now);
 		RecordSet rset(stmt);
 		assertTrue (rset.totalRowCount() == 4);
@@ -2772,11 +2773,11 @@ void SQLExecutor::filter(const std::string& query, const std::string& intFldName
 		assertTrue (!pRF->isEmpty());
 
 		Var da;
-		try 
+		try
 		{
 			da = rset.value(0, 1);
 			fail ("must fail");
-		} catch (InvalidAccessException&) 
+		} catch (InvalidAccessException&)
 		{
 			da = rset.value(0, 1, false);
 			assertTrue (2 == da);
@@ -2845,22 +2846,22 @@ void SQLExecutor::internalBulkExtraction()
 		age[i] = i;
 	}
 
-	try 
-	{ 
-		session() << "INSERT INTO Person VALUES (?,?,?,?)", 
-			use(lastName, bulk), 
-			use(firstName, bulk), 
-			use(address, bulk), 
-			use(age, bulk), 
-			now; 
+	try
+	{
+		session() << "INSERT INTO Person VALUES (?,?,?,?)",
+			use(lastName, bulk),
+			use(firstName, bulk),
+			use(address, bulk),
+			use(age, bulk),
+			now;
 	}
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
 
-	try 
-	{ 
+	try
+	{
 		Statement stmt = (session() << "SELECT * FROM Person", bulk(size), now);
-		RecordSet rset(stmt); 
+		RecordSet rset(stmt);
 		assertTrue (size == rset.rowCount());
 		assertTrue ("LN0" == rset["LastName"]);
 		assertTrue (0 == rset["Age"]);
@@ -2874,10 +2875,10 @@ void SQLExecutor::internalBulkExtraction()
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
 
-	try 
-	{ 
+	try
+	{
 		Statement stmt = (session() << "SELECT * FROM Person", limit(size), bulk, now);
-		RecordSet rset(stmt); 
+		RecordSet rset(stmt);
 		assertTrue (size == rset.rowCount());
 		assertTrue ("LN0" == rset["LastName"]);
 		assertTrue (0 == rset["Age"]);
@@ -2970,8 +2971,8 @@ void SQLExecutor::internalStorageType()
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
 
-	try 
-	{ 
+	try
+	{
 		std::vector::iterator it = manips.begin();
 		std::vector::iterator end = manips.end();
 
@@ -3028,15 +3029,15 @@ void SQLExecutor::notNulls(const std::string& sqlState)
 	{
 		session() << "INSERT INTO NullTest (i,r,v) VALUES (?,?,?)", use(null), use(null), use(null), now;
 		fail ("must fail");
-	}catch (StatementException& se) 
-	{ 
+	}catch (StatementException& se)
+	{
 		//double check if we're failing for the right reason
 		//default sqlState value is "23502"; some drivers report "HY???" codes
 		if (se.diagnostics().fields().size())
 		{
 			std::string st = se.diagnostics().sqlState(0);
 			if (sqlState != st)
-				std::cerr << '[' << name() << ']' << " Warning: expected SQL state [" << sqlState << 
+				std::cerr << '[' << name() << ']' << " Warning: expected SQL state [" << sqlState <<
 					"], received [" << se.diagnostics().sqlState(0) << "] instead." << std::endl;
 		}
 	}
@@ -3184,7 +3185,7 @@ void SQLExecutor::rowIterator()
 	std::ostringstream osLoop;
 	RecordSet::Iterator it = rset.begin();
 	RecordSet::Iterator end = rset.end();
-	for (int i = 1; it != end; ++it, ++i) 
+	for (int i = 1; it != end; ++it, ++i)
 	{
 		assertTrue (it->get(0) == i);
 		osLoop << *it;
@@ -3201,7 +3202,7 @@ void SQLExecutor::rowIterator()
 	assertTrue (!pRF->isEmpty());
 	it = rset.begin();
 	end = rset.end();
-	for (int i = 1; it != end; ++it, ++i) 
+	for (int i = 1; it != end; ++it, ++i)
 	{
 		assertTrue (it->get(0) == i);
 		assertTrue (1 == i);
@@ -3278,7 +3279,7 @@ void SQLExecutor::asynchronous(int rowCount)
 	Statement::Result result = stmt.executeAsync();
 	assertTrue (!stmt.isAsync());
 	result.wait();
-	
+
 	Statement stmt1 = (tmp << "SELECT * FROM Strings", into(data), async, now);
 	assertTrue (stmt1.isAsync());
 	assertTrue (stmt1.wait() == rowCount);
@@ -3301,7 +3302,7 @@ void SQLExecutor::asynchronous(int rowCount)
 	assertTrue (stmt.isAsync());
 	stmt.wait();
 	assertTrue (stmt.execute() == 0);
-	
+
 	// +++ if this part of the test case fails, increase the rowCount until achieved
 	//  that first execute is still executing when the second one is called
 	try {
@@ -3337,7 +3338,7 @@ void SQLExecutor::asynchronous(int rowCount)
 	assertTrue (data.size() == 0);
 	assertTrue (!stmt2.done());
 	std::size_t rows = 0;
-	
+
 	for (int i = 0; !stmt2.done(); i += step)
 	{
 		stmt2.execute();
@@ -3503,8 +3504,8 @@ void SQLExecutor::sqlChannel(const std::string& connect)
 		rs2.moveNext();
 		assertTrue ("WarningSource" == rs2["Source"]);
 		assertTrue ("f Warning sync message" == rs2["Text"]);
-		
-	} 
+
+	}
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("sqlChannel()"); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("sqlChannel()"); }
 }
@@ -3517,7 +3518,7 @@ void SQLExecutor::sqlLogger(const std::string& connect)
 		Logger& root = Logger::root();
 		root.setChannel(new SQLChannel(Poco::Data::ODBC::Connector::KEY, connect, "TestSQLChannel"));
 		root.setLevel(Message::PRIO_INFORMATION);
-		
+
 		root.information("a Informational message");
 		root.warning("b Warning message");
 		root.debug("Debug message");
@@ -3530,26 +3531,27 @@ void SQLExecutor::sqlLogger(const std::string& connect)
 		rs.moveNext();
 		assertTrue ("TestSQLChannel" == rs["Source"]);
 		assertTrue ("b Warning message" == rs["Text"]);
-	} 
+		root.setChannel(nullptr);
+	}
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail ("sqlLogger()"); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail ("sqlLogger()"); }
 }
 
 
 void SQLExecutor::setTransactionIsolation(Session& session, Poco::UInt32 ti)
-{ 
+{
 	if (session.hasTransactionIsolation(ti))
 	{
 		std::string funct = "setTransactionIsolation()";
 
-		try 
+		try
 		{
 			Transaction t(session, false);
 			t.setIsolation(ti);
-			
+
 			assertTrue (ti == t.getIsolation());
 			assertTrue (t.isIsolation(ti));
-			
+
 			assertTrue (ti == session.getTransactionIsolation());
 			assertTrue (session.isTransactionIsolation(ti));
 		}
@@ -3712,11 +3714,11 @@ void SQLExecutor::transaction(const std::string& connect)
 		Transaction trans(session());
 		assertTrue (trans.isActive());
 		assertTrue (session().isTransaction());
-		
+
 		try { session() << "INSERT INTO Person VALUES (?,?,?,?)", use(lastNames), use(firstNames), use(addresses), use(ages), now; }
 		catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 		catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
-		
+
 		assertTrue (session().isTransaction());
 		assertTrue (trans.isActive());
 
@@ -3768,7 +3770,7 @@ void SQLExecutor::transaction(const std::string& connect)
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
 	assertTrue (0 == count);
-	try 
+	try
 	{
 		stmt1.wait(5000);
 		if (local.getTransactionIsolation() == Session::TRANSACTION_READ_UNCOMMITTED)
@@ -3816,7 +3818,7 @@ void SQLExecutor::transaction(const std::string& connect)
 	assertTrue (0 == count);
 
 	trans.execute(sql);
-	
+
 	Statement stmt3 = (local << "SELECT COUNT(*) FROM Person", into(locCount), now);
 	assertTrue (2 == locCount);
 
@@ -3868,7 +3870,7 @@ void SQLExecutor::transactor()
 	try { session() << "DELETE FROM Person", now; session().commit();}
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
-	
+
 	try { session() << "SELECT count(*) FROM Person", into(count), now; }
 	catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 	catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
@@ -3959,7 +3961,7 @@ void SQLExecutor::nullable()
 	assertTrue (rs.isNull("EmptyInteger"));
 	assertTrue (rs.isNull("EmptyFloat"));
 	assertTrue (rs.isNull("EmptyDateTime"));
-	
+
 	Var di = 1;
 	Var df = 1.5;
 	Var ds = "abc";
@@ -3969,7 +3971,7 @@ void SQLExecutor::nullable()
 	assertTrue (!df.isEmpty());
 	assertTrue (!ds.isEmpty());
 	assertTrue (!dd.isEmpty());
-	
+
 	Statement stmt = (session() << "SELECT EmptyString, EmptyInteger, EmptyFloat, EmptyDateTime FROM NullableTest", into(ds), into(di), into(df), into(dd), now);
 
 	assertTrue (di.isEmpty());
@@ -4002,9 +4004,9 @@ void SQLExecutor::reconnect()
 	assertTrue (session().isConnected());
 	session().close();
 	assertTrue (!session().isConnected());
-	try 
+	try
 	{
-		session() << "SELECT LastName FROM Person", into(result), now;  
+		session() << "SELECT LastName FROM Person", into(result), now;
 		fail ("must fail");
 	}
 	catch(NotConnectedException&){ }
@@ -4033,4 +4035,55 @@ void SQLExecutor::unicode(const std::string& dbConnString)
 	session() << "SELECT str FROM UnicodeTable", into(wtext), now;
 	Poco::UnicodeConverter::convert(wtext, text);
 	assertTrue (text == std::string((const char*)supp));
-}
\ No newline at end of file
+}
+
+
+void SQLExecutor::encoding(const std::string& dbConnString)
+{
+	try
+	{
+		const unsigned char latinChars[] = { 'g', 252, 'n', 't', 'e', 'r', 0 };
+		const unsigned char utf8Chars[] = { 'g', 195, 188, 'n', 't', 'e', 'r', 0 };
+		std::string latinText((const char*)latinChars);
+		std::string utf8TextIn((const char*)utf8Chars);
+
+		session(true) << "INSERT INTO Latin1Table VALUES (?)", use(utf8TextIn), now;
+
+		std::string latinTextOut;
+		session() << "SELECT str FROM Latin1Table", into(latinTextOut), now;
+		assertTrue(latinText == latinTextOut);
+
+		std::string utf8TextOut;
+		session(true) << "SELECT str FROM Latin1Table", into(utf8TextOut), now;
+		assertTrue(utf8TextIn == utf8TextOut);
+
+		const unsigned char latinChars2[] = { 'G', 220, 'N', 'T', 'E', 'R', 0 };
+		const unsigned char utf8Chars2[] = { 'G', 195, 156, 'N', 'T', 'E', 'R', 0 };
+		std::string latinText2 = (const char*)latinChars2;
+		std::string utf8TextIn2 = (const char*)utf8Chars2;
+
+		session(true) << "INSERT INTO Latin1Table VALUES (?)", use(utf8TextIn2), now;
+
+		std::vector textOutVec;
+		session() << "SELECT str FROM Latin1Table", into(textOutVec), now;
+		assertTrue(textOutVec.size() == 2);
+		assertTrue(textOutVec[0] == latinText);
+		assertTrue(textOutVec[1] == latinText2);
+
+		textOutVec.clear();
+		session(true) << "SELECT str FROM Latin1Table", into(textOutVec), now;
+		assertTrue(textOutVec.size() == 2);
+		assertTrue(textOutVec[0] == utf8TextIn);
+		assertTrue(textOutVec[1] == utf8TextIn2);
+	}
+	catch (Poco::Exception& ex)
+	{
+		std::cout << ex.displayText() << std::endl;
+		throw;
+	}
+	catch (std::exception& ex)
+	{
+		std::cout << ex.what() << std::endl;
+		throw;
+	}
+}
diff --git a/vendor/POCO/Data/ODBC/testsuite/src/SQLExecutor.h b/vendor/POCO/Data/ODBC/testsuite/src/SQLExecutor.h
index fe220e73..5f21805d 100644
--- a/vendor/POCO/Data/ODBC/testsuite/src/SQLExecutor.h
+++ b/vendor/POCO/Data/ODBC/testsuite/src/SQLExecutor.h
@@ -80,14 +80,14 @@ public:
 		PB_IMMEDIATE,
 		PB_AT_EXEC
 	};
-	
+
 	enum DataExtraction
 	{
 		DE_MANUAL,
 		DE_BOUND
 	};
 
-	SQLExecutor(const std::string& name, Poco::Data::Session* _pSession);
+	SQLExecutor(const std::string& name, Poco::Data::Session* pSession, Poco::Data::Session* pEncSession = 0);
 	~SQLExecutor();
 
 	void execute(const std::string& sql);
@@ -95,22 +95,22 @@ public:
 
 	void bareboneODBCTest(const std::string& dbConnString,
 		const std::string& tableCreateString,
-		DataBinding bindMode, 
+		DataBinding bindMode,
 		DataExtraction extractMode,
 		bool doTime=true,
 		const std::string& blobPlaceholder="?");
 
-	void bareboneODBCMultiResultTest(const std::string& dbConnString, 
-		const std::string& tableCreateString, 
-		SQLExecutor::DataBinding bindMode, 
+	void bareboneODBCMultiResultTest(const std::string& dbConnString,
+		const std::string& tableCreateString,
+		SQLExecutor::DataBinding bindMode,
 		SQLExecutor::DataExtraction extractMode,
 		const std::string& insert = MULTI_INSERT,
 		const std::string& select = MULTI_SELECT);
-		/// The above two functions use "bare bone" ODBC API calls  
+		/// The above two functions use "bare bone" ODBC API calls
 		/// (i.e. calls are not "wrapped" in PocoData framework structures).
 		/// The purpose of the functions is to verify that a driver behaves
-		/// correctly as well as to determine its capabilities 
-		/// (e.g. SQLGetData() restrictions relaxation policy, if any). 
+		/// correctly as well as to determine its capabilities
+		/// (e.g. SQLGetData() restrictions relaxation policy, if any).
 		/// If these test pass, subsequent tests failures are likely ours.
 
 	void zeroRows();
@@ -158,7 +158,7 @@ public:
 		C4 floats;
 		C5 dateTimes(size);
 		C6 bools;
-		
+
 		for (int i = 0; i < size; ++i)
 		{
 			ints.push_back(i);
@@ -168,12 +168,12 @@ public:
 			bools.push_back(0 == i % 2);
 		}
 
-		try 
+		try
 		{
-			session() << 
-				Poco::format("INSERT INTO MiscTest VALUES (?,%s,?,?,?,?)", blobPlaceholder), 
-				use(strings), 
-				use(blobs), 
+			session() <<
+				Poco::format("INSERT INTO MiscTest VALUES (?,%s,?,?,?,?)", blobPlaceholder),
+				use(strings),
+				use(blobs),
 				use(ints),
 				use(floats),
 				use(dateTimes),
@@ -185,12 +185,12 @@ public:
 		catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 		catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
 
-		try 
+		try
 		{
-			session() <<  
+			session() <<
 				Poco::format("INSERT INTO MiscTest VALUES (?,%s,?,?,?,?)", blobPlaceholder),
-				use(strings, bulk), 
-				use(blobs, bulk), 
+				use(strings, bulk),
+				use(blobs, bulk),
 				use(ints, bulk),
 				use(floats, bulk),
 				use(dateTimes, bulk),
@@ -204,20 +204,20 @@ public:
 		floats.clear();
 		dateTimes.clear();
 		bools.clear();
-		
-		try 
-		{ 
-			session() << "SELECT * FROM MiscTest ORDER BY Third", 
-				into(strings), 
-				into(blobs), 
-				into(ints), 
+
+		try
+		{
+			session() << "SELECT * FROM MiscTest ORDER BY Third",
+				into(strings),
+				into(blobs),
+				into(ints),
 				into(floats),
 				into(dateTimes),
 				into(bools),
-				now; 
+				now;
 		} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 		catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
-		
+
 		std::string number = Poco::NumberFormatter::format(size - 1);
 		assert (size == ints.size());
 		assert (0 == ints.front());
@@ -235,16 +235,16 @@ public:
 
 		ints.clear();
 
-		try 
-		{ 
-			session() << "SELECT First FROM MiscTest", into(ints, bulk(size)), limit(size+1), now; 
+		try
+		{
+			session() << "SELECT First FROM MiscTest", into(ints, bulk(size)), limit(size+1), now;
 			fail ("must fail");
 		}
 		catch(Poco::InvalidArgumentException&){ }
 
-		try 
-		{ 
-			session() << "SELECT First FROM MiscTest", into(ints), bulk(size), now; 
+		try
+		{
+			session() << "SELECT First FROM MiscTest", into(ints), bulk(size), now;
 			fail ("must fail");
 		}
 		catch(Poco::InvalidAccessException&){ }
@@ -258,17 +258,17 @@ public:
 		dateTimes.clear();
 		bools.clear();
 		bools.resize(size);
-		
-		try 
-		{ 
-			session() << "SELECT First, Second, Third, Fourth, Fifth, Sixth FROM MiscTest ORDER BY Third", 
+
+		try
+		{
+			session() << "SELECT First, Second, Third, Fourth, Fifth, Sixth FROM MiscTest ORDER BY Third",
 				into(strings, bulk),
 				into(blobs, bulk(size)),
 				into(ints, bulk(size)),
 				into(floats, bulk),
 				into(dateTimes, bulk(size)),
 				into(bools, bulk),
-				now; 
+				now;
 		} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 		catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
 
@@ -300,7 +300,7 @@ public:
 		C3 blobs;
 		C4 floats;
 		C5 dateTimes(size);
-	
+
 		for (int i = 0; i < size; ++i)
 		{
 			ints.push_back(i);
@@ -309,11 +309,11 @@ public:
 			floats.push_back(i + .5);
 		}
 
-		try 
+		try
 		{
-			session() << "INSERT INTO MiscTest VALUES (?,?,?,?,?)", 
-				use(strings), 
-				use(blobs), 
+			session() << "INSERT INTO MiscTest VALUES (?,?,?,?,?)",
+				use(strings),
+				use(blobs),
 				use(ints),
 				use(floats),
 				use(dateTimes), now;
@@ -324,35 +324,35 @@ public:
 		catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 		catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
 
-		try 
+		try
 		{
-			session() << "INSERT INTO MiscTest VALUES (?,?,?,?,?)", 
-				use(strings, bulk), 
-				use(blobs, bulk), 
+			session() << "INSERT INTO MiscTest VALUES (?,?,?,?,?)",
+				use(strings, bulk),
+				use(blobs, bulk),
 				use(ints, bulk),
 				use(floats, bulk),
 				use(dateTimes, bulk), now;
 		} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 		catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
-		
+
 		ints.clear();
 		strings.clear();
 		blobs.clear();
 		floats.clear();
 		dateTimes.clear();
 
-		try 
-		{ 
-			session() << "SELECT * FROM MiscTest ORDER BY First", 
-				into(strings), 
-				into(blobs), 
-				into(ints), 
+		try
+		{
+			session() << "SELECT * FROM MiscTest ORDER BY First",
+				into(strings),
+				into(blobs),
+				into(ints),
 				into(floats),
 				into(dateTimes),
-				now; 
+				now;
 		} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 		catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
-		
+
 		std::string number = Poco::NumberFormatter::format(size - 1);
 		assert (size == ints.size());
 		assert (0 == ints.front());
@@ -368,16 +368,16 @@ public:
 
 		ints.clear();
 
-		try 
-		{ 
-			session() << "SELECT First FROM MiscTest", into(ints, bulk(size)), limit(size+1), now; 
+		try
+		{
+			session() << "SELECT First FROM MiscTest", into(ints, bulk(size)), limit(size+1), now;
 			fail ("must fail");
 		}
 		catch(Poco::InvalidArgumentException&){ }
 
-		try 
-		{ 
-			session() << "SELECT First FROM MiscTest", into(ints), bulk(size), now; 
+		try
+		{
+			session() << "SELECT First FROM MiscTest", into(ints), bulk(size), now;
 			fail ("must fail");
 		}
 		catch(Poco::InvalidAccessException&){ }
@@ -387,19 +387,19 @@ public:
 		blobs.clear();
 		floats.clear();
 		dateTimes.clear();
-		
-		try 
-		{ 
-			session() << "SELECT * FROM MiscTest ORDER BY First", 
+
+		try
+		{
+			session() << "SELECT * FROM MiscTest ORDER BY First",
 				into(strings, bulk(size)),
 				into(blobs, bulk(size)),
 				into(ints, bulk(size)),
 				into(floats, bulk(size)),
 				into(dateTimes, bulk(size)),
-				now; 
+				now;
 		} catch(ConnectionException& ce){ std::cout << ce.toString() << std::endl; fail (funct); }
 		catch(StatementException& se){ std::cout << se.toString() << std::endl; fail (funct); }
-		
+
 		assert (size == ints.size());
 		assert (0 == ints.front());
 		assert (size - 1 == ints.back());
@@ -474,7 +474,7 @@ public:
 	void tupleVector();
 
 	void internalExtraction();
-	void filter(const std::string& query = 
+	void filter(const std::string& query =
 		"SELECT * FROM Vectors ORDER BY int0 ASC",
 		const std::string& intFldName = "int0");
 
@@ -487,11 +487,11 @@ public:
 	void stdVectorBool();
 
 	void asynchronous(int rowCount = 500);
-	
+
 	void any();
 	void dynamicAny();
 
-	void multipleResults(const std::string& sql = 
+	void multipleResults(const std::string& sql =
 		"SELECT * FROM Person WHERE Age = ?; "
 		"SELECT Age FROM Person WHERE FirstName = 'Bart'; "
 		"SELECT * FROM Person WHERE Age = ? OR Age = ? ORDER BY Age;");
@@ -505,6 +505,7 @@ public:
 	void nullable();
 
 	void unicode(const std::string& dbConnString);
+	void encoding(const std::string& dbConnString);
 
 	void reconnect();
 
@@ -514,15 +515,24 @@ private:
 
 	void setTransactionIsolation(Poco::Data::Session& session, Poco::UInt32 ti);
 
-	Poco::Data::Session& session();
+	Poco::Data::Session& session(bool enc = false);
 	Poco::Data::Session* _pSession;
+	Poco::Data::Session* _pEncSession;
 };
 
 
-inline Poco::Data::Session& SQLExecutor::session()
+inline Poco::Data::Session& SQLExecutor::session(bool enc)
 {
-	poco_check_ptr (_pSession);
-	return *_pSession;
+	if (!enc)
+	{
+		poco_check_ptr(_pSession);
+		return *_pSession;
+	}
+	else
+	{
+		poco_check_ptr(_pEncSession);
+		return *_pEncSession;
+	}
 }
 
 
diff --git a/vendor/POCO/Data/PostgreSQL/CMakeLists.txt b/vendor/POCO/Data/PostgreSQL/CMakeLists.txt
index f727fc0c..d02c2f10 100644
--- a/vendor/POCO/Data/PostgreSQL/CMakeLists.txt
+++ b/vendor/POCO/Data/PostgreSQL/CMakeLists.txt
@@ -25,7 +25,7 @@ target_link_libraries(DataPostgreSQL PUBLIC Poco::Data PostgreSQL::client)
 target_include_directories(DataPostgreSQL
 	PUBLIC
 		$
-		$
+		$
 	PRIVATE
 		${CMAKE_CURRENT_SOURCE_DIR}/src
 )
diff --git a/vendor/POCO/Data/PostgreSQL/Makefile b/vendor/POCO/Data/PostgreSQL/Makefile
index 3abed04a..c3efddb2 100644
--- a/vendor/POCO/Data/PostgreSQL/Makefile
+++ b/vendor/POCO/Data/PostgreSQL/Makefile
@@ -6,43 +6,9 @@
 
 include $(POCO_BASE)/build/rules/global
 
-ifeq (0, $(shell test -e /usr/include/postgresql; echo $$?))
-INCLUDE += -I/usr/include/postgresql
-endif
-ifeq (0, $(shell test -e /usr/local/include/postgresql; echo $$?))
-INCLUDE += -I/usr/local/include/postgresql
-endif
-ifeq (0, $(shell test -e /usr/local/postgresql/include; echo $$?))
-INCLUDE += -I/usr/local/postgresql/include
-endif
-ifeq (0, $(shell test -e /opt/postgresql/include; echo $$?))
-INCLUDE += -I/opt/postgresql/include
-endif
-ifeq (0, $(shell test -e /usr/local/opt/libpq/include; echo $$?))
-INCLUDE += -I/usr/local/opt/libpq/include
-endif
+include PostgreSQL.make
 
-ifeq (0, $(shell test -e /usr/lib$(LIB64SUFFIX)/postgresql; echo $$?))
-SYSLIBS += -L/usr/lib$(LIB64SUFFIX)/postgresql
-endif
-ifeq (0, $(shell test -e /usr/local/lib$(LIB64SUFFIX)/postgresql; echo $$?))
-SYSLIBS += -L/usr/local/lib$(LIB64SUFFIX)/postgresql
-endif
-ifeq (0, $(shell test -e /usr/local/postgresql/lib$(LIB64SUFFIX); echo $$?))
-SYSLIBS += -L/usr/local/postgresql/lib$(LIB64SUFFIX)
-endif
-ifeq (0, $(shell test -e /opt/postgresql/lib$(LIB64SUFFIX); echo $$?))
-SYSLIBS += -L/opt/postgresql/lib$(LIB64SUFFIX)
-endif
-ifeq (0, $(shell test -e /opt/postgresql/lib$(LIB64SUFFIX); echo $$?))
-SYSLIBS += -L/opt/postgresql/lib$(LIB64SUFFIX)
-endif
-ifeq (0, $(shell test -e /usr/local/opt/libpq/lib; echo $$?))
-SYSLIBS += -L/usr/local/opt/libpq/lib$(LIB64SUFFIX)
-endif
-SYSLIBS += -lpq
-
-objects = Extractor Binder SessionImpl Connector \
+objects = Extractor BinaryExtractor Binder SessionImpl Connector \
 	PostgreSQLStatementImpl PostgreSQLException \
 	SessionHandle StatementExecutor PostgreSQLTypes Utility
 
diff --git a/vendor/POCO/Data/PostgreSQL/PostgreSQL.make b/vendor/POCO/Data/PostgreSQL/PostgreSQL.make
new file mode 100644
index 00000000..b3582c67
--- /dev/null
+++ b/vendor/POCO/Data/PostgreSQL/PostgreSQL.make
@@ -0,0 +1,58 @@
+#
+# PostgreSQL.make
+#
+# Makefile fragment for finding PostgreSQL library
+#
+
+ifndef POCO_PGSQL_INCLUDE
+ifeq (0, $(shell test -e /usr/include/postgresql; echo $$?))
+INCLUDE += -I/usr/include/postgresql
+endif
+ifeq (0, $(shell test -e /usr/local/include/postgresql; echo $$?))
+INCLUDE += -I/usr/local/include/postgresql
+endif
+ifeq (0, $(shell test -e /usr/local/postgresql/include; echo $$?))
+INCLUDE += -I/usr/local/postgresql/include
+endif
+ifeq (0, $(shell test -e /opt/postgresql/include; echo $$?))
+INCLUDE += -I/opt/postgresql/include
+endif
+ifeq (0, $(shell test -e /usr/local/opt/libpq/include; echo $$?))
+INCLUDE += -I/usr/local/opt/libpq/include
+endif
+ifeq (0, $(shell test -e /opt/homebrew/opt/libpq/include; echo $$?))
+INCLUDE += -I/opt/homebrew/opt/libpq/include
+endif
+endif
+
+ifndef POCO_PGSQL_LIB
+ifeq (0, $(shell test -e /usr/lib$(LIB64SUFFIX)/postgresql; echo $$?))
+SYSLIBS += -L/usr/lib$(LIB64SUFFIX)/postgresql
+endif
+ifeq (0, $(shell test -e /usr/local/lib$(LIB64SUFFIX)/postgresql; echo $$?))
+SYSLIBS += -L/usr/local/lib$(LIB64SUFFIX)/postgresql
+endif
+ifeq (0, $(shell test -e /usr/local/postgresql/lib$(LIB64SUFFIX); echo $$?))
+SYSLIBS += -L/usr/local/postgresql/lib$(LIB64SUFFIX)
+endif
+ifeq (0, $(shell test -e /opt/postgresql/lib$(LIB64SUFFIX); echo $$?))
+SYSLIBS += -L/opt/postgresql/lib$(LIB64SUFFIX)
+endif
+ifeq (0, $(shell test -e /opt/postgresql/lib$(LIB64SUFFIX); echo $$?))
+SYSLIBS += -L/opt/postgresql/lib$(LIB64SUFFIX)
+endif
+ifeq (0, $(shell test -e /usr/local/opt/libpq/lib; echo $$?))
+SYSLIBS += -L/usr/local/opt/libpq/lib$(LIB64SUFFIX)
+endif
+ifeq (0, $(shell test -e /opt/homebrew/opt/libpq/lib; echo $$?))
+SYSLIBS += -L/opt/homebrew/opt/libpq/lib$(LIB64SUFFIX)
+endif
+endif
+SYSLIBS += -lpq
+
+ifdef POCO_PGSQL_INCLUDE
+INCLUDE += -I$(POCO_PGSQL_INCLUDE)
+endif
+ifdef POCO_PGSQL_LIB
+SYSLIBS += -L$(POCO_PGSQL_LIB)
+endif
diff --git a/vendor/POCO/Data/PostgreSQL/PostgreSQL_VS90.vcproj b/vendor/POCO/Data/PostgreSQL/PostgreSQL_VS90.vcproj
index b7abb43b..80534fd1 100644
--- a/vendor/POCO/Data/PostgreSQL/PostgreSQL_VS90.vcproj
+++ b/vendor/POCO/Data/PostgreSQL/PostgreSQL_VS90.vcproj
@@ -504,6 +504,10 @@
 			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
 			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
 			>
+			
+			
 			
@@ -550,6 +554,10 @@
 			Filter="h;hpp;hxx;hm;inl;inc;xsd"
 			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
 			>
+			
+			
 			
diff --git a/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs140.vcxproj b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs140.vcxproj
index 03fae02a..8e08092a 100644
--- a/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs140.vcxproj
+++ b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs140.vcxproj
@@ -541,6 +541,9 @@
     
   
   
+    
+      true
+    
     
       true
     
@@ -573,6 +576,7 @@
     
   
   
+    
     
     
     
diff --git a/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs140.vcxproj.filters b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs140.vcxproj.filters
index f3edc2bb..c71d3e09 100644
--- a/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs140.vcxproj.filters
+++ b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs140.vcxproj.filters
@@ -11,6 +11,9 @@
     
   
   
+    
+      Source Files
+    
     
       Source Files
     
@@ -43,6 +46,9 @@
     
   
   
+    
+      Header Files
+    
     
       Header Files
     
diff --git a/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs150.vcxproj b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs150.vcxproj
index 4d47d7fa..69b92031 100644
--- a/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs150.vcxproj
+++ b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs150.vcxproj
@@ -541,6 +541,9 @@
     
   
   
+    
+      true
+    
     
       true
     
@@ -573,6 +576,7 @@
     
   
   
+    
     
     
     
diff --git a/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs150.vcxproj.filters b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs150.vcxproj.filters
index f3edc2bb..c71d3e09 100644
--- a/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs150.vcxproj.filters
+++ b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs150.vcxproj.filters
@@ -11,6 +11,9 @@
     
   
   
+    
+      Source Files
+    
     
       Source Files
     
@@ -43,6 +46,9 @@
     
   
   
+    
+      Header Files
+    
     
       Header Files
     
diff --git a/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs160.vcxproj b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs160.vcxproj
index 67d62c9b..f7fbf3ce 100644
--- a/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs160.vcxproj
+++ b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs160.vcxproj
@@ -541,6 +541,9 @@
     
   
   
+    
+      true
+    
     
       true
     
@@ -573,6 +576,7 @@
     
   
   
+    
     
     
     
diff --git a/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs160.vcxproj.filters b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs160.vcxproj.filters
index f3edc2bb..c71d3e09 100644
--- a/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs160.vcxproj.filters
+++ b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs160.vcxproj.filters
@@ -11,6 +11,9 @@
     
   
   
+    
+      Source Files
+    
     
       Source Files
     
@@ -43,6 +46,9 @@
     
   
   
+    
+      Header Files
+    
     
       Header Files
     
diff --git a/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs170.sln b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs170.sln
new file mode 100644
index 00000000..ebfbf785
--- /dev/null
+++ b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs170.sln
@@ -0,0 +1,144 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PostgreSQL", "PostgreSQL_vs170.vcxproj", "{73E19FDE-1570-488C-B3DB-72A60FADD408}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_vs170.vcxproj", "{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}"
+	ProjectSection(ProjectDependencies) = postProject
+		{73E19FDE-1570-488C-B3DB-72A60FADD408} = {73E19FDE-1570-488C-B3DB-72A60FADD408}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		debug_shared|ARM64 = debug_shared|ARM64
+		release_shared|ARM64 = release_shared|ARM64
+		debug_static_mt|ARM64 = debug_static_mt|ARM64
+		release_static_mt|ARM64 = release_static_mt|ARM64
+		debug_static_md|ARM64 = debug_static_md|ARM64
+		release_static_md|ARM64 = release_static_md|ARM64
+		debug_shared|Win32 = debug_shared|Win32
+		release_shared|Win32 = release_shared|Win32
+		debug_static_mt|Win32 = debug_static_mt|Win32
+		release_static_mt|Win32 = release_static_mt|Win32
+		debug_static_md|Win32 = debug_static_md|Win32
+		release_static_md|Win32 = release_static_md|Win32
+		debug_shared|x64 = debug_shared|x64
+		release_shared|x64 = release_shared|x64
+		debug_static_mt|x64 = debug_static_mt|x64
+		release_static_mt|x64 = release_static_mt|x64
+		debug_static_md|x64 = debug_static_md|x64
+		release_static_md|x64 = release_static_md|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|ARM64.Build.0 = release_shared|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.Build.0 = debug_shared|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.ActiveCfg = release_shared|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.Build.0 = release_shared|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|Win32.Deploy.0 = release_shared|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.Build.0 = release_static_md|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.ActiveCfg = debug_shared|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.Build.0 = debug_shared|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_shared|x64.Deploy.0 = debug_shared|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.ActiveCfg = release_shared|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.Build.0 = release_shared|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_shared|x64.Deploy.0 = release_shared|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.Build.0 = release_static_mt|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.Build.0 = debug_static_md|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.ActiveCfg = release_static_md|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.Build.0 = release_static_md|x64
+		{73E19FDE-1570-488C-B3DB-72A60FADD408}.release_static_md|x64.Deploy.0 = release_static_md|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|ARM64.ActiveCfg = debug_shared|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|ARM64.Build.0 = debug_shared|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|ARM64.Deploy.0 = debug_shared|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|ARM64.ActiveCfg = release_shared|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|ARM64.Build.0 = release_shared|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|ARM64.Deploy.0 = release_shared|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|ARM64.ActiveCfg = debug_static_mt|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|ARM64.Build.0 = debug_static_mt|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|ARM64.Deploy.0 = debug_static_mt|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|ARM64.ActiveCfg = release_static_mt|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|ARM64.Build.0 = release_static_mt|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|ARM64.Deploy.0 = release_static_mt|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|ARM64.ActiveCfg = debug_static_md|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|ARM64.Build.0 = debug_static_md|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|ARM64.Deploy.0 = debug_static_md|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|ARM64.ActiveCfg = release_static_md|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|ARM64.Build.0 = release_static_md|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|ARM64.Deploy.0 = release_static_md|ARM64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.ActiveCfg = debug_shared|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.Build.0 = debug_shared|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|Win32.Deploy.0 = debug_shared|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Win32.ActiveCfg = release_shared|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Win32.Build.0 = release_shared|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|Win32.Deploy.0 = release_shared|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Win32.ActiveCfg = debug_static_mt|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Win32.Build.0 = debug_static_mt|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|Win32.Deploy.0 = debug_static_mt|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Win32.ActiveCfg = release_static_mt|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Win32.Build.0 = release_static_mt|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|Win32.Deploy.0 = release_static_mt|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Win32.ActiveCfg = debug_static_md|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Win32.Build.0 = debug_static_md|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|Win32.Deploy.0 = debug_static_md|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Win32.ActiveCfg = release_static_md|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Win32.Build.0 = release_static_md|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|Win32.Deploy.0 = release_static_md|Win32
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|x64.ActiveCfg = debug_shared|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|x64.Build.0 = debug_shared|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_shared|x64.Deploy.0 = debug_shared|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|x64.ActiveCfg = release_shared|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|x64.Build.0 = release_shared|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_shared|x64.Deploy.0 = release_shared|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|x64.ActiveCfg = debug_static_mt|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|x64.Build.0 = debug_static_mt|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_mt|x64.Deploy.0 = debug_static_mt|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|x64.ActiveCfg = release_static_mt|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|x64.Build.0 = release_static_mt|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_mt|x64.Deploy.0 = release_static_mt|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|x64.ActiveCfg = debug_static_md|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|x64.Build.0 = debug_static_md|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.debug_static_md|x64.Deploy.0 = debug_static_md|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|x64.ActiveCfg = release_static_md|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|x64.Build.0 = release_static_md|x64
+		{C1B1BB96-5198-48EB-AB48-9A0A0B54FB15}.release_static_md|x64.Deploy.0 = release_static_md|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs170.vcxproj b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs170.vcxproj
new file mode 100644
index 00000000..20c711b2
--- /dev/null
+++ b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs170.vcxproj
@@ -0,0 +1,873 @@
+
+
+  
+    
+      debug_shared
+      ARM64
+    
+    
+      debug_shared
+      Win32
+    
+    
+      debug_shared
+      x64
+    
+    
+      debug_static_md
+      ARM64
+    
+    
+      debug_static_md
+      Win32
+    
+    
+      debug_static_md
+      x64
+    
+    
+      debug_static_mt
+      ARM64
+    
+    
+      debug_static_mt
+      Win32
+    
+    
+      debug_static_mt
+      x64
+    
+    
+      release_shared
+      ARM64
+    
+    
+      release_shared
+      Win32
+    
+    
+      release_shared
+      x64
+    
+    
+      release_static_md
+      ARM64
+    
+    
+      release_static_md
+      Win32
+    
+    
+      release_static_md
+      x64
+    
+    
+      release_static_mt
+      ARM64
+    
+    
+      release_static_mt
+      Win32
+    
+    
+      release_static_mt
+      x64
+    
+  
+  
+    17.0
+    PostgreSQL
+    {73E19FDE-1570-488C-B3DB-72A60FADD408}
+    PostgreSQL
+    Win32Proj
+  
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    StaticLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+    DynamicLibrary
+    MultiByte
+    v143
+  
+  
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+    
+  
+  
+  
+    <_ProjectFileVersion>17.0.32505.173
+    PocoDataPostgreSQLA64d
+    PocoDataPostgreSQLmdd
+    PocoDataPostgreSQLmtd
+    PocoDataPostgreSQLA64
+    PocoDataPostgreSQLmd
+    PocoDataPostgreSQLmt
+    PocoDataPostgreSQLd
+    PocoDataPostgreSQLmdd
+    PocoDataPostgreSQLmtd
+    PocoDataPostgreSQL
+    PocoDataPostgreSQLmd
+    PocoDataPostgreSQLmt
+    PocoDataPostgreSQL64d
+    PocoDataPostgreSQLmdd
+    PocoDataPostgreSQLmtd
+    PocoDataPostgreSQL64
+    PocoDataPostgreSQLmd
+    PocoDataPostgreSQLmt
+  
+  
+    ..\..\binA64\
+    objA64\PostgreSQL\$(Configuration)\
+    true
+  
+  
+    ..\..\binA64\
+    objA64\PostgreSQL\$(Configuration)\
+    false
+  
+  
+    ..\..\libA64\
+    objA64\PostgreSQL\$(Configuration)\
+  
+  
+    ..\..\libA64\
+    objA64\PostgreSQL\$(Configuration)\
+  
+  
+    ..\..\libA64\
+    objA64\PostgreSQL\$(Configuration)\
+  
+  
+    ..\..\libA64\
+    objA64\PostgreSQL\$(Configuration)\
+  
+  
+    ..\..\bin\
+    obj\PostgreSQL\$(Configuration)\
+    true
+  
+  
+    ..\..\bin\
+    obj\PostgreSQL\$(Configuration)\
+    false
+  
+  
+    ..\..\lib\
+    obj\PostgreSQL\$(Configuration)\
+  
+  
+    ..\..\lib\
+    obj\PostgreSQL\$(Configuration)\
+  
+  
+    ..\..\lib\
+    obj\PostgreSQL\$(Configuration)\
+  
+  
+    ..\..\lib\
+    obj\PostgreSQL\$(Configuration)\
+  
+  
+    ..\..\bin64\
+    obj64\PostgreSQL\$(Configuration)\
+    true
+  
+  
+    ..\..\bin64\
+    obj64\PostgreSQL\$(Configuration)\
+    false
+  
+  
+    ..\..\lib64\
+    obj64\PostgreSQL\$(Configuration)\
+  
+  
+    ..\..\lib64\
+    obj64\PostgreSQL\$(Configuration)\
+  
+  
+    ..\..\lib64\
+    obj64\PostgreSQL\$(Configuration)\
+  
+  
+    ..\..\lib64\
+    obj64\PostgreSQL\$(Configuration)\
+  
+  
+    
+      Disabled
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\binA64\PocoDataPostgreSQLA64d.dll
+      true
+      true
+      ..\..\binA64\PocoDataPostgreSQLA64d.pdb
+      ..\..\libA64;%(AdditionalLibraryDirectories)
+      Console
+      ..\..\libA64\PocoDataPostgreSQLd.lib
+      MachineARM64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\binA64\PocoDataPostgreSQLA64.dll
+      true
+      false
+      ..\..\libA64;%(AdditionalLibraryDirectories)
+      Console
+      true
+      true
+      ..\..\libA64\PocoDataPostgreSQL.lib
+      MachineARM64
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      ..\..\libA64\PocoDataPostgreSQLmtd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\libA64\PocoDataPostgreSQLmtd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\libA64\PocoDataPostgreSQLmt.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      ..\..\libA64\PocoDataPostgreSQLmdd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\libA64\PocoDataPostgreSQLmdd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\libA64\PocoDataPostgreSQLmd.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\bin\PocoDataPostgreSQLd.dll
+      true
+      true
+      ..\..\bin\PocoDataPostgreSQLd.pdb
+      ..\..\lib;%(AdditionalLibraryDirectories)
+      Console
+      ..\..\lib\PocoDataPostgreSQLd.lib
+      MachineX86
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\bin\PocoDataPostgreSQL.dll
+      true
+      false
+      ..\..\lib;%(AdditionalLibraryDirectories)
+      Console
+      true
+      true
+      ..\..\lib\PocoDataPostgreSQL.lib
+      MachineX86
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      ..\..\lib\PocoDataPostgreSQLmtd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\lib\PocoDataPostgreSQLmtd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\lib\PocoDataPostgreSQLmt.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      ..\..\lib\PocoDataPostgreSQLmdd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\lib\PocoDataPostgreSQLmdd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      ..\..\lib\PocoDataPostgreSQLmd.pdb
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\lib\PocoDataPostgreSQLmd.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\bin64\PocoDataPostgreSQL64d.dll
+      true
+      true
+      ..\..\bin64\PocoDataPostgreSQL64d.pdb
+      ..\..\lib64;%(AdditionalLibraryDirectories)
+      Console
+      ..\..\lib64\PocoDataPostgreSQLd.lib
+      MachineX64
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;_USRDLL;PostgreSQL_EXPORTS;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\bin64\PocoDataPostgreSQL64.dll
+      true
+      false
+      ..\..\lib64;%(AdditionalLibraryDirectories)
+      Console
+      true
+      true
+      ..\..\lib64\PocoDataPostgreSQL.lib
+      MachineX64
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebug
+      true
+      true
+      true
+      true
+      
+      ..\..\lib64\PocoDataPostgreSQLmtd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\lib64\PocoDataPostgreSQLmtd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreaded
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\lib64\PocoDataPostgreSQLmt.lib
+    
+  
+  
+    
+      Disabled
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;_DEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      EnableFastChecks
+      MultiThreadedDebugDLL
+      true
+      true
+      true
+      true
+      
+      ..\..\lib64\PocoDataPostgreSQLmdd.pdb
+      Level3
+      ProgramDatabase
+      Default
+      true
+    
+    
+      ..\..\lib64\PocoDataPostgreSQLmdd.lib
+    
+  
+  
+    
+      MaxSpeed
+      OnlyExplicitInline
+      true
+      Speed
+      true
+      .\include;..\..\postgresql\include;..\..\Foundation\include;..\..\Data\include;%(AdditionalIncludeDirectories)
+      WIN32;NDEBUG;_WINDOWS;POCO_STATIC;%(PreprocessorDefinitions)
+      true
+      MultiThreadedDLL
+      false
+      true
+      true
+      true
+      
+      Level3
+      
+      Default
+      true
+    
+    
+      ..\..\lib64\PocoDataPostgreSQLmd.lib
+    
+  
+  
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+    
+      true
+    
+  
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+  
+    
+      true
+      true
+      true
+      true
+      true
+      true
+      true
+      true
+      true
+      true
+      true
+      true
+    
+  
+  
+  
+
diff --git a/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs170.vcxproj.filters b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs170.vcxproj.filters
new file mode 100644
index 00000000..c71d3e09
--- /dev/null
+++ b/vendor/POCO/Data/PostgreSQL/PostgreSQL_vs170.vcxproj.filters
@@ -0,0 +1,89 @@
+
+
+  
+    
+      {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+      cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+    
+    
+      {93995380-89BD-4b04-88EB-625FBE52EBFB}
+      h;hpp;hxx;hm;inl;inc;xsd
+    
+  
+  
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+    
+      Source Files
+    
+  
+  
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+    
+      Header Files
+    
+  
+  
+    
+  
+
\ No newline at end of file
diff --git a/vendor/POCO/Data/PostgreSQL/include/Poco/Data/PostgreSQL/BinaryExtractor.h b/vendor/POCO/Data/PostgreSQL/include/Poco/Data/PostgreSQL/BinaryExtractor.h
new file mode 100644
index 00000000..f5701d25
--- /dev/null
+++ b/vendor/POCO/Data/PostgreSQL/include/Poco/Data/PostgreSQL/BinaryExtractor.h
@@ -0,0 +1,346 @@
+//
+// BinaryExtractor.h
+//
+// Library: Data/PostgreSQL
+// Package: PostgreSQL
+// Module:  Extractor
+//
+// Definition of the BinaryExtractor class.
+//
+// Copyright (c) 2015, Applied Informatics Software Engineering GmbH.
+// and Contributors.
+//
+// SPDX-License-Identifier:	BSL-1.0
+//
+
+
+#ifndef SQL_PostgreSQL_BinaryExtractor_INCLUDED
+#define SQL_PostgreSQL_BinaryExtractor_INCLUDED
+
+
+#include "Poco/Data/PostgreSQL/PostgreSQL.h"
+#include "Poco/Data/PostgreSQL/PostgreSQLTypes.h"
+#include "Poco/Data/PostgreSQL/StatementExecutor.h"
+#include "Poco/Data/AbstractExtractor.h"
+#include "Poco/Data/LOB.h"
+#include "Poco/Types.h"
+#include "Poco/Any.h"
+#include "Poco/DynamicAny.h"
+#include "Poco/Dynamic/Var.h"
+
+
+namespace Poco {
+namespace Data {
+namespace PostgreSQL {
+
+
+class PostgreSQL_API BinaryExtractor: public Poco::Data::AbstractExtractor
+	/// Extracts and converts data values from the result row returned by PostgreSQL.
+	/// If NULL is received, the incoming val value is not changed and false is returned
+{
+public:
+	using Ptr = SharedPtr;
+
+	BinaryExtractor(StatementExecutor& st);
+		/// Creates the Extractor.
+
+	virtual ~BinaryExtractor();
+		/// Destroys the Extractor.
+
+	virtual bool extract(std::size_t pos, Poco::Int8& val);
+		/// Extracts an Int8.
+
+	virtual bool extract(std::size_t pos, Poco::UInt8& val);
+		/// Extracts an UInt8.
+
+	virtual bool extract(std::size_t pos, Poco::Int16& val);
+		/// Extracts an Int16.
+
+	virtual bool extract(std::size_t pos, Poco::UInt16& val);
+		/// Extracts an UInt16.
+
+	virtual bool extract(std::size_t pos, Poco::Int32& val);
+		/// Extracts an Int32.
+
+	virtual bool extract(std::size_t pos, Poco::UInt32& val);
+		/// Extracts an UInt32.
+
+	virtual bool extract(std::size_t pos, Poco::Int64& val);
+		/// Extracts an Int64.
+
+	virtual bool extract(std::size_t pos, Poco::UInt64& val);
+		/// Extracts an UInt64.
+
+#ifndef POCO_INT64_IS_LONG
+	virtual bool extract(std::size_t pos, long& val);
+		/// Extracts a long. Returns false if null was received.
+
+	virtual bool extract(std::size_t pos, unsigned long& val);
+		/// Extracts an unsigned long. Returns false if null was received.
+#endif
+
+	virtual bool extract(std::size_t pos, bool& val);
+		/// Extracts a boolean.
+
+	virtual bool extract(std::size_t pos, float& val);
+		/// Extracts a float.
+
+	virtual bool extract(std::size_t pos, double& val);
+		/// Extracts a double.
+
+	virtual bool extract(std::size_t pos, char& val);
+		/// Extracts a single character.
+
+	virtual bool extract(std::size_t pos, std::string& val);
+		/// Extracts a string.
+
+	virtual bool extract(std::size_t pos, Poco::Data::BLOB& val);
+		/// Extracts a BLOB.
+
+	virtual bool extract(std::size_t pos, Poco::Data::CLOB& val);
+		/// Extracts a CLOB.
+
+	virtual bool extract(std::size_t pos, DateTime& val);
+		/// Extracts a DateTime. Returns false if null was received.
+
+	virtual bool extract(std::size_t pos, Date& val);
+		/// Extracts a Date. Returns false if null was received.
+
+	virtual bool extract(std::size_t pos, Time& val);
+		/// Extracts a Time. Returns false if null was received.
+
+	virtual bool extract(std::size_t pos, UUID& val);
+		/// Extracts a UUID. Returns false if null was received.
+
+	virtual bool extract(std::size_t pos, Any& val);
+		/// Extracts an Any. Returns false if null was received.
+
+	virtual bool extract(std::size_t pos, Dynamic::Var& val);
+		/// Extracts a Dynamic::Var. Returns false if null was received.
+
+	virtual bool isNull(std::size_t col, std::size_t row);
+		/// Returns true if the value at [col,row] position is null.
+
+	virtual void reset();
+		/// Resets any information internally cached by the extractor.
+
+	////////////
+	// Not implemented extract functions
+	////////////
+
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts an Int8 vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts an Int8 deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts an Int8 list.
+
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts an UInt8 vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts an UInt8 deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts an UInt8 list.
+
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts an Int16 vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts an Int16 deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts an Int16 list.
+
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts an UInt16 vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts an UInt16 deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts an UInt16 list.
+
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts an Int32 vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts an Int32 deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts an Int32 list.
+
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts an UInt32 vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts an UInt32 deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts an UInt32 list.
+
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts an Int64 vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts an Int64 deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts an Int64 list.
+
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts an UInt64 vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts an UInt64 deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts an UInt64 list.
+
+#ifndef POCO_INT64_IS_LONG
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts a long vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts a long deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts a long list.
+#endif
+
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts a boolean vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts a boolean deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts a boolean list.
+
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts a float vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts a float deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts a float list.
+
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts a double vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts a double deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts a double list.
+
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts a character vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts a character deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts a character list.
+
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts a string vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts a string deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts a string list.
+
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts a BLOB vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts a BLOB deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts a BLOB list.
+
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts a CLOB vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts a CLOB deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts a CLOB list.
+
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts a DateTime vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts a DateTime deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts a DateTime list.
+
+	virtual bool extract(std::size_t pos, std::vector& val);
+		/// Extracts a Date vector.
+
+	virtual bool extract(std::size_t pos, std::deque& val);
+		/// Extracts a Date deque.
+
+	virtual bool extract(std::size_t pos, std::list& val);
+		/// Extracts a Date list.
+
+	virtual bool extract(std::size_t pos, std::vector