/***********************************************************************
!!!!!! DO NOT MODIFY !!!!!!

GacGen.exe Resource.xml

This file is generated by Workflow compiler
https://github.com/vczh-libraries
***********************************************************************/

#ifndef VCZH_WORKFLOW_COMPILER_GENERATED_DEMOPARTIALCLASSES
#define VCZH_WORKFLOW_COMPILER_GENERATED_DEMOPARTIALCLASSES

#include "GacUI.h"

#if defined( _MSC_VER)
#pragma warning(push)
#pragma warning(disable:4250)
#elif defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wparentheses-equality"
#elif defined(__GNUC__)
#pragma GCC diagnostic push
#endif

namespace vl_workflow_global
{
	struct __vwsnf10_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
	struct __vwsnf11_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
	struct __vwsnf12_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
	struct __vwsnf13_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
	struct __vwsnf14_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_;
	struct __vwsnf15_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_;
	struct __vwsnf16_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_;
	struct __vwsnf17_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_;
	struct __vwsnf18_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_;
	struct __vwsnf1_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
	struct __vwsnf2_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
	struct __vwsnf3_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
	struct __vwsnf4_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
	struct __vwsnf5_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
	struct __vwsnf6_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
	struct __vwsnf7_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
	struct __vwsnf8_Demo_demo_AccountItemTemplateConstructor___vwsn_demo_AccountItemTemplate_Initialize_;
	struct __vwsnf9_Demo_demo_AccountMenuItemTemplateConstructor___vwsn_demo_AccountMenuItemTemplate_Initialize_;
	class __vwsnc10_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
	class __vwsnc11_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
	class __vwsnc12_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
	class __vwsnc13_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
	class __vwsnc14_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
	class __vwsnc1_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
	class __vwsnc2_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
	class __vwsnc3_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
	class __vwsnc4_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
	class __vwsnc5_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
	class __vwsnc6_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
	class __vwsnc7_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
	class __vwsnc8_Demo_demo_AccountMenuItemTemplateConstructor___vwsn_demo_AccountMenuItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
	class __vwsnc9_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
}

namespace demo
{
	class AccountButtonTemplateConstructor;
	class AccountButtonTemplate;
	class AccountButtonViewModel;
	class AccountItemTemplateConstructor;
	class AccountItemTemplate;
	class AccountMenuItemTemplateConstructor;
	class AccountMenuItemTemplate;
	class MainWindowConstructor;
	class MainWindow;
	class VideoItemTemplateConstructor;
	class VideoItemTemplate;
	class VideoViewModel;

	class AccountButtonTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description<AccountButtonTemplateConstructor>
	{
		friend class ::vl_workflow_global::__vwsnc1_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc2_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc3_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc4_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc5_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc6_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc7_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend struct ::vl_workflow_global::__vwsnf1_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf2_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf3_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf4_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf5_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf6_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf7_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
		friend struct ::vl::reflection::description::CustomTypeDescriptorSelector<AccountButtonTemplateConstructor>;
#endif
	protected:
		::demo::AccountButtonTemplate* self;
		::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_0;
		::vl::presentation::compositions::GuiResponsiveViewComposition* __vwsn_precompile_1;
		::vl::presentation::compositions::GuiResponsiveFixedComposition* __vwsn_precompile_2;
		::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_3;
		::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_4;
		::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement> __vwsn_precompile_5;
		::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_6;
		::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_7;
		::vl::presentation::compositions::GuiResponsiveFixedComposition* __vwsn_precompile_8;
		::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_9;
		::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement> __vwsn_precompile_10;
		void __vwsn_demo_AccountButtonTemplate_Initialize(::demo::AccountButtonTemplate* __vwsn_this_);
	public:
		AccountButtonTemplateConstructor();
	};

	class AccountButtonTemplate : public ::vl::presentation::templates::GuiSelectableButtonTemplate, public ::demo::AccountButtonTemplateConstructor, public ::vl::reflection::Description<AccountButtonTemplate>
	{
		friend class ::demo::AccountButtonTemplateConstructor;
		friend class ::vl_workflow_global::__vwsnc1_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc2_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc3_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc4_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc5_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc6_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc7_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend struct ::vl_workflow_global::__vwsnf1_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf2_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf3_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf4_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf5_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf6_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf7_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_;
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
		friend struct ::vl::reflection::description::CustomTypeDescriptorSelector<AccountButtonTemplate>;
#endif
	public:
		::vl::Ptr<::demo::AccountButtonViewModel> __vwsn_prop_ViewModel;
		::vl::Ptr<::demo::AccountButtonViewModel> GetViewModel();
		void SetViewModel(::vl::Ptr<::demo::AccountButtonViewModel> __vwsn_value_);
		::vl::Event<void()> ViewModelChanged;
		AccountButtonTemplate();
		~AccountButtonTemplate();
	};

