blob: 1f33a0d03365ece0306edee8ce6cdfb94e39e933 [file] [log] [blame]
// services/video_capture/public/mojom/virtual_device.mojom-blink.h is auto generated by mojom_bindings_generator.py, do not edit
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SERVICES_VIDEO_CAPTURE_PUBLIC_MOJOM_VIRTUAL_DEVICE_MOJOM_BLINK_H_
#define SERVICES_VIDEO_CAPTURE_PUBLIC_MOJOM_VIRTUAL_DEVICE_MOJOM_BLINK_H_
#include <stdint.h>
#include <limits>
#include <type_traits>
#include <utility>
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "mojo/public/cpp/bindings/clone_traits.h"
#include "mojo/public/cpp/bindings/equals_traits.h"
#include "mojo/public/cpp/bindings/lib/serialization.h"
#include "mojo/public/cpp/bindings/struct_ptr.h"
#include "mojo/public/cpp/bindings/struct_traits.h"
#include "mojo/public/cpp/bindings/union_traits.h"
#include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h"
#include "services/video_capture/public/mojom/virtual_device.mojom-shared.h"
#include "services/video_capture/public/mojom/virtual_device.mojom-blink-forward.h"
#include "media/capture/mojom/video_capture_buffer.mojom-blink-forward.h"
#include "media/capture/mojom/video_capture_types.mojom-blink.h"
#include "services/video_capture/public/mojom/producer.mojom-blink-forward.h"
#include "services/video_capture/public/mojom/video_frame_handler.mojom-blink-forward.h"
#include "ui/gfx/geometry/mojom/geometry.mojom-blink.h"
#include "ui/gfx/mojom/buffer_types.mojom-blink.h"
#include "mojo/public/cpp/bindings/lib/wtf_clone_equals_util.h"
#include "mojo/public/cpp/bindings/lib/wtf_hash_util.h"
#include "third_party/blink/renderer/platform/wtf/hash_functions.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
#include "mojo/public/cpp/bindings/lib/control_message_handler.h"
#include "mojo/public/cpp/bindings/raw_ptr_impl_ref_traits.h"
#ifdef KYTHE_IS_RUNNING
#pragma kythe_inline_metadata "Metadata comment"
#endif
namespace video_capture {
namespace mojom {
namespace blink {
class SharedMemoryVirtualDeviceProxy;
template <typename ImplRefTraits>
class SharedMemoryVirtualDeviceStub;
class SharedMemoryVirtualDeviceRequestValidator;
class SharedMemoryVirtualDeviceResponseValidator;
// @generated_from: video_capture.mojom.SharedMemoryVirtualDevice
class SharedMemoryVirtualDevice
: public SharedMemoryVirtualDeviceInterfaceBase {
public:
static const char Name_[];
static std::pair<uint32_t, const void*> MessageToMethodInfo_(mojo::Message& message);
static const char* MessageToMethodName_(mojo::Message& message);
static constexpr uint32_t Version_ = 0;
static constexpr bool PassesAssociatedKinds_ = false;
static constexpr bool HasSyncMethods_ = false;
static constexpr bool HasUninterruptableMethods_ = false;
using Base_ = SharedMemoryVirtualDeviceInterfaceBase;
using Proxy_ = SharedMemoryVirtualDeviceProxy;
template <typename ImplRefTraits>
using Stub_ = SharedMemoryVirtualDeviceStub<ImplRefTraits>;
using RequestValidator_ = SharedMemoryVirtualDeviceRequestValidator;
using ResponseValidator_ = SharedMemoryVirtualDeviceResponseValidator;
enum MethodMinVersions : uint32_t {
kRequestFrameBufferMinVersion = 0,
kOnFrameReadyInBufferMinVersion = 0,
};
// crbug.com/1340245 - this causes binary size bloat on Fuchsia, and we're OK
// with not having this data in traces there.
#if !BUILDFLAG(IS_FUCHSIA)
struct RequestFrameBuffer_Sym {
NOINLINE static void IPCSymbol();
};
struct OnFrameReadyInBuffer_Sym {
NOINLINE static void IPCSymbol();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~SharedMemoryVirtualDevice() = default;
using RequestFrameBufferCallback = base::OnceCallback<void(int32_t)>;
// @generated_from: video_capture.mojom.SharedMemoryVirtualDevice.RequestFrameBuffer
virtual void RequestFrameBuffer(const ::gfx::Size& dimension, ::media::VideoPixelFormat pixel_format, ::media::mojom::blink::PlaneStridesPtr strides, RequestFrameBufferCallback callback) = 0;
// @generated_from: video_capture.mojom.SharedMemoryVirtualDevice.OnFrameReadyInBuffer
virtual void OnFrameReadyInBuffer(int32_t buffer_id, ::media::mojom::blink::VideoFrameInfoPtr frame_info) = 0;
};
class TextureVirtualDeviceProxy;
template <typename ImplRefTraits>
class TextureVirtualDeviceStub;
class TextureVirtualDeviceRequestValidator;
// @generated_from: video_capture.mojom.TextureVirtualDevice
class TextureVirtualDevice
: public TextureVirtualDeviceInterfaceBase {
public:
static const char Name_[];
static std::pair<uint32_t, const void*> MessageToMethodInfo_(mojo::Message& message);
static const char* MessageToMethodName_(mojo::Message& message);
static constexpr uint32_t Version_ = 0;
static constexpr bool PassesAssociatedKinds_ = false;
static constexpr bool HasSyncMethods_ = false;
static constexpr bool HasUninterruptableMethods_ = false;
using Base_ = TextureVirtualDeviceInterfaceBase;
using Proxy_ = TextureVirtualDeviceProxy;
template <typename ImplRefTraits>
using Stub_ = TextureVirtualDeviceStub<ImplRefTraits>;
using RequestValidator_ = TextureVirtualDeviceRequestValidator;
using ResponseValidator_ = mojo::PassThroughFilter;
enum MethodMinVersions : uint32_t {
kOnNewMailboxHolderBufferHandleMinVersion = 0,
kOnFrameAccessHandlerReadyMinVersion = 0,
kOnFrameReadyInBufferMinVersion = 0,
kOnBufferRetiredMinVersion = 0,
};
// crbug.com/1340245 - this causes binary size bloat on Fuchsia, and we're OK
// with not having this data in traces there.
#if !BUILDFLAG(IS_FUCHSIA)
struct OnNewMailboxHolderBufferHandle_Sym {
NOINLINE static void IPCSymbol();
};
struct OnFrameAccessHandlerReady_Sym {
NOINLINE static void IPCSymbol();
};
struct OnFrameReadyInBuffer_Sym {
NOINLINE static void IPCSymbol();
};
struct OnBufferRetired_Sym {
NOINLINE static void IPCSymbol();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~TextureVirtualDevice() = default;
// @generated_from: video_capture.mojom.TextureVirtualDevice.OnNewMailboxHolderBufferHandle
virtual void OnNewMailboxHolderBufferHandle(int32_t buffer_id, ::media::mojom::blink::MailboxBufferHandleSetPtr mailbox_handles) = 0;
// @generated_from: video_capture.mojom.TextureVirtualDevice.OnFrameAccessHandlerReady
virtual void OnFrameAccessHandlerReady(::mojo::PendingRemote<::video_capture::mojom::blink::VideoFrameAccessHandler> frame_access_handler) = 0;
// @generated_from: video_capture.mojom.TextureVirtualDevice.OnFrameReadyInBuffer
virtual void OnFrameReadyInBuffer(int32_t buffer_id, ::media::mojom::blink::VideoFrameInfoPtr frame_info) = 0;
// @generated_from: video_capture.mojom.TextureVirtualDevice.OnBufferRetired
virtual void OnBufferRetired(int32_t buffer_id) = 0;
};
class GpuMemoryBufferVirtualDeviceProxy;
template <typename ImplRefTraits>
class GpuMemoryBufferVirtualDeviceStub;
class GpuMemoryBufferVirtualDeviceRequestValidator;
// @generated_from: video_capture.mojom.GpuMemoryBufferVirtualDevice
class GpuMemoryBufferVirtualDevice
: public GpuMemoryBufferVirtualDeviceInterfaceBase {
public:
static const char Name_[];
static std::pair<uint32_t, const void*> MessageToMethodInfo_(mojo::Message& message);
static const char* MessageToMethodName_(mojo::Message& message);
static constexpr uint32_t Version_ = 0;
static constexpr bool PassesAssociatedKinds_ = false;
static constexpr bool HasSyncMethods_ = false;
static constexpr bool HasUninterruptableMethods_ = false;
using Base_ = GpuMemoryBufferVirtualDeviceInterfaceBase;
using Proxy_ = GpuMemoryBufferVirtualDeviceProxy;
template <typename ImplRefTraits>
using Stub_ = GpuMemoryBufferVirtualDeviceStub<ImplRefTraits>;
using RequestValidator_ = GpuMemoryBufferVirtualDeviceRequestValidator;
using ResponseValidator_ = mojo::PassThroughFilter;
enum MethodMinVersions : uint32_t {
kOnNewGpuMemoryBufferHandleMinVersion = 0,
kOnFrameAccessHandlerReadyMinVersion = 0,
kOnFrameReadyInBufferMinVersion = 0,
kOnBufferRetiredMinVersion = 0,
};
// crbug.com/1340245 - this causes binary size bloat on Fuchsia, and we're OK
// with not having this data in traces there.
#if !BUILDFLAG(IS_FUCHSIA)
struct OnNewGpuMemoryBufferHandle_Sym {
NOINLINE static void IPCSymbol();
};
struct OnFrameAccessHandlerReady_Sym {
NOINLINE static void IPCSymbol();
};
struct OnFrameReadyInBuffer_Sym {
NOINLINE static void IPCSymbol();
};
struct OnBufferRetired_Sym {
NOINLINE static void IPCSymbol();
};
#endif // !BUILDFLAG(IS_FUCHSIA)
virtual ~GpuMemoryBufferVirtualDevice() = default;
// @generated_from: video_capture.mojom.GpuMemoryBufferVirtualDevice.OnNewGpuMemoryBufferHandle
virtual void OnNewGpuMemoryBufferHandle(int32_t buffer_id, ::gfx::GpuMemoryBufferHandle gmb_handle) = 0;
// @generated_from: video_capture.mojom.GpuMemoryBufferVirtualDevice.OnFrameAccessHandlerReady
virtual void OnFrameAccessHandlerReady(::mojo::PendingRemote<::video_capture::mojom::blink::VideoFrameAccessHandler> frame_access_handler) = 0;
// @generated_from: video_capture.mojom.GpuMemoryBufferVirtualDevice.OnFrameReadyInBuffer
virtual void OnFrameReadyInBuffer(int32_t buffer_id, ::media::mojom::blink::VideoFrameInfoPtr frame_info) = 0;
// @generated_from: video_capture.mojom.GpuMemoryBufferVirtualDevice.OnBufferRetired
virtual void OnBufferRetired(int32_t buffer_id) = 0;
};
// @generated_from: video_capture.mojom.SharedMemoryVirtualDevice
class SharedMemoryVirtualDeviceProxy
: public SharedMemoryVirtualDevice {
public:
using InterfaceType = SharedMemoryVirtualDevice;
explicit SharedMemoryVirtualDeviceProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: video_capture.mojom.SharedMemoryVirtualDevice.RequestFrameBuffer
void RequestFrameBuffer(const ::gfx::Size& dimension, ::media::VideoPixelFormat pixel_format, ::media::mojom::blink::PlaneStridesPtr strides, RequestFrameBufferCallback callback) final;
// @generated_from: video_capture.mojom.SharedMemoryVirtualDevice.OnFrameReadyInBuffer
void OnFrameReadyInBuffer(int32_t buffer_id, ::media::mojom::blink::VideoFrameInfoPtr frame_info) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: video_capture.mojom.TextureVirtualDevice
class TextureVirtualDeviceProxy
: public TextureVirtualDevice {
public:
using InterfaceType = TextureVirtualDevice;
explicit TextureVirtualDeviceProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: video_capture.mojom.TextureVirtualDevice.OnNewMailboxHolderBufferHandle
void OnNewMailboxHolderBufferHandle(int32_t buffer_id, ::media::mojom::blink::MailboxBufferHandleSetPtr mailbox_handles) final;
// @generated_from: video_capture.mojom.TextureVirtualDevice.OnFrameAccessHandlerReady
void OnFrameAccessHandlerReady(::mojo::PendingRemote<::video_capture::mojom::blink::VideoFrameAccessHandler> frame_access_handler) final;
// @generated_from: video_capture.mojom.TextureVirtualDevice.OnFrameReadyInBuffer
void OnFrameReadyInBuffer(int32_t buffer_id, ::media::mojom::blink::VideoFrameInfoPtr frame_info) final;
// @generated_from: video_capture.mojom.TextureVirtualDevice.OnBufferRetired
void OnBufferRetired(int32_t buffer_id) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
// @generated_from: video_capture.mojom.GpuMemoryBufferVirtualDevice
class GpuMemoryBufferVirtualDeviceProxy
: public GpuMemoryBufferVirtualDevice {
public:
using InterfaceType = GpuMemoryBufferVirtualDevice;
explicit GpuMemoryBufferVirtualDeviceProxy(mojo::MessageReceiverWithResponder* receiver);
// @generated_from: video_capture.mojom.GpuMemoryBufferVirtualDevice.OnNewGpuMemoryBufferHandle
void OnNewGpuMemoryBufferHandle(int32_t buffer_id, ::gfx::GpuMemoryBufferHandle gmb_handle) final;
// @generated_from: video_capture.mojom.GpuMemoryBufferVirtualDevice.OnFrameAccessHandlerReady
void OnFrameAccessHandlerReady(::mojo::PendingRemote<::video_capture::mojom::blink::VideoFrameAccessHandler> frame_access_handler) final;
// @generated_from: video_capture.mojom.GpuMemoryBufferVirtualDevice.OnFrameReadyInBuffer
void OnFrameReadyInBuffer(int32_t buffer_id, ::media::mojom::blink::VideoFrameInfoPtr frame_info) final;
// @generated_from: video_capture.mojom.GpuMemoryBufferVirtualDevice.OnBufferRetired
void OnBufferRetired(int32_t buffer_id) final;
private:
mojo::MessageReceiverWithResponder* receiver_;
};
class SharedMemoryVirtualDeviceStubDispatch {
public:
static bool Accept(SharedMemoryVirtualDevice* impl, mojo::Message* message);
static bool AcceptWithResponder(
SharedMemoryVirtualDevice* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<SharedMemoryVirtualDevice>>
class SharedMemoryVirtualDeviceStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
SharedMemoryVirtualDeviceStub() = default;
~SharedMemoryVirtualDeviceStub() override = default;
void set_sink(ImplPointerType sink) { sink_ = std::move(sink); }
ImplPointerType& sink() { return sink_; }
bool Accept(mojo::Message* message) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return SharedMemoryVirtualDeviceStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return SharedMemoryVirtualDeviceStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class TextureVirtualDeviceStubDispatch {
public:
static bool Accept(TextureVirtualDevice* impl, mojo::Message* message);
static bool AcceptWithResponder(
TextureVirtualDevice* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<TextureVirtualDevice>>
class TextureVirtualDeviceStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
TextureVirtualDeviceStub() = default;
~TextureVirtualDeviceStub() override = default;
void set_sink(ImplPointerType sink) { sink_ = std::move(sink); }
ImplPointerType& sink() { return sink_; }
bool Accept(mojo::Message* message) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return TextureVirtualDeviceStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return TextureVirtualDeviceStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class GpuMemoryBufferVirtualDeviceStubDispatch {
public:
static bool Accept(GpuMemoryBufferVirtualDevice* impl, mojo::Message* message);
static bool AcceptWithResponder(
GpuMemoryBufferVirtualDevice* impl,
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder);
};
template <typename ImplRefTraits =
mojo::RawPtrImplRefTraits<GpuMemoryBufferVirtualDevice>>
class GpuMemoryBufferVirtualDeviceStub
: public mojo::MessageReceiverWithResponderStatus {
public:
using ImplPointerType = typename ImplRefTraits::PointerType;
GpuMemoryBufferVirtualDeviceStub() = default;
~GpuMemoryBufferVirtualDeviceStub() override = default;
void set_sink(ImplPointerType sink) { sink_ = std::move(sink); }
ImplPointerType& sink() { return sink_; }
bool Accept(mojo::Message* message) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return GpuMemoryBufferVirtualDeviceStubDispatch::Accept(
ImplRefTraits::GetRawPointer(&sink_), message);
}
bool AcceptWithResponder(
mojo::Message* message,
std::unique_ptr<mojo::MessageReceiverWithStatus> responder) override {
if (ImplRefTraits::IsNull(sink_))
return false;
return GpuMemoryBufferVirtualDeviceStubDispatch::AcceptWithResponder(
ImplRefTraits::GetRawPointer(&sink_), message, std::move(responder));
}
private:
ImplPointerType sink_;
};
class SharedMemoryVirtualDeviceRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class TextureVirtualDeviceRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class GpuMemoryBufferVirtualDeviceRequestValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
class SharedMemoryVirtualDeviceResponseValidator : public mojo::MessageReceiver {
public:
bool Accept(mojo::Message* message) override;
};
} // namespace blink
} // namespace mojom
} // namespace video_capture
namespace mojo {
} // namespace mojo
#endif // SERVICES_VIDEO_CAPTURE_PUBLIC_MOJOM_VIRTUAL_DEVICE_MOJOM_BLINK_H_
/* Metadata comment
eyJtZXRhIjogW3siZW5kIjogMjM5NiwgImJlZ2luIjogMjM3MSwgImVkZ2UiOiAiJS9reXRoZS9l
ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw
dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui
OiAibW9qb20iLCAic2lnbmF0dXJlIjogInZpZGVvX2NhcHR1cmUubW9qb20uU2hhcmVkTWVtb3J5
VmlydHVhbERldmljZSJ9fSwgeyJlbmQiOiAzOTEwLCAiYmVnaW4iOiAzODkyLCAiZWRnZSI6ICIl
L2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUi
OiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJs
YW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAidmlkZW9fY2FwdHVyZS5tb2pvbS5TaGFy
ZWRNZW1vcnlWaXJ0dWFsRGV2aWNlLlJlcXVlc3RGcmFtZUJ1ZmZlciJ9fSwgeyJlbmQiOiA0MTk3
LCAiYmVnaW4iOiA0MTc3LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUi
OiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVz
b3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUi
OiAidmlkZW9fY2FwdHVyZS5tb2pvbS5TaGFyZWRNZW1vcnlWaXJ0dWFsRGV2aWNlLk9uRnJhbWVS
ZWFkeUluQnVmZmVyIn19LCB7ImVuZCI6IDQ1MTQsICJiZWdpbiI6IDQ0OTQsICJlZGdlIjogIiUv
a3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6
IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxh
bmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJ2aWRlb19jYXB0dXJlLm1vam9tLlRleHR1
cmVWaXJ0dWFsRGV2aWNlIn19LCB7ImVuZCI6IDYxODksICJiZWdpbiI6IDYxNTksICJlZGdlIjog
IiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFt
ZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwg
Imxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJ2aWRlb19jYXB0dXJlLm1vam9tLlRl
eHR1cmVWaXJ0dWFsRGV2aWNlLk9uTmV3TWFpbGJveEhvbGRlckJ1ZmZlckhhbmRsZSJ9fSwgeyJl
bmQiOiA2NDExLCAiYmVnaW4iOiA2Mzg2LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz
IiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1
bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJz
aWduYXR1cmUiOiAidmlkZW9fY2FwdHVyZS5tb2pvbS5UZXh0dXJlVmlydHVhbERldmljZS5PbkZy
YW1lQWNjZXNzSGFuZGxlclJlYWR5In19LCB7ImVuZCI6IDY2MzgsICJiZWdpbiI6IDY2MTgsICJl
ZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIs
ICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0v
c3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJ2aWRlb19jYXB0dXJlLm1v
am9tLlRleHR1cmVWaXJ0dWFsRGV2aWNlLk9uRnJhbWVSZWFkeUluQnVmZmVyIn19LCB7ImVuZCI6
IDY4MjcsICJiZWdpbiI6IDY4MTIsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAi
dHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdv
b2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25h
dHVyZSI6ICJ2aWRlb19jYXB0dXJlLm1vam9tLlRleHR1cmVWaXJ0dWFsRGV2aWNlLk9uQnVmZmVy
UmV0aXJlZCJ9fSwgeyJlbmQiOiA3MTMxLCAiYmVnaW4iOiA3MTAzLCAiZWRnZSI6ICIlL2t5dGhl
L2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNv
cnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFn
ZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAidmlkZW9fY2FwdHVyZS5tb2pvbS5HcHVNZW1vcnlC
dWZmZXJWaXJ0dWFsRGV2aWNlIn19LCB7ImVuZCI6IDg4NDYsICJiZWdpbiI6IDg4MjAsICJlZGdl
IjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2
bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3Jj
IiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJ2aWRlb19jYXB0dXJlLm1vam9t
LkdwdU1lbW9yeUJ1ZmZlclZpcnR1YWxEZXZpY2UuT25OZXdHcHVNZW1vcnlCdWZmZXJIYW5kbGUi
fX0sIHsiZW5kIjogOTA1MSwgImJlZ2luIjogOTAyNiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dl
bmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAi
Y2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9q
b20iLCAic2lnbmF0dXJlIjogInZpZGVvX2NhcHR1cmUubW9qb20uR3B1TWVtb3J5QnVmZmVyVmly
dHVhbERldmljZS5PbkZyYW1lQWNjZXNzSGFuZGxlclJlYWR5In19LCB7ImVuZCI6IDkyODYsICJi
ZWdpbiI6IDkyNjYsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJh
bmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj
ZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJ2
aWRlb19jYXB0dXJlLm1vam9tLkdwdU1lbW9yeUJ1ZmZlclZpcnR1YWxEZXZpY2UuT25GcmFtZVJl
YWR5SW5CdWZmZXIifX0sIHsiZW5kIjogOTQ4MywgImJlZ2luIjogOTQ2OCwgImVkZ2UiOiAiJS9r
eXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjog
eyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFu
Z3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogInZpZGVvX2NhcHR1cmUubW9qb20uR3B1TWVt
b3J5QnVmZmVyVmlydHVhbERldmljZS5PbkJ1ZmZlclJldGlyZWQifX0sIHsiZW5kIjogOTkyMiwg
ImJlZ2luIjogOTkwNCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjog
ImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291
cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjog
InZpZGVvX2NhcHR1cmUubW9qb20uU2hhcmVkTWVtb3J5VmlydHVhbERldmljZS5SZXF1ZXN0RnJh
bWVCdWZmZXIifX0sIHsiZW5kIjogMTAyMDIsICJiZWdpbiI6IDEwMTgyLCAiZWRnZSI6ICIlL2t5
dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7
ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5n
dWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAidmlkZW9fY2FwdHVyZS5tb2pvbS5TaGFyZWRN
ZW1vcnlWaXJ0dWFsRGV2aWNlLk9uRnJhbWVSZWFkeUluQnVmZmVyIn19LCB7ImVuZCI6IDEwNzUw
LCAiYmVnaW4iOiAxMDcyMCwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBl
IjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xl
c291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJl
IjogInZpZGVvX2NhcHR1cmUubW9qb20uVGV4dHVyZVZpcnR1YWxEZXZpY2UuT25OZXdNYWlsYm94
SG9sZGVyQnVmZmVySGFuZGxlIn19LCB7ImVuZCI6IDEwOTY1LCAiYmVnaW4iOiAxMDk0MCwgImVk
Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg
InZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9z
cmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogInZpZGVvX2NhcHR1cmUubW9q
b20uVGV4dHVyZVZpcnR1YWxEZXZpY2UuT25GcmFtZUFjY2Vzc0hhbmRsZXJSZWFkeSJ9fSwgeyJl
bmQiOiAxMTE4NSwgImJlZ2luIjogMTExNjUsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0
ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9t
aXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwg
InNpZ25hdHVyZSI6ICJ2aWRlb19jYXB0dXJlLm1vam9tLlRleHR1cmVWaXJ0dWFsRGV2aWNlLk9u
RnJhbWVSZWFkeUluQnVmZmVyIn19LCB7ImVuZCI6IDExMzY3LCAiYmVnaW4iOiAxMTM1MiwgImVk
Z2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg
InZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9z
cmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogInZpZGVvX2NhcHR1cmUubW9q
b20uVGV4dHVyZVZpcnR1YWxEZXZpY2UuT25CdWZmZXJSZXRpcmVkIn19LCB7ImVuZCI6IDExOTAy
LCAiYmVnaW4iOiAxMTg3NiwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBl
IjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xl
c291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJl
IjogInZpZGVvX2NhcHR1cmUubW9qb20uR3B1TWVtb3J5QnVmZmVyVmlydHVhbERldmljZS5Pbk5l
d0dwdU1lbW9yeUJ1ZmZlckhhbmRsZSJ9fSwgeyJlbmQiOiAxMjEwMCwgImJlZ2luIjogMTIwNzUs
ICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5l
cyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21p
dW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJ2aWRlb19jYXB0dXJl
Lm1vam9tLkdwdU1lbW9yeUJ1ZmZlclZpcnR1YWxEZXZpY2UuT25GcmFtZUFjY2Vzc0hhbmRsZXJS
ZWFkeSJ9fSwgeyJlbmQiOiAxMjMyOCwgImJlZ2luIjogMTIzMDgsICJlZGdlIjogIiUva3l0aGUv
ZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29y
cHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdl
IjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJ2aWRlb19jYXB0dXJlLm1vam9tLkdwdU1lbW9yeUJ1
ZmZlclZpcnR1YWxEZXZpY2UuT25GcmFtZVJlYWR5SW5CdWZmZXIifX0sIHsiZW5kIjogMTI1MTgs
ICJiZWdpbiI6IDEyNTAzLCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUi
OiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVz
b3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUi
OiAidmlkZW9fY2FwdHVyZS5tb2pvbS5HcHVNZW1vcnlCdWZmZXJWaXJ0dWFsRGV2aWNlLk9uQnVm
ZmVyUmV0aXJlZCJ9fV0sICJ0eXBlIjogImt5dGhlMCJ9
*/