text: // C++ for the Windows Runtime v1.0.161012.5
  // Copyright (c) 2016 Microsoft Corporation. All rights reserved.
  
  #pragma once
  
  #include "Windows.UI.Core.1.h"
  #include "Windows.Foundation.1.h"
  
  WINRT_EXPORT namespace winrt {
  
  namespace ABI::Windows::Foundation {
  
  #ifndef WINRT_GENERIC_cdb5efb3_5788_509d_9be1_71ccb8a3362a
  #define WINRT_GENERIC_cdb5efb3_5788_509d_9be1_71ccb8a3362a
  template <> struct __declspec(uuid("cdb5efb3-5788-509d-9be1-71ccb8a3362a")) __declspec(novtable) IAsyncOperation<bool> : impl_IAsyncOperation<bool> {};
  #endif
  
  
  }
  
  namespace ABI::Windows::Foundation::Collections {
  
  #ifndef WINRT_GENERIC_105139a1_dcb8_5f65_97ef_cb1bf0b75f9d
  #define WINRT_GENERIC_105139a1_dcb8_5f65_97ef_cb1bf0b75f9d
  template <> struct __declspec(uuid("105139a1-dcb8-5f65-97ef-cb1bf0b75f9d")) __declspec(novtable) IVector<Windows::UI::Popups::IUICommand> : impl_IVector<Windows::UI::Popups::IUICommand> {};
  #endif
  
  
  }
  
  namespace ABI::Windows::Foundation {
  
  #ifndef WINRT_GENERIC_b8770535_6a4b_52b1_b578_f3cdc5007a1f
  #define WINRT_GENERIC_b8770535_6a4b_52b1_b578_f3cdc5007a1f
  template <> struct __declspec(uuid("b8770535-6a4b-52b1-b578-f3cdc5007a1f")) __declspec(novtable) IAsyncOperation<Windows::UI::Popups::IUICommand> : impl_IAsyncOperation<Windows::UI::Popups::IUICommand> {};
  #endif
  
  
  }
  
  namespace ABI::Windows::Foundation::Collections {
  
  #ifndef WINRT_GENERIC_dfa655cf_fde7_5048_b4bf_c909231b7edb
  #define WINRT_GENERIC_dfa655cf_fde7_5048_b4bf_c909231b7edb
  template <> struct __declspec(uuid("dfa655cf-fde7-5048-b4bf-c909231b7edb")) __declspec(novtable) IVector<Windows::UI::Input::PointerPoint> : impl_IVector<Windows::UI::Input::PointerPoint> {};
  #endif
  
  
  }
  
  namespace ABI::Windows::Foundation {
  
  #ifndef WINRT_GENERIC_26a73b35_a7f9_52db_88d6_15726deb2523
  #define WINRT_GENERIC_26a73b35_a7f9_52db_88d6_15726deb2523
  template <> struct __declspec(uuid("26a73b35-a7f9-52db-88d6-15726deb2523")) __declspec(novtable) TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::WindowActivatedEventArgs> : impl_TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::WindowActivatedEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_54db5c04_81f7_5f46_9fb8_e49beec70a24
  #define WINRT_GENERIC_54db5c04_81f7_5f46_9fb8_e49beec70a24
  template <> struct __declspec(uuid("54db5c04-81f7-5f46-9fb8-e49beec70a24")) __declspec(novtable) TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::AutomationProviderRequestedEventArgs> : impl_TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::AutomationProviderRequestedEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_73f846a8_0af6_5872_8fb8_ae2f56d8553e
  #define WINRT_GENERIC_73f846a8_0af6_5872_8fb8_ae2f56d8553e
  template <> struct __declspec(uuid("73f846a8-0af6-5872-8fb8-ae2f56d8553e")) __declspec(novtable) TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::CharacterReceivedEventArgs> : impl_TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::CharacterReceivedEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_d08e4f66_3457_57f2_ba0c_cb347133bd15
  #define WINRT_GENERIC_d08e4f66_3457_57f2_ba0c_cb347133bd15
  template <> struct __declspec(uuid("d08e4f66-3457-57f2-ba0c-cb347133bd15")) __declspec(novtable) TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::CoreWindowEventArgs> : impl_TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::CoreWindowEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_e230a64a_506a_59c3_bb61_5559ff995663
  #define WINRT_GENERIC_e230a64a_506a_59c3_bb61_5559ff995663
  template <> struct __declspec(uuid("e230a64a-506a-59c3-bb61-5559ff995663")) __declspec(novtable) TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::InputEnabledEventArgs> : impl_TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::InputEnabledEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_a3ec0774_55ac_5d61_8232_b35c5d35c93c
  #define WINRT_GENERIC_a3ec0774_55ac_5d61_8232_b35c5d35c93c
  template <> struct __declspec(uuid("a3ec0774-55ac-5d61-8232-b35c5d35c93c")) __declspec(novtable) TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::KeyEventArgs> : impl_TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::KeyEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_420e1bb6_e99d_5e64_8e25_07467e3cae9e
  #define WINRT_GENERIC_420e1bb6_e99d_5e64_8e25_07467e3cae9e
  template <> struct __declspec(uuid("420e1bb6-e99d-5e64-8e25-07467e3cae9e")) __declspec(novtable) TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::PointerEventArgs> : impl_TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::PointerEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_197654c9_0c47_502b_9aa1_0deb03ed9702
  #define WINRT_GENERIC_197654c9_0c47_502b_9aa1_0deb03ed9702
  template <> struct __declspec(uuid("197654c9-0c47-502b-9aa1-0deb03ed9702")) __declspec(novtable) TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::TouchHitTestingEventArgs> : impl_TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::TouchHitTestingEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_318dbb67_4089_5690_9040_1d454fb2f686
  #define WINRT_GENERIC_318dbb67_4089_5690_9040_1d454fb2f686
  template <> struct __declspec(uuid("318dbb67-4089-5690-9040-1d454fb2f686")) __declspec(novtable) TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::WindowSizeChangedEventArgs> : impl_TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::WindowSizeChangedEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_14b7f692_5583_52a1_aa42_fc1843c0f748
  #define WINRT_GENERIC_14b7f692_5583_52a1_aa42_fc1843c0f748
  template <> struct __declspec(uuid("14b7f692-5583-52a1-aa42-fc1843c0f748")) __declspec(novtable) TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::VisibilityChangedEventArgs> : impl_TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::VisibilityChangedEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_21a652d2_bfe2_5b2e_a2ab_ca45253be8b0
  #define WINRT_GENERIC_21a652d2_bfe2_5b2e_a2ab_ca45253be8b0
  template <> struct __declspec(uuid("21a652d2-bfe2-5b2e-a2ab-ca45253be8b0")) __declspec(novtable) TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::ClosestInteractiveBoundsRequestedEventArgs> : impl_TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::ClosestInteractiveBoundsRequestedEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_136dff0d_f7e8_5153_b31c_86390c701880
  #define WINRT_GENERIC_136dff0d_f7e8_5153_b31c_86390c701880
  template <> struct __declspec(uuid("136dff0d-f7e8-5153-b31c-86390c701880")) __declspec(novtable) TypedEventHandler<Windows::UI::Core::CoreDispatcher, Windows::UI::Core::AcceleratorKeyEventArgs> : impl_TypedEventHandler<Windows::UI::Core::CoreDispatcher, Windows::UI::Core::AcceleratorKeyEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_c9965f1c_3641_51b6_b823_048ec3628fb0
  #define WINRT_GENERIC_c9965f1c_3641_51b6_b823_048ec3628fb0
  template <> struct __declspec(uuid("c9965f1c-3641-51b6-b823-048ec3628fb0")) __declspec(novtable) TypedEventHandler<Windows::IInspectable, Windows::UI::Core::InputEnabledEventArgs> : impl_TypedEventHandler<Windows::IInspectable, Windows::UI::Core::InputEnabledEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_26aabf41_a0fd_5e66_b188_6c74182d00cd
  #define WINRT_GENERIC_26aabf41_a0fd_5e66_b188_6c74182d00cd
  template <> struct __declspec(uuid("26aabf41-a0fd-5e66-b188-6c74182d00cd")) __declspec(novtable) TypedEventHandler<Windows::IInspectable, Windows::UI::Core::PointerEventArgs> : impl_TypedEventHandler<Windows::IInspectable, Windows::UI::Core::PointerEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_5aa4a848_86b2_506b_89ab_5eb5786420c6
  #define WINRT_GENERIC_5aa4a848_86b2_506b_89ab_5eb5786420c6
  template <> struct __declspec(uuid("5aa4a848-86b2-506b-89ab-5eb5786420c6")) __declspec(novtable) TypedEventHandler<Windows::IInspectable, Windows::UI::Core::CharacterReceivedEventArgs> : impl_TypedEventHandler<Windows::IInspectable, Windows::UI::Core::CharacterReceivedEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_eadffdf7_d70e_5688_906c_c2b1229ea16d
  #define WINRT_GENERIC_eadffdf7_d70e_5688_906c_c2b1229ea16d
  template <> struct __declspec(uuid("eadffdf7-d70e-5688-906c-c2b1229ea16d")) __declspec(novtable) TypedEventHandler<Windows::IInspectable, Windows::UI::Core::KeyEventArgs> : impl_TypedEventHandler<Windows::IInspectable, Windows::UI::Core::KeyEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_1a8ac270_a777_50f7_88a1_e34e56c09449
  #define WINRT_GENERIC_1a8ac270_a777_50f7_88a1_e34e56c09449
  template <> struct __declspec(uuid("1a8ac270-a777-50f7-88a1-e34e56c09449")) __declspec(novtable) TypedEventHandler<Windows::IInspectable, Windows::UI::Core::CoreWindowEventArgs> : impl_TypedEventHandler<Windows::IInspectable, Windows::UI::Core::CoreWindowEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_c76e9d25_6a96_58fd_874f_ae52bd603af8
  #define WINRT_GENERIC_c76e9d25_6a96_58fd_874f_ae52bd603af8
  template <> struct __declspec(uuid("c76e9d25-6a96-58fd-874f-ae52bd603af8")) __declspec(novtable) TypedEventHandler<Windows::IInspectable, Windows::UI::Core::TouchHitTestingEventArgs> : impl_TypedEventHandler<Windows::IInspectable, Windows::UI::Core::TouchHitTestingEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_e2c62d42_0577_5112_9e59_eae159bf39e9
  #define WINRT_GENERIC_e2c62d42_0577_5112_9e59_eae159bf39e9
  template <> struct __declspec(uuid("e2c62d42-0577-5112-9e59-eae159bf39e9")) __declspec(novtable) TypedEventHandler<Windows::UI::Core::CoreComponentInputSource, Windows::UI::Core::ClosestInteractiveBoundsRequestedEventArgs> : impl_TypedEventHandler<Windows::UI::Core::CoreComponentInputSource, Windows::UI::Core::ClosestInteractiveBoundsRequestedEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_29742d27_177d_54c3_b974_616fc45a2b0c
  #define WINRT_GENERIC_29742d27_177d_54c3_b974_616fc45a2b0c
  template <> struct __declspec(uuid("29742d27-177d-54c3-b974-616fc45a2b0c")) __declspec(novtable) TypedEventHandler<Windows::UI::Core::ICorePointerRedirector, Windows::UI::Core::PointerEventArgs> : impl_TypedEventHandler<Windows::UI::Core::ICorePointerRedirector, Windows::UI::Core::PointerEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_ca821060_002b_526d_8122_982630d7cdbe
  #define WINRT_GENERIC_ca821060_002b_526d_8122_982630d7cdbe
  template <> struct __declspec(uuid("ca821060-002b-526d-8122-982630d7cdbe")) __declspec(novtable) EventHandler<Windows::UI::Core::BackRequestedEventArgs> : impl_EventHandler<Windows::UI::Core::BackRequestedEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_b32d6422_78b2_5e00_84a8_6e3167aaabde
  #define WINRT_GENERIC_b32d6422_78b2_5e00_84a8_6e3167aaabde
  template <> struct __declspec(uuid("b32d6422-78b2-5e00-84a8-6e3167aaabde")) __declspec(novtable) TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::CoreWindowPopupShowingEventArgs> : impl_TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::CoreWindowPopupShowingEventArgs> {};
  #endif
  
  #ifndef WINRT_GENERIC_c1d3d1a2_ae17_5a5f_b5a2_bdcc8844889a
  #define WINRT_GENERIC_c1d3d1a2_ae17_5a5f_b5a2_bdcc8844889a
  template <> struct __declspec(uuid("c1d3d1a2-ae17-5a5f-b5a2-bdcc8844889a")) __declspec(novtable) AsyncOperationCompletedHandler<bool> : impl_AsyncOperationCompletedHandler<bool> {};
  #endif
  
  
  }
  
  namespace ABI::Windows::Foundation::Collections {
  
  #ifndef WINRT_GENERIC_f45db3d3_7299_57ce_a73e_297cf0af3083
  #define WINRT_GENERIC_f45db3d3_7299_57ce_a73e_297cf0af3083
  template <> struct __declspec(uuid("f45db3d3-7299-57ce-a73e-297cf0af3083")) __declspec(novtable) IIterator<Windows::UI::Popups::IUICommand> : impl_IIterator<Windows::UI::Popups::IUICommand> {};
  #endif
  
  #ifndef WINRT_GENERIC_e63de42b_53c3_5e07_90d3_98172d545412
  #define WINRT_GENERIC_e63de42b_53c3_5e07_90d3_98172d545412
  template <> struct __declspec(uuid("e63de42b-53c3-5e07-90d3-98172d545412")) __declspec(novtable) IIterable<Windows::UI::Popups::IUICommand> : impl_IIterable<Windows::UI::Popups::IUICommand> {};
  #endif
  
  #ifndef WINRT_GENERIC_ed1165e6_f377_5b00_8172_93c1bd04deb4
  #define WINRT_GENERIC_ed1165e6_f377_5b00_8172_93c1bd04deb4
  template <> struct __declspec(uuid("ed1165e6-f377-5b00-8172-93c1bd04deb4")) __declspec(novtable) IVectorView<Windows::UI::Popups::IUICommand> : impl_IVectorView<Windows::UI::Popups::IUICommand> {};
  #endif
  
  
  }
  
  namespace ABI::Windows::Foundation {
  
  #ifndef WINRT_GENERIC_dd33fd5b_a24d_5a44_91fe_dd6441770103
  #define WINRT_GENERIC_dd33fd5b_a24d_5a44_91fe_dd6441770103
  template <> struct __declspec(uuid("dd33fd5b-a24d-5a44-91fe-dd6441770103")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::UI::Popups::IUICommand> : impl_AsyncOperationCompletedHandler<Windows::UI::Popups::IUICommand> {};
  #endif
  
  
  }
  
  namespace ABI::Windows::Foundation::Collections {
  
  #ifndef WINRT_GENERIC_721fe01c_5ad4_5262_b078_3ab345105db8
  #define WINRT_GENERIC_721fe01c_5ad4_5262_b078_3ab345105db8
  template <> struct __declspec(uuid("721fe01c-5ad4-5262-b078-3ab345105db8")) __declspec(novtable) IIterator<Windows::UI::Input::PointerPoint> : impl_IIterator<Windows::UI::Input::PointerPoint> {};
  #endif
  
  #ifndef WINRT_GENERIC_f6f2cba6_7076_5b59_9631_f6ac32b57695
  #define WINRT_GENERIC_f6f2cba6_7076_5b59_9631_f6ac32b57695
  template <> struct __declspec(uuid("f6f2cba6-7076-5b59-9631-f6ac32b57695")) __declspec(novtable) IIterable<Windows::UI::Input::PointerPoint> : impl_IIterable<Windows::UI::Input::PointerPoint> {};
  #endif
  
  #ifndef WINRT_GENERIC_f0f57411_7786_5174_8752_4c5e834b6da2
  #define WINRT_GENERIC_f0f57411_7786_5174_8752_4c5e834b6da2
  template <> struct __declspec(uuid("f0f57411-7786-5174-8752-4c5e834b6da2")) __declspec(novtable) IVectorView<Windows::UI::Input::PointerPoint> : impl_IVectorView<Windows::UI::Input::PointerPoint> {};
  #endif
  
  
  }
  
  namespace Windows::UI::Core {
  
  template <typename D>
  struct WINRT_EBO impl_IAcceleratorKeyEventArgs
  {
      Windows::UI::Core::CoreAcceleratorKeyEventType EventType() const;
      Windows::System::VirtualKey VirtualKey() const;
      Windows::UI::Core::CorePhysicalKeyStatus KeyStatus() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_IAcceleratorKeyEventArgs2
  {
      hstring DeviceId() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_IAutomationProviderRequestedEventArgs
  {
      Windows::IInspectable AutomationProvider() const;
      void AutomationProvider(const Windows::IInspectable & value) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_IBackRequestedEventArgs
  {
      bool Handled() const;
      void Handled(bool value) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICharacterReceivedEventArgs
  {
      uint32_t KeyCode() const;
      Windows::UI::Core::CorePhysicalKeyStatus KeyStatus() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_IClosestInteractiveBoundsRequestedEventArgs
  {
      Windows::Foundation::Point PointerPosition() const;
      Windows::Foundation::Rect SearchBounds() const;
      Windows::Foundation::Rect ClosestInteractiveBounds() const;
      void ClosestInteractiveBounds(const Windows::Foundation::Rect & value) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreAcceleratorKeys
  {
      event_token AcceleratorKeyActivated(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreDispatcher, Windows::UI::Core::AcceleratorKeyEventArgs> & handler) const;
      using AcceleratorKeyActivated_revoker = event_revoker<ICoreAcceleratorKeys>;
      AcceleratorKeyActivated_revoker AcceleratorKeyActivated(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreDispatcher, Windows::UI::Core::AcceleratorKeyEventArgs> & handler) const;
      void AcceleratorKeyActivated(event_token cookie) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreClosestInteractiveBoundsRequested
  {
      event_token ClosestInteractiveBoundsRequested(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreComponentInputSource, Windows::UI::Core::ClosestInteractiveBoundsRequestedEventArgs> & handler) const;
      using ClosestInteractiveBoundsRequested_revoker = event_revoker<ICoreClosestInteractiveBoundsRequested>;
      ClosestInteractiveBoundsRequested_revoker ClosestInteractiveBoundsRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreComponentInputSource, Windows::UI::Core::ClosestInteractiveBoundsRequestedEventArgs> & handler) const;
      void ClosestInteractiveBoundsRequested(event_token cookie) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreComponentFocusable
  {
      bool HasFocus() const;
      event_token GotFocus(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::CoreWindowEventArgs> & handler) const;
      using GotFocus_revoker = event_revoker<ICoreComponentFocusable>;
      GotFocus_revoker GotFocus(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::CoreWindowEventArgs> & handler) const;
      void GotFocus(event_token cookie) const;
      event_token LostFocus(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::CoreWindowEventArgs> & handler) const;
      using LostFocus_revoker = event_revoker<ICoreComponentFocusable>;
      LostFocus_revoker LostFocus(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::CoreWindowEventArgs> & handler) const;
      void LostFocus(event_token cookie) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreCursor
  {
      uint32_t Id() const;
      Windows::UI::Core::CoreCursorType Type() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreCursorFactory
  {
      Windows::UI::Core::CoreCursor CreateCursor(Windows::UI::Core::CoreCursorType type, uint32_t id) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreDispatcher
  {
      bool HasThreadAccess() const;
      void ProcessEvents(Windows::UI::Core::CoreProcessEventsOption options) const;
      Windows::Foundation::IAsyncAction RunAsync(Windows::UI::Core::CoreDispatcherPriority priority, const Windows::UI::Core::DispatchedHandler & agileCallback) const;
      Windows::Foundation::IAsyncAction RunIdleAsync(const Windows::UI::Core::IdleDispatchedHandler & agileCallback) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreDispatcher2
  {
      Windows::Foundation::IAsyncOperation<bool> TryRunAsync(Windows::UI::Core::CoreDispatcherPriority priority, const Windows::UI::Core::DispatchedHandler & agileCallback) const;
      Windows::Foundation::IAsyncOperation<bool> TryRunIdleAsync(const Windows::UI::Core::IdleDispatchedHandler & agileCallback) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreDispatcherWithTaskPriority
  {
      Windows::UI::Core::CoreDispatcherPriority CurrentPriority() const;
      void CurrentPriority(Windows::UI::Core::CoreDispatcherPriority value) const;
      bool ShouldYield() const;
      bool ShouldYield(Windows::UI::Core::CoreDispatcherPriority priority) const;
      void StopProcessEvents() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreInputSourceBase
  {
      Windows::UI::Core::CoreDispatcher Dispatcher() const;
      bool IsInputEnabled() const;
      void IsInputEnabled(bool value) const;
      event_token InputEnabled(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::InputEnabledEventArgs> & handler) const;
      using InputEnabled_revoker = event_revoker<ICoreInputSourceBase>;
      InputEnabled_revoker InputEnabled(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::InputEnabledEventArgs> & handler) const;
      void InputEnabled(event_token cookie) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreKeyboardInputSource
  {
      Windows::UI::Core::CoreVirtualKeyStates GetCurrentKeyState(Windows::System::VirtualKey virtualKey) const;
      event_token CharacterReceived(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::CharacterReceivedEventArgs> & handler) const;
      using CharacterReceived_revoker = event_revoker<ICoreKeyboardInputSource>;
      CharacterReceived_revoker CharacterReceived(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::CharacterReceivedEventArgs> & handler) const;
      void CharacterReceived(event_token cookie) const;
      event_token KeyDown(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::KeyEventArgs> & handler) const;
      using KeyDown_revoker = event_revoker<ICoreKeyboardInputSource>;
      KeyDown_revoker KeyDown(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::KeyEventArgs> & handler) const;
      void KeyDown(event_token cookie) const;
      event_token KeyUp(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::KeyEventArgs> & handler) const;
      using KeyUp_revoker = event_revoker<ICoreKeyboardInputSource>;
      KeyUp_revoker KeyUp(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::KeyEventArgs> & handler) const;
      void KeyUp(event_token cookie) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreKeyboardInputSource2
  {
      hstring GetCurrentKeyEventDeviceId() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICorePointerInputSource
  {
      void ReleasePointerCapture() const;
      void SetPointerCapture() const;
      bool HasCapture() const;
      Windows::Foundation::Point PointerPosition() const;
      Windows::UI::Core::CoreCursor PointerCursor() const;
      void PointerCursor(const Windows::UI::Core::CoreCursor & value) const;
      event_token PointerCaptureLost(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::PointerEventArgs> & handler) const;
      using PointerCaptureLost_revoker = event_revoker<ICorePointerInputSource>;
      PointerCaptureLost_revoker PointerCaptureLost(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::PointerEventArgs> & handler) const;
      void PointerCaptureLost(event_token cookie) const;
      event_token PointerEntered(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::PointerEventArgs> & handler) const;
      using PointerEntered_revoker = event_revoker<ICorePointerInputSource>;
      PointerEntered_revoker PointerEntered(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::PointerEventArgs> & handler) const;
      void PointerEntered(event_token cookie) const;
      event_token PointerExited(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::PointerEventArgs> & handler) const;
      using PointerExited_revoker = event_revoker<ICorePointerInputSource>;
      PointerExited_revoker PointerExited(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::PointerEventArgs> & handler) const;
      void PointerExited(event_token cookie) const;
      event_token PointerMoved(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::PointerEventArgs> & handler) const;
      using PointerMoved_revoker = event_revoker<ICorePointerInputSource>;
      PointerMoved_revoker PointerMoved(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::PointerEventArgs> & handler) const;
      void PointerMoved(event_token cookie) const;
      event_token PointerPressed(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::PointerEventArgs> & handler) const;
      using PointerPressed_revoker = event_revoker<ICorePointerInputSource>;
      PointerPressed_revoker PointerPressed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::PointerEventArgs> & handler) const;
      void PointerPressed(event_token cookie) const;
      event_token PointerReleased(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::PointerEventArgs> & handler) const;
      using PointerReleased_revoker = event_revoker<ICorePointerInputSource>;
      PointerReleased_revoker PointerReleased(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::PointerEventArgs> & handler) const;
      void PointerReleased(event_token cookie) const;
      event_token PointerWheelChanged(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::PointerEventArgs> & handler) const;
      using PointerWheelChanged_revoker = event_revoker<ICorePointerInputSource>;
      PointerWheelChanged_revoker PointerWheelChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::PointerEventArgs> & handler) const;
      void PointerWheelChanged(event_token cookie) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICorePointerRedirector
  {
      event_token PointerRoutedAway(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::ICorePointerRedirector, Windows::UI::Core::PointerEventArgs> & handler) const;
      using PointerRoutedAway_revoker = event_revoker<ICorePointerRedirector>;
      PointerRoutedAway_revoker PointerRoutedAway(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::ICorePointerRedirector, Windows::UI::Core::PointerEventArgs> & handler) const;
      void PointerRoutedAway(event_token cookie) const;
      event_token PointerRoutedTo(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::ICorePointerRedirector, Windows::UI::Core::PointerEventArgs> & handler) const;
      using PointerRoutedTo_revoker = event_revoker<ICorePointerRedirector>;
      PointerRoutedTo_revoker PointerRoutedTo(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::ICorePointerRedirector, Windows::UI::Core::PointerEventArgs> & handler) const;
      void PointerRoutedTo(event_token cookie) const;
      event_token PointerRoutedReleased(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::ICorePointerRedirector, Windows::UI::Core::PointerEventArgs> & handler) const;
      using PointerRoutedReleased_revoker = event_revoker<ICorePointerRedirector>;
      PointerRoutedReleased_revoker PointerRoutedReleased(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::ICorePointerRedirector, Windows::UI::Core::PointerEventArgs> & handler) const;
      void PointerRoutedReleased(event_token cookie) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreTouchHitTesting
  {
      event_token TouchHitTesting(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::TouchHitTestingEventArgs> & handler) const;
      using TouchHitTesting_revoker = event_revoker<ICoreTouchHitTesting>;
      TouchHitTesting_revoker TouchHitTesting(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Core::TouchHitTestingEventArgs> & handler) const;
      void TouchHitTesting(event_token cookie) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreWindow
  {
      Windows::IInspectable AutomationHostProvider() const;
      Windows::Foundation::Rect Bounds() const;
      Windows::Foundation::Collections::IPropertySet CustomProperties() const;
      Windows::UI::Core::CoreDispatcher Dispatcher() const;
      Windows::UI::Core::CoreWindowFlowDirection FlowDirection() const;
      void FlowDirection(Windows::UI::Core::CoreWindowFlowDirection value) const;
      bool IsInputEnabled() const;
      void IsInputEnabled(bool value) const;
      Windows::UI::Core::CoreCursor PointerCursor() const;
      void PointerCursor(const Windows::UI::Core::CoreCursor & value) const;
      Windows::Foundation::Point PointerPosition() const;
      bool Visible() const;
      void Activate() const;
      void Close() const;
      Windows::UI::Core::CoreVirtualKeyStates GetAsyncKeyState(Windows::System::VirtualKey virtualKey) const;
      Windows::UI::Core::CoreVirtualKeyStates GetKeyState(Windows::System::VirtualKey virtualKey) const;
      void ReleasePointerCapture() const;
      void SetPointerCapture() const;
      event_token Activated(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::WindowActivatedEventArgs> & handler) const;
      using Activated_revoker = event_revoker<ICoreWindow>;
      Activated_revoker Activated(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::WindowActivatedEventArgs> & handler) const;
      void Activated(event_token cookie) const;
      event_token AutomationProviderRequested(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::AutomationProviderRequestedEventArgs> & handler) const;
      using AutomationProviderRequested_revoker = event_revoker<ICoreWindow>;
      AutomationProviderRequested_revoker AutomationProviderRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::AutomationProviderRequestedEventArgs> & handler) const;
      void AutomationProviderRequested(event_token cookie) const;
      event_token CharacterReceived(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::CharacterReceivedEventArgs> & handler) const;
      using CharacterReceived_revoker = event_revoker<ICoreWindow>;
      CharacterReceived_revoker CharacterReceived(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::CharacterReceivedEventArgs> & handler) const;
      void CharacterReceived(event_token cookie) const;
      event_token Closed(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::CoreWindowEventArgs> & handler) const;
      using Closed_revoker = event_revoker<ICoreWindow>;
      Closed_revoker Closed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::CoreWindowEventArgs> & handler) const;
      void Closed(event_token cookie) const;
      event_token InputEnabled(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::InputEnabledEventArgs> & handler) const;
      using InputEnabled_revoker = event_revoker<ICoreWindow>;
      InputEnabled_revoker InputEnabled(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::InputEnabledEventArgs> & handler) const;
      void InputEnabled(event_token cookie) const;
      event_token KeyDown(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::KeyEventArgs> & handler) const;
      using KeyDown_revoker = event_revoker<ICoreWindow>;
      KeyDown_revoker KeyDown(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::KeyEventArgs> & handler) const;
      void KeyDown(event_token cookie) const;
      event_token KeyUp(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::KeyEventArgs> & handler) const;
      using KeyUp_revoker = event_revoker<ICoreWindow>;
      KeyUp_revoker KeyUp(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::KeyEventArgs> & handler) const;
      void KeyUp(event_token cookie) const;
      event_token PointerCaptureLost(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::PointerEventArgs> & handler) const;
      using PointerCaptureLost_revoker = event_revoker<ICoreWindow>;
      PointerCaptureLost_revoker PointerCaptureLost(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::PointerEventArgs> & handler) const;
      void PointerCaptureLost(event_token cookie) const;
      event_token PointerEntered(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::PointerEventArgs> & handler) const;
      using PointerEntered_revoker = event_revoker<ICoreWindow>;
      PointerEntered_revoker PointerEntered(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::PointerEventArgs> & handler) const;
      void PointerEntered(event_token cookie) const;
      event_token PointerExited(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::PointerEventArgs> & handler) const;
      using PointerExited_revoker = event_revoker<ICoreWindow>;
      PointerExited_revoker PointerExited(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::PointerEventArgs> & handler) const;
      void PointerExited(event_token cookie) const;
      event_token PointerMoved(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::PointerEventArgs> & handler) const;
      using PointerMoved_revoker = event_revoker<ICoreWindow>;
      PointerMoved_revoker PointerMoved(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::PointerEventArgs> & handler) const;
      void PointerMoved(event_token cookie) const;
      event_token PointerPressed(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::PointerEventArgs> & handler) const;
      using PointerPressed_revoker = event_revoker<ICoreWindow>;
      PointerPressed_revoker PointerPressed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::PointerEventArgs> & handler) const;
      void PointerPressed(event_token cookie) const;
      event_token PointerReleased(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::PointerEventArgs> & handler) const;
      using PointerReleased_revoker = event_revoker<ICoreWindow>;
      PointerReleased_revoker PointerReleased(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::PointerEventArgs> & handler) const;
      void PointerReleased(event_token cookie) const;
      event_token TouchHitTesting(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::TouchHitTestingEventArgs> & handler) const;
      using TouchHitTesting_revoker = event_revoker<ICoreWindow>;
      TouchHitTesting_revoker TouchHitTesting(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::TouchHitTestingEventArgs> & handler) const;
      void TouchHitTesting(event_token cookie) const;
      event_token PointerWheelChanged(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::PointerEventArgs> & handler) const;
      using PointerWheelChanged_revoker = event_revoker<ICoreWindow>;
      PointerWheelChanged_revoker PointerWheelChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::PointerEventArgs> & handler) const;
      void PointerWheelChanged(event_token cookie) const;
      event_token SizeChanged(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::WindowSizeChangedEventArgs> & handler) const;
      using SizeChanged_revoker = event_revoker<ICoreWindow>;
      SizeChanged_revoker SizeChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::WindowSizeChangedEventArgs> & handler) const;
      void SizeChanged(event_token cookie) const;
      event_token VisibilityChanged(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::VisibilityChangedEventArgs> & handler) const;
      using VisibilityChanged_revoker = event_revoker<ICoreWindow>;
      VisibilityChanged_revoker VisibilityChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::VisibilityChangedEventArgs> & handler) const;
      void VisibilityChanged(event_token cookie) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreWindow2
  {
      void PointerPosition(const Windows::Foundation::Point & value) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreWindow3
  {
      event_token ClosestInteractiveBoundsRequested(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::ClosestInteractiveBoundsRequestedEventArgs> & handler) const;
      using ClosestInteractiveBoundsRequested_revoker = event_revoker<ICoreWindow3>;
      ClosestInteractiveBoundsRequested_revoker ClosestInteractiveBoundsRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::ClosestInteractiveBoundsRequestedEventArgs> & handler) const;
      void ClosestInteractiveBoundsRequested(event_token cookie) const;
      hstring GetCurrentKeyEventDeviceId() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreWindowDialog
  {
      event_token Showing(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::CoreWindowPopupShowingEventArgs> & handler) const;
      using Showing_revoker = event_revoker<ICoreWindowDialog>;
      Showing_revoker Showing(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::CoreWindowPopupShowingEventArgs> & handler) const;
      void Showing(event_token cookie) const;
      Windows::Foundation::Size MaxSize() const;
      Windows::Foundation::Size MinSize() const;
      hstring Title() const;
      void Title(hstring_ref value) const;
      int32_t IsInteractionDelayed() const;
      void IsInteractionDelayed(int32_t value) const;
      Windows::Foundation::Collections::IVector<Windows::UI::Popups::IUICommand> Commands() const;
      uint32_t DefaultCommandIndex() const;
      void DefaultCommandIndex(uint32_t value) const;
      uint32_t CancelCommandIndex() const;
      void CancelCommandIndex(uint32_t value) const;
      Windows::UI::Popups::UICommandInvokedHandler BackButtonCommand() const;
      void BackButtonCommand(const Windows::UI::Popups::UICommandInvokedHandler & value) const;
      Windows::Foundation::IAsyncOperation<Windows::UI::Popups::IUICommand> ShowAsync() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreWindowDialogFactory
  {
      Windows::UI::Core::CoreWindowDialog CreateWithTitle(hstring_ref title) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreWindowEventArgs
  {
      bool Handled() const;
      void Handled(bool value) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreWindowFlyout
  {
      event_token Showing(const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::CoreWindowPopupShowingEventArgs> & handler) const;
      using Showing_revoker = event_revoker<ICoreWindowFlyout>;
      Showing_revoker Showing(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow, Windows::UI::Core::CoreWindowPopupShowingEventArgs> & handler) const;
      void Showing(event_token cookie) const;
      Windows::Foundation::Size MaxSize() const;
      Windows::Foundation::Size MinSize() const;
      hstring Title() const;
      void Title(hstring_ref value) const;
      int32_t IsInteractionDelayed() const;
      void IsInteractionDelayed(int32_t value) const;
      Windows::Foundation::Collections::IVector<Windows::UI::Popups::IUICommand> Commands() const;
      uint32_t DefaultCommandIndex() const;
      void DefaultCommandIndex(uint32_t value) const;
      Windows::UI::Popups::UICommandInvokedHandler BackButtonCommand() const;
      void BackButtonCommand(const Windows::UI::Popups::UICommandInvokedHandler & value) const;
      Windows::Foundation::IAsyncOperation<Windows::UI::Popups::IUICommand> ShowAsync() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreWindowFlyoutFactory
  {
      Windows::UI::Core::CoreWindowFlyout Create(const Windows::Foundation::Point & position) const;
      Windows::UI::Core::CoreWindowFlyout CreateWithTitle(const Windows::Foundation::Point & position, hstring_ref title) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreWindowPopupShowingEventArgs
  {
      void SetDesiredSize(const Windows::Foundation::Size & value) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreWindowResizeManager
  {
      void NotifyLayoutCompleted() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreWindowResizeManagerLayoutCapability
  {
      void ShouldWaitForLayoutCompletion(bool value) const;
      bool ShouldWaitForLayoutCompletion() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreWindowResizeManagerStatics
  {
      Windows::UI::Core::CoreWindowResizeManager GetForCurrentView() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ICoreWindowStatic
  {
      Windows::UI::Core::CoreWindow GetForCurrentThread() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_IIdleDispatchedHandlerArgs
  {
      bool IsDispatcherIdle() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_IInitializeWithCoreWindow
  {
      void Initialize(const Windows::UI::Core::CoreWindow & window) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_IInputEnabledEventArgs
  {
      bool InputEnabled() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_IKeyEventArgs
  {
      Windows::System::VirtualKey VirtualKey() const;
      Windows::UI::Core::CorePhysicalKeyStatus KeyStatus() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_IKeyEventArgs2
  {
      hstring DeviceId() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_IPointerEventArgs
  {
      Windows::UI::Input::PointerPoint CurrentPoint() const;
      Windows::System::VirtualKeyModifiers KeyModifiers() const;
      Windows::Foundation::Collections::IVector<Windows::UI::Input::PointerPoint> GetIntermediatePoints() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ISystemNavigationManager
  {
      event_token BackRequested(const Windows::Foundation::EventHandler<Windows::UI::Core::BackRequestedEventArgs> & handler) const;
      using BackRequested_revoker = event_revoker<ISystemNavigationManager>;
      BackRequested_revoker BackRequested(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::UI::Core::BackRequestedEventArgs> & handler) const;
      void BackRequested(event_token token) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ISystemNavigationManager2
  {
      Windows::UI::Core::AppViewBackButtonVisibility AppViewBackButtonVisibility() const;
      void AppViewBackButtonVisibility(Windows::UI::Core::AppViewBackButtonVisibility value) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ISystemNavigationManagerStatics
  {
      Windows::UI::Core::SystemNavigationManager GetForCurrentView() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_ITouchHitTestingEventArgs
  {
      Windows::UI::Core::CoreProximityEvaluation ProximityEvaluation() const;
      void ProximityEvaluation(const Windows::UI::Core::CoreProximityEvaluation & value) const;
      Windows::Foundation::Point Point() const;
      Windows::Foundation::Rect BoundingBox() const;
      Windows::UI::Core::CoreProximityEvaluation EvaluateProximity(const Windows::Foundation::Rect & controlBoundingBox) const;
      Windows::UI::Core::CoreProximityEvaluation EvaluateProximity(array_ref<const Windows::Foundation::Point> controlVertices) const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_IVisibilityChangedEventArgs
  {
      bool Visible() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_IWindowActivatedEventArgs
  {
      Windows::UI::Core::CoreWindowActivationState WindowActivationState() const;
  };
  
  template <typename D>
  struct WINRT_EBO impl_IWindowSizeChangedEventArgs
  {
      Windows::Foundation::Size Size() const;
  };
  
  struct DispatchedHandler : Windows::IUnknown
  {
      DispatchedHandler(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<DispatchedHandler>(m_ptr); }
      template <typename L> DispatchedHandler(L lambda);
      template <typename F> DispatchedHandler (F * function);
      template <typename O, typename M> DispatchedHandler(O * object, M method);
      void operator()() const;
  };
  
  struct IdleDispatchedHandler : Windows::IUnknown
  {
      IdleDispatchedHandler(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<IdleDispatchedHandler>(m_ptr); }
      template <typename L> IdleDispatchedHandler(L lambda);
      template <typename F> IdleDispatchedHandler (F * function);
      template <typename O, typename M> IdleDispatchedHandler(O * object, M method);
      void operator()(const Windows::UI::Core::IdleDispatchedHandlerArgs & e) const;
  };
  
  struct IAcceleratorKeyEventArgs :
      Windows::IInspectable,
      impl::consume<IAcceleratorKeyEventArgs>,
      impl::require<IAcceleratorKeyEventArgs, Windows::UI::Core::ICoreWindowEventArgs>
  {
      IAcceleratorKeyEventArgs(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<IAcceleratorKeyEventArgs>(m_ptr); }
  };
  
  struct IAcceleratorKeyEventArgs2 :
      Windows::IInspectable,
      impl::consume<IAcceleratorKeyEventArgs2>,
      impl::require<IAcceleratorKeyEventArgs2, Windows::UI::Core::ICoreWindowEventArgs>
  {
      IAcceleratorKeyEventArgs2(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<IAcceleratorKeyEventArgs2>(m_ptr); }
  };
  
  struct IAutomationProviderRequestedEventArgs :
      Windows::IInspectable,
      impl::consume<IAutomationProviderRequestedEventArgs>,
      impl::require<IAutomationProviderRequestedEventArgs, Windows::UI::Core::ICoreWindowEventArgs>
  {
      IAutomationProviderRequestedEventArgs(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<IAutomationProviderRequestedEventArgs>(m_ptr); }
  };
  
  struct IBackRequestedEventArgs :
      Windows::IInspectable,
      impl::consume<IBackRequestedEventArgs>
  {
      IBackRequestedEventArgs(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<IBackRequestedEventArgs>(m_ptr); }
  };
  
  struct ICharacterReceivedEventArgs :
      Windows::IInspectable,
      impl::consume<ICharacterReceivedEventArgs>,
      impl::require<ICharacterReceivedEventArgs, Windows::UI::Core::ICoreWindowEventArgs>
  {
      ICharacterReceivedEventArgs(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICharacterReceivedEventArgs>(m_ptr); }
  };
  
  struct IClosestInteractiveBoundsRequestedEventArgs :
      Windows::IInspectable,
      impl::consume<IClosestInteractiveBoundsRequestedEventArgs>
  {
      IClosestInteractiveBoundsRequestedEventArgs(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<IClosestInteractiveBoundsRequestedEventArgs>(m_ptr); }
  };
  
  struct ICoreAcceleratorKeys :
      Windows::IInspectable,
      impl::consume<ICoreAcceleratorKeys>
  {
      ICoreAcceleratorKeys(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreAcceleratorKeys>(m_ptr); }
  };
  
  struct ICoreClosestInteractiveBoundsRequested :
      Windows::IInspectable,
      impl::consume<ICoreClosestInteractiveBoundsRequested>
  {
      ICoreClosestInteractiveBoundsRequested(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreClosestInteractiveBoundsRequested>(m_ptr); }
  };
  
  struct ICoreComponentFocusable :
      Windows::IInspectable,
      impl::consume<ICoreComponentFocusable>
  {
      ICoreComponentFocusable(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreComponentFocusable>(m_ptr); }
  };
  
  struct ICoreCursor :
      Windows::IInspectable,
      impl::consume<ICoreCursor>
  {
      ICoreCursor(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreCursor>(m_ptr); }
  };
  
  struct ICoreCursorFactory :
      Windows::IInspectable,
      impl::consume<ICoreCursorFactory>
  {
      ICoreCursorFactory(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreCursorFactory>(m_ptr); }
  };
  
  struct ICoreDispatcher :
      Windows::IInspectable,
      impl::consume<ICoreDispatcher>,
      impl::require<ICoreDispatcher, Windows::UI::Core::ICoreAcceleratorKeys>
  {
      ICoreDispatcher(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreDispatcher>(m_ptr); }
  };
  
  struct ICoreDispatcher2 :
      Windows::IInspectable,
      impl::consume<ICoreDispatcher2>
  {
      ICoreDispatcher2(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreDispatcher2>(m_ptr); }
  };
  
  struct ICoreDispatcherWithTaskPriority :
      Windows::IInspectable,
      impl::consume<ICoreDispatcherWithTaskPriority>
  {
      ICoreDispatcherWithTaskPriority(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreDispatcherWithTaskPriority>(m_ptr); }
  };
  
  struct ICoreInputSourceBase :
      Windows::IInspectable,
      impl::consume<ICoreInputSourceBase>
  {
      ICoreInputSourceBase(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreInputSourceBase>(m_ptr); }
  };
  
  struct ICoreKeyboardInputSource :
      Windows::IInspectable,
      impl::consume<ICoreKeyboardInputSource>
  {
      ICoreKeyboardInputSource(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreKeyboardInputSource>(m_ptr); }
  };
  
  struct ICoreKeyboardInputSource2 :
      Windows::IInspectable,
      impl::consume<ICoreKeyboardInputSource2>
  {
      ICoreKeyboardInputSource2(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreKeyboardInputSource2>(m_ptr); }
  };
  
  struct ICorePointerInputSource :
      Windows::IInspectable,
      impl::consume<ICorePointerInputSource>
  {
      ICorePointerInputSource(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICorePointerInputSource>(m_ptr); }
  };
  
  struct ICorePointerRedirector :
      Windows::IInspectable,
      impl::consume<ICorePointerRedirector>
  {
      ICorePointerRedirector(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICorePointerRedirector>(m_ptr); }
  };
  
  struct ICoreTouchHitTesting :
      Windows::IInspectable,
      impl::consume<ICoreTouchHitTesting>
  {
      ICoreTouchHitTesting(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreTouchHitTesting>(m_ptr); }
  };
  
  struct ICoreWindow :
      Windows::IInspectable,
      impl::consume<ICoreWindow>
  {
      ICoreWindow(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreWindow>(m_ptr); }
  };
  
  struct ICoreWindow2 :
      Windows::IInspectable,
      impl::consume<ICoreWindow2>
  {
      ICoreWindow2(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreWindow2>(m_ptr); }
  };
  
  struct ICoreWindow3 :
      Windows::IInspectable,
      impl::consume<ICoreWindow3>
  {
      ICoreWindow3(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreWindow3>(m_ptr); }
  };
  
  struct ICoreWindowDialog :
      Windows::IInspectable,
      impl::consume<ICoreWindowDialog>
  {
      ICoreWindowDialog(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreWindowDialog>(m_ptr); }
  };
  
  struct ICoreWindowDialogFactory :
      Windows::IInspectable,
      impl::consume<ICoreWindowDialogFactory>
  {
      ICoreWindowDialogFactory(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreWindowDialogFactory>(m_ptr); }
  };
  
  struct ICoreWindowEventArgs :
      Windows::IInspectable,
      impl::consume<ICoreWindowEventArgs>
  {
      ICoreWindowEventArgs(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreWindowEventArgs>(m_ptr); }
  };
  
  struct ICoreWindowFlyout :
      Windows::IInspectable,
      impl::consume<ICoreWindowFlyout>
  {
      ICoreWindowFlyout(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreWindowFlyout>(m_ptr); }
  };
  
  struct ICoreWindowFlyoutFactory :
      Windows::IInspectable,
      impl::consume<ICoreWindowFlyoutFactory>
  {
      ICoreWindowFlyoutFactory(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreWindowFlyoutFactory>(m_ptr); }
  };
  
  struct ICoreWindowPopupShowingEventArgs :
      Windows::IInspectable,
      impl::consume<ICoreWindowPopupShowingEventArgs>
  {
      ICoreWindowPopupShowingEventArgs(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreWindowPopupShowingEventArgs>(m_ptr); }
  };
  
  struct ICoreWindowResizeManager :
      Windows::IInspectable,
      impl::consume<ICoreWindowResizeManager>
  {
      ICoreWindowResizeManager(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreWindowResizeManager>(m_ptr); }
  };
  
  struct ICoreWindowResizeManagerLayoutCapability :
      Windows::IInspectable,
      impl::consume<ICoreWindowResizeManagerLayoutCapability>
  {
      ICoreWindowResizeManagerLayoutCapability(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreWindowResizeManagerLayoutCapability>(m_ptr); }
  };
  
  struct ICoreWindowResizeManagerStatics :
      Windows::IInspectable,
      impl::consume<ICoreWindowResizeManagerStatics>
  {
      ICoreWindowResizeManagerStatics(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreWindowResizeManagerStatics>(m_ptr); }
  };
  
  struct ICoreWindowStatic :
      Windows::IInspectable,
      impl::consume<ICoreWindowStatic>
  {
      ICoreWindowStatic(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ICoreWindowStatic>(m_ptr); }
  };
  
  struct IIdleDispatchedHandlerArgs :
      Windows::IInspectable,
      impl::consume<IIdleDispatchedHandlerArgs>
  {
      IIdleDispatchedHandlerArgs(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<IIdleDispatchedHandlerArgs>(m_ptr); }
  };
  
  struct IInitializeWithCoreWindow :
      Windows::IInspectable,
      impl::consume<IInitializeWithCoreWindow>
  {
      IInitializeWithCoreWindow(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<IInitializeWithCoreWindow>(m_ptr); }
  };
  
  struct IInputEnabledEventArgs :
      Windows::IInspectable,
      impl::consume<IInputEnabledEventArgs>,
      impl::require<IInputEnabledEventArgs, Windows::UI::Core::ICoreWindowEventArgs>
  {
      IInputEnabledEventArgs(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<IInputEnabledEventArgs>(m_ptr); }
  };
  
  struct IKeyEventArgs :
      Windows::IInspectable,
      impl::consume<IKeyEventArgs>,
      impl::require<IKeyEventArgs, Windows::UI::Core::ICoreWindowEventArgs>
  {
      IKeyEventArgs(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<IKeyEventArgs>(m_ptr); }
  };
  
  struct IKeyEventArgs2 :
      Windows::IInspectable,
      impl::consume<IKeyEventArgs2>,
      impl::require<IKeyEventArgs2, Windows::UI::Core::ICoreWindowEventArgs>
  {
      IKeyEventArgs2(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<IKeyEventArgs2>(m_ptr); }
  };
  
  struct IPointerEventArgs :
      Windows::IInspectable,
      impl::consume<IPointerEventArgs>,
      impl::require<IPointerEventArgs, Windows::UI::Core::ICoreWindowEventArgs>
  {
      IPointerEventArgs(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<IPointerEventArgs>(m_ptr); }
  };
  
  struct ISystemNavigationManager :
      Windows::IInspectable,
      impl::consume<ISystemNavigationManager>
  {
      ISystemNavigationManager(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ISystemNavigationManager>(m_ptr); }
  };
  
  struct ISystemNavigationManager2 :
      Windows::IInspectable,
      impl::consume<ISystemNavigationManager2>
  {
      ISystemNavigationManager2(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ISystemNavigationManager2>(m_ptr); }
  };
  
  struct ISystemNavigationManagerStatics :
      Windows::IInspectable,
      impl::consume<ISystemNavigationManagerStatics>
  {
      ISystemNavigationManagerStatics(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ISystemNavigationManagerStatics>(m_ptr); }
  };
  
  struct ITouchHitTestingEventArgs :
      Windows::IInspectable,
      impl::consume<ITouchHitTestingEventArgs>,
      impl::require<ITouchHitTestingEventArgs, Windows::UI::Core::ICoreWindowEventArgs>
  {
      ITouchHitTestingEventArgs(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<ITouchHitTestingEventArgs>(m_ptr); }
  };
  
  struct IVisibilityChangedEventArgs :
      Windows::IInspectable,
      impl::consume<IVisibilityChangedEventArgs>,
      impl::require<IVisibilityChangedEventArgs, Windows::UI::Core::ICoreWindowEventArgs>
  {
      IVisibilityChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<IVisibilityChangedEventArgs>(m_ptr); }
  };
  
  struct IWindowActivatedEventArgs :
      Windows::IInspectable,
      impl::consume<IWindowActivatedEventArgs>,
      impl::require<IWindowActivatedEventArgs, Windows::UI::Core::ICoreWindowEventArgs>
  {
      IWindowActivatedEventArgs(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<IWindowActivatedEventArgs>(m_ptr); }
  };
  
  struct IWindowSizeChangedEventArgs :
      Windows::IInspectable,
      impl::consume<IWindowSizeChangedEventArgs>,
      impl::require<IWindowSizeChangedEventArgs, Windows::UI::Core::ICoreWindowEventArgs>
  {
      IWindowSizeChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
      auto operator->() const noexcept { return ptr<IWindowSizeChangedEventArgs>(m_ptr); }
  };
  
  }
  
  }
  