	class AccountButtonViewModel : public ::vl::Object, public ::vl::reflection::Description<AccountButtonViewModel>
	{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
		friend struct ::vl::reflection::description::CustomTypeDescriptorSelector<AccountButtonViewModel>;
#endif
	private:
		::vl::presentation::controls::GuiSelectableButton::GroupController* __vwsn_prop_Controller;
	public:
		::vl::presentation::controls::GuiSelectableButton::GroupController* GetController();
		void SetController(::vl::presentation::controls::GuiSelectableButton::GroupController* __vwsn_value_);
		::vl::Event<void()> ControllerChanged;
	private:
		::vl::WString __vwsn_prop_Name;
	public:
		::vl::WString GetName();
		void SetName(const ::vl::WString& __vwsn_value_);
		::vl::Event<void()> NameChanged;
	private:
		::vl::Ptr<::vl::presentation::INativeImage> __vwsn_prop_Image;
	public:
		::vl::Ptr<::vl::presentation::INativeImage> GetImage();
		void SetImage(::vl::Ptr<::vl::presentation::INativeImage> __vwsn_value_);
		::vl::Event<void()> ImageChanged;
		AccountButtonViewModel();
	};

	class AccountItemTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description<AccountItemTemplateConstructor>
	{
		friend struct ::vl_workflow_global::__vwsnf8_Demo_demo_AccountItemTemplateConstructor___vwsn_demo_AccountItemTemplate_Initialize_;
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
		friend struct ::vl::reflection::description::CustomTypeDescriptorSelector<AccountItemTemplateConstructor>;
#endif
	protected:
		::vl::Ptr<::demo::AccountButtonViewModel> ViewModel;
		::demo::AccountItemTemplate* __vwsn_precompile_0;
		::vl::presentation::controls::GuiSelectableButton* __vwsn_precompile_1;
		::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_2;
		void __vwsn_demo_AccountItemTemplate_Initialize(::demo::AccountItemTemplate* __vwsn_this_);
	public:
		AccountItemTemplateConstructor();
	};

	class AccountItemTemplate : public ::vl::presentation::templates::GuiControlTemplate, public ::demo::AccountItemTemplateConstructor, public ::vl::reflection::Description<AccountItemTemplate>
	{
		friend class ::demo::AccountItemTemplateConstructor;
		friend struct ::vl_workflow_global::__vwsnf8_Demo_demo_AccountItemTemplateConstructor___vwsn_demo_AccountItemTemplate_Initialize_;
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
		friend struct ::vl::reflection::description::CustomTypeDescriptorSelector<AccountItemTemplate>;
#endif
	private:
		::vl::Ptr<::demo::AccountButtonViewModel> __vwsn_parameter_ViewModel;
	public:
		::vl::Ptr<::demo::AccountButtonViewModel> GetViewModel();
		AccountItemTemplate(::vl::Ptr<::demo::AccountButtonViewModel> __vwsn_ctor_parameter_ViewModel);
		~AccountItemTemplate();
	};

	class AccountMenuItemTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description<AccountMenuItemTemplateConstructor>
	{
		friend class ::vl_workflow_global::__vwsnc8_Demo_demo_AccountMenuItemTemplateConstructor___vwsn_demo_AccountMenuItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend struct ::vl_workflow_global::__vwsnf9_Demo_demo_AccountMenuItemTemplateConstructor___vwsn_demo_AccountMenuItemTemplate_Initialize_;
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
		friend struct ::vl::reflection::description::CustomTypeDescriptorSelector<AccountMenuItemTemplateConstructor>;
#endif
	protected:
		::vl::Ptr<::demo::AccountButtonViewModel> ViewModel;
		::demo::AccountMenuItemTemplate* __vwsn_precompile_0;
		::vl::presentation::controls::GuiToolstripButton* __vwsn_precompile_1;
		::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_2;
		void __vwsn_demo_AccountMenuItemTemplate_Initialize(::demo::AccountMenuItemTemplate* __vwsn_this_);
	public:
		AccountMenuItemTemplateConstructor();
	};

	class AccountMenuItemTemplate : public ::vl::presentation::templates::GuiControlTemplate, public ::demo::AccountMenuItemTemplateConstructor, public ::vl::reflection::Description<AccountMenuItemTemplate>
	{
		friend class ::demo::AccountMenuItemTemplateConstructor;
		friend class ::vl_workflow_global::__vwsnc8_Demo_demo_AccountMenuItemTemplateConstructor___vwsn_demo_AccountMenuItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend struct ::vl_workflow_global::__vwsnf9_Demo_demo_AccountMenuItemTemplateConstructor___vwsn_demo_AccountMenuItemTemplate_Initialize_;
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
		friend struct ::vl::reflection::description::CustomTypeDescriptorSelector<AccountMenuItemTemplate>;
#endif
	private:
		::vl::Ptr<::demo::AccountButtonViewModel> __vwsn_parameter_ViewModel;
	public:
		::vl::Ptr<::demo::AccountButtonViewModel> GetViewModel();
		AccountMenuItemTemplate(::vl::Ptr<::demo::AccountButtonViewModel> __vwsn_ctor_parameter_ViewModel);
		~AccountMenuItemTemplate();
	};

	class MainWindowConstructor : public ::vl::Object, public ::vl::reflection::Description<MainWindowConstructor>
	{
		friend class ::vl_workflow_global::__vwsnc9_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
		friend struct ::vl_workflow_global::__vwsnf10_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf11_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf12_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf13_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
		friend struct ::vl::reflection::description::CustomTypeDescriptorSelector<MainWindowConstructor>;
#endif
	protected:
		::demo::MainWindow* self;
		::vl::presentation::controls::GuiSelectableButton::MutexGroupController* accountController;
		::vl::presentation::controls::GuiScrollContainer* videoContainer;
		::vl::presentation::compositions::GuiResponsiveContainerComposition* __vwsn_precompile_0;
		::vl::presentation::compositions::GuiResponsiveViewComposition* __vwsn_precompile_1;
		::vl::presentation::compositions::GuiResponsiveGroupComposition* __vwsn_precompile_2;
		::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_3;
		::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_4;
		::vl::presentation::compositions::GuiRepeatStackComposition* __vwsn_precompile_5;
		::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_6;
		::vl::presentation::compositions::GuiResponsiveSharedComposition* __vwsn_precompile_7;
		::vl::presentation::compositions::GuiResponsiveFixedComposition* __vwsn_precompile_8;
		::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_9;
		::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_10;
		::vl::presentation::controls::GuiToolstripMenuBar* __vwsn_precompile_11;
		::vl::presentation::controls::GuiToolstripButton* __vwsn_precompile_12;
		::vl::presentation::controls::GuiToolstripMenu* __vwsn_precompile_13;
		::vl::presentation::compositions::GuiRepeatStackComposition* __vwsn_precompile_14;
		::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_15;
		::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_16;
		::vl::presentation::compositions::GuiResponsiveSharedComposition* __vwsn_precompile_17;
		::vl::presentation::compositions::GuiRepeatFlowComposition* __vwsn_precompile_18;
		void __vwsn_demo_MainWindow_Initialize(::demo::MainWindow* __vwsn_this_);
	public:
		MainWindowConstructor();
	};

	class MainWindow : public ::vl::presentation::controls::GuiWindow, public ::demo::MainWindowConstructor, public ::vl::reflection::Description<MainWindow>
	{
		friend class ::demo::MainWindowConstructor;
		friend class ::vl_workflow_global::__vwsnc9_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription;
		friend struct ::vl_workflow_global::__vwsnf10_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf11_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf12_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf13_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_;
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
		friend struct ::vl::reflection::description::CustomTypeDescriptorSelector<MainWindow>;
#endif
	public:
		::vl::Ptr<::vl::reflection::description::IValueObservableList> accounts;
		::vl::Ptr<::vl::reflection::description::IValueObservableList> videos;
		MainWindow();
		void __vwsn_instance_ctor_();
		~MainWindow();
	};

	class VideoItemTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description<VideoItemTemplateConstructor>
	{
		friend class ::vl_workflow_global::__vwsnc10_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc11_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc12_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc13_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc14_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend struct ::vl_workflow_global::__vwsnf14_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf15_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf16_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf17_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf18_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_;
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
		friend struct ::vl::reflection::description::CustomTypeDescriptorSelector<VideoItemTemplateConstructor>;
#endif
	protected:
		::demo::VideoItemTemplate* self;
		::vl::Ptr<::demo::VideoViewModel> ViewModel;
		::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0;
		::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1;
		::vl::Ptr<::vl::presentation::elements::GuiImageFrameElement> __vwsn_precompile_2;
		::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_3;
		::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_4;
		::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_5;
		::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_6;
		::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_7;
		::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_8;
		void __vwsn_demo_VideoItemTemplate_Initialize(::demo::VideoItemTemplate* __vwsn_this_);
	public:
		VideoItemTemplateConstructor();
	};

	class VideoItemTemplate : public ::vl::presentation::templates::GuiControlTemplate, public ::demo::VideoItemTemplateConstructor, public ::vl::reflection::Description<VideoItemTemplate>
	{
		friend class ::demo::VideoItemTemplateConstructor;
		friend class ::vl_workflow_global::__vwsnc10_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc11_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc12_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc13_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend class ::vl_workflow_global::__vwsnc14_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription;
		friend struct ::vl_workflow_global::__vwsnf14_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf15_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf16_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf17_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_;
		friend struct ::vl_workflow_global::__vwsnf18_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_;
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
		friend struct ::vl::reflection::description::CustomTypeDescriptorSelector<VideoItemTemplate>;
#endif
	private:
		::vl::Ptr<::demo::VideoViewModel> __vwsn_parameter_ViewModel;
	public:
		::vl::Ptr<::demo::VideoViewModel> GetViewModel();
		VideoItemTemplate(::vl::Ptr<::demo::VideoViewModel> __vwsn_ctor_parameter_ViewModel);
		~VideoItemTemplate();
	};

	class VideoViewModel : public ::vl::Object, public ::vl::reflection::Description<VideoViewModel>
	{
#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA
		friend struct ::vl::reflection::description::CustomTypeDescriptorSelector<VideoViewModel>;
#endif
	private:
		::vl::WString __vwsn_prop_Author;
	public:
		::vl::WString GetAuthor();
		void SetAuthor(const ::vl::WString& __vwsn_value_);
		::vl::Event<void()> AuthorChanged;
	private:
		::vl::WString __vwsn_prop_Title;
	public:
		::vl::WString GetTitle();
		void SetTitle(const ::vl::WString& __vwsn_value_);
		::vl::Event<void()> TitleChanged;
	private:
		::vl::presentation::FontProperties __vwsn_prop_Font;
	public:
		::vl::presentation::FontProperties GetFont();
		void SetFont(::vl::presentation::FontProperties __vwsn_value_);
		::vl::Event<void()> FontChanged;
		VideoViewModel();
	};

}
/***********************************************************************
Global Variables and Functions
***********************************************************************/

namespace vl_workflow_global
{
	class Demo
	{
	public:

		static Demo& Instance();
	};

/***********************************************************************
Closures
***********************************************************************/

	struct __vwsnf10_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_
	{
		::demo::MainWindowConstructor* __vwsnthis_0;

		__vwsnf10_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0);

		::vl::presentation::templates::GuiTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const;
	};

	struct __vwsnf11_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_
	{
		::demo::MainWindowConstructor* __vwsnthis_0;

		__vwsnf11_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0);

		::vl::presentation::templates::GuiTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const;
	};

	struct __vwsnf12_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_
	{
		::demo::MainWindowConstructor* __vwsnthis_0;

		__vwsnf12_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0);

		::vl::presentation::templates::GuiTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const;
	};

	struct __vwsnf13_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_
	{
		::demo::MainWindowConstructor* __vwsnthis_0;

		__vwsnf13_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(::demo::MainWindowConstructor* __vwsnctorthis_0);

		void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
	};

	struct __vwsnf14_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_
	{
		::demo::VideoItemTemplateConstructor* __vwsnthis_0;

		__vwsnf14_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_(::demo::VideoItemTemplateConstructor* __vwsnctorthis_0);

		void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
	};

	struct __vwsnf15_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_
	{
		::demo::VideoItemTemplateConstructor* __vwsnthis_0;

		__vwsnf15_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_(::demo::VideoItemTemplateConstructor* __vwsnctorthis_0);

		void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
	};

	struct __vwsnf16_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_
	{
		::demo::VideoItemTemplateConstructor* __vwsnthis_0;

		__vwsnf16_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_(::demo::VideoItemTemplateConstructor* __vwsnctorthis_0);

		void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
	};

	struct __vwsnf17_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_
	{
		::demo::VideoItemTemplateConstructor* __vwsnthis_0;

		__vwsnf17_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_(::demo::VideoItemTemplateConstructor* __vwsnctorthis_0);

		void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
	};

	struct __vwsnf18_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_
	{
		::demo::VideoItemTemplateConstructor* __vwsnthis_0;

		__vwsnf18_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize_(::demo::VideoItemTemplateConstructor* __vwsnctorthis_0);

		void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
	};

	struct __vwsnf1_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_
	{
		::demo::AccountButtonTemplateConstructor* __vwsnthis_0;

		__vwsnf1_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_(::demo::AccountButtonTemplateConstructor* __vwsnctorthis_0);

		void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
	};

	struct __vwsnf2_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_
	{
		::demo::AccountButtonTemplateConstructor* __vwsnthis_0;

		__vwsnf2_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_(::demo::AccountButtonTemplateConstructor* __vwsnctorthis_0);

		void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
	};

	struct __vwsnf3_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_
	{
		::demo::AccountButtonTemplateConstructor* __vwsnthis_0;

		__vwsnf3_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_(::demo::AccountButtonTemplateConstructor* __vwsnctorthis_0);

		void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
	};

	struct __vwsnf4_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_
	{
		::demo::AccountButtonTemplateConstructor* __vwsnthis_0;

		__vwsnf4_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_(::demo::AccountButtonTemplateConstructor* __vwsnctorthis_0);

		void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
	};

	struct __vwsnf5_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_
	{
		::demo::AccountButtonTemplateConstructor* __vwsnthis_0;

		__vwsnf5_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_(::demo::AccountButtonTemplateConstructor* __vwsnctorthis_0);

		void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
	};

	struct __vwsnf6_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_
	{
		::demo::AccountButtonTemplateConstructor* __vwsnthis_0;

		__vwsnf6_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_(::demo::AccountButtonTemplateConstructor* __vwsnctorthis_0);

		void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
	};

	struct __vwsnf7_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_
	{
		::demo::AccountButtonTemplateConstructor* __vwsnthis_0;

		__vwsnf7_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize_(::demo::AccountButtonTemplateConstructor* __vwsnctorthis_0);

		void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
	};

	struct __vwsnf8_Demo_demo_AccountItemTemplateConstructor___vwsn_demo_AccountItemTemplate_Initialize_
	{
		::demo::AccountItemTemplateConstructor* __vwsnthis_0;

		__vwsnf8_Demo_demo_AccountItemTemplateConstructor___vwsn_demo_AccountItemTemplate_Initialize_(::demo::AccountItemTemplateConstructor* __vwsnctorthis_0);

		::vl::presentation::templates::GuiControlTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const;
	};

	struct __vwsnf9_Demo_demo_AccountMenuItemTemplateConstructor___vwsn_demo_AccountMenuItemTemplate_Initialize_
	{
		::demo::AccountMenuItemTemplateConstructor* __vwsnthis_0;

		__vwsnf9_Demo_demo_AccountMenuItemTemplateConstructor___vwsn_demo_AccountMenuItemTemplate_Initialize_(::demo::AccountMenuItemTemplateConstructor* __vwsnctorthis_0);

		void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const;
	};

	class __vwsnc10_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
	{
	public:
		::demo::VideoItemTemplateConstructor* __vwsnthis_0;

		__vwsnc10_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription(::demo::VideoItemTemplateConstructor* __vwsnctorthis_0);

		::vl::Ptr<::demo::VideoViewModel> __vwsn_bind_cache_0;
		::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
		bool __vwsn_bind_opened_ = false;
		bool __vwsn_bind_closed_ = false;
		void __vwsn_bind_activator_();
		void __vwsn_bind_callback_0_0();
		bool Open() override;
		bool Update() override;
		bool Close() override;
	};

	class __vwsnc11_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
	{
	public:
		::demo::VideoItemTemplateConstructor* __vwsnthis_0;

		__vwsnc11_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription(::demo::VideoItemTemplateConstructor* __vwsnctorthis_0);

		::vl::Ptr<::demo::VideoViewModel> __vwsn_bind_cache_0;
		::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
		bool __vwsn_bind_opened_ = false;
		bool __vwsn_bind_closed_ = false;
		void __vwsn_bind_activator_();
		void __vwsn_bind_callback_0_0();
		bool Open() override;
		bool Update() override;
		bool Close() override;
	};

	class __vwsnc12_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
	{
	public:
		::demo::VideoItemTemplateConstructor* __vwsnthis_0;

		__vwsnc12_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription(::demo::VideoItemTemplateConstructor* __vwsnctorthis_0);

		::vl::Ptr<::demo::VideoViewModel> __vwsn_bind_cache_0;
		::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
		bool __vwsn_bind_opened_ = false;
		bool __vwsn_bind_closed_ = false;
		void __vwsn_bind_activator_();
		void __vwsn_bind_callback_0_0();
		bool Open() override;
		bool Update() override;
		bool Close() override;
	};

	class __vwsnc13_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
	{
	public:
		::demo::VideoItemTemplateConstructor* __vwsnthis_0;

		__vwsnc13_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription(::demo::VideoItemTemplateConstructor* __vwsnctorthis_0);

		::vl::Ptr<::demo::VideoViewModel> __vwsn_bind_cache_0;
		::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
		bool __vwsn_bind_opened_ = false;
		bool __vwsn_bind_closed_ = false;
		void __vwsn_bind_activator_();
		void __vwsn_bind_callback_0_0();
		bool Open() override;
		bool Update() override;
		bool Close() override;
	};

	class __vwsnc14_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
	{
	public:
		::demo::VideoItemTemplateConstructor* __vwsnthis_0;

		__vwsnc14_Demo_demo_VideoItemTemplateConstructor___vwsn_demo_VideoItemTemplate_Initialize__vl_reflection_description_IValueSubscription(::demo::VideoItemTemplateConstructor* __vwsnctorthis_0);

		::vl::Ptr<::demo::VideoViewModel> __vwsn_bind_cache_0;
		::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
		bool __vwsn_bind_opened_ = false;
		bool __vwsn_bind_closed_ = false;
		void __vwsn_bind_activator_();
		void __vwsn_bind_callback_0_0();
		bool Open() override;
		bool Update() override;
		bool Close() override;
	};

	class __vwsnc1_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
	{
	public:
		::demo::AccountButtonTemplateConstructor* __vwsnthis_0;

		__vwsnc1_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::demo::AccountButtonTemplateConstructor* __vwsnctorthis_0);

		::demo::AccountButtonTemplate* __vwsn_bind_cache_0 = nullptr;
		::demo::AccountButtonTemplate* __vwsn_bind_cache_1 = nullptr;
		::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
		::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0;
		bool __vwsn_bind_opened_ = false;
		bool __vwsn_bind_closed_ = false;
		void __vwsn_bind_activator_();
		void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1);
		void __vwsn_bind_callback_1_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1);
		bool Open() override;
		bool Update() override;
		bool Close() override;
	};

	class __vwsnc2_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
	{
	public:
		::demo::AccountButtonTemplateConstructor* __vwsnthis_0;

		__vwsnc2_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::demo::AccountButtonTemplateConstructor* __vwsnctorthis_0);

		::demo::AccountButtonTemplate* __vwsn_bind_cache_0 = nullptr;
		::vl::Ptr<::demo::AccountButtonViewModel> __vwsn_bind_cache_1;
		::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
		::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0;
		bool __vwsn_bind_opened_ = false;
		bool __vwsn_bind_closed_ = false;
		void __vwsn_bind_activator_();
		void __vwsn_bind_callback_0_0();
		void __vwsn_bind_callback_1_0();
		bool Open() override;
		bool Update() override;
		bool Close() override;
	};

	class __vwsnc3_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
	{
	public:
		::demo::AccountButtonTemplateConstructor* __vwsnthis_0;

		__vwsnc3_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::demo::AccountButtonTemplateConstructor* __vwsnctorthis_0);

		::demo::AccountButtonTemplate* __vwsn_bind_cache_0 = nullptr;
		::vl::Ptr<::demo::AccountButtonViewModel> __vwsn_bind_cache_1;
		::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
		::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0;
		bool __vwsn_bind_opened_ = false;
		bool __vwsn_bind_closed_ = false;
		void __vwsn_bind_activator_();
		void __vwsn_bind_callback_0_0();
		void __vwsn_bind_callback_1_0();
		bool Open() override;
		bool Update() override;
		bool Close() override;
	};

	class __vwsnc4_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
	{
	public:
		::demo::AccountButtonTemplateConstructor* __vwsnthis_0;

		__vwsnc4_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::demo::AccountButtonTemplateConstructor* __vwsnctorthis_0);

		::demo::AccountButtonTemplate* __vwsn_bind_cache_0 = nullptr;
		::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
		bool __vwsn_bind_opened_ = false;
		bool __vwsn_bind_closed_ = false;
		void __vwsn_bind_activator_();
		void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1);
		bool Open() override;
		bool Update() override;
		bool Close() override;
	};

	class __vwsnc5_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
	{
	public:
		::demo::AccountButtonTemplateConstructor* __vwsnthis_0;

		__vwsnc5_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::demo::AccountButtonTemplateConstructor* __vwsnctorthis_0);

		::demo::AccountButtonTemplate* __vwsn_bind_cache_0 = nullptr;
		::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
		bool __vwsn_bind_opened_ = false;
		bool __vwsn_bind_closed_ = false;
		void __vwsn_bind_activator_();
		void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1);
		bool Open() override;
		bool Update() override;
		bool Close() override;
	};

	class __vwsnc6_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
	{
	public:
		::demo::AccountButtonTemplateConstructor* __vwsnthis_0;

		__vwsnc6_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::demo::AccountButtonTemplateConstructor* __vwsnctorthis_0);

		::demo::AccountButtonTemplate* __vwsn_bind_cache_0 = nullptr;
		::vl::Ptr<::demo::AccountButtonViewModel> __vwsn_bind_cache_1;
		::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
		::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_1_0;
		bool __vwsn_bind_opened_ = false;
		bool __vwsn_bind_closed_ = false;
		void __vwsn_bind_activator_();
		void __vwsn_bind_callback_0_0();
		void __vwsn_bind_callback_1_0();
		bool Open() override;
		bool Update() override;
		bool Close() override;
	};

	class __vwsnc7_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
	{
	public:
		::demo::AccountButtonTemplateConstructor* __vwsnthis_0;

		__vwsnc7_Demo_demo_AccountButtonTemplateConstructor___vwsn_demo_AccountButtonTemplate_Initialize__vl_reflection_description_IValueSubscription(::demo::AccountButtonTemplateConstructor* __vwsnctorthis_0);

		::demo::AccountButtonTemplate* __vwsn_bind_cache_0 = nullptr;
		::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
		bool __vwsn_bind_opened_ = false;
		bool __vwsn_bind_closed_ = false;
		void __vwsn_bind_activator_();
		void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1);
		bool Open() override;
		bool Update() override;
		bool Close() override;
	};

	class __vwsnc8_Demo_demo_AccountMenuItemTemplateConstructor___vwsn_demo_AccountMenuItemTemplate_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
	{
	public:
		::demo::AccountMenuItemTemplateConstructor* __vwsnthis_0;

		__vwsnc8_Demo_demo_AccountMenuItemTemplateConstructor___vwsn_demo_AccountMenuItemTemplate_Initialize__vl_reflection_description_IValueSubscription(::demo::AccountMenuItemTemplateConstructor* __vwsnctorthis_0);

		::vl::Ptr<::demo::AccountButtonViewModel> __vwsn_bind_cache_0;
		::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0;
		bool __vwsn_bind_opened_ = false;
		bool __vwsn_bind_closed_ = false;
		void __vwsn_bind_activator_();
		void __vwsn_bind_callback_0_0();
		bool Open() override;
		bool Update() override;
		bool Close() override;
	};

	class __vwsnc9_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription
	{
	public:
		::demo::MainWindowConstructor* __vwsnthis_0;

		__vwsnc9_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(::demo::MainWindowConstructor* __vwsnctorthis_0);

		bool __vwsn_bind_opened_ = false;
		bool __vwsn_bind_closed_ = false;
		void __vwsn_bind_activator_();
		bool Open() override;
		bool Update() override;
		bool Close() override;
	};
}

#if defined( _MSC_VER)
#pragma warning(pop)
#elif defined(__clang__)
#pragma clang diagnostic pop
#elif defined(__GNUC__)
#pragma GCC diagnostic pop
#endif

#endif
