[PATCH i-g-t] xe/oa: Add xe OA tests

Ashutosh Dixit ashutosh.dixit at intel.com
Thu Feb 15 01:23:30 UTC 2024


For CI

Signed-off-by: Ashutosh Dixit <ashutosh.dixit at intel.com>
---
 include/drm-uapi/xe_drm.h                   |  321 +-
 lib/intel_device_info.c                     |    1 +
 lib/meson.build                             |   94 +-
 lib/xe/oa-configs/README.md                 |  115 +
 lib/xe/oa-configs/codegen.py                |  444 ++
 lib/xe/oa-configs/guids.xml                 | 2763 ++++++++++
 lib/xe/oa-configs/mdapi-xml-convert.py      | 1221 +++++
 lib/xe/oa-configs/oa-equations-codegen.py   |  261 +
 lib/xe/oa-configs/oa-lnl.xml                | 2799 +++++++++++
 lib/xe/oa-configs/oa-metricset-codegen.py   |  304 ++
 lib/xe/oa-configs/oa-registers-codegen.py   |  118 +
 lib/xe/oa-configs/oa_guid_registry.py       |  131 +
 lib/xe/oa-configs/update-guids.py           |  223 +
 lib/xe/xe_oa.c                              |  706 +++
 lib/xe/xe_oa.h                              |  328 ++
 lib/xe/xe_query.c                           |   38 +
 lib/xe/xe_query.h                           |    5 +
 tests/intel-ci/xe-fast-feedback.testlist    |   43 +
 tests/intel/xe_oa.c                         | 4999 +++++++++++++++++++
 tests/intel/xe_query.c                      |   45 +
 tests/meson.build                           |    2 +
 tools/meson.build                           |    1 +
 tools/xe-perf/i915_perf_recorder_commands.h |   48 +
 tools/xe-perf/meson.build                   |    5 +
 tools/xe-perf/xe_perf_recorder.c            | 1230 +++++
 25 files changed, 16243 insertions(+), 2 deletions(-)
 create mode 100644 lib/xe/oa-configs/README.md
 create mode 100644 lib/xe/oa-configs/codegen.py
 create mode 100644 lib/xe/oa-configs/guids.xml
 create mode 100755 lib/xe/oa-configs/mdapi-xml-convert.py
 create mode 100644 lib/xe/oa-configs/oa-equations-codegen.py
 create mode 100644 lib/xe/oa-configs/oa-lnl.xml
 create mode 100644 lib/xe/oa-configs/oa-metricset-codegen.py
 create mode 100644 lib/xe/oa-configs/oa-registers-codegen.py
 create mode 100644 lib/xe/oa-configs/oa_guid_registry.py
 create mode 100755 lib/xe/oa-configs/update-guids.py
 create mode 100644 lib/xe/xe_oa.c
 create mode 100644 lib/xe/xe_oa.h
 create mode 100644 tests/intel/xe_oa.c
 create mode 100644 tools/xe-perf/i915_perf_recorder_commands.h
 create mode 100644 tools/xe-perf/meson.build
 create mode 100644 tools/xe-perf/xe_perf_recorder.c

diff --git a/include/drm-uapi/xe_drm.h b/include/drm-uapi/xe_drm.h
index bacdca787c21..42f0f3ab2ef9 100644
--- a/include/drm-uapi/xe_drm.h
+++ b/include/drm-uapi/xe_drm.h
@@ -100,6 +100,8 @@ extern "C" {
 #define DRM_XE_EXEC_QUEUE_GET_PROPERTY	0x08
 #define DRM_XE_EXEC			0x09
 #define DRM_XE_WAIT_USER_FENCE		0x0a
+#define DRM_XE_PERF			0x0e
+
 /* Must be kept compact -- no holes */
 
 #define DRM_IOCTL_XE_DEVICE_QUERY		DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_DEVICE_QUERY, struct drm_xe_device_query)
@@ -113,6 +115,7 @@ extern "C" {
 #define DRM_IOCTL_XE_EXEC_QUEUE_GET_PROPERTY	DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_EXEC_QUEUE_GET_PROPERTY, struct drm_xe_exec_queue_get_property)
 #define DRM_IOCTL_XE_EXEC			DRM_IOW(DRM_COMMAND_BASE + DRM_XE_EXEC, struct drm_xe_exec)
 #define DRM_IOCTL_XE_WAIT_USER_FENCE		DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_WAIT_USER_FENCE, struct drm_xe_wait_user_fence)
+#define DRM_IOCTL_XE_PERF			DRM_IOW(DRM_COMMAND_BASE + DRM_XE_PERF, struct drm_xe_perf_param)
 
 /**
  * DOC: Xe IOCTL Extensions
@@ -574,6 +577,36 @@ struct drm_xe_query_engine_cycles {
 	__u64 cpu_delta;
 };
 
+/**
+ * struct drm_xe_query_uc_fw_version - query a micro-controller firmware version
+ *
+ * Given a uc_type this will return the branch, major, minor and patch version
+ * of the micro-controller firmware.
+ */
+struct drm_xe_query_uc_fw_version {
+	/** @uc_type: The micro-controller type to query firmware version */
+#define XE_QUERY_UC_TYPE_GUC_SUBMISSION 0
+	__u16 uc_type;
+
+	/** @pad: MBZ */
+	__u16 pad;
+
+	/** @branch_ver: branch uc fw version */
+	__u32 branch_ver;
+	/** @major_ver: major uc fw version */
+	__u32 major_ver;
+	/** @minor_ver: minor uc fw version */
+	__u32 minor_ver;
+	/** @patch_ver: patch uc fw version */
+	__u32 patch_ver;
+
+	/** @pad2: MBZ */
+	__u32 pad2;
+
+	/** @reserved: Reserved */
+	__u64 reserved;
+};
+
 /**
  * struct drm_xe_device_query - Input of &DRM_IOCTL_XE_DEVICE_QUERY - main
  * structure to query device information
@@ -643,6 +676,8 @@ struct drm_xe_device_query {
 #define DRM_XE_DEVICE_QUERY_HWCONFIG		4
 #define DRM_XE_DEVICE_QUERY_GT_TOPOLOGY		5
 #define DRM_XE_DEVICE_QUERY_ENGINE_CYCLES	6
+#define DRM_XE_DEVICE_QUERY_UC_FW_VERSION	7
+#define DRM_XE_DEVICE_QUERY_OA_UNITS		8
 	/** @query: The type of data to query */
 	__u32 query;
 
@@ -832,7 +867,6 @@ struct drm_xe_vm_destroy {
  *
  * and the @flags can be:
  *  - %DRM_XE_VM_BIND_FLAG_READONLY
- *  - %DRM_XE_VM_BIND_FLAG_ASYNC
  *  - %DRM_XE_VM_BIND_FLAG_IMMEDIATE - Valid on a faulting VM only, do the
  *    MAP operation immediately rather than deferring the MAP to the page
  *    fault handler.
@@ -1340,6 +1374,291 @@ struct drm_xe_wait_user_fence {
 	__u64 reserved[2];
 };
 
+/** enum drm_xe_perf_type - Perf stream types */
+enum drm_xe_perf_type {
+	DRM_XE_PERF_TYPE_OA,
+	DRM_XE_PERF_TYPE_MAX,
+};
+
+/**
+ * enum drm_xe_perf_op - Perf stream ops
+ */
+enum drm_xe_perf_op {
+	/** @DRM_XE_PERF_OP_STREAM_OPEN: Open a perf counter stream */
+	DRM_XE_PERF_OP_STREAM_OPEN,
+
+	/** @DRM_XE_PERF_OP_ADD_CONFIG: Add perf stream config */
+	DRM_XE_PERF_OP_ADD_CONFIG,
+
+	/** @DRM_XE_PERF_OP_REMOVE_CONFIG: Remove perf stream config */
+	DRM_XE_PERF_OP_REMOVE_CONFIG,
+};
+
+/**
+ * struct drm_xe_perf_param - Perf layer param
+ *
+ * The perf layer enables multiplexing perf counter streams of multiple
+ * types. The actual params for a particular stream operation are supplied
+ * via the @param pointer (use __copy_from_user to get these params).
+ */
+struct drm_xe_perf_param {
+	/** @extensions: Pointer to the first extension struct, if any */
+	__u64 extensions;
+	/** @perf_type: Perf stream type, of enum @drm_xe_perf_type */
+	__u64 perf_type;
+	/** @perf_op: Perf op, of enum @drm_xe_perf_op */
+	__u64 perf_op;
+	/** @param: Pointer to actual stream params */
+	__u64 param;
+};
+
+/**
+ * enum drm_xe_perf_ioctls - Perf fd ioctl's
+ *
+ * Information exchanged between userspace and kernel for perf fd ioctl's
+ * is stream type specific
+ */
+enum drm_xe_perf_ioctls {
+	/** @DRM_XE_PERF_IOCTL_ENABLE: Enable data capture for a stream */
+	DRM_XE_PERF_IOCTL_ENABLE = _IO('i', 0x0),
+
+	/** @DRM_XE_PERF_IOCTL_DISABLE: Disable data capture for a stream */
+	DRM_XE_PERF_IOCTL_DISABLE = _IO('i', 0x1),
+
+	/** @DRM_XE_PERF_IOCTL_CONFIG: Change stream configuration */
+	DRM_XE_PERF_IOCTL_CONFIG = _IO('i', 0x2),
+
+	/** @DRM_XE_PERF_IOCTL_STATUS: Return stream status */
+	DRM_XE_PERF_IOCTL_STATUS = _IO('i', 0x3),
+
+	/** @DRM_XE_PERF_IOCTL_INFO: Return stream info */
+	DRM_XE_PERF_IOCTL_INFO = _IO('i', 0x4),
+};
+
+/** enum drm_xe_oa_unit_type - OA unit types */
+enum drm_xe_oa_unit_type {
+	/**
+	 * @DRM_XE_OA_UNIT_TYPE_OAG: OAG OA unit. OAR/OAC are considered
+	 * sub-types of OAG. For OAR/OAC, use OAG.
+	 */
+	DRM_XE_OA_UNIT_TYPE_OAG,
+
+	/** @DRM_XE_OA_UNIT_TYPE_OAM: OAM OA unit */
+	DRM_XE_OA_UNIT_TYPE_OAM,
+};
+
+/**
+ * struct drm_xe_oa_unit - describe OA unit
+ */
+struct drm_xe_oa_unit {
+	/** @oa_unit_id: OA unit ID */
+	__u32 oa_unit_id;
+
+	/** @oa_unit_type: OA unit type of @drm_xe_oa_unit_type */
+	__u32 oa_unit_type;
+
+	/** @capabilities: OA capabilities bit-mask */
+	__u64 capabilities;
+#define DRM_XE_OA_CAPS_BASE		(1 << 0)
+
+	/** @oa_timestamp_freq: OA timestamp freq */
+	__u64 oa_timestamp_freq;
+
+	/** @reserved: MBZ */
+	__u64 reserved[4];
+
+	/** @num_engines: number of engines in @eci array */
+	__u64 num_engines;
+
+	/** @eci: engines attached to this OA unit */
+	struct drm_xe_engine_class_instance eci[];
+};
+
+/**
+ * struct drm_xe_query_oa_units - describe OA units
+ *
+ * If a query is made with a struct drm_xe_device_query where .query
+ * is equal to DRM_XE_DEVICE_QUERY_OA_UNITS, then the reply uses struct
+ * drm_xe_query_oa_units in .data.
+ *
+ * OA unit properties for all OA units can be accessed using a code block
+ * such as the one below:
+ *
+ * .. code-block:: C
+ *
+ *	struct drm_xe_query_oa_units *qoa;
+ *	struct drm_xe_oa_unit *oau;
+ *	u8 *poau;
+ *
+ *	// malloc qoa and issue DRM_XE_DEVICE_QUERY_OA_UNITS. Then:
+ *	poau = (u8 *)&qoa->oa_units[0];
+ *	for (int i = 0; i < qoa->num_oa_units; i++) {
+ *		oau = (struct drm_xe_oa_unit *)poau;
+ *		// Access 'struct drm_xe_oa_unit' fields here
+ *		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
+ *	}
+ */
+struct drm_xe_query_oa_units {
+	/** @num_oa_units: number of OA units returned in oau[] */
+	__u32 num_oa_units;
+	/** @pad: MBZ */
+	__u32 pad;
+	/** @oa_units: OA units returned for this device */
+	struct drm_xe_oa_unit oa_units[];
+};
+
+/** enum drm_xe_oa_format_type - OA format types */
+enum drm_xe_oa_format_type {
+	DRM_XE_OA_FMT_TYPE_OAG,
+	DRM_XE_OA_FMT_TYPE_OAR,
+	DRM_XE_OA_FMT_TYPE_OAM,
+	DRM_XE_OA_FMT_TYPE_OAC,
+	DRM_XE_OA_FMT_TYPE_OAM_MPEC,
+	DRM_XE_OA_FMT_TYPE_PEC,
+};
+
+/**
+ * enum drm_xe_oa_property_id - OA stream property id's
+ *
+ * Stream params are specified as a chain of @drm_xe_ext_set_property
+ * struct's, with @property values from enum @drm_xe_oa_property_id and
+ * @drm_xe_user_extension base.name set to @DRM_XE_OA_EXTENSION_SET_PROPERTY.
+ * @param field in struct @drm_xe_perf_param points to the first
+ * @drm_xe_ext_set_property struct.
+ */
+enum drm_xe_oa_property_id {
+#define DRM_XE_OA_EXTENSION_SET_PROPERTY	0
+	/**
+	 * @DRM_XE_OA_PROPERTY_OA_UNIT_ID: ID of the OA unit on which to open
+	 * the OA stream, see @oa_unit_id in 'struct
+	 * drm_xe_query_oa_units'. Defaults to 0 if not provided.
+	 */
+	DRM_XE_OA_PROPERTY_OA_UNIT_ID = 1,
+
+	/**
+	 * @DRM_XE_OA_PROPERTY_SAMPLE_OA: A value of 1 requests inclusion of raw
+	 * OA unit reports or stream samples in a global buffer attached to an
+	 * OA unit.
+	 */
+	DRM_XE_OA_PROPERTY_SAMPLE_OA,
+
+	/**
+	 * @DRM_XE_OA_PROPERTY_OA_METRIC_SET: OA metrics defining contents of OA
+	 * reports, previously added via @DRM_XE_PERF_OP_ADD_CONFIG.
+	 */
+	DRM_XE_OA_PROPERTY_OA_METRIC_SET,
+
+	/** @DRM_XE_OA_PROPERTY_OA_FORMAT: Perf counter report format */
+	DRM_XE_OA_PROPERTY_OA_FORMAT,
+	/*
+	 * OA_FORMAT's are specified the same way as in PRM/Bspec 52198/60942,
+	 * in terms of the following quantities: a. enum @drm_xe_oa_format_type
+	 * b. Counter select c. Counter size and d. BC report. Also refer to the
+	 * oa_formats array in drivers/gpu/drm/xe/xe_oa.c.
+	 */
+#define DRM_XE_OA_FORMAT_MASK_FMT_TYPE		(0xff << 0)
+#define DRM_XE_OA_FORMAT_MASK_COUNTER_SEL	(0xff << 8)
+#define DRM_XE_OA_FORMAT_MASK_COUNTER_SIZE	(0xff << 16)
+#define DRM_XE_OA_FORMAT_MASK_BC_REPORT		(0xff << 24)
+
+	/**
+	 * @DRM_XE_OA_PROPERTY_OA_EXPONENT: Requests periodic OA unit sampling
+	 * with sampling frequency proportional to 2^(period_exponent + 1)
+	 */
+	DRM_XE_OA_PROPERTY_OA_EXPONENT,
+
+	/**
+	 * @DRM_XE_OA_PROPERTY_OA_DISABLED: A value of 1 will open the OA
+	 * stream in a DISABLED state (see @DRM_XE_PERF_IOCTL_ENABLE).
+	 */
+	DRM_XE_OA_PROPERTY_OA_DISABLED,
+
+	/**
+	 * @DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID: Open the stream for a specific
+	 * @exec_queue_id. Perf queries can be executed on this exec queue.
+	 */
+	DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID,
+
+	/**
+	 * @DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE: Optional engine instance to
+	 * pass along with @DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID or will default to 0.
+	 */
+	DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE,
+
+	/** @DRM_XE_OA_PROPERTY_MAX: non-ABI */
+	DRM_XE_OA_PROPERTY_MAX
+};
+
+/**
+ * struct drm_xe_oa_config - OA metric configuration
+ *
+ * Multiple OA configs can be added using @DRM_XE_PERF_OP_ADD_CONFIG. A
+ * particular config can be specified when opening an OA stream using
+ * @DRM_XE_OA_PROPERTY_OA_METRIC_SET property.
+ */
+struct drm_xe_oa_config {
+	/** @extensions: Pointer to the first extension struct, if any */
+	__u64 extensions;
+
+	/** @uuid: String formatted like "%\08x-%\04x-%\04x-%\04x-%\012x" */
+	char uuid[36];
+
+	/** @n_regs: Number of regs in @regs_ptr */
+	__u32 n_regs;
+
+	/**
+	 * @regs_ptr: Pointer to (register address, value) pairs for OA config
+	 * registers. Expected length of buffer is: (2 * sizeof(u32) * @n_regs).
+	 */
+	__u64 regs_ptr;
+};
+
+/**
+ * struct drm_xe_oa_stream_config - OA stream re-configuration with
+ * @DRM_XE_PERF_IOCTL_CONFIG perf fd ioctl
+ */
+struct drm_xe_oa_stream_config {
+	/** @extensions: Pointer to the first extension struct, if any */
+	__u64 extensions;
+
+	/**
+	 * @metric_set: metric set id, previously added using
+	 * @DRM_XE_PERF_OP_ADD_CONFIG
+	 */
+	__u64 metric_set;
+
+	/** @reserved: reserved for future use */
+	__u64 reserved[3];
+};
+
+/**
+ * struct drm_xe_oa_stream_status - OA stream status returned from
+ * @DRM_XE_PERF_IOCTL_STATUS perf fd ioctl
+ */
+struct drm_xe_oa_stream_status {
+	/** @oa_status: OA status register as specified in PRM/Bspec 46717/61226 */
+	__u64 oa_status;
+#define DRM_XE_OASTATUS_MMIO_TRG_Q_FULL		(1 << 6)
+#define DRM_XE_OASTATUS_COUNTER_OVERFLOW	(1 << 2)
+#define DRM_XE_OASTATUS_BUFFER_OVERFLOW		(1 << 1)
+#define DRM_XE_OASTATUS_REPORT_LOST		(1 << 0)
+
+	/** @reserved: reserved for future use */
+	__u64 reserved[3];
+};
+
+/**
+ * struct drm_xe_oa_stream_info - OA stream info returned from
+ * @DRM_XE_PERF_IOCTL_INFO perf fd ioctl
+ */
+struct drm_xe_oa_stream_info {
+	/** @oa_buf_size: OA buffer size */
+	__u64 oa_buf_size;
+
+	/** @reserved: reserved for future use */
+	__u64 reserved[3];
+};
+
 #if defined(__cplusplus)
 }
 #endif
diff --git a/lib/intel_device_info.c b/lib/intel_device_info.c
index 64b5246b7783..83ca0a5ed149 100644
--- a/lib/intel_device_info.c
+++ b/lib/intel_device_info.c
@@ -510,6 +510,7 @@ static const struct intel_device_info intel_lunarlake_info = {
 	.display_ver = 20,
 	.has_4tile = true,
 	.has_flatccs = true,
+	.has_oam = true,
 	.is_lunarlake = true,
 	.codename = "lunarlake",
 	.cmds_info = &xe2_cmds_info,
diff --git a/lib/meson.build b/lib/meson.build
index 6122861d8b7a..f7a4add58716 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -374,13 +374,105 @@ install_headers(
   subdir : 'i915-perf'
 )
 
+xe_oa_files = [
+  'igt_list.c',
+  'xe/xe_oa.c',
+]
+
+# If we don't copy lib/perf-configs/ and can link against
+# lib_igt_i915_perf, all we need here is something like:
+#
+# lib_igt_xe_oa = declare_dependency(
+#   link_with : lib_igt_i915_perf_build,
+#   include_directories : inc)
+#
+# install_headers(
+#   'igt_list.h',
+#   'intel_chipset.h',
+#   'xe/xe_oa.h',
+#   subdir : 'xe-oa'
+# )
+#
+# xe_oa_files = [
+#   'igt_list.c',
+#   'xe/xe_oa.c',
+# ]
+
+xe_oa_hardware = [
+  'lnl',
+]
+
+xe_xml_files = []
+foreach hw : xe_oa_hardware
+  xe_xml_files += files('xe/oa-configs/oa- at 0@.xml'.format(hw))
+endforeach
+
+xe_oa_files += custom_target(
+  'xe-oa-equations',
+  input : [ 'xe/oa-configs/oa-equations-codegen.py' ] + xe_xml_files,
+  output : [ 'xe_oa_equations.c', 'xe_oa_equations.h' ],
+  command : [
+    python3, '@INPUT0@',
+    '--code', '@OUTPUT0@',
+    '--header', '@OUTPUT1@',
+    xe_xml_files,
+  ])
+
+foreach hw : xe_oa_hardware
+  xe_oa_files += custom_target(
+    'xe-oa-registers- at 0@'.format(hw),
+    input : [ 'xe/oa-configs/oa-registers-codegen.py',
+              'xe/oa-configs/oa- at 0@.xml'.format(hw) ],
+    output : [ 'xe_oa_registers_ at 0@.c'.format(hw),
+               'xe_oa_registers_ at 0@.h'.format(hw), ],
+    command : [
+      python3, '@INPUT0@',
+      '--code', '@OUTPUT0@',
+      '--header', '@OUTPUT1@',
+      '--xml-file', '@INPUT1@'
+    ])
+  xe_oa_files += custom_target(
+    'xe-oa-metrics- at 0@'.format(hw),
+    input : [ 'xe/oa-configs/oa-metricset-codegen.py',
+              'xe/oa-configs/oa- at 0@.xml'.format(hw) ],
+    output : [ 'xe_oa_metrics_ at 0@.c'.format(hw),
+               'xe_oa_metrics_ at 0@.h'.format(hw), ],
+    command : [
+      python3, '@INPUT0@',
+      '--code', '@OUTPUT0@',
+      '--header', '@OUTPUT1@',
+      '--equations-include', 'xe_oa_equations.h',
+      '--registers-include', 'xe_oa_registers_ at 0@.h'.format(hw),
+      '--xml-file', '@INPUT1@',
+    ])
+endforeach
+
+lib_igt_xe_oa_build = shared_library(
+  'xe_oa',
+  xe_oa_files,
+  dependencies: [lib_igt_chipset,lib_igt,pciaccess],
+  include_directories : inc,
+  install: true,
+  soversion: '1.5')
+
+lib_igt_xe_oa = declare_dependency(
+  link_with : lib_igt_xe_oa_build,
+  include_directories : inc)
+
+install_headers(
+  'igt_list.h',
+  'intel_chipset.h',
+  'xe/xe_oa.h',
+  subdir : 'xe-oa'
+)
+
 pkgconf = configuration_data()
 
 pkgconf.set('prefix', get_option('prefix'))
 pkgconf.set('exec_prefix', '${prefix}')
 pkgconf.set('libdir', '${prefix}/@0@'.format(get_option('libdir')))
 pkgconf.set('includedir', '${prefix}/@0@'.format(get_option('includedir')))
-pkgconf.set('i915_perf_version', '1.5.1')
+pkgconf.set('xe_oa_version', '1.5.1')
 
 configure_file(
   input : 'i915-perf.pc.in',
diff --git a/lib/xe/oa-configs/README.md b/lib/xe/oa-configs/README.md
new file mode 100644
index 000000000000..513806b8e664
--- /dev/null
+++ b/lib/xe/oa-configs/README.md
@@ -0,0 +1,115 @@
+# About guids.xml
+
+This is the authoritive registry of unique identifers for different OA unit
+hardware configurations. Userspace can reliably use these identifiers to map a
+configuration to corresponding normalization equations and counter meta data.
+
+If a hardware configuration ever changes in a backwards incompatible way
+(changing the semantics and/or layout of the raw counters) then it must be
+given a new GUID.
+
+mdapi-xml-convert.py will match metric sets with a GUID from this file based on
+an md5 hash of the hardware register configuration and skip a metric set with a
+warning if no GUID could be found.
+
+All new metric sets need to be allocated a GUID here before
+mdapi-xml-convert.py will output anything for that
+metric set. This ensures we don't automatically import new metric sets without
+some explicit review that that's appropriate.
+
+A failure to find a GUID for an older metric set most likely implies that the
+register configuration was changed. It's possible that the change is benign
+(e.g. a comment change) and in that case the mdapi_config_hash for the
+corresponding metric set below can be updated.
+
+The update-guids.py script is the recommended way of managing updates to this
+file by generate a temporary file with proposed updates that you can compare
+with the current guids.xml.
+
+
+# update-guids.xml
+
+update-guids.py can help with:
+
+* Recognising new metrics from VPG's MDAPI XML files
+
+  *(NOTE: new guids.xml entries will initially be missing the
+  config_hash=MD5_HASH attribute until mdapi-xml-convert.py is used to generate
+  a corresponding oa-*.xml config description)*
+
+* Adding a config_hash=MD5_HASH attribute to recently added guids.xml entries
+  after mdapi-xml-convert.py has been run.
+
+* Allocating a GUID for a custom metric that doesn't have a counterpart in
+  VPG's MDAPI XML files.
+
+  For this case you can add a stub entry with only a name like `<guid
+  name="Foo">` to guids.xml and then running update-guids.py will output a
+  corresponding line with the addition of an id=UUID attribute.
+
+
+# How to sync the oa-\*.xml files with latest internal MDAPI XML files
+
+1. E.g. copy a new `MetricsXML_BDW.xml` to `mdapi/MetricsXML_BDW.xml`
+
+*Note: that the `mdapi-xml-convert.py` script will only convert configs that
+have a corresponding GUID entry within `guids.xml`. This check helps avoid
+unintentionally publishing early, work-in-progress/pre-production configs.*
+
+The `guids.xml` registry maps each, complex OA unit register configuration to a
+unique ID that userspace can recognise and trust the semantics of raw counters
+read using that configuration. (Just for reference, this is particularly
+valuable for tools that capture raw metrics for later, offline processing since
+the IDs effectively provide a compressed description of how to interpret the
+data by providing an index into a database of high-level counter descriptions.)
+
+The registry associates each ID with a hash of the HW register config as found in
+MDAPI XML files ('mdapi_config_hash') and also with a hash of the HW config as
+found in oa-\*.xml files ('config_hash'). The hashes used for lookups in the
+registry also help detect when the register config for a pre-existing metric set
+is updated. Note: these hashes are only for the low-level hardware configuration
+so updates to counter descriptions used by fronted UIs won't affect indexing
+here.
+
+There is a chicken and egg situation when updating or adding new entries to
+guids.xml since we can't hash the configs in oa-\*.xml until successfully running
+mdapi-xml-convert.py which depends on a guids.xml registry entry first. The
+update-guids.xml script will output registry entries without an oa-\*.xml config
+hash if not available and can be re-run after mdapi-xml-convert.py to add the
+missing hashes.
+
+2. Now run:
+```
+./update-guids.py --guids=guids.xml mdapi/MetricsXML_BDW.xml > guids.xml2
+```
+*(note the script expects to find oa-\*.xml files in the current directory)*
+
+Diff `guids.xml` and `guilds.xml2` (easiest with a side-by-side diff editor) and
+review the registry changes. *Note: many lines will have a warning like `"Not
+found in MDAPI XML file[s]..."` if `update-guids.xml` wasn't given all known
+MDAPI XML files but in this case they can be ignored for all non-BDW configs.*
+
+*Note: for any config that is already supported upstream in the xe_oa driver
+we need to be careful if the hash for a metric set changes in case the semantics
+for any raw counters were changed. The semantics of raw counters associated with
+a given GUID form part of the drm xe_oa uapi contract and must remain
+backwards compatible.*
+
+If the diff shows any `mdapi_config_hash` changes for pre-existing (especially
+upstream) configs you should review the MDAPI XML changes for the metric set and
+verify the change just relates to a bug fix. If more substantial changes were
+made which could mean we need to treat it as a new config. Handling the later
+case is left as an exercise to the reader, since it hasn't happened so far :-D.
+Assuming all the changes and new entries look good they can be copied into
+`guids.xml`, removing any trailing comment left by `update-guids.py`.
+
+3. Now run mdapi-xml-convert.py:
+```
+./mdapi-xml-convert.py --guids=guids.xml mdapi/MetricsXML_BDW.xml > oa-bdw.xml
+```
+
+4. We can now update new entries in guids.xml with a 'config_hash':
+```
+./update-guids.py --guids=guids.xml mdapi/MetricsXML_BDW.xml > guids.xml2
+```
+*(and again diff, check the changes and copy across)*
diff --git a/lib/xe/oa-configs/codegen.py b/lib/xe/oa-configs/codegen.py
new file mode 100644
index 000000000000..020e76ef4b0f
--- /dev/null
+++ b/lib/xe/oa-configs/codegen.py
@@ -0,0 +1,444 @@
+import re
+import xml.etree.ElementTree as et
+
+class Codegen:
+
+    _file = None
+    _indent = 0
+
+    endl="\n"
+    use_tabs = False
+
+    def __init__(self, filename = None):
+        if filename != None:
+            self._file = open(filename, 'w')
+
+    def __call__(self, *args):
+        if self._file:
+            code = ' '.join(map(str, args))
+            for line in code.splitlines():
+                indent = ''.rjust(self._indent)
+
+                if self.use_tabs:
+                    indent = indent.replace("        ", "\t")
+
+                text = indent + line
+                self._file.write(text.rstrip() + self.endl)
+
+    #without indenting or new lines
+    def frag(self, *args):
+        code = ' '.join(map(str, args))
+        self._file.write(code)
+
+    def indent(self, n):
+        self._indent = self._indent + n
+    def outdent(self, n):
+        self._indent = self._indent - n
+
+
+class Counter:
+    def __init__(self, set, xml):
+        self.xml = xml
+        self.set = set
+        self.read_hash = None
+        self.max_hash = None
+
+        self.read_sym = "{0}__{1}__{2}__read".format(self.set.gen.chipset,
+                                                     self.set.underscore_name,
+                                                     self.xml.get('underscore_name'))
+
+        max_eq = self.xml.get('max_equation')
+        if not max_eq:
+            self.max_sym = "NULL /* undefined */"
+        elif max_eq == "100":
+            self.max_sym = "percentage_max_callback_" + self.xml.get('data_type')
+        else:
+            self.max_sym = "{0}__{1}__{2}__max".format(self.set.gen.chipset,
+                                                       self.set.underscore_name,
+                                                       self.xml.get('underscore_name'))
+
+    def get(self, prop):
+        return self.xml.get(prop)
+
+    def compute_hashes(self):
+        if self.read_hash is not None:
+            return
+
+        def replace_func(token):
+            if token[0] != "$":
+                return token
+            if token not in self.set.counter_vars:
+                return token
+            self.set.counter_vars[token].compute_hashes()
+            return self.set.counter_vars[token].read_hash
+
+        read_eq = self.xml.get('equation')
+        self.read_hash = ' '.join(map(replace_func, read_eq.split()))
+
+        max_eq = self.xml.get('max_equation')
+        if max_eq:
+            self.max_hash = ' '.join(map(replace_func, max_eq.split()))
+
+class Set:
+    def __init__(self, gen, xml):
+        self.gen = gen
+        self.xml = xml
+
+        self.counter_vars = {}
+        self.max_funcs = {}
+        self.read_funcs = {}
+        self.counter_hashes = {}
+
+        self.counters = []
+        xml_counters = self.xml.findall("counter")
+        for xml_counter in xml_counters:
+            counter = Counter(self, xml_counter)
+            self.counters.append(counter)
+            self.counter_vars["$" + counter.get('symbol_name')] = counter
+            self.max_funcs["$" + counter.get('symbol_name')] = counter.max_sym
+            self.read_funcs["$" + counter.get('symbol_name')] = counter.read_sym
+
+        for counter in self.counters:
+            counter.compute_hashes()
+
+    @property
+    def hw_config_guid(self):
+        return self.xml.get('hw_config_guid')
+
+    @property
+    def name(self):
+        return self.xml.get('name')
+
+    @property
+    def symbol_name(self):
+        return self.xml.get('symbol_name')
+
+    @property
+    def underscore_name(self):
+        return self.xml.get('underscore_name')
+
+    @property
+    def oa_format(self):
+        return self.xml.get('oa_format')
+
+    def findall(self, path):
+        return self.xml.findall(path)
+
+    def find(self, path):
+        return self.xml.find(path)
+
+
+hw_vars_mapping = {
+    "$EuCoresTotalCount": { 'c': "perf->devinfo.n_eus", 'desc': "The total number of execution units" },
+    "$EuSlicesTotalCount": { 'c': "perf->devinfo.n_eu_slices" },
+    "$EuSubslicesTotalCount": { 'c': "perf->devinfo.n_eu_sub_slices" },
+    "$EuDualSubslicesTotalCount": { 'c': "perf->devinfo.n_eu_sub_slices" },
+    "$EuDualSubslicesSlice0123Count": { 'c': "perf->devinfo.n_eu_sub_slices_half_slices" },
+    "$EuThreadsCount": { 'c': "perf->devinfo.eu_threads_count" },
+
+    "$VectorEngineTotalCount": { 'c': "perf->devinfo.n_eus", 'desc': "The total number of execution units" },
+    "$VectorEnginePerXeCoreCount": { 'c': "perf->devinfo.n_eu_sub_slices" },
+    "$VectorEngineThreadsCount": { 'c': "perf->devinfo.eu_threads_count" },
+
+    "$SliceMask": { 'c': "perf->devinfo.slice_mask" },
+    "$SliceTotalCount": { 'c': "perf->devinfo.n_eu_slices" },
+
+    "$SubsliceMask": { 'c': "perf->devinfo.subslice_mask" },
+    "$DualSubsliceMask": { 'c': "perf->devinfo.subslice_mask" },
+
+    "$GtSliceMask": { 'c': "perf->devinfo.slice_mask" },
+    "$GtSubsliceMask": { 'c': "perf->devinfo.subslice_mask" },
+    "$GtDualSubsliceMask": { 'c': "perf->devinfo.subslice_mask" },
+
+    "$GtXeCoreMask": { 'c': "perf->devinfo.slice_mask" },
+    "$XeCoreMask": { 'c': "perf->devinfo.slice_mask" },
+    "$XeCoreTotalCount": { 'c': 'perf->devinfo.n_eu_sub_slices' },
+
+    "$GpuTimestampFrequency": { 'c': "perf->devinfo.timestamp_frequency" },
+    "$GpuMinFrequency": { 'c': "perf->devinfo.gt_min_freq" },
+    "$GpuMaxFrequency": { 'c': "perf->devinfo.gt_max_freq" },
+    "$SkuRevisionId": { 'c': "perf->devinfo.revision" },
+    "$QueryMode": { 'c': "perf->devinfo.query_mode" },
+}
+
+def is_hw_var(name):
+    m = re.search('\$GtSlice([0-9]+)XeCore([0-9]+)$', name)
+    if m:
+        return True
+    m = re.search('\$GtSlice([0-9]+)$', name)
+    if m:
+        return True
+    m = re.search('\$GtSlice([0-9]+)DualSubslice([0-9]+)$', name)
+    if m:
+        return True
+    return name in hw_vars_mapping
+
+class Gen:
+    def __init__(self, filename, c):
+        self.filename = filename
+        self.xml = et.parse(self.filename)
+        self.chipset = self.xml.find('.//set').get('chipset').lower()
+        self.sets = []
+        self.c = c
+
+        for xml_set in self.xml.findall(".//set"):
+            self.sets.append(Set(self, xml_set))
+
+        self.ops = {}
+        #                     (n operands, emitter)
+        self.ops["FADD"]     = (2, self.emit_fadd)
+        self.ops["FDIV"]     = (2, self.emit_fdiv)
+        self.ops["FMAX"]     = (2, self.emit_fmax)
+        self.ops["FMUL"]     = (2, self.emit_fmul)
+        self.ops["FSUB"]     = (2, self.emit_fsub)
+        self.ops["READ"]     = (2, self.emit_read)
+        self.ops["UADD"]     = (2, self.emit_uadd)
+        self.ops["UDIV"]     = (2, self.emit_udiv)
+        self.ops["UMUL"]     = (2, self.emit_umul)
+        self.ops["USUB"]     = (2, self.emit_usub)
+        self.ops["UMIN"]     = (2, self.emit_umin)
+        self.ops["<<"]       = (2, self.emit_lshft)
+        self.ops[">>"]       = (2, self.emit_rshft)
+        self.ops["AND"]      = (2, self.emit_and)
+        self.ops["UGTE"]     = (2, self.emit_ugte)
+        self.ops["UGT"]      = (2, self.emit_ugt)
+        self.ops["ULTE"]     = (2, self.emit_ulte)
+        self.ops["ULT"]      = (2, self.emit_ult)
+
+        self.exp_ops = {}
+        #                 (n operands, splicer)
+        self.exp_ops["AND"]  = (2, self.splice_bitwise_and)
+        self.exp_ops["UGTE"] = (2, self.splice_ugte)
+        self.exp_ops["UGT"]  = (2, self.splice_ugt)
+        self.exp_ops["ULTE"] = (2, self.splice_ulte)
+        self.exp_ops["ULT"]  = (2, self.splice_ult)
+        self.exp_ops["&&"]   = (2, self.splice_logical_and)
+        self.exp_ops["<<"]   = (2, self.splice_lshft)
+        self.exp_ops[">>"]   = (2, self.splice_rshft)
+        self.exp_ops["UMUL"] = (2, self.splice_uml)
+
+        self.hw_vars = hw_vars_mapping
+
+    def emit_fadd(self, tmp_id, args):
+        self.c("double tmp{0} = {1} + {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    # Be careful to check for divide by zero...
+    def emit_fdiv(self, tmp_id, args):
+        self.c("double tmp{0} = {1};".format(tmp_id, args[1]))
+        self.c("double tmp{0} = {1};".format(tmp_id + 1, args[0]))
+        self.c("double tmp{0} = tmp{1} ? tmp{2} / tmp{1} : 0;".format(tmp_id + 2, tmp_id + 1, tmp_id))
+        return tmp_id + 3
+
+    def emit_fmax(self, tmp_id, args):
+        self.c("double tmp{0} = {1};".format(tmp_id, args[1]))
+        self.c("double tmp{0} = {1};".format(tmp_id + 1, args[0]))
+        self.c("double tmp{0} = MAX(tmp{1}, tmp{2});".format(tmp_id + 2, tmp_id, tmp_id + 1))
+        return tmp_id + 3
+
+    def emit_fmul(self, tmp_id, args):
+        self.c("double tmp{0} = {1} * {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_fsub(self, tmp_id, args):
+        self.c("double tmp{0} = {1} - {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_read(self, tmp_id, args):
+        type = args[1].lower()
+        self.c("uint64_t tmp{0} = accumulator[metric_set->{1}_offset + {2}];".format(tmp_id, type, args[0]))
+        return tmp_id + 1
+
+    def emit_uadd(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} + {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    # Be careful to check for divide by zero...
+    def emit_udiv(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1};".format(tmp_id, args[1]))
+        self.c("uint64_t tmp{0} = {1};".format(tmp_id + 1, args[0]))
+        self.c("uint64_t tmp{0} = tmp{1} ? tmp{2} / tmp{1} : 0;".format(tmp_id + 2, tmp_id + 1, tmp_id))
+        return tmp_id + 3
+
+    def emit_umul(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} * {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_usub(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} - {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_umin(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = MIN({1}, {2});".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_lshft(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} << {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_rshft(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} >> {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_and(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} & {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_ulte(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} <= {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_ult(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} < {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_ugte(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} >= {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def emit_ugt(self, tmp_id, args):
+        self.c("uint64_t tmp{0} = {1} > {2};".format(tmp_id, args[1], args[0]))
+        return tmp_id + 1
+
+    def brkt(self, subexp):
+        if " " in subexp:
+            return "(" + subexp + ")"
+        else:
+            return subexp
+
+    def splice_bitwise_and(self, args):
+        return self.brkt(args[1]) + " & " + self.brkt(args[0])
+
+    def splice_logical_and(self, args):
+        return self.brkt(args[1]) + " && " + self.brkt(args[0])
+
+    def splice_ulte(self, args):
+        return self.brkt(args[1]) + " <= " + self.brkt(args[0])
+
+    def splice_ult(self, args):
+        return self.brkt(args[1]) + " < " + self.brkt(args[0])
+
+    def splice_ugte(self, args):
+        return self.brkt(args[1]) + " >= " + self.brkt(args[0])
+
+    def splice_ugt(self, args):
+        return self.brkt(args[1]) + " > " + self.brkt(args[0])
+
+    def splice_lshft(self, args):
+        return '(' + self.brkt(args[1]) + " << " + self.brkt(args[0]) + ')'
+
+    def splice_rshft(self, args):
+        return '(' + self.brkt(args[1]) + " >> " + self.brkt(args[0]) + ')'
+
+    def splice_uml(self, args):
+        return self.brkt(args[1]) + " * " + self.brkt(args[0])
+
+    def resolve_variable(self, name, set):
+        if name in self.hw_vars:
+            return self.hw_vars[name]['c']
+        if name in set.counter_vars:
+            return set.read_funcs[name] + "(perf, metric_set, accumulator)"
+        m = re.search('\$GtSlice([0-9]+)$', name)
+        if m:
+            return 'intel_perf_devinfo_slice_available(&perf->devinfo, {0})'.format(m.group(1))
+        m = re.search('\$GtSlice([0-9]+)DualSubslice([0-9]+)$', name)
+        if m:
+            return 'intel_perf_devinfo_subslice_available(&perf->devinfo, {0}, {1})'.format(m.group(1), m.group(2))
+        m = re.search('\$GtSlice([0-9]+)XeCore([0-9]+)$', name)
+        if m:
+            return 'intel_perf_devinfo_subslice_available(&perf->devinfo, {0}, {1})'.format(m.group(1), m.group(2))
+        return None
+
+    def output_rpn_equation_code(self, set, counter, equation):
+        self.c("/* RPN equation: " + equation + " */")
+        tokens = equation.split()
+        stack = []
+        tmp_id = 0
+        tmp = None
+
+        for token in tokens:
+            stack.append(token)
+            while stack and stack[-1] in self.ops:
+                op = stack.pop()
+                argc, callback = self.ops[op]
+                args = []
+                for i in range(0, argc):
+                    operand = stack.pop()
+                    if operand[0] == "$":
+                        resolved_variable = self.resolve_variable(operand, set)
+                        if resolved_variable == None:
+                            raise Exception("Failed to resolve variable " + operand + " in equation " + equation + " for " + set.name + " :: " + counter.get('name'));
+                        operand = resolved_variable
+                    args.append(operand)
+
+                tmp_id = callback(tmp_id, args)
+
+                tmp = "tmp{0}".format(tmp_id - 1)
+                stack.append(tmp)
+
+        if len(stack) != 1:
+            raise Exception("Spurious empty rpn code for " + set.name + " :: " +
+                    counter.get('name') + ".\nThis is probably due to some unhandled RPN function, in the equation \"" +
+                    equation + "\"")
+
+        value = stack[-1]
+
+        if value[0] == "$":
+            resolved_variable = self.resolve_variable(value, set)
+            if resolved_variable == None:
+                raise Exception("Failed to resolve variable " + value + " in expression " + expression + " for " + set.name + " :: " + counter_name)
+            value = resolved_variable
+
+        self.c("\nreturn " + value + ";")
+
+    def splice_rpn_expression(self, set, counter_name, expression):
+        tokens = expression.split()
+        stack = []
+
+        for token in tokens:
+            stack.append(token)
+            while stack and stack[-1] in self.exp_ops:
+                op = stack.pop()
+                argc, callback = self.exp_ops[op]
+                args = []
+                for i in range(0, argc):
+                    operand = stack.pop()
+                    if operand[0] == "$":
+                        resolved_variable = self.resolve_variable(operand, set)
+                        if resolved_variable == None:
+                            raise Exception("Failed to resolve variable " + operand + " in expression " + expression + " for " + set.name + " :: " + counter_name)
+                        operand = resolved_variable
+                    args.append(operand)
+
+                subexp = callback(args)
+
+                stack.append(subexp)
+
+        if len(stack) != 1:
+            raise Exception("Spurious empty rpn expression for " + set.name + " :: " +
+                    counter_name + ".\nThis is probably due to some unhandled RPN operation, in the expression \"" +
+                    expression + "\"")
+
+        value = stack[-1]
+
+        if value[0] == "$":
+            resolved_variable = self.resolve_variable(value, set)
+            if resolved_variable == None:
+                raise Exception("Failed to resolve variable " + value + " in expression " + expression + " for " + set.name + " :: " + counter_name)
+            value = resolved_variable
+
+        return value
+
+    def output_availability(self, set, availability, counter_name):
+        expression = self.splice_rpn_expression(set, counter_name, availability)
+        lines = expression.split(' && ')
+        n_lines = len(lines)
+        if n_lines == 1:
+            self.c("if (" + lines[0] + ") {")
+        else:
+            self.c("if (" + lines[0] + " &&")
+            self.c.indent(4)
+            for i in range(1, (n_lines - 1)):
+                self.c(lines[i] + " &&")
+            self.c(lines[(n_lines - 1)] + ") {")
+            self.c.outdent(4)
diff --git a/lib/xe/oa-configs/guids.xml b/lib/xe/oa-configs/guids.xml
new file mode 100644
index 000000000000..27330edd3df7
--- /dev/null
+++ b/lib/xe/oa-configs/guids.xml
@@ -0,0 +1,2763 @@
+<!--
+    This is the authoritive registry of unique identifers for different OA unit
+    hardware configurations. Userspace can reliably use these identifiers to
+    map a configuration to corresponding normalization equations and counter
+    meta data.
+
+    Most maintenance is done using the update-guids.py helper script to generate
+    a temporary guids.xml.update file which should then be manually compared with
+    a visual diff tool to cherry pick the final changes into guids.xml.
+
+    See README.md for more details.
+-->
+<guids>
+    <guid id="2f01b241-7014-42a7-9eb6-a925cad3daba" chipset="all" name="MDAPI" />
+    <guid config_hash="b96ab550dbb61fa1d1a98b2d6f938e9c" mdapi_config_hash="c675607e7d1b0083729e4b1621fd25f8" id="a490e9d2-55b3-4db0-8dab-53011032c5f3" chipset="hsw" name="RenderBasic" />
+    <guid config_hash="3b656e19962cf1990cfb253a59946266" mdapi_config_hash="09199618ca154304fd42ca5ee19187f4" id="b344c8cb-a291-4cbf-aa9c-b40213bfc96f" chipset="hsw" name="ComputeBasic" />
+    <guid config_hash="bb978ccd4f1eca6d7806f304a42fb10f" mdapi_config_hash="77524b565825e61259436f526848c1e1" id="480f9795-cf6a-4204-a9e3-cd7015515f8d" chipset="hsw" name="ComputeExtended" />
+    <guid config_hash="890e4b72a09b71cb9c4522fbd8f7e45a" mdapi_config_hash="28d4ec8839e660bac90c3fbfa815ce45" id="399d3001-97d6-4240-b065-4fb843138e17" chipset="hsw" name="MemoryReads" />
+    <guid config_hash="904374d80088ec4941ab3c1dbed1aac0" mdapi_config_hash="6a8cbc42da4822a17d3de385d6811c1a" id="f3c1ff4b-d0da-4ffa-8780-2c6b98f3f2d5" chipset="hsw" name="MemoryWrites" />
+    <guid config_hash="35111d939881fd8e2367f89f86b43d19" mdapi_config_hash="4f8c749ea23ece9349cf690908159b6b" id="e111cda4-19c3-41ee-b326-f99ac44ebf78" chipset="hsw" name="SamplerBalance" />
+    <guid mdapi_config_hash="3c2ee9a97141f36bc13828aeda30e477" id="ce81ddfb-573f-4100-8b9a-8dc93a5e5c8c" chipset="hsw" name="RenderBalance" />
+    <guid mdapi_config_hash="7ffc6e4d3d2284ea76e9390b0fd8aaf1" id="2fbbb85b-0f33-4aeb-9d92-35256de2662f" chipset="hsw" name="MemoryReadsOnWritePort" />
+    <guid mdapi_config_hash="ff6824b311096312105547bbe5e65758" id="a1476140-3af3-4556-b5fe-501e2df8b963" chipset="hsw" name="StencilPmaHold" />
+    <guid mdapi_config_hash="414afdc7b2570bbbe07406ec675f3040" id="b3d5350e-32ba-4c72-96c2-0a504e86eda3" chipset="hsw" name="MediaMemoryReads" />
+    <guid mdapi_config_hash="cf80117b63d376e87735b73e8f5ebc5b" id="69b42918-c915-439a-9e4b-a82fe3c9e1a3" chipset="hsw" name="MediaMemoryWrites" />
+    <guid mdapi_config_hash="3566f20e9e3707cb9aefccff3ead7572" id="18024740-aa68-4d25-877e-082c9fdcb895" chipset="hsw" name="MediaVmePipe" />
+    <guid config_hash="240f9cd7a6699b44ff0bf22b24449ac0" mdapi_config_hash="961180e14745136637cfd0253c6c0a63" id="d6de6f55-e526-4f79-a6a6-d7315c09044e" chipset="bdw" name="TestOa" />
+    <guid config_hash="9c4955c220cbcc5f9ff3ce6e7af64cf5" mdapi_config_hash="7f7918e87f574f62cc4e8d37f660abc5" id="b541bd57-0e0f-4154-b4c0-5858010a2bf7" chipset="bdw" name="RenderBasic" />
+    <guid config_hash="35d980685774e3631a7e5eb4d23a0013" mdapi_config_hash="ea406bf4dc4e4edd5e29cce12bef1778" id="35fbc9b2-a891-40a6-a38d-022bb7057552" chipset="bdw" name="ComputeBasic" />
+    <guid config_hash="d17b0801f998c4b119c63b0467e8f9b5" mdapi_config_hash="fbde7829568089b44b53a1eefbad9b0e" id="8fb61ba2-2fbb-454c-a136-2dec5a8a595e" chipset="bdw" name="ComputeExtra" />
+    <guid config_hash="1bb1be4885c0568bf0d3bd5df9fe4a7a" mdapi_config_hash="f0c3b043834e63d21ba6be573df02e32" id="233d0544-fff7-4281-8291-e02f222aff72" chipset="bdw" name="RenderPipeProfile" />
+    <guid config_hash="9147786065e1562d254a1dc82c14b4f9" mdapi_config_hash="fa121c59e98aa4f860c797bfab097cd7" id="2b255d48-2117-4fef-a8f7-f151e1d25a2c" chipset="bdw" name="MemoryReads" />
+    <guid config_hash="13cadf5e130b16bf6cf777e34ff54fcf" mdapi_config_hash="7e324f6f7cb980832735ada1e12f7905" id="f7fd3220-b466-4a4d-9f98-b0caf3f2394c" chipset="bdw" name="MemoryWrites" />
+    <guid config_hash="552b53f8d91428cec6eab6bff62ae8af" mdapi_config_hash="6ba093cf3feb68f521e579169ad689cf" id="e99ccaca-821c-4df9-97a7-96bdb7204e43" chipset="bdw" name="ComputeExtended" />
+    <guid config_hash="2cf68f22eadf4cb430a7e2a76fab3632" mdapi_config_hash="e9913c0dd30d6ccab98c5dec58dc7162" id="27a364dc-8225-4ecb-b607-d6f1925598d9" chipset="bdw" name="ComputeL3Cache" />
+    <guid config_hash="15d5387219cda641a8964b9edeb86b6d" mdapi_config_hash="fc357f19e2a77465c3232693f3bb1444" id="857fc630-2f09-4804-85f1-084adfadd5ab" chipset="bdw" name="DataPortReadsCoalescing" />
+    <guid config_hash="95a2d953682c60ee0213c41892067b94" mdapi_config_hash="be3980a5f0e6057e641b884fc56b07ff" id="343ebc99-4a55-414c-8c17-d8e259cf5e20" chipset="bdw" name="DataPortWritesCoalescing" />
+    <guid config_hash="9004a46b9728e0f12232ce8b151d3224" mdapi_config_hash="715fe2c431914b6b369970c0b897f7e2" id="e1743ca0-7fc8-410b-a066-de7bbb9280b7" chipset="bdw" name="VMEPipe" />
+    <guid config_hash="bb8d49db81e7bd822188ed5a958b4863" mdapi_config_hash="f94fd6ba5bfa83bb965705f1c69f1d37" id="78490af2-10fa-430b-ae3c-94ec04d5214e" chipset="bdw" name="HDCAndSF" />
+    <guid config_hash="19924ef1563f10e386755b531d44a3fb" mdapi_config_hash="a5589479b360f6d4f5c8f70fe78b0e1d" id="c0abdd97-3b13-4cad-814c-bd178804e02c" chipset="bdw" name="L3_1" />
+    <guid config_hash="41217f1f74d9e181726736ab9af57c32" mdapi_config_hash="0fc152bfbb920f90b16ed0445afe9e48" id="ad665281-a7cf-483a-bd10-0e07c43f61c7" chipset="bdw" name="L3_2" />
+    <guid config_hash="f17717dae4348688c670212b507d451a" mdapi_config_hash="2afc3cdd7ffbb021fc0ae99681b138ab" id="930a15aa-4300-4fce-a9ba-edb0b9e880be" chipset="bdw" name="L3_3" />
+    <guid config_hash="71232cf595afad2b53666f6c233447e8" mdapi_config_hash="032c9ab7c2c6d056da82e4ee1b159c18" id="d7793b26-b5e3-4f0f-ad78-7ebc9d0b4c7d" chipset="bdw" name="L3_4" />
+    <guid config_hash="b8a474b7965b6d9ec62641732d0d479b" mdapi_config_hash="b2454e1eef8d38d83cb95ba2b3d85431" id="da0f7875-1143-4d73-a39c-9128a951c46a" chipset="bdw" name="RasterizerAndPixelBackend" />
+    <guid config_hash="f8f05a9f4ce4bd928f1343180584f7de" mdapi_config_hash="6fb026e2926fbd3a507e55a7bf0a3687" id="52c186e4-39e3-4534-87cd-41bd47763df9" chipset="bdw" name="Sampler_1" />
+    <guid config_hash="30ee983d5ba223ad552acc3debc13c00" mdapi_config_hash="e38e63da0d875958bc88a9deb8d529ba" id="edcb8c31-764d-451a-9ecd-c9c89fb54f8d" chipset="bdw" name="Sampler_2" />
+    <guid config_hash="bbc70da24570ab578fb1416217fc0834" mdapi_config_hash="c905876bdf561cc26c64363ced258c64" id="729fc3f4-ccff-4902-be6b-f1a22cc92c02" chipset="bdw" name="TDL_1" />
+    <guid config_hash="803ca6eb4feef4090332003b65607c95" mdapi_config_hash="0000753d7f52fb3a0b0baa6b44052cff" id="29598975-4785-43ab-a981-1dfa58d0e835" chipset="bdw" name="TDL_2" />
+    <guid config_hash="c45ebb398888eabb889be632432550eb" mdapi_config_hash="a3c52d64b6d187b02de43af112abc509" id="0a9eb7be-feee-4275-a139-6d9cedf0fdb0" chipset="bdw" name="GpuBusyness" />
+    <guid config_hash="13a7f7de484592659ef4d346901bde25" mdapi_config_hash="59cd2454083f4855dca14637425d733c" id="e713f347-953e-4d8c-b02f-6be31df2db2b" chipset="bdw" name="STC_PmaStall" />
+    <guid config_hash="867e736ad8c49a9f4cd17b58f1b0b0cc" mdapi_config_hash="d996104bf7531170226275d44a3602b6" id="4a534b07-cba3-414d-8d60-874830e883aa" chipset="chv" name="TestOa" />
+    <guid config_hash="4fe7c53a36b24f621e11a1487d46e325" mdapi_config_hash="089852d3f5babff2175457f57214ce57" id="9d8a3af5-c02c-4a4a-b947-f1672469e0fb" chipset="chv" name="RenderBasic" />
+    <guid config_hash="6472c5788ff47d2f8f88b86b7314c09e" mdapi_config_hash="60375bf6570a28320cce512ab6d024e0" id="f522a89c-ecd1-4522-8331-3383c54af5f5" chipset="chv" name="ComputeBasic" />
+    <guid config_hash="532bafcf355d5812242ab50a362bf934" mdapi_config_hash="1466be3c679aeeb0627be174ead35e58" id="a9ccc03d-a943-4e6b-9cd6-13e063075927" chipset="chv" name="RenderPipeProfile" />
+    <guid config_hash="bb8d49db81e7bd822188ed5a958b4863" mdapi_config_hash="f94fd6ba5bfa83bb965705f1c69f1d37" id="33af8252-7a51-4aa3-b0ba-1b946f209d7b" chipset="chv" name="HDCAndSF" />
+    <guid config_hash="19924ef1563f10e386755b531d44a3fb" mdapi_config_hash="a5589479b360f6d4f5c8f70fe78b0e1d" id="78f52900-5317-4417-8067-966fbf215a1f" chipset="chv" name="L3_1" />
+    <guid config_hash="41217f1f74d9e181726736ab9af57c32" mdapi_config_hash="0fc152bfbb920f90b16ed0445afe9e48" id="0db4fe4a-2648-4064-bd6a-89c06d0c27b3" chipset="chv" name="L3_2" />
+    <guid config_hash="f17717dae4348688c670212b507d451a" mdapi_config_hash="2afc3cdd7ffbb021fc0ae99681b138ab" id="0de6539e-33b4-4aee-83c4-9ab45a579b94" chipset="chv" name="L3_3" />
+    <guid config_hash="71232cf595afad2b53666f6c233447e8" mdapi_config_hash="032c9ab7c2c6d056da82e4ee1b159c18" id="be74c9d6-268f-4d7f-b2e8-8d91d4441883" chipset="chv" name="L3_4" />
+    <guid config_hash="b8a474b7965b6d9ec62641732d0d479b" mdapi_config_hash="b2454e1eef8d38d83cb95ba2b3d85431" id="31bc1ff3-8d09-4497-9d79-59c4f943b502" chipset="chv" name="RasterizerAndPixelBackend" />
+    <guid config_hash="f8f05a9f4ce4bd928f1343180584f7de" mdapi_config_hash="6fb026e2926fbd3a507e55a7bf0a3687" id="05450fec-bb5c-4b0a-8995-e03631168a34" chipset="chv" name="Sampler_1" />
+    <guid config_hash="30ee983d5ba223ad552acc3debc13c00" mdapi_config_hash="e38e63da0d875958bc88a9deb8d529ba" id="883c8a56-8767-4de8-beec-a99462c6674b" chipset="chv" name="Sampler_2" />
+    <guid config_hash="bbc70da24570ab578fb1416217fc0834" mdapi_config_hash="c905876bdf561cc26c64363ced258c64" id="eb97e523-d9ac-48a9-b7f8-9cc909ddbf14" chipset="chv" name="TDL_1" />
+    <guid config_hash="803ca6eb4feef4090332003b65607c95" mdapi_config_hash="0000753d7f52fb3a0b0baa6b44052cff" id="dff6158e-8409-452c-be76-91c9946330bd" chipset="chv" name="TDL_2" />
+    <guid mdapi_config_hash="5cc4d10d745060d0672ffb4ebf0d1687" id="22480aac-b81a-40ce-8770-1061ce51dff7" chipset="chv" name="StencilPmaHold" />
+    <guid mdapi_config_hash="f3ae7e16e9b6aadac98179bc4c847246" id="f8315f64-668e-405e-a6d6-c52e4d9e8f1c" chipset="chv" name="MediaMemoryReads" />
+    <guid mdapi_config_hash="ea98859ab4afdda2589be697455c7dc8" id="6df9f4c3-4775-4f47-be6a-991fba7a02c7" chipset="chv" name="MediaMemoryWrites" />
+    <guid mdapi_config_hash="179e6a40c74a8401597b82383dacfd70" id="e7b839a6-6045-4ec7-aaa5-f6aab87a55aa" chipset="chv" name="MediaVmePipe" />
+    <guid mdapi_config_hash="3ed20c9f7071cef87fd28d2f899c9e6c" id="aa7d6b37-3e8f-46a4-ab50-e58f8efbdab9" chipset="chv" name="HdcUrbCoalescing" />
+    <guid mdapi_config_hash="b39b58578bb37520010084d2fb489c47" id="d991c4b4-7c8b-43a9-b187-7b143cb903cc" chipset="chv" name="L3" />
+    <guid mdapi_config_hash="36c6e4beda33281c27a79f4134ea9f80" id="531d4a91-df08-4dd4-8c5c-0158321a9ee0" chipset="chv" name="SamplerAndHDCAndTDL" />
+    <guid mdapi_config_hash="959a0f3d993feb51a3ce93ea3b61d726" id="ca514a15-e550-4277-ba52-b7cfa4929e25" chipset="chv" name="TDL" />
+    <guid mdapi_config_hash="f1232ea7b1a2bc5b0cfc7d640528e5b2" id="2a933a92-bddc-44dd-a06a-672391972b5e" chipset="chv" name="ComputeL3Cache" />
+    <guid config_hash="e018d083414e4d28e0ed481554128883" mdapi_config_hash="dce59e977ffff25a57f2486f5d9a7c60" id="5ee72f5c-092f-421e-8b70-225f7c3e9612" chipset="bxt" name="TestOa" />
+    <guid config_hash="203852243e7fde6887b1db92862d5eee" mdapi_config_hash="9bf85c8db90bbb173411dd8fbf2c9d90" id="22b9519a-e9ba-4c41-8b54-f4f8ca14fa0a" chipset="bxt" name="RenderBasic" />
+    <guid config_hash="cde046a01aba9c56d6fa44bf2c0f26c2" mdapi_config_hash="86794812560853ea5531d6eb816c7bfa" id="012d72cf-82a9-4d25-8ddf-74076fd30797" chipset="bxt" name="ComputeBasic" />
+    <guid config_hash="a19a55aad269ccc1ed4380314eda4bed" mdapi_config_hash="ac34c2028f3f4fae92e58aae1496901b" id="fa6ecf21-2cb8-4d0b-9308-6e4a7b4ca87a" chipset="bxt" name="ComputeExtra" />
+    <guid config_hash="1669463a6836f6d057cbf3e41506923b" mdapi_config_hash="c4b66b414f42b7e6f1b9941b445f79f2" id="ce416533-e49e-4211-80af-ec513590a914" chipset="bxt" name="RenderPipeProfile" />
+    <guid config_hash="f9eee3f0c9653ffd05e4876be0ea44d5" mdapi_config_hash="f707783ff8ea456ddc55fbaeb1a3bc0a" id="398e2452-18d7-42d0-b241-e4d0a9148ada" chipset="bxt" name="MemoryReads" />
+    <guid config_hash="03e840f1d8597b3c6c4015792243ce7d" mdapi_config_hash="b7e416688493d93c6a319a39c1c91fda" id="d324a0d6-7269-4847-a5c2-6f71ddc7fed5" chipset="bxt" name="MemoryWrites" />
+    <guid config_hash="39a03c065f1fdb5bf680207dc520cdb2" mdapi_config_hash="c90ecb54cbe7609fc6743f5273b68962" id="caf3596a-7bb1-4dec-b3b3-2a080d283b49" chipset="bxt" name="ComputeExtended" />
+    <guid config_hash="c241c2999f487dc995cecdb35b01197b" mdapi_config_hash="03f5a72e5e1ce82b6e3e14855298bf3d" id="49b956e2-d5b9-47e0-9d8a-cee5e8cec527" chipset="bxt" name="ComputeL3Cache" />
+    <guid config_hash="37dc8ae76c2554b11ecea682f1349ece" mdapi_config_hash="16b7f908edc7ee5ddb797c6fb1932fa6" id="ad9d9bc2-ccb7-4f5d-adbb-b4e67e615efd" chipset="bxt" name="HDCAndSF" />
+    <guid config_hash="543b9bdb10f681d516d8d9e2195221cd" mdapi_config_hash="87f92d7860a6674bf05428c26523755b" id="bde7b434-349c-4aad-8596-eb23c0352168" chipset="bxt" name="L3_1" />
+    <guid config_hash="1dc29cbbceb8e2e1a78d679ead80a27b" mdapi_config_hash="c7ec60f268b8efa00960e96dc9491517" id="f3d845e6-bfc3-4ffe-b0e5-dddc80c21f07" chipset="bxt" name="RasterizerAndPixelBackend" />
+    <guid config_hash="0b9e45ed32513193354be363e288b6a6" mdapi_config_hash="ad512c0f8b7457df8edca72ddea75e64" id="a53d620b-c14e-49df-bd27-e076b3fb98f3" chipset="bxt" name="Sampler" />
+    <guid config_hash="3f01b8d28fa285e7a496081574de4c1b" mdapi_config_hash="963e6d32bfe8cee347a8ae14d677c11c" id="8a44b172-6e1d-445f-8937-c06cc487ba39" chipset="bxt" name="TDL_1" />
+    <guid config_hash="0c77cba2d8886c18df9f382ce90eac66" mdapi_config_hash="a66f0092b99ca3a8ce29e0ce4be513ff" id="9d4643f8-aa05-482e-8193-070a8ab0d117" chipset="bxt" name="TDL_2" />
+    <guid config_hash="e6d52ba7af730de63eeaa8d727b36ed7" mdapi_config_hash="6898bc10a62600907cc6c47d1f7004a0" id="c9f5fa3a-d14f-400c-a89a-211206b00ee7" chipset="bxt" name="GpuBusyness" />
+    <guid config_hash="6d13f443205926fd1351ae5adeae8965" mdapi_config_hash="24f384a77963d7d64c324b3d89eeb498" id="d49cd0d8-8c7f-4465-94fc-51e08c9050bc" chipset="bxt" name="PMA_Stall" />
+    <guid config_hash="9627e657d1b89b3bf665208e08e2f0c8" mdapi_config_hash="d3c38c785083f96af147bcda8d43af4c" id="b890cb09-42f7-4644-8aac-a7beca4b9181" chipset="bxt" name="AsyncCompute" />
+    <guid config_hash="fc79f102b841df08ac154ddebc634bf6" mdapi_config_hash="3c97b92455702ca6f6a6f846dcc1ebd3" id="07b25942-d9fd-4fce-bd58-e29abd66b7de" chipset="sklgt2" name="RenderBasic" />
+    <guid config_hash="3e0e14aef4a2cf7e61098928c034caff" mdapi_config_hash="ecb641130c942e71d5a9de8adb51c7f6" id="00b80b4c-d215-4378-9015-da3dda3b61ea" chipset="sklgt2" name="ComputeBasic" />
+    <guid config_hash="d757768d43838dd04e2db7e9928c87d9" mdapi_config_hash="79c6baee9374a6c43b8e0fabda2c1a39" id="2a0c0933-37e7-427c-9951-ded42a78bb27" chipset="sklgt2" name="RenderPipeProfile" />
+    <guid config_hash="15938384237d1b01ceb07bc97edd12a9" mdapi_config_hash="22327f250c6079d5d5f9f1a70829dc05" id="246b35f1-44e0-4d03-8936-e452e291d064" chipset="sklgt2" name="MemoryReads" />
+    <guid config_hash="a0c0e0b3ad6e0960c9e3c626e9943c3b" mdapi_config_hash="5dcf9b09ab723e2f4ed17171a2b54a59" id="e0d3da02-00bf-4a96-9795-b48158c73a68" chipset="sklgt2" name="MemoryWrites" />
+    <guid config_hash="31bc9b67c237e4be9469d38ba69ec374" mdapi_config_hash="37e00c6654e34eaab18b6f3b2c606a16" id="c26b1fda-2752-4a33-a448-4c8718366846" chipset="sklgt2" name="ComputeExtended" />
+    <guid config_hash="a142f4714f9189816e129d2bf7ddd060" mdapi_config_hash="cdf98d85d93792dc203d2bfd7ae7559c" id="9fb22842-e708-43f7-9752-e0e41670c39e" chipset="sklgt2" name="ComputeL3Cache" />
+    <guid config_hash="977641d9cac7a2eb62c1c6cc844db2b5" mdapi_config_hash="a70cc632725191096cec1d685119aeb6" id="b4aa5e13-2d25-418f-827d-421f5cc4c43b" chipset="sklgt2" name="HDCAndSF" />
+    <guid config_hash="45aaf271f503f5d5d152b6d97c11412d" mdapi_config_hash="6b111ab20f6929a385eee8d283768ac1" id="504000e8-64f2-4aac-8301-51b81aa60d45" chipset="sklgt2" name="L3_1" />
+    <guid config_hash="6221743043a92819571c49bde5e09582" mdapi_config_hash="0b87bde0336f1d126527c9d8b0e6fa3c" id="f542479b-6685-4670-ad8e-9fe282a2eb5b" chipset="sklgt2" name="L3_2" />
+    <guid config_hash="b6320b7867895a125dec55805a8da286" mdapi_config_hash="7eae454eee816d64ff0fbb991ad4e9b9" id="1cbf1e9f-c2de-4cc2-8d1c-2c33c25a2332" chipset="sklgt2" name="L3_3" />
+    <guid config_hash="35f7405d36fe5767f4c1e80b322243d1" mdapi_config_hash="78b90bbcc0137b2c6e516cb32d44747c" id="b4e54cc8-a3a0-4ccd-9990-65d3184e5a38" chipset="sklgt2" name="RasterizerAndPixelBackend" />
+    <guid config_hash="6e2319f2ca15bfb049b2d1be6d1a0844" mdapi_config_hash="73ceeb4df0d124c61328ecf2c0207503" id="efe7eba4-fd9e-4a09-a92b-334970b5de57" chipset="sklgt2" name="Sampler" />
+    <guid config_hash="90eff0b1f381a2f187bd54f2047ce0f2" mdapi_config_hash="e0913ff09629a32c435487a69f6683b9" id="e9bd0bbb-c7b7-4a26-a27a-246987354776" chipset="sklgt2" name="TDL_1" />
+    <guid config_hash="c41684d2ccbe553874fb9cdbd8fd0229" mdapi_config_hash="6b1a9dc8dd375bf367313ad9b0531580" id="0a7accbf-8c55-455f-9984-23e9fb0b826d" chipset="sklgt2" name="TDL_2" />
+    <guid config_hash="483a06910590c1753a0266ef8b9f9b70" mdapi_config_hash="4be337ed83e3c95aebf66553ed685602" id="41a24047-7484-4ead-ae37-de907e5ff2b2" chipset="sklgt2" name="ComputeExtra" />
+    <guid config_hash="784698b7fb41dad7bc4bf13fac46657b" mdapi_config_hash="2fe32bdaf82fc66774ee95c33a23ea88" id="95910492-943f-44bd-9461-390240f243fd" chipset="sklgt2" name="VMEPipe" />
+    <guid config_hash="d811fdce9eae9713bde1a8f91fd6feb7" mdapi_config_hash="f8f56d024b8445d193952ead4d7e3004" id="c5384091-ce4c-406c-ab4d-4c530f71c7ae" chipset="sklgt2" name="TestOa" />
+    <guid config_hash="ee7996e47cdaf7722422397285763cdc" mdapi_config_hash="ada812fc71ebbabd1e746dbab67881b1" id="c44a5cf7-886d-477b-bebd-2d738923e4c3" chipset="sklgt2" name="GpuBusyness" />
+    <guid config_hash="cec6202194db96d6a09fed71808bb7de" mdapi_config_hash="df4b9b85ed61f457a0b71b03299b282d" id="e0b2aae4-9b8f-4211-8df0-f8e8cb203209" chipset="sklgt2" name="FfBottlenecks" />
+    <guid config_hash="8ae5bda74271c473f88f13e57d6f6828" mdapi_config_hash="e7f3f72cad542f3a17c09686e65487fc" id="27871149-2fa9-40ba-aa73-350d60c03a09" chipset="sklgt2" name="PMA_Stall" />
+    <guid config_hash="3a59319ec73eea8c3de970d027092a2b" mdapi_config_hash="5901e5a68332bb5d9c654286b1d3e9a5" id="04769cac-6809-4f2a-af5d-40022435a8b2" chipset="sklgt2" name="AsyncCompute" />
+    <guid config_hash="a7f1b241b23898785166ab10ca4ce1bf" mdapi_config_hash="ae3528402606bbb21a08da7ef5ea1530" id="21fef15a-83f4-4ffa-bb81-7da6e38b8e4b" chipset="sklgt3" name="RenderBasic" />
+    <guid config_hash="ede53df6549f788495f7fca90475b6dd" mdapi_config_hash="87390c127ce809c3cfab64388ddebd14" id="4320492b-fd03-42ac-922f-dbe1ef3b7b58" chipset="sklgt3" name="ComputeBasic" />
+    <guid config_hash="0f8eee02ed3e457362ffdc38ed10036c" mdapi_config_hash="2d95f03caa28b40e2a25f3bc8ac38b55" id="bd2d9cae-b9ec-4f5b-9d2f-934bed398a2d" chipset="sklgt3" name="RenderPipeProfile" />
+    <guid config_hash="0a75401250565ee5a0e555b47bc9e5b4" mdapi_config_hash="5218add4f4b16f3db5c92225871eb44c" id="4ca0f3fe-7fd3-4924-98cb-1807d9879767" chipset="sklgt3" name="MemoryReads" />
+    <guid config_hash="2ed5869dae575556e0895b0d0081555c" mdapi_config_hash="adc8e37f86eda900faf1fdb41f5dc3ee" id="a0c0172c-ee13-403d-99ff-2bdf6936cf14" chipset="sklgt3" name="MemoryWrites" />
+    <guid config_hash="6566c55fdf1de8ae73008029a674ecc9" mdapi_config_hash="f3ce984974a95b391e835b3a75aa7813" id="52435e0b-f188-42ea-8680-21a56ee20dee" chipset="sklgt3" name="ComputeExtended" />
+    <guid config_hash="f660e82bbeca0b5d2d31a98dac8eb940" mdapi_config_hash="7b6f81c79c79fb31b0fe5eea542e479f" id="27076eeb-49f3-4fed-8423-c66506005c63" chipset="sklgt3" name="ComputeL3Cache" />
+    <guid config_hash="2c6650c2422869aa2624b26f7a7c51bc" mdapi_config_hash="1ce5fbfd5db4183dfc3ab6bf4badfd59" id="a1b8363b-b986-47b6-929a-847afde3dec8" chipset="sklgt3" name="HDCAndSF" />
+    <guid config_hash="3ead5919c426a00ef6697e21df33ef07" mdapi_config_hash="269534866dc93d83e1e5934bd4900a89" id="fa857069-7f95-44c9-a3e0-cb8ccbc35abb" chipset="sklgt3" name="L3_1" />
+    <guid config_hash="2d0a88cdba58ddf18642fde563edb4d8" mdapi_config_hash="745f63effe3156a5f358999d45bd66c6" id="9830a5f3-a5e2-4773-a49d-6371407c382a" chipset="sklgt3" name="L3_2" />
+    <guid config_hash="d3972886309fa3701f3d3ae185f57cbe" mdapi_config_hash="b46614ab9a28c8a7fe88897cd72437bd" id="59452ceb-24bb-4878-87ec-87aab7b4f9db" chipset="sklgt3" name="L3_3" />
+    <guid config_hash="90ecbd5ae5ae6d3c0f756c7411351c85" mdapi_config_hash="7d797e538b84f6682caacdfb299145d9" id="d2249ff7-34b4-4203-b474-7c11546f9dae" chipset="sklgt3" name="RasterizerAndPixelBackend" />
+    <guid config_hash="5a628cbf246226c19fed41479cf17de1" mdapi_config_hash="1db0203064f7e2f8cb02901fe29a1d33" id="c9cf7c63-0065-4226-941e-98590bad8f75" chipset="sklgt3" name="Sampler" />
+    <guid config_hash="f48609e1a79093073b96726c3c4c63a6" mdapi_config_hash="781425b1a57e4ea0010105f565567161" id="e3bb1501-89ca-43fb-8668-9d96159e10a2" chipset="sklgt3" name="TDL_1" />
+    <guid config_hash="93ab6cf80fefdfca540a3ac101925411" mdapi_config_hash="66d2a4df7b3190be8bd9643e1cb14f99" id="29194a55-7e75-4152-a71f-ef34b1ae4cca" chipset="sklgt3" name="TDL_2" />
+    <guid config_hash="3ca2784da64d161a998b7d8f6d4e0235" mdapi_config_hash="5796dcc1e154e567d7758854bb621bcb" id="2d80a648-7b5a-4e92-bbe7-3b5c76f2e221" chipset="sklgt3" name="ComputeExtra" />
+    <guid config_hash="54b2a9ae72018dd99e63c2ecd9c92901" mdapi_config_hash="6ae821fe8ac78f4b387f9eec605ac900" id="cfae9232-6ffc-42cc-a703-9790016925f0" chipset="sklgt3" name="VMEPipe" />
+    <guid config_hash="eb1f36a78ee4dc71bb9501070f3b6800" mdapi_config_hash="01fe5ee1b6d1e8e5eee460cb71eeb0d6" id="14cadcfd-fb3a-46a3-8c13-0a4f850a4b18" chipset="sklgt3" name="TestOa" />
+    <guid config_hash="6124b939906bc3cda3621544aabfd890" mdapi_config_hash="24ef7b4026d1ac159bb663946df0e9b0" id="0c5058ff-fdf4-4e0d-81fb-c0310fb76525" chipset="sklgt3" name="GpuBusyness" />
+    <guid config_hash="8ae5bda74271c473f88f13e57d6f6828" mdapi_config_hash="4d9fb617c64406cc8b372808461dd3e3" id="c889fd93-8dc7-4ba5-9451-de34a8b5ea3f" chipset="sklgt3" name="PMA_Stall" />
+    <guid config_hash="3a59319ec73eea8c3de970d027092a2b" mdapi_config_hash="ca820befa034b8cbd1ec23514e739527" id="9d8e6b6c-c6ec-4591-99b5-7d9983e10d64" chipset="sklgt3" name="AsyncCompute" />
+    <guid config_hash="0a80b2a2caa3386ecce110a7904eb1c1" mdapi_config_hash="61d002ce457b9ce087613d986e6b0544" id="95322a71-bb05-4437-bc27-f7dd7b27d136" chipset="sklgt4" name="RenderBasic" />
+    <guid config_hash="898ee42bb4b359d4c0eb97c5919cfd7f" mdapi_config_hash="d596d8f326e5378b871b825eb954e95c" id="7277228f-e7f3-4743-945a-6a2049d11377" chipset="sklgt4" name="ComputeBasic" />
+    <guid config_hash="48b5556f95fc27dceb10c65556a16613" mdapi_config_hash="95e3f2b556fe9795e0d0e0d3b0c5ee00" id="463c668c-3f60-49b6-8f85-d995b635b3b2" chipset="sklgt4" name="RenderPipeProfile" />
+    <guid config_hash="0a75401250565ee5a0e555b47bc9e5b4" mdapi_config_hash="d39a578cdf930d109c992f4abd7f83cb" id="3ae6e74c-72c3-4040-9bd0-7961430b8cc8" chipset="sklgt4" name="MemoryReads" />
+    <guid config_hash="2ed5869dae575556e0895b0d0081555c" mdapi_config_hash="603b987097b9d84c53eb55c60272b286" id="055f256d-4052-467c-8dec-6064a4806433" chipset="sklgt4" name="MemoryWrites" />
+    <guid config_hash="6566c55fdf1de8ae73008029a674ecc9" mdapi_config_hash="26c920eddaf1b7e2d58c37a96d4076bd" id="753972d4-87cd-4460-824d-754463ac5054" chipset="sklgt4" name="ComputeExtended" />
+    <guid config_hash="96d8e8d820ebad84b71c222f3c448ec5" mdapi_config_hash="182cd4a00f7a24a0c844bf9f8435419e" id="4e4392e9-8f73-457b-ab44-b49f7a0c733b" chipset="sklgt4" name="ComputeL3Cache" />
+    <guid config_hash="25ad6a99a2b00414d4747035af7fac94" mdapi_config_hash="f69a28470a231f8d0c20e3173274cf88" id="75f56991-b149-4122-ade9-d9c0c80c733b" chipset="sklgt4" name="HDCAndSF" />
+    <guid config_hash="3ead5919c426a00ef6697e21df33ef07" mdapi_config_hash="52b2279e32293bfe3cf97e443940215a" id="0d4cda70-da83-466f-b61e-7a064fe6a232" chipset="sklgt4" name="L3_1" />
+    <guid config_hash="2d0a88cdba58ddf18642fde563edb4d8" mdapi_config_hash="1541624f29b55f8abf422eaa813657e7" id="20137ace-b110-4341-883f-1094c820093c" chipset="sklgt4" name="L3_2" />
+    <guid config_hash="d3972886309fa3701f3d3ae185f57cbe" mdapi_config_hash="c734154b7a9bd205b8bfb176211873c3" id="d3a6b05e-46ef-44a8-96c3-9bd3e58acbe6" chipset="sklgt4" name="L3_3" />
+    <guid config_hash="90ecbd5ae5ae6d3c0f756c7411351c85" mdapi_config_hash="0fbb2b2f53429b0a25a6628c1fb21b32" id="4081b948-63f1-4b1a-abaa-6017cb77a63b" chipset="sklgt4" name="RasterizerAndPixelBackend" />
+    <guid config_hash="5a628cbf246226c19fed41479cf17de1" mdapi_config_hash="032dea8a40f7c0bbe2c9e0a238df248d" id="eae6bbb1-0e2b-478d-bd9e-f10ded2178f9" chipset="sklgt4" name="Sampler" />
+    <guid config_hash="f48609e1a79093073b96726c3c4c63a6" mdapi_config_hash="39a8e4da917b0874b8e697f203a641ff" id="1bba4bd2-81d4-45ec-847f-bc363e17e14d" chipset="sklgt4" name="TDL_1" />
+    <guid config_hash="93ab6cf80fefdfca540a3ac101925411" mdapi_config_hash="60b1253d54ce38bb6678d9a3eaa10305" id="a4b3106c-cfec-49f5-8e26-470470379e66" chipset="sklgt4" name="TDL_2" />
+    <guid config_hash="19cb1c38ee83566f630015215532efa5" mdapi_config_hash="f9ae90355e5abe786bf5e81f1c4222c0" id="a5aa857d-e8f0-4dfa-8981-ce340fa748fd" chipset="sklgt4" name="ComputeExtra" />
+    <guid config_hash="b28f9fef3bf5699c217d634bffa57fbc" mdapi_config_hash="cafc4d5abc6807434093d4f47fe83292" id="0e8d8b86-4ee7-4cdd-aaaa-58adc92cb29e" chipset="sklgt4" name="VMEPipe" />
+    <guid config_hash="eb1f36a78ee4dc71bb9501070f3b6800" mdapi_config_hash="def0e0e3844a4909fa0dec2f8a9f2ca0" id="c1c2d40e-652a-482c-98fc-28bdb7c6ee44" chipset="sklgt4" name="TestOa" />
+    <guid config_hash="6124b939906bc3cda3621544aabfd890" mdapi_config_hash="24ef7b4026d1ac159bb663946df0e9b0" id="4e5b1599-5b01-4b3d-89fa-6b26a25fe02b" chipset="sklgt4" name="GpuBusyness" />
+    <guid config_hash="8ae5bda74271c473f88f13e57d6f6828" mdapi_config_hash="4d9fb617c64406cc8b372808461dd3e3" id="befe9fd6-474e-4a3d-b98e-cd793715cf91" chipset="sklgt4" name="PMA_Stall" />
+    <guid config_hash="3a59319ec73eea8c3de970d027092a2b" mdapi_config_hash="ca820befa034b8cbd1ec23514e739527" id="796044f3-8f9d-4439-ab2c-aca5b046a1ef" chipset="sklgt4" name="AsyncCompute" />
+    <guid config_hash="afbe2cb999a8303f52eea075f3b8687e" mdapi_config_hash="966416aaaf33b0bce90c0daa51217242" id="99c1a40e-a090-4354-86e3-4d068bb1917e" chipset="kblgt2" name="RenderBasic" />
+    <guid config_hash="b1268f0f246efc7ab27f7637fa7193e8" mdapi_config_hash="c72d95bf362111446018c52210ec48b6" id="12994724-3a5a-4303-bb3c-ba0175d2c200" chipset="kblgt2" name="ComputeBasic" />
+    <guid config_hash="01f86f590b9b0c0371b0075a5e73b902" mdapi_config_hash="7ee27e7f11eea3282e62abde604b61a2" id="d7a17a3a-ca71-40d2-a919-ace80d50633f" chipset="kblgt2" name="RenderPipeProfile" />
+    <guid config_hash="0a75401250565ee5a0e555b47bc9e5b4" mdapi_config_hash="0779bba85f8be3baef98ecc5c66fd369" id="57b59202-172b-477a-87de-33f85572c589" chipset="kblgt2" name="MemoryReads" />
+    <guid config_hash="2ed5869dae575556e0895b0d0081555c" mdapi_config_hash="26eb749438ad7d42e34342048c1019c5" id="3addf8ef-8e9b-40f5-a448-3dbb5d5128b0" chipset="kblgt2" name="MemoryWrites" />
+    <guid config_hash="6566c55fdf1de8ae73008029a674ecc9" mdapi_config_hash="aa2dd4e7d446e3ce29dfeaf8f393243e" id="4af0400a-81c3-47db-a6b6-deddbd75680e" chipset="kblgt2" name="ComputeExtended" />
+    <guid config_hash="33bdd2160049aa831e025e1be7a453c5" mdapi_config_hash="2770df840fca647230d55b79f686ae11" id="0e22f995-79ca-4f67-83ab-e9d9772488d8" chipset="kblgt2" name="ComputeL3Cache" />
+    <guid config_hash="5736948ed298fd6e8cc80222e1e03077" mdapi_config_hash="c056251351b0b1f5beb4f6863484854b" id="fb149d66-fad2-4230-b0d7-4d689b9116d3" chipset="kblgt2" name="HDCAndSF" />
+    <guid config_hash="3ead5919c426a00ef6697e21df33ef07" mdapi_config_hash="17d38bff109de8e5622ff29bead0bbcf" id="f889f8cc-4c93-4ac8-b75f-551c0b9b87f7" chipset="kblgt2" name="L3_1" />
+    <guid config_hash="2d0a88cdba58ddf18642fde563edb4d8" mdapi_config_hash="1a88f6816aea2c42dae9f10d4233cb74" id="6d344efd-8e9e-42d4-a29e-1011c29f82c2" chipset="kblgt2" name="L3_2" />
+    <guid config_hash="d3972886309fa3701f3d3ae185f57cbe" mdapi_config_hash="ae28a594b1a6fd3864272da8dbe873f5" id="e3b386ae-c195-47d5-af29-8a1afa0ae2bf" chipset="kblgt2" name="L3_3" />
+    <guid config_hash="90ecbd5ae5ae6d3c0f756c7411351c85" mdapi_config_hash="d1b2421e43a489ffcdfeeaf271b2f12f" id="f9954679-a055-4862-9f57-9d66e3ebf81c" chipset="kblgt2" name="RasterizerAndPixelBackend" />
+    <guid config_hash="5a628cbf246226c19fed41479cf17de1" mdapi_config_hash="8d5f977be4f4d21e97e9e67786958495" id="4ed5e27e-fd1a-4f11-ad8f-9374e128c697" chipset="kblgt2" name="Sampler" />
+    <guid config_hash="f48609e1a79093073b96726c3c4c63a6" mdapi_config_hash="cbef2ea0f1c6e30bd37cea22a87e8373" id="9eaf384d-8f53-41b8-a71d-108308780fbc" chipset="kblgt2" name="TDL_1" />
+    <guid config_hash="93ab6cf80fefdfca540a3ac101925411" mdapi_config_hash="b685ab8fe6fc020e85f189f55fdf6e05" id="a00cbdf2-eabd-4240-9a89-86e2ac1ca1e4" chipset="kblgt2" name="TDL_2" />
+    <guid config_hash="483a06910590c1753a0266ef8b9f9b70" mdapi_config_hash="4be337ed83e3c95aebf66553ed685602" id="aa7a3fb9-22fb-43ff-a32d-0ab6c13bbd16" chipset="kblgt2" name="ComputeExtra" />
+    <guid config_hash="784698b7fb41dad7bc4bf13fac46657b" mdapi_config_hash="2fe32bdaf82fc66774ee95c33a23ea88" id="398a4268-ef6f-4ffc-b55f-3c7b5363ce61" chipset="kblgt2" name="VMEPipe" />
+    <guid config_hash="eb1f36a78ee4dc71bb9501070f3b6800" mdapi_config_hash="451756d65e43fb07a5f589ccaed0819d" id="cd4b577b-073a-423f-a948-e198dd818c71" chipset="kblgt2" name="TestOa" />
+    <guid config_hash="d36b63d76294172be0ad5e6530109d06" mdapi_config_hash="aa4c1ab961a066b0bc98bf914735b6af" id="6c66fe6e-2988-454a-bfae-7fca3bbcbec2" chipset="kblgt2" name="GpuBusyness" />
+    <guid config_hash="8ae5bda74271c473f88f13e57d6f6828" mdapi_config_hash="4d9fb617c64406cc8b372808461dd3e3" id="b49aa434-4958-4d98-9e6f-443ff27ca74d" chipset="kblgt2" name="PMA_Stall" />
+    <guid config_hash="3a59319ec73eea8c3de970d027092a2b" mdapi_config_hash="ca820befa034b8cbd1ec23514e739527" id="4032137b-8dcc-4f3f-912d-c0bb14a123bc" chipset="kblgt2" name="AsyncCompute" />
+    <guid config_hash="73805d7acd1298aa6d81d3e2278ee411" mdapi_config_hash="9111e46468492c1c14a331510c18a49b" id="17b4f3e0-d578-4ae3-b7a8-98d756d1e0df" chipset="kblgt3" name="RenderBasic" />
+    <guid config_hash="b1268f0f246efc7ab27f7637fa7193e8" mdapi_config_hash="ac97e9ebaf2a55476a86ab2559e5ecab" id="a5dc0bc5-d6fa-4f3a-9979-d3248c786042" chipset="kblgt3" name="ComputeBasic" />
+    <guid config_hash="01f86f590b9b0c0371b0075a5e73b902" mdapi_config_hash="808e46d786103380f58d1e8f91402c4c" id="c7c735f3-ce58-45cf-aa04-30b183f1faff" chipset="kblgt3" name="RenderPipeProfile" />
+    <guid config_hash="0a75401250565ee5a0e555b47bc9e5b4" mdapi_config_hash="f810d7343822b3a3b9e50820708bfcb3" id="96ec2219-040b-428a-856a-6bc03363a057" chipset="kblgt3" name="MemoryReads" />
+    <guid config_hash="2ed5869dae575556e0895b0d0081555c" mdapi_config_hash="af6cd36da93a8ec66d57ba6b504b601f" id="03372b64-4996-4d3b-aa18-790e75eeb9c2" chipset="kblgt3" name="MemoryWrites" />
+    <guid config_hash="6566c55fdf1de8ae73008029a674ecc9" mdapi_config_hash="c4d070800ff5b65caff35d40adb52d04" id="31b4ce5a-bd61-4c1f-bb5d-f2e731412150" chipset="kblgt3" name="ComputeExtended" />
+    <guid config_hash="33bdd2160049aa831e025e1be7a453c5" mdapi_config_hash="dcedeef0d1a6b20eaa3f3ee546b048ed" id="2ce0911a-27fc-4887-96f0-11084fa807c3" chipset="kblgt3" name="ComputeL3Cache" />
+    <guid config_hash="c8739d6465605b9228ec2ff3ebde2ba3" mdapi_config_hash="3a893043b806be4b00179663f8f4695e" id="b128f45f-bfa2-4991-aadc-05be7898e398" chipset="kblgt3" name="HDCAndSF" />
+    <guid config_hash="3ead5919c426a00ef6697e21df33ef07" mdapi_config_hash="b97b4654b688f69b1df22e7d9cd08f2b" id="f3566b55-9c13-47bf-8327-4a887af75262" chipset="kblgt3" name="L3_1" />
+    <guid config_hash="2d0a88cdba58ddf18642fde563edb4d8" mdapi_config_hash="f8870bc48196bdc7c3d08bf0dba3e377" id="7b21aa68-9076-4ab4-8a84-e45a06c8eac6" chipset="kblgt3" name="L3_2" />
+    <guid config_hash="d3972886309fa3701f3d3ae185f57cbe" mdapi_config_hash="2091a23cf2f835375430e16328f73c7b" id="71b4b9dd-ae28-48ce-9a1a-5431e1f23afd" chipset="kblgt3" name="L3_3" />
+    <guid config_hash="90ecbd5ae5ae6d3c0f756c7411351c85" mdapi_config_hash="6c748481e5e43019bbeb0557c309b65e" id="52c646ca-52da-4853-877e-8645e73ed330" chipset="kblgt3" name="RasterizerAndPixelBackend" />
+    <guid config_hash="5a628cbf246226c19fed41479cf17de1" mdapi_config_hash="c1ea12cf95f7c8be3ca32c6670c15a27" id="c4bb682f-677c-4875-990b-005230be87b4" chipset="kblgt3" name="Sampler" />
+    <guid config_hash="f48609e1a79093073b96726c3c4c63a6" mdapi_config_hash="20f9812e7c1c94a2b24dbb6a0596b5e1" id="ade8521b-5e72-45d4-8c25-d9f0da774899" chipset="kblgt3" name="TDL_1" />
+    <guid config_hash="93ab6cf80fefdfca540a3ac101925411" mdapi_config_hash="25e39a0a38a1fdbf4e2ff677aad30fc6" id="9df2815d-4e9e-417f-bde1-3788dc6e1ea1" chipset="kblgt3" name="TDL_2" />
+    <guid config_hash="f543908db2541ef48f35603e35c379bd" mdapi_config_hash="41ebe4b58e504d63d60141faa9d45c18" id="efc497ac-884e-4ee4-a4a8-15fba22aaf21" chipset="kblgt3" name="ComputeExtra" />
+    <guid config_hash="16c6718fd82aaa5e1187df8d88ace152" mdapi_config_hash="d0ce6de1ad831394a048015990e82864" id="bfd9764d-2c5b-4c16-bfc1-89de3ca10917" chipset="kblgt3" name="VMEPipe" />
+    <guid config_hash="eb1f36a78ee4dc71bb9501070f3b6800" mdapi_config_hash="befeffb33cb10b61a2f4f0d3d563ab74" id="bb3344bf-2551-40f7-b75f-cbf29e4195f7" chipset="kblgt3" name="TestOa" />
+    <guid config_hash="de8530fdc36d260415e78771e8cc6929" mdapi_config_hash="3f82064fe17d6d7005b6e5c4bb828c5a" id="b55ecba1-2aa9-422e-89ff-b9e30f03d447" chipset="kblgt3" name="GpuBusyness" />
+    <guid config_hash="8ae5bda74271c473f88f13e57d6f6828" mdapi_config_hash="4d9fb617c64406cc8b372808461dd3e3" id="85bc2e4f-2563-4388-921b-dc0dad879cf3" chipset="kblgt3" name="PMA_Stall" />
+    <guid config_hash="3a59319ec73eea8c3de970d027092a2b" mdapi_config_hash="ca820befa034b8cbd1ec23514e739527" id="8d6d28f5-f699-4eec-89f7-216956bf2ed5" chipset="kblgt3" name="AsyncCompute" />
+    <guid config_hash="c01efa1ec2a11ea9aaab8b0a8e548174" mdapi_config_hash="7867725687bd177e4e8b8b8443b04355" id="d72df5c7-5b4a-4274-a43f-00b0fd51fc68" chipset="glk" name="RenderBasic" />
+    <guid config_hash="cde046a01aba9c56d6fa44bf2c0f26c2" mdapi_config_hash="84d270fda538f1061067316b19b9cac9" id="814285f6-354d-41d2-ba49-e24e622714a0" chipset="glk" name="ComputeBasic" />
+    <guid config_hash="1669463a6836f6d057cbf3e41506923b" mdapi_config_hash="66b8f785edc91d1cf3952fc842114671" id="07d397a6-b3e6-49f6-9433-a4f293d55978" chipset="glk" name="RenderPipeProfile" />
+    <guid config_hash="f9eee3f0c9653ffd05e4876be0ea44d5" mdapi_config_hash="1056f30306a4c2d08d57e4faa86f983a" id="1a356946-5428-450b-a2f0-89f8783a302d" chipset="glk" name="MemoryReads" />
+    <guid config_hash="03e840f1d8597b3c6c4015792243ce7d" mdapi_config_hash="3a432ab2a6296f25755c1846385fae55" id="5299be9d-7a61-4c99-9f81-f87e6c5aaca9" chipset="glk" name="MemoryWrites" />
+    <guid config_hash="39a03c065f1fdb5bf680207dc520cdb2" mdapi_config_hash="ed01dd3479766a5fb38dd8e9e064786e" id="bc9bcff2-459a-4cbc-986d-a84b077153f3" chipset="glk" name="ComputeExtended" />
+    <guid config_hash="c241c2999f487dc995cecdb35b01197b" mdapi_config_hash="3a74134eedb02e201197da17e0940351" id="88ec931f-5b4a-453a-9db6-a61232b6143d" chipset="glk" name="ComputeL3Cache" />
+    <guid config_hash="37dc8ae76c2554b11ecea682f1349ece" mdapi_config_hash="fd61133e8762cb61d142a12604442177" id="0329ea02-ebb8-43f1-bf89-c5bdcccd3eb4" chipset="glk" name="HDCAndSF" />
+    <guid config_hash="d159b7f14e97660ae2887e4b610d2721" mdapi_config_hash="fe48f1232b010e9d10ab1bff0e6efb75" id="5e57a25a-1d18-4e94-b84b-08ea66751b8c" chipset="glk" name="L3_1" />
+    <guid config_hash="1dc29cbbceb8e2e1a78d679ead80a27b" mdapi_config_hash="2a635538209cc68b2c489d2326017539" id="f0652373-d361-426f-b36d-9ffec288bdc6" chipset="glk" name="RasterizerAndPixelBackend" />
+    <guid config_hash="0b9e45ed32513193354be363e288b6a6" mdapi_config_hash="593e37453b96243ac7752d9c45672c63" id="6ac97d12-ce13-428a-b20c-6902bde2608b" chipset="glk" name="Sampler" />
+    <guid config_hash="3f01b8d28fa285e7a496081574de4c1b" mdapi_config_hash="af87c7792e604a645dacdadb99c4afd2" id="59ea703a-9a35-4aed-a985-0d9ab7aceaba" chipset="glk" name="TDL_1" />
+    <guid config_hash="0c77cba2d8886c18df9f382ce90eac66" mdapi_config_hash="2e2beadb54378ff4d79bf4cf15bffd90" id="f2d6d718-e7b1-48f4-9624-45230d2fe2a0" chipset="glk" name="TDL_2" />
+    <guid config_hash="a19a55aad269ccc1ed4380314eda4bed" mdapi_config_hash="ac34c2028f3f4fae92e58aae1496901b" id="15274c82-27d2-4819-876a-7cb1a2c59ba4" chipset="glk" name="ComputeExtra" />
+    <guid config_hash="e018d083414e4d28e0ed481554128883" mdapi_config_hash="dce59e977ffff25a57f2486f5d9a7c60" id="dd3fd789-e783-4204-8cd0-b671bbccb0cf" chipset="glk" name="TestOa" />
+    <guid config_hash="6d13f443205926fd1351ae5adeae8965" mdapi_config_hash="24f384a77963d7d64c324b3d89eeb498" id="e6868953-fb47-431d-a060-f785916558fc" chipset="glk" name="PMA_Stall" />
+    <guid config_hash="afbe2cb999a8303f52eea075f3b8687e" mdapi_config_hash="8e8f1f5eb1b0a95dada8e3ddd78f4dd8" id="7fa796a4-0c7a-4201-afc6-cff0b2f528a2" chipset="cflgt2" name="RenderBasic" />
+    <guid config_hash="b1268f0f246efc7ab27f7637fa7193e8" mdapi_config_hash="87718bbf001284c0ca7c0e8060ebe6c6" id="a4985100-5f76-4822-8ca7-67908cb26274" chipset="cflgt2" name="ComputeBasic" />
+    <guid config_hash="01f86f590b9b0c0371b0075a5e73b902" mdapi_config_hash="f9a35b936db9a2f76b69d7b5bd5d10ec" id="2221e4d5-ed7b-445e-b2cc-3de1b97f4d42" chipset="cflgt2" name="RenderPipeProfile" />
+    <guid config_hash="0a75401250565ee5a0e555b47bc9e5b4" mdapi_config_hash="8b1e5617e61646d7d7d0361107ec2b67" id="82096a90-e2fa-4f38-ac14-562b2496933a" chipset="cflgt2" name="MemoryReads" />
+    <guid config_hash="2ed5869dae575556e0895b0d0081555c" mdapi_config_hash="2cd637a11aacc15af119c9dba70c5f1d" id="9f638880-02e9-4a8d-896a-7670a3bf0d35" chipset="cflgt2" name="MemoryWrites" />
+    <guid config_hash="6566c55fdf1de8ae73008029a674ecc9" mdapi_config_hash="5311aa266d0d85e7b67695731408ec3e" id="8d4ad934-7c16-43d5-845a-51067a4c8e2f" chipset="cflgt2" name="ComputeExtended" />
+    <guid config_hash="33bdd2160049aa831e025e1be7a453c5" mdapi_config_hash="019cd29f8fe235d7dca74e7860dafc08" id="4389cf07-1424-4963-b2d2-64fcec75406d" chipset="cflgt2" name="ComputeL3Cache" />
+    <guid config_hash="5736948ed298fd6e8cc80222e1e03077" mdapi_config_hash="4118768c8cfd35668067034b646a99ea" id="ac544b3a-ff78-46ea-9808-ee6fef0978b4" chipset="cflgt2" name="HDCAndSF" />
+    <guid config_hash="3ead5919c426a00ef6697e21df33ef07" mdapi_config_hash="fe8bb34c7f8bb873a55e7b7046ec4507" id="a35c5867-0ab8-4d45-8fc1-eb0906f0eff5" chipset="cflgt2" name="L3_1" />
+    <guid config_hash="2d0a88cdba58ddf18642fde563edb4d8" mdapi_config_hash="d4b1fe90832f2ab808b5dc6d6f2de431" id="bb4bcce9-2cbb-4818-9e49-67ce2c99cd25" chipset="cflgt2" name="L3_2" />
+    <guid config_hash="d3972886309fa3701f3d3ae185f57cbe" mdapi_config_hash="0a733ec395a9f95c9a4c7a53639352aa" id="9e1229f8-d87f-4f44-b067-3544e17195aa" chipset="cflgt2" name="L3_3" />
+    <guid config_hash="90ecbd5ae5ae6d3c0f756c7411351c85" mdapi_config_hash="86e99a03089772a7bff973a24bbcb21f" id="3e91908a-1c70-4004-b2ab-a10ef14f24f9" chipset="cflgt2" name="RasterizerAndPixelBackend" />
+    <guid config_hash="5a628cbf246226c19fed41479cf17de1" mdapi_config_hash="07cab9aa8c9c07b346ce2e8976ef87fa" id="9a6ba957-7955-4a09-a8ce-083030ba3c1f" chipset="cflgt2" name="Sampler" />
+    <guid config_hash="f48609e1a79093073b96726c3c4c63a6" mdapi_config_hash="8e2985ac9a60942987f94a397bfeb2ff" id="c54e7ca3-c60c-4396-ac3d-f9899c9a6ee4" chipset="cflgt2" name="TDL_1" />
+    <guid config_hash="93ab6cf80fefdfca540a3ac101925411" mdapi_config_hash="775f1d07ed4d225976adf356e8dc9df5" id="e438cd5d-1da7-46c6-9823-4780f370d11d" chipset="cflgt2" name="TDL_2" />
+    <guid config_hash="483a06910590c1753a0266ef8b9f9b70" mdapi_config_hash="4be337ed83e3c95aebf66553ed685602" id="5f679fb0-909e-4c0e-b4b2-8e801f83e71b" chipset="cflgt2" name="ComputeExtra" />
+    <guid config_hash="784698b7fb41dad7bc4bf13fac46657b" mdapi_config_hash="2fe32bdaf82fc66774ee95c33a23ea88" id="0d09ba9a-1d1c-457d-83e2-74ac448014d6" chipset="cflgt2" name="VMEPipe" />
+    <guid config_hash="d36b63d76294172be0ad5e6530109d06" mdapi_config_hash="aa4c1ab961a066b0bc98bf914735b6af" id="e2f162ae-5732-4af0-8b11-69510f57094a" chipset="cflgt2" name="GpuBusyness" />
+    <guid config_hash="eb1f36a78ee4dc71bb9501070f3b6800" mdapi_config_hash="451756d65e43fb07a5f589ccaed0819d" id="d3c99326-e161-4e44-9745-7772bdc579c5" chipset="cflgt2" name="TestOa" />
+    <guid config_hash="8ae5bda74271c473f88f13e57d6f6828" mdapi_config_hash="4d9fb617c64406cc8b372808461dd3e3" id="5ccbf9fb-6bf2-456b-a749-bdff7b1aff13" chipset="cflgt2" name="PMA_Stall" />
+    <guid config_hash="3a59319ec73eea8c3de970d027092a2b" mdapi_config_hash="ca820befa034b8cbd1ec23514e739527" id="9802484e-5e21-4ad3-8060-12b7f3bb81fe" chipset="cflgt2" name="AsyncCompute" />
+    <guid config_hash="73805d7acd1298aa6d81d3e2278ee411" mdapi_config_hash="5d3d4bcf1e36569409cfd84a7e137ade" id="b316bcab-212f-4228-97de-af6b5a1a2ea1" chipset="cflgt3" name="RenderBasic" />
+    <guid config_hash="b1268f0f246efc7ab27f7637fa7193e8" mdapi_config_hash="4a9628256274ffe348e8dc21f0f22f3b" id="d2eec5b1-4dd8-4170-ae83-9531abd0692f" chipset="cflgt3" name="ComputeBasic" />
+    <guid config_hash="01f86f590b9b0c0371b0075a5e73b902" mdapi_config_hash="498feca145a69e7fcec55b79d239d005" id="9875e050-b1bc-45e6-a6ab-665594601df9" chipset="cflgt3" name="RenderPipeProfile" />
+    <guid config_hash="0a75401250565ee5a0e555b47bc9e5b4" mdapi_config_hash="610a6fcb593c50362beb8c0e2172685a" id="49c65f34-e625-4ca4-86b7-88693e624d4c" chipset="cflgt3" name="MemoryReads" />
+    <guid config_hash="2ed5869dae575556e0895b0d0081555c" mdapi_config_hash="d3b21fcad90e080ef31d74b9ebd6f9ba" id="45c9e8ee-2998-4d83-88e8-9cb7e03287bf" chipset="cflgt3" name="MemoryWrites" />
+    <guid config_hash="6566c55fdf1de8ae73008029a674ecc9" mdapi_config_hash="7c26cd39edceac6865beb355592d2bea" id="bac415ce-d7a2-4f8d-9b16-834deba7330e" chipset="cflgt3" name="ComputeExtended" />
+    <guid config_hash="33bdd2160049aa831e025e1be7a453c5" mdapi_config_hash="1013698045cad3a9935f5cd76ceb8331" id="a8cfca44-0e74-4338-9e57-3daad98957dd" chipset="cflgt3" name="ComputeL3Cache" />
+    <guid config_hash="c8739d6465605b9228ec2ff3ebde2ba3" mdapi_config_hash="6c4d2ca081899cddb7c730b7c9e11b35" id="c4bee67c-0de6-4bc2-9900-5388dcc8adca" chipset="cflgt3" name="HDCAndSF" />
+    <guid config_hash="3ead5919c426a00ef6697e21df33ef07" mdapi_config_hash="74d87a1c8c2eb43fc0d481a88e635cc4" id="2f77a650-54a6-4777-98dc-e49000c13ceb" chipset="cflgt3" name="L3_1" />
+    <guid config_hash="2d0a88cdba58ddf18642fde563edb4d8" mdapi_config_hash="e2ccd67d442ca19acc63a9b3556ce2cb" id="61cf6b31-9ddd-4deb-bae5-7339dd1f63b3" chipset="cflgt3" name="L3_2" />
+    <guid config_hash="d3972886309fa3701f3d3ae185f57cbe" mdapi_config_hash="fda9efbaddee05cf0c58b0b5ba63267a" id="1421ea8b-a4c9-4383-922a-60ba96c42f24" chipset="cflgt3" name="L3_3" />
+    <guid config_hash="90ecbd5ae5ae6d3c0f756c7411351c85" mdapi_config_hash="04d6c2564113599d8375138bcf87e0a5" id="6e1f0a90-c65f-4da9-86d0-c79b3c0063f6" chipset="cflgt3" name="RasterizerAndPixelBackend" />
+    <guid config_hash="5a628cbf246226c19fed41479cf17de1" mdapi_config_hash="9aa750e153f190ac1aeb54a87f778c8f" id="7cb05eab-0857-4189-93bc-09326d298637" chipset="cflgt3" name="Sampler" />
+    <guid config_hash="f48609e1a79093073b96726c3c4c63a6" mdapi_config_hash="88333263dd73a05cb7df643794d2eefa" id="05a06d02-0c12-486b-bb1d-9be053848980" chipset="cflgt3" name="TDL_1" />
+    <guid config_hash="93ab6cf80fefdfca540a3ac101925411" mdapi_config_hash="6750a43049c53c8cb8f966764bf7cf8f" id="cddbd1dc-41a2-4fe4-8b05-3d2773120814" chipset="cflgt3" name="TDL_2" />
+    <guid config_hash="f543908db2541ef48f35603e35c379bd" mdapi_config_hash="e3197d98aa86acaf090f1bffde854586" id="e61ae394-9d9e-4204-a735-1dad7e44d953" chipset="cflgt3" name="ComputeExtra" />
+    <guid config_hash="16c6718fd82aaa5e1187df8d88ace152" mdapi_config_hash="d0ce6de1ad831394a048015990e82864" id="94272ad9-45ee-4e34-b7a7-51546cd6405c" chipset="cflgt3" name="VMEPipe" />
+    <guid config_hash="de8530fdc36d260415e78771e8cc6929" mdapi_config_hash="3f82064fe17d6d7005b6e5c4bb828c5a" id="22b7e0c2-cade-425f-b099-34479768c72a" chipset="cflgt3" name="GpuBusyness" />
+    <guid config_hash="eb1f36a78ee4dc71bb9501070f3b6800" mdapi_config_hash="b70188988f7ceb0160bd5eb7ca93559b" id="f240ef8d-4a2e-4961-a63c-cc43b01ed923" chipset="cflgt3" name="TestOa" />
+    <guid config_hash="8ae5bda74271c473f88f13e57d6f6828" mdapi_config_hash="4d9fb617c64406cc8b372808461dd3e3" id="c11af8d1-858b-4f8b-98fb-8d683ba8bda0" chipset="cflgt3" name="PMA_Stall" />
+    <guid config_hash="3a59319ec73eea8c3de970d027092a2b" mdapi_config_hash="ca820befa034b8cbd1ec23514e739527" id="0c824ec1-af53-4545-84a3-ede5e3572fc1" chipset="cflgt3" name="AsyncCompute" />
+    <guid config_hash="428ad0859c9dac4ba85dd73106f5b2de" mdapi_config_hash="7baf473e87d0838b628bd2ed289f4783" id="2d975e19-7130-41d2-b06f-79d74f91e7c8" chipset="cnl" name="RenderBasic" />
+    <guid config_hash="53907f43dc0faf4be0bbf614302f4fb3" mdapi_config_hash="b5b46b9273e54ffc6e1959b61bbc3a25" id="0b128ae2-ed06-481e-afe3-2404aab91415" chipset="cnl" name="ComputeBasic" />
+    <guid config_hash="1878c620a9f0cc5100fba47c83a1457c" mdapi_config_hash="f1baa55e099488db74fd02c9560df40b" id="0666ccac-f5aa-4dc2-aa12-c6e058f383f3" chipset="cnl" name="RenderPipeProfile" />
+    <guid config_hash="10d83436d03f71bc19e6b83739072556" mdapi_config_hash="7f0796f55071a69b76c0a0615b2171e6" id="3500dcfd-837b-4ec8-b5cf-fe58b966263f" chipset="cnl" name="MemoryReads" />
+    <guid config_hash="e1c4bd09bd777f97d6c6491bf921ec6b" mdapi_config_hash="92754b4c69ef3427efdee08033daf7e2" id="63d18ead-3cfc-4972-a640-5e98b688dfee" chipset="cnl" name="MemoryWrites" />
+    <guid config_hash="01c5575fa201196b2a4b708001ef810f" mdapi_config_hash="f7fc9c2349a53c37bd020660a0990356" id="1b4d1280-6bbd-4d57-90c6-a03ed6059688" chipset="cnl" name="ComputeExtended" />
+    <guid config_hash="21c0efc6587cd42844e23251b3712b72" mdapi_config_hash="c3d136f1cda81821d08595bc4c29973a" id="f3b31b5a-00b3-4fb4-81fd-6446e505534c" chipset="cnl" name="ComputeL3Cache" />
+    <guid config_hash="0813a24fac91efc4f1dfb7dbb578f08d" mdapi_config_hash="417896f2fec55d50f844eb2344287731" id="890094c5-8615-4f69-a8b9-706c5bcbd713" chipset="cnl" name="HDCAndSF" />
+    <guid config_hash="fb9e04dafcf3519c30c215cb2094a881" mdapi_config_hash="65bd9bbb664fd329464d18e07dd9ac47" id="e56f7dd7-ff55-4bae-89a1-a526a2e3b0d6" chipset="cnl" name="L3_1" />
+    <guid config_hash="28ade5f07e44ef07814f7a307a06470c" mdapi_config_hash="24f525009f45d22253ff7c09951733c9" id="918834e2-a1a4-4d77-9f3a-0c229f8d803f" chipset="cnl" name="L3_2" />
+    <guid config_hash="7f9fb1f70df8efb8cbd236ee8920c349" mdapi_config_hash="20e9d5975e60292c3aaecfc766d2d960" id="2e95713a-c6d8-47a9-9207-eba3e208be51" chipset="cnl" name="RasterizerAndPixelBackend" />
+    <guid config_hash="c6bda99f4d7656d8b1b613c17c2d53da" mdapi_config_hash="2c48df889c497b3f97d5a350827d8f05" id="9bcf4ff2-c15f-4bea-8ec8-8db87791942e" chipset="cnl" name="Sampler" />
+    <guid config_hash="4bfffb81b9376af931bad919fc66ef3f" mdapi_config_hash="33d7ba5d98519f3038ed07f273fe5f91" id="c46c7bb5-f26d-4634-b491-902394af85b1" chipset="cnl" name="TDL_1" />
+    <guid config_hash="e5419b6c232500a6a824c2c58f3b7d32" mdapi_config_hash="b9a01044b9befe9fcf952f26ba4fcc4e" id="aa2d6ab4-99b3-42f8-94d6-4a9aa2baedaf" chipset="cnl" name="TDL_2" />
+    <guid config_hash="ebd014335c55b7be47615354eecae7a5" mdapi_config_hash="21595af7d9d76b7f414c744aeaddbe1d" id="99517a69-b9a7-4124-8f59-06645ea13187" chipset="cnl" name="TestOa" />
+    <guid config_hash="463b3bb46dec1a41472c2a728142ff56" mdapi_config_hash="f29cb304efd62d8712b594d864c6ab86" id="e3cd52cf-c6b0-4019-b369-3bc9c75a0cbc" chipset="icl" name="RenderBasic" />
+    <guid config_hash="f954c414bda0c5cd1b012a3e747be6e9" mdapi_config_hash="59d2e72aefb55a9180a7a7cd5b629e41" id="04546170-d541-4804-96f8-007a454a3f2c" chipset="icl" name="ComputeBasic" />
+    <guid config_hash="3b6635eb3709f346076901ea88ec1f2b" mdapi_config_hash="402f156b276dfaaaf84eb09ec5347515" id="43eb7fc1-dc5e-45e2-a90a-0053f5397271" chipset="icl" name="ComputeExtended" />
+    <guid config_hash="0e47ea7e90aac987097968a231d2dada" mdapi_config_hash="08ff26b1c2405cc1061e71940cf558b5" id="05d5e01f-0800-4975-b36b-7b169cad3fab" chipset="icl" name="ComputeL3Cache" />
+    <guid config_hash="34c5bc89788487e6d32ea9894929b1ae" mdapi_config_hash="0b8dc07dcfe3a03bf65771ee8404fa10" id="03c7a167-2abc-4ba6-878a-f1d80082abca" chipset="icl" name="RenderPipeProfile" />
+    <guid config_hash="dfb00108bfdc1c652f9550bf5ec9262f" mdapi_config_hash="9b4b61a06cf60de356d48995441e6724" id="c5cbc488-6569-41dd-9128-42bf6f0d317c" chipset="icl" name="HDCAndSF" />
+    <guid config_hash="8818a97d48d99673e220075b0ba71eb3" mdapi_config_hash="d3e8cc994e923fc2f79f086273b62ece" id="0316ce4f-e03f-4738-8262-13528fce8eea" chipset="icl" name="RasterizerAndPixelBackend" />
+    <guid config_hash="e1436790af3b1bbea5a0262704c213b1" mdapi_config_hash="7b7377687e294a3c2ee88e0715a65f01" id="21d69ec3-91e1-48a8-acd6-c0c4ec6e819a" chipset="icl" name="L3_1" />
+    <guid config_hash="5ef586cc746e34ab542586805cb26c8e" mdapi_config_hash="06190180046d22f3155558f2211abc30" id="e60e9155-6830-4aec-baf2-1c3c15a73869" chipset="icl" name="L3_2" />
+    <guid config_hash="abdae7b3820fd860c6fec7a98f9654bf" mdapi_config_hash="5cf54f89d0c9ebeeebc46bfde154fdf2" id="47c364d5-1799-4d17-9447-add9358c6451" chipset="icl" name="L3_3" />
+    <guid config_hash="8b3ca983367a86a4dc4c80fe2a4cfbbb" mdapi_config_hash="397319e33a2d28c3602837be8737b559" id="e5ab5c08-3130-4469-8eaf-b23d3dc817d4" chipset="icl" name="L3_4" />
+    <guid config_hash="c5b76b0b898d48bd6305b7208f338584" mdapi_config_hash="9870c08d2dbb2de9836e8effdc5074a8" id="6cdf23c1-f725-414c-959a-c90fa5571b1f" chipset="icl" name="L3_5" />
+    <guid config_hash="667224b11f675b2ac565e18624fad738" mdapi_config_hash="e49091662060a5c502da58bd613abc7f" id="51a2eb6d-9fad-4489-8f22-ab845fe7882a" chipset="icl" name="Sampler_1" />
+    <guid config_hash="e6910b0739c288d68194e64933845380" mdapi_config_hash="d55ee03d24efe992a4029534908c2550" id="afc0f021-8c33-4d60-803d-93487f96c7c1" chipset="icl" name="Sampler_2" />
+    <guid config_hash="525a9fe5285599f695330c45ba2e8b62" mdapi_config_hash="6aa36798625267734b4d066d9090c0bd" id="eddc2f32-b196-4a72-9bf8-21770e35f8bd" chipset="icl" name="TDL_1" />
+    <guid config_hash="b141825840f912e9d7c98a13ae34d600" mdapi_config_hash="af8ee9d86606564460ce2928023e47a5" id="c6d3af7b-037b-4656-95e1-4f838f0a2c14" chipset="icl" name="TDL_2" />
+    <guid config_hash="d2188fa3c865ef430532b127a3fd87a5" mdapi_config_hash="ff33e47c767f6f81d9a779153aae6fdb" id="fd25ec19-3ed1-40c9-8648-1d2387449a92" chipset="icl" name="TDL_3" />
+    <guid config_hash="b421b29d8557dbbf0fe3068c82b3d8dd" mdapi_config_hash="cc850ab4463c23e6017f069d67785c31" id="40dc79f2-88c8-47c6-8f86-f509e39fbe5d" chipset="icl" name="GpuBusyness" />
+    <guid config_hash="3abb2f3338c8d2b6aff2a869ee9030d9" mdapi_config_hash="0b64f16be99304796735d1bd7b6e580a" id="e617cfd5-6cc5-4143-8994-cd36cebb921f" chipset="icl" name="TestOa" />
+    <guid config_hash="d3d8f793ecb17c4748ec1b319310b447" mdapi_config_hash="2513e5019806f4754e86a223cf59a7b0" id="eca4858e-27a4-4bcf-a57f-2616e2f08950" chipset="icl" name="AsyncCompute" />
+    <guid config_hash="878466bee64e6505fde4118ceadff299" mdapi_config_hash="653d46ab9ef10a2b7f511fe3f067e0ee" id="c693e665-867f-4362-91b6-85337f932010" chipset="ehl" name="RenderBasic" />
+    <guid config_hash="ad9a98d85f554b69e9737673594634a9" mdapi_config_hash="f335f856cf2bb4a1d09479fd39aab0ac" id="ae4d01a9-fe55-453c-8c7a-036acd5eacff" chipset="ehl" name="ComputeBasic" />
+    <guid config_hash="9b6d58e5047c130f47999e04b92151e8" mdapi_config_hash="7bf6ffff6913e5536d4ad4dc4fa3b03b" id="05700b63-f044-4c79-b8ae-676972114745" chipset="ehl" name="ComputeExtended" />
+    <guid config_hash="1819d0fc7e1274aaed4dc79670eb4d33" mdapi_config_hash="6ff2fcd2498448af0ed284e69be555a8" id="89e1f7ae-1100-4b4f-92f3-0caf88e3d833" chipset="ehl" name="ComputeL3Cache" />
+    <guid config_hash="93df26813118e45063763661ffce6b77" mdapi_config_hash="d15e72e9d0ba0a4a94ed6985c86690ef" id="7bfa0a68-c327-46e8-a556-cfa7b4651071" chipset="ehl" name="RenderPipeProfile" />
+    <guid config_hash="91cd4922309b1259d26360831c966532" mdapi_config_hash="bc3b779c816e5763231752dff01b698c" id="697eadd2-bc54-459f-b634-fcb3d4a2d627" chipset="ehl" name="HDCAndSF" />
+    <guid config_hash="8a7c6d0c784cc13fcb65d3baa8bb44e0" mdapi_config_hash="9aa273f8a120f0a31667c247704bbf6b" id="5cda6ba5-f3b7-43a4-8027-8d0958a263c4" chipset="ehl" name="RasterizerAndPixelBackend" />
+    <guid config_hash="9d588e74e635377125299c5f3aa5c7d6" mdapi_config_hash="ae9e960222e31c486205e0c0f0603138" id="834bfd76-48d7-4552-81fa-ba1f21d6014c" chipset="ehl" name="L3_1" />
+    <guid config_hash="3310298c4729cef20b0f20ddc8658a86" mdapi_config_hash="97d31df77e8723b93d1d215b5e596bd5" id="f3da54bc-da93-4008-bafc-daebdd79ab40" chipset="ehl" name="L3_2" />
+    <guid config_hash="5d08c5947d680f307e1a3956cf87b818" mdapi_config_hash="375da2b23bb646620d82fae96f76ceb2" id="fb4664db-4a4b-4d45-8f38-ceab6eac078c" chipset="ehl" name="L3_3" />
+    <guid config_hash="7ba4d260cd6343472d1e740970b0e7f3" mdapi_config_hash="78e18bf4b7860da80dbdffdef1a57d38" id="0092ff25-7595-4671-b21a-d7d94a19a38b" chipset="ehl" name="L3_4" />
+    <guid config_hash="3890a445c8e58c9d7cefd7c3dcdd07a3" mdapi_config_hash="fd720998c18a22560a36fbf0ebc7346c" id="079c833a-21cb-4832-bc9a-3ea6fc42f516" chipset="ehl" name="L3_5" />
+    <guid config_hash="afa077ca791b2e4ee74ddfaf006d8fe2" mdapi_config_hash="f89f6cde18683374b31354a1a0eb6738" id="bf151068-b27b-4851-b46c-627c132f1cb4" chipset="ehl" name="Sampler_1" />
+    <guid config_hash="e14383b58aeecf5a983d6ec57e3b2558" mdapi_config_hash="d8162037057cd1550568345e71f20e72" id="5e64ae48-92a7-49b3-b7d8-af36b32ee866" chipset="ehl" name="Sampler_2" />
+    <guid config_hash="dd6e1a4c0aaaa84a36f83bb3772e26f6" mdapi_config_hash="7f0d9b461ff5b0fd927051c95b8f80b1" id="d1725c84-80c6-4488-9867-82b44c88fea6" chipset="ehl" name="TDL_1" />
+    <guid config_hash="39c75fae3e4bc24fce0759413caac64d" mdapi_config_hash="7d8add695c157a7908abfef46b767e28" id="47e27fcf-9904-4fc0-a661-636dffeafe7d" chipset="ehl" name="TDL_2" />
+    <guid config_hash="79df0b5785c2464bedddf7c2ea34fae9" mdapi_config_hash="011bb38aa81c2e56de1e7cf9653a4047" id="98154f5e-cf17-423c-a096-e696f87c2906" chipset="ehl" name="TDL_3" />
+    <guid config_hash="051a88dbb1037b1e96ab8742322d5195" mdapi_config_hash="8f1f14586a4a4cbd9603488b87f3a571" id="85254749-e937-4205-9b40-5df8847c9ee8" chipset="ehl" name="GpuBusyness" />
+    <guid config_hash="75555135047c7824daeac619e0118fef" mdapi_config_hash="d754b8eaa7773e50d8a14775482dd59f" id="4cbcfaf7-3c0c-42b8-a324-b1e58329c732" chipset="ehl" name="TestOa" />
+    <guid config_hash="cba79c72b2989348f9db79f65aee74c7" mdapi_config_hash="d173cffda0e6aa07c693ed3636b09e3b" id="c17af13d-3953-432b-9bd1-81346b4c2092" chipset="tglgt1" name="RenderBasic" />
+    <guid config_hash="6bfccfd98beccb8b008e8ba30a7a553b" mdapi_config_hash="c2e0ad3ca3f17e7e1dc6c9c83c83619e" id="79a0514e-40d7-437a-90cf-33e02857adc6" chipset="tglgt1" name="ComputeBasic" />
+    <guid config_hash="338f4f73347007310b6860c65e83ce87" mdapi_config_hash="baf3a770bb05723d39743ee683dd84c3" id="619eabea-0191-4d75-aaca-4217837215aa" chipset="tglgt1" name="RenderPipeProfile" />
+    <guid config_hash="b8afaffb07c9b51a3c62fbd5baaafe6c" mdapi_config_hash="57d8f33923d6ca368a72c4b90952ae40" id="b1560378-cb32-4d4b-af30-ffeb163655e6" chipset="tglgt1" name="HDCAndSF" />
+    <guid config_hash="933072588e6f7fa0adf6671f7a77dc28" mdapi_config_hash="e55d617404216cccdd77b6cb30bc7116" id="36e7fc09-3fb7-4b46-a6ff-ba1ce767db7c" chipset="tglgt1" name="RasterizerAndPixelBackend" />
+    <guid config_hash="f4c2bf455adbb7edb4df0b1235f70737" mdapi_config_hash="67a489dfa26ec9ba0d09f5a65ec4b33b" id="4a46a4ee-437d-4726-ac61-31e47072f706" chipset="tglgt1" name="L3_1" />
+    <guid config_hash="dc5293d4e321462b3c8b4349d8d0ed69" mdapi_config_hash="d3c800c0f3d91f8654aeb2d2a6050cba" id="2456d8be-5c99-430c-8172-8294fdc39331" chipset="tglgt1" name="L3_2" />
+    <guid config_hash="b8cdb44eaf81e77955a0ea1021b7f655" mdapi_config_hash="f9c2c916752ce281b9f2613a187a1bb3" id="71e2a606-810c-4252-bf7e-16fed118f4b5" chipset="tglgt1" name="L3_3" />
+    <guid config_hash="8c15daa9e0047d32d8c5a505441c9367" mdapi_config_hash="82bc535c6b08955c4388fa6c4577468b" id="327a91a5-f93c-449d-b5e1-ab92cb1180a1" chipset="tglgt1" name="L3_4" />
+    <guid config_hash="380594159a30354a8c0af095e75ce33d" mdapi_config_hash="0491376295a874188c97e8c2f4a1c673" id="a8de84ca-1624-4e0c-8046-d5265566c15b" chipset="tglgt1" name="L3_5" />
+    <guid config_hash="91ed2710716bbdc5da2b09c1d70ea6ab" mdapi_config_hash="b7b525587e4fbc34b4b750d6c28ccd49" id="6f376729-c56a-4560-a0eb-f4a17ec6df84" chipset="tglgt1" name="L3_6" />
+    <guid config_hash="ed86cc9afa0b2871343d7f5b8bdc799d" mdapi_config_hash="0b918b60a6c41a4af17a3bede6b682bc" id="4876283b-1889-4cef-880f-58de9dc676cb" chipset="tglgt1" name="Sampler_1" />
+    <guid config_hash="62e53aebb5a7cc918adc6742fa29ee56" mdapi_config_hash="29847733f747bcc4e238adb8e21e6a45" id="aeddd71b-2f93-48de-9e69-1cba5865473f" chipset="tglgt1" name="TDL_1" />
+    <guid config_hash="216f8a4dd88b3a519e34d715cab10c99" mdapi_config_hash="e72a704496540537e6317e4a9097ec9f" id="a4089c3f-a697-4213-a58b-70e150969226" chipset="tglgt1" name="GpuBusyness" />
+    <guid config_hash="829796b947ccde345effbdf10333f4ea" mdapi_config_hash="8f54bdebe2bde50b88c02cf4dd420d7a" id="ffde7a80-6d78-42c8-8603-838de28d07da" chipset="tglgt1" name="EuActivity1" />
+    <guid config_hash="0857d40a772c148cb305ef610db5d67c" mdapi_config_hash="68624f860ea8f0e6a446d0b02d5868c7" id="bd3186a3-6e96-4c70-a5d9-65d4bea6f668" chipset="tglgt1" name="EuActivity2" />
+    <guid config_hash="8133879afa7db394475e4f4b803abc37" mdapi_config_hash="2908ee3b1f77b7759366a8922ef8d442" id="b59e975f-044c-4e0c-afcd-46aee1107b81" chipset="tglgt1" name="EuActivity3" />
+    <guid config_hash="fa66e28922ce174de8023c3f445cae5e" mdapi_config_hash="1fb1fdcc4637a0dff0a39a8f74333ce7" id="948f1627-f642-42a6-8304-801d7db112d2" chipset="tglgt1" name="EuActivity4" />
+    <guid config_hash="943086e262c3b7bf208729087e3346d3" mdapi_config_hash="b483f573cd4349dd48e0168c277574ea" id="243ffad2-626e-4d05-94a0-af7068e18a84" chipset="tglgt1" name="EuActivity5" />
+    <guid config_hash="b5e4ba8634a9431f3e477e91d49c922e" mdapi_config_hash="acdc8a6338ee6465ec3726b4dbe11b09" id="1f367b67-1f45-469b-97fd-eac88aeb1f7c" chipset="tglgt1" name="EuActivity6" />
+    <guid config_hash="bce06cc3317021a1bca092e31077c120" mdapi_config_hash="9a2e97a77cef98d3059e2d07d6efd870" id="7c2db23c-1fb4-45df-a5d5-2345d23c10fc" chipset="tglgt1" name="EuActivity7" />
+    <guid config_hash="2cbc81048a9b92ebb143b18a10802c5c" mdapi_config_hash="684747208975b2f0279f5b829ab24b7b" id="b4c81162-2c96-4cf1-86ae-ecff3d57ee4d" chipset="tglgt1" name="EuActivity8" />
+    <guid config_hash="c7195c52cb01e383353dfbffa68baefc" mdapi_config_hash="114b3f158d5e37178af7b031759c3768" id="6f27aaed-4f08-4e0f-95a9-231d9b4fa111" chipset="tglgt1" name="TestOa" />
+    <guid config_hash="b3f89fd4211d1f0e5040fdba467f8923" mdapi_config_hash="6dd33bc3aa87f6ca3811c3e617024e43" id="0fc397c0-4833-492c-9ccd-4929d574d5b8" chipset="tglgt2" name="RenderBasic" />
+    <guid config_hash="6bfccfd98beccb8b008e8ba30a7a553b" mdapi_config_hash="c2e0ad3ca3f17e7e1dc6c9c83c83619e" id="397a46d9-03dd-4696-8196-270362e1c575" chipset="tglgt2" name="ComputeBasic" />
+    <guid config_hash="25155ad45887742faf4286e5d637ee76" mdapi_config_hash="907735bc616cd88d18cc07b791f310b1" id="684ed715-a0ca-499b-89e0-25d1cdf0c737" chipset="tglgt2" name="RenderPipeProfile" />
+    <guid config_hash="2f5fdc0a222330844b4838c01ff2f0d7" mdapi_config_hash="5e59bd24cd51d97e8bdf10d0105b571a" id="3a4c7510-7725-4bf8-9eae-59115a2431c6" chipset="tglgt2" name="HDCAndSF" />
+    <guid config_hash="68ae806b961b5fe10bc4538f3437c1aa" mdapi_config_hash="3c336f4983f38baedb49ee0ba6463a05" id="6f02479c-e9ca-4c2b-b1e6-216a9e1c5ef7" chipset="tglgt2" name="RasterizerAndPixelBackend" />
+    <guid config_hash="9c950c6ca07f1eccfdcfd49dad046c79" mdapi_config_hash="037ce99af3124b147e626c732fed685c" id="7e809cb4-6e90-44cc-9c57-6eff58ad360a" chipset="tglgt2" name="L3_1" />
+    <guid config_hash="289db172e2380a6b75aa18135a178fa5" mdapi_config_hash="d96d8a44d3d1cf20e43a8d4a0d455944" id="0dde1bb6-340f-4350-b398-2b0228573967" chipset="tglgt2" name="L3_2" />
+    <guid config_hash="e8f56ddd87c511ec0550e6607f061cba" mdapi_config_hash="ef430240598e5d1b52be27df97b2cb05" id="8ecaeff2-78f4-4e29-b331-d757e6a74ed0" chipset="tglgt2" name="L3_3" />
+    <guid config_hash="f39841acc09f409b1d970cfcdf561fab" mdapi_config_hash="04e1f19526af2ceda229588104702531" id="30cd8433-f679-401e-b578-19e22975e84f" chipset="tglgt2" name="L3_4" />
+    <guid config_hash="63601012e6bccf1956384ab60dce30bb" mdapi_config_hash="de2796143442a5bf31f1da384b2537f7" id="e0efab61-c904-4354-9fc5-35e8b8bc7d20" chipset="tglgt2" name="L3_5" />
+    <guid config_hash="2c297ada6f33ef20eeca56c8d4beeade" mdapi_config_hash="9a5506a742413b90fd2f3f76ed0c8de0" id="4066ad45-4a68-4acf-86b2-fa5a6a914db7" chipset="tglgt2" name="L3_6" />
+    <guid config_hash="4a5906954e6d2fb44057c6cd1d7548f2" mdapi_config_hash="d4ce0c915b228a3ba5803cb3ec5bf87f" id="17e2be13-39fe-45f0-867c-0f83fcc51654" chipset="tglgt2" name="Sampler_1" />
+    <guid config_hash="21cca53ef0ba57fdeccd60634bb2647b" mdapi_config_hash="0301fc7eaddaba1e6ed73c66a66cb53f" id="0c3c3235-2e91-4ef0-8562-4ea1501e8612" chipset="tglgt2" name="Sampler_2" />
+    <guid config_hash="48011bc9d54f96fa65d6913fbf1cee7f" mdapi_config_hash="49abf97f3d60ef68f41f88ff3137b09c" id="ee6f5fa3-13a8-4842-8b34-f7541a0f76a3" chipset="tglgt2" name="TDL_1" />
+    <guid config_hash="270908dc68b94e7f052cdc9b2b283167" mdapi_config_hash="e8f763b7b1f93e2c4614c9cb6e5efea8" id="f1577929-9215-488b-9899-d12b6e799743" chipset="tglgt2" name="TDL_2" />
+    <guid config_hash="c3cfaa9f10fc1109831e511184915858" mdapi_config_hash="1bd054308052f97adffa7c6207f3f653" id="d5890d02-b2be-4742-a16e-17190a92a301" chipset="tglgt2" name="TDL_3" />
+    <guid config_hash="152652e6549d438757c692a4fcf35247" mdapi_config_hash="3a1737f21051c9ad2da32d250dd6c4d2" id="19fe64eb-ac4f-45c6-b2b9-af728b21753b" chipset="tglgt2" name="GpuBusyness" />
+    <guid config_hash="836d21da6c81399e7f4bf0ca5cc2adc0" mdapi_config_hash="cb12bd77d6d6cace3172867b543e828b" id="414ff049-80d3-48c0-b79a-bd8eed097a06" chipset="tglgt2" name="EuActivity1" />
+    <guid config_hash="ff656dc8ef36a80023ff170f50cba220" mdapi_config_hash="fd6ba067ae79689bad93a1581db5dc72" id="fb65c819-7ac2-4c69-aa9d-b72a18440705" chipset="tglgt2" name="EuActivity2" />
+    <guid config_hash="a0548951f70bbfc2d608fced4af8703d" mdapi_config_hash="c80f4de1346995f6883330fe36e7ee4c" id="7e1c6469-9de7-491a-a7c5-1bd8f9966826" chipset="tglgt2" name="EuActivity3" />
+    <guid config_hash="4fb45fce661994bb712d58bf21dcf617" mdapi_config_hash="b206a58e00605b2100f454e8746c141d" id="a43f80cd-5cc1-4a2c-a750-40594af2b661" chipset="tglgt2" name="EuActivity4" />
+    <guid config_hash="80a8e01afb1d0480f6560a3d55578240" mdapi_config_hash="bb7bd9a4082249a7503ebf1b6d56dc73" id="7e6e555c-aa5b-4c8d-992a-454a5a335c6e" chipset="tglgt2" name="EuActivity5" />
+    <guid config_hash="b466c8edcc118944f73725dd3a1d0997" mdapi_config_hash="3522f98e3d010205276910c21d66f719" id="f3723f39-ecf4-4ff2-a4c4-80e87876b86f" chipset="tglgt2" name="EuActivity6" />
+    <guid config_hash="4e334e8ccb537e3a714cb772937895e6" mdapi_config_hash="f0417a67928b18d50e5c4a390ed6b58d" id="c0d2cd0a-e2be-4b12-916d-2f3aba0ebf9e" chipset="tglgt2" name="EuActivity7" />
+    <guid config_hash="d1d8327895c6292ea720571bf6aec48d" mdapi_config_hash="13b16625e9e7842ec07dfe7f607be03e" id="1fbbd218-693c-4035-b4c0-ce4dd139d828" chipset="tglgt2" name="EuActivity8" />
+    <guid config_hash="185673d9c229adff444a595e6c217439" mdapi_config_hash="51644bc87975e69064d0575227a663f9" id="6607f034-d053-40d1-8215-67c07f3041bb" chipset="tglgt2" name="TestOa" />
+    <guid config_hash="43974fb5727effcbe7778fd46549e772" mdapi_config_hash="fed843ee8147cb46213808401f33fb28" id="5b492c36-73f7-4827-83b3-c6863697ec51" chipset="rkl" name="RenderBasic" />
+    <guid config_hash="6bfccfd98beccb8b008e8ba30a7a553b" mdapi_config_hash="c2e0ad3ca3f17e7e1dc6c9c83c83619e" id="09740672-ccc3-48da-a5bc-64994fe3a0a7" chipset="rkl" name="ComputeBasic" />
+    <guid config_hash="5995be9c351cc5e77549039adea73bee" mdapi_config_hash="54b1e569c3d867ae2ae1766d8fa7697c" id="833bb0f2-9483-498e-b3bf-ebf026a6301a" chipset="rkl" name="RenderPipeProfile" />
+    <guid config_hash="3755a62bd397702e10e938cace2a4057" mdapi_config_hash="e0f4181b0d3d62757992dacc4e320554" id="40ef13ef-25d9-4ac6-8582-ce97c47fc900" chipset="rkl" name="HDCAndSF" />
+    <guid config_hash="62d2b538c48884776e36a37640e3bfca" mdapi_config_hash="570d42139b6b0a5d2b706744eed05d55" id="bf60f7bd-9029-4edf-8311-f6e86599395e" chipset="rkl" name="RasterizerAndPixelBackend" />
+    <guid config_hash="5e5a0c2a907a663447e013fbf2942f28" mdapi_config_hash="04dd89759bb683e778c85633cf13bd37" id="a5f6ac3d-853f-42a4-a038-c4a09e8075be" chipset="rkl" name="L3_1" />
+    <guid config_hash="8d6ecccbe72202d243b499a226ee90f6" mdapi_config_hash="9a0750b2a700efa43693d980a91a0e56" id="bb080384-a01f-442f-8be2-3eae2c7394cd" chipset="rkl" name="L3_2" />
+    <guid config_hash="19b7a9b31c58cdcb0e2da74c0abbbf31" mdapi_config_hash="5ea0cfa8f861e9e8d60622a43a92056b" id="9f39ce80-0463-484e-b797-3135b7e0ab0a" chipset="rkl" name="L3_3" />
+    <guid config_hash="7f62b391293f3adc7e0c5310c1a15236" mdapi_config_hash="803b22a6409af4299c0173d75015b5e9" id="11e091e1-bbd3-4bd6-9ce8-8982d2d3a3b2" chipset="rkl" name="L3_4" />
+    <guid config_hash="65ef549987fa20f7e456753f65c96321" mdapi_config_hash="6f95252764fcb6f19a42056def00e8e5" id="0f2e1818-c190-494a-a828-2ed4422d71f3" chipset="rkl" name="L3_5" />
+    <guid config_hash="5381ff70169a742d68b883cafa9cea3a" mdapi_config_hash="72f8562f53ed845c9dd8c75ce6642614" id="ebd91ba3-4d01-4bdf-8752-384cd0a4e139" chipset="rkl" name="L3_6" />
+    <guid config_hash="d015fe311cb9c1e12da4b2138d9cdea0" mdapi_config_hash="acae891c97b089b79b8916cb9c92a88d" id="5102fa66-b5f3-45f2-a16d-0a13a4cbb6c9" chipset="rkl" name="Sampler_1" />
+    <guid config_hash="f0132b7b0e308361b88e5c74862d358a" mdapi_config_hash="8bddce2012f8f10a3412daf93ef64790" id="8706c725-7753-427d-ae2d-ba25c1168f2a" chipset="rkl" name="TDL_1" />
+    <guid config_hash="c3a06bbb1f4a892dc7f53f85ce47af86" mdapi_config_hash="e07187e4bd2744e8bf3e90e6fc40349a" id="3eab195e-e4d8-482e-9981-811935722b21" chipset="rkl" name="GpuBusyness" />
+    <guid config_hash="5432b2e81f0ee59fe0ce8fb0ed6467d5" mdapi_config_hash="772c61be685fcf2e6694eefdf6bb2496" id="100ae8ce-31c6-457f-97a2-dfd44812bce6" chipset="rkl" name="EuActivity1" />
+    <guid config_hash="58a0c1820e0cabd0f8243b582d748281" mdapi_config_hash="fbd4560cf3066e1ffa0bdab8d6c39b08" id="7e926c0a-471b-40b3-a641-75f3d73339ec" chipset="rkl" name="EuActivity2" />
+    <guid config_hash="6febae51d8bf17ec0338b6c1e0a1c464" mdapi_config_hash="565ccbe6a2d7fb7952cc4d109846ddc5" id="aca9005f-fafe-4d02-a9de-b2584ff76f04" chipset="rkl" name="EuActivity3" />
+    <guid config_hash="f8e7d2e615ec055ccce7f17c060510b3" mdapi_config_hash="55af344496e411184a53f184e551e846" id="ad96806d-7c0d-49f0-b844-c5010ade30af" chipset="rkl" name="EuActivity4" />
+    <guid config_hash="ae29f57cc010e1df3e54b2a4b26260da" mdapi_config_hash="b5e52e8b9a38f5283acad910759f4bf4" id="1669e79f-976e-47ba-a553-0a716ebd3c71" chipset="rkl" name="EuActivity5" />
+    <guid config_hash="b71717fe750ef661bd9fa449c8d31eed" mdapi_config_hash="3e6c988410dd5f72aec62e382876df70" id="d100e474-1e6c-4100-812b-71ec9cfe3523" chipset="rkl" name="EuActivity6" />
+    <guid config_hash="e22892f60cde8659f1232e841465d9a7" mdapi_config_hash="2b0bd788a4dd148293490faa4e4462cc" id="b22d38f6-a056-496a-8d7d-dede47051806" chipset="rkl" name="EuActivity7" />
+    <guid config_hash="adb6647fc3b2f89aaf0db2d7982aba41" mdapi_config_hash="b8374fb02e01d05ec140148aa6542d71" id="c68abf37-fe6e-45f6-9dcb-549b3fbef699" chipset="rkl" name="EuActivity8" />
+    <guid config_hash="6a817294a8e34c900d6aadd3ca02bec8" mdapi_config_hash="9c1e8e315564af8e3c6d3fcf8f2a2cac" id="74dbc739-d871-41b5-be7b-fb547ac5bec9" chipset="rkl" name="TestOa" />
+    <guid config_hash="3b0ed513d1a7c63853a820e5e748438b" mdapi_config_hash="315a336fee753cf5618db15d2eeb19b6" id="1caf6b6d-a1ef-40d3-9033-311e482b826e" chipset="dg1" name="RenderBasic" />
+    <guid config_hash="6bfccfd98beccb8b008e8ba30a7a553b" mdapi_config_hash="c2e0ad3ca3f17e7e1dc6c9c83c83619e" id="e347a2bd-079d-4a77-b546-c3c114c55bae" chipset="dg1" name="ComputeBasic" />
+    <guid config_hash="f883320bd055670d538f60b8e6b27aff" mdapi_config_hash="ffc07e00266f5f110d13ddb6d217c58a" id="3b27f553-aebc-45ec-aa2f-926d81a91fd9" chipset="dg1" name="RenderPipeProfile" />
+    <guid config_hash="3a522ea0727a43a576351210fd6896e4" mdapi_config_hash="7e6ee2d91311ba67d5e0ab19669e5642" id="1fa73aed-3861-4c19-8105-e55986c8a4e5" chipset="dg1" name="HDCAndSF" />
+    <guid config_hash="18077e8f2d9d7ed2076a712a031dec43" mdapi_config_hash="a14b0d936832c119c334a12f3a2a4736" id="2bb016ee-a9b7-477e-8d5d-f7fd179a8f16" chipset="dg1" name="RasterizerAndPixelBackend" />
+    <guid config_hash="f2dad56fb97463feb948746a47673cfe" mdapi_config_hash="41e2d2b5bce44ef057c918f6c93aaecd" id="cdccda4b-c7c9-41a9-965f-fc2adf8cff0b" chipset="dg1" name="L3_1" />
+    <guid config_hash="d53b37306fedd5edada83df8a0c9f230" mdapi_config_hash="1799a960b844f0de04e4ba4331fa8349" id="3c44fb1b-f9b3-4d52-a507-e2b2a80ec8b7" chipset="dg1" name="L3_2" />
+    <guid config_hash="b409195dfab359d18b214b7769fc9f19" mdapi_config_hash="1764ebcd7fe7523785f0bb34abebadbe" id="ec911098-71bf-4432-9153-6143e3cfbe06" chipset="dg1" name="L3_3" />
+    <guid config_hash="46eba53287a6fd9a4e0bfb9910893843" mdapi_config_hash="a56ab80af81b9b80fa469e3d0de29cbb" id="17d351db-7916-4eea-9817-29ca522daacd" chipset="dg1" name="L3_4" />
+    <guid config_hash="d2efee8770c9bbbba1689c88c464758b" mdapi_config_hash="33d494933d4006521116be339ac25019" id="f2de5846-f330-4d26-ad41-824deb6b53f6" chipset="dg1" name="L3_5" />
+    <guid config_hash="0250bcbbcb791b76750387522e0fe3b0" mdapi_config_hash="9e633fcb9c5b1e40870082810bc37ada" id="8f4ccb12-ee11-4741-93d4-d431b8ca58ef" chipset="dg1" name="L3_6" />
+    <guid config_hash="37cc4cda9d9c8015181c719f17142c82" mdapi_config_hash="4c4a77a11765d5cf7297b1503b5a3f7d" id="d336f948-7e5c-41a9-be57-e3b01b8c829a" chipset="dg1" name="Sampler_1" />
+    <guid config_hash="ea1d527ce36e5829006f27e93eb527a3" mdapi_config_hash="6368419fc3f1a9c280d8ba44bdd7f4f1" id="c2929b2d-4ce9-4161-a1ac-fff0a75436b9" chipset="dg1" name="Sampler_2" />
+    <guid config_hash="9a88c13c80a3ddcaa5c7456380ee3fda" mdapi_config_hash="0dacd0234a9a4d8bc3b6a260c4464834" id="a98b240c-71b7-4e72-b167-8538a581e26d" chipset="dg1" name="TDL_1" />
+    <guid config_hash="58af884c274890892778f1666abf41ad" mdapi_config_hash="32ebce609c59ebe458a7e3825fb5a48c" id="5e7aa748-e1a6-4282-b3ae-48dbfb06dcf8" chipset="dg1" name="TDL_2" />
+    <guid config_hash="2b1a4a7b302b1c0097be59d352fcc28b" mdapi_config_hash="73b09f5594f2104d9b6b90a07599ec61" id="e12f8fc0-2eb9-4bf6-bf44-a13ceb42c9f7" chipset="dg1" name="TDL_3" />
+    <guid config_hash="17b1c751c0130c8949b71fd5d405778f" mdapi_config_hash="e36f027d7cc14d5d77e3978db97efdc6" id="81be185c-7ac7-4a17-85fc-4144ccba4a46" chipset="dg1" name="GpuBusyness" />
+    <guid config_hash="c4c57ffc24aeb94139731c32a28b51e1" mdapi_config_hash="c39c1c832edb8220860c46a4174d3d82" id="5354b8d9-12fd-44eb-8f7d-0a4dffae4409" chipset="dg1" name="EuActivity1" />
+    <guid config_hash="744790864bb4ff0e6600267ef6ae522a" mdapi_config_hash="eb49ba8b1a592d64e2c7996357ee540f" id="3225b6c6-805a-4e93-aaa5-5f09d87b31f9" chipset="dg1" name="EuActivity2" />
+    <guid config_hash="449a2e0ad45b8f3414a46e07d392971d" mdapi_config_hash="ff2f3818471fcf0d82e2c9bd93c4b3e9" id="c423d483-13da-4bae-9b61-c13ec19ee450" chipset="dg1" name="EuActivity3" />
+    <guid config_hash="8d5cb6bfe077f4f423c77cc39d465717" mdapi_config_hash="6abe34a989f329d4ead0f7ea8d78ca77" id="c7388ce3-9e3f-4804-a215-771791c4ea3c" chipset="dg1" name="EuActivity4" />
+    <guid config_hash="6003d223dee037ac2e24287c65d16686" mdapi_config_hash="bed831c292dd39a1d3ab99953802e09a" id="7ebc4a0a-5dc3-4de3-a8f8-2a6d1a95427f" chipset="dg1" name="EuActivity5" />
+    <guid config_hash="25117c0e61a97adaeae8070f1bd67b77" mdapi_config_hash="0e6668f4578041599c4b66f54f18a116" id="811a34c7-87f3-4d4d-b366-d4b5f5dc5be1" chipset="dg1" name="EuActivity6" />
+    <guid config_hash="302c5597353ebf81e4a8573dc8bedf89" mdapi_config_hash="8fcb9c5a064a3a38bd91cc78186f81c7" id="6ec13866-51c1-46c3-818b-c63cf38efcd5" chipset="dg1" name="EuActivity7" />
+    <guid config_hash="4630bd7b5bd097d512476903ab04938c" mdapi_config_hash="08dee2e1b8a5dde3fc89eb10fb6a5b4a" id="4bc9e67a-0ebd-4d65-86cd-2eb961ccac59" chipset="dg1" name="EuActivity8" />
+    <guid config_hash="a6fd576e08523e341220ce95087fa449" mdapi_config_hash="6c223244d277a52f874cd99a2ab89882" id="23f51139-6973-4b45-a211-778834ce2c9a" chipset="dg1" name="TestOa" />
+    <guid config_hash="21fbe2cd2b53541e3b761d579516ed12" mdapi_config_hash="66837182711f03f84fe87408ebd0a617" id="4b886bf3-61ff-4381-9994-ac9b91202fc7" chipset="adl" name="RenderBasic" />
+    <guid config_hash="6bfccfd98beccb8b008e8ba30a7a553b" mdapi_config_hash="c2e0ad3ca3f17e7e1dc6c9c83c83619e" id="eb6a0ef8-4e8f-41fa-85ba-686835711f6b" chipset="adl" name="ComputeBasic" />
+    <guid config_hash="29513a0b338299ead603390779f6c120" mdapi_config_hash="ee12197058eb520427dc1d425178eb56" id="ee81cfab-667d-46c5-a2b7-17283b28c38d" chipset="adl" name="RenderPipeProfile" />
+    <guid config_hash="ebc502d01dac0cf9673eb0fef2506f91" mdapi_config_hash="80fef6b5d722083a1fb9e0122d0a51a5" id="73acd312-486b-4aa8-bcd1-232bfb29481b" chipset="adl" name="HDCAndSF" />
+    <guid config_hash="28d420151b16828e8ca210caeb56b9c8" mdapi_config_hash="fbc93cbb50b2798b87a72c2dd0dbf222" id="ef158e77-1bca-402c-b2d6-1654908fd977" chipset="adl" name="RasterizerAndPixelBackend" />
+    <guid config_hash="031b10d628ca033ad143ff80933f9278" mdapi_config_hash="b3259d9497ba9d9f5b0be7937383bedb" id="b997e963-d322-4d97-b631-f875b2135fc9" chipset="adl" name="L3_1" />
+    <guid config_hash="340670c90887c04a160735540fd60a05" mdapi_config_hash="beb8afb29ed1a424e319591041423417" id="57c490ef-4993-465e-b1e0-774fbc104fdf" chipset="adl" name="L3_2" />
+    <guid config_hash="a5c8e121989ace5c9e12158a91da582c" mdapi_config_hash="70dbd52b6c70fe3f6c7b7d265ceef298" id="50d02e16-414e-4b4c-adbd-71c584f857b5" chipset="adl" name="L3_3" />
+    <guid config_hash="1ec73fc7528bf2e976133100aefaa4b6" mdapi_config_hash="0716cf82fa0ba9963b363c8641d6e875" id="896dda0d-84b8-4d1d-b54b-c2e5ded94581" chipset="adl" name="L3_4" />
+    <guid config_hash="b5aea697ccc39a129b0c23635a96e001" mdapi_config_hash="969f8b8b34d6216d60c7190661a9b6a9" id="f5e936f0-aacb-4aea-80a5-d434f21d427d" chipset="adl" name="L3_5" />
+    <guid config_hash="43a026d0af29f7a18a945e2d4b350573" mdapi_config_hash="510e8490a07a363379a4c058cb474eda" id="c9b51681-9e54-49b0-918d-4e588078d5cd" chipset="adl" name="L3_6" />
+    <guid config_hash="c809f1aed72d8cf173fcead43781c297" mdapi_config_hash="f9c86d51b0a47f9fcd1e4e1c66653cbc" id="c4a47a95-b80a-46d3-abf0-98a95a840407" chipset="adl" name="Sampler_1" />
+    <guid config_hash="8c50773e2c85d6408fcc2d514447144f" mdapi_config_hash="030c3f4d0a0cfd8134531b701e7b743b" id="2d7c9960-0ec0-4aa2-9bd0-e6d76f214bf7" chipset="adl" name="Sampler_2" />
+    <guid config_hash="ee9b574cbcc326fa0884278048553a53" mdapi_config_hash="368d6fa333da9141a6247ac4d8448f23" id="85afcb2a-90a8-4b1a-adc3-61e322884520" chipset="adl" name="TDL_1" />
+    <guid config_hash="f32fb585f3220f879ad39c4972282af2" mdapi_config_hash="44438bc611f14882a23a4bdd67c8e6ec" id="780e4dd7-8360-4294-9ff6-3bef25e0fe09" chipset="adl" name="TDL_2" />
+    <guid config_hash="15196ca6dc6aa4241d9de9fc75121111" mdapi_config_hash="b357e4b704d2bb149aa2c5313bf7aff5" id="0348b595-94ef-445f-b4e5-11d0076b6307" chipset="adl" name="TDL_3" />
+    <guid config_hash="d033ecd48056664daee05fcf4ee777ef" mdapi_config_hash="f18943412a44e4a69d244a3a78a41e65" id="67577936-ac11-46a1-b07d-44ea1318df5b" chipset="adl" name="GpuBusyness" />
+    <guid config_hash="85e13c721ad46cd039e22a1ac180c98d" mdapi_config_hash="6818187e4856c8b2acc78d588ea87056" id="b1c1cb56-f82f-444e-b408-aebbe4777f40" chipset="adl" name="EuActivity1" />
+    <guid config_hash="a2f87cd5035b6b6211922d49641b66a7" mdapi_config_hash="f0bbc48e521ea0ad8a3a745dc3eecdec" id="b45c7714-75be-4639-83b8-258392695044" chipset="adl" name="EuActivity2" />
+    <guid config_hash="62d20415870552f44c9de714f245da09" mdapi_config_hash="b94a87d76d2b5fdb4a4aa30b02886e3d" id="e63fc92b-0c14-48b8-b832-52631f75b1c6" chipset="adl" name="EuActivity3" />
+    <guid config_hash="3fb95f065719b601ec6878eda687adeb" mdapi_config_hash="59eefdbc87164025ecdac51eb4c604a5" id="a5bd7cc2-3b17-4287-bdb2-a6814998daa1" chipset="adl" name="EuActivity4" />
+    <guid config_hash="3b75af09f7ac5c393bd7a6aad2fddc11" mdapi_config_hash="8ebe6beda3b86aaf5f3dbf10ca4d430c" id="036c9033-142d-438f-a5ec-ea0ec62a6f43" chipset="adl" name="EuActivity5" />
+    <guid config_hash="a9d708fdb3ec73b208b1092a1feeffff" mdapi_config_hash="b473bc4bd92f94c51f39cae220f56ff7" id="fbba3669-b6db-4aa8-a993-b2e51998a8dd" chipset="adl" name="EuActivity6" />
+    <guid config_hash="b420d7b956fb1b097a7bb812b6c87dc0" mdapi_config_hash="d81f15a77d18a099782c18acaa3132f7" id="c3ea2a23-f1c7-4a19-9da2-b569226fb6de" chipset="adl" name="EuActivity7" />
+    <guid config_hash="5face026dac6a0549f8a28cf226dfbc8" mdapi_config_hash="de7326838bcc8abf024bac9c771e22e4" id="a5e2f79b-cecb-4eff-8f29-cda8e2a58749" chipset="adl" name="EuActivity8" />
+    <guid config_hash="1affe7abeb3739d2c845cc6fa9aacf88" mdapi_config_hash="d071f4933574945979595246be61d3f0" id="89173c19-fcfe-48da-ac26-fb64425f141b" chipset="adl" name="TestOa" />
+    <guid config_hash="03581feed70897846839305bef294970" mdapi_config_hash="580f399d67c355cd996df94bf6592ff1" id="f5b8f05e-c84c-4f1c-bb05-68fbea73879b" chipset="acmgt1" name="RenderBasic" />
+    <guid config_hash="1909915afc07af2faffd448b12b5fa70" mdapi_config_hash="a1dbe33e0f731b73942f4d7a11885780" id="53ee6271-905c-4b2a-b449-9117ffd10a48" chipset="acmgt1" name="ComputeBasic" />
+    <guid config_hash="a60e5cb58af7c7fe4c772ad3c0d723d1" mdapi_config_hash="dfebdf7eb743a99cda700c3211311acc" id="952f5f55-449d-43db-87d7-6113e9c3b89a" chipset="acmgt1" name="ThreadsAndRast1" />
+    <guid config_hash="256875afc20fecd1dfb75e193b9a2a74" mdapi_config_hash="e27a13f37cffd8e650000197adc14a65" id="797ae4a3-6d36-4be1-9064-a9bc3263957f" chipset="acmgt1" name="ThreadsAndRast2" />
+    <guid config_hash="749c3bc9b8f01d8f89248610e4ce0d63" mdapi_config_hash="67783e424eb168c03b3e1dc1e3a5a152" id="abb4b8fd-b9cd-4b11-a610-1c0707af14cf" chipset="acmgt1" name="ThreadsAndRast3" />
+    <guid config_hash="acff235c23ea5530d4256044fab9e59d" mdapi_config_hash="e67a2ab3f35019287d15c999d0faedb7" id="2da159d5-8ace-42bb-9d81-26f2b162d8d8" chipset="acmgt1" name="ThreadsAndRast4" />
+    <guid config_hash="da49b5c7e497eab30522295f416dd84a" mdapi_config_hash="80f802eb9434e078d1c158be06940d88" id="91273130-42fe-4c5e-ba34-6f9140b612c6" chipset="acmgt1" name="AsyncCompute" />
+    <guid config_hash="1a28d05d945714b099a9417181b72962" mdapi_config_hash="0cdf3168ffd88a84c2a42d4c62567189" id="fd9d1ad4-13b3-4583-9f2c-998f627e370d" chipset="acmgt1" name="XveActivity1" />
+    <guid config_hash="d86a9b202b07a4443c05054f997e2203" mdapi_config_hash="ce7908d800c405d187a088af61ee7c7b" id="4b785529-8efb-471e-93c5-481dae7b3b8b" chipset="acmgt1" name="GpuBusyness" />
+    <guid config_hash="f83112e995826a1135aad56c0648d216" mdapi_config_hash="6bd0c6d87cd9dbe104d9368f73ebb82e" id="8a0c5d31-e0cb-4d2c-8056-f3824c57ad9a" chipset="acmgt1" name="RenderPipeProfile1" />
+    <guid config_hash="33bca4b0b4ee572a26c55a4531a1f6dd" mdapi_config_hash="45a93937cef959756b3d318718d9df9d" id="0f40fba0-129a-4a19-87de-5fdbe111b915" chipset="acmgt1" name="RenderPipeProfile2" />
+    <guid config_hash="96eb95ce7630b395a44860c40947a1db" mdapi_config_hash="fc4172abe1625c861ba9cd81bdb8f41e" id="24695fb7-a404-4cd6-9aad-d23738b6d499" chipset="acmgt1" name="L3" />
+    <guid config_hash="a08acb81d60803a93751565c31854e77" mdapi_config_hash="c4d973b15c80bfbcb661c1ee1d76eb09" id="4486113b-a8a7-4f75-a1c2-7d307fa0e00e" chipset="acmgt1" name="Sampler" />
+    <guid config_hash="b7863c3b8519d3ad409eaae2c1521861" mdapi_config_hash="d2097d3ca767e653a616a187b5acd609" id="75fc20f8-8694-47f2-b67b-cbb35f697a8e" chipset="acmgt1" name="HDCAndSF1" />
+    <guid config_hash="20152c87392ec9354a3e8e2817740361" mdapi_config_hash="6bea5af3aac1c7dee17b3aaeb7f7758c" id="d5e02a31-fc87-4cdc-8136-4b19e00b7e94" chipset="acmgt1" name="HDCAndSF2" />
+    <guid config_hash="66c3c5b54fdf2b4a565f7bfd26b84c63" mdapi_config_hash="69b97529d9b16cefbee90f60ac3b34e6" id="08858210-0dc3-452b-afee-e5c7811c01cb" chipset="acmgt1" name="RasterizerAndPixelBackend1" />
+    <guid config_hash="706cf923d603aaefef70ae92e213817a" mdapi_config_hash="e150586afbdcf120d1bcc195a1c8fe5f" id="30b71e0c-55eb-49ed-8863-ee7db68ff1b1" chipset="acmgt1" name="RasterizerAndPixelBackend2" />
+    <guid config_hash="5ab62a7b918b70b04699b77a78107f50" mdapi_config_hash="5ecd892e51e757a976cd0cd4cae3f274" id="3620f0df-42c6-4904-b395-5497f5a2ea4b" chipset="acmgt1" name="TDL1" />
+    <guid config_hash="dfda4f47ade0b496dd2d500e293537f9" mdapi_config_hash="0adf78de606d7b56bca529d410dd0cd5" id="28357a3a-a53b-4da4-a5b7-395dbfa501f1" chipset="acmgt1" name="TDL2" />
+    <guid config_hash="2059b848ec44ec172df992f22113debc" mdapi_config_hash="fc35170d1e41ff4e236f27578534b8fd" id="262cf8cb-824e-4f48-bac4-6be3d8dda6a5" chipset="acmgt1" name="TDL3" />
+    <guid config_hash="798658d1cefbb2a0cceef3c524506243" mdapi_config_hash="69970e440aaa413a66d8ec8d349105d5" id="1e629e21-abd2-418e-a184-753977bb529b" chipset="acmgt1" name="TDL4" />
+    <guid config_hash="0e12a6e7ae5c8ca70c55df37051f3144" mdapi_config_hash="521df5debce4cf5f78aba4df5d7adc16" id="57f210de-b537-464a-af7b-7dfe2f3780c1" chipset="acmgt1" name="TestOa" />
+    <guid config_hash="fa26c66ee01a7fee7926f74df828ae34" mdapi_config_hash="0d796271d2d971b6aed0152e491c14e6" id="37b5b93b-6acf-4726-9b57-1a65fab22bb2" chipset="acmgt1" name="ComputeOverview" />
+    <guid config_hash="51cad4f5fea07a4ce99a5bba032b18d2" mdapi_config_hash="07bcc84a37b7b7fe4c00595074abd1c9" id="a2fe4388-0540-4550-b57e-6948cd7ab47a" chipset="acmgt1" name="L1ProfileReads_XeCore0" />
+    <guid config_hash="e40e35af9a062176288ab33e751bb3ae" mdapi_config_hash="7c924206ab3846cd6aa3e1a90364e6b1" id="16bc63c3-d365-4bee-baf7-bafbc1aa7c2d" chipset="acmgt1" name="L1ProfileReads_XeCore3" />
+    <guid config_hash="827fe956c669c3743bd7d6c17b3e4455" mdapi_config_hash="13df90f63d812fc8aaaf1b109ea0b8c3" id="28da4c17-4629-4111-a575-787a85100db9" chipset="acmgt1" name="L1ProfileSlmBankConflicts_XeCore0" />
+    <guid config_hash="e36b0dc82578c8dafa4df9e6fbbb63e0" mdapi_config_hash="1f968ce59957872fcaef21069cee3b64" id="825f82b5-486a-4ca2-96fa-f358871984b0" chipset="acmgt1" name="L1ProfileSlmBankConflicts_XeCore3" />
+    <guid config_hash="2d3df306a101c592228f870c7e986005" mdapi_config_hash="031cfdabf0beb78492f0ed2f56f8594f" id="5d58094c-105e-4562-b53d-68185319c794" chipset="acmgt1" name="L1ProfileWrites_XeCore0" />
+    <guid config_hash="2210e989a4f69eabe5f2ce3ecd2d06dd" mdapi_config_hash="39cb4e3f7aa692b7f6fb3e5fe4a4261e" id="3ce21cd6-fe3e-468f-ae53-07dbf73c45f9" chipset="acmgt1" name="L1ProfileWrites_XeCore3" />
+    <guid config_hash="92c8cdbb2ab634f6ad62d9eea317a29c" mdapi_config_hash="dc698ef9cec93afbea6ec9278fa1d67a" id="54d0193f-f8e0-4b81-99ba-e73a23fd9418" chipset="acmgt1" name="DataportReads" />
+    <guid config_hash="583d1255b4b66971940337f23b1ab7ef" mdapi_config_hash="e837db0e46a70327237c2a9ce06c0794" id="17982512-46b0-4b58-9e8d-d59b5bf8b3f5" chipset="acmgt1" name="DataportWrites" />
+    <guid config_hash="1095da332ad471328e7d24fb9c791970" mdapi_config_hash="5412924efbb3e88e10cd2f5507123d38" id="480895b0-8013-4be1-8bbf-fc3f1ad2e97f" chipset="acmgt1" name="Ext1" />
+    <guid config_hash="2596c836815c65c7d2a0be12e227d0fe" mdapi_config_hash="47bdd89d7224117f7027dc0f1c57dbc6" id="b899d843-d8ce-4803-8174-f2bf1107de00" chipset="acmgt1" name="Ext2" />
+    <guid config_hash="fae7ab4aabc5813bbb455662395519bf" mdapi_config_hash="f284fb226d661979e3efe04b6139a43b" id="59e0ed29-cd2d-43ee-bf49-e4637e8ef9ee" chipset="acmgt1" name="Ext3" />
+    <guid config_hash="7f3a057a2c7a2195a548706eb70cd06d" mdapi_config_hash="187da7ed3c88699d277fd80456dba4b0" id="475c650e-1045-45dc-a280-3365f7af8f8c" chipset="acmgt1" name="Ext4" />
+    <guid config_hash="06f122a3183d4bb5dcc88742d13461ce" mdapi_config_hash="ddda913231390dc12f81aaf19d56f362" id="b7d7a874-19d8-48e6-bf54-f859a994b0a4" chipset="acmgt1" name="Ext5" />
+    <guid config_hash="6676f55334cf33b7bcf9b0a6fcb0e0fc" mdapi_config_hash="96031d1b1d16608c499f8f02cb8f90cf" id="f1a94d28-672b-41a6-9ab9-e2040200d28a" chipset="acmgt1" name="Ext6" />
+    <guid config_hash="24824a663575f4a31fffc1f9a128c15d" mdapi_config_hash="f16d5878aab4b516bb083dc0c23e6ddd" id="31d119ed-a150-4b52-9206-3f9832e275ea" chipset="acmgt1" name="Ext7" />
+    <guid config_hash="a609fc1dd0f960c0c9982d108c8f08f3" mdapi_config_hash="547552a736af00217cc74423a283f6f8" id="4eb14f16-d2ac-46d3-b974-e413430fddec" chipset="acmgt1" name="Ext8" />
+    <guid config_hash="1fa6c42a02c55de9d3303b85d4d645ed" mdapi_config_hash="caf913a6e7a4526cea3edbf3d7feb102" id="b875dedd-f121-4f89-b02f-ff2c873e2543" chipset="acmgt1" name="Ext9" />
+    <guid config_hash="06bc9a6e909f6fde296f8c6e1a23e3b9" mdapi_config_hash="48d1f44984f040e58c8aca02f5dfebec" id="691b6a0d-d3d7-4b5e-a70e-d8232722cddf" chipset="acmgt1" name="Ext10" />
+    <guid config_hash="8769662891c52753c4b030a98c7f0863" mdapi_config_hash="42bb12d42d843a329652e01fa54be6eb" id="3c626d93-4368-4115-a21d-8fd8cd10e8fa" chipset="acmgt1" name="Ext11" />
+    <guid config_hash="96eb95ce7630b395a44860c40947a1db" mdapi_config_hash="fc4172abe1625c861ba9cd81bdb8f41e" id="4678846c-99cd-4a3f-acb4-8f055f48da56" chipset="acmgt1" name="Ext12" />
+    <guid config_hash="98df80f68ee1bcadbdc63c12b4f8c2c8" mdapi_config_hash="2fb63f5ac3ae58063304652f77c876c5" id="04d1f1c5-17e5-4104-b5a1-d62337b681b9" chipset="acmgt1" name="Ext13" />
+    <guid config_hash="b82c25b890c976604baf594ae84f9c62" mdapi_config_hash="09d629c6e33a79a9b8ade7d925132968" id="9312e21f-5d97-4058-a2fc-c7497c18f0a1" chipset="acmgt1" name="Ext14" />
+    <guid config_hash="2dfeb8a292a30913ee66936de3d649ca" mdapi_config_hash="6d652105301aa9166c75106f193ac9e7" id="fd355e93-4edf-425c-99e6-8693a22ae3cd" chipset="acmgt1" name="Ext15" />
+    <guid config_hash="b6eee444b5af376bdee240747ce82c01" mdapi_config_hash="fc869df2123540ca67502b8177addf14" id="844efb3d-c453-4dd2-b556-7bac8e111b46" chipset="acmgt1" name="Ext16" />
+    <guid config_hash="217beaaaaead570019303250a6019427" mdapi_config_hash="eeaa331a6d07320fedcbf0d6fcdf163b" id="fadda67d-1b94-40d1-be89-759f78641ab2" chipset="acmgt1" name="Ext17" />
+    <guid config_hash="a16442d7bd977878f20311cf3d23ecfd" mdapi_config_hash="cb53931cc9c09815599e095ab3220fd5" id="bdd021fa-a841-4f92-826f-c3ae681c68e6" chipset="acmgt1" name="Ext18" />
+    <guid config_hash="6de41a724e88178fe7b0b6292e3ee82e" mdapi_config_hash="fde1cd12a41fb58e8f4f8a0f50dfd64c" id="1181d35b-bf9a-4640-82b8-e31e031ea8d3" chipset="acmgt1" name="Ext19" />
+    <guid config_hash="aea935cb55c9d33934dcd20816cd2622" mdapi_config_hash="4247bf9bf066566c01d932c98533b5e8" id="aa39f75d-0a8a-43d1-9c51-bcd8c62cdfe6" chipset="acmgt1" name="Ext20" />
+    <guid config_hash="31e1878ef818b7210297a2844ba3cfdf" mdapi_config_hash="649675b01a26c17a0fb3d31350eaa4e5" id="ae58d1ad-8aed-4104-a8e2-443d7e800378" chipset="acmgt1" name="Ext21" />
+    <guid config_hash="1a8aca34497e1017c16aede6c0413fc3" mdapi_config_hash="7f1a3badabd8a173acf0c8b48cab030d" id="c27ebd95-f242-4f4b-969a-9850f1081c30" chipset="acmgt1" name="Ext22" />
+    <guid config_hash="d52260dc03030dbbe1a61094843f8837" mdapi_config_hash="6083cc80198df201c7250466a1e08b04" id="881a8616-b63f-4bb1-970a-73b40b762434" chipset="acmgt1" name="Ext23" />
+    <guid config_hash="68d2055233fb6df4092862c8883f1b66" mdapi_config_hash="091894211e9ec6634527f9b90eb07cfb" id="9fe09ad3-d296-4d41-ab19-270431f7ab29" chipset="acmgt1" name="Ext24" />
+    <guid config_hash="1088f1d5ebfe937878b6dda5edd59423" mdapi_config_hash="47fdb93257e96d1bc897e5155253cd39" id="e2016425-8755-4ca0-bc93-354ba7a6ca7a" chipset="acmgt1" name="Ext25" />
+    <guid config_hash="d71cd0d8288d1fbfea844f95c773437c" mdapi_config_hash="c3b269cff5fa487c395637ebafba0349" id="9fc2d1f6-7504-41f2-9f4b-96ff3307f6cb" chipset="acmgt1" name="Ext26" />
+    <guid config_hash="7ca4c48540372dfb3dfe582d24c71c76" mdapi_config_hash="32ab1bf15096f632e2bc5bebbb6883de" id="7bc1c162-2b4b-4cb8-b351-65be069d3f10" chipset="acmgt1" name="Ext27" />
+    <guid config_hash="7b615b3384df6fe083ca50b10170e7b7" mdapi_config_hash="479eb5015dac41432a2df2c0a60d0d24" id="afdf809e-962c-4af5-8e08-cd55b455dee9" chipset="acmgt1" name="Ext28" />
+    <guid config_hash="38b59093074ec3998cbdceabaceb661e" mdapi_config_hash="4122f0759ac7ca14f56dde50f691f080" id="4f22c4f0-68ce-46ad-91a7-272b517bfa2e" chipset="acmgt1" name="Ext29" />
+    <guid config_hash="500fdd072cd83b69c087b917b212c106" mdapi_config_hash="033f37a2db3d39b76f5f25618620a791" id="376f6937-f69d-41b0-a1ae-402dee9d42cb" chipset="acmgt1" name="Ext30" />
+    <guid config_hash="00523c71250bb077c645041bbba13faf" mdapi_config_hash="273454896b03cac032e94be61447d1b2" id="28e81769-8b4e-4a6f-a658-19901c71f724" chipset="acmgt1" name="Ext31" />
+    <guid config_hash="a363178889e787c8efe4f53666e9d2c3" mdapi_config_hash="aa3f66e56575c46fd7fdcbfade4db5b8" id="0efcc5a6-bbc5-4af3-bf07-db3597f314ab" chipset="acmgt1" name="Ext32" />
+    <guid config_hash="cf7e0869f4e6dcf61cb448c1dd6245ca" mdapi_config_hash="3bd004f89ef56fb2d6264ae6df8555d7" id="038bcd96-55da-41c0-b9ad-6d71e943f1b9" chipset="acmgt1" name="Ext33" />
+    <guid config_hash="bbb1e565cd4bc7eb56cf1950f9eb1920" mdapi_config_hash="3b0f2a3fa2d9556a317d43cd3392f617" id="48d0ac9b-3e47-43c9-9779-3e2cdf315635" chipset="acmgt1" name="Ext34" />
+    <guid config_hash="b5113330470868e8ce163c0044c181aa" mdapi_config_hash="c168ea89ec8f771ee652138027b0f55b" id="ebe68cc1-ddda-412d-b9de-4616c4421712" chipset="acmgt1" name="Ext35" />
+    <guid config_hash="86fa67e7bbb608382fb68932ea7e5b15" mdapi_config_hash="5e5984fa2c63db8cc0f6754f0095ff77" id="b305a4ce-2466-4172-97f1-a09a874f377c" chipset="acmgt1" name="Ext36" />
+    <guid config_hash="3b9805da69dd4c732e5ff34b5cdf04fa" mdapi_config_hash="82081df90adf3609bc82bd7d39efcf36" id="8184361a-7e98-4f4d-b047-42c767d4c863" chipset="acmgt1" name="Ext37" />
+    <guid config_hash="8bff66c1ee65e2f1333d9691a8d4d4d1" mdapi_config_hash="77bebdc4e3236605767fac9d76222cb1" id="0298d65d-a984-4f19-b968-1e65f072189d" chipset="acmgt1" name="Ext38" />
+    <guid config_hash="39a24fbf6c40f5bf46b58ef936dca0e7" mdapi_config_hash="0d09039ba9745a61ac91bef176ebc4df" id="602b3d8e-9299-4615-9739-fe44dd9b7102" chipset="acmgt1" name="Ext39" />
+    <guid config_hash="8c71d34d2a9ccbdea1a44a9194adce66" mdapi_config_hash="b2f4e2f74dfa5922197b5933ddd19179" id="7595f984-7cd3-4b1c-8332-bacfd2b3a359" chipset="acmgt1" name="Ext40" />
+    <guid config_hash="ef0912210dbbd1ab995c0b5474fed41b" mdapi_config_hash="fef9ebb4cade91da7cdabe595b6e4820" id="61bf91ad-0dfa-421c-b503-0eed63b64ef5" chipset="acmgt1" name="Ext41" />
+    <guid config_hash="399cd8c94c8266ccfea473b16e84464c" mdapi_config_hash="20dd2965f3c6287abd81b699a86d0db8" id="a2f3417e-fbe1-4c26-a20c-509c7205445f" chipset="acmgt1" name="Ext42" />
+    <guid config_hash="317a16ed5d58d97e9254827eaba93660" mdapi_config_hash="3e50a4a360a311eaefacdc521d3d1136" id="343460a0-c54f-4fe5-b7ac-6d9870a56aaf" chipset="acmgt1" name="Ext43" />
+    <guid config_hash="a5b3e2556c23e85d9e0ef2dc91ba4a96" mdapi_config_hash="05d582e1eceacaa854aa7e1ba5078d0a" id="cfaeaf8e-4888-459f-8019-c3080595c528" chipset="acmgt1" name="Ext44" />
+    <guid config_hash="7b4384392adfb001c80f12e712f5710c" mdapi_config_hash="e733e238bdd06e217753f452d5eafc19" id="c50cb371-e940-4499-aa74-4e75bc131329" chipset="acmgt1" name="Ext45" />
+    <guid config_hash="aa9887dedacf803b0dbcc3e1dccb6fb1" mdapi_config_hash="13ae8a7e98206164bed268a592ef48a7" id="b56a3837-111d-4ec1-8d3f-42e9e304d8f5" chipset="acmgt1" name="Ext46" />
+    <guid config_hash="ad4dda46ff84a5dbff1d42e90d0beaba" mdapi_config_hash="1459d002a686719edfca252a2510031b" id="3725926f-9a84-4cc2-963c-2294f47c017c" chipset="acmgt1" name="Ext47" />
+    <guid config_hash="c9e1ea60e961eb2d62cd63e0335baa6e" mdapi_config_hash="31b6df06a991835e8111e8f3fd29c28c" id="357a3801-3f4e-4106-8f1e-c0bfe1c5f419" chipset="acmgt1" name="Ext48" />
+    <guid config_hash="31ef72c1c9b5d63caab81e46dd8b965b" mdapi_config_hash="1b0b219d27f5d4d58d308294db29b1d9" id="8b324152-65d7-4b13-8fa9-cab57cd68471" chipset="acmgt1" name="Ext49" />
+    <guid config_hash="b83478645a26c217b57cff42f3b03bf1" mdapi_config_hash="b98313c3d757eefb8d74bc2de9064791" id="db09b08d-a300-4f2a-aeb0-b797e7073ef3" chipset="acmgt1" name="Ext50" />
+    <guid config_hash="027b27ac0e5a013b7d80974267bd01ba" mdapi_config_hash="84f75739a20eba4f730ec12d29cf3955" id="fc148084-3936-4dab-9b42-d7ba6ae1952d" chipset="acmgt1" name="Ext51" />
+    <guid config_hash="c65948af6faaca6eaaa4b5a4333163c3" mdapi_config_hash="0a3053a9bf34e4c812e8eeec0e407ae4" id="f6a3c36f-9fd8-49c4-b25a-dbf26256bdc6" chipset="acmgt1" name="Ext52" />
+    <guid config_hash="df10961b75bce890f27197ff4754a3a7" mdapi_config_hash="a7be445a851647c45e0697981c9b0ca4" id="a9a91699-a2b3-4841-8641-4f09f04be7e1" chipset="acmgt1" name="Ext53" />
+    <guid config_hash="626b637a0a15877846696c77d5ef4d5a" mdapi_config_hash="3767426b64103ba3602d847fbb94e1dc" id="c44659b1-937a-44bc-8819-9c1ae31d9bdd" chipset="acmgt1" name="Ext54" />
+    <guid config_hash="7c2880e5d049ddbd405fa599d85a6aaa" mdapi_config_hash="fc5263303b63feffda9d05addeaa4348" id="5bfd7ae1-27ea-4211-beb2-64565a49dfbe" chipset="acmgt1" name="Ext55" />
+    <guid config_hash="84fd99cc784524421ddec2058f933ebc" mdapi_config_hash="d03ad457a06fd3c56b1c288f5218706e" id="7aefc824-149a-4f75-abed-f6430f8d4eee" chipset="acmgt1" name="Ext56" />
+    <guid config_hash="1b71b566f061d64396f13d8763598031" mdapi_config_hash="1d779e9af2c4dfdc28c49734ca37ec05" id="0ccb67b5-7f31-4885-9973-d97e318a6f90" chipset="acmgt1" name="Ext57" />
+    <guid config_hash="8ffbe4ee825fb9f9b0663a2e31dd4584" mdapi_config_hash="cbe482acfc6210f2c6e83b67e1dd79f4" id="af47d7b7-691b-4ec5-abfd-67ce50938fe4" chipset="acmgt1" name="Ext58" />
+    <guid config_hash="5fd1e9d4b3477530518c4aa19e4f2e88" mdapi_config_hash="24f94b2640d05a5a78cfc381b06bb40b" id="0df81caa-d128-4f0e-9eff-69e0359fedf1" chipset="acmgt1" name="Ext59" />
+    <guid config_hash="ac981182d4d54e8bed42914e98b134fe" mdapi_config_hash="1c183faebb4efd797a9f3d660531515a" id="09e71710-e49d-4d9e-b7f8-0e597aabf25b" chipset="acmgt1" name="Ext60" />
+    <guid config_hash="1970fb6b4acf5e8651edba5fd0eb5898" mdapi_config_hash="f7353e7659737a8560dc6c88f2dd396d" id="374c4608-89a8-46d3-92fa-d4848e4a7a95" chipset="acmgt1" name="Ext61" />
+    <guid config_hash="a610ce08cfff3c054f7579e71b50f5f6" mdapi_config_hash="a26be652e14ae14776fd120dbd0e27a5" id="1013ed95-4958-4cfe-8fbc-1482c07046cb" chipset="acmgt1" name="Ext62" />
+    <guid config_hash="c550a26391338e8a2449cd190e577ae2" mdapi_config_hash="1692fe62dfcc589dd422e73375fbd4f7" id="7a3c4561-56d3-4b61-a619-ed8c1887e034" chipset="acmgt1" name="Ext63" />
+    <guid config_hash="29ed261052036cf0fbd58503d7bc419c" mdapi_config_hash="ec50472b4169f291bcd9207459320d18" id="7d50a975-2d8d-48c2-ae61-86decd3aba1d" chipset="acmgt1" name="Ext64" />
+    <guid config_hash="77de77319621ab975a70e13421a28364" mdapi_config_hash="7821e62cab1fc8ee6ef2f6ce696a0c77" id="c036e0c0-c23a-45ec-8b24-7ab7577b18d1" chipset="acmgt1" name="Ext65" />
+    <guid config_hash="e44c2c6fa127e5968d2601c3831704a0" mdapi_config_hash="6c8126d0bb42dd17ea781ad2760d1456" id="df8127a7-0efc-487e-a819-a20c2471e30b" chipset="acmgt1" name="Ext66" />
+    <guid config_hash="d136f506aac0742dc70ea2e73b671573" mdapi_config_hash="375ce65ce2a4ec475618717d66eadb00" id="f9d2c7da-14c9-45a4-97f5-a0d58dd3a1aa" chipset="acmgt1" name="Ext67" />
+    <guid config_hash="12870e7e4ce04e3c685784cf7d1738b9" mdapi_config_hash="3ae6645297d97040354209d5f9df5543" id="210f665b-abaa-4389-95e3-7cad6f71db8b" chipset="acmgt1" name="Ext68" />
+    <guid config_hash="9b3499f739fbe3ebc9f98bc1c2d5c1bf" mdapi_config_hash="c82d4511180c738cb3eac8e36c7e8d97" id="26eeaeca-61f0-46ba-b6ad-effb4ea076ae" chipset="acmgt1" name="Ext69" />
+    <guid config_hash="5078259374d5a73b09d6f6a2c688b762" mdapi_config_hash="7be12445347ddcd53cde7da4ccf78325" id="18a0a208-526a-4705-9b06-9145f03433ea" chipset="acmgt1" name="Ext70" />
+    <guid config_hash="cd9a83b23280bda0e6d460496d17b828" mdapi_config_hash="551313ba64fe8341b486f3c1cc64a57c" id="0677d73a-a563-47ac-8b11-9c7c3371fc04" chipset="acmgt1" name="Ext71" />
+    <guid config_hash="a9239fa89f1f0cf7c6620dc2dcad4f8f" mdapi_config_hash="cb12023502953f503bf17dae2147616d" id="0a10b421-f9ee-4147-81e2-b2ceeb74697f" chipset="acmgt1" name="Ext72" />
+    <guid config_hash="cb203c23ea26050dd482bd103414e45e" mdapi_config_hash="1673c8003c4ead48e73b044cb1214823" id="4051668d-2020-4f10-a9e7-e840455b125b" chipset="acmgt1" name="Ext73" />
+    <guid config_hash="c03aa6470417b5be7d4f5487ef062a75" mdapi_config_hash="b16cc43512e2e40c9740123f3a2eb4d0" id="0548ee0d-a4b2-42a7-86c6-4171ed191bec" chipset="acmgt1" name="Ext74" />
+    <guid config_hash="d77dc4e4035980a22d07bf5bf874448e" mdapi_config_hash="340dd4213c75862848df188c56d5f4d8" id="4604dea5-4e86-4713-b82d-fce110cb82f8" chipset="acmgt1" name="Ext75" />
+    <guid config_hash="08e1815765794370d5e42dd67c95994f" mdapi_config_hash="363dc02eb84640ac6b3d311893f3abd0" id="d4171f1f-6e14-41e1-8b9d-0e28077aca25" chipset="acmgt1" name="Ext76" />
+    <guid config_hash="5b0938a6bcc2dac189957c04420329bf" mdapi_config_hash="2eca3ee5793b0eeefb7c7bd89dedfe4a" id="8e91f318-149b-4ffe-9b51-42dd9b2c80a5" chipset="acmgt1" name="Ext77" />
+    <guid config_hash="0190f37da63186cd4c61d6126cca0cfd" mdapi_config_hash="f80a3f9424d0b2500890d305811a6d2e" id="bf68f6bc-fdcb-4dbe-a923-abaeb72e8af6" chipset="acmgt1" name="Ext78" />
+    <guid config_hash="c1550707504a93e323813e212372cb61" mdapi_config_hash="4788c65f10a4a2ef675cb5cc65feaf01" id="76b52ef9-7a1b-4475-b3bc-3a035acd32e7" chipset="acmgt1" name="Ext79" />
+    <guid config_hash="b8d4127f9c668873b67ac274dea15397" mdapi_config_hash="c2d4aeefee3086dab23215c6ce17069b" id="171d99e0-0ace-4af7-8702-19e9fbb04a46" chipset="acmgt1" name="Ext80" />
+    <guid config_hash="6de77558df213cb47f51df8c8c893828" mdapi_config_hash="67295b5dbc9f1eb7b11a297382c7cba1" id="f399ee12-9656-47fe-8566-416a8e4e4c07" chipset="acmgt1" name="Ext81" />
+    <guid config_hash="7ba7f1fe44d3d883699261d9964b4dd5" mdapi_config_hash="151393cc3171de02e5b53ef5b056664c" id="766bbe37-ffda-41f0-92da-e31184140e43" chipset="acmgt1" name="Ext82" />
+    <guid config_hash="d3d68205a754764911176ba6762372a0" mdapi_config_hash="e6ad03f903f93f9c50c09c3b1952d030" id="4d5d9009-c75e-4655-8374-503fd68ac0c7" chipset="acmgt1" name="Ext83" />
+    <guid config_hash="7f78d20b5fbb0b58d128b642abec3533" mdapi_config_hash="e2cfb5bf6cdac08453235b342a8a784b" id="fd091d19-b48d-49d2-b99e-c5505624daa3" chipset="acmgt1" name="Ext84" />
+    <guid config_hash="1cedd0dd5436db0a8a9f131dcffc247f" mdapi_config_hash="7bb34e96be686ba5d8d6bc643abf992c" id="d45a3f38-372d-4757-88cf-5589035652d5" chipset="acmgt1" name="Ext85" />
+    <guid config_hash="1cdfa73f50573c5a12ab8518fca2ecb2" mdapi_config_hash="03a97ed99c0d771ddb9df899bd97cfb3" id="46f2e8eb-1a50-499e-9096-66f79932703e" chipset="acmgt1" name="Ext86" />
+    <guid config_hash="71de590b75a77db655a0f06209c0151d" mdapi_config_hash="3319bcc11b652d32373fac2f49217648" id="35a680fa-e0c7-4e60-9a42-4e5c67d90b4d" chipset="acmgt1" name="Ext87" />
+    <guid config_hash="fe82143b346d08a105650a5fe66ee823" mdapi_config_hash="2f05b7ad1f0b5ddafc7cebba157af45a" id="e1d0a1c4-41c7-4d82-a6f0-42ea537e5664" chipset="acmgt1" name="Ext88" />
+    <guid config_hash="01c9fd39213390b28effeec74ebe4b1d" mdapi_config_hash="a1a6e3f5a5b271b64881fafc18eb75c5" id="c26ba023-58d3-4ec7-9282-f2638a292912" chipset="acmgt1" name="Ext91" />
+    <guid config_hash="461caab506bc1142902f9cf82408280b" mdapi_config_hash="0a1b817f8d78cbc130cdc52d2da72858" id="7e5a8ef5-b434-4bf1-81f0-eeddaa072d37" chipset="acmgt1" name="Ext92" />
+    <guid config_hash="c1550707504a93e323813e212372cb61" mdapi_config_hash="4788c65f10a4a2ef675cb5cc65feaf01" id="917a8688-0aa2-4b9a-a1a1-60dc016b17e6" chipset="acmgt1" name="Ext93" />
+    <guid config_hash="b8d4127f9c668873b67ac274dea15397" mdapi_config_hash="c2d4aeefee3086dab23215c6ce17069b" id="dad96cfd-65c0-470c-a9d2-33d7881234c0" chipset="acmgt1" name="Ext94" />
+    <guid config_hash="6de77558df213cb47f51df8c8c893828" mdapi_config_hash="67295b5dbc9f1eb7b11a297382c7cba1" id="811672a2-3bd6-473e-bd4b-dae0a5786a00" chipset="acmgt1" name="Ext95" />
+    <guid config_hash="7ba7f1fe44d3d883699261d9964b4dd5" mdapi_config_hash="151393cc3171de02e5b53ef5b056664c" id="91ebb988-2cc5-4cb9-b071-3a9d76f42b55" chipset="acmgt1" name="Ext96" />
+    <guid config_hash="a3be46f0437c5d4d8f99367d7bb15a4f" mdapi_config_hash="a2da0011f5563b65b6e58ad2067ef9f9" id="3e446a1f-d62b-4ea4-bbf3-845dc7f437e4" chipset="acmgt1" name="Ext97" />
+    <guid config_hash="a63f8f95431c62f66d78154d919879a3" mdapi_config_hash="d911d2365e1cc9376ce297e97683d681" id="5ff858aa-50d0-44b9-bbf7-d07881ecdd9c" chipset="acmgt1" name="Ext98" />
+    <guid config_hash="334de7afbe196e32ccba3f91a440ffbb" mdapi_config_hash="19a9b2203b3dfce6561f98e1d533ecc1" id="ba34845b-431b-41c8-9d51-5c8be2f0ac4c" chipset="acmgt1" name="Ext99" />
+    <guid config_hash="0dab9bd08f0d241f1b3b7bff15a7b3e6" mdapi_config_hash="a4be5821e680778669686d2e1b69d18b" id="978e5720-eb5a-46fc-aa24-7a34a853130b" chipset="acmgt1" name="Ext100" />
+    <guid config_hash="cdf411e1398919009c793edb3c6a1ef5" mdapi_config_hash="d0b3b253fc92a97d1d1e7d40a1e688f9" id="9320b9d5-43c9-435d-b0ed-ec8a565d742d" chipset="acmgt1" name="Ext101" />
+    <guid config_hash="00f65434ddfd767057046f4a8529109c" mdapi_config_hash="58360716f9563bf0527eab58a9477b00" id="ff32c8bc-39ed-4dbe-9d88-2d2cdb973872" chipset="acmgt1" name="Ext102" />
+    <guid config_hash="76f88688dc2cbc79b414c4f87de1ffd1" mdapi_config_hash="57663957a360068e72c665f510c5e03d" id="73a834ac-afbe-4ca1-af18-af9aabc0280a" chipset="acmgt1" name="Ext103" />
+    <guid config_hash="5bd9e967fa142c9cd99ce18942cce146" mdapi_config_hash="f4cbe312ad55a843507568f33ebf4948" id="eb13a257-4c07-469e-8bef-55da7dff1b41" chipset="acmgt1" name="Ext104" />
+    <guid config_hash="6faa9519a6a3ea870fd0455d1d0b1c42" mdapi_config_hash="df94ec94cd4f8b182bb2e11117efe708" id="0343e7a1-8f7d-44b8-a75c-73baef6cc22b" chipset="acmgt1" name="Ext105" />
+    <guid config_hash="c5b60a8b8d9b458cf541728c63fc1401" mdapi_config_hash="b3e49a50efa2110de26dce1314c6d3fb" id="048a2bcb-b786-4b51-b350-8908f50e69d7" chipset="acmgt1" name="Ext106" />
+    <guid config_hash="af725fdf810c81708ed915adc4958b31" mdapi_config_hash="d55a8dcf74374a916e50477874564051" id="e393956e-78b0-4f7e-8482-cb13c1706ecd" chipset="acmgt1" name="Ext107" />
+    <guid config_hash="b3d0672f1145734142cd778b220e6d5c" mdapi_config_hash="b8a1b217157338f594c735597903e064" id="2ea41c1b-4751-446f-b178-9aa17cf85d72" chipset="acmgt1" name="Ext108" />
+    <guid config_hash="aaf1aba5206945089786b80ee5dbbce3" mdapi_config_hash="665caf49abebd4fa0fd7db4dc10b8c0f" id="32b61c78-b7d2-4162-8964-dbf47f187290" chipset="acmgt1" name="Ext109" />
+    <guid config_hash="7154499c71bfd907f108bb2027c766b7" mdapi_config_hash="9a3e1efa778cc11535c5e236498ffaba" id="536ed3af-e1e6-4f5a-be8b-3eabfa9487fa" chipset="acmgt1" name="Ext110" />
+    <guid config_hash="547f2d8ffd47d9568936e7195ebef561" mdapi_config_hash="4dc7582d62a68ce09049cbab94dd8f1e" id="11eedd05-3490-4a57-8ea7-56e1d2dd066a" chipset="acmgt1" name="Ext111" />
+    <guid config_hash="dbb982cd29b346a7fa3640d9c2db8adc" mdapi_config_hash="963f6749d596acd802831ee8284e92e7" id="2324dd37-ac7e-4a5e-8d0c-f7b94fd36961" chipset="acmgt1" name="Ext112" />
+    <guid config_hash="dfda4f47ade0b496dd2d500e293537f9" mdapi_config_hash="0adf78de606d7b56bca529d410dd0cd5" id="03551880-b834-45f0-8b71-e61f548e5d83" chipset="acmgt1" name="Ext113" />
+    <guid config_hash="812fd46833424d9eb0d05ee28f3e9365" mdapi_config_hash="91bd557a7b5f5fb05169b2a434c14ace" id="8d368e2f-7c30-4a9e-a20f-b098105300b7" chipset="acmgt1" name="Ext114" />
+    <guid config_hash="c5442482b5d76fbecca8136a426596b9" mdapi_config_hash="17e398bab2a10acc1afa048d8b17b622" id="cb96d66c-bfc4-4de8-a3dc-5d67c5acda38" chipset="acmgt1" name="Ext115" />
+    <guid config_hash="33b58de69e947a671ad57448198b5b46" mdapi_config_hash="e6a643e3eee08059b653de6565148a70" id="2355cc8b-c596-479d-ab76-16c2d3644b5b" chipset="acmgt1" name="Ext116" />
+    <guid config_hash="c3cb81f0b071c85b13c2cf08ae14bbb3" mdapi_config_hash="e96ff5b4ea7dfa7eba7e649d2f177043" id="006584d5-ebb1-4d21-a8ab-cfa66e75dae4" chipset="acmgt1" name="Ext117" />
+    <guid config_hash="14b20811c2c2318e80b542ff3879654f" mdapi_config_hash="05ec953ec963b69a62ec53c5b8ec6972" id="9ae38060-8785-44ec-a758-4082b94af42d" chipset="acmgt1" name="Ext118" />
+    <guid config_hash="bb81ce9686f82ee27a3e71e99f144c1c" mdapi_config_hash="6d808ffc8031ed3235b2fb62d5138ad3" id="8ef448b2-776c-4d73-8a44-eabfb2fcc888" chipset="acmgt1" name="Ext119" />
+    <guid config_hash="08f78d136c39dab6db05a652d0608dae" mdapi_config_hash="ad30e32ab47c0b4bee479e434443d1a8" id="3b5b473c-259e-4eb7-8643-a88b53aa2e1c" chipset="acmgt1" name="Ext120" />
+    <guid config_hash="646acc562ed82884a3461f07162ec912" mdapi_config_hash="963f4359857199bbfc3fb3e339806659" id="f2045966-fcf0-479b-aef4-0358574f67ee" chipset="acmgt1" name="Ext121" />
+    <guid config_hash="c57b8fa92ab135ad9aa90ed90993938f" mdapi_config_hash="077f4d70e66e7ad22189f8e91eacb79a" id="e175d8c3-7672-4e57-83a0-87caf56a5440" chipset="acmgt1" name="Ext122" />
+    <guid config_hash="541656fadae59b87e7767e418e2fb496" mdapi_config_hash="5a5456483d752bff51426fca7dbc3a80" id="7f7218b1-462c-4f08-8032-86e426dbc83d" chipset="acmgt1" name="Ext123" />
+    <guid config_hash="b5de9a4dd9da9c6502f6cd3c5fd212c0" mdapi_config_hash="20bc797bcce3ba76e4085454a0585bf6" id="bd7a8af3-2d23-4c95-9cb1-429840dfc38f" chipset="acmgt1" name="Ext124" />
+    <guid config_hash="1c44b1bcadec2656fbffb4ad467c7000" mdapi_config_hash="8983c6d0d569869031b460755f781856" id="2e16a8a7-613a-4df1-91bf-eec73d281822" chipset="acmgt1" name="Ext125" />
+    <guid config_hash="33d81eee011fe0eb1e07dca082e37e9d" mdapi_config_hash="b5eead3b9158531950af4fda3f2fd895" id="7cddf3f3-4ed8-484d-b8c7-82a4857ad030" chipset="acmgt1" name="Ext126" />
+    <guid config_hash="2541a923559b89e096312f25291f3a56" mdapi_config_hash="d3611aec69ee7d4be3ae9b4f61a30fd0" id="cc78dbe3-bf19-4e4f-8957-c75488d8a47b" chipset="acmgt1" name="Ext127" />
+    <guid config_hash="52228f4f134a3d67aa2c47b5d90e41b7" mdapi_config_hash="c3444a5f01a4b0f1b5b3593c9864914c" id="9722a829-b7e5-4716-b62e-ff6cb930232b" chipset="acmgt1" name="Ext128" />
+    <guid config_hash="7770de77f7a96738f93607fad710f052" mdapi_config_hash="079deb439f2c075c8f7bfd83a7c20f1a" id="4d7bb9a8-4b02-435a-b2be-16a2314c421d" chipset="acmgt1" name="Ext129" />
+    <guid config_hash="28b1d112fca73254fe836d767bc09cc5" mdapi_config_hash="b20dc315eaec1e299473f9afe76b3fee" id="307951f8-0159-4d0c-bc8f-04fee7247e0a" chipset="acmgt1" name="Ext130" />
+    <guid config_hash="f28bc24b5f2f0af90d1c7ecbe81cf63c" mdapi_config_hash="d3f0e2966b0ecea7dd97ac151a7872ee" id="aa04f1fa-826e-4b25-a7a6-4fbb4a7d0dd2" chipset="acmgt1" name="Ext131" />
+    <guid config_hash="55940375eada7d9e77c0d6c20af8c841" mdapi_config_hash="8d8b1ebc95f5448cf6a234ac02cfae7e" id="9121bb2c-a28d-4796-a60b-52905e317576" chipset="acmgt1" name="Ext132" />
+    <guid config_hash="82dbf6cb5eb61b5bfaad996e73f51f95" mdapi_config_hash="673f1150779b67b72218e18d29d1c50b" id="14a8d00b-a361-4bc5-94fe-4664b837cc56" chipset="acmgt1" name="Ext133" />
+    <guid config_hash="676a59a9f81d7ba65913df56d804733a" mdapi_config_hash="3d5f622d4122f3536ba117713ae0d394" id="74fda750-6436-4a97-897b-8eff0a63de70" chipset="acmgt1" name="Ext134" />
+    <guid config_hash="ddc017469ab0800b55c472101abf2a7c" mdapi_config_hash="83d7b8f2ff34803dd62c7cd242be4bbc" id="1712c473-6635-49af-a6da-43c724c96dcd" chipset="acmgt1" name="Ext135" />
+    <guid config_hash="e66c1a3078d45e4eba55ff67672595d2" mdapi_config_hash="e93269c4c6b92f99cb87ce1c291604b4" id="5c1a57d6-2dff-48ca-98bf-02c71a22057a" chipset="acmgt1" name="Ext136" />
+    <guid config_hash="d889f4982005a8be6a9032b55a53f661" mdapi_config_hash="eb63aef957a615915f35a63942071700" id="6ede1a62-069a-4b3d-8b17-000005541bfd" chipset="acmgt1" name="Ext137" />
+    <guid config_hash="7569421c86416bdfef5ea87766553659" mdapi_config_hash="f986e11d7c0bd27e898c1a335c7c05da" id="4a31afda-7a08-4d3d-91fd-138bae3eb836" chipset="acmgt1" name="Ext138" />
+    <guid config_hash="76431bdb2c840d296d08fb8490fa412e" mdapi_config_hash="5916bd135a5e11f46cdfff26e5df894f" id="c800871b-2505-40f3-99e2-6c0ccb9102f2" chipset="acmgt1" name="Ext139" />
+    <guid config_hash="59bb5b34670411dba6ec563832b0194c" mdapi_config_hash="38ac5318030f247a1d1f71b6ffc79730" id="067cbc21-6b6c-48c6-b47c-922a27b60b30" chipset="acmgt1" name="Ext140" />
+    <guid config_hash="23300ecf639bf4d6f03ce687883ad6ef" mdapi_config_hash="f01f79b830965539a25808f87b675224" id="e8ee8621-7110-4d70-9651-846fd4fa3c3c" chipset="acmgt1" name="Ext141" />
+    <guid config_hash="6be90ac264f6686075e7b0983cbafb45" mdapi_config_hash="5940a41ff1b27c7f40dece9288fec68c" id="87a9d5f2-2029-48b9-bbd3-78867e022166" chipset="acmgt1" name="Ext142" />
+    <guid config_hash="97014e93fa896b41c6a6249b290a4810" mdapi_config_hash="79935c695e94c27bd1c5aa7d5f8fb9b5" id="bffa2382-3aff-471a-92af-5dd571c7868f" chipset="acmgt1" name="Ext143" />
+    <guid config_hash="5834074eda185c8cc325c2b7f132e3d7" mdapi_config_hash="cfa85b8484c57014397c4874d0f54891" id="951f3ee4-6a3c-470c-b403-c01ee6a7e97d" chipset="acmgt1" name="Ext144" />
+    <guid config_hash="a8b569a52638fef946a6cb5410c99d6c" mdapi_config_hash="2a98991afe86f48f7e776d105f412d32" id="4d34c592-973b-4e75-a451-cf4ad90f79e1" chipset="acmgt1" name="Ext145" />
+    <guid config_hash="e6d0d033ae35a3e8300b39a13c4ea1cc" mdapi_config_hash="7bb9c8d361090eb4a40bf2e4de80d45e" id="4a881a06-44b8-4199-a609-e0e4e22631c4" chipset="acmgt1" name="Ext146" />
+    <guid config_hash="fa5beb51e65b39aaaff4e502d0e6a06e" mdapi_config_hash="f1916b9e3cd30c4346be0539fa09c792" id="20b339b5-abb6-48fc-8a09-bb4cafacbb72" chipset="acmgt1" name="Ext147" />
+    <guid config_hash="a5e21e9d2f3b381db9fce8d35cf19952" mdapi_config_hash="c50ef475e25bc2d4c3f4493015e9dc90" id="8b62b22b-a467-4638-a113-81a5c59d64e8" chipset="acmgt1" name="Ext148" />
+    <guid config_hash="b968adeb9021a13e0f2263500f6a3833" mdapi_config_hash="c70a6d563e125c3d94425ee1ad7f0678" id="a563237d-76f3-45bc-82d7-c4a441c9230c" chipset="acmgt1" name="Ext149" />
+    <guid config_hash="5c0aca3eefedb553f92bcd63514e29fe" mdapi_config_hash="a49da2e3406c3e44cc79dab1bd62b286" id="dee6b408-d907-4eae-a961-7262816be56c" chipset="acmgt1" name="Ext150" />
+    <guid config_hash="d658163dc7d15f51bcfa16b94eb00bf1" mdapi_config_hash="a9602665e74fd06fce336790d4969b28" id="c2bf9d7d-0998-483b-bede-7ced3f8cf423" chipset="acmgt1" name="Ext151" />
+    <guid config_hash="b52c6f39fe2cb4069835665013ae1067" mdapi_config_hash="7506b0638b426552ff36724edc616b02" id="06c6ecdb-9b66-400b-83ca-484309fba532" chipset="acmgt1" name="Ext152" />
+    <guid config_hash="07f1fa5eab01e0979008b318bb18e0b3" mdapi_config_hash="a879c73b8ffa76232398a36e29e025c5" id="af12ca37-4f11-4c7a-b6b3-695210972c92" chipset="acmgt1" name="Ext153" />
+    <guid config_hash="9cb71e8d432d5abeadf3a8f3dedc9300" mdapi_config_hash="09bc198f7a44f1505d34e8aa7145d20d" id="f72930f8-79c3-49f3-9fa3-07a05070d1fd" chipset="acmgt1" name="Ext154" />
+    <guid config_hash="888c5441777eb18dfafb04ccbbabc63e" mdapi_config_hash="4684fcb9f09f632579567c77d3e11a12" id="ac5346ae-2be4-47d1-8300-6e25c445297d" chipset="acmgt1" name="Ext155" />
+    <guid config_hash="dcffe4412b7fe076c6b2512e3795bd39" mdapi_config_hash="1840f16963fe0890e9830e4cc50cf7b9" id="f8f7091d-7f71-42cf-84de-8ad23fe45432" chipset="acmgt1" name="Ext156" />
+    <guid config_hash="c557ae19d5c006a14f9d599e7d93182e" mdapi_config_hash="5940392ed7093a62f549687907af0bad" id="ac6eecdc-0074-4a94-9269-48b5e3833439" chipset="acmgt1" name="Ext157" />
+    <guid config_hash="8c230a0109d0d2352a5ee9557ce72ca6" mdapi_config_hash="b7b0d316e74f43e17e7e50d34fb34014" id="4c27f089-06ab-4c33-b084-fc7cc9cc78ea" chipset="acmgt1" name="Ext158" />
+    <guid config_hash="7c79bd0534b65f2550b179e1f454d38a" mdapi_config_hash="c6718e4bb039e1da93839b0461171ce2" id="1918a5b9-f991-4451-afff-565a739dbfb9" chipset="acmgt1" name="Ext159" />
+    <guid config_hash="35c217ed780ba0cb9f4b8fd8862725aa" mdapi_config_hash="8b4c9654098dcbeb200d1d912ff6dba2" id="6cf8ce0d-617c-4ed8-962c-6b750c0cf012" chipset="acmgt1" name="Ext160" />
+    <guid config_hash="604a47fc01da97814df40e74c343b6af" mdapi_config_hash="e68dce7ab35522ba00b6bd7b0a03fa48" id="453d205a-8bd1-4ebe-b617-1168cbfda3ca" chipset="acmgt1" name="Ext161" />
+    <guid config_hash="9913f4fa2c601a9e7bb052e57cdfa7d1" mdapi_config_hash="26db04f8e7f6b37025289329820079dc" id="9d94eefc-0c25-4725-a6af-3eb468cae42d" chipset="acmgt1" name="Ext162" />
+    <guid config_hash="07805a92788aa3b698fcb69715e9d077" mdapi_config_hash="c08395849f5c0c80b27aca3eeafea470" id="fbba6a19-98df-4a94-9a42-2660674d8e25" chipset="acmgt1" name="Ext163" />
+    <guid config_hash="51855c8bac86872917a66d0187f7c5b6" mdapi_config_hash="c5bb813efe5c112728ffd4ffcc5e54f8" id="ec971ed3-3fb2-4d4c-bf27-08eeb418dc68" chipset="acmgt1" name="Ext164" />
+    <guid config_hash="04545ecc50b3f013a688e4ad9c463907" mdapi_config_hash="e7c76293ab50c4f6221e8e1e150bf5d9" id="a1d6b535-1d00-4951-bdcc-8586b9ba7c0a" chipset="acmgt1" name="Ext165" />
+    <guid config_hash="e395d03773d9eab337244898db0fb89e" mdapi_config_hash="2ea8208d937ed0cc22b25c84949a4ec6" id="5f78bfe9-b17b-4df2-b1de-54e7c84d93ab" chipset="acmgt1" name="Ext166" />
+    <guid config_hash="3a442c930a8f7ca95ee6dc1620c2a11b" mdapi_config_hash="e2426faae7e57dcc2ce905aa984b10f1" id="c76128ab-fe65-4ccc-94ea-f351ccbd5f16" chipset="acmgt1" name="Ext167" />
+    <guid config_hash="7948e4a15362974affa25138054d6c6a" mdapi_config_hash="d43502fe41d3881002b288a2460606ab" id="fac0445a-ae46-412e-bf26-0b4dddd64485" chipset="acmgt1" name="Ext168" />
+    <guid config_hash="857e476f2817d9ef41011cf7b68af59b" mdapi_config_hash="1deabc74574a3fca3acb201789fd546d" id="386322a7-4cf5-4bf9-bbd9-35a6477a4479" chipset="acmgt1" name="Ext169" />
+    <guid config_hash="21388f53af5966ab4a742b05690659ea" mdapi_config_hash="01ff8f7baddcd345049ec8af458b50de" id="b175ecb9-b8cd-4f9c-97d4-73bf5cf12fa7" chipset="acmgt1" name="Ext170" />
+    <guid config_hash="b1683389c5870c195ef875f67da2eba7" mdapi_config_hash="4b69e7390c790e0e859f6b3bfefe040e" id="f2b8f05e-1936-47b6-b1ac-99a441971cea" chipset="acmgt1" name="Ext171" />
+    <guid config_hash="e5dbd4c2f74d568fa61a926a0c26768c" mdapi_config_hash="ca3e762d09e1ba42a80275552827ced2" id="72ae9945-8887-4c8b-acd6-559e4b92203e" chipset="acmgt1" name="Ext172" />
+    <guid config_hash="d60274e2d6d33f0aac5fe66c88ae7745" mdapi_config_hash="3b75890a46add6824dee3a488b932c7c" id="1861b4c1-3950-4855-a8db-6e0b90fc44aa" chipset="acmgt1" name="Ext173" />
+    <guid config_hash="c4cbd0d5f79d939528bf99f3c9d19f06" mdapi_config_hash="830845e5c1a7eaac5c279444ca53a68e" id="b29accb6-ff91-45d5-953b-2ca3c0983f66" chipset="acmgt1" name="Ext174" />
+    <guid config_hash="b5c3801c4d7f0805bdadd73395de63b3" mdapi_config_hash="b156b7caa8403ea387aac418dd000681" id="218c081a-6fe6-4a26-afb6-ca6bd1bf78eb" chipset="acmgt1" name="Ext175" />
+    <guid config_hash="92965f8f98c2ac74cb086d8e0a5f8ec6" mdapi_config_hash="84f869fc7c855520e201c3743d5a249c" id="f7d99e5e-4cb7-47da-835f-ec31a8838dc5" chipset="acmgt1" name="Ext176" />
+    <guid config_hash="f53b3396bf7a5a0583f9d799788ec87a" mdapi_config_hash="0603e1b4d6ae13d1ceb7d7e7f101ff6e" id="da0fd1f5-25bd-44d7-aced-87d78f3f0a7d" chipset="acmgt1" name="Ext177" />
+    <guid config_hash="a848277d97c7cf23195bae0613ce5afb" mdapi_config_hash="2db7e834c32ac0b499c8db71423e7b05" id="e1495a70-d6ea-4867-aa48-4135567bf19b" chipset="acmgt1" name="Ext178" />
+    <guid config_hash="23480ec698fed6b016fe7e2f24427e4d" mdapi_config_hash="705755afc8ecaea45b2ec83a4f437291" id="d2b946b8-ddbc-47bb-b02d-f89652163b6a" chipset="acmgt1" name="Ext179" />
+    <guid config_hash="94ef64f24ad8c70496934cb35ad7904f" mdapi_config_hash="c8226547ef53e1ed62bb0601038c0c89" id="44915f22-aaca-4871-b8ca-7a83aa83d605" chipset="acmgt1" name="Ext180" />
+    <guid config_hash="c8da848485fb2a10ad3160d208fe5d3b" mdapi_config_hash="302146d82d8f774d8ff506b7bad22fcc" id="fe0eda19-22d8-410e-b61d-24bce297d8ae" chipset="acmgt1" name="Ext181" />
+    <guid config_hash="2d8e82c9343238ecb411ae60acabb82e" mdapi_config_hash="9650fe0004b7911ec21ab17a7be7a0c4" id="aef5adcb-e3ef-4839-aea5-a6bbb9bb5faa" chipset="acmgt1" name="Ext182" />
+    <guid config_hash="8b9f3bf34f2d3c62b8b6e8a25f345e6c" mdapi_config_hash="477a24237a8ae6609ce26951d9906482" id="1cf7ed05-8260-4abe-b00c-7f3ae3441d4b" chipset="acmgt1" name="Ext183" />
+    <guid config_hash="65823700cb27a3511db3893df627340c" mdapi_config_hash="6fd71469af2adf045b72f40701246365" id="39badcb4-5410-4218-b272-1e5edc606b5c" chipset="acmgt1" name="Ext184" />
+    <guid config_hash="1d1adf473dede14cac82d966e834c82d" mdapi_config_hash="842415ea688559f6802382682672f2e5" id="e1e40930-36f2-480c-b15d-cf2fb07f18e1" chipset="acmgt1" name="Ext185" />
+    <guid config_hash="2ba9800bf3cb57a4da14f82928c67398" mdapi_config_hash="cf0037ecc186702f368df7b980269fa1" id="4edf8144-d144-4110-b34c-0f6133409bae" chipset="acmgt1" name="Ext186" />
+    <guid config_hash="ece2e98ef546e8fdc50d12eab7d71bed" mdapi_config_hash="21271b27f8a41301e8fa9bd4ab328dae" id="a035c742-180e-4bf0-8009-5668cb08981f" chipset="acmgt1" name="Ext187" />
+    <guid config_hash="cdd16828dff28943f225ff159c0f5a52" mdapi_config_hash="c76a7c4a68e1c738aebb6d832bc88589" id="1236f8d6-fa44-40eb-addc-8e4695b02ab3" chipset="acmgt1" name="Ext188" />
+    <guid config_hash="85e29c24456fa871dcb87f305e0140c0" mdapi_config_hash="b32c81a656e0b0692e1985c223afb0df" id="d37f51e7-16dd-4616-88a0-cfc54b90a43f" chipset="acmgt1" name="Ext189" />
+    <guid config_hash="0ad3bbfa2aeb4d2b449d6f43101931cd" mdapi_config_hash="70c6c88ad073893c8624ed20673ed0fd" id="c9ac09ca-af08-4072-8e8b-dbc81cd95ada" chipset="acmgt1" name="Ext190" />
+    <guid config_hash="e64a4fa60526e0d951731a93329ff1d6" mdapi_config_hash="48bd683c1de30f027d832c89df7841cb" id="9e1699e6-cea6-46de-bb89-050415f0a8a2" chipset="acmgt1" name="Ext191" />
+    <guid config_hash="a91cccc12d8966a3ff456c56599cc805" mdapi_config_hash="ce4527482c9b6eb92192c0a8e93f52c3" id="e671dd75-968d-49e4-9c03-5269d95de66e" chipset="acmgt1" name="Ext192" />
+    <guid config_hash="55a91f48dddc3417ceeddd2c1db1ebdd" mdapi_config_hash="d6406f5a85d661045b3b840d475680f4" id="9a53799a-f746-4d6d-a723-57af53243454" chipset="acmgt1" name="Ext193" />
+    <guid config_hash="afab6f08fa93d48cc8c86dd6ef451b8c" mdapi_config_hash="3d7b6804ef19dee55a7ec8895bfb3f3b" id="3b4157d9-9905-48c5-a9fa-3f53f94b9b5d" chipset="acmgt1" name="Ext194" />
+    <guid config_hash="571e08e397d67e114b9ae50f18dbaab9" mdapi_config_hash="580a0056d940c4e47fa87a1a4f134106" id="b7468d66-8862-4deb-aeb7-d2cefa81ea0e" chipset="acmgt1" name="Ext195" />
+    <guid config_hash="963bf529feff600aa3a4094b02016c11" mdapi_config_hash="21cefdaf4f5b32f25e7c9ba83c2ae6fb" id="a09b78bb-b10e-4250-84c5-336f839c4e0c" chipset="acmgt1" name="Ext196" />
+    <guid config_hash="e8525f80ae6aea52ca46a1ad0613b7ed" mdapi_config_hash="55fca8f4273b872b71e9b0dcfab070cf" id="8b7e5a75-7734-4d48-bdd7-0adf976b8a89" chipset="acmgt1" name="Ext197" />
+    <guid config_hash="8e61af04e6cc7b31995cfa7eaab214f9" mdapi_config_hash="367308324b88151877ec160474dc4313" id="8157717a-d7e3-465e-a6b9-a5a5d4902b49" chipset="acmgt1" name="Ext198" />
+    <guid config_hash="c2dfaa6c92411bf8d12b7de300db927e" mdapi_config_hash="1ca97769ab5b0f1369fafa639b3b63a9" id="fc122f7d-c66a-458b-a06c-cee29569262d" chipset="acmgt1" name="Ext199" />
+    <guid config_hash="0ead438a310183129e09f8f44ab75620" mdapi_config_hash="6555926f971e2592381817db5e2146f1" id="80da4065-1cc6-4e17-8594-731e1acc01ef" chipset="acmgt1" name="Ext200" />
+    <guid config_hash="f11f6e82febb1c53137bee7e1550caeb" mdapi_config_hash="9b2b0b068414507e89fd35009d30d55a" id="5c664618-1692-4ded-b6bb-a9e17f37250d" chipset="acmgt1" name="Ext201" />
+    <guid config_hash="aacd63fb18fb085688a206352d3d76bf" mdapi_config_hash="3370c56f2f4bf2d6499a8c422f40f630" id="671c0d10-0f02-490f-acf6-2d2a88c0bc62" chipset="acmgt1" name="Ext202" />
+    <guid config_hash="860d7ddea477c3016b49bfebd5800154" mdapi_config_hash="a5552fc70c572fd1dacc6081502ea76a" id="d1c46c3e-fd18-4ca4-905b-64b95a6f10e8" chipset="acmgt1" name="Ext203" />
+    <guid config_hash="beb1b18cc16f797a2e82c02869235d25" mdapi_config_hash="1de83bc512187b0e4c80028d28a0616d" id="4e426fcb-9591-42a4-9b9a-7207d548bc0b" chipset="acmgt1" name="Ext204" />
+    <guid config_hash="82a2f46c4eef6d9cddc0b121fdf25171" mdapi_config_hash="f806294b27a9f4bc0743049749279c4f" id="12aa9868-f7c6-4c8d-80fe-cc1605608ef1" chipset="acmgt1" name="Ext205" />
+    <guid config_hash="2e41aecbbb175c3cc8ce6c71fc6a2456" mdapi_config_hash="15f2b8c96079fb0d22f8a70a7b82a81d" id="7a64382c-70d1-41c4-a1e9-28a8bcb4785a" chipset="acmgt1" name="Ext206" />
+    <guid config_hash="6ee3ff83d61794660af8edefdeb312ca" mdapi_config_hash="f4435ca88925816e7b329f36fc365223" id="2fa63ea7-c2d9-40fc-b9d5-74cf4a7a3761" chipset="acmgt1" name="Ext207" />
+    <guid config_hash="ed66f125d1a6288f9e744a3a012b9eab" mdapi_config_hash="2deb80294fb1d10c393dbeb19cc9a272" id="c26befd3-0199-4b5a-9768-963eded47ddc" chipset="acmgt1" name="Ext208" />
+    <guid config_hash="d070985e3873f5c426ab81284beae9bc" mdapi_config_hash="c3dd7e3225334fe0fbada0150e1835d8" id="6ac62a5e-3593-4f68-90c1-452cbc83af7b" chipset="acmgt1" name="Ext209" />
+    <guid config_hash="e350f7c72e22d5f9e16ceb58a5176ce7" mdapi_config_hash="b27726f0242de4625cbfa2dba61e450e" id="869238af-0548-47ba-9703-fb4d12825f89" chipset="acmgt1" name="Ext210" />
+    <guid config_hash="b7a2bad2e3db75626d0c1ea6ab2fda04" mdapi_config_hash="1a1710d5c47135cb3c4e5d438ab93cec" id="1986e401-2a47-4ced-be1e-1412f795388f" chipset="acmgt1" name="Ext211" />
+    <guid config_hash="4c013e7592931a1c49cff2a9b5008ccd" mdapi_config_hash="d5e721c891920ce6edad86dbf29d3eec" id="61f0e78f-0095-4595-993c-0d2a7b474f05" chipset="acmgt1" name="Ext212" />
+    <guid config_hash="2ff9fdd0f973d1b2c9981a73e4c11a57" mdapi_config_hash="6037ab583666d0712c47d02cb906a976" id="aac878c4-c131-4e46-a022-673b0c0f6adf" chipset="acmgt1" name="Ext213" />
+    <guid config_hash="2204c90670f09655ea8a4aefbacfdfbc" mdapi_config_hash="7718c7f404e43bd1aef3d373ee1032a6" id="02fc686b-6061-4224-957b-0c80f4fb5973" chipset="acmgt1" name="Ext214" />
+    <guid config_hash="0fa38b874093d098ea91a3bd99af92db" mdapi_config_hash="0c4a2e0e4b1c911ae03c911904a5675b" id="6965f87c-43a9-437b-9bfb-78e30f504806" chipset="acmgt1" name="Ext215" />
+    <guid config_hash="0dbca4480da832f2b9793898ca72cb4d" mdapi_config_hash="5854c837a22ed98fd5eff9fd6df26f79" id="834f9ddb-0ef2-47a8-bcf3-871cf2b5634e" chipset="acmgt1" name="Ext216" />
+    <guid config_hash="81f19bd1f4670e075909fedacd30b88b" mdapi_config_hash="b2a9f3ed862189e64a45f8c08add29d2" id="dd1c62fd-8d41-4f1d-a980-95eba5b62d3d" chipset="acmgt1" name="Ext217" />
+    <guid config_hash="a282e7cbb57df81b6a723aeb2e205092" mdapi_config_hash="77b385307a36d49b59450fee078d4272" id="1a1e9195-858b-47aa-8f1c-c66eea6efbb9" chipset="acmgt1" name="Ext218" />
+    <guid config_hash="a75d849fbca5e34d2993b4cf7e41aa9a" mdapi_config_hash="cd8713a3c6807080e662f4f9a9d73a46" id="a75e98da-d723-42d0-8cd2-c4dc704e6aa1" chipset="acmgt1" name="Ext219" />
+    <guid config_hash="70261a93ce4650d846fe430ab7fcda40" mdapi_config_hash="3bda96e4f7e882ac7dfb065e9a8b41c1" id="440ba901-38f7-495d-986b-486534274741" chipset="acmgt1" name="Ext220" />
+    <guid config_hash="56a4bd04f44424a407d92c3c75044fb8" mdapi_config_hash="13206261e313debd6d6c2ef1b8df6176" id="6d047d05-95ca-46b4-aac3-a7b055b8fd15" chipset="acmgt1" name="Ext221" />
+    <guid config_hash="8f6c91a5e970a5048e55a4517b650dec" mdapi_config_hash="4c0a273f63e225fd4fec4b22741318a3" id="a338ef12-c1bf-45f8-8c0b-084fa99376c8" chipset="acmgt1" name="Ext222" />
+    <guid config_hash="e160804e09a5607f5e1b226cb4935926" mdapi_config_hash="e84d31b2c04f8e8bd179ba877325b6cc" id="2684ee0f-2950-4445-939a-549f07d3370a" chipset="acmgt1" name="Ext223" />
+    <guid config_hash="af65d1ae7b8dc14e99a9cf4f58cc9e8d" mdapi_config_hash="9a8ab35720351d714b3d6e9aae109f95" id="e1de83dc-4fb2-4e1a-852d-9c5e49bf45db" chipset="acmgt1" name="Ext224" />
+    <guid config_hash="6c07fa24d7b4defe09008f9ffecab192" mdapi_config_hash="9ec8053955ed7565061a683ad3c8f883" id="81beafd2-8d1e-46bc-96c0-7f914522a760" chipset="acmgt1" name="Ext225" />
+    <guid config_hash="8c0460b9c0e48f4a64020d0dd37c8f7e" mdapi_config_hash="b21942eb6a9ff37c65d3e210ff331980" id="e299ef7e-7be1-4554-a5c7-e64d36be98e6" chipset="acmgt1" name="Ext226" />
+    <guid config_hash="73a49c0333e18513b6aadc429d072d67" mdapi_config_hash="3cd5f41724914fa12a8e0b2372db6400" id="e9d1019b-205c-4d1e-a2a7-fd7708a6ad91" chipset="acmgt1" name="Ext227" />
+    <guid config_hash="2e4d3d499567062a97d9aa13809d3533" mdapi_config_hash="aa100730afb50729fa562dafa28689a7" id="ccf8706c-40ea-40a6-ab4c-47e5b32a1485" chipset="acmgt1" name="Ext228" />
+    <guid config_hash="6a19e9e3497eaff3ce66618dbde20ef0" mdapi_config_hash="6a0112d99e95a9d5426155190ce64c1b" id="2ebb4747-7eb7-4a65-96f8-6a57131a5e82" chipset="acmgt1" name="Ext229" />
+    <guid config_hash="195df4681d7198f5631062d25f2edd0c" mdapi_config_hash="0a5b381836c45fc8a14737b06877372b" id="baaa8d7e-40b7-4abd-991a-d71265437230" chipset="acmgt1" name="Ext230" />
+    <guid config_hash="5d2eefa979d4c0db01bbcfdcf3ca245a" mdapi_config_hash="3633f6117ad1f4bdd29e2bd2c77cddd6" id="a57ee736-e6ab-4e8b-a719-3a63d7d20f34" chipset="acmgt1" name="Ext231" />
+    <guid config_hash="25d0f6725e5b3c88f738e2492c063363" mdapi_config_hash="8cadc932b5ef29d27d16b5009e9ccff9" id="c33082a0-ae0d-4679-adbc-9566c75ffe6a" chipset="acmgt1" name="Ext232" />
+    <guid config_hash="af5f05fa3cbf4463fd5efaf4435632a9" mdapi_config_hash="62b378e721b105a41e85292337e7d7d6" id="3381cf54-6e4f-48b1-81c9-d5cfd542d316" chipset="acmgt1" name="Ext233" />
+    <guid config_hash="5f0ff9ce44509e07359137b83c40a050" mdapi_config_hash="dd0195354e6f119221975d5dcbe16acf" id="b7f1e445-7aaa-4fe3-a7f1-53fe57e1a7c8" chipset="acmgt1" name="Ext234" />
+    <guid config_hash="c57d96d553d437bf0c0ba4b7d48541ba" mdapi_config_hash="0c084157d183b56b77156c47e5b53cdd" id="7e29d0d3-2ec5-4716-90d4-917c7b3cbdca" chipset="acmgt1" name="Ext235" />
+    <guid config_hash="83d6433f9db93399da432bc21e274d08" mdapi_config_hash="1678730ecfb5b5382eeff06f0423d719" id="ae42189a-f2a1-4494-84b0-f2d506decbc1" chipset="acmgt1" name="Ext236" />
+    <guid config_hash="8a2219263d91fa782b154fdcc20c8246" mdapi_config_hash="e53c035736288a34d9689782f5d7411f" id="6f65878e-1b6b-4a3b-8107-837073903643" chipset="acmgt1" name="Ext237" />
+    <guid config_hash="75645472bf7411c9ec4592746ac24bc4" mdapi_config_hash="1b655ed590a8b791f963d785157f5bdf" id="a1c8b5b0-7b8c-4dbc-a4dd-eb29f8055ab0" chipset="acmgt1" name="Ext238" />
+    <guid config_hash="e6e1bf7b7add5f4a06e6efc76ddc1a91" mdapi_config_hash="a5d4b65a3d2eaaf68cf9f6a5f7b06d0f" id="cc574967-0ba6-4c22-801f-881b3974395a" chipset="acmgt1" name="Ext239" />
+    <guid config_hash="f5fff228cac4a33a2ad3fa6cfad15324" mdapi_config_hash="3ec7dc1e09de82b25cb41587a64f6226" id="d96495d3-d734-4b58-bf54-ece1a4a1ab09" chipset="acmgt1" name="Ext240" />
+    <guid config_hash="292301c8cd06bb2ace701f88fcb74444" mdapi_config_hash="0447383cbb462c27879caaf77e6b4c63" id="1c157760-179c-40d1-aa3c-b419f609ea79" chipset="acmgt1" name="Ext500" />
+    <guid config_hash="c88166576d30bc0d817949d89eb4afdb" mdapi_config_hash="a195cf96c2537f74090ef890c69c0026" id="06451560-fa04-4f38-b502-e0a096965a64" chipset="acmgt1" name="Ext501" />
+    <guid config_hash="73cf9d34be55b9fe9352ed160e17c4ca" mdapi_config_hash="dfc86f31ed91149ef9329bbda6a06612" id="9d21c47c-92e0-4454-b3f1-484f27763e83" chipset="acmgt1" name="Ext502" />
+    <guid config_hash="f1968a06f8ac53a3866e020ce93c04dd" mdapi_config_hash="cddac67e3eee29285177057d4f40f929" id="3cbb77d0-15f3-4bd0-8db1-5644266d78fc" chipset="acmgt1" name="Ext503" />
+    <guid config_hash="bf319d9b55185073e31d28d67bb5a29f" mdapi_config_hash="29db5209c3ead6c4e5c8fb0e65fe5e5a" id="e81aaa56-a54b-491f-9803-ed19d2762e13" chipset="acmgt1" name="Ext508" />
+    <guid config_hash="1f75dc15ec32ae3bc3fef249a3815542" mdapi_config_hash="f5e6861401967100bdff48c423e1e688" id="3c10260c-cb15-4474-ab84-c226d54f2974" chipset="acmgt1" name="Ext509" />
+    <guid config_hash="3ebbed84f247db40096c3ca56d89e40e" mdapi_config_hash="1bbe2727551b21d94cc77727f2da16b5" id="95455b22-bda5-4f6e-86ae-0e500f0b419e" chipset="acmgt1" name="Ext510" />
+    <guid config_hash="a5c49c3ebdb51b9c7c3a9596e78f1dbd" mdapi_config_hash="8cc5a168503a2fac73ca37fc14e5f0e1" id="95137f7b-f35e-4bef-9949-3c6681813bb9" chipset="acmgt1" name="Ext511" />
+    <guid config_hash="0dc11e8b51b55f875d6a910a62528b36" mdapi_config_hash="527497315e9ce87f6b27256ffbf7ba50" id="3effc828-e8ca-4aab-a1a6-c478a41d55a7" chipset="acmgt1" name="Ext512" />
+    <guid config_hash="f5fc6bb49cd289c389bbcdd97f8f3e94" mdapi_config_hash="4e3656a8c49229794ba3c2a39025e1ad" id="42d607af-0d8c-4d80-8443-73f5952060bb" chipset="acmgt1" name="Ext513" />
+    <guid config_hash="cc372fbb060ad700fb983bfa05cf81b0" mdapi_config_hash="36153177f4d2a1a4370a166316fba516" id="bc6702b9-80d9-463e-9699-334c9543e076" chipset="acmgt1" name="Ext514" />
+    <guid config_hash="f39e8d6c423d66200d984a53f027227f" mdapi_config_hash="ff56cd2d3621b6a5d90681e26662ecbb" id="5a8af975-8ceb-4111-b13a-3584b5485afb" chipset="acmgt1" name="Ext515" />
+    <guid config_hash="a1fafcde16ae6adf015cb61f5461e0e1" mdapi_config_hash="e781bf31f152aad4938ceb3aa787fca1" id="a0bd2654-8654-4aec-b9c3-609b7cfc7c29" chipset="acmgt1" name="Ext516" />
+    <guid config_hash="545871b03bf96eab2b5d68025ef4666b" mdapi_config_hash="07797e0c662798a7521edcad32a7ae5f" id="56c67cc8-4bbb-44bc-8552-1d095f1800bc" chipset="acmgt1" name="Ext517" />
+    <guid config_hash="a145c7b67316ffe803202c00937e3180" mdapi_config_hash="1e00466df9653fd5b1e59a5bc0a0c490" id="f4f45c2b-4810-43db-a47d-cb854884f724" chipset="acmgt1" name="Ext518" />
+    <guid config_hash="acf3f4ab24f3181ada2596c8c4b33323" mdapi_config_hash="71b7599209e7f623ffbf77e6e97dc404" id="58283b64-3a38-4985-b19c-db349947311a" chipset="acmgt1" name="Ext519" />
+    <guid config_hash="c9262ebe1a9085ba8e17f0b56df167eb" mdapi_config_hash="9a86263ab0c5344708b56523db530e59" id="144cc1f2-ff34-4ce7-8bb9-7cb6cee76403" chipset="acmgt1" name="Ext520" />
+    <guid config_hash="cc0cbd19cd8396daf31a4c43f0c9b72c" mdapi_config_hash="1c0c9dd022f0a8ba459a765b2a84ebce" id="9b5b6101-2131-4069-ace5-bcb3300991cb" chipset="acmgt1" name="Ext521" />
+    <guid config_hash="d3ac23113c6c78bfa1e4c9ba272a2509" mdapi_config_hash="4a63c3f2bd5e5fb13d2800f11dc7740f" id="b3cfc81d-5297-483d-8e45-b77e4935fbe9" chipset="acmgt1" name="Ext522" />
+    <guid config_hash="6bb65219794dfb6a1f1e2d6d7fc878ac" mdapi_config_hash="3e1b4888a83beba85489969de7cf1763" id="1975278e-2c3f-49a3-891a-fc2ed8f22eec" chipset="acmgt1" name="Ext523" />
+    <guid config_hash="30d289b4c979c42d54a45a4ff1af0519" mdapi_config_hash="f5bd3bc0bca95bfce98199f8a5cf90ba" id="06d3fa26-617a-4443-a552-17937fc2bc83" chipset="acmgt1" name="Ext524" />
+    <guid config_hash="9b25a3c3dcd18d39c811738c9bb80a5b" mdapi_config_hash="47c0e13155017f90a141cad97dce055b" id="5115960e-f55c-4854-bac4-b771c4185270" chipset="acmgt1" name="Ext525" />
+    <guid config_hash="92109d4b551d47f1ebddb92af9577905" mdapi_config_hash="5ed607edcf09e43720510b366d5164ae" id="4dc30759-6119-4bf0-85b7-4a7cd5e79956" chipset="acmgt1" name="Ext526" />
+    <guid config_hash="d348c04a69800278e93ce696589a8ef5" mdapi_config_hash="a5751a259780e1c128f81fb58d73b454" id="2060bec5-9739-4970-ab77-09dd7c107044" chipset="acmgt1" name="Ext527" />
+    <guid config_hash="7272e30b65a50a446bba9e9d4e6c38e2" mdapi_config_hash="0ede2625ff325abc9556c2f79f135df2" id="91384c6e-5087-43d6-a32f-699690ca8917" chipset="acmgt1" name="Ext528" />
+    <guid config_hash="e7ebfa8f96d5e8d3fe943fa862a475ed" mdapi_config_hash="f4d468897cdd9d7618c9c5c890864787" id="cb4f7554-9a12-4f83-a7c6-0ff8911f9e73" chipset="acmgt1" name="Ext529" />
+    <guid config_hash="e2c841acf140e73947b4fde1b3637340" mdapi_config_hash="6a9d00819e14fb3178878b66a648ad92" id="80502c88-9c1e-4804-8d54-53b3d784a540" chipset="acmgt1" name="Ext530" />
+    <guid config_hash="65e598c36f24fbbed61b9f29f22906b6" mdapi_config_hash="4318133904297748c76a038f742268ff" id="eccbb94d-f7ed-4d45-89bb-d17a0e28e97d" chipset="acmgt1" name="Ext531" />
+    <guid config_hash="31a9994c9523d67e612a89860956a748" mdapi_config_hash="562ded5c070fd64bd3254155d782e228" id="09cb4790-899a-456f-9c12-f0b5ae36bf39" chipset="acmgt1" name="Ext532" />
+    <guid config_hash="06b0b6e00cadfe410e4a16ac268dc4d1" mdapi_config_hash="26cffa7b241feebff27888e6228687be" id="e257595b-2e38-4da5-b375-bc494b4d0ee8" chipset="acmgt1" name="Ext533" />
+    <guid config_hash="ef8296994d00e8de953b430dc2336936" mdapi_config_hash="b46f8af2ff32b1cb0a148ab25607dcc1" id="f2477c56-db39-43cf-bd4c-42782dd02e27" chipset="acmgt1" name="Ext534" />
+    <guid config_hash="597d72f1b88eb636d7e4947f55126a7c" mdapi_config_hash="6da98998f96cc35043ecda01a28bf3eb" id="b6417928-9c95-4df7-88a2-e6b8de52abec" chipset="acmgt1" name="Ext535" />
+    <guid config_hash="ea58095d9149eefb3b46afd33b27c94c" mdapi_config_hash="b7662b81a69c2318aa199eef8947eae5" id="ac88f2a7-2f38-4e61-a6d5-9da2d50edd38" chipset="acmgt1" name="Ext536" />
+    <guid config_hash="38307a56bf07276dd8d3d07eccdaadff" mdapi_config_hash="beae875603308037baef26cb4e56ea41" id="87640cd9-04b0-4b76-a016-308ab7975f8d" chipset="acmgt1" name="Ext537" />
+    <guid config_hash="8c246b3c51760bc56021dcca4d98b64f" mdapi_config_hash="e9ffa7ab3397a2078ea72ca72b648042" id="2a2f8a81-b046-4a67-92c3-2ded36755f76" chipset="acmgt1" name="Ext538" />
+    <guid config_hash="cc5c545e4579215cd5e1daf4f8ccf598" mdapi_config_hash="c06b0cfe2ef7f7d0ee15d5d9d59f04af" id="89f03450-0e5f-4370-b7cf-cea4e627d4e8" chipset="acmgt1" name="Ext539" />
+    <guid config_hash="9cd0d55e6f24cccaf43362e66846110c" mdapi_config_hash="8bbe7c98aee8c4e13cd4bcfc88356089" id="85c7638d-976e-47e5-8f52-2079a0ea147f" chipset="acmgt1" name="Ext540" />
+    <guid config_hash="4cffd8f8e3ce9cf708b9930bfefa6d64" mdapi_config_hash="51c0d733753392b68f9f05eb6eed2ad6" id="69645853-2e7f-4a77-83fc-fa03f43b5d35" chipset="acmgt1" name="Ext541" />
+    <guid config_hash="86fe7c5b0f79e2f195b8b07b60f2edae" mdapi_config_hash="579fe3e074f48c52eac60403cf5a747e" id="657218aa-a73a-4127-b081-07ece46ff786" chipset="acmgt1" name="Ext542" />
+    <guid config_hash="5cc9510caf7275ff5cc7e61a319234a4" mdapi_config_hash="ae5c2ef4361cc50202b1f4d3283ac607" id="1a51853a-37a2-4020-8ccb-650604ea4f64" chipset="acmgt1" name="Ext543" />
+    <guid config_hash="5afad4a36d651c8ed2d343a4ee64656a" mdapi_config_hash="969e77a6b883f3e4bd11597003c0b3e7" id="9aa2e068-b13a-44b2-be93-a4cf68924cdd" chipset="acmgt1" name="Ext544" />
+    <guid config_hash="5b9bf405632b8d14a5fd2de009a6617f" mdapi_config_hash="770396733fa2c5f888dedc1ab959dfa9" id="5e8c65a2-97ac-4dea-af1b-27b9f12dafe6" chipset="acmgt1" name="Ext545" />
+    <guid config_hash="648a597b7183dd3b493c029db7e9cb30" mdapi_config_hash="cf2390eef15a57224d0678f25b975c7d" id="192ec14b-c329-4e81-bd2d-02f7cae24579" chipset="acmgt1" name="Ext546" />
+    <guid config_hash="95fbff94cc3a238e65c0443caad2f6a0" mdapi_config_hash="4aa2ab70084a111471c3f5427ebbe18a" id="2e5ac978-b4e4-4693-8f88-d90d0353dd77" chipset="acmgt1" name="Ext547" />
+    <guid config_hash="40963244f7b26a91769f85cb64b16851" mdapi_config_hash="515ab3d31821af95b14941f048add55e" id="7c95ba0f-cd85-4eb2-ab43-987f84214820" chipset="acmgt1" name="Ext548" />
+    <guid config_hash="472bcdb97493000caf3f593414f08b48" mdapi_config_hash="00d5e25a79e41ada6a22f2ec515c45c1" id="8fa03693-d2d5-42eb-a382-e2cf05bf8197" chipset="acmgt1" name="Ext549" />
+    <guid config_hash="d837f394515cef5ab41e20506bbd5896" mdapi_config_hash="937ccad99681cb98faf0112bb88e5be3" id="3714122b-03ee-499b-bc5f-31ed5400924e" chipset="acmgt1" name="Ext550" />
+    <guid config_hash="4e359a4c6c5bfbb90c11c8385f70f38e" mdapi_config_hash="69d945906a10272834a2df243e358111" id="31ed9c46-b219-4bcc-8c20-22586fb077f8" chipset="acmgt1" name="Ext551" />
+    <guid config_hash="7be9f83be5e14c74f84886dd895fdd9b" mdapi_config_hash="677ec46b2d65b89ca5bf4a34724bdff7" id="f639c566-949f-4484-8c12-5127fb771b4c" chipset="acmgt1" name="Ext552" />
+    <guid config_hash="acbb06143814fa672b47b2e9af68bb15" mdapi_config_hash="7fcaf7e5cf736ffb51ab7e28beba8e83" id="40b20c9d-0935-4000-91d7-f312a515bb4b" chipset="acmgt1" name="Ext553" />
+    <guid config_hash="dc483448783ecee75c50c4c35c20c759" mdapi_config_hash="de26db366e2acbbe24add896075500f3" id="bcff8729-44e4-4efa-8436-f1775fcb204a" chipset="acmgt1" name="Ext554" />
+    <guid config_hash="ffecd22693e6aa74e47e1e09c65f697a" mdapi_config_hash="5d7af72d16b3bf039bbcd2776e6636cd" id="6bf30c0e-a169-4ba3-8527-047d4f691aa3" chipset="acmgt1" name="Ext555" />
+    <guid config_hash="57e90f0cc7ef3b9c7ca4f75c4803672c" mdapi_config_hash="c22c5d4f2faa7d9da87b62ad67f616fe" id="bc1cda24-8e1b-4000-9443-1135be1b976e" chipset="acmgt1" name="Ext556" />
+    <guid config_hash="e682eeada8bbcb893050e4f2c2e1bada" mdapi_config_hash="51185678325b66968b2652bdffd0bb3d" id="c8a172f8-4a06-4931-b877-bc8aa687a9b8" chipset="acmgt1" name="Ext557" />
+    <guid config_hash="ec4ed96d22de43c663680a06f4f43ea3" mdapi_config_hash="1ab2110a870c4a69e2b81d9215735bd5" id="a5a9b5ed-c78c-4e3d-a808-22f1debd6b43" chipset="acmgt1" name="Ext558" />
+    <guid config_hash="145db1c6e054541b6aee3bf6fd06137f" mdapi_config_hash="19bab8aa5d3397e7ddfcf2e9f3fd6227" id="93bba39f-4d65-434b-9251-37f2badf256e" chipset="acmgt1" name="Ext559" />
+    <guid config_hash="344f255d653846067d34bf4e4530ff27" mdapi_config_hash="d6d5153a13d55895f89b5fb0a064d035" id="a16d5961-ab03-4193-87d9-394ad9c2da80" chipset="acmgt1" name="Ext560" />
+    <guid config_hash="df565eb53e7967860a4cc406bbb974a8" mdapi_config_hash="9861b6b99c31de2d8d511fc2b7fc173e" id="8dfd3f4a-0686-48bb-94cf-76a3bc5386ec" chipset="acmgt1" name="Ext561" />
+    <guid config_hash="9c8a7c975bda5e68d705bd62afe9acff" mdapi_config_hash="041925e9e42ea2aadee504a8d552d1f2" id="f41e3a7c-de83-46af-8be2-b26c605d1317" chipset="acmgt1" name="Ext562" />
+    <guid config_hash="d3c5828116e850f0b8ca67a0d37c108a" mdapi_config_hash="fa5f272f45c3353007b20560eb4b8d8e" id="c599736d-1b09-4ae6-9e82-c98d17c3582a" chipset="acmgt1" name="Ext563" />
+    <guid config_hash="ddb0cf4a3ebc5bad4975b834ce0141f5" mdapi_config_hash="73e86e4e676b7fb8fc68ae1f48b060c0" id="0f9c5fb0-e5bc-4119-a11f-d32d0304bca8" chipset="acmgt1" name="Ext564" />
+    <guid config_hash="7b22bd29eb16da8a28daa526677ea4f8" mdapi_config_hash="c3a83d8d29ff0be5d617f62eae2983bf" id="def2b365-d8d1-4e4b-b832-39afd5e214d9" chipset="acmgt1" name="Ext565" />
+    <guid config_hash="e6b25c38dbdafbf3d8cba9d47b96758e" mdapi_config_hash="0c3221607ea6779e1e1366677702d2eb" id="a53e91c2-03b4-488a-ab7e-293f4466e00f" chipset="acmgt1" name="Ext566" />
+    <guid config_hash="4dac49ea134b9be63fadad389dd16395" mdapi_config_hash="5166a562ec90ffe5b13f8cae2b5b6ab2" id="0cdefa4f-f4ac-4072-a021-be48ed5b0ee7" chipset="acmgt1" name="Ext567" />
+    <guid config_hash="f25e194664e6448e7fbd558b5477fbb2" mdapi_config_hash="38d493f8bfdaf461db090fb5a1d3f6a9" id="7404a462-f9c0-4fb6-9ec9-b03bbd5e4572" chipset="acmgt1" name="Ext568" />
+    <guid config_hash="2e3dae9aea38ec547c6afafcca82dc2c" mdapi_config_hash="6d392143f3ec1e8940b9c5c676261968" id="b3515130-788c-4d36-b20d-e8ca02e11cf1" chipset="acmgt1" name="Ext569" />
+    <guid config_hash="7c0b2e864e654ca268d58ba7a4e36e0c" mdapi_config_hash="fde6da1eeefa44f3bd95b0c8876b2903" id="73e5a9f9-ca88-4467-b407-737e7c7080fe" chipset="acmgt1" name="Ext570" />
+    <guid config_hash="baad6f80facbd4d135de5c9393d9c4f6" mdapi_config_hash="ad060f6502ef3021d523aff45a4952cd" id="ae2fa4f6-2afb-4ac9-866e-bfd943f91a54" chipset="acmgt1" name="Ext571" />
+    <guid config_hash="6389c2dcb6a2b100db74a782d4f7006f" mdapi_config_hash="d8d0fcb20772d25731d0ac8a7d587cb9" id="cea714fc-17a9-4dae-b3e8-8be0f3149918" chipset="acmgt1" name="Ext1000" />
+    <guid config_hash="e358e6156c7379f8064b679128fe0747" mdapi_config_hash="a9988177c98737d0b52bcf215079e95b" id="3ec074a8-e3cb-4090-86c0-0d1426ac9a63" chipset="acmgt1" name="Ext1001" />
+    <guid config_hash="c4809b4f9dbd405691ebd29dea153aa2" mdapi_config_hash="8d1002c55a03d16517de67b4b8970d12" id="17275fa7-be46-48a6-a654-6931ecbfed77" chipset="acmgt1" name="Ext1002" />
+    <guid config_hash="8bb1139fff1ee995a5ade92734e11d8a" mdapi_config_hash="fbbbc2eaec0f182e838cbdfa1c8372c2" id="a56f028c-27c7-4e9b-bc19-04bbf67444b0" chipset="acmgt1" name="Ext1004" />
+    <guid config_hash="83d7b8e952e3598565267c65964b2771" mdapi_config_hash="7a5482c523806abe25c8c4dbcf5273e7" id="f43c884f-817d-4037-bc96-7bed64906683" chipset="acmgt1" name="Ext1005" />
+    <guid config_hash="e7efe91c7aeb591043358c1b5e3c019d" mdapi_config_hash="94ecec147a25de742814fbb01fd4e9c3" id="6a6e8e1d-6148-4316-95f9-2a8b5236520f" chipset="acmgt1" name="Ext1006" />
+    <guid config_hash="ae85ee9664f10b42cc854c26878d6cba" mdapi_config_hash="de92fab5a4df472219094e6a3b635632" id="b6b53888-0a0b-4fc6-b77e-c604875495a5" chipset="acmgt1" name="Ext1007" />
+    <guid config_hash="310dddcb04d1088a3865f698d758cbc2" mdapi_config_hash="c6a3be7d49b5697074021ca673a39a57" id="6e06382a-3c98-464a-9811-cdfb956e4e8e" chipset="acmgt1" name="Ext1010" />
+    <guid config_hash="b2e407f251d3960e0da6afada6b8373c" mdapi_config_hash="10c3bb1ccac0dd3e84cdd74c81161d8a" id="0692a728-614d-4d12-8c03-7b3ffe961ef8" chipset="acmgt2" name="RenderBasic" />
+    <guid config_hash="47dd4aee9ef5ba2d15e61d25f735d1d4" mdapi_config_hash="c4c86e8bd7e0cfffa7c553517340292a" id="ccde9a29-a5c5-4a9e-b7f5-ec1092387e2a" chipset="acmgt2" name="ComputeBasic" />
+    <guid config_hash="da49b5c7e497eab30522295f416dd84a" mdapi_config_hash="80f802eb9434e078d1c158be06940d88" id="e529d23d-d766-4391-84e2-68d43fd1f9b0" chipset="acmgt2" name="AsyncCompute" />
+    <guid config_hash="1a28d05d945714b099a9417181b72962" mdapi_config_hash="0cdf3168ffd88a84c2a42d4c62567189" id="0785f0af-8ae2-470c-bc7b-dd81154d4d24" chipset="acmgt2" name="XveActivity1" />
+    <guid config_hash="e2219e07d86fd978dc7b5bb911bd8487" mdapi_config_hash="9183dab175af6ef43d4e04d72d241733" id="1a01365e-7c8d-4816-b69a-edb89731dcf9" chipset="acmgt2" name="GpuBusyness" />
+    <guid config_hash="83e4e688fafc993f80f7f8d769bb23fb" mdapi_config_hash="21b64bca96c7e77dd2fe2c9df2c903cf" id="9ca2b4be-4bd5-4873-9d59-9d6a5d9f8c29" chipset="acmgt2" name="RenderPipeProfile1" />
+    <guid config_hash="c2c4a9eafbb0115295307e3e1d9f8e4a" mdapi_config_hash="a65a01102695be77f2b62a338b4bf36c" id="901cbc75-aa84-496c-a07d-c5db62b8dadb" chipset="acmgt2" name="RenderPipeProfile2" />
+    <guid config_hash="dc05bd42bd0ee1d3136b5a575f45373e" mdapi_config_hash="09f057ff6f8ddf71468bb659f6546e50" id="9afedc01-2ddf-46af-a5da-8310c1afed17" chipset="acmgt2" name="RenderPipeProfile3" />
+    <guid config_hash="c0a78f26a8ce0881f6a6e6bc2b1b71bb" mdapi_config_hash="4832bb166cbed8d9818d57db53b433e8" id="89469a84-856d-4433-8962-773c68ce818b" chipset="acmgt2" name="RenderPipeProfile4" />
+    <guid config_hash="4ee37d5456fff9ced1ea71f4f780b847" mdapi_config_hash="dd537cbe408148b58a74888c1cedbc05" id="2128b792-e30e-49ec-a64b-8a636364f728" chipset="acmgt2" name="L3_1" />
+    <guid config_hash="8954ca43b54846b7b71e655e150d1121" mdapi_config_hash="6b1945962232d82308543fece5e25699" id="a70724fd-5214-4325-b32c-61b37f409efa" chipset="acmgt2" name="L3_2" />
+    <guid config_hash="9c716c46c7207e8a48e9e1bd8c15224e" mdapi_config_hash="3b7c10ceb528fa25a7a68a187f64c3f4" id="167e0c1d-8ef2-44d3-b4fa-407b9a23eb5a" chipset="acmgt2" name="Sampler_1" />
+    <guid config_hash="f9dc7f33db6b2305e352d1ca65fad3d4" mdapi_config_hash="26e5116297660db53f39d0909b413ecc" id="879e3747-17f6-40b8-9a7a-2c6752ff6d6c" chipset="acmgt2" name="Sampler_2" />
+    <guid config_hash="e667469040221b51349e5cad1fb3689d" mdapi_config_hash="0a78af71987a50eb2cee7e808937abf5" id="55aebe75-d0e0-4d07-aa50-4b1e672341a7" chipset="acmgt2" name="HDCAndSF1" />
+    <guid config_hash="c565b65a61f728c66f17b4784123e9bc" mdapi_config_hash="20cc0f7f7a4c50d2e3ed7178298e0735" id="d9c30016-f7b6-4c66-81e1-cb75b68a2222" chipset="acmgt2" name="HDCAndSF2" />
+    <guid config_hash="8b565f05a52e8e61881cbbfbb032dad3" mdapi_config_hash="80b637e35f15fc1c6abb66623902eaa9" id="6357cd3a-3553-4a60-8c86-7c59347c3916" chipset="acmgt2" name="HDCAndSF3" />
+    <guid config_hash="66a151e9acb9ef679c7e64ee563e4739" mdapi_config_hash="1910d3ff8790c3fdb71942b3b046f888" id="031a7f13-0f25-4794-958d-38cea3050a32" chipset="acmgt2" name="RasterizerAndPixelBackend1" />
+    <guid config_hash="1ab577a85bd7a784c1e160315439939a" mdapi_config_hash="26ab8caddc50c1b4a92eec5d0d897035" id="2032fb37-ebc9-4eb6-8916-4550474edd5d" chipset="acmgt2" name="RasterizerAndPixelBackend2" />
+    <guid config_hash="8f98443ad7e76840f0a67f46fbf13fbd" mdapi_config_hash="ea5d98916272a3249fbbc759ca2cc5b2" id="51bc5454-ff6e-4033-b8b0-c9734975b3d4" chipset="acmgt2" name="RasterizerAndPixelBackend3" />
+    <guid config_hash="1fe318a62f8fdc5e497799ad1a4593d3" mdapi_config_hash="ac8d46704b6c82b36b3fd9855b18e03f" id="5b08d0b8-c976-4d7b-b770-8f538bee394a" chipset="acmgt2" name="TDL1" />
+    <guid config_hash="0db5677558a053a7b7323022b9c2c876" mdapi_config_hash="d50175e820ace925e81239cfa4c2a778" id="27ee6bcc-1378-4046-8922-124ea2115039" chipset="acmgt2" name="TDL2" />
+    <guid config_hash="e548db4ddbf30e0cfc5d1c63a3c39217" mdapi_config_hash="e55a7ba6378c1f250e7b0bab9fc840c0" id="dd909127-caff-408f-994f-e0f64a672918" chipset="acmgt2" name="TDL3" />
+    <guid config_hash="2dca618476481a2d92230cadd52ae3bf" mdapi_config_hash="7784a95b48eb4a3e6d71be7752255808" id="64fae233-cafe-4594-ab7b-fcbf5b442933" chipset="acmgt2" name="TDL4" />
+    <guid config_hash="a1671c0743035845fa489b5b5621ee90" mdapi_config_hash="52b35dbeda4f1c82232cafb2f55f1d1a" id="063f5cea-f9ba-4c93-b7e8-22dc5c05060e" chipset="acmgt2" name="TDL5" />
+    <guid config_hash="7e7a598638d3b4e222a0551896cb1327" mdapi_config_hash="f61d9f8e3257b65593db09f7c8b18859" id="4cba20e7-78ea-4aaf-bd5d-42b8647cf778" chipset="acmgt2" name="TDL6" />
+    <guid config_hash="3fc03af4b1dca0e9c530f3d645316029" mdapi_config_hash="fe431f6f70e8ad185092abc40ab2f167" id="f76dee3e-b215-4780-9c83-7a1dfb1a6e63" chipset="acmgt2" name="TDL7" />
+    <guid config_hash="8531f8422804477352d85378b81b8677" mdapi_config_hash="f01ac39ed866c85bc7e2400d4f9557a0" id="70a8e39e-5244-43ea-b922-bd7024baf879" chipset="acmgt2" name="TDL8" />
+    <guid config_hash="bf645ca6862f39d60e68cfeb8e86a5a8" mdapi_config_hash="c0ce3fd07208c774c4f446a1e501f6d2" id="cfac9130-4f6a-4a2a-aafc-9e88751ce983" chipset="acmgt2" name="TestOa" />
+    <guid config_hash="038193d82de44de51111cbafbe3eb01c" mdapi_config_hash="52d2e56af19c8e94d9561c40f2794a9f" id="7bb51d65-bc5c-4e23-904c-e7ad932d162e" chipset="acmgt2" name="AMFS1" />
+    <guid config_hash="a3839579601989958bce806b11d7d47e" mdapi_config_hash="96ae5b07d8929986e01cbc9675cbba21" id="b4899455-a030-400a-a66b-ea270f7722fd" chipset="acmgt2" name="AMFS2" />
+    <guid config_hash="6714f1540844eda6075812d876e9baa2" mdapi_config_hash="3afa1ac22af5cd271177353fba82e451" id="cb47ffdf-f1a9-45f2-8ee6-21e0fb8111dd" chipset="acmgt2" name="AMFS3" />
+    <guid config_hash="c6a57110cdfd8921fcdcfe2af9490445" mdapi_config_hash="2e7dcab4821126ed9d95abc0cdff02f7" id="2e296498-77db-42ad-8f34-9cda1ff4dcd8" chipset="acmgt2" name="AMFS4" />
+    <guid config_hash="caf14fa0a6a77ebfabeb8996d8d21da1" mdapi_config_hash="f3785c393878b5a22c7e0dd386f848f3" id="ef47f98a-fb5f-426d-922e-8ae13cedb198" chipset="acmgt2" name="AMFS5" />
+    <guid config_hash="5d77eaf3d836ea04a753450ee9a6e336" mdapi_config_hash="252c6845386f31c9f6917892363b4676" id="ec2c2ae9-a41e-4ff4-99f1-118959c94bfb" chipset="acmgt2" name="ColorPipe1" />
+    <guid config_hash="45550b4209ef3dd178ed92e4ce779f52" mdapi_config_hash="bf0d772b65dc8f8c9c6019e898930af5" id="d7862a6d-902e-4d1f-9f39-e0f94aa4346e" chipset="acmgt2" name="ColorPipe2" />
+    <guid config_hash="6189e1bd287ba2349d88a44dac6be2b8" mdapi_config_hash="0afacd96f63ce911598eba5f739b5cb5" id="f00094e7-2baa-4bb9-807b-d77bb1c72eba" chipset="acmgt2" name="ColorPipe3" />
+    <guid config_hash="79b11b00bbcca4630001b2765f26756a" mdapi_config_hash="ded3941e0faef7cecfd14b24530917ff" id="341991a5-3457-4201-a48e-d368a979f01d" chipset="acmgt2" name="ColorPipe4" />
+    <guid config_hash="59a92b61d99c709bf6f03d0528bed846" mdapi_config_hash="5d5f5cce516ae80b5b04c9ea48a05300" id="34664510-6687-48d0-adc5-b7a60069de8d" chipset="acmgt2" name="ColorPipe5" />
+    <guid config_hash="a0b69be72bad2a14252a971c5817b0de" mdapi_config_hash="e2278aac53b87097db531390576a7015" id="1c9a3218-c1ee-402f-b483-6263a0757515" chipset="acmgt2" name="ColorPipe6" />
+    <guid config_hash="e8d90cd4bc76ff01ee29ed1fdae320d7" mdapi_config_hash="37d8b00817d8223b63e5f594bf7eda85" id="d85dc73b-5121-44c8-87b2-df05b1eecdf3" chipset="acmgt2" name="ColorPipe7" />
+    <guid config_hash="3da5471c033290a83e5487461aae1b21" mdapi_config_hash="825fb76acc4f53ccd0f2c353e980675e" id="4695a23b-b2b0-48f5-8bf1-743255be3e2e" chipset="acmgt2" name="ColorPipe8" />
+    <guid config_hash="67c48430ab3fe20e924fb4bf50f4b7d3" mdapi_config_hash="87681f104ef1a4bbac07922ae849d723" id="73b4fa16-fd16-4c45-bb66-a733308a8b57" chipset="acmgt2" name="ColorPipe9" />
+    <guid config_hash="44c6b74d8f4718751f7375656be5301a" mdapi_config_hash="63daba20a3a4f0e37b4d4b5d5fced5ed" id="41a973fd-a067-4760-be3a-ccac78e0eadb" chipset="acmgt2" name="ColorPipe10" />
+    <guid config_hash="266938c791f666634c554e307ab3fa0f" mdapi_config_hash="c4d8ea77fb50667a4cc25d758c6a21ca" id="a42ec42b-53d5-40b2-8950-9aabe714601a" chipset="acmgt2" name="ColorPipe11" />
+    <guid config_hash="5c721541f1bc628c5fb73fb75d3fb8f0" mdapi_config_hash="b204638d75ee6b7c632c75ad0ff53f2c" id="4682628b-6cc3-4b22-b818-ca5347cd7bf3" chipset="acmgt2" name="ColorPipe12" />
+    <guid config_hash="3839bc9a3f06cb5d48132a0351a2c958" mdapi_config_hash="27e122bfcd63ee290478a8ec66b88656" id="76fcf17c-a3ad-474c-a2fb-58a1517c28f4" chipset="acmgt2" name="ColorPipe13" />
+    <guid config_hash="583bd332d93503a714f042fa515d4ce8" mdapi_config_hash="9f9cc670adc62c02f102dcb9a61332d5" id="6708cf0b-dd77-4fb7-aad1-909ffea99aea" chipset="acmgt2" name="ColorPipe14" />
+    <guid config_hash="24a6b0d47d99f4e545fa467ac8b9a732" mdapi_config_hash="c82ffc3805594147543857bb337d8795" id="cb36baf7-85bd-4ce3-a0d7-4d296c5932a7" chipset="acmgt2" name="ColorPipe15" />
+    <guid config_hash="deaa647e5820cff90dce78e2bcb18e76" mdapi_config_hash="2cf53d8082aa5e6a1cfeaadb798650d0" id="f1e33629-b9d8-4033-a791-2afb70f5bf8d" chipset="acmgt2" name="ColorPipe16" />
+    <guid config_hash="381e9a6f4145d48f5a9d6e02f2505643" mdapi_config_hash="e1677076ec7cc45e88ac8a9bf57193c4" id="fb67c9e2-4acb-4775-b715-ffc4b743d9e8" chipset="acmgt2" name="ColorPipe17" />
+    <guid config_hash="56169430011c189a7bcf4c79b3a012d5" mdapi_config_hash="99ff981de4cfb9d03f0ef64d71b8ef90" id="e0466349-b62f-474c-88f9-3a9b62a3274a" chipset="acmgt2" name="Dataport1" />
+    <guid config_hash="a7bc32e5591cdfc523a769dc3c9bb671" mdapi_config_hash="e74cda688ab7060b9b95c847720222f3" id="28e63e4a-ae68-4913-9f28-ae9269aadf2b" chipset="acmgt2" name="Dataport2" />
+    <guid config_hash="da8222d729df1f3c5c8823ad8a9c0465" mdapi_config_hash="d63467f65bae64067b163b69487dc40d" id="f9dd355a-29ce-4f78-9ea4-e2f0f799876d" chipset="acmgt2" name="Dataport3" />
+    <guid config_hash="1500915b42473fa5a57c59568d2f3fdd" mdapi_config_hash="81b0a2074ccaecce2ceb5865a345938a" id="d79af0bc-b6e9-4057-8eb8-f61fad6efe55" chipset="acmgt2" name="Dataport4" />
+    <guid config_hash="2acde5732d196b229b245c875eeb92e9" mdapi_config_hash="5920e07beaf1623a77708e1046341c07" id="8890d6d6-bac2-4830-9abb-e38e1da08e0b" chipset="acmgt2" name="Dataport5" />
+    <guid config_hash="e65b2cc90b2bd0ce13a121f11cdb00b5" mdapi_config_hash="9f17e4bc81c0cc2c83a5690e01bfd97e" id="c181f521-7c29-4ac6-a44e-d398043d1c41" chipset="acmgt2" name="Dataport6" />
+    <guid config_hash="fe2bee54bafaaae600a5e7b421290b8e" mdapi_config_hash="94d01f21c96049034ce21d06f1dae5d4" id="b83732c6-e9b4-4449-90df-3d3518bcc6a2" chipset="acmgt2" name="Dataport7" />
+    <guid config_hash="08be5a53a74fb853cca6771464653014" mdapi_config_hash="dc3d3a82287876429a2893b47012d9dc" id="a82addb0-e73f-43a4-9b0a-89df6b2ad267" chipset="acmgt2" name="Dataport8" />
+    <guid config_hash="4ee3ada20687f4dcca516dcd29ef9869" mdapi_config_hash="dd21e79c4705310ba7f6c00e267f2949" id="91d91417-69c7-458d-bb48-d1c83871d61a" chipset="acmgt2" name="Dataport9" />
+    <guid config_hash="6ccf0a100baa4b37076a3614d20c1e96" mdapi_config_hash="45de87750bd1a56206ad14f72fb5119f" id="7bb38598-cd33-4e49-957c-cbe7ab599120" chipset="acmgt2" name="Dataport10" />
+    <guid config_hash="29189d27860156a994d0b3c96ee65a93" mdapi_config_hash="196c7f73990fbf9457021fbce0ec9ae4" id="8108a31f-3d5d-46f3-8cd0-6c9b2c3e0038" chipset="acmgt2" name="Dataport11" />
+    <guid config_hash="5298974a1f8c8976eca88cd42d5c4bbe" mdapi_config_hash="1636c246dd5ae03da87d335a7048f152" id="c7acfa27-136c-4527-8e81-517c6a2aa724" chipset="acmgt2" name="Dataport12" />
+    <guid config_hash="a74c1e6e1501c6048881f9aa599ad918" mdapi_config_hash="8b0eacc6334431163fde2cfcea86e951" id="10c1bda5-f032-4e6e-8597-741046aa81c4" chipset="acmgt2" name="Dataport13" />
+    <guid config_hash="31bf8e57f49db41618e412e61d1e7982" mdapi_config_hash="da965171462d1a653b618cf80297a97c" id="9e026386-432e-42ce-8bb8-c833127dbbe7" chipset="acmgt2" name="Dataport14" />
+    <guid config_hash="5ac9e03a94320f444aac559d88895e5b" mdapi_config_hash="10b1cf186ff9de661f3990b810670cd9" id="51c4a645-0ffe-4dc2-bc5c-30075c771f71" chipset="acmgt2" name="Dataport15" />
+    <guid config_hash="ab3414f03d24c3a00807ba160e5a49c5" mdapi_config_hash="5bcdd9a8e07d08d4d1c9b622fdcf1a22" id="4699e9f0-8029-44dc-9f86-23ee43b2592e" chipset="acmgt2" name="Dataport16" />
+    <guid config_hash="93e6efb5cb8e442f81f065e6bf8fb948" mdapi_config_hash="92f9f7aaa03e7fd41a591209c5a7e7b0" id="eae3432b-6340-4d86-bae1-3d6da5d6f9c7" chipset="acmgt2" name="Dataport17" />
+    <guid config_hash="809c9a653d181175d37b1b0822ba06ac" mdapi_config_hash="85886745e8f21cd4b3e37b25e0c6456c" id="fc5c5c04-55ea-4094-92fc-1d40f7f132b0" chipset="acmgt2" name="Dataport18" />
+    <guid config_hash="8ee5f22badeedddc9102097bfe67f0f8" mdapi_config_hash="6e80d88107e4fe83b6463f4b17ee8c6c" id="66cc68bd-b460-42ec-b815-2531dc145a33" chipset="acmgt2" name="Dataport19" />
+    <guid config_hash="ceb2e60e3b4b3aa861c0ed75f94a09f3" mdapi_config_hash="26f0ff1db12d9be6f45391c1d30914d5" id="c3f17ea7-bdba-4ce6-971e-9920ae779870" chipset="acmgt2" name="Dataport20" />
+    <guid config_hash="c88f1e1536f39010583ed3ec30c01230" mdapi_config_hash="ec7e6c5b592df2408443269548459d87" id="fe3d6064-fb8d-4c1c-8375-65c1b2d23287" chipset="acmgt2" name="Dataport21" />
+    <guid config_hash="5aed14a3a4f30502f5b2caf1a9e068cb" mdapi_config_hash="a292a8b4fb44213d0b3205cec0148e5b" id="ca29a63a-9e93-4631-befe-cb0985365d3b" chipset="acmgt2" name="Dataport22" />
+    <guid config_hash="dd76c26b8b2255ef73cfcb62c863839b" mdapi_config_hash="aef08a0481ebf3a9b707394ff5afa5cc" id="f194891f-8915-4c9d-978e-4ef91c44d5d1" chipset="acmgt2" name="Dataport23" />
+    <guid config_hash="b6e7692a0242f9cd48acd694d191cc44" mdapi_config_hash="51a6d1070b7163c7b40d8ae556071efb" id="62bac6fb-20ca-4fbf-b821-cd80ecdcb57b" chipset="acmgt2" name="Dataport24" />
+    <guid config_hash="af1b2a6742f5c9ad515ebb900b02429c" mdapi_config_hash="75b1fd7eafd739fe943d38b29721c42a" id="7a2a2ce5-0e00-429b-9d96-ce5c030378e2" chipset="acmgt2" name="Dataport25" />
+    <guid config_hash="92a2b16320c5b4d2946e9003cacdff9a" mdapi_config_hash="5783ab7d9d15d814ad6a2f95ba3c98ac" id="d6169119-c923-4d10-b16e-6439fa5e150d" chipset="acmgt2" name="Dataport26" />
+    <guid config_hash="3bc6ce2b82f2ab90dca77b458d3834f1" mdapi_config_hash="c0c217bef0bdb90eabdf50ff79a1b7f5" id="703a8fb1-96b2-4c89-ad1b-f721efa0fade" chipset="acmgt2" name="Dataport27" />
+    <guid config_hash="649141f0874ec93d8f4160d08dfa4caf" mdapi_config_hash="c78a24ccc04f76d0196660aba95799f8" id="7d3ea8fa-f0e2-4436-bfed-2cfd5d42e3fa" chipset="acmgt2" name="Dataport28" />
+    <guid config_hash="42b9f1de512b617f5240e3161b08733c" mdapi_config_hash="eb7919c11d4e0970967b68899ca12d47" id="f42d9eaa-4a36-4b10-a96e-6794cbbdc43a" chipset="acmgt2" name="Dataport29" />
+    <guid config_hash="62fbef90e26b5bafd5ef8ccd51114bc4" mdapi_config_hash="b03ba3824df1542804a3399c44230bde" id="6805565e-e6aa-41a8-b486-4f1ca91c11c9" chipset="acmgt2" name="Dataport30" />
+    <guid config_hash="0d25ced9487c2ba1aea5b6121c8919aa" mdapi_config_hash="2bfc246152c25a0c934747ff229f182a" id="c4d2235c-1d4b-44b7-b746-a11016520ffd" chipset="acmgt2" name="Dataport31" />
+    <guid config_hash="c88f1e1536f39010583ed3ec30c01230" mdapi_config_hash="ec7e6c5b592df2408443269548459d87" id="1f7d4994-5397-410c-98ed-5e1bc3d44ceb" chipset="acmgt2" name="Dataport32" />
+    <guid config_hash="5aed14a3a4f30502f5b2caf1a9e068cb" mdapi_config_hash="a292a8b4fb44213d0b3205cec0148e5b" id="42d54580-601f-4dcb-9c91-c5bd37782f65" chipset="acmgt2" name="Dataport33" />
+    <guid config_hash="dd76c26b8b2255ef73cfcb62c863839b" mdapi_config_hash="aef08a0481ebf3a9b707394ff5afa5cc" id="0ce98a1c-8516-4412-b1ce-b0eeaca989df" chipset="acmgt2" name="Dataport34" />
+    <guid config_hash="b6e7692a0242f9cd48acd694d191cc44" mdapi_config_hash="51a6d1070b7163c7b40d8ae556071efb" id="857f49c7-71b4-4fa0-86f0-55f817676cff" chipset="acmgt2" name="Dataport35" />
+    <guid config_hash="af1b2a6742f5c9ad515ebb900b02429c" mdapi_config_hash="75b1fd7eafd739fe943d38b29721c42a" id="dde58e8e-e867-4144-9782-4464798e7c63" chipset="acmgt2" name="Dataport36" />
+    <guid config_hash="92a2b16320c5b4d2946e9003cacdff9a" mdapi_config_hash="5783ab7d9d15d814ad6a2f95ba3c98ac" id="fd0e95c3-0a28-4911-80d7-dad9716739c3" chipset="acmgt2" name="Dataport37" />
+    <guid config_hash="3bc6ce2b82f2ab90dca77b458d3834f1" mdapi_config_hash="c0c217bef0bdb90eabdf50ff79a1b7f5" id="ac3fa7ef-1963-4643-917f-9f9b6161ee62" chipset="acmgt2" name="Dataport38" />
+    <guid config_hash="649141f0874ec93d8f4160d08dfa4caf" mdapi_config_hash="c78a24ccc04f76d0196660aba95799f8" id="ca4e1039-7322-4606-b3cc-7f33dcb93301" chipset="acmgt2" name="Dataport39" />
+    <guid config_hash="88f41e26b62dadd6c50d36d6720acf53" mdapi_config_hash="31e98ef66af24e65a892e2cfa434f8d9" id="3712af1f-03c7-48e3-b2a5-6d9ac64b3122" chipset="acmgt2" name="Dataport40" />
+    <guid config_hash="2faf3e8a613971bb136500776cd72657" mdapi_config_hash="c96317043f93fd2acb5ece026b450f1a" id="3df5cfc4-865d-4314-a53a-379d76aac638" chipset="acmgt2" name="Dataport41" />
+    <guid config_hash="62a0984bd5aeea7dacb6753700a59361" mdapi_config_hash="e55ad6373e0ad7251b6efec03e224855" id="33168209-e5ab-4330-856c-0d4a1b95dce3" chipset="acmgt2" name="DepthPipe1" />
+    <guid config_hash="58ab18207c62990f094f5d24e12d2507" mdapi_config_hash="b49b34c502b0badf021659f446e3595b" id="ada82722-0eaf-4903-96f0-3c8ed2227c7f" chipset="acmgt2" name="DepthPipe2" />
+    <guid config_hash="6e753d72d89bacc63371fe81b8ce2311" mdapi_config_hash="9d70e945bf59a04fcce180106d5dad81" id="359bdac8-5929-4e54-a5e5-526b28a487ab" chipset="acmgt2" name="DepthPipe3" />
+    <guid config_hash="e2db1f19c992bfd39a7cefa86510f086" mdapi_config_hash="47e2f620a4392f23933ee5b251c44804" id="1b8e5aa0-be13-4c87-9ad0-f0d4f7d7f2a5" chipset="acmgt2" name="DepthPipe4" />
+    <guid config_hash="f72b15e5e83f5abcb45c6c75fafd43e5" mdapi_config_hash="1320a5309244f63cbda5f8c9d68ddcf9" id="b192f113-23af-494e-82e7-b9a81810c75d" chipset="acmgt2" name="DepthPipe5" />
+    <guid config_hash="df1128d555469219afcb50db48c0beb7" mdapi_config_hash="e8ae0161fe828dbad6699a0adf116543" id="f617db06-51cc-447d-989c-0811dc7c7b38" chipset="acmgt2" name="DepthPipe6" />
+    <guid config_hash="f48d8282dd9da9aca3e86e98a59934d0" mdapi_config_hash="a9fb36e90bd5dededfaa59774100d6e7" id="bd2422a2-0a56-476d-a52d-b4aa15a5d842" chipset="acmgt2" name="DepthPipe7" />
+    <guid config_hash="834d64718044f6f58bf032adbb836bac" mdapi_config_hash="09375024e2cd1ffdf5b40b1160fedc41" id="7856d434-02e6-4a06-b585-e45e7616f1d5" chipset="acmgt2" name="DepthPipe8" />
+    <guid config_hash="ae90b062bf3f8ab8c0be1147f3242981" mdapi_config_hash="acc31fcf338eeeb1eef830d75f073f1c" id="60b56817-8e14-488e-917d-29bffd9fefbb" chipset="acmgt2" name="DepthPipe9" />
+    <guid config_hash="fd4198add1433da27b43245215d1103b" mdapi_config_hash="0fe77f11467ea71308b43a25560f1c5e" id="8dff928f-699b-4f34-a297-cf46c9519662" chipset="acmgt2" name="DepthPipe10" />
+    <guid config_hash="d2024e7bc32f60f19ec1604c5f551a25" mdapi_config_hash="710f4d8faa8fe586d73b8a59995e00d3" id="fa8e2ae9-3507-4eed-9a02-b18c396a21b1" chipset="acmgt2" name="DepthPipe11" />
+    <guid config_hash="334da62368539353cadb6951c52c3170" mdapi_config_hash="7dfdf1fa5eef76996d55a22623a61533" id="4736a783-c2f3-4f67-931f-eca0fdddf57f" chipset="acmgt2" name="DepthPipe12" />
+    <guid config_hash="f80bf49ac333847e67b0613958e43979" mdapi_config_hash="fd0fb232733cd55e203614f75e2adb4d" id="a305b93f-dba5-4318-89ba-051192cbe1be" chipset="acmgt2" name="DepthPipe13" />
+    <guid config_hash="b6190b62b38848872db42898e5a2c2fa" mdapi_config_hash="dd75bd48e12883ac8338c68462428421" id="dcfc3d88-b9bd-424b-b3ca-854f2e2d4863" chipset="acmgt2" name="DepthPipe14" />
+    <guid config_hash="ad6d9ae878cb725d01638201bd6e8e9a" mdapi_config_hash="33ed087325445c5d55bc9613612f9012" id="d706dc1e-e6c8-4fe0-b6ed-ea99cdc41673" chipset="acmgt2" name="DepthPipe15" />
+    <guid config_hash="b5db152d42f8c28e200963ca8a548183" mdapi_config_hash="121d8ea1afa20d0b0d6b2b69a0c921a7" id="de4874a3-6881-43a8-9243-6af156af44e5" chipset="acmgt2" name="DepthPipe16" />
+    <guid config_hash="6a1cb5856b33fa8522607a8480510ccd" mdapi_config_hash="653e1d2f3f01ca38623334cb01553e36" id="c3d18c22-f267-4f8a-8b4e-b26abd1d1660" chipset="acmgt2" name="DepthPipe17" />
+    <guid config_hash="22768128bec178ca40ff86e79bb1ac9c" mdapi_config_hash="0704be276282a527e98f1df5545f5c05" id="0fa14813-96d3-424b-8935-b70b4e24ea85" chipset="acmgt2" name="DepthPipe18" />
+    <guid config_hash="1e24a54dae2d4fda9ef7a4d459b63811" mdapi_config_hash="3aacdf09eabc372254ba77669d33e75f" id="4e741dfb-12e7-4a31-8bed-1d587c0cafc5" chipset="acmgt2" name="DepthPipe19" />
+    <guid config_hash="9f5eed3d32716d6d56ec351f32187e3b" mdapi_config_hash="9cf55d3b4983843c8636b3e4558b830a" id="66117e26-8834-4f72-b8f3-162bafb24232" chipset="acmgt2" name="DepthPipe20" />
+    <guid config_hash="04182be6137cd310678473857b0763d8" mdapi_config_hash="a7e45fade857ab96cc9ca63fad9a0e42" id="4b9e649c-1392-4856-abe6-9e67bb06ac5e" chipset="acmgt2" name="DepthPipe21" />
+    <guid config_hash="ef47cc757009e01fa6f4c59af001cd51" mdapi_config_hash="4aa9340e6709a8af69b7083006ac795a" id="ced7882f-f88d-431c-9dad-8f3016a64777" chipset="acmgt2" name="DepthPipe22" />
+    <guid config_hash="c4f40b7d9a09205d235114dba68a5d99" mdapi_config_hash="dd21e05f7a31bfcf70baf9025dd55155" id="17ba725c-bcfb-444c-8725-fe9bc1a99c5b" chipset="acmgt2" name="DepthPipe23" />
+    <guid config_hash="6192457ac32474673c3f9d1bdef8a335" mdapi_config_hash="84c69d2e33ea9a3a848eb4c2bc5f2696" id="efdfcd4f-8bc6-4251-b956-dfd351f8632e" chipset="acmgt2" name="DepthPipe24" />
+    <guid config_hash="f2d49835c676f18c3eae177cef7f20e7" mdapi_config_hash="40dc0abe03ac63336a1702313d0264d5" id="bad6c158-57f6-471f-a9e3-cad9e779d211" chipset="acmgt2" name="DepthPipe25" />
+    <guid config_hash="f178fe3e8fdf5378ffc0e0eb323d2012" mdapi_config_hash="64828b4d6366b61cc69ef89a7403728c" id="4a7b11ce-2d9e-4905-99c4-ededa640b342" chipset="acmgt2" name="DepthPipe26" />
+    <guid config_hash="41fb8491249ade9c531a3a6a9141d52d" mdapi_config_hash="9a687c1ecbe2ffcb0c9ed3a0f7ecc1d5" id="8c0a8f9b-3e97-4b6d-adb1-fbecb395ec00" chipset="acmgt2" name="DepthPipe27" />
+    <guid config_hash="4b20efb90dbca51593595c57ba4657af" mdapi_config_hash="b3f10d8b0712550fbc905255d5b81812" id="b7471c18-89e6-4e6d-826c-5f0ca0791154" chipset="acmgt2" name="DepthPipe28" />
+    <guid config_hash="0a99a7d55f2537c9fae13da4cc2979cd" mdapi_config_hash="fc253333de6533f83091cfe99aed3c8b" id="36d7c5ca-28e3-41c8-8e2b-f67beba4b23f" chipset="acmgt2" name="DepthPipe29" />
+    <guid config_hash="9ce906de561108d7938a42a368d151bf" mdapi_config_hash="e20c870a0352427698d87db395eae958" id="1bfbb150-1614-49a3-973b-7972bf7c9a91" chipset="acmgt2" name="DepthPipe30" />
+    <guid config_hash="abc80824498b165289b9f75df4190d12" mdapi_config_hash="fc7d42f1bee45992170dde47aea80c4f" id="80d75f6a-6c5b-46c9-a3a7-1911e2cba86e" chipset="acmgt2" name="DepthPipe31" />
+    <guid config_hash="7f3a20d3730ad747b44abe1b82370868" mdapi_config_hash="dca227fe5b6366b467f4920ee7e5f467" id="3368bfa2-0680-4282-aaf1-9ec1a1713b82" chipset="acmgt2" name="DepthPipe32" />
+    <guid config_hash="4d2a8d4082de019fe7404a2d997abc8a" mdapi_config_hash="1f6a45303c8f6824c3fbb9253694410a" id="101b4d80-895b-4957-9f24-18456078793a" chipset="acmgt2" name="DepthPipe33" />
+    <guid config_hash="b8fa13fb0c0402674de46050acbaef28" mdapi_config_hash="f72d2ff77944bf53157694ba5b4250c3" id="342e501a-0038-412c-9e8a-a9ed02b7b9ef" chipset="acmgt2" name="DepthPipe34" />
+    <guid config_hash="340a1be450b022e9881f60dac6b0c978" mdapi_config_hash="a934832fc2e93ab17811c26553055224" id="5c4a1a1c-3df5-43af-adb0-9cd78dd944f8" chipset="acmgt2" name="DepthPipe35" />
+    <guid config_hash="87245aedf765423b6fa4e64e7a0f9ad8" mdapi_config_hash="6514a5e312de739a494c5da91d30e5f9" id="f19a51db-ff00-40c0-a13f-1c404e80652e" chipset="acmgt2" name="DepthPipe36" />
+    <guid config_hash="8eab7e7fb852091f7139d38ef586e58f" mdapi_config_hash="d509513363eca37f080340e56447d95f" id="6f269feb-2743-4953-a8b4-7e4b000901bc" chipset="acmgt2" name="DepthPipe37" />
+    <guid config_hash="e548befd8d7dba01b365c94f4211e0a2" mdapi_config_hash="217b05e3a3e0e65ff6b8f201abab4cb4" id="7b9d22cb-7c4e-4885-be22-833c310e7fd4" chipset="acmgt2" name="DepthPipe38" />
+    <guid config_hash="25bacb972ec8a72009256f468fdc7b34" mdapi_config_hash="5dc6b05212009053300d87b6832e8101" id="482c20b4-68c5-4656-8de2-039b2ca8a0f9" chipset="acmgt2" name="DepthPipe39" />
+    <guid config_hash="5f86d93ea1eacf0e38ad991671c6b74e" mdapi_config_hash="3b5f5269683026ceb942218699e81328" id="743ffcbc-c6d5-4b28-b58c-1d23d1ea8fff" chipset="acmgt2" name="DepthPipe40" />
+    <guid config_hash="df0dbc21210f17109d26fd50db9eb79c" mdapi_config_hash="b5477b7eb1cd880254a9ae59919dd592" id="f809a7a3-2248-480c-b851-1b23f3d6e7f2" chipset="acmgt2" name="DepthPipe41" />
+    <guid config_hash="e74afa468ab00e7e9cf00a3259828d27" mdapi_config_hash="9818b3a1236bc1335db8d88cba97d419" id="effaccd8-6f1c-4a50-b39b-3a0f75eebf66" chipset="acmgt2" name="DepthPipe42" />
+    <guid config_hash="03667604b77c542fcdc3faf3e8d1331c" mdapi_config_hash="d5c373e3fd890a3ed1aad01ee8e720c6" id="39b392ed-3513-4c3f-9b22-bde5a9ee725c" chipset="acmgt2" name="DepthPipe43" />
+    <guid config_hash="79543dfdc6cd0734aa3ef643f39ff640" mdapi_config_hash="40a2c3a10c7686dc1e24b890b89db75f" id="adb868c4-97f3-420f-b766-073244232afb" chipset="acmgt2" name="DepthPipe44" />
+    <guid config_hash="77aebe954076577ec527a2cb5b9c1548" mdapi_config_hash="8b6fe5a377b895a8a84c414d13827031" id="71825303-a777-4079-85e0-69ee3f3caad3" chipset="acmgt2" name="DepthPipe45" />
+    <guid config_hash="f97181f2ab64833fed8ac02f87bf37da" mdapi_config_hash="3426d6e7f950c26b860e00475e089cfa" id="2e086ff4-e74f-45bd-82d7-599a27a9aaba" chipset="acmgt2" name="DepthPipe46" />
+    <guid config_hash="7a5fb3635232890411b4d2e48f6f07d7" mdapi_config_hash="42e1115a80d8d18cf2b00c4f8a70630b" id="b0b33553-4e1c-445d-8e40-c03873ef1d5e" chipset="acmgt2" name="DepthPipe47" />
+    <guid config_hash="f18632de86831a51707f80db4669089b" mdapi_config_hash="bfdc8226cc0f4db7db9b5e26007a92de" id="154e627a-ce2c-4d36-a441-dae9e8317fba" chipset="acmgt2" name="DepthPipe48" />
+    <guid config_hash="fd8ba9b85ca32bf76da2d10b1196136e" mdapi_config_hash="32ad6cf6e7d651d616068d363ac6ab6a" id="8d79b860-44be-4e17-bd33-eb95a7d6ad47" chipset="acmgt2" name="DepthPipe49" />
+    <guid config_hash="f24f0a45547e017a9ccabd51aede0f85" mdapi_config_hash="d4143011c741df10763d16d978593f4e" id="980f1b68-a258-493e-aad2-8b40a0923a67" chipset="acmgt2" name="DepthPipe50" />
+    <guid config_hash="fa19704938ef68ede42f07d334d6a7d4" mdapi_config_hash="01d96cf51f7cb83278ed9923eb36387c" id="502ad763-3720-4e28-93c2-6d9e4383c8b2" chipset="acmgt2" name="FrontEnd1" />
+    <guid config_hash="a8e81543f074b5bdaf7bc2f08a207231" mdapi_config_hash="549d005137faa69f0f7594adbcd230c6" id="f655036b-8302-4327-880e-014cffa29448" chipset="acmgt2" name="Geometry1" />
+    <guid config_hash="caaf80ee9d79d42d93333c74c306af41" mdapi_config_hash="311d418a23fd608f708e3526cdb289a8" id="80abe21d-174e-4d5f-a64f-34eea53e8c59" chipset="acmgt2" name="Geometry2" />
+    <guid config_hash="14fec9d5b91e29482746c96a4643f787" mdapi_config_hash="4891bb7ced8889be3e852724bffc53b2" id="f736c728-c16c-4125-97c3-b7e2f7d25ecc" chipset="acmgt2" name="Geometry3" />
+    <guid config_hash="bdc1081e1bcbb97611db235573edda8f" mdapi_config_hash="17cbcd1b7b627b1b729b05de22bf8b92" id="81996036-5d85-4ca6-83f8-a5bce6428d80" chipset="acmgt2" name="Geometry4" />
+    <guid config_hash="70b2660e8ae7c2737b68b1a90a856a14" mdapi_config_hash="7faa85915ad0b0a4506996d907c2598a" id="09075af6-ccdd-49bf-8581-92a84840bbb5" chipset="acmgt2" name="Geometry5" />
+    <guid config_hash="fe4851067cdc7be9e15d17476f95d63c" mdapi_config_hash="9607649d7c9de41bce3415ae8229f2b8" id="09aaf18b-f85d-443d-9644-9cc847782212" chipset="acmgt2" name="L1Cache1" />
+    <guid config_hash="acfeb2b88f17cafd1cebafd04359ae80" mdapi_config_hash="2a6d3f53ab54ffc9da36a00b24e90649" id="66096c29-519c-4063-9d03-e04e50d8d478" chipset="acmgt2" name="L1Cache2" />
+    <guid config_hash="c6cf5f1d316375231590cdafdd67b4a8" mdapi_config_hash="550910ed5d80d1efbe588e1af453ddd5" id="2237bc33-3e20-446a-8d7d-7ac651314287" chipset="acmgt2" name="L1Cache3" />
+    <guid config_hash="d1742ae4fe4c17e6b3dc8a06edde7fd8" mdapi_config_hash="978b08da105152c3e5a56bdd0cc6ca83" id="c4e31e05-c514-4e2e-9686-f4225de24213" chipset="acmgt2" name="L1Cache4" />
+    <guid config_hash="c683ef61a39312508b75b6500b8f40b8" mdapi_config_hash="5b1d0638a03111dd1c9b2a4ae6e49e1f" id="1c608270-6be1-4381-bd2a-e7e5e6ec0c84" chipset="acmgt2" name="L1Cache5" />
+    <guid config_hash="c94f094d055d17af24eaa98bf50001ef" mdapi_config_hash="8eebdf1871229a9a1c201f0150205c6a" id="8ea12c1c-6dfc-4539-b7cc-4c0ed0a0e172" chipset="acmgt2" name="L1Cache6" />
+    <guid config_hash="71c2b8da77e3618e70fdb5b4064a0694" mdapi_config_hash="c0e1b28054cfa001b623213f99a254be" id="563cb980-9a7e-469f-8fa7-75fbbda1b6a7" chipset="acmgt2" name="L1Cache7" />
+    <guid config_hash="3e63f6e88ec9bc5aa368b1dea484fd10" mdapi_config_hash="1a487d0f70d1732ce5cb8b19a3d95fc7" id="203752ae-e3b3-4895-85cd-9cef09669196" chipset="acmgt2" name="L1Cache8" />
+    <guid config_hash="795aea06dbadd4aca69892c17d82dc34" mdapi_config_hash="993250d49b255b9d8f9b7187303924d8" id="94ae89ad-096f-42c3-a666-b3bb904605e9" chipset="acmgt2" name="L1Cache9" />
+    <guid config_hash="bbf6a4e4934530e4ecaa0fa42d4c9151" mdapi_config_hash="79c988006328f19c16759600a7434ca0" id="97f2d572-60c2-422d-b9eb-f0edb2f9e788" chipset="acmgt2" name="L1Cache10" />
+    <guid config_hash="58df2048ae73cf14cbf4c58ff54fe179" mdapi_config_hash="46123ec5991d0070d56076c4f1fa853f" id="df474009-ed7f-4a1b-84a5-473b35804e42" chipset="acmgt2" name="L1Cache11" />
+    <guid config_hash="639f9399b67db11f386fe9c971f2235e" mdapi_config_hash="d841417827b7d7d0d88ab7fccee20c40" id="7c3b945e-3b30-4ef2-8544-34b535ca90b8" chipset="acmgt2" name="L1Cache12" />
+    <guid config_hash="a98a24d2b243954eabbc4494ee2f56b7" mdapi_config_hash="10c0bacda46e73581dfd6d95488260fc" id="a55bc2da-2c6f-4774-a20e-bd79371902db" chipset="acmgt2" name="L1Cache13" />
+    <guid config_hash="1a137ad8d793ef57a323ee97e114c43c" mdapi_config_hash="c5c3319d817355595e9c803f2f8f2d43" id="0e4e660e-96bf-4b86-90cb-64ec0532fd03" chipset="acmgt2" name="L1Cache14" />
+    <guid config_hash="0a456cac28605d514770cb243ea65c82" mdapi_config_hash="e112557da38933723080c7919a4e5d9f" id="8bb39f7a-53b5-403d-94fb-f1f7350d2ce0" chipset="acmgt2" name="L1Cache15" />
+    <guid config_hash="1768abf0f90a2771f9eb31f09577d81f" mdapi_config_hash="e1670fbe08d7c1dc1322f782fce6a2cb" id="f4b433d4-2af0-45c2-b61c-7e9a4db553cc" chipset="acmgt2" name="L1Cache16" />
+    <guid config_hash="b85912569074b9d2382570624b460e8d" mdapi_config_hash="dfc8940c6edae43308fef4718ec90128" id="bde419e8-3eb1-4525-9317-f74900301c1d" chipset="acmgt2" name="L1Cache17" />
+    <guid config_hash="3f53b369178117cb1fbec82ac3f20173" mdapi_config_hash="94dd6ec540b62543b8d6027323748478" id="7a8bccbc-6900-470c-8204-2dc21423e247" chipset="acmgt2" name="L1Cache18" />
+    <guid config_hash="e55352d3cebcc965fb3e6fccfae3df0a" mdapi_config_hash="eb94f5512a82cc970d6880df4252f245" id="2d1b823a-ee3a-43b4-b46f-379ab7920aef" chipset="acmgt2" name="L1Cache19" />
+    <guid config_hash="a37f60e0468125c463ebdd8deec39ff7" mdapi_config_hash="1cf714fba87f1e2ad7390a1b5ea5b6f6" id="3b20c2df-ccd7-4c6c-a211-5724fa8bda6d" chipset="acmgt2" name="L1Cache20" />
+    <guid config_hash="d0f9ab033aa338ff889dd9a31fa149fe" mdapi_config_hash="b672ffc012ebaab2090b78c8cb488a59" id="186189aa-0aaf-4c63-9977-d5dfd5eb5084" chipset="acmgt2" name="L1Cache21" />
+    <guid config_hash="c92b384719ae18177ce6be1483167c58" mdapi_config_hash="fcb4cf869c074363c02be49fcbd656c3" id="13dee569-144e-4bb0-b2da-e902336c2f08" chipset="acmgt2" name="L1Cache22" />
+    <guid config_hash="f69b32007545e657c7fe9390954f332b" mdapi_config_hash="49812fa18ed7a2cfd9a327906f479d5a" id="4b450172-544b-4249-87a4-96acdde97d6c" chipset="acmgt2" name="L1Cache23" />
+    <guid config_hash="b8af125b11c8233da647dcbe39f7098a" mdapi_config_hash="79c7c2755e34f02a5ca3fc7663c3441c" id="2bf27543-d6b4-4cb7-b53a-3b83fe6c102e" chipset="acmgt2" name="L1Cache24" />
+    <guid config_hash="488f1b53f67e98a6307bdc61add39c13" mdapi_config_hash="a9a14c62dd7a04c501b24bc5eb2d2d3a" id="e1066219-5e33-4b74-b056-94b3a62a7900" chipset="acmgt2" name="L1Cache25" />
+    <guid config_hash="bfd3a44e5356b7f1486b966e5f2bdfed" mdapi_config_hash="d33fb669ab29e8bf3cb591d509b2c90d" id="30ee8347-968a-4ec0-985a-234c0d5ee72e" chipset="acmgt2" name="L1Cache26" />
+    <guid config_hash="68f17a9c7949a3432b26cf0b7d65a9b8" mdapi_config_hash="bb1929e15f2b070ab067b4bf9de42fae" id="d38715b6-5d8d-44ad-82b4-83d6a143d61c" chipset="acmgt2" name="L1Cache27" />
+    <guid config_hash="f6e5e2796653b17c68eb4f61d080e771" mdapi_config_hash="57e5f15fd39a2bba8b90b711cdb37302" id="1f851454-2f9c-44da-b403-82493b4e41ee" chipset="acmgt2" name="L1Cache28" />
+    <guid config_hash="61118c75e633fb8ff72fb2d4f037690d" mdapi_config_hash="4cf5f428b92298d5c9591fbeb70b131b" id="32f03e2e-890a-4db8-9d12-cd2a9b46456c" chipset="acmgt2" name="L1Cache29" />
+    <guid config_hash="fb5b527a4eabbfbb82565559037d5e6e" mdapi_config_hash="0564c8ff5bd29284196bab1746db55df" id="f124e69c-983e-4d57-bd6a-26af2dd386ba" chipset="acmgt2" name="L1Cache30" />
+    <guid config_hash="48af1360c433f467eda94f792b51a752" mdapi_config_hash="ec509eb1a5cada23f7b0bb729985746f" id="77bfa913-7775-4d45-8c3f-4510520c7b15" chipset="acmgt2" name="L1Cache31" />
+    <guid config_hash="76e2bb353c0f94d47715411510a0cc8a" mdapi_config_hash="7251d6b44e477f0bbb575f6714554c80" id="9ed928dc-d0e2-455c-a2ef-b5cac335bab9" chipset="acmgt2" name="L1Cache32" />
+    <guid config_hash="0020d37bc982539f70e86d74452b38d9" mdapi_config_hash="7538eb8a2dfbd7c81e01b8501119b8df" id="6ac07bf2-e77c-4a85-97d8-08d9f86b3f77" chipset="acmgt2" name="L1Cache33" />
+    <guid config_hash="c5b7316ccd7d201dd803c9932abb8838" mdapi_config_hash="e960a269ad30407bfb311b21685c20bf" id="d8fde355-eb9a-4490-b61f-31fb98ba4f70" chipset="acmgt2" name="L1Cache34" />
+    <guid config_hash="2f2096d3f4a76cfc74635b6e1fbebede" mdapi_config_hash="2b182b30d0c07ddad4d99b005fc4be9d" id="c045a7e6-dd83-419c-abff-643ccb4ff70f" chipset="acmgt2" name="L1Cache35" />
+    <guid config_hash="9386d7177cdbf0e0dbc6f2070bc47a0a" mdapi_config_hash="4e8898254f4d30feef238ff53b261b43" id="5c6b81b0-056f-451e-b3be-dea10b2c1ecb" chipset="acmgt2" name="L1Cache36" />
+    <guid config_hash="35d73c6939eeb18555ba52f7bc868e6d" mdapi_config_hash="dfce6aca65bf82ebb03baaa70401ba5e" id="2558f9cd-1565-498c-a539-430377a55a93" chipset="acmgt2" name="L1Cache37" />
+    <guid config_hash="df09ec2419112ab189bc1f92ea0d1f64" mdapi_config_hash="b9d9ad620843a6f5fa9379e1b0f5e132" id="a4a5c1e1-beeb-42ec-ba01-6af0c5eeee90" chipset="acmgt2" name="L1Cache38" />
+    <guid config_hash="d8f695987676107c80ddd6cbb35165d3" mdapi_config_hash="045673f2567bfdfd6745f0851f3f5937" id="7d80234b-4dae-4def-aa0b-2b1fe3ff0a13" chipset="acmgt2" name="L1Cache39" />
+    <guid config_hash="2130a3cdafa843307817a70741960416" mdapi_config_hash="68b344b2ae761db36ac44c6d0cda6ad3" id="ba5d47a0-a35b-4ee2-9cdd-8272cfc149d9" chipset="acmgt2" name="L1Cache40" />
+    <guid config_hash="847a9bc81407b3ec4d1636ecd9f8eafc" mdapi_config_hash="dbc842631726654433d4afb7315a38e4" id="692e3adb-d471-44a3-a3ad-0b0fedf05630" chipset="acmgt2" name="L1Cache41" />
+    <guid config_hash="153b0f6ce118bfa93d4cff52625c0382" mdapi_config_hash="bbf9c5932b8cf3431cbf9dd4144db316" id="c1c40fc7-8db1-401b-8dc9-42c3b51361a4" chipset="acmgt2" name="L1Cache42" />
+    <guid config_hash="d91ac6a9f7c6e70838f34d496bb4768e" mdapi_config_hash="a78927a5016d55d1a868daef955e3264" id="e75bf1f9-071f-4c21-8f55-e9ee154638ba" chipset="acmgt2" name="L1Cache43" />
+    <guid config_hash="cb3f35149944eb44d7d17643e7a7ea82" mdapi_config_hash="890bec54543f27a5ce11c9203bcbbe14" id="975595a3-2d15-44aa-b32f-0204e42485f4" chipset="acmgt2" name="L1Cache44" />
+    <guid config_hash="dca9b4a5cda927fc59716473cf4bb7e3" mdapi_config_hash="1da968ef1b5512fe4cffa6f41932f9da" id="9c1f54c9-3b59-479a-97e9-179a40b4b949" chipset="acmgt2" name="L1Cache45" />
+    <guid config_hash="0b3238d611fcca2958208415a75aeeb9" mdapi_config_hash="dab19941652900889644273c6a0aa9f4" id="eebc8739-0987-4f55-b70f-6cdee1a4ec02" chipset="acmgt2" name="L1Cache46" />
+    <guid config_hash="62bef2563821e7a7aa50e5e9f595fb01" mdapi_config_hash="6eb01de50863dbf54b358ee092814d0a" id="e01f5549-332a-4e23-b915-828860d438cc" chipset="acmgt2" name="L1Cache47" />
+    <guid config_hash="1c82223af52e46015e354d1084c1cb03" mdapi_config_hash="3c63143457595a69a6656c7fbde57933" id="389c0253-dbfb-47b3-878e-3eb1b9b6e74f" chipset="acmgt2" name="L1Cache48" />
+    <guid config_hash="91fa4b59d986dc770d42c8416bd20e3c" mdapi_config_hash="121ec0f8c8cb75e99a4bb97283f412b5" id="23488fdc-0420-4cee-b15a-000f3fe0c61c" chipset="acmgt2" name="L1Cache49" />
+    <guid config_hash="029b094aa82e81cc1c62122f2680ed2f" mdapi_config_hash="53edb8304c844dbf78c4b8458a588798" id="229bdc13-d602-4e78-a325-c082919dc47a" chipset="acmgt2" name="L1Cache50" />
+    <guid config_hash="26b8121d007420c54284ec550bfeb08d" mdapi_config_hash="a09a276045f57eabd81d952384e27e2e" id="35c25f46-14d7-46fa-927f-35507e61a2fc" chipset="acmgt2" name="L1Cache51" />
+    <guid config_hash="e00af287481fd08db42b91a45ff6a007" mdapi_config_hash="c83c86f62943be61d538b280e235f486" id="94284c36-9664-4d60-b4d9-15179f266d23" chipset="acmgt2" name="L1Cache52" />
+    <guid config_hash="8411fef30a49a5a95b21b5df3b1ce209" mdapi_config_hash="74b95dfbabdb7721ef974788bcf17f6d" id="a2b93539-7c7e-4ea4-85df-2fa675381a1b" chipset="acmgt2" name="L1Cache53" />
+    <guid config_hash="59928cc6564fe394d40be7d57a4eb993" mdapi_config_hash="bacc1d883e8f0ab91bd4407ee5c43f68" id="8efc5126-1bb6-47cd-bd3c-b1bfa6a99dc1" chipset="acmgt2" name="L1Cache54" />
+    <guid config_hash="46c9496178dff450d561c6db6c4baf52" mdapi_config_hash="54da21d97714b28294cc202ba76ccad5" id="4a628907-5db2-437c-b04e-8c14dede3794" chipset="acmgt2" name="L1Cache55" />
+    <guid config_hash="2f44de5ec86d8dffe9679559e34c7026" mdapi_config_hash="de28b7a3822b970a6e3d00c1dde5a59f" id="e017d352-78fe-4f3e-bda9-814fb14f495e" chipset="acmgt2" name="L1Cache56" />
+    <guid config_hash="87b7d7b05ed4f0d6e3bc2c57afc42895" mdapi_config_hash="6544636d5b2b8eaa4a008d6e804b9f54" id="c89b207d-e5c1-480a-8b15-5403d0e45fb9" chipset="acmgt2" name="L1Cache57" />
+    <guid config_hash="7c33ddcd78b5fe30c636e2057c4f22bd" mdapi_config_hash="ae12fec81fa5b6734d7e824fa0a112f9" id="dd46fc9a-6a2c-44c7-94f3-069b58c95aca" chipset="acmgt2" name="L1Cache58" />
+    <guid config_hash="701b67868821b49843b58581cb89a94e" mdapi_config_hash="62114d1967b8e1f62c7abf30a7a6b62f" id="4669435c-6f14-4557-b983-3f5186807fd6" chipset="acmgt2" name="L1Cache59" />
+    <guid config_hash="2efddfb4135bbfe176eb69b8ed603603" mdapi_config_hash="266dd9f1d87b55c124ec435ad9a529b6" id="6f37e5b7-c8fd-4f28-a95d-919848fe4a95" chipset="acmgt2" name="L1Cache60" />
+    <guid config_hash="c0db83d4e9505b057b511d42d280fffe" mdapi_config_hash="5666fadd7222d3f56debaac7f205ffb3" id="0cd1c331-f998-467e-ae36-ea334c3ba2a5" chipset="acmgt2" name="L1Cache61" />
+    <guid config_hash="677ff56067b9395b61ca2be017972b9f" mdapi_config_hash="53b10ed24d6a4a4b505cdd0b0d411220" id="09153d17-1912-4ce4-b41a-709df4aba848" chipset="acmgt2" name="L1Cache62" />
+    <guid config_hash="678fb273de91e637247476e8d621e4de" mdapi_config_hash="6696f57d26bd21be15c9bb8c130471d7" id="ea0e19bb-8a13-4e51-92ca-1cb3db78fb10" chipset="acmgt2" name="L1Cache63" />
+    <guid config_hash="84e0a02a0de1d6fb7e321241bb4aac8e" mdapi_config_hash="c9544196396053556c9149b6aed462e8" id="d7eb30f5-28aa-455b-b8a5-221db2ccfe62" chipset="acmgt2" name="L1Cache64" />
+    <guid config_hash="727bcd9ca28423c029c3c05c8109283a" mdapi_config_hash="67c1e2133493265c8b58184aac015670" id="ae51ef65-a808-4248-8c26-8fcda92bb018" chipset="acmgt2" name="L1Cache65" />
+    <guid config_hash="845f5207e43dc8815baa5f3a74fca796" mdapi_config_hash="f6c3a7b0f50f54c842b91d2a66e713fa" id="e6e2b49c-615f-4af1-a7b1-349f6b906c90" chipset="acmgt2" name="L1Cache66" />
+    <guid config_hash="8f5c611e77a1bb7319e5399c0ab66a46" mdapi_config_hash="59cc597bf5deaad25ebdb4fb499997d6" id="691098de-d8d8-40f3-906f-b20df78f5b52" chipset="acmgt2" name="L1Cache67" />
+    <guid config_hash="275e245c61db93f90aa403fbd8a95aab" mdapi_config_hash="9549f9e2b103d42b39e6f570ecee12c9" id="bdcc17c1-0c82-4277-8c4a-6c878af1f374" chipset="acmgt2" name="L1Cache68" />
+    <guid config_hash="df610b088baf4c47c904499977703517" mdapi_config_hash="423d121324d7aa7aacc7db1aac4d9454" id="e2417f86-ea22-4512-b4b6-1918c6721e47" chipset="acmgt2" name="L1Cache69" />
+    <guid config_hash="74cf7118d5945ac9a4be45874f8df3ed" mdapi_config_hash="e45c1b3f36bfe194615db26c3e9339f0" id="0b7a01c5-5622-43cd-90c1-963d8ebc4d30" chipset="acmgt2" name="L1Cache70" />
+    <guid config_hash="a1fc09261cc506881677cf814145de9a" mdapi_config_hash="53d7686a779ab852ab03887600794bfb" id="e0da306c-65eb-4032-b327-f95f4eba3020" chipset="acmgt2" name="L1Cache71" />
+    <guid config_hash="684a603ac2f686299fc617da0c374db7" mdapi_config_hash="6fd7a099fa557067e51b211f2b066fcc" id="10f602b1-6401-49df-b617-8fb07c188fa2" chipset="acmgt2" name="L1Cache72" />
+    <guid config_hash="5fb33145d9a5a6097fcaa7067f9e62cb" mdapi_config_hash="ad0a341e9a9ce31f4e5b18355fc2993d" id="8bcaab96-b9ff-4445-9b12-77c6645d4889" chipset="acmgt2" name="L1Cache73" />
+    <guid config_hash="d20d181abfc41b773d31708a9e23b0ff" mdapi_config_hash="d60a1578c32b1e420db8d18df76af6fe" id="fb2f0a27-1305-4d18-9940-d644f2fd2607" chipset="acmgt2" name="L1Cache74" />
+    <guid config_hash="a18e3710006b610bcdb1d89956d49a6c" mdapi_config_hash="8eb47368d0e2b22e6c1bfb7ef23eeaf5" id="e79fe17b-cecf-4808-98f8-dbf002286e99" chipset="acmgt2" name="L1Cache75" />
+    <guid config_hash="17c1e751af08c320054661dd528e862c" mdapi_config_hash="f3f08d8392b8a26f9be765a568632eba" id="b25a8d2b-6410-4f91-af8d-364c2f31263a" chipset="acmgt2" name="L1Cache76" />
+    <guid config_hash="9a2c3fc22929ff758195d630ea03195c" mdapi_config_hash="ce8bb7fb75913b87aaae9d81d2a6417b" id="45ec41ff-4a28-4282-973b-8fcbe65cf00d" chipset="acmgt2" name="L1Cache77" />
+    <guid config_hash="7d4b76ab04732eb30944cc95748ba5fd" mdapi_config_hash="6ac1f565436ec0b6f9fdee6698cf1c83" id="f2ea74eb-3520-4e62-a9e9-6907afd1a5e6" chipset="acmgt2" name="L1Cache78" />
+    <guid config_hash="2981fcec4da9ff6d6aa393b18f67d979" mdapi_config_hash="5df1629173d993ec2b40de211cfa3d96" id="90e0b182-84d1-4bc7-aa0b-448bb0a7a850" chipset="acmgt2" name="L1Cache79" />
+    <guid config_hash="91a4c5fee717618784c70aefb1f1d183" mdapi_config_hash="c5a3f269ce365da1559b894a6b73ba62" id="8f0b735d-f269-4545-8a11-a31b3ebed779" chipset="acmgt2" name="L1Cache80" />
+    <guid config_hash="6ee857ece45683590835ec9e515b3d33" mdapi_config_hash="755992f8ea81462b24474171aa7e1c6b" id="6e136a5b-e7fa-4349-be46-e83455caec62" chipset="acmgt2" name="L1Cache81" />
+    <guid config_hash="40d3b564502b10ce26ea5911438d3b2c" mdapi_config_hash="efc304924f3080fe49b3de750b6a8741" id="c59e0c0d-d038-4b0a-b643-bccfd3963f4b" chipset="acmgt2" name="L1Cache82" />
+    <guid config_hash="fdadfe050de2b8312d870905637b32e5" mdapi_config_hash="b4e0d5c36c5d8b4d2e8249a3fa77e142" id="5180e659-772f-4531-a2cb-f38a86841e22" chipset="acmgt2" name="L1Cache83" />
+    <guid config_hash="a20a54bf528cff3ab37f46a6a2cddad0" mdapi_config_hash="06c559de084046086a90674f2fde8a28" id="53e81609-e3d2-4679-b348-6f6473dd0fe2" chipset="acmgt2" name="L1Cache84" />
+    <guid config_hash="cf9050df5bad2b5138bf28af3fa20f97" mdapi_config_hash="8885d31781743dfdd6a76b3e24288828" id="16e8cd96-5a5d-4528-999b-90629facef72" chipset="acmgt2" name="L1Cache85" />
+    <guid config_hash="abbfc87d8a4a2f14ac0c21a55f929a74" mdapi_config_hash="c202c4281e82e5d0af7c061e13d94889" id="d4e55aa0-754b-4fab-9134-ba7168529642" chipset="acmgt2" name="L1Cache86" />
+    <guid config_hash="534ce464f938eff644cae86bd29414e7" mdapi_config_hash="86ce24a785763e61f70fa6286cb761ef" id="e80e1404-d74b-4e84-b8b2-317fe06a2900" chipset="acmgt2" name="L1Cache87" />
+    <guid config_hash="b8fbaf10619a11657d89fb0660e874dc" mdapi_config_hash="e964daaeaa36a79868a841f831eb28fd" id="b096a99f-7544-4891-9336-6a1a8f341b31" chipset="acmgt2" name="L1Cache88" />
+    <guid config_hash="db4ea4480037d802e4a1c218095e3a42" mdapi_config_hash="00e57eb66b544fd173a830dfc9e052c0" id="8164944d-16b7-4415-9c9d-c9155b54d313" chipset="acmgt2" name="L1Cache89" />
+    <guid config_hash="797087b766befa43a26c3eeb86872eb8" mdapi_config_hash="a7c29ac3dac5d23cc244d1a94a10ed24" id="f04cb35e-ad18-487c-a3a7-4c3df903df4e" chipset="acmgt2" name="L1Cache90" />
+    <guid config_hash="914dcca88b055f6d8f94d29a83759474" mdapi_config_hash="1e517763a18a66593772901b849cd1ae" id="7476a997-fd23-4e09-9e41-be5ad6998370" chipset="acmgt2" name="L1Cache91" />
+    <guid config_hash="7f099abf3bf316926926bb21d507ca02" mdapi_config_hash="9ee5578edf368bee99cee9ceb0fc4272" id="c39f76fb-108f-4470-adb7-92f0830b4b85" chipset="acmgt2" name="L1Cache92" />
+    <guid config_hash="3884dd19d59902f0047d92986058577d" mdapi_config_hash="434ebd8654b27425e267d0e1929e4a79" id="3a32053e-1919-4630-a163-dcacf9c6d003" chipset="acmgt2" name="L1Cache93" />
+    <guid config_hash="4285990bad8309b3853dd54d8cf6cfd3" mdapi_config_hash="24c7621d43db8b1f98e7fc7475e402b1" id="340e5f66-a0d2-4365-9a67-76f5fea0b623" chipset="acmgt2" name="L1Cache94" />
+    <guid config_hash="962e318d5b1e1990ae13d8d8269804e8" mdapi_config_hash="a07a3712cc1c23541e42d6d26d24803f" id="14d53071-a58c-4e71-b4e4-160815efdc7c" chipset="acmgt2" name="L1Cache95" />
+    <guid config_hash="49b91ad801e293491268b401665a4e9b" mdapi_config_hash="0aa827f2cec224521b4ce3a6de376baa" id="b390699e-0883-423a-a7c3-064e0520ebed" chipset="acmgt2" name="L1Cache96" />
+    <guid config_hash="0a37cba7ee647443dff6df91ab3bc011" mdapi_config_hash="a552e499420147d1e39317869920a1b1" id="74f12f6d-05be-4a80-9870-2a2c487f7bd9" chipset="acmgt2" name="L1Cache97" />
+    <guid config_hash="f0c36ad4d9755cd193905bf8b40dddff" mdapi_config_hash="4cd0d0a1e8d804fa5312baceaa8e9970" id="f587f7f5-b5fd-4183-a59c-3ca769fe8148" chipset="acmgt2" name="L1Cache98" />
+    <guid config_hash="eb037be89e9e529ac0bdc1f591173dda" mdapi_config_hash="4c7879deeebc493fd0c0b4c3a2dae432" id="08848093-c9f7-4554-a447-278c4da9f9ea" chipset="acmgt2" name="L1Cache99" />
+    <guid config_hash="51e0f82f6d3ed8d16543c3428b0a9f7b" mdapi_config_hash="b46cc56289fd18b6834953d7b44289dd" id="8fd337d7-938c-4a64-b5b9-37df6074e4c0" chipset="acmgt2" name="L1Cache100" />
+    <guid config_hash="28333442cbed046f028da7f59b0c7906" mdapi_config_hash="a7395385144981a6f9fd951843eddc20" id="e47ea265-e42a-4a04-81b2-30814815b3aa" chipset="acmgt2" name="L1Cache101" />
+    <guid config_hash="2acce7ca3d83b96640d8f5c2dcfb568b" mdapi_config_hash="640ad0f09bd604e0fc4a1a0553e012aa" id="ff5717d6-fae7-4288-885c-3850588e4b2e" chipset="acmgt2" name="L1Cache102" />
+    <guid config_hash="8604db9cd9bf81b735d5aa98ae1b1769" mdapi_config_hash="caeadbc0d55e9908eb1350d6b7c05a94" id="9fad96f4-5977-4cf8-a2e4-bd72b277075f" chipset="acmgt2" name="L1Cache103" />
+    <guid config_hash="3f88a5acc8d8378defb402342c627716" mdapi_config_hash="48b1c7718ec5794ad4fef55d1b67dde9" id="997c44e5-85b3-47f7-9845-6c42c554caae" chipset="acmgt2" name="L1Cache104" />
+    <guid config_hash="fe80dafe25095954ce5a066bfd370b58" mdapi_config_hash="d9daf5c95f8517a3997e4d1aa0ed61f4" id="7c51d383-b682-4f1d-831d-b689c8be3fdd" chipset="acmgt2" name="L1Cache105" />
+    <guid config_hash="70c62045d4589c09fd3ea26eb80b43f3" mdapi_config_hash="ed09ee8974cb42832706489c93d86cfc" id="04638c41-779d-4d79-a3bc-69b642342b99" chipset="acmgt2" name="L1Cache106" />
+    <guid config_hash="7b4f3476b4ae5bc43a65e6edd581d88f" mdapi_config_hash="d183ba198c132ebda9caa011391dbdec" id="86bb1e10-f542-4f9c-b0f3-8a1fc1caf5aa" chipset="acmgt2" name="L1Cache107" />
+    <guid config_hash="8790e0514201040e098b884ada87d1a7" mdapi_config_hash="80df4d22b8fc27143d5838073b55ac7e" id="dab065f1-c8a2-4e03-823e-ad9591fdcf29" chipset="acmgt2" name="L1Cache108" />
+    <guid config_hash="37ba993a6db36ab92beeffd40c32e2d9" mdapi_config_hash="91b039638bcb7754474f24f1e746d160" id="cefea11c-d38d-4ddb-8ce1-f24d75799a7e" chipset="acmgt2" name="L1Cache109" />
+    <guid config_hash="2a17094d9adf3d6a7df1c9cc17299ec7" mdapi_config_hash="66b6fdc9420217dee14e63e4dd97778d" id="1178f323-ea3e-41c3-905c-2a8442f3b4f6" chipset="acmgt2" name="L1Cache110" />
+    <guid config_hash="25348baf76fb0effdd58bffd72dc8c90" mdapi_config_hash="6affe0fa735ab0a283d3206381f69273" id="26bca320-d4e2-460a-9896-a5fb2a279ccf" chipset="acmgt2" name="L1Cache111" />
+    <guid config_hash="55e9d5104bea00d9e2a70c9ce4ddafdf" mdapi_config_hash="a2333db29be1f4d0734993a285fa892a" id="3f8fbb78-69b9-4e93-afcb-2a0f380c2013" chipset="acmgt2" name="L1Cache112" />
+    <guid config_hash="a29b25b7b74c4b3733d424b168ed7541" mdapi_config_hash="d992d283a1dde3292e0b6e301613391c" id="da9b2768-977e-4de8-bbd1-036260d79f93" chipset="acmgt2" name="L1Cache113" />
+    <guid config_hash="5afa32f3dd13d96199ee49747cd6509d" mdapi_config_hash="8cb2a8ff8a6bd993abe653d1e2bbf5ba" id="0eb1375c-25b4-47ff-b124-ba4eba95871a" chipset="acmgt2" name="L1Cache114" />
+    <guid config_hash="8527812c9a98f3a9c3cdb6997992261b" mdapi_config_hash="2fc1b86355a89c2c836356afc5bbebba" id="58be8181-92a3-4cec-ad46-30ea575830ad" chipset="acmgt2" name="L1Cache115" />
+    <guid config_hash="14ab6d8aeba4547d1e41b3118c8f2a1e" mdapi_config_hash="4798dd975dfd3537e0e4032d8a1e384e" id="1a3918a7-1fc2-430f-82f2-9114e69586fb" chipset="acmgt2" name="L1Cache116" />
+    <guid config_hash="41d119a28856e2d26af9e2f04724d9f8" mdapi_config_hash="7a59766a500631b8e7b117b03d916f32" id="5206a8c9-3c75-485b-8e78-e3057cda1bb2" chipset="acmgt2" name="L1Cache117" />
+    <guid config_hash="a47cd92bed5a81e48a6e75eb703efeb5" mdapi_config_hash="4ced08f93f3e9627c26d24b91290fa76" id="fe39d1bc-b405-4a4d-99a5-3079c0cb6a71" chipset="acmgt2" name="L1Cache118" />
+    <guid config_hash="686e92496f0003be177f8c492196ba03" mdapi_config_hash="b8ff84f9d755336f2856a3cf662a4cc9" id="7580647f-8c47-4796-a7f6-8f6011aaabe8" chipset="acmgt2" name="L1Cache119" />
+    <guid config_hash="7d69996da4c12911366c330792eb3de0" mdapi_config_hash="7c74d31580ce409cab34a8d98500cc3b" id="b7ae9004-efa6-4851-951c-e901b3228664" chipset="acmgt2" name="L1Cache120" />
+    <guid config_hash="51b675ac90f1f78adf7fad67bf2b1b59" mdapi_config_hash="7ec54297d35d02a7a288b4bbdb872fc9" id="77902327-49d2-4174-ba8c-94a796e54c72" chipset="acmgt2" name="L1Cache121" />
+    <guid config_hash="0ab197ba133ffcd74bf25056ac0feb4e" mdapi_config_hash="f5aa2e5ce54789d484d617c1cc0298d7" id="f4c597eb-8ac7-4138-8775-759d14e2cd40" chipset="acmgt2" name="L1Cache122" />
+    <guid config_hash="58bbdd90e4731ff8e49ee481cadb6b5b" mdapi_config_hash="4eb5a094e41c568f2af91abf603f9f48" id="e9ee5eb7-90aa-4798-a586-79764c58a6ac" chipset="acmgt2" name="L1Cache123" />
+    <guid config_hash="46ba6ab53b1962e31c1cd6ee3bc92d10" mdapi_config_hash="b431fa2a9ab1dace2f79c9907d65bbce" id="a5438972-875a-4301-9b15-f4d16d9d106e" chipset="acmgt2" name="L1Cache124" />
+    <guid config_hash="931a5ed1d1710856a7bcb3ff55b74c97" mdapi_config_hash="5409b01c30782cd869a44ed640c5e6ed" id="9d7b58e1-a5fa-47fb-a446-1e03556fa59a" chipset="acmgt2" name="L1Cache125" />
+    <guid config_hash="75d0cf0c1f22b81da4b58d37fff1b1d7" mdapi_config_hash="9ae3140a6b675efe8d70d64a1bc270bd" id="7ce674af-6177-4d79-8bd4-dff2ef2fab24" chipset="acmgt2" name="L1Cache126" />
+    <guid config_hash="78083dc21c0e267698c47eed796c09ab" mdapi_config_hash="45509d4994701bbe7c8ab5a7b4c3eb46" id="6dedd9cf-b928-4862-80b5-32a0a17cc238" chipset="acmgt2" name="L1Cache127" />
+    <guid config_hash="d83afd83471baa34ab13dee8b4bef9ad" mdapi_config_hash="24fd0ac05d69bd65448c2574ecffa644" id="f9352d6f-8b0f-4df0-9e79-1bd75ed6c2b3" chipset="acmgt2" name="L1Cache128" />
+    <guid config_hash="b7a6103236bb427f6a3dbe52dad2f1b1" mdapi_config_hash="c9ce6bee9391a8ae69a1bd2bdd15c1e6" id="6c5a3c61-b4cb-48d7-970f-13740c6fd02e" chipset="acmgt2" name="L1Cache129" />
+    <guid config_hash="92acf5ab2a6a0d9b1a756bc9581f827a" mdapi_config_hash="e79945e94e38885d8e8273ee39748a5e" id="a0ee28df-2030-4045-b858-d7153e151801" chipset="acmgt2" name="L1Cache130" />
+    <guid config_hash="91354cd9e43fdc6c933de1990375eaca" mdapi_config_hash="43e525d7ef49946527835f307296ab93" id="6a5e1ad7-35fe-4877-a057-c029fdcbd1eb" chipset="acmgt2" name="L1Cache131" />
+    <guid config_hash="49ba7229182dde1ae426e05d696f6cde" mdapi_config_hash="c71d3258523b72855a96c18283cc605f" id="8c4700c6-ea20-4b8e-a74a-f42f46f9bac4" chipset="acmgt2" name="L1Cache132" />
+    <guid config_hash="140a51236ec9f0557ab2e3b92dc557d0" mdapi_config_hash="e2f89971ac3c93b4b0cc633805fe9a95" id="e1fd9e53-181f-4a61-95a1-3612f36fdeef" chipset="acmgt2" name="L1Cache133" />
+    <guid config_hash="1176049beb74df7a97a4ef44f454cc7f" mdapi_config_hash="873fd669743560c313ccefe6b8411547" id="0f1d1caf-29f5-4ae3-8b3b-8a645752df97" chipset="acmgt2" name="L1Cache134" />
+    <guid config_hash="58752d90be13115d1158ad89ee7c07bc" mdapi_config_hash="9ac58bc8c7cdbb2fbceab9de24f94683" id="6eed11fb-4013-479b-94d3-9c4e084e82f1" chipset="acmgt2" name="L1Cache135" />
+    <guid config_hash="fa83f7d3a8598f312acc3bd414f32bda" mdapi_config_hash="aef223ed6793122ac9a62fdd7cad39a2" id="d08bf17e-d459-43d6-83fe-ba8ee4829cdc" chipset="acmgt2" name="L1Cache136" />
+    <guid config_hash="a9e5742b4cf8d28f16c77d0dee6bf3b3" mdapi_config_hash="26571608a578e0933afd032d29aa943f" id="b3d01145-903d-49f7-9ed7-45ed893af630" chipset="acmgt2" name="L1Cache137" />
+    <guid config_hash="52d3b142afb13148a2f55444fa4cd158" mdapi_config_hash="efba358ac82af1a31334d3042487ac25" id="5abc1aeb-9795-4d41-8872-7d9c6bb83f46" chipset="acmgt2" name="L1Cache138" />
+    <guid config_hash="2721c54c3fed4141165260dede4f409f" mdapi_config_hash="64a21f260f814bd00193d176d7414610" id="231f49f8-1312-4cf8-86a5-ecdeb9070b44" chipset="acmgt2" name="L1Cache139" />
+    <guid config_hash="8954c3dc96f9021a5cf30dbe6dadd8ca" mdapi_config_hash="19a9a2595b83c87cfe79c665d3aba3a1" id="231e99e6-e1ad-47b3-ba45-2ac2846202b6" chipset="acmgt2" name="L1Cache140" />
+    <guid config_hash="a9774b0aca0f0f389c50f6ffe7fe1b38" mdapi_config_hash="4795997a6a8153fc52073dbe5d17dfd1" id="34ccdeff-29d0-4a12-8d2a-45d6ac39a2bf" chipset="acmgt2" name="L1Cache141" />
+    <guid config_hash="f5ab7492805e54ba8e381e3322622fb8" mdapi_config_hash="c335d1477525cd331aa07564c9f25fd9" id="2e9e5b1f-3974-405c-a8a1-aeed17baca42" chipset="acmgt2" name="L1Cache142" />
+    <guid config_hash="d250de53d401332479fc38b744c8c20e" mdapi_config_hash="6f4391cee2ef1d3d89b29eb55a8c533e" id="7d8da90c-fd7c-482c-afed-007f8323285c" chipset="acmgt2" name="L1Cache143" />
+    <guid config_hash="d8fb576c9f2e714330b76ad227889fca" mdapi_config_hash="6678fb172809fd5c811920a998aa9bb0" id="ab19e5f0-333d-4787-a32d-83f2396b1dd9" chipset="acmgt2" name="L1Cache144" />
+    <guid config_hash="2817d88ac4710354c4d4cf80bf1c1be3" mdapi_config_hash="0682946b69c7ed4a68e649fa3b7f3bfc" id="49fb217b-1f94-480f-9f7f-80350a8b3f05" chipset="acmgt2" name="L1Cache145" />
+    <guid config_hash="288d53f2be7cd77f5d32612837feb2c3" mdapi_config_hash="ae6a94ae234522fae1e6a6333c25317a" id="448d0663-b147-4471-8bd3-41a75af71caa" chipset="acmgt2" name="L1Cache146" />
+    <guid config_hash="a3243aa75839f6c52b6d1824c2b49dc5" mdapi_config_hash="2ce812c9b51ecf5cdda5ef565122b2bd" id="b1dda4b7-b8aa-4db5-8e88-d09b47f092c0" chipset="acmgt2" name="L1Cache147" />
+    <guid config_hash="0a237288e63edf2bdc55e8d1bb258507" mdapi_config_hash="3614588c44e2ce6b5d98c8fed7f39bab" id="c2eb3ac8-1dd9-4a95-9723-f4bb3e1f9040" chipset="acmgt2" name="L1Cache148" />
+    <guid config_hash="0859c09d6030cc6c86aade9b6d0c1886" mdapi_config_hash="0f37a4da7a292126c18a43a9b16055bd" id="1fc4fe4d-473a-42c1-a9d4-c68a23c1bc02" chipset="acmgt2" name="L1Cache149" />
+    <guid config_hash="7dc3d9fe2d244fa34286cdf3ab270631" mdapi_config_hash="c0e284c5f8ac09963108e0a4ca49e4c7" id="cb3742b7-e01b-4759-a5cf-a473ffdc1bae" chipset="acmgt2" name="L1Cache150" />
+    <guid config_hash="2d14c21cce1c64d5787dd8c812c49cb4" mdapi_config_hash="c88b534483c53433d11a06e1396d0c16" id="e116bb6e-4a74-4d70-91ef-30162e83fa72" chipset="acmgt2" name="L1Cache151" />
+    <guid config_hash="77917c2377a2e274b57bfd01cc332056" mdapi_config_hash="449d3127227f29c5ca470a8f1066d141" id="d2731321-319c-4e1e-8cc2-70832ed45e85" chipset="acmgt2" name="L1Cache152" />
+    <guid config_hash="a98a24d2b243954eabbc4494ee2f56b7" mdapi_config_hash="10c0bacda46e73581dfd6d95488260fc" id="9b3e9938-36a7-45fa-a855-a1664cca7e7b" chipset="acmgt2" name="L1Cache153" />
+    <guid config_hash="1a137ad8d793ef57a323ee97e114c43c" mdapi_config_hash="c5c3319d817355595e9c803f2f8f2d43" id="6588bbbc-22b5-4387-8263-2de455505fe5" chipset="acmgt2" name="L1Cache154" />
+    <guid config_hash="0a456cac28605d514770cb243ea65c82" mdapi_config_hash="e112557da38933723080c7919a4e5d9f" id="916d2db4-8950-4577-b17a-91bae4439648" chipset="acmgt2" name="L1Cache155" />
+    <guid config_hash="1768abf0f90a2771f9eb31f09577d81f" mdapi_config_hash="e1670fbe08d7c1dc1322f782fce6a2cb" id="60481905-7439-44f1-81b6-ef356e002f74" chipset="acmgt2" name="L1Cache156" />
+    <guid config_hash="4ee37d5456fff9ced1ea71f4f780b847" mdapi_config_hash="dd537cbe408148b58a74888c1cedbc05" id="e735a53a-442a-43e6-b5be-d1c89c017bf2" chipset="acmgt2" name="L3Cache1" />
+    <guid config_hash="8954ca43b54846b7b71e655e150d1121" mdapi_config_hash="6b1945962232d82308543fece5e25699" id="fd307172-3c1e-432f-8347-014d0a93e2be" chipset="acmgt2" name="L3Cache2" />
+    <guid config_hash="2a126cf863f76921197b695b9d64d2e9" mdapi_config_hash="887ea10214f9ae45c5546b7e99e4d5bb" id="44447e1a-90df-452e-b701-e38c034a4eca" chipset="acmgt2" name="L3Cache3" />
+    <guid config_hash="1c20b3017de407713e575e4aec0e5c15" mdapi_config_hash="4458395ea90476b36bab4fde83631b0e" id="e37c49ce-822e-43c5-9875-6945c962305e" chipset="acmgt2" name="L3Cache4" />
+    <guid config_hash="4485b624d91f0a83ca07ef76007b04a1" mdapi_config_hash="72d9d7652bb605e24c59e4619cfbebe3" id="45bb2f55-4b48-4d0d-882a-abfbac133ca4" chipset="acmgt2" name="L3Cache5" />
+    <guid config_hash="be9e812afefa9a29a6e092b90e1c4463" mdapi_config_hash="5b0a1aaf6660656980e207ff3d5745f5" id="215b0c4c-5977-4f01-a4de-3c8f654e3573" chipset="acmgt2" name="L3Cache6" />
+    <guid config_hash="8a736ebc4a54655bba534934a53b02d0" mdapi_config_hash="a966aff72aa84d7b798426b183df8fb1" id="47f3839a-9fcb-4bc5-85ed-7096d712cda6" chipset="acmgt2" name="L3Cache7" />
+    <guid config_hash="39d3769df27ae55aee36cfcc9dc28bc6" mdapi_config_hash="72d41f6be8f159158afaa811d77d36b7" id="84f32171-9963-413e-8f14-163a3e258342" chipset="acmgt2" name="L3Cache8" />
+    <guid config_hash="dff51a07c40f64ec23af5bbe1ac7a594" mdapi_config_hash="1a272df36c165b6e43cfe10a8242287e" id="9e9237e0-0d36-4e0d-8413-1109670a1f0f" chipset="acmgt2" name="L3Cache9" />
+    <guid config_hash="a67a848d8887625c80444b37ec7b7cfa" mdapi_config_hash="712e688aa566127793c7bd2fa48e9ede" id="156b77b5-f696-42be-ad63-13a8372d5d51" chipset="acmgt2" name="L3Cache10" />
+    <guid config_hash="584ae9dbfe51d5d3245f31c467c6abf9" mdapi_config_hash="7136b4a0c6847b47310bda7f2998caa3" id="fd98f311-2512-48f3-b0fe-464f34238811" chipset="acmgt2" name="L3Cache11" />
+    <guid config_hash="df708f258fcb529fa1a7c0eaa2e908f3" mdapi_config_hash="d26114a90900fe63fc83884e703a058a" id="efee1ff5-333a-49f5-8093-7b7a6196cfce" chipset="acmgt2" name="L3Cache12" />
+    <guid config_hash="8b8337732b99754b32d269eee686ec90" mdapi_config_hash="52bd20a1210bcf3abf3f1d132ad69aa6" id="a979c83d-ccd1-4aea-8a3f-966aa9e5a4aa" chipset="acmgt2" name="L3Cache13" />
+    <guid config_hash="33d09815e5c71acbf6c076bd1ae9b522" mdapi_config_hash="38d04949430979dfc8dac6e8d19c4c7b" id="6c0c13ac-31ac-4875-a5bd-a2a0ee46dd29" chipset="acmgt2" name="L3Cache14" />
+    <guid config_hash="1f1743bdb043eeb748b62c54f1bbc0d4" mdapi_config_hash="b624b9ba8bcd7479c81fd01c76b1fa75" id="7c562d8e-e5ab-44c4-8d2d-76026e6d9ac1" chipset="acmgt2" name="L3Cache15" />
+    <guid config_hash="19cd26d2a65f99133edb3d1daa3cefb5" mdapi_config_hash="7d613330ae507326937773f842f06714" id="7eb61dda-7e60-40ed-aaae-603533cf941f" chipset="acmgt2" name="L3Cache16" />
+    <guid config_hash="a475ab83f40d179b4634322acab77824" mdapi_config_hash="540e577090f75271ecd1409969e1b8e8" id="07329ee0-625a-45bf-851c-a8d7b8694afb" chipset="acmgt2" name="L3Cache17" />
+    <guid config_hash="f8bd15aba8e2f0048a3601cbcc15ca11" mdapi_config_hash="6574af95b460c73ba7efc2adccffd342" id="ee38be83-7e26-4c3d-83ce-4882411fba2a" chipset="acmgt2" name="L3Cache18" />
+    <guid config_hash="d8e4c1a15c244e34a67fd9294b6b4d5d" mdapi_config_hash="d292acb7e1564f2114c810f6c3b703c8" id="9c3213fc-98df-4619-b6ed-3dbfe01b76e7" chipset="acmgt2" name="L3Cache19" />
+    <guid config_hash="308c43a9a1d66a236fd869c281db3d9a" mdapi_config_hash="70f77f914f669b306faeb818c0041a1e" id="eeee50d3-45ec-4978-a359-c577c3c7ccdb" chipset="acmgt2" name="L3Cache20" />
+    <guid config_hash="f03249964b767b35b0cc57dd74491e8d" mdapi_config_hash="3438a252540e9fffc1fe6f505896e63e" id="955bae70-17de-4328-ac24-3f8f2c8e1f78" chipset="acmgt2" name="L3Cache21" />
+    <guid config_hash="eb2d1efbe9330cdaa28794a31710f677" mdapi_config_hash="16c615fde3c1963ad6f529f0ad25dca3" id="a3076e23-85b3-4aae-bfa3-de0b0806fa54" chipset="acmgt2" name="L3Cache22" />
+    <guid config_hash="5fdaa583b55dd3e7be9d5f5eb3aac4eb" mdapi_config_hash="fe7ad406d16638c8e0c1f0ab1ac25735" id="6b77c667-0ea4-4d77-9a2a-ae996fc127bc" chipset="acmgt2" name="Memory1" />
+    <guid config_hash="9ca114d82894303e586aed835dcb0f88" mdapi_config_hash="3605c821371e441cef72c15579398283" id="d96f021b-8a19-44df-8f52-68ed64096056" chipset="acmgt2" name="Memory2" />
+    <guid config_hash="64c8bff1465d2ce7810675ba353f1ff5" mdapi_config_hash="59206c2fa69fb134b84037c2577feb73" id="1aefcfd0-08ce-4632-b634-2009d3303341" chipset="acmgt2" name="Memory3" />
+    <guid config_hash="085b92d2428df0efe44791fa3717f68b" mdapi_config_hash="21536fa44a50750a272f9323e7e76e4b" id="d49bf819-990d-4638-a1f2-57943ad58d8d" chipset="acmgt2" name="Memory4" />
+    <guid config_hash="50dc57924779213b3caaa6f9540fc6a3" mdapi_config_hash="8ae0db66c53a7df5dccae2c119fb3dc6" id="bd8af739-2f08-4384-823b-ea5fe198fee9" chipset="acmgt2" name="Memory5" />
+    <guid config_hash="65a1b473ab2cdc95ccf6d53128e90e61" mdapi_config_hash="bb81c2ed63461d2a6bca35d7aed12c67" id="b43a5fd8-3d74-46c4-9261-62c25070e559" chipset="acmgt2" name="Memory6" />
+    <guid config_hash="e7763bb64f4a754faa289fb971cab462" mdapi_config_hash="fe94599201d514fd698a3cdd4618a765" id="51e468d7-f95f-4b2a-bfeb-01986463e901" chipset="acmgt2" name="Memory7" />
+    <guid config_hash="0fa4d500d6492bfe6ee4709900cc15b3" mdapi_config_hash="8b6cfc416681f6d34d78248f26d10e0a" id="08667e1d-ae1b-4370-bc59-2347bb0d7f8d" chipset="acmgt2" name="Memory8" />
+    <guid config_hash="ddb58391092447a28e5feff49f63c62b" mdapi_config_hash="a3626dcb23e08b4ee51a28a2a652276a" id="b2462b2f-f73f-42d6-9b5e-46cae062d1c1" chipset="acmgt2" name="Memory9" />
+    <guid config_hash="55c88e9f5373b38072903824e5ec687a" mdapi_config_hash="8a4c4ec52b6b9024f327c98fa99effa5" id="15694e7b-c38d-4a65-a355-df93411ed0df" chipset="acmgt2" name="Memory10" />
+    <guid config_hash="fb88b728e749f05b523e3d0dd71d20dd" mdapi_config_hash="9dc2f80c96916583116bb7179981246c" id="84667f81-6441-46d7-844d-e13078a16811" chipset="acmgt2" name="Memory11" />
+    <guid config_hash="6b7d1677e9d2ee97657e61f84f9dd407" mdapi_config_hash="e974167b4e06cca2ffe52c32e8f95ce5" id="3ec5f9fe-1567-456a-bb0c-f3b026813bd7" chipset="acmgt2" name="Memory12" />
+    <guid config_hash="67ea5991fcdedef305a2c13ff62f9c80" mdapi_config_hash="da50ed835033e3a4510402261fede66e" id="3ab47029-8b0b-4049-ac68-1ff07d0e7a6e" chipset="acmgt2" name="Memory13" />
+    <guid config_hash="9137fe2f16487b070fab4a5458cf5416" mdapi_config_hash="30700f828c9575a2108b84dc8ac1057b" id="8748eaa5-422c-4597-b4a1-519ccb6f4e95" chipset="acmgt2" name="Memory14" />
+    <guid config_hash="29ad295d8193438ef5de3fed7e017c55" mdapi_config_hash="dcb81479115cd05f7183102ee1bba11c" id="5050cadd-fc05-4183-b3dc-99f9ff5a0075" chipset="acmgt2" name="Rasterizer1" />
+    <guid config_hash="3c6843a17190fc9683bfe7aee17710bc" mdapi_config_hash="093cbe8a042339a5a4ef06b9c1480327" id="57ce566e-b572-4434-981c-558a16bd62d3" chipset="acmgt2" name="Rasterizer2" />
+    <guid config_hash="89dc26aaf44e90334f57ea6760c3a4af" mdapi_config_hash="ef2509ac6490c680bdf76cf8e02ff020" id="2db46c14-6718-46e3-a9a4-b2ba4aa10a3a" chipset="acmgt2" name="RayTracing1" />
+    <guid config_hash="00e479c6c238a94c62c08e926be012f1" mdapi_config_hash="8972442dd8950597c3aa49ef7141af8c" id="97513a9f-a2b6-4766-a2c7-530ae3271f9d" chipset="acmgt2" name="RayTracing2" />
+    <guid config_hash="bb9a11a7f271be48a45d6e6af86df754" mdapi_config_hash="8a087104ddb4817b7c17057ee989a31c" id="9ed83fc5-a773-479f-9cf4-146f2aca4e48" chipset="acmgt2" name="RayTracing3" />
+    <guid config_hash="4225eb2ceefc8b9cd08be9c92a68c91c" mdapi_config_hash="dd59156814137d2db5a8ce203f3577df" id="5564a1fd-d09e-46bd-8f4d-50a38ca7eb32" chipset="acmgt2" name="RayTracing4" />
+    <guid config_hash="6e53a914ab641633f4316bfa7c0514b4" mdapi_config_hash="339b3f34afe6f634e0d919015ec46fb1" id="d345e009-3b67-4991-89f8-7d57749f8455" chipset="acmgt2" name="RayTracing5" />
+    <guid config_hash="682795bbbb25da4b0d1b353bfd6a6c9f" mdapi_config_hash="99c7a577d85ea542d31a484cf08e9882" id="08c76b7d-54fd-4dd2-8d7b-e84a91850b26" chipset="acmgt2" name="RayTracing6" />
+    <guid config_hash="995f64c5e24666d3dedf739eae226815" mdapi_config_hash="80a2122121391c648bc65ea136376c65" id="db089729-1516-43ef-b2ab-c2170bbefa69" chipset="acmgt2" name="RayTracing7" />
+    <guid config_hash="a1dbdd60f2c4f194098c0f86db409d4e" mdapi_config_hash="a17836f594acc1866467156ca36b89c3" id="080a531d-76e8-44b4-b17e-6c3557d01be7" chipset="acmgt2" name="RayTracing8" />
+    <guid config_hash="49396ff90ac75753c448d2dc4370d3ee" mdapi_config_hash="1e001c11c0cbd2629f00c378fa3aa297" id="8edc7efe-7966-49b1-b318-49de98d12bc7" chipset="acmgt2" name="RayTracing9" />
+    <guid config_hash="07f53cae80786d3f7638733961ed5602" mdapi_config_hash="9b085ca955bd432b56e334e193da6616" id="98044ed5-0502-4b10-b288-db406e6c7345" chipset="acmgt2" name="RayTracing10" />
+    <guid config_hash="68df28c7ac60c203d7ee4c9bc251c6ef" mdapi_config_hash="499f743269931af0dbd9da5359cf2b38" id="f15f0972-5362-4c24-a379-7d4da15a9cdb" chipset="acmgt2" name="RayTracing11" />
+    <guid config_hash="81bcc730ee0978010f3786da6a90a020" mdapi_config_hash="f20b89974555224f1d86c69aeb91a66c" id="f9ceae49-ee15-4483-8033-5bcbc66c962e" chipset="acmgt2" name="RayTracing12" />
+    <guid config_hash="225b7fda35ff7a0fe0a004d63d0625ec" mdapi_config_hash="a3c36cac80395a46a6f7c83a67b7d2f2" id="61aa5615-f570-4915-a9af-6c9ab3b52719" chipset="acmgt2" name="RayTracing13" />
+    <guid config_hash="c0ab6559e54930e1b535c06e3b7c9f1c" mdapi_config_hash="317c897df2064b038bcd20a2f8642a6e" id="638c0798-61d0-4943-b160-87b8095d87a3" chipset="acmgt2" name="RayTracing14" />
+    <guid config_hash="4541ffed4a7d102ae741850580cee788" mdapi_config_hash="18742f5fbbf77f63d3a73930a72be5e7" id="20c09ffa-66e3-45a8-8429-acdfb972e75b" chipset="acmgt2" name="RayTracing15" />
+    <guid config_hash="a0beddac352e857d3ea34bdd22326bc9" mdapi_config_hash="afd7b6dad6cc318dd87ab3452da3dedf" id="ea6550e2-b1cd-43d9-9f45-79146292d692" chipset="acmgt2" name="RayTracing16" />
+    <guid config_hash="a034f3b4d09e7c5a974fe87d83498729" mdapi_config_hash="81752c71b659386284d0a929cf78ee76" id="d10100fb-ac64-42a1-a418-b03e112ba033" chipset="acmgt2" name="RayTracing17" />
+    <guid config_hash="83ee4253e313301ae35d424cb8c367f6" mdapi_config_hash="542b9e1eb9d9a63d89dedcb64040c3cd" id="f140f11f-5b0e-434d-ae88-cf1acd37ab49" chipset="acmgt2" name="RayTracing18" />
+    <guid config_hash="2d38cb3570c0ba479e353b717f12832e" mdapi_config_hash="6dd28628f985abb7cf2d3f2f984de2a9" id="011f9af3-43c4-45ac-b584-defd44cd442c" chipset="acmgt2" name="RayTracing19" />
+    <guid config_hash="3eb2ca18c97031c0708d81cc3094444f" mdapi_config_hash="3f002d6cffe1061c3097164ed6b3507d" id="fd6ea82c-5618-4a96-b4eb-b7d63f72432f" chipset="acmgt2" name="RayTracing20" />
+    <guid config_hash="1e42f1e51f1fdfdf7c7a58f4235984c5" mdapi_config_hash="18685decb9467eacb964ef416f43f6dd" id="cc205019-d6e9-4570-83f7-596dee6615a2" chipset="acmgt2" name="RayTracing21" />
+    <guid config_hash="85dc8019fb2c42ec8d717155096305ff" mdapi_config_hash="176d2e02e7d71358ef98d98f0ff1c608" id="14a7e762-a069-46e6-8c2e-6555813c3047" chipset="acmgt2" name="RayTracing22" />
+    <guid config_hash="68a406c787372ccbdb4dd34f4267d58b" mdapi_config_hash="6da9716c72607dbdfa41a146039737d0" id="ce74158a-e893-45a0-acd8-32ff5ac3e64c" chipset="acmgt2" name="RayTracing23" />
+    <guid config_hash="907b153677d71eeef9f4bb101b815c46" mdapi_config_hash="3389a9159a7a86c51c15f5e9e8430b1a" id="cdbdfbe1-d554-4ec9-9eb0-8a03b5ab8e01" chipset="acmgt2" name="RayTracing24" />
+    <guid config_hash="f536cb61dd20969eb1f41c40e47cd38e" mdapi_config_hash="9e78a1d3a5e09cb9f38d9b09e8ed4881" id="ff175695-a7d9-4623-9bf2-69b0bd950f3d" chipset="acmgt2" name="RayTracing25" />
+    <guid config_hash="90db7689d9d30452ccbd3cbd2cb9e4c1" mdapi_config_hash="bd7a0d91c91f218b0016ca757bc57fbc" id="b091df5b-4f20-4c91-a3d5-d2b376810ec2" chipset="acmgt2" name="RayTracing26" />
+    <guid config_hash="e0014c1494a43459ada1dcc07e7b8245" mdapi_config_hash="7b58810565681551873cc53d775dc15a" id="54634c6d-3ef3-4cd8-b80d-9642867ff9de" chipset="acmgt2" name="RayTracing27" />
+    <guid config_hash="e672d61f900ce4779a9357ea6477d6bb" mdapi_config_hash="e02dbe7b975c0e6a6736dcd5fa8ac88e" id="284d68a1-6924-4746-8ac1-8e94a116be75" chipset="acmgt2" name="RayTracing28" />
+    <guid config_hash="9e12c39d385fe105dd80d6eafa56fc9c" mdapi_config_hash="12c890ced67df31cc2e94ab9701dc1ec" id="8129227a-30cf-40cc-85ea-95614a31975a" chipset="acmgt2" name="RayTracing29" />
+    <guid config_hash="30f7e51404ab7bb19d910684ec5da464" mdapi_config_hash="409f5ac02aff380f8eb216f76d899934" id="4de4fb3e-bd28-4e5a-8fd8-01ca378184ce" chipset="acmgt2" name="RayTracing30" />
+    <guid config_hash="f47cc74ed819afa42ed5a42c8b069e92" mdapi_config_hash="0dfab0288a65b19421d1dc3928e89c43" id="5acdb2be-3918-4eed-9bc5-f272bc175a3f" chipset="acmgt2" name="RayTracing31" />
+    <guid config_hash="708ad94aa255e3f600b29b1f94889bd3" mdapi_config_hash="a0c1b4947cba92416378d919af9a7d5b" id="10125720-3004-4838-8a03-24fff2d9fb06" chipset="acmgt2" name="RayTracing32" />
+    <guid config_hash="ce010f506318b332fbab9f4614090c08" mdapi_config_hash="eb0790883fd87edfc5af44191cb01452" id="b1e299f2-35c3-4954-8cce-4fd1dd2491db" chipset="acmgt2" name="RayTracing33" />
+    <guid config_hash="95f47124fa519b69de2bf4da63b45efc" mdapi_config_hash="46af887153653c5d934be9b6fad3153e" id="bf47e090-9786-47b2-bf6d-746b7970001e" chipset="acmgt2" name="RayTracing34" />
+    <guid config_hash="4596e92f323b11c53e3060af1a6af03b" mdapi_config_hash="c614b59ff396de39ca4f89af4c0352b0" id="df706146-44af-46d0-9ce4-0af556b009e3" chipset="acmgt2" name="RayTracing35" />
+    <guid config_hash="c5d034035f7cf79adb3170e0e8360edb" mdapi_config_hash="417fb5163bf1607731a090fb24237936" id="d1e152cd-ef8e-48c0-b63c-421e17083a0a" chipset="acmgt2" name="RayTracing36" />
+    <guid config_hash="6070793f331c47b27bbff8d1dc628721" mdapi_config_hash="f44e3121536e654f4a8aa2ea107ebe07" id="e5cdc5f8-81f8-442c-a0c2-b94621efc7be" chipset="acmgt2" name="RayTracing37" />
+    <guid config_hash="411cd053f8c4edcd1a03b8093154a632" mdapi_config_hash="c0341e9bf8783006676ccf53dc13f2a9" id="6604e545-3a89-4f6e-a697-65b1f5bcb306" chipset="acmgt2" name="RayTracing38" />
+    <guid config_hash="5681976c393147160310c4a45349be05" mdapi_config_hash="9c0d5747b7a38e3f5e02f18adeeb82e4" id="3b7d7a01-6242-4544-b68b-54eb4b2f59d7" chipset="acmgt2" name="RayTracing39" />
+    <guid config_hash="12e98d211322c2c092a20488d2d0372b" mdapi_config_hash="35ceb9855310dfa390b6ac67d9ff3097" id="d7617e5d-23ae-482f-95fe-ae8615cf9172" chipset="acmgt2" name="RayTracing40" />
+    <guid config_hash="726cb480831ae1cefe4e1580ff9de20e" mdapi_config_hash="055d61701f65062245c87ee9b66f9eb3" id="f8410bd7-acba-4fd2-a2f4-9bec43057129" chipset="acmgt2" name="RayTracing41" />
+    <guid config_hash="710ef53ad0ad034a3f648b5c8b0da6b9" mdapi_config_hash="d752cde828906a42ba24cb01b3eaecac" id="c7cf55e8-7633-424a-a524-78c46698b5b3" chipset="acmgt2" name="RayTracing42" />
+    <guid config_hash="8f36977540993cfe11574c422b6ef6e8" mdapi_config_hash="c2820ab807bd95cc723a8a70a5f4bc47" id="5f5c6ff1-c38b-4b0a-bba9-187d65965cbd" chipset="acmgt2" name="RayTracing43" />
+    <guid config_hash="dbd53f482f35961786e96903033c2c4e" mdapi_config_hash="edf6fb3a240e3e9f04fd9ac7ba93761d" id="eeb417cc-d7ff-4713-92c8-dac7f5cf865d" chipset="acmgt2" name="RayTracing44" />
+    <guid config_hash="0e833f4e42df63838d4d04c968093b9b" mdapi_config_hash="f211aed305b62f017f8686f55a293fab" id="e7b14d21-de4f-46e5-9be9-619f8d0cac25" chipset="acmgt2" name="RayTracing45" />
+    <guid config_hash="2784499682d1ee4f21552e4329a8db17" mdapi_config_hash="74028d4bc2c358136edbcae0869c7e70" id="243b4356-4036-42c6-bec9-40c9f2c15bb0" chipset="acmgt2" name="RayTracing46" />
+    <guid config_hash="8ba489c8dfa21773c49b0651261dd1c2" mdapi_config_hash="8da8ba20f7287441dccf8b54c3273937" id="c1961a4a-56fa-4693-88f8-24c7c58f37fb" chipset="acmgt2" name="RayTracing47" />
+    <guid config_hash="ca88287903af5463eda58590dbe65733" mdapi_config_hash="843dc2bc03da5015ba5abe4418ef9855" id="0c4634e5-207a-4f8d-afd0-b7ee705e9a1c" chipset="acmgt2" name="RayTracing48" />
+    <guid config_hash="b680a2398d8a00d2b80d2a3940045534" mdapi_config_hash="4f4abb4dcf8c3282e82e129e64f981e0" id="3983a842-c461-43e4-86be-43f74d1fc1fc" chipset="acmgt2" name="RayTracing49" />
+    <guid config_hash="10fc994ff35f7fe3140f5e6e963c4e44" mdapi_config_hash="b6b72bcaf7f087a466798d0625c95949" id="8da1e755-69e8-4c30-9d55-317dbd8c843b" chipset="acmgt2" name="RayTracing50" />
+    <guid config_hash="39dfc44a2a719363de9b9cef950b18d7" mdapi_config_hash="6575389c5ff958032832d997e3a42885" id="95175ccf-d7f5-47cd-aa92-3598fc431169" chipset="acmgt2" name="RayTracing51" />
+    <guid config_hash="4d1f6c8b333090ba62123082bc35fe25" mdapi_config_hash="6fc0695cdb60e175acc55ce99cf0a234" id="d2d43104-87a6-4fe2-9979-5469dd33f9fd" chipset="acmgt2" name="RayTracing52" />
+    <guid config_hash="a71b1332b01346bb8dcd5b59157fc2c6" mdapi_config_hash="6b5ec92cee19f2b0ebf9809f37641857" id="a51b5ede-d663-45a2-8ce1-f19dc664a936" chipset="acmgt2" name="RayTracing53" />
+    <guid config_hash="fe518a39381c00c05da426843aa4ef80" mdapi_config_hash="a4278a92c9b4cc4bbe37ff52b65676a6" id="25676609-7d64-47ca-b92c-9128a9907f65" chipset="acmgt2" name="RayTracing54" />
+    <guid config_hash="34b50a5337d8e89ed724b403270552b2" mdapi_config_hash="eccfa01e15b2408653450944a275ed7c" id="1edc6759-9642-442c-9aa6-850ca7715097" chipset="acmgt2" name="RayTracing55" />
+    <guid config_hash="dabd8b32eecaa3903def4e5f6f1701b8" mdapi_config_hash="2cf3b55a70f318d7f93ee4f607a96957" id="ecf6d5e1-928c-49dc-868b-89893073c183" chipset="acmgt2" name="RayTracing56" />
+    <guid config_hash="ee95a6c4be4aa7e6b8d79bccd5f3e10e" mdapi_config_hash="97deedc4d38fafaaf08b2dd819a67d60" id="f8998902-7ceb-46ca-a62b-881dca4ff1f6" chipset="acmgt2" name="RayTracing57" />
+    <guid config_hash="9b08d301332f29cb4fc3768855bc98c4" mdapi_config_hash="4322639079fd93306cf46adf23f3a1f1" id="b7b90bb9-b0b5-428d-a175-d9c89ecd35d1" chipset="acmgt2" name="RayTracing58" />
+    <guid config_hash="612d9d2c0dff7fbe338faa9069e8f95b" mdapi_config_hash="01783f71454dde7768a77755aa8e1f74" id="f7cd6361-0226-4e03-8856-cf375bd1264d" chipset="acmgt2" name="RayTracing59" />
+    <guid config_hash="c2ed7ee1bcb244a7c7126fb1a31dfbf1" mdapi_config_hash="a97a27463739feebf11ff89db100bef3" id="945822ee-5469-4db5-b86e-c5f5255ac9fe" chipset="acmgt2" name="RayTracing60" />
+    <guid config_hash="85fd4d246e8c1dbb353e96c5076732be" mdapi_config_hash="bc4c3390050531a635c6f1e406c3d6e0" id="8cd0af0d-1298-4414-aa94-5e13b6083af2" chipset="acmgt2" name="RayTracing61" />
+    <guid config_hash="8bb1d88aba8645a519e7d80ca4d7aee2" mdapi_config_hash="0f7bbdcabd4b6e24074388cfe1ed9417" id="bb7ccc48-ff70-4ec5-a35d-9b77ca79034a" chipset="acmgt2" name="RayTracing62" />
+    <guid config_hash="e76233211df28a1605aeb5be0aa7e8aa" mdapi_config_hash="ed9bf2976f941bf0e658aa80a1023eaf" id="f4c111b5-6f5f-4109-9887-0968ddb7901e" chipset="acmgt2" name="RayTracing63" />
+    <guid config_hash="dd2143523ba71fca91c1864b52c48081" mdapi_config_hash="2ef60a111532f8071046e3f3b148f46b" id="dd2c9174-67a1-4114-a71e-921548e9a033" chipset="acmgt2" name="RayTracing64" />
+    <guid config_hash="75837db88ee3f74bff4b6a1ed8e9b0aa" mdapi_config_hash="8efcab2bfab6cc56a01a70496d69ec99" id="1a5ef45d-9d6c-4cde-804f-bdd054d2527a" chipset="acmgt2" name="RayTracing65" />
+    <guid config_hash="97a0ae67cfe1d575b5b397d7a306fc17" mdapi_config_hash="dfec104ee21f0fe71a6546508bb8ad75" id="fa54a0b0-a5d0-4423-97c3-37cc477cbcca" chipset="acmgt2" name="RayTracing66" />
+    <guid config_hash="c87c0c260d796465b89eca0be66ad6ee" mdapi_config_hash="7ed252af295402f184f3085d0fd97c69" id="1efaa5e7-98d8-4752-8111-3b293d46b884" chipset="acmgt2" name="RayTracing67" />
+    <guid config_hash="1a2895e49eb54b25e1fd439ec4c71097" mdapi_config_hash="7e1a11880575f4896d2793ea6d34ac8d" id="046afd23-c347-4139-9768-ced28fb81d81" chipset="acmgt2" name="RayTracing68" />
+    <guid config_hash="3b76ac2169af0e1352612da985e64792" mdapi_config_hash="e90d1417074ee13ba5969424cd63625d" id="7b00995c-f689-4a8a-862d-6391ffa9ceee" chipset="acmgt2" name="RayTracing69" />
+    <guid config_hash="2ae69f532ab4504ed11dec3ba1c0ba7f" mdapi_config_hash="5bf37fde3b5ef3ddf3589d237d25eded" id="981e8cee-e786-42de-9ca0-2ffbf6eb4ed1" chipset="acmgt2" name="RayTracing70" />
+    <guid config_hash="c7b7a9abf5196dc2c7622a1a9bb7cf54" mdapi_config_hash="abcfcc9408157fadff3e0cacfba84c0e" id="b02dcfab-bb8d-4327-ae9f-677412a38645" chipset="acmgt2" name="RayTracing71" />
+    <guid config_hash="5cb5e502454052bb27198043fa75025f" mdapi_config_hash="f93d4b8f6476f10043994d4ad8e14a2b" id="87ae14d2-1266-4939-a094-0b69e0b7f171" chipset="acmgt2" name="RayTracing72" />
+    <guid config_hash="bfc5ef590099f69b46dffe2a487f12fd" mdapi_config_hash="f0463e5b7a22c055aac79428abf6f336" id="e561fce8-e7a3-44f6-950d-96e2c7e621e3" chipset="acmgt2" name="RayTracing73" />
+    <guid config_hash="96a3b23c618b51b35f5253d457b993a3" mdapi_config_hash="21d5ab04f3f0d2e6f6267127ec4cc94d" id="f396f14f-c1f5-4f46-839a-ac7f00810d4b" chipset="acmgt2" name="RayTracing74" />
+    <guid config_hash="b554ed62d477c3e4a5f09edaed811897" mdapi_config_hash="c461ae420531ed89b63187f70ff3dd94" id="028f9e23-485e-4124-b061-6448a3a5b676" chipset="acmgt2" name="RayTracing75" />
+    <guid config_hash="36bb99404cfba411e6b956266d1a69a8" mdapi_config_hash="464364843d87ea6fef3e445cae162b04" id="57b2791d-0a96-42a3-8e1b-5692658c4f87" chipset="acmgt2" name="RayTracing76" />
+    <guid config_hash="ebb28bf125d3ba179155d6d433c42c8c" mdapi_config_hash="cfefed7b614d2b6b9cfd04c9492188d8" id="a2ff8f41-89ef-4e9a-a7f0-31412cff350d" chipset="acmgt2" name="RayTracing77" />
+    <guid config_hash="906293f6490a26da2dfee2cc3ca48f5e" mdapi_config_hash="bab650d4d331c545ef3a96aaa3c1d34f" id="c9ed79c3-88ef-415b-8d59-a4da69888f66" chipset="acmgt2" name="RayTracing78" />
+    <guid config_hash="e05907f8dd32827864d29a67500c416a" mdapi_config_hash="3b25dbe5aad01a73186cfb7a6daeac87" id="97b017f6-f65c-4a0c-8078-7a1cb65157f0" chipset="acmgt2" name="Sampler1" />
+    <guid config_hash="ae2786993813d080d09a71b7d06d70b6" mdapi_config_hash="c6805c0e5d9d4c6115426321e3c03ce7" id="62f6959a-fdae-4cdf-b50e-e818f96d3fa5" chipset="acmgt2" name="Sampler2" />
+    <guid config_hash="3e9b905a4c8037471dfafebc278c542d" mdapi_config_hash="64ac3d6e940eab29f23ef6fffbf94212" id="ec2a8d38-54ef-4090-99de-4e2cc5a1892f" chipset="acmgt2" name="Sampler3" />
+    <guid config_hash="6191d68eedd23e1204cee0f2b7658492" mdapi_config_hash="e34154e33d7001137b0f6a660f1f3bd0" id="2a10d977-d656-464c-91a0-303aff97e4af" chipset="acmgt2" name="Sampler4" />
+    <guid config_hash="973a7c9281d8d5c18a6bda46dab33087" mdapi_config_hash="b6dd66d743ee43120e30564fd65ec825" id="51dcfdcf-ea8c-4963-ab0b-72013e72e433" chipset="acmgt2" name="Sampler5" />
+    <guid config_hash="4fe9858634b37887247eceb0e2e07fcf" mdapi_config_hash="d2d7c063534e2d7c80dea60ee6936908" id="8203850e-45ae-4f59-81be-45f721f5406a" chipset="acmgt2" name="Sampler6" />
+    <guid config_hash="0a6d33f05112a9e568f0680b3c89fb55" mdapi_config_hash="3dce201b1e02cc804d0c3ffdaaefd7c4" id="3e6e7ddd-572c-4628-94a2-b8a8385fc7b0" chipset="acmgt2" name="Sampler7" />
+    <guid config_hash="b57a14e0ce4c2bf09a03970b2839aec4" mdapi_config_hash="9e9f2848e54d1491d484bc2979f39e0d" id="5683991d-228c-41e5-812b-98bc82e244b2" chipset="acmgt2" name="Sampler8" />
+    <guid config_hash="2acce003799df24c332142ef71868f0a" mdapi_config_hash="eaac1737d7e05d5c8f707a266f17226c" id="2c897818-565a-4753-a1f6-8f81529b2447" chipset="acmgt2" name="Sampler9" />
+    <guid config_hash="a265423438bcad6527bcd832767a74c9" mdapi_config_hash="69ad1017a54dfa23879b79fe78d98982" id="f74b6a50-22da-4c0e-b621-c0627525e511" chipset="acmgt2" name="Sampler10" />
+    <guid config_hash="328c61f6bfd2af104b5d00c57d544798" mdapi_config_hash="a4f28d91c554d8623f97851cb85628a6" id="6edeb7d7-a21c-4d06-bd66-dd804480f1f1" chipset="acmgt2" name="Sampler11" />
+    <guid config_hash="41a9cd4ee3d8856804b5bcedcd431e8f" mdapi_config_hash="cd0fcf8252587a434c095aba4142b7d3" id="7d691d4b-febf-415b-8d1b-1d623e936c19" chipset="acmgt2" name="ThreadDispatcher1" />
+    <guid config_hash="04c5ce7c8abe51f1f9dcd7dc51cf7721" mdapi_config_hash="e37c02b623b58fabb2d1dbcdcd14ac0f" id="04737515-c210-40b6-90b0-2ad6ce51ff72" chipset="acmgt2" name="ThreadDispatcher2" />
+    <guid config_hash="b5ec98bf5eae19302560b8ba060da03c" mdapi_config_hash="c6aebfd50fd0ae6566ff8b677f861cc7" id="6215b3ed-0c9a-4171-b8bc-035be8e8b140" chipset="acmgt2" name="ThreadDispatcher3" />
+    <guid config_hash="46e67688158bb5b58a52a38618015f0d" mdapi_config_hash="46aa11f6f56faa6be7220d4a0964442b" id="cf7b0026-fbed-4f29-ab6a-0f6acbea337b" chipset="acmgt2" name="ThreadDispatcher4" />
+    <guid config_hash="ec7ab4f8499812d3f64bb1691a46d294" mdapi_config_hash="36ceeee9f41bbd80bd3136469e417ee7" id="9fcfbc28-caaf-44ea-84a5-f1c5c2341b2a" chipset="acmgt2" name="ThreadDispatcher5" />
+    <guid config_hash="3e4057d8d1bb3d440861c51028054d1b" mdapi_config_hash="a6b105f2b8920978f0ad0c5104754018" id="c0af81b4-8172-4e9c-8da2-5051e5817de6" chipset="acmgt2" name="ThreadDispatcher6" />
+    <guid config_hash="0e1226eb3161157b19e33c5ee1f76b6c" mdapi_config_hash="f8a1fccea414832c6ed0cbb8de5e7b80" id="74538036-2ddc-486d-914c-ffe5d3ce6cfb" chipset="acmgt2" name="ThreadDispatcher7" />
+    <guid config_hash="d60a6da129e9bd73c873f69a750a7ce0" mdapi_config_hash="4c43d1866e6e83c878df73e1b48f5917" id="558bd2fd-a7f4-41e5-9ef6-1d529263bcd2" chipset="acmgt2" name="ThreadDispatcher8" />
+    <guid config_hash="0bb0ef1dccfb6cd1761249b2dca5eb13" mdapi_config_hash="fb243463fd1b924965fab18f159275bd" id="ac68b4c3-f63a-4dd8-855e-d3fd781a8bde" chipset="acmgt2" name="ThreadDispatcher9" />
+    <guid config_hash="19889d1c97e898d3976ec2a5b381dd44" mdapi_config_hash="98f6be6662c7b8a4e7722be60a2101e0" id="b969747f-2450-4725-899f-5d0701930ea7" chipset="acmgt2" name="ThreadDispatcher10" />
+    <guid config_hash="2b6bf3bafae690333c393caf2cbdface" mdapi_config_hash="da76cdec51cc789a90a98e4ddead044e" id="b2e80bd3-d852-4c07-86e0-520c90236acf" chipset="acmgt2" name="ThreadDispatcher11" />
+    <guid config_hash="b6e2a8c5afd871de9137d308f1d46280" mdapi_config_hash="87227a1b0935f24584b0c7b955222bf8" id="5622d707-7646-48bc-90e0-af17a55ab1c7" chipset="acmgt2" name="ThreadDispatcher12" />
+    <guid config_hash="8f73f1c53b7dc713290921c87a5f8d11" mdapi_config_hash="16b8a77bd8dc04dcda5da6609f5e784f" id="6149c8e0-84f6-4643-ac19-0f5b5a8fa830" chipset="acmgt2" name="ThreadDispatcher13" />
+    <guid config_hash="5689cdf757e692ca8c0cf4efcf0c4366" mdapi_config_hash="3d5d4925f07ee6c1cc5a245bfac2e157" id="3ad2842e-a192-4cb9-aca4-c3dfa9238070" chipset="acmgt2" name="ThreadDispatcher14" />
+    <guid config_hash="9a05d003976e5f710b20269eee6789db" mdapi_config_hash="3f7b2564957ae6067cee63ad1e5e26ac" id="a8b90aef-99fa-443f-8e74-06489d14a031" chipset="acmgt2" name="ThreadDispatcher15" />
+    <guid config_hash="c63718000c3c69ee99841e290aa9ac14" mdapi_config_hash="d2c12024058bf6561eee74f46338d657" id="3c5182e0-c1f6-4e9a-b5a6-752052f23389" chipset="acmgt2" name="ThreadDispatcher16" />
+    <guid config_hash="edb00f36d942aee4259c376419d97964" mdapi_config_hash="490426110fb2a81ee430a46c8c580813" id="72a4eaf8-b31d-4749-85e9-d6670ecfda25" chipset="acmgt2" name="ThreadDispatcher17" />
+    <guid config_hash="b2607dc81c5f9e38ce25bc979cbba4e2" mdapi_config_hash="f04dc0b27fe768441dcdb690525c9320" id="2b0b4fde-719b-49de-a309-aeb1f96e2f6b" chipset="acmgt2" name="ThreadDispatcher18" />
+    <guid config_hash="287a0184341c5922146db15d7858b123" mdapi_config_hash="1c1913aee4d82cef6b3684a7574cd8c8" id="d25f6c66-eb80-49f5-ba95-74e5bbeffba8" chipset="acmgt2" name="ThreadDispatcher19" />
+    <guid config_hash="2008e74bc04c777ddfff6b5a7113b6ab" mdapi_config_hash="966754d5777acd55d0971aa0d4b2ba89" id="9decfc7a-90a5-4e0c-8f20-be21a3e00e2b" chipset="acmgt2" name="ThreadDispatcher20" />
+    <guid config_hash="7c29f507cdda8151183e72bc83b16aba" mdapi_config_hash="e969dfb53b008b9a361330222efe7e5c" id="f2099f1b-7280-4175-b2a9-a373b7039027" chipset="acmgt2" name="ThreadDispatcher21" />
+    <guid config_hash="da5ea82f2cfaca1a52ae3edf053aa1cb" mdapi_config_hash="a71bf4375f0cdb69773ab605e7a31283" id="1be88735-2a46-4564-84f3-0c832cd05571" chipset="acmgt2" name="ThreadDispatcher22" />
+    <guid config_hash="45e7a48e3bbe4684b4a0ac03eda93633" mdapi_config_hash="554e74b54089d02fd66a2793804f4d3d" id="71d12693-64c0-4da1-8f5e-fdaf00bcf83e" chipset="acmgt2" name="ThreadDispatcher23" />
+    <guid config_hash="bbbe2f1b6257b2fd578fae55f30fcc6d" mdapi_config_hash="57103e1e92a526390110d4f2b0840147" id="6ad141b6-faae-40da-bdf4-02247ec1121c" chipset="acmgt2" name="ThreadDispatcher24" />
+    <guid config_hash="ab62e0256745f87471b612b97c240bad" mdapi_config_hash="5a4720b41e73b2ad76718685bb732c6f" id="74433d30-ffa1-410d-8c87-7cee0acfe4ea" chipset="acmgt2" name="ThreadDispatcher25" />
+    <guid config_hash="b95d04c098b3cd365fd868fa84123616" mdapi_config_hash="91f38934ab63e7a12883c64f2d790869" id="5ba834b3-4603-4c43-94da-6e1bacf9500a" chipset="acmgt2" name="ThreadDispatcher26" />
+    <guid config_hash="c069b37465a35182756324b38f56b9b9" mdapi_config_hash="0becb549fa9d0ddf2860b7ff763d47e8" id="dcfd59c3-e7b0-402e-a656-ca2a2f2d95dd" chipset="acmgt2" name="ThreadDispatcher27" />
+    <guid config_hash="dc3e2589349f55923689823d0f28c9c6" mdapi_config_hash="1645843b4d85e17fcd996d56b03a1ec7" id="f4a8f90b-7b27-40e1-9015-6b2b3c60920a" chipset="acmgt2" name="ThreadDispatcher28" />
+    <guid config_hash="a53f73648609ff3b6d879d65ecaacca8" mdapi_config_hash="25935ce89c394150072abedb72461dc7" id="e3476c20-6530-4dfe-bbcd-f98065ce0702" chipset="acmgt2" name="ThreadDispatcher29" />
+    <guid config_hash="7315914f4f118e90322b0391ba1e03be" mdapi_config_hash="dba993eb0806b10fd06c15f66ddda3b1" id="235cf07d-fa5f-48bf-8906-f089284a77c0" chipset="acmgt2" name="ThreadDispatcher30" />
+    <guid config_hash="f1839cf12d79452e3e00451af366fea8" mdapi_config_hash="3749bd0eb48d1930c2f0abfd432eef71" id="60f202e0-3078-4cee-bb6c-7b579827b501" chipset="acmgt2" name="ThreadDispatcher31" />
+    <guid config_hash="4839267b2c39e40d123eb1d18ea53b33" mdapi_config_hash="82806b8d59372b9472349a592296a791" id="68400a0d-dffd-4787-a1f3-7385e2f2f39a" chipset="acmgt2" name="ThreadDispatcher32" />
+    <guid config_hash="608489d87b5465ef7a59e3e60fb8fa8a" mdapi_config_hash="d349def397ceced965d0f945d167137e" id="c0fb4de2-f14e-4576-b7b4-b564a6d1eccf" chipset="acmgt2" name="ThreadDispatcher33" />
+    <guid config_hash="a979f219b220c4230fae32f86b21ab5e" mdapi_config_hash="0d749a14571a1c8cfa243d5928825422" id="ebaac92d-ede4-44be-b0d8-d3a292f1c696" chipset="acmgt2" name="ThreadDispatcher34" />
+    <guid config_hash="30a370bff9a6ac09558f7b3941f5c42e" mdapi_config_hash="b4b73b9f4bdd684e31324fb59ea13659" id="310c4352-616a-4995-a8ca-dc1b0b4083e2" chipset="acmgt2" name="ThreadDispatcher35" />
+    <guid config_hash="8d3f71932599d0926162eacd703e1484" mdapi_config_hash="c1983ac703e6dbe08a0552f6f76f451b" id="70244132-9e7c-42e1-ad19-14b16fd415ac" chipset="acmgt2" name="ThreadDispatcher36" />
+    <guid config_hash="0057ae71622c9628abb2cad982e74e82" mdapi_config_hash="f56f2a174387491e481d45cb695bf0d4" id="c7d9ebf5-268e-4377-852d-0dd8eb89151f" chipset="acmgt2" name="ThreadDispatcher37" />
+    <guid config_hash="04694d96f603223c1ffe4b566f688ebc" mdapi_config_hash="8bf8267f3cdcf704fd38227984f8c5e5" id="b7b02568-d2ce-40b8-bcbb-4ecc07ff731e" chipset="acmgt2" name="ThreadDispatcher38" />
+    <guid config_hash="0db5677558a053a7b7323022b9c2c876" mdapi_config_hash="d50175e820ace925e81239cfa4c2a778" id="af83fc4d-719e-460b-8cac-d315583f63a7" chipset="acmgt2" name="ThreadDispatcher39" />
+    <guid config_hash="7e7a598638d3b4e222a0551896cb1327" mdapi_config_hash="f61d9f8e3257b65593db09f7c8b18859" id="3d539f37-55b5-4473-9b4c-2f7d704c0d3b" chipset="acmgt2" name="ThreadDispatcher40" />
+    <guid config_hash="affba5edd0c96031ad8117e9172051ce" mdapi_config_hash="7b47b7d3bf25272c23b41a524156356a" id="c6251684-6ce6-462f-807c-657b84a2234f" chipset="acmgt2" name="ThreadDispatcher41" />
+    <guid config_hash="0f97376a548f8be3585dd5996e4266cc" mdapi_config_hash="444e46228738f84500275820ec379913" id="55cbe93c-e003-445a-95ca-478e9b8b9b51" chipset="acmgt2" name="ThreadDispatcher42" />
+    <guid config_hash="ae02977c70abb40c50d586058590b16d" mdapi_config_hash="7bd15e39458ac8f6766bb6741c14361d" id="9c9204e8-e9e6-4b93-975e-2fc874b22d9c" chipset="acmgt2" name="ThreadDispatcher43" />
+    <guid config_hash="28c56b1b4cf96b50d23063e661eff865" mdapi_config_hash="9796065ab20600213fdfa15a98e40d89" id="ea77a8e8-375a-46a7-a4cb-b0a40f3ff83a" chipset="acmgt2" name="ThreadDispatcher44" />
+    <guid config_hash="15b10155ad35b4e4672d2f5ca3a27c70" mdapi_config_hash="a642e049137262ec3f73620297dc64a5" id="22202c50-f46b-4a14-aab6-15d079655616" chipset="acmgt2" name="ThreadDispatcher45" />
+    <guid config_hash="fb03132f0214e12de2f77f01f1632306" mdapi_config_hash="004901c77410279094c8addf406d3649" id="4d77eb41-a74f-4e76-a0ac-66a63d2ad7c6" chipset="acmgt2" name="ThreadDispatcher46" />
+    <guid config_hash="9502494d9c5ada489d346061e344feb3" mdapi_config_hash="2e9605bdf39bfdda41e0ab0b4dd7a477" id="f02fbce6-28cf-42d5-a07d-6a5c07e3baf6" chipset="acmgt2" name="URB1" />
+    <guid config_hash="7d7fdfd765dd4090d2f11a433ed32418" mdapi_config_hash="5c87f223cab4513b17196c849dfe33b0" id="1f749c36-964c-40d3-ac0f-3b8e24d4149b" chipset="acmgt2" name="URB2" />
+    <guid config_hash="386b161f2653fa17b3fb4bf498e6a088" mdapi_config_hash="4f58791db71f39f2a81aa99d789dde52" id="b7679a40-d48d-4994-8342-6277a37840ce" chipset="acmgt2" name="URB3" />
+    <guid config_hash="effd1dd070aba7151dd08ff93005839c" mdapi_config_hash="290752ecc0a9af2befa1ef6a7a54d0f2" id="23924e32-c593-4b9f-905b-908c380fb0b9" chipset="acmgt2" name="URB4" />
+    <guid config_hash="a8c90f7d1bc10c40180e6edbf29fb3ae" mdapi_config_hash="f998f3c3b6040fd12a597a40e2b49b1d" id="30376d17-f01b-44cb-b41e-43a606fe4e0d" chipset="acmgt2" name="VectorEngine1" />
+    <guid config_hash="dd24329413190ca855f9c7f3cb3962c6" mdapi_config_hash="c5b0390a05d47e4aa53320a579284856" id="cbc51aeb-65c2-4bb6-8fb5-40a47800bf28" chipset="acmgt2" name="VectorEngine2" />
+    <guid config_hash="1d43902056b9596974db91a141761240" mdapi_config_hash="e54d4d98b813dccd72aecbb208f06f01" id="48620eda-41d2-4684-b4da-0140d1cdc8ba" chipset="acmgt2" name="VectorEngine3" />
+    <guid config_hash="8058f2df0e8e5b9caf8d32bef2e041b0" mdapi_config_hash="641bd5a23e2f119b8ce19e91d8db84e5" id="4f2d3240-5242-48d7-8f25-1064a7044c01" chipset="acmgt2" name="VectorEngine4" />
+    <guid config_hash="228036f7e46809d591ea8a1b7d1f8a17" mdapi_config_hash="1b0a59bf7aefd0157a166d404c8714a5" id="510e005b-5631-437d-b898-17d89b9df71d" chipset="acmgt2" name="VectorEngine5" />
+    <guid config_hash="34432fa55767983be9ed6e5106d5e2f8" mdapi_config_hash="026caf33ffbc938f0b87023a90c34846" id="c063d6a9-6cb2-449f-8799-322c31d6eb0d" chipset="acmgt2" name="VectorEngine6" />
+    <guid config_hash="8b8cf89cfb03328a0a15a97116e6c3b6" mdapi_config_hash="792bbea60341cad33fe71c0772dafeb5" id="fbfb8b12-d3b3-469d-ae93-c026b05b2107" chipset="acmgt2" name="VectorEngine7" />
+    <guid config_hash="a5d45bc68ebca135572eec0e7f0141ec" mdapi_config_hash="d495fa4ebfe11d5b5e41bfd6cc9ce800" id="2705f48c-206f-43e8-bde7-110fbfb0facd" chipset="acmgt2" name="VectorEngine8" />
+    <guid config_hash="ec8de6a7bc5bcc1dfa132f99ba928991" mdapi_config_hash="a789747bf48b7688245c03fd424eea77" id="85cb3e85-43ab-4e7f-8962-ff5e203b079f" chipset="acmgt2" name="VectorEngine9" />
+    <guid config_hash="d9f64fdd39fbf4c5f3ab387bc20ec57a" mdapi_config_hash="07d17dc7a541e2d3e1574b0faee8cc72" id="b2c23ce7-cfd8-45c8-bde6-b5d7c248b5b3" chipset="acmgt2" name="VectorEngine10" />
+    <guid config_hash="45cdd1511530f41baea0c97beb47c6fb" mdapi_config_hash="db2823c7d19e0a963a287c8731893951" id="567eef44-e37e-48d9-8f4d-fe2634110051" chipset="acmgt2" name="VectorEngine11" />
+    <guid config_hash="df5770cf6addb6884c0596b024407dec" mdapi_config_hash="99ab93bd326023b05849af3528dff7c1" id="d68e64a7-2ddb-4c33-a5d0-a0ff9de398f9" chipset="acmgt2" name="VectorEngine12" />
+    <guid config_hash="8aad3d33833ae383424520dc9771b27f" mdapi_config_hash="e2f5bdd1bda6a2942b3e5a597e0f9493" id="5123cfe9-f7b0-41ee-a2f2-6e5801ac55f6" chipset="acmgt2" name="VectorEngine13" />
+    <guid config_hash="52e4082672912484856b91fdf549f091" mdapi_config_hash="560ac8970a75e133e7f9be0dfc37aa53" id="f7b22238-61e9-4c17-a211-90f5feb9dd31" chipset="acmgt2" name="VectorEngine14" />
+    <guid config_hash="544ae8b05560aa67aec93d6fc231a8cb" mdapi_config_hash="6be5f68652602af95dfab44aebc55414" id="27f15518-fd8e-48ac-8fa8-f844a09a9cf3" chipset="acmgt2" name="VectorEngine15" />
+    <guid config_hash="6ff3288db58557799413eb1901bb4167" mdapi_config_hash="4817ab26da43744c45eca6d8a63e04ac" id="75bcab1e-545a-41a4-8437-70d37569f798" chipset="acmgt2" name="VectorEngine16" />
+    <guid config_hash="aa0d857c62223fd7726768fd6746b686" mdapi_config_hash="978c2348694889b42b214ba7d8ec9c8c" id="5f1c4a7a-d5ab-45ad-a4fc-1e64a66839db" chipset="acmgt2" name="VectorEngine17" />
+    <guid config_hash="be08c2d336f9b910a163db072d9954d9" mdapi_config_hash="a8b59cac6524ca1bf4a914823336f2bf" id="c3522b36-01a6-4b3d-b95f-414dbc013ba6" chipset="acmgt2" name="VectorEngine18" />
+    <guid config_hash="453d3bf10389f64a30ff23119d524e73" mdapi_config_hash="74c9d01cd75a0ba35662724d7574bc75" id="3e973327-7b3f-4168-afd9-b244050e9ce7" chipset="acmgt2" name="VectorEngine19" />
+    <guid config_hash="8d5b17cb47ba8ef07ee67e0a03da7f46" mdapi_config_hash="0132162d83ffd060b15ce2a3a1205847" id="71d2d15b-f26c-4978-908a-f60275fa3562" chipset="acmgt2" name="VectorEngine20" />
+    <guid config_hash="3504978153cef2ed99ab5b6c5506a760" mdapi_config_hash="a26b067756b6e139ac0035798b700b56" id="83cf4cf3-b666-44df-8702-7fc3e907164a" chipset="acmgt2" name="VectorEngine21" />
+    <guid config_hash="8279b9d7b435713d0ef2455e2b2620c9" mdapi_config_hash="699e79fd83998857a2c22dee7e8a7849" id="c6b408ba-0479-40cb-8326-0fb1d709a261" chipset="acmgt2" name="VectorEngine22" />
+    <guid config_hash="0ded5bf2b82cbc2e374f5f10a1acbbcf" mdapi_config_hash="4bc6f9a99947b8e2c8f3f22bb7384a88" id="1f43061b-db78-405a-9246-6df8ff0592f4" chipset="acmgt2" name="VectorEngine23" />
+    <guid config_hash="753fdd40d26e85ee9ddabccd09669466" mdapi_config_hash="9911dc09ae10e843471b7f0c593e4c7e" id="7aa880f9-6185-4b35-9d71-45cd71099d1c" chipset="acmgt2" name="VectorEngine24" />
+    <guid config_hash="b0c1a0c378760939b8256d7e938293f0" mdapi_config_hash="945af4fdfa16f29c690ff661d34cf3e7" id="35c22c75-f1bd-4740-854b-b7248e45bb84" chipset="acmgt2" name="VectorEngine25" />
+    <guid config_hash="53c9b294cf264f7e353f78c5e848f599" mdapi_config_hash="852ad010914e52492741be89771f4064" id="208fe223-385c-4961-b2e7-cb44f3612b79" chipset="acmgt2" name="VectorEngine26" />
+    <guid config_hash="3c03385c40740a43986a122f91857d73" mdapi_config_hash="0b98639ab5b8b7014dbc10e836bf2602" id="b72101b8-7ef1-4bd1-ac6f-5e9ac5d098d6" chipset="acmgt2" name="VectorEngine27" />
+    <guid config_hash="a0fefb1206292de24e74f6b86949c40d" mdapi_config_hash="cf80bcfa7ca9f94694d760907758b7ac" id="fdd412a9-274d-46ab-a27f-f3e107321d24" chipset="acmgt2" name="VectorEngine28" />
+    <guid config_hash="c83a1985f4911340d74058a02608b8e7" mdapi_config_hash="808fc2c7839310903946d7ef4a711d52" id="233317d4-03cf-4497-bb57-f9690bc057f4" chipset="acmgt2" name="VectorEngine29" />
+    <guid config_hash="dce85362b607b037302e4c5edbafff01" mdapi_config_hash="8f44b8aa63bc25eff9cc7e0e3a2923ef" id="c11f8f0b-35fc-45de-b8d9-06664fa2b65c" chipset="acmgt2" name="VectorEngine30" />
+    <guid config_hash="78bb705aaa2bfb24dbb04e49b0c98e11" mdapi_config_hash="a85dd41fa704767d39d58bf4d38fa062" id="413fc3f3-9886-46d6-ab81-8cd6537f20e3" chipset="acmgt2" name="VectorEngine31" />
+    <guid config_hash="bb9fcaea31e699a775f9527fe6f95d5f" mdapi_config_hash="e42394558eb10838b53e0f3eac7ee73b" id="fc0b9614-6c1b-4e90-976c-41dab7ef47aa" chipset="acmgt2" name="VectorEngine32" />
+    <guid config_hash="e90db5a8c253e1ea6fff28b0dd71f6c1" mdapi_config_hash="0764250e1a62c6ab04c8e6f8caa99d30" id="fc0d31b8-0d2d-4674-943a-3b2929dd7053" chipset="acmgt2" name="VectorEngine33" />
+    <guid config_hash="ff1dac84bb82a5c4a2a606e46fd82ba7" mdapi_config_hash="9c9f90348b4a34f23b3160dbfcb8a618" id="0b91a434-3d1a-44b4-aeb8-c0fe350f4ef0" chipset="acmgt2" name="VectorEngine34" />
+    <guid config_hash="5d2c1001983d6ffbe9a9a30f78767346" mdapi_config_hash="701a7a4c7bfba1be149fb8a46f75b93d" id="bf1e00b6-18c0-409e-8d2c-8105be297da4" chipset="acmgt2" name="VectorEngine35" />
+    <guid config_hash="6e4e00bee5dc27d0659e48084a4fa088" mdapi_config_hash="5d4803d0a2779c18f32c873a0b3689be" id="bbb25709-1345-473f-8233-6df9075eacda" chipset="acmgt2" name="VectorEngine36" />
+    <guid config_hash="c4809b4f9dbd405691ebd29dea153aa2" mdapi_config_hash="8d1002c55a03d16517de67b4b8970d12" id="fc1c6f5b-60ad-48c8-b0b7-ed9328548c7a" chipset="acmgt2" name="VectorEngine37" />
+    <guid config_hash="1ec98f7213f07aadb3317a28f4f5d47c" mdapi_config_hash="ca1807be545f1637d1a8d037fbb1732a" id="39a71cf8-2d00-49f4-b8fb-38da2b23da30" chipset="acmgt2" name="VectorEngine38" />
+    <guid config_hash="7ad328b15bdc86e72c437c7768a7953c" mdapi_config_hash="d9ea9178593ec733d2ab21c736decff9" id="d538856d-b249-46ab-b850-9058093d45d6" chipset="acmgt2" name="VectorEngine39" />
+    <guid config_hash="d3f8cdb20e25c5661c51143cc787973e" mdapi_config_hash="2c0b7be0e7cf660440ca3156fb665fd2" id="7392b735-c76c-4e4d-b936-8ec5fc8877e6" chipset="acmgt2" name="VectorEngine40" />
+    <guid config_hash="f8bccc509994dd2ffeb3f02d85d73497" mdapi_config_hash="94ac6d1aad6546de0000ffa2074dd391" id="02d21db0-db5d-4eae-9ffa-8fa1603ec8f2" chipset="acmgt2" name="VectorEngine41" />
+    <guid config_hash="8b936c07e7e00b9d14bbcd97f90514af" mdapi_config_hash="9ed0290565f072523fd331c876fa7daa" id="47b237c5-ed48-465b-b869-0d7ef59a6982" chipset="acmgt3" name="RenderBasic" />
+    <guid config_hash="47dd4aee9ef5ba2d15e61d25f735d1d4" mdapi_config_hash="c4c86e8bd7e0cfffa7c553517340292a" id="1643fb69-a674-4438-8b44-840e988877bd" chipset="acmgt3" name="ComputeBasic" />
+    <guid config_hash="da49b5c7e497eab30522295f416dd84a" mdapi_config_hash="80f802eb9434e078d1c158be06940d88" id="a4b6cfe0-e514-49d2-857c-38f3487ea62a" chipset="acmgt3" name="AsyncCompute" />
+    <guid config_hash="1a28d05d945714b099a9417181b72962" mdapi_config_hash="0cdf3168ffd88a84c2a42d4c62567189" id="026653d5-37d2-4970-bffd-b1c64dc03dec" chipset="acmgt3" name="XveActivity1" />
+    <guid config_hash="3edc7a1a8227edab55da46bf38486de8" mdapi_config_hash="d02864c6730c87e0eefaa65e0cd7bf9e" id="a20872dc-9d91-4ec5-966b-3ae75cb581b7" chipset="acmgt3" name="GpuBusyness" />
+    <guid config_hash="fbe20d97611b26288a6ed0b37280dc6c" mdapi_config_hash="aa1a7c5dbe73c2f8b180f5d1f5c08a37" id="7389b9c9-de73-468d-83a8-b27776215e6b" chipset="acmgt3" name="TestOa" />
+    <guid config_hash="c13bc9359bfc67b7117c9c6dbd41fc5c" mdapi_config_hash="7b69d2b467cea3aee9e62d74f18124b1" id="ba8ef361-332f-42f2-9c66-f8531db5e511" chipset="acmgt3" name="HDCAndSF_Slice01" />
+    <guid config_hash="90a247f2963fbec55553a58570e4f943" mdapi_config_hash="bbf6cab5fb838e4fc549da4429fcea32" id="a950a603-f683-4f26-a83d-a7ebbe218afb" chipset="acmgt3" name="HDCAndSF_Slice23" />
+    <guid config_hash="bd68a2c58e93fb61cc76c45454a08bf0" mdapi_config_hash="7c434f268899bd187788181bc4053e88" id="60f4dc32-a7b6-4301-8d34-be04b1c94e38" chipset="acmgt3" name="HDCAndSF_Slice45" />
+    <guid config_hash="ef9df4e9e10249053defc29a9cc48275" mdapi_config_hash="0bf87ccd7bc6cc3d85799ad4ef026d36" id="7666a6f3-801d-4082-ab47-f534b4dad494" chipset="acmgt3" name="HDCAndSF_Slice67" />
+    <guid config_hash="be7c8bd832a03d8843534873315435af" mdapi_config_hash="35e02e355c5baadda8a831816b16beb9" id="5357c0dc-c0cb-4ee0-bb6e-2d0882d357a6" chipset="acmgt3" name="HDCAndSF1" />
+    <guid config_hash="d5f23a2a2976e3f3db0f2b55bf55ba03" mdapi_config_hash="2af304e278af427227161dc1380001ba" id="b0c45d01-03a9-46c2-a04f-2c6a7a5d73d7" chipset="acmgt3" name="L3_Slice01" />
+    <guid config_hash="00e5a514ab3f572dfa3f1bae37bc1e09" mdapi_config_hash="e2ed813bf771f8ecb58f17bf4338cb3e" id="0c42d17c-81b7-4058-9864-65db72b70e27" chipset="acmgt3" name="L3_Slice23" />
+    <guid config_hash="a554ae599dd34a41a7ea731bef7dd856" mdapi_config_hash="b2894c23bec6f8251cc10fe3be840904" id="59ce881a-3c51-45e0-96b4-3b565220f3a7" chipset="acmgt3" name="L3_Slice45" />
+    <guid config_hash="7b94162b98c8e5709f7534444cb32e97" mdapi_config_hash="7b911c756e648a46609196d73da56254" id="36b86585-1933-4c0f-9fd0-6dfe61480d8d" chipset="acmgt3" name="L3_Slice67" />
+    <guid config_hash="e21864b05628f5843877fc3d2eaf5872" mdapi_config_hash="50c3b0b63a780149f9dbdb746f4ae456" id="99a4388a-a104-4bbb-b8b2-7b827644a16b" chipset="acmgt3" name="RasterizerAndPixelBackend1" />
+    <guid config_hash="861421d8e6ed14e3a127eeb638539c5e" mdapi_config_hash="a5ba86b63c0d436b33d07331f22c68c3" id="c5db2948-d89c-468c-b52e-f2323a099c92" chipset="acmgt3" name="RasterizerAndPixelBackend2" />
+    <guid config_hash="308dd99534327f723119073f609e96d2" mdapi_config_hash="e65d259a1e3e3e06d0b48d8b5d6baeab" id="d8d668a7-3468-4ff2-84ab-f285b2468295" chipset="acmgt3" name="RasterizerAndPixelBackend3" />
+    <guid config_hash="7605c737027b8fca919492cfb88d4281" mdapi_config_hash="c9ea1638381959f6d88bc15eda3e8430" id="0c4bf00d-3ee4-4804-9f61-5b78f9810d6b" chipset="acmgt3" name="RasterizerAndPixelBackend4" />
+    <guid config_hash="f27177db87efb799b2343da6887249b4" mdapi_config_hash="1a2531165876a41d2d264eefe65478d1" id="0eef4659-956d-4a4e-840c-dca20176165a" chipset="acmgt3" name="RasterizerAndPixelBackend5" />
+    <guid config_hash="4c62706cc1ce7cf4ecdb09776e4aea90" mdapi_config_hash="826f5e9b6e520a295dae09a873cce3cc" id="ac9c3eb4-c49e-4297-8126-3d0a78a056f8" chipset="acmgt3" name="RenderPipeProfile_Slice0" />
+    <guid config_hash="24fc40d811455cf7372c73b8b097a950" mdapi_config_hash="4be40435ee1b3802eaa28b962a495157" id="53434b4e-ae6b-457a-b337-c9ebefa86aeb" chipset="acmgt3" name="RenderPipeProfile_Slice1" />
+    <guid config_hash="dc91a8e7384850fe3d13bbf877c0afb4" mdapi_config_hash="058524f19bf713f668214398ac27c850" id="3921cb4b-32f1-4595-b51b-531651d6d89d" chipset="acmgt3" name="RenderPipeProfile_Slice2" />
+    <guid config_hash="96c047779d77b01be592b7bf0725daa9" mdapi_config_hash="0e1e95c02289d7cc6b6606ff7ee9cd1e" id="47924a4a-4cbb-4c9a-a186-efd3af8acf6a" chipset="acmgt3" name="RenderPipeProfile_Slice3" />
+    <guid config_hash="02dbd83ef5c6f69214d1e8021bf31765" mdapi_config_hash="8fc8e4ec970bf7490e91884761995195" id="ee1b4183-c89c-4bad-a11d-b91b60769895" chipset="acmgt3" name="RenderPipeProfile_Slice4" />
+    <guid config_hash="e8a46fabbb62401310d50dc1abf52505" mdapi_config_hash="cbdb7df86b5822e69718d2655ba1776f" id="a1534029-affd-453e-b8d9-2931505c5288" chipset="acmgt3" name="RenderPipeProfile_Slice5" />
+    <guid config_hash="9f396893409736d61f7bd7b60f2bba67" mdapi_config_hash="947cc529bb7bfae7a383bc2a06dcb911" id="26a82035-dadd-4227-a1b4-f7808081f10c" chipset="acmgt3" name="RenderPipeProfile_Slice6" />
+    <guid config_hash="b6b40f930fa055f2d6d3508f3216529f" mdapi_config_hash="d5238a45534700f4d129e99bf93fda92" id="71b5ebc0-874f-4ecd-b409-c387a5bb0543" chipset="acmgt3" name="RenderPipeProfile_Slice7" />
+    <guid config_hash="3d21c4c0eb01277553ddc566c7de81cf" mdapi_config_hash="af47c7b6e2c925a1294d975e93668a54" id="1fa63cc6-c791-42ae-9db4-4170daefe666" chipset="acmgt3" name="Sampler_Slice01" />
+    <guid config_hash="c2d3513a6f9372828f4eba9362839f24" mdapi_config_hash="92055c802a926c29679e7fb927dc3b76" id="c22bbd17-c8bd-4f7e-bb2f-4b045e41f1cb" chipset="acmgt3" name="Sampler_Slice23" />
+    <guid config_hash="1374ab11b0f433f1dc6e081647334a36" mdapi_config_hash="ddb8d3c8de077e60fedb2fea2db935cc" id="3946ded6-dff6-461a-a9cd-5291d9dcce51" chipset="acmgt3" name="Sampler_Slice45" />
+    <guid config_hash="ae0e334584fb700d164940cf4e644074" mdapi_config_hash="30df491a1b3e2b5bf70d84a4407418bb" id="6ab037fb-065e-4f01-b24e-5f425077189c" chipset="acmgt3" name="Sampler_Slice67" />
+    <guid config_hash="4e7aa02a87fb99fea30bc3edc4ee1c6c" mdapi_config_hash="173f234a8b0990b5bbc9d92080ce9bc6" id="f0294ed6-827a-44e0-9f79-1ddc22182899" chipset="acmgt3" name="TDL_Slice01_1" />
+    <guid config_hash="32462de2a55d983a095c140d2609df2f" mdapi_config_hash="d3f4c0c7edd1b89497679fb2cc9bc665" id="14477b8c-ad25-4351-8c67-e6411cb77bab" chipset="acmgt3" name="TDL_Slice01_2" />
+    <guid config_hash="ce6cc576f7a3cdc61121b39bfb9c4df1" mdapi_config_hash="be24d2201067d716eb72dd8774d7856f" id="6b48996e-1179-4955-bd28-d5aefeea1196" chipset="acmgt3" name="TDL_Slice01_3" />
+    <guid config_hash="f1b4051e216202e891eefa4dc071882f" mdapi_config_hash="5d73b7569997cdd6cad54f969e177b2a" id="6403c3b2-e302-4c1a-a604-7817e846ab2c" chipset="acmgt3" name="TDL_Slice01_4" />
+    <guid config_hash="2c30d81675fd855439242b99a22b16da" mdapi_config_hash="531a69fca4aa96a5ccfc4aefaec08c39" id="51d2c1bd-7432-411f-9095-ac97d55dc285" chipset="acmgt3" name="TDL_Slice23_1" />
+    <guid config_hash="ece261b3234c607e40bf5df3d0a835c9" mdapi_config_hash="f97c883cab7584a474510d14490475b8" id="32e32945-471f-4f17-bae1-9d96f9c54f8d" chipset="acmgt3" name="TDL_Slice23_2" />
+    <guid config_hash="fd11cad6d43ad39f8591c10cf6593bdc" mdapi_config_hash="462ad1e4812fca230fc447d26e8fa005" id="34804b9e-0d2b-4e97-ba78-5c2069bc9df9" chipset="acmgt3" name="TDL_Slice23_3" />
+    <guid config_hash="797272c16a8a55b09aebde9e3cd307f6" mdapi_config_hash="f70b0f0774bb4082b58db07e8967d5f7" id="97ca0de0-9d3b-4bdd-94f7-662113dfc905" chipset="acmgt3" name="TDL_Slice23_4" />
+    <guid config_hash="9b89697a77440e83dbfa355849c76fe2" mdapi_config_hash="d0d1ad642d1d30381cb71b75f3378dd3" id="f4ba49b6-37a1-4848-88d6-3c63cb8e1c12" chipset="acmgt3" name="TDL_Slice45_1" />
+    <guid config_hash="d7bafd2fc4ed422cd6e1bd0c30a387d3" mdapi_config_hash="07998d7c5a035d64ea9c0b5c4ee9e149" id="a6969313-fe82-4f0b-9499-b90c98e9ede7" chipset="acmgt3" name="TDL_Slice45_2" />
+    <guid config_hash="fecfb382a08d1fed003d14dd1f32b736" mdapi_config_hash="89efd128a656906c314d3dd905ddae37" id="8dd20826-657e-43b7-9bba-a48ef4db2d14" chipset="acmgt3" name="TDL_Slice45_3" />
+    <guid config_hash="024391d91887a202ab3ae699b2055c63" mdapi_config_hash="c93170fd7d84a471b003ab81f5cbe8f6" id="e479a02f-fc83-438f-818d-3e11e769fbae" chipset="acmgt3" name="TDL_Slice45_4" />
+    <guid config_hash="5af1421d9297050007520966b5e5c424" mdapi_config_hash="502e8637c7c9b672cd4ea529082e9c9c" id="deb1e6dd-bddd-42a4-87f5-c4bd8438a884" chipset="acmgt3" name="TDL_Slice67_1" />
+    <guid config_hash="e4fdcad7b2b16074c9c557052fbfafcc" mdapi_config_hash="e9af2a87b5ff750b024914edfad80749" id="0a6abc27-343e-4118-b17e-5c5121611b08" chipset="acmgt3" name="TDL_Slice67_2" />
+    <guid config_hash="1bbdad0fe147888cefa42c35843760bf" mdapi_config_hash="a0afe2ace5f2b1d6115ad70c760e7d07" id="67abb260-55fb-4c66-8469-db2f8700884a" chipset="acmgt3" name="TDL_Slice67_3" />
+    <guid config_hash="ba76d4c76de2f0d4075125116e2d6b6d" mdapi_config_hash="ceab4ddb2908866a598a47410bd7bc04" id="7c064e0d-b3ee-4159-9361-8d1da3158d39" chipset="acmgt3" name="TDL_Slice67_4" />
+    <guid config_hash="150f8985cb74ad2a5287cada74b6fa15" mdapi_config_hash="50a4f55c0059fd3b9a9c8b2cd104b971" id="5ae9db29-303b-4e74-8dc8-b9f2eb31aaa1" chipset="acmgt3" name="ComputeOverview" />
+    <guid config_hash="c62510f450f8a0cc5730759cdfbacd12" mdapi_config_hash="09bd91a8c4e0206fa870c4f24d220dbc" id="16047ddf-5ee1-4948-81dc-edbe26576ac1" chipset="acmgt3" name="L1ProfileReads_XeCore0" />
+    <guid config_hash="7b1eb3b7ed83436c982c6cc79575e139" mdapi_config_hash="35442e771c1923324d3d0691fdb9f302" id="224881aa-faa7-4d2d-8161-50dbb10026e8" chipset="acmgt3" name="L1ProfileReads_XeCore3" />
+    <guid config_hash="b74695f2b1086f0936360d6780a5c7be" mdapi_config_hash="9b4251c5bf70b194b4074e26442d2782" id="dc5ee653-2006-48de-8be2-e8b760a4369c" chipset="acmgt3" name="L1ProfileSlmBankConflicts_XeCore0" />
+    <guid config_hash="b8199134f6cd987db3932a1750d189d2" mdapi_config_hash="8e3a231108ccc00f81076f0c3631da5a" id="41302bd4-41dd-4c52-b250-569324d62f1a" chipset="acmgt3" name="L1ProfileSlmBankConflicts_XeCore3" />
+    <guid config_hash="70282042befaa3cea33250700bf0ba67" mdapi_config_hash="e479ab02e92a7d5aee5a6dfcf57282e4" id="a0369d50-1c37-4bf4-97a9-169c92b63483" chipset="acmgt3" name="L1ProfileWrites_XeCore0" />
+    <guid config_hash="154e3b786bc51d9a5bf4a3702bc8983a" mdapi_config_hash="02be7f02195c3e0122ed8b321ee1984d" id="ff386ef9-604c-48a5-9fc9-e2281bbd7463" chipset="acmgt3" name="L1ProfileWrites_XeCore3" />
+    <guid config_hash="166b6e6f5932d75a7a88705eb8a713c0" mdapi_config_hash="347992c13b141ef331caa118e0bfd05b" id="c027d083-6448-4ec1-9415-8a1ff807562c" chipset="acmgt3" name="DataportReads" />
+    <guid config_hash="fdd790eb59ca42388d1cebde55a24164" mdapi_config_hash="ce337b03a5e5ee5af8f503648f388a61" id="57e2e261-2715-4b63-baec-527eba9e06cb" chipset="acmgt3" name="DataportWrites" />
+    <guid config_hash="a1643e150afc0bab327e6028b6e6c585" mdapi_config_hash="529f4053bbd749fe0af1263cd18ee132" id="9e92a393-69c4-46fd-b038-e6183364d8c5" chipset="acmgt3" name="Ext1" />
+    <guid config_hash="9f94fa6d086bf98efe2870491a618d99" mdapi_config_hash="b2f34d69d307b0441de82d4bd0eef71e" id="e8621f59-b8d2-4e00-86a9-472e3848973d" chipset="acmgt3" name="Ext2" />
+    <guid config_hash="54f10148e09cf0e228b59ac34878cc1b" mdapi_config_hash="fb04b2ee7e2d3ca369e96915b99331be" id="12eee9d0-7d4a-495c-a3b5-7d8ab1b0fe02" chipset="acmgt3" name="Ext3" />
+    <guid config_hash="3c5affbee62f040dab3f589924c7c74a" mdapi_config_hash="803b021774ddfc1bda9665909a68a0d4" id="59c0b126-b2dc-4a97-818e-741e6355059c" chipset="acmgt3" name="Ext4" />
+    <guid config_hash="8b45a91a7a0ed26c9a885a56ec760db4" mdapi_config_hash="6fa30d2622d186f03947c2c8ee540483" id="9da5cb85-6e23-4896-8d99-1b8a87dd8930" chipset="acmgt3" name="Ext5" />
+    <guid config_hash="ffbe8e91559986856b0cef6a11999076" mdapi_config_hash="6ab43021269fdacc958899e92e8c2ed1" id="4cd5fd6b-e82a-44fc-a068-4debac13114f" chipset="acmgt3" name="Ext6" />
+    <guid config_hash="b936c002cbd2e3f13e156830f61819ae" mdapi_config_hash="13901e3adaadfc9bb5b5691b88bf1cdf" id="29eade65-5f7c-4b51-8006-66852e9f2181" chipset="acmgt3" name="Ext7" />
+    <guid config_hash="b00abd710b816154a71f296d7b577538" mdapi_config_hash="461f640fa828d836cb6d504557323406" id="859c2807-55de-47e0-aa30-320c23c9373d" chipset="acmgt3" name="Ext8" />
+    <guid config_hash="710439d97ba97a8a07573aac7c61a095" mdapi_config_hash="193e76601f9aa469188e9e66cab8033f" id="c9c488d0-950c-4a0a-a079-b299cd33aa6b" chipset="acmgt3" name="Ext9" />
+    <guid config_hash="9466fef3ac9944a2e9e80f74cbaac54a" mdapi_config_hash="9fa08150fd873ceea62fb500aca02fd8" id="4599426b-4cfa-442a-8a59-9eda3dd742db" chipset="acmgt3" name="Ext10" />
+    <guid config_hash="23627d1f747ff2d04aab280fc5fea540" mdapi_config_hash="ba02b567b92872e258d9f6bf82179dae" id="42107330-c266-42b4-aef5-5c2ab410edc4" chipset="acmgt3" name="Ext11" />
+    <guid config_hash="f9e8b10f87fb67d97a1238c9ba5e0488" mdapi_config_hash="b73a181e5ae3b9c36f1e9a2567a01d06" id="a0add3fe-f028-4e6c-b104-c369fabe2b09" chipset="acmgt3" name="Ext12" />
+    <guid config_hash="869b4754c1d03766ebf4ce8abb449392" mdapi_config_hash="ad24cb3846676c98edafde09ccc0b503" id="4aeacf49-91c2-41bf-8d9f-49233689e36a" chipset="acmgt3" name="Ext13" />
+    <guid config_hash="479273f0eb64a8f91423db730ce8190f" mdapi_config_hash="6f28806ee20baa48121f29b571a2367a" id="60e3a9fa-b807-4a8d-8a83-88705d05e2c9" chipset="acmgt3" name="Ext14" />
+    <guid config_hash="fe8af2de3976e29c7a4b156e1c397dea" mdapi_config_hash="5ebd58672087cec2ac70914b7464b00c" id="0aab7745-1e24-42af-9c96-c640e4f45aa9" chipset="acmgt3" name="Ext15" />
+    <guid config_hash="37cfa4226b0d1f7565c4998a7b54977c" mdapi_config_hash="5feeea46db9fbd815cfe49a768ca8c0b" id="97670487-9837-4cd2-9475-dea1d28d34fc" chipset="acmgt3" name="Ext16" />
+    <guid config_hash="e805dab51e3aaa79dc44d4df1c6c5e7c" mdapi_config_hash="816316a76f08723ec8984f6c9f35969f" id="2908914a-a836-44ec-a053-36a7ed383462" chipset="acmgt3" name="Ext17" />
+    <guid config_hash="f9dcd384d1a5366131c332ec80e2b502" mdapi_config_hash="81cbe9fcc1f58227bfd7a326a93fe425" id="34f121ae-5907-4fe2-a237-a36940510708" chipset="acmgt3" name="Ext18" />
+    <guid config_hash="99a6a96815df756f63b8453f5c362023" mdapi_config_hash="17a3903bc7086555c26bd833011aacb8" id="f3893d2b-10f8-48f6-8417-6ed748d3dccd" chipset="acmgt3" name="Ext19" />
+    <guid config_hash="3beb840cb706eac193564144b0b294fc" mdapi_config_hash="3bcbd38d2de56e1e8460ca2aa33b2057" id="6b5ae61c-ceab-4202-b550-8430b037566c" chipset="acmgt3" name="Ext20" />
+    <guid config_hash="0e74bbbfc3314d55c57a9a31fa62090f" mdapi_config_hash="8ced7baa4663a83955a8be3b0ef96767" id="66bbd7d1-f6a2-4189-99f7-8e360e28be45" chipset="acmgt3" name="Ext21" />
+    <guid config_hash="2d4e27ebf0a9576258db9d74fb21a435" mdapi_config_hash="05e77606cd218171cbb9de6f30c0c4fd" id="b8a9f40b-5906-46b2-ad95-8d36eb9cf998" chipset="acmgt3" name="Ext22" />
+    <guid config_hash="e559e4b46c6a421edf03336ced0c35ee" mdapi_config_hash="ae7a2683c57a1c9cbd3901bda793054f" id="e5d242d2-5bf6-4380-8f7c-cb0ff2372733" chipset="acmgt3" name="Ext23" />
+    <guid config_hash="0c31f3c82b04f826ceed9ce3bc5a8ac2" mdapi_config_hash="09536faf7cdef01594ccec0fb36ea5c8" id="b6096e7e-a2c9-4622-9bd6-2169cdebc490" chipset="acmgt3" name="Ext24" />
+    <guid config_hash="bd7a035b465390b0db66014ec02ae0cc" mdapi_config_hash="ca7a8895bd4dc7fee5085342b3cee3d1" id="c7b9f883-12c5-470c-ab75-790961e66be6" chipset="acmgt3" name="Ext27" />
+    <guid config_hash="e57bd76cda7013438599e06775a38424" mdapi_config_hash="657be33342d34620f1328dd6641abe52" id="78161cec-30c8-4b7f-aab8-6f13139f454e" chipset="acmgt3" name="Ext28" />
+    <guid config_hash="f0cd8d86eb9759ac70a151a3333e1746" mdapi_config_hash="a2fac04e9bfb6ed558c82794c473d940" id="e9ba5301-d2ca-4978-af6e-19096ad16dbb" chipset="acmgt3" name="Ext29" />
+    <guid config_hash="c8fda80bc6b18ccef9e0794115192e6a" mdapi_config_hash="564254c6a7e517a15f745499c8db8289" id="cae0eb96-c3e6-4a3a-83e2-e939146602b5" chipset="acmgt3" name="Ext30" />
+    <guid config_hash="7c3d63d19ced2bfb5f90641b82059e74" mdapi_config_hash="d7c7b08f86b84138391cf7028e16f15b" id="002950f1-a311-45f9-b88e-2276f42d8f92" chipset="acmgt3" name="Ext31" />
+    <guid config_hash="68198cd360b65e94c3a14982af25e346" mdapi_config_hash="0b5ba226c73f8f0d258d58d905739cdc" id="98b27683-8d7c-4b3e-92d9-3c3683b2cc38" chipset="acmgt3" name="Ext32" />
+    <guid config_hash="924bf6aa128885464ec08c2a2c509fb1" mdapi_config_hash="94670fb695cc213296897fd0aadcba3b" id="57d03ea4-1959-4b4f-8a32-abaa96246b1d" chipset="acmgt3" name="Ext33" />
+    <guid config_hash="7c45181446f0a2711e42504a3eff276d" mdapi_config_hash="5c89bbe4a73f400aaadf5f4fc7038edd" id="50fbda4a-d852-437a-9178-432d1373111a" chipset="acmgt3" name="Ext34" />
+    <guid config_hash="01bc753ac8b818c9553a3c2b46572cff" mdapi_config_hash="c322cabd6a94063d3bfc006eabb6b9f6" id="8357ba54-bded-48d6-bcb4-0f14a2da9b7b" chipset="acmgt3" name="Ext35" />
+    <guid config_hash="e58187653ca45eb169444001156587c2" mdapi_config_hash="e782335fe23bacf00b137a48e03dfb8b" id="32c9e67d-11d7-45f7-ae53-40fe6349cb5c" chipset="acmgt3" name="Ext36" />
+    <guid config_hash="92aee11e04f6a357bd584548f2db76c1" mdapi_config_hash="96c1cf144015957174b858d363f8cddc" id="53553df5-1d80-4d9a-ad30-d72ef4503603" chipset="acmgt3" name="Ext37" />
+    <guid config_hash="8251fefa48866a2b0e306d860cdf28b9" mdapi_config_hash="b8d03be6087d8b8df12e9a062881154d" id="5e66948b-68ab-4208-93f4-44c4fdd1378e" chipset="acmgt3" name="Ext38" />
+    <guid config_hash="0716571ce6c52d873bbbd96871b6e56d" mdapi_config_hash="4ab127be8ef75138827eb3586e22684b" id="0e04ae60-2cb4-47ea-9b5b-111c25dd9929" chipset="acmgt3" name="Ext39" />
+    <guid config_hash="ed0b18e9cae979707f2965013354576b" mdapi_config_hash="87059afd5280ff8dfb1094ec31000851" id="46c8c61b-b6e3-4ea7-95d9-3f9861d17133" chipset="acmgt3" name="Ext40" />
+    <guid config_hash="d350cf543099f4ab21d03a0da685dd28" mdapi_config_hash="fd104325e5ac6a1ed0664a04cb8c8d13" id="3c7fdece-0f76-411d-a7e3-583c22965830" chipset="acmgt3" name="Ext41" />
+    <guid config_hash="69060132f8453292062084b0f28e0a3f" mdapi_config_hash="2b80dc3037155b6c41f009922acce1f2" id="2324903a-33fe-4512-870b-2f8316f85ba1" chipset="acmgt3" name="Ext42" />
+    <guid config_hash="9a07cfe8a80f584ad7299227fd71bf56" mdapi_config_hash="4dad1970865036cb0291eb2d8055fda5" id="cc074ca3-3e9f-4924-805e-27d69dbf2bbe" chipset="acmgt3" name="Ext43" />
+    <guid config_hash="6cee229aae0ae658f9bb7be966c6b2cf" mdapi_config_hash="bdb9c5c12f4c70ab6a71f3ff5fc9226b" id="3fd7e51e-732e-41c7-8f9d-b81500a438cf" chipset="acmgt3" name="Ext44" />
+    <guid config_hash="d350cf543099f4ab21d03a0da685dd28" mdapi_config_hash="fd104325e5ac6a1ed0664a04cb8c8d13" id="d71b7626-b7fb-49ce-b512-22030d666820" chipset="acmgt3" name="Ext45" />
+    <guid config_hash="69060132f8453292062084b0f28e0a3f" mdapi_config_hash="2b80dc3037155b6c41f009922acce1f2" id="e87db70a-571a-4cc6-852f-8929fe2404ca" chipset="acmgt3" name="Ext46" />
+    <guid config_hash="82de07fb4704c370229487a5af67e6c8" mdapi_config_hash="a1b09192427dd154d35e069529e62a75" id="f31ec8fe-7987-48fc-ad8e-ebe0b25374b2" chipset="acmgt3" name="Ext47" />
+    <guid config_hash="80a0334e830ae1b10716cd97cf93cfd0" mdapi_config_hash="b22965c4e2693f34d58f99627beb6bea" id="add101d4-45eb-4394-9c22-66da145c4731" chipset="acmgt3" name="Ext48" />
+    <guid config_hash="626eff8d7913c56ee819229d18db5c30" mdapi_config_hash="d7f98c9735c1e339cbaa060757493d86" id="da4046b1-521a-43cb-8328-c219155e59e5" chipset="acmgt3" name="Ext49" />
+    <guid config_hash="23421f72af964cb1b063682544a004f9" mdapi_config_hash="a28604f4d352090650767df2ddb49130" id="fd655951-07ee-4a28-81d1-fbb62cea041e" chipset="acmgt3" name="Ext50" />
+    <guid config_hash="e62afe73b62a2074994b2765026b1400" mdapi_config_hash="fda45236ac8f7a06213930142b08e955" id="22089a93-123e-4b18-80c6-5aca789ae5a6" chipset="acmgt3" name="Ext51" />
+    <guid config_hash="ebaa8676e4b6545a0656d4374fbe75c4" mdapi_config_hash="bf07dc61b50fd7664471ac0aa6c6d9b7" id="b8d0b133-7e12-4338-adf3-41034b6a37cd" chipset="acmgt3" name="Ext52" />
+    <guid config_hash="d5a0bc06f81bbc311e518b3865b8ff99" mdapi_config_hash="d33a0ab0b321a4d047bf4ecee53c372a" id="3012f753-92cb-4f10-b5a8-437ac9bb77f1" chipset="acmgt3" name="Ext53" />
+    <guid config_hash="17ce948dd489497b0a6aa0853af5582e" mdapi_config_hash="558a1d423e58b4e30c24be90e9d270da" id="f585cd71-e1d5-4c8c-912e-399f0680c73f" chipset="acmgt3" name="Ext54" />
+    <guid config_hash="dd75dacccdc2f59c3e32630d4e4e6a48" mdapi_config_hash="a85d49cfa9a3fa85805c66a0b6364f34" id="f16c9548-0371-4a07-9522-44f9289e2756" chipset="acmgt3" name="Ext55" />
+    <guid config_hash="50575df7222355bc135d537981a8cb86" mdapi_config_hash="fecc044bffd882d37c7ca68f3034faf4" id="806924c4-d2c4-4861-b2cd-6d3ce66586cf" chipset="acmgt3" name="Ext56" />
+    <guid config_hash="cfaa3d7b6bd1750f1e655064c69c192e" mdapi_config_hash="b7752457c711b992a0ae06fc51cabc13" id="4a24b85d-8511-468b-98ca-9944600637a8" chipset="acmgt3" name="Ext57" />
+    <guid config_hash="f1dfa2d497a1e15a9574f4d50ae7f3c2" mdapi_config_hash="7f9610d83dd0262617bd18a41ecdaf19" id="3573dd0a-8981-45a3-85e5-7850871e9eca" chipset="acmgt3" name="Ext58" />
+    <guid config_hash="822b964444c0aa2729f28a9e7207cf36" mdapi_config_hash="defbf4fa931ca64eb00ae2495ba41ce5" id="4dbde56d-e0bb-4f3a-b2a7-0a87baf4462e" chipset="acmgt3" name="Ext59" />
+    <guid config_hash="cfaa77158c09bbc1c8f3e9b55a8cb12b" mdapi_config_hash="f43225dc9087929e04df9e8b6b9cc059" id="d24e53df-6340-4a08-8449-54d69fdad628" chipset="acmgt3" name="Ext60" />
+    <guid config_hash="f8c77895247830f5c79e6d9eacf2ac22" mdapi_config_hash="229aabfcd005db922c7d0288be1b8e6d" id="0e24a924-838e-4f24-bb83-1c6aa4e9a602" chipset="acmgt3" name="Ext61" />
+    <guid config_hash="f496a0585ed23c58ce5e1179b3805335" mdapi_config_hash="8d4707a5e54d8d995aa0ceb56df33cbe" id="c6f5a056-c412-4425-9877-a2309ebd61bb" chipset="acmgt3" name="Ext62" />
+    <guid config_hash="b1b13d01fa5d64700356f30e38421c70" mdapi_config_hash="f307816438af8e7d1c286af52e808091" id="e301dc02-b677-468a-9038-c741af4d91ed" chipset="acmgt3" name="Ext63" />
+    <guid config_hash="fb66f4cf1cbb95e3830f789f6205c424" mdapi_config_hash="496a4d095c269fa475d2df83b7ae6c6d" id="e595dd56-de7c-40ff-bea9-b9a15d893b11" chipset="acmgt3" name="Ext64" />
+    <guid config_hash="11fbb489b019213d0976996f7ed79a42" mdapi_config_hash="d4a632fb75cd46bbb378d316e84fcc1f" id="7c8329df-0d11-4685-9762-8530d350aa19" chipset="acmgt3" name="Ext65" />
+    <guid config_hash="d92c158ecd62bb4714d572b778db25e3" mdapi_config_hash="5a9b2f782bedf2efb54d8f61fad49f97" id="d02aa389-0a8e-42f0-b62b-7b8091f23fe7" chipset="acmgt3" name="Ext66" />
+    <guid config_hash="d7954beb6cca56e15f26b7d656496a85" mdapi_config_hash="edf2f24a796864fb98dc293e33d1997e" id="cf345893-06de-44cb-9d0b-3dde2f62947d" chipset="acmgt3" name="Ext67" />
+    <guid config_hash="2889d5934a0548b8acff5d24cdd80cb5" mdapi_config_hash="5db943c9912ec93ee8b881420e3d02b8" id="23bd55f6-39b5-48af-8cf8-b7c136e60052" chipset="acmgt3" name="Ext68" />
+    <guid config_hash="323917748f5c5fb2229f377689efb0b3" mdapi_config_hash="f68d6289d1d2c886e8b00c554e0f9da5" id="464517de-6883-4550-86c5-4e084b2a34dc" chipset="acmgt3" name="Ext69" />
+    <guid config_hash="61c3ab518933d783a93b6b653a5863da" mdapi_config_hash="23c9f4152b2a36e96112dd6c7773ed51" id="ccd967c5-9110-4c66-aabb-435114ebf67a" chipset="acmgt3" name="Ext70" />
+    <guid config_hash="15d5c29db09c1aa5f0f4fc3d37e28a0f" mdapi_config_hash="536d12ee63fb8a3f99c90b6bcebc9356" id="df75cd02-66d3-41f2-96ad-d53003d4b0b8" chipset="acmgt3" name="Ext71" />
+    <guid config_hash="a5d1cc7c918a4bb15f02d993f301c54d" mdapi_config_hash="7a23265287e746eeffd5b989648e1c49" id="adfba67d-3d40-4b20-92a8-70d11c8cffbb" chipset="acmgt3" name="Ext72" />
+    <guid config_hash="7b03decc7354fcf4b9948f21ea1814dd" mdapi_config_hash="4c7c0a9e72def2c40df31ec78d5db5d0" id="e13dd0e5-e6ba-4a86-8e32-d5971abd8571" chipset="acmgt3" name="Ext73" />
+    <guid config_hash="7f105ea5ba4dfa60c335817d9e557b5b" mdapi_config_hash="27bf86804a8a1fe1359b17da811c955e" id="e75ed2f8-19f0-44d0-ae03-ca2a8afbdbc7" chipset="acmgt3" name="Ext74" />
+    <guid config_hash="2a9c34943536001a78b445ca705cd282" mdapi_config_hash="1998d8ec2ce54e995767b6f2c29f5021" id="ddac10e6-c812-4b70-a61e-e6f9e43e47d1" chipset="acmgt3" name="Ext75" />
+    <guid config_hash="237bc1ec8c7908c0a6ac8ab969662db2" mdapi_config_hash="35f266883a1cd61afcf032947e4a8357" id="8eea86e6-a456-499a-9c4d-dec0dcfd9a8c" chipset="acmgt3" name="Ext76" />
+    <guid config_hash="73ccb749b6eadff0c48498a7ed95b21d" mdapi_config_hash="ba6b08cd6995d20c01cdc72c045a4810" id="fedc5df4-a74e-4de8-9296-96571b72092a" chipset="acmgt3" name="Ext77" />
+    <guid config_hash="2861fdca71a2e27e0c84ff51e1253626" mdapi_config_hash="bc838583640434dcd7be36e12eb046fe" id="c144b291-ed97-49e3-beab-2bbbf83353e8" chipset="acmgt3" name="Ext78" />
+    <guid config_hash="f29a26deb29077965e671d3b01846fea" mdapi_config_hash="c6f067cabf68a2d4d0a1547ba840a7cf" id="15f74cc9-7e20-46fa-bbd5-f8f363c99d8d" chipset="acmgt3" name="Ext79" />
+    <guid config_hash="cb40ec655a09e715c889d4457f568e73" mdapi_config_hash="34ee87683aed335a132e01eb0e6c1a97" id="8a2cc3e1-3df7-4f4a-ba68-73bd1fd0c371" chipset="acmgt3" name="Ext80" />
+    <guid config_hash="461d97da5eada7abb202d113e9e2e32a" mdapi_config_hash="cf56d27580ed6b8e4ad601986b03ce28" id="44a0a4a3-e4c3-4a48-bd62-47154ca53a10" chipset="acmgt3" name="Ext81" />
+    <guid config_hash="35dbde72335d00a390936c8cde8fe70c" mdapi_config_hash="b48b92bba46f01afc1ed4d7d69cc28c1" id="66cd1f83-fe8c-42ef-9b9b-6674a054e256" chipset="acmgt3" name="Ext82" />
+    <guid config_hash="12fa33d37eb49483a2370e74d3b746ee" mdapi_config_hash="a6c2b09c5a5ece81eb893c6e5577ce95" id="77059291-c7bb-4048-ab5f-ab239b75f8f3" chipset="acmgt3" name="Ext83" />
+    <guid config_hash="e0777d31ca42cd4aea51c29c70f03c0c" mdapi_config_hash="89430c680e032728fe03be3416302f24" id="73d8a4d2-dadb-4b04-b368-d21f1587206d" chipset="acmgt3" name="Ext84" />
+    <guid config_hash="ff22d59c4988a669c4ca1c194bb4fe87" mdapi_config_hash="cd4e6f442fcafe9996d661b1a0c790f1" id="463c75f3-e572-4f30-a6e0-86635e2e2bb5" chipset="acmgt3" name="Ext85" />
+    <guid config_hash="028d6c304bef8e82e2a98202a62bc65c" mdapi_config_hash="31b789c9435d232974f70d34af86040d" id="41c4ea0d-eeab-4e80-b8ef-e0bfbbf178e4" chipset="acmgt3" name="Ext86" />
+    <guid config_hash="c5ede8c124acdcd5a61be05558cd4fea" mdapi_config_hash="d523420703a2823e457e861f55a804a1" id="2d7cb182-179b-4d5e-ac1a-0fb084054a79" chipset="acmgt3" name="Ext87" />
+    <guid config_hash="b213e48574638fa5177669173e074dc2" mdapi_config_hash="1d8969b5299c013e57787599f68c17b6" id="00c41d05-9419-43a2-baa7-157ba0558803" chipset="acmgt3" name="Ext88" />
+    <guid config_hash="d3974751228d11dda0a8aef71a3ac051" mdapi_config_hash="192626eadbb309815b071197c14e57a9" id="743a4a2d-4cbc-43d2-870e-bb2ccaf85fef" chipset="acmgt3" name="Ext89" />
+    <guid config_hash="cdbfcd0f3b019182d1d7710c6542d108" mdapi_config_hash="81d2af7c8c3bac94bb333fbe25a5db1d" id="2d4814e9-bbbd-474f-8705-e84b358bb946" chipset="acmgt3" name="Ext90" />
+    <guid config_hash="7398ec8ec10b4118411eb63a73cabf1e" mdapi_config_hash="c3962b786adb24ee55256d74354cb506" id="cdac43dd-b724-412a-bba3-cbca3655f487" chipset="acmgt3" name="Ext91" />
+    <guid config_hash="c2860841bcf87bc80c791f8cd5ce4b57" mdapi_config_hash="7ec8ede24d1826a31c0b54c33cf77c96" id="e8486fa5-fdf7-4629-8f90-cf4365951bab" chipset="acmgt3" name="Ext92" />
+    <guid config_hash="1c308ce9d8223ddab13e74b53f6543bc" mdapi_config_hash="1c3c6340b8a33b74164f72afbd9c4466" id="808604f1-6872-4afa-9b81-47df20489b9f" chipset="acmgt3" name="Ext93" />
+    <guid config_hash="c534f9ce5643a5c1f82fd447f6f811a0" mdapi_config_hash="7e143f96888f3f901d3ef29b0051d6a4" id="a06f53f5-e778-48a7-9bcc-d6aaf9fd6e7b" chipset="acmgt3" name="Ext94" />
+    <guid config_hash="b5bb8c05ce7ecd9517c9353f2f343326" mdapi_config_hash="9ab1d180fb9b3475c3851aeab291d70f" id="cef87716-edfd-4d06-985f-1d04654dcdca" chipset="acmgt3" name="Ext95" />
+    <guid config_hash="06a3f9c81f72f742cef21c6ca9292ee7" mdapi_config_hash="ae1edc3e88a2adb47b430c4ad1e133d7" id="20e3d0ca-8d80-4590-997c-818512c59e5d" chipset="acmgt3" name="Ext96" />
+    <guid config_hash="b875b3de3cf6dae445c6740562c6cdc5" mdapi_config_hash="8cd456b79220208e265af96618575206" id="37fc43b8-fce9-4eba-a268-aa8242bba6d7" chipset="acmgt3" name="Ext97" />
+    <guid config_hash="8e8696e752280e5a7db6aa77df4e3abc" mdapi_config_hash="35cb89b50c514a30297311098af214d0" id="c962e059-3012-4bd3-98e6-b25c7306bb38" chipset="acmgt3" name="Ext98" />
+    <guid config_hash="cc7ac733f293d9c51600a6d4fd70f015" mdapi_config_hash="a946b36ee79b8187ae41322ae99a76b3" id="5462b931-faf7-4351-abb9-e31a93cd0c67" chipset="acmgt3" name="Ext99" />
+    <guid config_hash="893a39a2d8da6f65218ae0cf0025a0a0" mdapi_config_hash="9aaf007ec824a6af7d8be3137a3b8672" id="2f212e4b-0dab-40cf-9b07-2ca40d7f8c9c" chipset="acmgt3" name="Ext100" />
+    <guid config_hash="cb4dc52a2bf86e67f48f077c166479e7" mdapi_config_hash="fa57c59964635bef85cffbea33d7ee53" id="945c799b-3062-4a46-995a-2527d8c6a550" chipset="acmgt3" name="Ext101" />
+    <guid config_hash="527b989139ead2032ac8f2b874b9e9df" mdapi_config_hash="bfe412fac3b507676033da725eb82af8" id="c2e93414-bb8d-43b4-a992-97f998abfefb" chipset="acmgt3" name="Ext102" />
+    <guid config_hash="aee88df868b30fa7488302db1e4fd0ac" mdapi_config_hash="356090d14edf7f8849b559fa7ca92b01" id="fd4fca73-0631-42d7-89c1-0821a3e0f3c3" chipset="acmgt3" name="Ext103" />
+    <guid config_hash="837d50871fbcc0cda495ef2a8fe6d461" mdapi_config_hash="fbf11624f8554093b1412c972bd39b4a" id="4c457fa7-afa6-4ab4-8489-e6eb0d7fbfa7" chipset="acmgt3" name="Ext104" />
+    <guid config_hash="0f35f81a0bffebfdc28205c7a630cf02" mdapi_config_hash="5c68fc6928ac825013b768507801da6a" id="218b02bc-7e36-488f-894d-9d97b9501b1a" chipset="acmgt3" name="Ext105" />
+    <guid config_hash="1b019640ab420ec7c73883c7552e2f23" mdapi_config_hash="f2f907f48a1a91dde1443185e492ce35" id="673836b5-04ac-405b-b85c-cbe99892ba08" chipset="acmgt3" name="Ext106" />
+    <guid config_hash="04d0791ca98cba20bfe35fbe00043094" mdapi_config_hash="7192753c455583f9c7c95b820383ac4b" id="3fa5d581-bfb6-4afd-a13d-9af9db03938f" chipset="acmgt3" name="Ext107" />
+    <guid config_hash="2dc490d3f0697666abf2487d605e2713" mdapi_config_hash="f5852fd36efbacb47bbb58741580ef42" id="516bd2fc-3b14-4700-97e5-988aac08db2a" chipset="acmgt3" name="Ext108" />
+    <guid config_hash="468be2e442908387b26d0bca4cbc9d22" mdapi_config_hash="1448c28c78499c18b4706c7c135e61cb" id="6897c9a4-ae80-4001-915e-9201413ae86f" chipset="acmgt3" name="Ext109" />
+    <guid config_hash="532b32de466df715cfe3a610b572117e" mdapi_config_hash="6436a70677ec6cc10fe00e9374aca7e3" id="3922417a-c9a0-41fd-83ee-1de270990952" chipset="acmgt3" name="Ext110" />
+    <guid config_hash="c4e2765ad8af171bf2572e41f802740e" mdapi_config_hash="d974d4dc2d6298a4ce503c62bb4cd953" id="2121affe-e3d8-496f-89cf-e9b21861ca69" chipset="acmgt3" name="Ext111" />
+    <guid config_hash="9b0c25d90962eff92fbe4e925d92b3fc" mdapi_config_hash="b87d4051abf5c7d528ec411ab07ed9b6" id="68cc12ab-8876-4071-8e2b-ea662e59d9ee" chipset="acmgt3" name="Ext112" />
+    <guid config_hash="c72076b5ca226c52bf624c2242f77183" mdapi_config_hash="e3585f2c883e051588a5f9e0c506d8d7" id="35fe4526-b6a1-438c-8592-b98c00bd5776" chipset="acmgt3" name="Ext113" />
+    <guid config_hash="3b4e5a124ab2783815e3cc499a3481a8" mdapi_config_hash="5b8e85ff1803b31fc68af08adcf58aa9" id="1093f7ed-ac49-48d0-ae94-0985d6a59ad9" chipset="acmgt3" name="Ext114" />
+    <guid config_hash="067390742df0d5c9e6edaf14673bc0c6" mdapi_config_hash="df3bd134ee173e1014a9b9ede4efa30a" id="65011d06-3903-4ec8-9e1d-54cb8ad171de" chipset="acmgt3" name="Ext115" />
+    <guid config_hash="389d0f7661dccc02aaca31c9a2b64c12" mdapi_config_hash="430294dd56cb5e52e5fb9d092c851fcd" id="07a01ff3-9f44-4798-93f7-8defeeee8a20" chipset="acmgt3" name="Ext116" />
+    <guid config_hash="21560ec068b151453d86faa77b452bff" mdapi_config_hash="825bd7d23dc864333ee969a21d5395c8" id="aeb29684-3152-48c8-8cb7-4bc25712605f" chipset="acmgt3" name="Ext117" />
+    <guid config_hash="e8426ddd6223c83acaf9aab72d4210d4" mdapi_config_hash="5cef4e5d7572482c38ae8b4521f9329c" id="beffa74f-caca-4b88-8f7d-7f01c3bc033b" chipset="acmgt3" name="Ext118" />
+    <guid config_hash="3797b01c8b246468dac47940fca0e813" mdapi_config_hash="538957d5641209f00848a7a05534c3fc" id="415ffe47-ea31-4697-a982-ee90636ed944" chipset="acmgt3" name="Ext119" />
+    <guid config_hash="5319ca56fe51780edcc011f200a31394" mdapi_config_hash="64a8452f490eba44930860e432290a09" id="8112be50-e97f-44dc-b790-bc09eca28009" chipset="acmgt3" name="Ext120" />
+    <guid config_hash="2ff2ef82ec9f637a24629e016b109090" mdapi_config_hash="446906746c12b1dfa70d993526a7b4ca" id="e4c09690-3425-467a-a9cc-4a858c817c0f" chipset="acmgt3" name="Ext121" />
+    <guid config_hash="50cf23493a1fde6b254d9d63925e81a5" mdapi_config_hash="5dbb67f4ed432368b49a1981ac441e6e" id="61157f65-aab4-4b3d-b780-658829e378e2" chipset="acmgt3" name="Ext122" />
+    <guid config_hash="d8052b8060dacb2c9cd07fa5472e309a" mdapi_config_hash="819aa5d7134372b74b36ab118de875d0" id="4a875c0a-59be-4dc2-bdd1-948745fe142e" chipset="acmgt3" name="Ext123" />
+    <guid config_hash="44976e8312977a7625e57a9bb74e6436" mdapi_config_hash="d5e287130fd5f19c969b3315ffb05943" id="8c1d463d-eee4-4f13-b01b-4b120fbbb4ad" chipset="acmgt3" name="Ext124" />
+    <guid config_hash="97e3d52508bb2d4b5314c53f981a9f36" mdapi_config_hash="ae93d269d43b40fcdc36e0270b0cfbac" id="b6abefa1-e939-431b-8975-e1c687f437b3" chipset="acmgt3" name="Ext125" />
+    <guid config_hash="5a96bdd8cf054e3814b1987fdba7518c" mdapi_config_hash="07b2c00f67f5d412ba25d305b5373db7" id="7aa427eb-754a-4222-b199-d41bc47ad3c8" chipset="acmgt3" name="Ext126" />
+    <guid config_hash="989bb158050b2031d00c41848730e885" mdapi_config_hash="aedc8f07206dd9687045589faac7d80c" id="101df6ed-1648-43a4-a44a-21440a9df6b1" chipset="acmgt3" name="Ext127" />
+    <guid config_hash="55c21e04705d89c684f27a895bf9053c" mdapi_config_hash="d0adb8253cd414c8d695e7d7a9988f17" id="edf10822-9b87-4c5a-9d08-de730b73783c" chipset="acmgt3" name="Ext128" />
+    <guid config_hash="98d0866b811710e3765ef06a281286d2" mdapi_config_hash="5df96d0dc40acc7fbd39e99a21f07d5d" id="57adc349-a036-4227-bb0b-f35df5cdefc0" chipset="acmgt3" name="Ext129" />
+    <guid config_hash="50d12b43071da8a53ca600b8e470ce24" mdapi_config_hash="5480327ecf5e7dc93fa31f9a334d0950" id="fa55a401-6330-4838-ba1d-97d99d1b3dab" chipset="acmgt3" name="Ext130" />
+    <guid config_hash="db8249ee0796eb25ffb5bb59ff58f3ca" mdapi_config_hash="41df6640a3a2846ad58e763abc799b65" id="b3dcbad6-531c-42f5-be91-de0a33aa7a74" chipset="acmgt3" name="Ext131" />
+    <guid config_hash="5936908fa27ab4d0e7d80403ca65f7ea" mdapi_config_hash="a9adea67ef7ad9c6f56aae8464119bd3" id="f2043fc3-5aae-42c7-aa3f-eabd0cf24b60" chipset="acmgt3" name="Ext132" />
+    <guid config_hash="615c0cdc20b47d758e0369fc44e9a8a9" mdapi_config_hash="6ed73fb16ad167c4bbd67fd5688ec44e" id="fc8faaca-0410-41a8-baa5-881d1c172763" chipset="acmgt3" name="Ext133" />
+    <guid config_hash="497ff1c6c37e82cd602ed7d9d345d4ce" mdapi_config_hash="7318e1ee1a20da7c18ca26300185a448" id="c87b7319-7935-4642-b124-c14ad8fda69d" chipset="acmgt3" name="Ext134" />
+    <guid config_hash="f48b8fb54463163f28f48a2c8b634c8b" mdapi_config_hash="99fbbb0aade65871873618d478d3dc7b" id="3e0b0511-a1d8-4bfe-b1ef-48520609b5bb" chipset="acmgt3" name="Ext135" />
+    <guid config_hash="6fc0d91ac0db7fa343ed9100044bbf28" mdapi_config_hash="139f3174b33031bdd5516c13e9acacaa" id="44085566-4f70-4640-aafd-bbc83062552a" chipset="acmgt3" name="Ext136" />
+    <guid config_hash="a594d5f752af2c4d8d6caedaeb56cdad" mdapi_config_hash="057cdf51008e9d822cf16f9b4fb8787f" id="c7d9a6b4-b939-4eb2-a272-1737f6f3df45" chipset="acmgt3" name="Ext137" />
+    <guid config_hash="8fd561f89162a0a407b2f9cb290c3696" mdapi_config_hash="954e5eca072e72080a101427c8f9f2f5" id="428b3770-8cd8-469c-b83f-545610b80760" chipset="acmgt3" name="Ext138" />
+    <guid config_hash="4d8309a5c4751fe09a1dfb0154a3b105" mdapi_config_hash="3c4b4ce92481f0cd082809912eff3f4a" id="4e566d7d-9e9d-439a-9d4c-bc2fd96d7716" chipset="acmgt3" name="Ext139" />
+    <guid config_hash="c1d9e3593292b2f060820a5fa5b1dafd" mdapi_config_hash="b16bbca33517186fedd4a180a60f9225" id="9f0b112a-780a-4e61-9d1f-47f90b536d59" chipset="acmgt3" name="Ext140" />
+    <guid config_hash="39a624f2ec7866da75b10f887e0e562d" mdapi_config_hash="5f9a64cb083841237a2b03c111739050" id="854fb71e-5727-4f1d-9384-52b395a4d8a3" chipset="acmgt3" name="Ext141" />
+    <guid config_hash="476cc8f8959639471dd01e0b1054e0e2" mdapi_config_hash="3c469196bfda81195e1d5c60fc9388a1" id="fe0561e1-8d92-495c-b849-4d9707cf5682" chipset="acmgt3" name="Ext142" />
+    <guid config_hash="52196d1a225b873763c70fefc0499912" mdapi_config_hash="7089d58f55ab23c37b2f12ea4c4be58f" id="46dbfe20-297f-437b-a33f-55e3a55b3f49" chipset="acmgt3" name="Ext143" />
+    <guid config_hash="adeec388c9603fa74303cd14a404ef98" mdapi_config_hash="3669d4ea444769541a7208b8d0a34fb3" id="771f932d-6d5d-455a-ac07-95b7944cf0f3" chipset="acmgt3" name="Ext144" />
+    <guid config_hash="30ad8efd8a98060b3651f42cc4e678b7" mdapi_config_hash="e844fafedd98925ab6f2d26af3c686cc" id="8798172d-cd55-4b8b-bdd4-b0e4506f5814" chipset="acmgt3" name="Ext145" />
+    <guid config_hash="6a585f2c59da7ae5fc0402e824768f6a" mdapi_config_hash="e5024ed1e541d19db5a2a389d525d915" id="cdb10de1-e17b-4a8b-b90c-19de2c4759f9" chipset="acmgt3" name="Ext146" />
+    <guid config_hash="01a6c2753768e0dae63fe3656f93070b" mdapi_config_hash="6074523444ac5efea05563f77c995a6c" id="23705ec8-4cd3-4907-a1ad-3fe56529d8ff" chipset="acmgt3" name="Ext147" />
+    <guid config_hash="829072e493dcc8b654beeab17f6268d1" mdapi_config_hash="85d7c5e0504b383b9ba032b5bae8e964" id="dbed477b-2c30-478d-b3fa-b5615416b1af" chipset="acmgt3" name="Ext148" />
+    <guid config_hash="2c9034754f243894f83c1799abf063a9" mdapi_config_hash="24ba0140ab2b2fd98a4a5c6fab497ae9" id="8f6adfed-5fbc-42c7-80f2-30904a388408" chipset="acmgt3" name="Ext149" />
+    <guid config_hash="516929a10a46ea6556d2535d2b3c34d1" mdapi_config_hash="3c6502b57b76fb7b4c9c907e16644940" id="aed081c7-ab5e-46c5-bedf-91477e538dd6" chipset="acmgt3" name="Ext150" />
+    <guid config_hash="499d054221d60d1692e01e8593de19f7" mdapi_config_hash="c1867542bd66c6b101d4a82c46ec01a4" id="a09e1665-c5dd-4819-81fa-04a797f9de26" chipset="acmgt3" name="Ext151" />
+    <guid config_hash="cf5295b7121658b1ae5e06539caf2293" mdapi_config_hash="ca190237e0ad73090a761feca17233ae" id="c963fbd4-f12b-4c8b-b5a8-03aff5190950" chipset="acmgt3" name="Ext152" />
+    <guid config_hash="493dc38d2aeb448b39b61148e7b2b11c" mdapi_config_hash="f8dc6e9d2a3695cef1ba9b6502b94a8a" id="a7cf7aba-86a2-45dd-baa3-e877df9883f3" chipset="acmgt3" name="Ext153" />
+    <guid config_hash="cda606ec36fd9779ac58ae0a9a193b72" mdapi_config_hash="fee91e8036f1da6cfe3543fc441b3b6a" id="5207e446-2d9c-4d66-8afa-2f474c9d403a" chipset="acmgt3" name="Ext154" />
+    <guid config_hash="6b515e974375166d53b679d51d5c1010" mdapi_config_hash="730d867ecc42cad8cdabe2a59c5d4823" id="446e638a-6570-4b0a-b980-15071ca6a136" chipset="acmgt3" name="Ext155" />
+    <guid config_hash="d3d0cb9c60d6d98b16d0597407c428e4" mdapi_config_hash="53dc80819174c23eb9144d47a343e73b" id="4c6764e2-9e79-4cb7-ae35-03459c6d06e4" chipset="acmgt3" name="Ext156" />
+    <guid config_hash="620c2bd27ff929118bc5c71a21fac518" mdapi_config_hash="d3f04a032f89423fae54b5ceb088c171" id="c148c5e1-7709-4fbe-ae06-1f23721141c9" chipset="acmgt3" name="Ext157" />
+    <guid config_hash="5213d22dd9ba6d8f41107c5afd23923c" mdapi_config_hash="61e3b5523b9bf3532c449f7031524b8d" id="a733cb3b-6a08-44a2-b732-11e7ba701391" chipset="acmgt3" name="Ext158" />
+    <guid config_hash="eb1e73891f3e398be5ff246bc5cb62cd" mdapi_config_hash="27d0335f6d90e9b7d2b3eaa28d21987a" id="15186c13-8523-470b-bda5-363a5b4e001a" chipset="acmgt3" name="Ext159" />
+    <guid config_hash="67406da764acd1225f8dfb843813a099" mdapi_config_hash="f046ae83874260c87eca94e175d22e1f" id="df25a2c1-8375-4034-8ad9-f291c80a3f9c" chipset="acmgt3" name="Ext160" />
+    <guid config_hash="84c01e91da46aa1b4e563b09617f0942" mdapi_config_hash="ccd14ce941cae7b2109402b86644bfe2" id="97bb9d99-1be8-4add-a674-50795062f1a7" chipset="acmgt3" name="Ext161" />
+    <guid config_hash="9da64b8280ae7167370a66e952505a98" mdapi_config_hash="2fe475bd26bfe2083e0ca3611540d0b1" id="725d052c-1ead-4fd5-96fc-68d7db607dc7" chipset="acmgt3" name="Ext162" />
+    <guid config_hash="1a387dd7560552e3e217c1652af48506" mdapi_config_hash="4e6259f2b552ae50bdcf68fc14c50d02" id="63a891bb-dcce-41a0-8c54-cddd68cd298b" chipset="acmgt3" name="Ext163" />
+    <guid config_hash="eb01f400642e8134b4fc62c4383c01a2" mdapi_config_hash="e42b2f175d17761465ebb16b038eb09c" id="0d6008ca-0cbb-4be9-a615-e9ecec99f5d7" chipset="acmgt3" name="Ext164" />
+    <guid config_hash="f42bc084341302c9327ff15191b02f9d" mdapi_config_hash="4ecda9b355316630f23a08b50f70edca" id="7df82e88-2ee2-4fbc-8adb-d727d7642c39" chipset="acmgt3" name="Ext165" />
+    <guid config_hash="8891d254b60caea53412700e13c3f9bd" mdapi_config_hash="bafbefceb3a43fcb587eb19c60cfa68a" id="3e04e13c-9dea-45d0-ae38-0596b159f871" chipset="acmgt3" name="Ext166" />
+    <guid config_hash="1dfedfc7ad2e6f0778078099ef530f72" mdapi_config_hash="8ca8fb884bed9f3a3abd4c801820c392" id="47678de2-1d55-41be-9fce-6f7d5e771f87" chipset="acmgt3" name="Ext167" />
+    <guid config_hash="bd7c0925028b54bf6ab04d4fa8544c7e" mdapi_config_hash="0cc113f29f3182004b93618c0cf8b468" id="0dbdebc2-4202-460e-941b-d3b4a321f450" chipset="acmgt3" name="Ext168" />
+    <guid config_hash="03b89fd81cf27cec6ab4b453d565d173" mdapi_config_hash="ea23773d981422d1bb2b5e32fea40577" id="406d841d-d415-434e-94d4-5756af4a9e37" chipset="acmgt3" name="Ext169" />
+    <guid config_hash="b185f3e90032e26b92b36ef21f343df8" mdapi_config_hash="431760b11cb7644a1a0dbbf3a556e1a0" id="3e3ce4f4-1ead-4705-8243-a7786c061089" chipset="acmgt3" name="Ext170" />
+    <guid config_hash="ae91a7a9bb63974ef366d4865544bd8e" mdapi_config_hash="1425936bc3093ba326ca7dbfbe616b79" id="e9e8cc3e-2c88-4b2c-a8d2-67f00c9699a5" chipset="acmgt3" name="Ext171" />
+    <guid config_hash="5bcb737ca08c5eb57d602edb51a7f434" mdapi_config_hash="cd21a2ad7b6e26b8ccf32261f376818e" id="23e25067-e274-4172-a380-e032c4d685d6" chipset="acmgt3" name="Ext172" />
+    <guid config_hash="c3696960a77eea7be3297d656d1e365a" mdapi_config_hash="ed265a54ec0f210d25415b765d07a75c" id="21d3e3ca-2381-47d9-bf55-0aa699ebac4b" chipset="acmgt3" name="Ext173" />
+    <guid config_hash="7998bcfbfd1169b77066056e1ba05dc8" mdapi_config_hash="1e0ae0a2a030d9684fed00eacf81242e" id="0b4f4666-f7af-484e-8f18-68762db73ad7" chipset="acmgt3" name="Ext174" />
+    <guid config_hash="9581b2e6120f7f769e8f78c2922568f8" mdapi_config_hash="88e4e1da868907afa26e7cf2e08f4a93" id="27c6aca7-31ed-477e-a48a-34fefb2a02a8" chipset="acmgt3" name="Ext175" />
+    <guid config_hash="1dc5d5350d0f08bb22e85a653b3f11f2" mdapi_config_hash="d3f4da10cb747b3032dc2a8f20af68b0" id="813597c0-4e8c-408c-8410-e6e5ece2b810" chipset="acmgt3" name="Ext176" />
+    <guid config_hash="5ab746537b02797cc1de591508875535" mdapi_config_hash="9ec457c1369c71bdcf9522a29f9271ab" id="a31bccd0-3d2c-4697-8c8b-2e4c0920b30b" chipset="acmgt3" name="Ext177" />
+    <guid config_hash="41c1991cfb1f1e33844e67e1b4890c0f" mdapi_config_hash="5a4ac8aee4db1c143c2ab830dd63b706" id="d936d62e-18f5-4216-84a6-e419ae29b3c7" chipset="acmgt3" name="Ext178" />
+    <guid config_hash="08e1fcd61b15824fa99cc2381d4314cc" mdapi_config_hash="5c7975fa0f274fb2253f42b27a22ced6" id="49b08c39-b26e-42e8-99b7-f1be426862cb" chipset="acmgt3" name="Ext179" />
+    <guid config_hash="6e86fef4e21067b54d72546c3d1e068f" mdapi_config_hash="25d6831afca84563dacc7499167ecc5b" id="2c9db1da-1263-422b-9ae6-b2d59b5ec7b4" chipset="acmgt3" name="Ext180" />
+    <guid config_hash="3081321fa896ab6f5e6db6426e918f41" mdapi_config_hash="4e99483024350a85e95ff8aa226d836e" id="135f67bb-5cc5-408c-a5aa-760f9df1a3c1" chipset="acmgt3" name="Ext181" />
+    <guid config_hash="c0772184488e17b6463c0e8fe6ce0cba" mdapi_config_hash="bdadfc87420d61c441edbbb498b81fd0" id="c106cace-c1ea-4023-a288-f4b0a2487cc3" chipset="acmgt3" name="Ext182" />
+    <guid config_hash="865d91cd706e7afde4bfa603912f774a" mdapi_config_hash="c17c3e3b76bde9d6de4df94a639287c7" id="4483d3ce-c377-4a00-8f10-7159c70fecd1" chipset="acmgt3" name="Ext183" />
+    <guid config_hash="2ec204b2094911bc58f0ba860623783c" mdapi_config_hash="d420195bb4507bfaa989f8f6aa526030" id="eaef6bf8-dd2a-4a07-a948-d837765220ff" chipset="acmgt3" name="Ext184" />
+    <guid config_hash="2d2cd0a344b9baa14e794b6ce8d98264" mdapi_config_hash="a1df408e4cd0b2c9f5743fd642ab9ef8" id="00a90659-f144-4e89-b782-5dc13e3b3ca3" chipset="acmgt3" name="Ext185" />
+    <guid config_hash="3f011002dcabb271b29d9e1853454890" mdapi_config_hash="a9585473ad0de30b00e662d880878f97" id="b74242c4-91fb-4fed-a5bf-7154b99fa647" chipset="acmgt3" name="Ext186" />
+    <guid config_hash="d587300464e20dc7e92b407742f09406" mdapi_config_hash="0276a092eddf879412dff36f02eef566" id="14d62995-8763-403b-aa49-28c9f09f32c4" chipset="acmgt3" name="Ext187" />
+    <guid config_hash="a69ef3eec23946e6f3c00206ce573c1e" mdapi_config_hash="9bf6134b2cf0abb13095a6311d43fe6e" id="1f8abc30-c7f6-469e-9a6c-1b6c62208c75" chipset="acmgt3" name="Ext188" />
+    <guid config_hash="dee40a8daebabd216ab4135f76090584" mdapi_config_hash="1e925aac03cd140d1166f6bbd48aa48e" id="b8d49514-56d9-4a63-b5a2-539f97739cf3" chipset="acmgt3" name="Ext189" />
+    <guid config_hash="fdb86236ef58d8e6c5009568a516ae85" mdapi_config_hash="ab747033071444818264d1bb8a7b4f29" id="1cec7b0a-c4c7-4a32-ae0b-9b809c84a7a0" chipset="acmgt3" name="Ext190" />
+    <guid config_hash="45be7306242f0356364c2fc67ce6c5e6" mdapi_config_hash="227f6c6813928bfb19def7b061ae8fe2" id="3c9f5268-8d6f-4f54-8f76-a5364a32509d" chipset="acmgt3" name="Ext191" />
+    <guid config_hash="b98a1f8945d0ff7806d5cb53d2ba5c44" mdapi_config_hash="c194d9b9bcdff511c957460d94e80cc6" id="fe743705-afe0-4964-8976-ef793e6730c3" chipset="acmgt3" name="Ext192" />
+    <guid config_hash="97e07159767de612e785ea2d54a276d0" mdapi_config_hash="fbbcfd8eb5db89c4342ccf05a765e53b" id="3764f231-efa0-46c8-8fd1-d7524f7d287d" chipset="acmgt3" name="Ext193" />
+    <guid config_hash="92df881256cd86eb564b56d71a488bdc" mdapi_config_hash="75e5379816770728c9655616b209ee57" id="7ae1c3db-b806-43e8-a5cd-2f9fdbbbdf2e" chipset="acmgt3" name="Ext194" />
+    <guid config_hash="9c3d393a75d7c2b5db174abc2d24dcd0" mdapi_config_hash="9223511a0748adbd955493140439740b" id="addc5fb2-b8e8-4aab-b696-c033136f0207" chipset="acmgt3" name="Ext195" />
+    <guid config_hash="3307471d2c2ffe595d27b605ff4cabe3" mdapi_config_hash="df401a0078a3fd2148f8c090d909e12c" id="b57b99a2-d4df-46f1-b851-a0ac6e5f728d" chipset="acmgt3" name="Ext196" />
+    <guid config_hash="17da278f24ae0c4a790b6118c0032ad9" mdapi_config_hash="dbeddb9b475865ae06b7b2edd4b56dc9" id="bb509d13-b4b4-4d2e-844d-9f67591c66bd" chipset="acmgt3" name="Ext197" />
+    <guid config_hash="619c0b1afc9f968bdaa3b7de2928f201" mdapi_config_hash="b16aae96be9ba284db7dcdb2e78c082f" id="15e524f3-6392-401d-b3be-02b317cbd359" chipset="acmgt3" name="Ext198" />
+    <guid config_hash="39bc5c7f471266835072e98e914f04fa" mdapi_config_hash="09f0f1272c9193edaa954855d3396a29" id="f65fb347-b70a-486e-b1b5-a44da3da8b66" chipset="acmgt3" name="Ext199" />
+    <guid config_hash="f8c32b5fa6e5a689c77e5be3f65f22d8" mdapi_config_hash="772d9a1ce922b91dfd39ee99aa914b41" id="570e0476-84a4-42a2-8022-38fecca851ad" chipset="acmgt3" name="Ext200" />
+    <guid config_hash="39630acf52f39936c08357e4a0ecd2b0" mdapi_config_hash="a7231fa73b3f72b82bdc6a109c20f09c" id="4d7b3d3e-cafe-41f8-bb69-06d3a5d87305" chipset="acmgt3" name="Ext201" />
+    <guid config_hash="95fa9640fb377fcad702f75385997549" mdapi_config_hash="5927e83f8bed1f21fbb2af9179e051e6" id="356bc819-2d0a-40c6-afcf-531107e99c87" chipset="acmgt3" name="Ext202" />
+    <guid config_hash="fff932c580ef69921a10b1b6c184d913" mdapi_config_hash="28f3a0c58cef59860c0759f89a3c6284" id="6a08a183-8d09-4e98-a198-b72edf387ceb" chipset="acmgt3" name="Ext203" />
+    <guid config_hash="14aebdf77522b3b246ffd9dfdb72f0a9" mdapi_config_hash="3aaed6958fd03c64fd4e599b34c0eb97" id="7afa64c7-c65b-4671-b6fc-c99a9b7fe6d4" chipset="acmgt3" name="Ext204" />
+    <guid config_hash="a097ebef6a8472167cd9d86275ba3bd2" mdapi_config_hash="dc0926365ba14f6818bedd793cbe0a73" id="92562fac-284e-4612-b25e-378432c85ad3" chipset="acmgt3" name="Ext205" />
+    <guid config_hash="e730bcc3e5fe5f274103dd44ecfbc97b" mdapi_config_hash="68a76045958ae6aae80f078a03987529" id="eeeb0ea8-ea9a-42e5-b793-e9143baf6425" chipset="acmgt3" name="Ext206" />
+    <guid config_hash="c6af18e47eeb86dc346147b6f7d7ac19" mdapi_config_hash="6f0b765593ea7973491dd18b0371304b" id="de748c4d-cf66-43e6-921e-d9d13b47f817" chipset="acmgt3" name="Ext207" />
+    <guid config_hash="684b1380e461b4cd54ef7d03a459328a" mdapi_config_hash="24666f74f30c464d15bd7e6aea1c744e" id="50c6035f-68f0-45a8-b316-1dcda3d00e9a" chipset="acmgt3" name="Ext208" />
+    <guid config_hash="3f5e19f7ad0a466bf81bc79d97c17dc2" mdapi_config_hash="5d60b3a0f427e1f74a955303f87a91ef" id="0c6c792b-9f14-44c1-896d-3c122c75ab69" chipset="acmgt3" name="Ext209" />
+    <guid config_hash="63d57c6a5c2922120ce4379e1705eadc" mdapi_config_hash="f5e6d5917721d14ae5a9f61076b7b450" id="a931106d-e624-4d08-8fda-ecaead88f576" chipset="acmgt3" name="Ext210" />
+    <guid config_hash="a19c277de7f39cfc2632151b2a5d3459" mdapi_config_hash="a9d5dc5f806add4d7b06998c72ea17fd" id="baa9de2f-f71f-4824-95f0-5fc9d96c7fc5" chipset="acmgt3" name="Ext211" />
+    <guid config_hash="e6e863d57178fa388a991f119c8485b3" mdapi_config_hash="08b12579c535552ed6b896b9fee5cac0" id="bbbd7113-221b-4fca-aae2-5c8a259cbc48" chipset="acmgt3" name="Ext212" />
+    <guid config_hash="52ac2525c5a61ce935f90081f4ce1f98" mdapi_config_hash="0ebb2722100e4cde38fe655d77e0e34a" id="6ca2babc-de4f-469e-ab01-d291e28d63e7" chipset="acmgt3" name="Ext213" />
+    <guid config_hash="387d0dfc6c2d1c020eec6dc4f76f9739" mdapi_config_hash="743039f8947c074de44bed0c1bc36861" id="74a2399e-2681-4433-8878-4dfe42324fcc" chipset="acmgt3" name="Ext214" />
+    <guid config_hash="8dda41e9114dbb1583133bf3fa838c53" mdapi_config_hash="3d3ff0c896bea9f2778b04b1b9ab9e57" id="401e46da-ef68-4a45-a2e7-7daa5b376228" chipset="acmgt3" name="Ext215" />
+    <guid config_hash="eff36231985f11e9ee82b56d339fec65" mdapi_config_hash="137c878d93161242008e04edc4468623" id="b7ae12df-db7e-4936-b449-c52f80ee5d29" chipset="acmgt3" name="Ext216" />
+    <guid config_hash="2da6a317f6fd074eb7c1643bdfdb035c" mdapi_config_hash="8ec3057c495d09f393aacfa6fb1f2a8a" id="c69966b7-9ef1-430a-8936-0976458b2291" chipset="acmgt3" name="Ext217" />
+    <guid config_hash="e97a59ce8afea9006d95c5def07b08df" mdapi_config_hash="7f4422b28c9fd8fc0db3bc302880060f" id="01cb7b35-7ed2-43b5-b046-efde9201ca35" chipset="acmgt3" name="Ext218" />
+    <guid config_hash="8d84f02612a4822135754a0e52541bb6" mdapi_config_hash="305232e26d0bdae0a064994fccd0ae48" id="c614285f-3ef0-43b8-9b09-1b13adbe2e8f" chipset="acmgt3" name="Ext219" />
+    <guid config_hash="dd5ed67860f6b4c29b6a643cdb5cc49d" mdapi_config_hash="0097c51fd552193141d77967d681b3e2" id="4bdb50d9-dfc5-42d2-86aa-d8592e876856" chipset="acmgt3" name="Ext220" />
+    <guid config_hash="8c345125a46c84f7afdf867728089931" mdapi_config_hash="3e01acc2238814b9cef432adba88b9a1" id="50714f9c-2bb3-459c-b546-8a374589bf9e" chipset="acmgt3" name="Ext221" />
+    <guid config_hash="e87952abe6b8e7a137958d762ead7b0c" mdapi_config_hash="bcb74cc78ab8e83291d9b0ba15a7e3b3" id="fcfd6090-d189-4cd7-9c85-3a5acc193e7f" chipset="acmgt3" name="Ext222" />
+    <guid config_hash="5c0e80ee8b03d578a6716dd7aae859ec" mdapi_config_hash="3e34e19e095b5e5d0f4b10541dfc07a8" id="4ed943c0-2d87-4749-876f-811e1b39e607" chipset="acmgt3" name="Ext223" />
+    <guid config_hash="7489774dd67d5b32015076157618bd42" mdapi_config_hash="a0293881e8e73c253ad69189c8095794" id="2b3af12b-71c7-4f36-bb8f-049547bf5c2d" chipset="acmgt3" name="Ext224" />
+    <guid config_hash="340575f71a94d74651a7351eb8c72269" mdapi_config_hash="e3cb65f87555310c8dce966db9fdeb76" id="1dde6c6e-a7aa-4f8f-aaf4-3b26dd6bca69" chipset="acmgt3" name="Ext225" />
+    <guid config_hash="6ea3fde412ded8c90a5d928458d5e47f" mdapi_config_hash="0241c9964fc42a9711e25bae15951a0c" id="d9db7f79-0da3-4ab3-8b28-8dd70416656f" chipset="acmgt3" name="Ext226" />
+    <guid config_hash="362c57e0a17dcd3ea2bf21e79db7872d" mdapi_config_hash="69966b5cbd6c56ccd346daac7f41c71e" id="d98e7c96-ff33-493f-9e6e-0e5c2ff4d3b3" chipset="acmgt3" name="Ext227" />
+    <guid config_hash="b9f1eb41d9593fb886b70c0c78c81e58" mdapi_config_hash="707ec433835259a033b50314f1d8fb40" id="ee084440-5ff3-4348-98aa-69f9bc50bc13" chipset="acmgt3" name="Ext228" />
+    <guid config_hash="c66bc3dc6721fa6ee5f96d7401dfa720" mdapi_config_hash="ef50e9c8bfa8547b2f71bb3d5c2bf569" id="8591ba5f-8306-4275-92a8-d9059ad66ed0" chipset="acmgt3" name="Ext229" />
+    <guid config_hash="2897f2c2df7765375e6b40ebaa27e38a" mdapi_config_hash="a7375c84df7e58e6fef15844a9c3b90a" id="00e97ab6-80e8-4fb7-8735-d2c9fd2e57e0" chipset="acmgt3" name="Ext230" />
+    <guid config_hash="a205a88b9dec83466641180564e936ef" mdapi_config_hash="f57ade4f9120a926fc24e9fa8b5a4464" id="8843165e-fc6d-4b1a-8356-201b7b0bdb25" chipset="acmgt3" name="Ext231" />
+    <guid config_hash="d083748862d298836726d5cc1b202f9b" mdapi_config_hash="1ef6a2d0a6857a04f17ee8daeb5f10ff" id="964b5b29-6acf-4be2-b50b-030c7a8c3fc8" chipset="acmgt3" name="Ext232" />
+    <guid config_hash="184449a3a33f55b28f495eb2d6001064" mdapi_config_hash="39f41d856d93bc17ce52439791c05ab6" id="796a2acb-6ddb-4567-9c5e-ad1b18f74271" chipset="acmgt3" name="Ext233" />
+    <guid config_hash="13e1fee09d042cfb2f7d417df987bd63" mdapi_config_hash="1c8b207ae119986d0e82a47b1caf54fe" id="8c5e4033-e50a-4f55-a17f-2fca9ac26074" chipset="acmgt3" name="Ext234" />
+    <guid config_hash="5a440a25d708b0f2adf822da1ddee94c" mdapi_config_hash="6d9a4249993e97c34aceea5db4015a18" id="6717aa54-589d-4ccc-b40a-a2fb3dd9e11a" chipset="acmgt3" name="Ext235" />
+    <guid config_hash="113d9e34f91e1fb8b6e931772ec8ea03" mdapi_config_hash="4a0344c013d4d08769c832f2fa2e5bda" id="4e1d6474-b268-4c2e-9437-208ee88b8a46" chipset="acmgt3" name="Ext236" />
+    <guid config_hash="064732a8ec77c2a43cb58fac83dcfaaa" mdapi_config_hash="797f0e602896ca8ed0ed18654d0aa37c" id="88f46503-19d1-42d1-be21-a3655e1b0136" chipset="acmgt3" name="Ext237" />
+    <guid config_hash="8787d4b9962580cebaa5d1240b36689e" mdapi_config_hash="1f61cdb0b12118432346ae7324a29e73" id="5da6f145-39c5-44cc-8329-0998439ee9c5" chipset="acmgt3" name="Ext238" />
+    <guid config_hash="2d3bb620c6644457f0d6f544deacd164" mdapi_config_hash="d71cc5522a4e60c456ba4d9aec5e72cd" id="4543c6ec-412e-4dee-b121-a3b02275a132" chipset="acmgt3" name="Ext239" />
+    <guid config_hash="37419372080f581ea9aebf5ac6748a97" mdapi_config_hash="b2366db2941a52293ce1928492cd29b2" id="e6b031df-b3fe-4fd4-97c3-7c26f28dac6f" chipset="acmgt3" name="Ext240" />
+    <guid config_hash="dfe270d5f0f2e3a0fe2b52897443c825" mdapi_config_hash="a2ed761a31abf014a413bc0194bec396" id="4ab6ae4f-59e0-4dee-b907-026737066065" chipset="acmgt3" name="Ext241" />
+    <guid config_hash="25dc695c02cd7e0407a402adcf50800c" mdapi_config_hash="bc705e280eb2147cfdf3ad5a323d4b64" id="db802a4a-11cd-43aa-8baa-3b951ed19672" chipset="acmgt3" name="Ext242" />
+    <guid config_hash="f208442e0015c384589e03c1ae7738e6" mdapi_config_hash="3400a6dfbc0c0cbe1f9addf6fc5d37d9" id="e7f929f5-f382-4bb2-b32b-e808e816a751" chipset="acmgt3" name="Ext243" />
+    <guid config_hash="36dc63bbbb95bbbbade838f80db36b65" mdapi_config_hash="a09b653dc8693111f47b229195eeaea3" id="81a25cda-94c8-4b9a-b9e5-38994ed22ab0" chipset="acmgt3" name="Ext244" />
+    <guid config_hash="b0533196c7592b3f37c846e68568a850" mdapi_config_hash="ddad036f084b4e90d50b702b76cb567b" id="6a234e4e-a4a9-483c-b0b1-f6be43dfb64c" chipset="acmgt3" name="Ext245" />
+    <guid config_hash="e432477aed530b176d8c7c9d6ef61a31" mdapi_config_hash="d7e846b5e7cac168ae9a67909e8a419a" id="94757ea4-0b0b-401f-93a2-b119ed4f5204" chipset="acmgt3" name="Ext246" />
+    <guid config_hash="e523f2862e60ce6ad9d4b7ff556ea07e" mdapi_config_hash="7a1498e57e356af309622c918d9f48e5" id="b90ea8da-5965-4457-97aa-49a688fb0d39" chipset="acmgt3" name="Ext247" />
+    <guid config_hash="87b4488cf03862b155d4581a57b5b661" mdapi_config_hash="bbcfa47dcf4e3bb88b4803a0521881f5" id="74996160-a911-4eb8-9db3-e83969d92a35" chipset="acmgt3" name="Ext248" />
+    <guid config_hash="7540295df31b0e3d936a2eec247b90fe" mdapi_config_hash="f5906f9fd52c56697b2defba8ee9eaf8" id="f287382f-3de7-43af-a4c5-20ec8d84b7b1" chipset="acmgt3" name="Ext249" />
+    <guid config_hash="8cc0416ae9ee83248a079e1707452331" mdapi_config_hash="d6075697296394168e78bc435a85b212" id="a92c55c1-352f-44fc-a86c-3f0b0e525d97" chipset="acmgt3" name="Ext250" />
+    <guid config_hash="d90b736ffc6e3950e6f83647b8d3b7e1" mdapi_config_hash="fc4c00abd796d51e4fca444a4e937c04" id="dd5abc73-e90e-4da0-82ed-53c3a598ccf1" chipset="acmgt3" name="Ext251" />
+    <guid config_hash="a8687e7a9ee5087ca588b6c5a3ea3ba7" mdapi_config_hash="9ade8d986acb377cadee7966b37df077" id="f4e6e4c6-94f3-4684-813c-b99cb703a638" chipset="acmgt3" name="Ext252" />
+    <guid config_hash="abb6f6a6aa35a23b3af00996e9e03bdf" mdapi_config_hash="43a056bfb7290c510e6041df4f94bb34" id="9eb32240-9aee-4864-8229-20ddbb84d6f2" chipset="acmgt3" name="Ext253" />
+    <guid config_hash="414968453a3155ba42dce3a8c0de819e" mdapi_config_hash="3c5b635bc3b78d79ebccc9551f7e6e7f" id="6e1f70bd-36b6-432d-8576-5461e5ce55eb" chipset="acmgt3" name="Ext254" />
+    <guid config_hash="4ae10aeb3d1ce36486191e6bb0cb9387" mdapi_config_hash="2c23fbba7e75083142e3f1df27cad429" id="0104ce81-df1b-4f1c-acc4-14cb239f06c1" chipset="acmgt3" name="Ext255" />
+    <guid config_hash="42a68c6c0eb238a42be79ae1a28ceb9e" mdapi_config_hash="224d41e6ffea47b1ef9ed42bec7984a8" id="4baeb5dd-8732-4330-8196-dd8b921d710f" chipset="acmgt3" name="Ext256" />
+    <guid config_hash="694655c88c0dafba3aba9a304eda07d3" mdapi_config_hash="f3c472dc2d863e7fdb8e73723d4d5c1a" id="9e4277a2-341a-4e2b-820d-f53beec1dd6b" chipset="acmgt3" name="Ext257" />
+    <guid config_hash="796fa48b6a2c1b887f9f1cb8ea749c46" mdapi_config_hash="1613caab4b2d9a822b5102329b642727" id="e318efaa-f015-4ee9-ae9d-485a352c06f6" chipset="acmgt3" name="Ext258" />
+    <guid config_hash="90fb1cde901ba15f3a439f5c9a9d4dfb" mdapi_config_hash="aca70d452db02f17e2a1ad11844b7196" id="cf9912aa-c74c-40f0-9120-07ef68972190" chipset="acmgt3" name="Ext259" />
+    <guid config_hash="a8f485a34bab9ef593232b85f3bc4de7" mdapi_config_hash="9425348af33f8d2367686fc807860a92" id="b4b0f306-7714-4fd7-b32f-5bf89d0ea022" chipset="acmgt3" name="Ext260" />
+    <guid config_hash="cf9102ca04924c635339161b97be4340" mdapi_config_hash="7f2fe865115865dfa827c3af8ff17905" id="0a9b31d6-473b-46c9-8ad1-d9ae2e47cc8c" chipset="acmgt3" name="Ext261" />
+    <guid config_hash="85a6776392e72ca25f8fd1bd0861d281" mdapi_config_hash="cbf9f6b4aedfa472e364f718bed289bc" id="17f09c56-52ed-4d95-a2c4-8d364f7f2055" chipset="acmgt3" name="Ext262" />
+    <guid config_hash="8b5818606bd02d2805733dc8b24f0d8c" mdapi_config_hash="96a923693a6042bac2a5327f04dbeb1b" id="755de6ba-8321-4b8e-8b29-30928734d252" chipset="acmgt3" name="Ext263" />
+    <guid config_hash="e4ef7605490411fbca991bb5f375487a" mdapi_config_hash="5c924957c7836d2e78dafe08ada3d8a9" id="b622f02d-6710-4412-94f9-4e4abba0bbaa" chipset="acmgt3" name="Ext264" />
+    <guid config_hash="eecd47c787b83ad3849750dc680b0194" mdapi_config_hash="fe85073a8033a3442699793e391548a5" id="e448a51b-7b45-4454-b682-b3488a24b167" chipset="acmgt3" name="Ext265" />
+    <guid config_hash="dadf826e97050d798b3f70634a380574" mdapi_config_hash="c213d1799df7706a3b089cba5681b1c0" id="df480a9e-5d23-4477-b5cf-e89d7590ff9c" chipset="acmgt3" name="Ext266" />
+    <guid config_hash="8916353d70774c780adb3cc4c1315830" mdapi_config_hash="cddaeef4a982c080d6ab2b56521d72b8" id="d2569d38-f95c-4996-9f95-aa61ba11015a" chipset="acmgt3" name="Ext267" />
+    <guid config_hash="23059f9cabeaf786f51a8a07b67f812f" mdapi_config_hash="c18bd07a0bebf5665d4294b6fb994365" id="95a739c5-5a9c-47df-836f-3b323b9d8df8" chipset="acmgt3" name="Ext268" />
+    <guid config_hash="f94e8aacce7ef9681812dc02eec4f108" mdapi_config_hash="3fe79f8a731a89690f1a99e3bd35596b" id="4ee78f20-69b6-4bcd-9d6f-06ebee2e2f54" chipset="acmgt3" name="Ext269" />
+    <guid config_hash="a7918e90aec85f77dbdbc388af7f7e68" mdapi_config_hash="5a0d7e3c9bffa54860fbb422d3011276" id="e9217a53-0407-4df2-a014-8df62ecd2dcc" chipset="acmgt3" name="Ext270" />
+    <guid config_hash="764c670e15bb32fa44e2abac3e3dc3f0" mdapi_config_hash="60f529bcd8e3a39f5d459a5539b06110" id="7d6d9a79-6ddf-4970-9fcd-ece8cfc4f26b" chipset="acmgt3" name="Ext271" />
+    <guid config_hash="75bd4e4e504ea8b1f5d9915f3389c02b" mdapi_config_hash="08ffa5b05b0ef5b40711e22e4a73268c" id="0ecd2c83-ea1b-4801-b6c0-c571e301477b" chipset="acmgt3" name="Ext272" />
+    <guid config_hash="ca0df34605ae727a63121e1fcb922022" mdapi_config_hash="4724776f07164a4ca0fc3f242087f24e" id="377395f6-3e5d-45ab-a2ff-980f1f795590" chipset="acmgt3" name="Ext273" />
+    <guid config_hash="be7d89f1a1ef463d1d375f3a68596ff0" mdapi_config_hash="f634f94c99a723b4df77dfd0ec5d845b" id="ebf4b987-f2e1-45c5-83c1-145baa637929" chipset="acmgt3" name="Ext274" />
+    <guid config_hash="9c7e2a301f01e29bdb9bb193c7220ed8" mdapi_config_hash="64da8273885ea52d76e6e4cff56c797f" id="e0559ea9-aae3-4ede-8d15-30dcc8c4a202" chipset="acmgt3" name="Ext275" />
+    <guid config_hash="b33f851ec272ba40beadc5d845b84811" mdapi_config_hash="65b464eedd4f4d1aa196bc0b52f95704" id="180b2a02-9d8c-4bf9-be0b-31cf265c21da" chipset="acmgt3" name="Ext276" />
+    <guid config_hash="76addf3cc1fef314a231d1741418605c" mdapi_config_hash="27aac41a401113a72d590ba93b62b0d2" id="4e381e22-6068-4a63-9fea-270aee7731af" chipset="acmgt3" name="Ext277" />
+    <guid config_hash="d4d8a85b7461ac36d6f23dd22cf03fbb" mdapi_config_hash="5eb611ffb43fb240d478a2bfcbc71e88" id="3e47b601-d0e5-4eac-a32a-d4419b455ef6" chipset="acmgt3" name="Ext278" />
+    <guid config_hash="c63e4244b5834ef4e097d36171d8f5db" mdapi_config_hash="df7a564bab59191a78569d8e0463ea94" id="45b87d00-391e-46a0-8750-61da7a17db1c" chipset="acmgt3" name="Ext279" />
+    <guid config_hash="0a4259f9ec94c06e0eb34e00d5f32e67" mdapi_config_hash="7e36d2188e6cb6a9243a468034bf6ea6" id="85c3a4dc-ebc9-45e6-b572-fab58fa5bdd2" chipset="acmgt3" name="Ext280" />
+    <guid config_hash="d8c1306b6111726b2768d250e739d760" mdapi_config_hash="1edbc8c854572341a9d6f8721d562d6e" id="d7725644-0058-46cd-935d-55e1bf8d0e8b" chipset="acmgt3" name="Ext281" />
+    <guid config_hash="9ae78fe7fa8bd7f1aa924ab0f3b15390" mdapi_config_hash="51d5b984261c391b86e079a0eee2ef2d" id="234accb5-7742-4ff5-b3d6-598cc74a4f95" chipset="acmgt3" name="Ext282" />
+    <guid config_hash="f95df0ed24808c39cac1c0149d3affad" mdapi_config_hash="42ab483289ded612d374e1ce7b3213e6" id="75c93a0c-e686-4e48-baca-a557d2284a06" chipset="acmgt3" name="Ext283" />
+    <guid config_hash="3dcdcb7d63947fd101b7213ef37ba568" mdapi_config_hash="5add4b765698e5dff27b03fe9e96daf0" id="6059f40a-ba6c-4032-8eb0-a3a60760d22e" chipset="acmgt3" name="Ext284" />
+    <guid config_hash="15ff1e52a3fba99006a6e42d152df55d" mdapi_config_hash="fed21e54c402f72a50ed87fd9a81fd36" id="030a5d74-26a8-40ea-b40e-be5f1e0cd212" chipset="acmgt3" name="Ext285" />
+    <guid config_hash="97c19be8c7da3a91940dc55dbf25a913" mdapi_config_hash="49773c010f13ee978a3fe606730330a1" id="92ecf953-51a1-47dd-b5f4-f942e64b9c7c" chipset="acmgt3" name="Ext286" />
+    <guid config_hash="ac146e042c048573f13a0fb7495cfb30" mdapi_config_hash="066eb404136ba006a8cf2647d9bd7e5a" id="1f9ac2d2-5aee-4e58-acb1-9d609849ac7a" chipset="acmgt3" name="Ext288" />
+    <guid config_hash="75392c0be87a58ac5f01cea032899539" mdapi_config_hash="ae9299b4252336b05f37210b12c545a9" id="aa8781c1-b216-4aec-918a-142fe18607ac" chipset="acmgt3" name="Ext289" />
+    <guid config_hash="560ecdde73f5f5fe5a33d68c2481eed8" mdapi_config_hash="b29e6a422f3cb1e8de77774db90c0c64" id="16a4c831-37d6-4fff-a77f-0e4c5b325510" chipset="acmgt3" name="Ext290" />
+    <guid config_hash="ae4b50307c7a7dbbf0992b84bbceeabe" mdapi_config_hash="68789545e9fed53fd89bdd3560b75f05" id="be7c8afd-0a80-4cd9-8266-faf796deb5d8" chipset="acmgt3" name="Ext291" />
+    <guid config_hash="ca946bf8973a75756b5e23b539e39d00" mdapi_config_hash="9670f14cf156319e9652865f5854fe2b" id="d87b1ecd-4ef5-4632-9f83-19ca481f2ece" chipset="acmgt3" name="Ext292" />
+    <guid config_hash="918136d928e96b15ae88c73c8c6b188a" mdapi_config_hash="69b6a653bda351c6e38cc2fb2bbb49e6" id="918f11cd-e0a7-4503-87b3-0f16c4464d77" chipset="acmgt3" name="Ext293" />
+    <guid config_hash="d301ec0dacea754b68f8e301988c8cef" mdapi_config_hash="ede1b277ef4d52bfa2820f189bd03a89" id="1b1d6474-3018-4d9a-938e-11d81cc70491" chipset="acmgt3" name="Ext294" />
+    <guid config_hash="4f6dc1933f880b1c383f20c913e51de6" mdapi_config_hash="a14a809361167c93486901777968d49a" id="50114a1e-a637-4027-9ee5-42d12d569896" chipset="acmgt3" name="Ext295" />
+    <guid config_hash="68da0a3cd4c5cecc817d11e3897825f5" mdapi_config_hash="9252f92c0667400545b29da740e466d5" id="d67549fb-4308-437b-8c48-662a3782b3fa" chipset="acmgt3" name="Ext296" />
+    <guid config_hash="4fb85aea1046d132563e9f3195c0e15d" mdapi_config_hash="d4000132f6a7ef12f9e6817d4559c0b2" id="1b1a9373-ac71-43d2-a428-b02826a6d5bb" chipset="acmgt3" name="Ext297" />
+    <guid config_hash="df3e73ce379941f02c0bfcbfa3fc6cfa" mdapi_config_hash="1f0981ee915b585d12ac1f5f5074efc8" id="87e14c77-8814-4632-941c-567a5aed2b97" chipset="acmgt3" name="Ext298" />
+    <guid config_hash="cd6342ace4ca0193db1e6124fc4a04d4" mdapi_config_hash="b5a700dec8b953139435d57bb2867bd6" id="13ce3184-9cd0-4c5b-bedd-a6fa38d76456" chipset="acmgt3" name="Ext299" />
+    <guid config_hash="c8ad49b51452eb1bdbebabf56d681796" mdapi_config_hash="64264fa7c39bf83b666331347220e8a6" id="015cec04-576e-496b-b4d8-53409c442065" chipset="acmgt3" name="Ext300" />
+    <guid config_hash="0a17009445b082501b8e9d7280bbe777" mdapi_config_hash="a8310541e43002bb770eeec21a4173ff" id="8b9a7b9c-a688-43ea-9c4b-fa6ba53852ab" chipset="acmgt3" name="Ext301" />
+    <guid config_hash="2247f50d756d084f4b2942e7cbda09fb" mdapi_config_hash="eadd3d40acb29c3a05c63b894fa6d560" id="7b0d1439-3ea4-48b4-97a7-934789bb750b" chipset="acmgt3" name="Ext302" />
+    <guid config_hash="efb9860feba1d41d72008e9e75a332cd" mdapi_config_hash="e665ed878d8847db341467c000f51c87" id="ae51b0bc-1de2-472c-915c-ac570a5d25ca" chipset="acmgt3" name="Ext303" />
+    <guid config_hash="c8527a8a3889bf1d8e84b9262ff32b9f" mdapi_config_hash="31047fd38fcc2dcefd5de0ee1224fed4" id="3e837b13-a03e-4f77-8bc0-bfdaed855b49" chipset="acmgt3" name="Ext304" />
+    <guid config_hash="f71d09d0f4e74923841c27c55b93f962" mdapi_config_hash="20ea6f72696ee97dce433ea9fcae25d4" id="793a787c-6646-4e56-8bfa-acca313d86f5" chipset="acmgt3" name="Ext305" />
+    <guid config_hash="ce07e3cc1d61bc229d0093a4339d68b7" mdapi_config_hash="4028a24bc2332d74bc5155fe19c17797" id="e7767971-3cb4-4a31-8467-0d83cbe7b292" chipset="acmgt3" name="Ext306" />
+    <guid config_hash="f2559e3b7af97353baf264438a32e2e9" mdapi_config_hash="a5cb0ce213db48981c96258e3e08c624" id="9375cccf-e4b4-44cc-b6af-ffc2f51c3bb1" chipset="acmgt3" name="Ext307" />
+    <guid config_hash="fa492cd5b9b87cd80c9673db98590625" mdapi_config_hash="5c5b1af6c5771d957d1d6fabb07e345f" id="0218e76e-7c34-4c67-a967-205a817f2435" chipset="acmgt3" name="Ext308" />
+    <guid config_hash="2183325297238bd499ad83604f83cb66" mdapi_config_hash="640e17a3d36aa6d5f53006cdd45b089e" id="7a2ef8ea-0510-4066-b7de-0af99bf5b0b7" chipset="acmgt3" name="Ext309" />
+    <guid config_hash="ca5d586036fa908a16975d37bfe2ae03" mdapi_config_hash="4c2e9c6ed7e08417afb921fe11f309cd" id="7f6f2cd5-235a-4479-9724-98bc76338071" chipset="acmgt3" name="Ext310" />
+    <guid config_hash="05682cb51a9e2391bcc6fc2dcde1e2e0" mdapi_config_hash="4e9d3c46331978a5bbfff6b3c28b0853" id="cd5aacba-f72a-44f7-8794-ce2bcf92ec1f" chipset="acmgt3" name="Ext311" />
+    <guid config_hash="20b3f28877e946fcee3afc13cd8aa2ce" mdapi_config_hash="c6b6ddd34b1d4db4dc51ed7f4b844524" id="a2f9ee62-175a-4c99-ad05-daa5dd83c268" chipset="acmgt3" name="Ext312" />
+    <guid config_hash="6e8f71787318c2128233df893b344295" mdapi_config_hash="32a9f5ac995f407b416c0cd59efc070b" id="8cc89495-676d-46a3-aa5a-d5e50bd8b547" chipset="acmgt3" name="Ext313" />
+    <guid config_hash="42e08d562327860be753be8f57ca0388" mdapi_config_hash="834782ab86ddab44c45b07a10a5a8020" id="6a9b6d4b-0ad5-410b-ab23-a755c2069502" chipset="acmgt3" name="Ext314" />
+    <guid config_hash="88d24d1d467b698a9a3ae5cfd0fa2c53" mdapi_config_hash="09be54c8cd4afbbd8e0d17e7610150e7" id="ff1b4077-1346-45a5-acae-d08e7651e126" chipset="acmgt3" name="Ext315" />
+    <guid config_hash="47fce45a807977a67d7a2a572ea910b3" mdapi_config_hash="61c404882430c3a7029b121a86e01e16" id="d4367f9e-ceaa-4751-91de-c80918a32d0e" chipset="acmgt3" name="Ext316" />
+    <guid config_hash="9a2da0cc1c9bed9052711874690c01b7" mdapi_config_hash="819a6b4e5dd713ca02c15080d411e2c4" id="ea24cfe9-dca1-4520-b55a-78ac4b9c94b5" chipset="acmgt3" name="Ext317" />
+    <guid config_hash="72aefa9bc5899adc3e3bdc4d533bdbb0" mdapi_config_hash="7dad18fc32eaaef8c4eb122e1a0ee6da" id="570970cb-b1ae-499e-9113-73b1489bebe7" chipset="acmgt3" name="Ext318" />
+    <guid config_hash="3f7e895f9be4b4d567ff659bcf3ff99d" mdapi_config_hash="3231a0958695a551c97faa28faecd261" id="a2b926df-458d-4580-99d9-731b9e9024b1" chipset="acmgt3" name="Ext319" />
+    <guid config_hash="9c2aac2910e1236583f90ba50073f5ff" mdapi_config_hash="13049238c83707eb756d1a9d562c63ad" id="b357c635-b799-46d2-8714-4f4fddffe2e9" chipset="acmgt3" name="Ext320" />
+    <guid config_hash="71af1d27006b6935d4345876ec340710" mdapi_config_hash="224de537e48273f528b234d6705b1ab1" id="a8c3e950-b343-4f27-a434-a49ba7c87254" chipset="acmgt3" name="Ext321" />
+    <guid config_hash="3f45787ac9cb60d6b89a35e76781de34" mdapi_config_hash="59ea153224cec61cab697f70405bc1a4" id="be052c4e-a835-42da-9b67-3917052ada60" chipset="acmgt3" name="Ext322" />
+    <guid config_hash="2ec807e7385235be8bc7aaf97071110d" mdapi_config_hash="a7f760d048370e4177ab3b85b8f05399" id="d911722e-b0cd-4b54-92e5-d98dda5b6c90" chipset="acmgt3" name="Ext323" />
+    <guid config_hash="7fb4b539879c10ea140484fa502e0e30" mdapi_config_hash="047e20718fdb091079ed6991e46602d2" id="0bc72c8f-65c2-4ab7-acd8-c65a40a707ac" chipset="acmgt3" name="Ext324" />
+    <guid config_hash="a47e5518e8ebc243615809184193119a" mdapi_config_hash="3ff3c4a099f0dcf1b30b5c301f433993" id="86524707-6f59-4929-ac15-a293133850b0" chipset="acmgt3" name="Ext325" />
+    <guid config_hash="1c5de72e62f380fd175c252a2605a268" mdapi_config_hash="f9f62828899d67fe0308a5f61b7d277d" id="199027ff-3c22-42d5-a543-a9467be1422c" chipset="acmgt3" name="Ext326" />
+    <guid config_hash="d5b000564916c4faf26bffde52de86fa" mdapi_config_hash="014598baec63ca10f53e6e34e6f86814" id="38473fe1-ab75-4be0-9cef-c9d84a803787" chipset="acmgt3" name="Ext327" />
+    <guid config_hash="640a1036be2bb6b85d0a27145d543315" mdapi_config_hash="c0826eb5bfc281387de0ea78cc78a220" id="4500f1fd-d762-4a31-88fd-17ae40ee0727" chipset="acmgt3" name="Ext328" />
+    <guid config_hash="e1d6d8f38dbe7a4953276bb7ed2fddb0" mdapi_config_hash="218df27250f76a9eaebc3077bc53a09a" id="2458839a-476e-4804-ba6b-a3d06323b800" chipset="acmgt3" name="Ext329" />
+    <guid config_hash="a0efe37a4184eb6f2a7094bf4065e671" mdapi_config_hash="9312c6a9059ee6d94ae0d22c72050716" id="9aa833d4-ba51-487b-a586-a0df6d462909" chipset="acmgt3" name="Ext330" />
+    <guid config_hash="1d552c8e6492b6e5e1655d35cd4f808b" mdapi_config_hash="cf1d0b86975740393af123f4dc27fa02" id="1ca59138-4493-4e1e-bf2d-452da6a50597" chipset="acmgt3" name="Ext331" />
+    <guid config_hash="bbcc1cff730db168e318e95c4fc76ed9" mdapi_config_hash="3138ce841c68b9db6f4b227e377fc56e" id="88514dd5-9e66-457e-9493-8ffc78893322" chipset="acmgt3" name="Ext332" />
+    <guid config_hash="988f959c9ec7c0d11e22d9d7543217bb" mdapi_config_hash="9228824a1230639ba6ef23e55602cadb" id="38fcb336-fc63-4e5e-aa3e-a40f7feb693a" chipset="acmgt3" name="Ext333" />
+    <guid config_hash="59a4814ab1ad90e274471fc118556fb3" mdapi_config_hash="716ab3de2e9c18233f7d7b54d9e5e1a8" id="b8a9ea64-362d-473b-b9d7-a2175179a0a0" chipset="acmgt3" name="Ext334" />
+    <guid config_hash="c8fa61fb18b5d6d26c6c172614f8b2e0" mdapi_config_hash="90b7e02ebef38ac55edfe8a4f1e75c76" id="6771c5d0-cc06-41ec-b5c9-7d4a8d657bd2" chipset="acmgt3" name="Ext335" />
+    <guid config_hash="52ffb51d118fc9dfc0c2b01327af8ae4" mdapi_config_hash="611d3926d9bd8d6879c642f56564a517" id="c99de5cb-2a05-4d95-ae63-7465a9fde881" chipset="acmgt3" name="Ext342" />
+    <guid config_hash="35c1a65373ae9b92b695f7b36286b0df" mdapi_config_hash="a6550e56a41e0762ee1ad9159692c6d6" id="c83a1e77-4edb-4157-86d2-8ae073b76783" chipset="acmgt3" name="Ext343" />
+    <guid config_hash="25dd24562db58876dceca9245165669b" mdapi_config_hash="84884c0ce905aa2b4a060b405e26a33b" id="7bdaf544-993e-4a5e-8040-9391d9be562d" chipset="acmgt3" name="Ext344" />
+    <guid config_hash="2b03d9691f0ed758a190605a5711be4a" mdapi_config_hash="52ab913701d053fd96620bf44642dabf" id="7e311c03-26ed-437c-9f60-28d92df03534" chipset="acmgt3" name="Ext345" />
+    <guid config_hash="a5a22e0cc555b672b169fc0675467e61" mdapi_config_hash="08cd856be325faff77d20d4d64cfc0fc" id="e7738d4d-64e4-4a54-81a3-86702c6fdb47" chipset="acmgt3" name="Ext346" />
+    <guid config_hash="30fe5c3c9d967ea1a98aa5d381ee87f1" mdapi_config_hash="fffe3915b6d3da13306cf99de3a6676e" id="bc487d2d-a32a-48d7-bce8-96b19d7853ec" chipset="acmgt3" name="Ext347" />
+    <guid config_hash="edcfc03f9a5444b661c2477f0149388b" mdapi_config_hash="bb1ad569d100cc8353967cb27894e83e" id="434a0292-cb9f-46aa-acec-fb56af5aacec" chipset="acmgt3" name="Ext348" />
+    <guid config_hash="931fa7d62526828d368f6a3b8370258d" mdapi_config_hash="974447f20adf55d781d897ce3939f289" id="cf3716ea-68c0-470b-b2ed-07dcad433550" chipset="acmgt3" name="Ext349" />
+    <guid config_hash="b26acf3c22d765b6e82f9fc4866fc108" mdapi_config_hash="06f4e7d4dda81474e1c7c7aba455a788" id="0233f2f1-7ba2-4419-a8e8-90028db78f6b" chipset="acmgt3" name="Ext350" />
+    <guid config_hash="7669bc3762269a3c55885cdaf0f3df75" mdapi_config_hash="c22b1ae73b6c44d7c97068deeec727d2" id="86fb99a2-94a0-4830-bd6e-f22db96c9f9f" chipset="acmgt3" name="Ext351" />
+    <guid config_hash="440719e8f887ca5d1c0633167d4f42b4" mdapi_config_hash="be1da8c1d9ebc2333da4b26d465b2343" id="f189613f-66ee-466c-8ede-7fe9319d4aa0" chipset="acmgt3" name="Ext352" />
+    <guid config_hash="352cf837e4bb0018cb7829a0498c9e9a" mdapi_config_hash="f74f1e9d1764747a54ad862e4e961447" id="0f278998-80a9-4e06-8f01-3d59e0bbfb4b" chipset="acmgt3" name="Ext353" />
+    <guid config_hash="c175871aeb6b1e50663b782ca79bd5a1" mdapi_config_hash="56c1107a70be11bff094c71c0cdd5440" id="9a3c0284-c012-4094-80ed-bfb46ab762a6" chipset="acmgt3" name="Ext354" />
+    <guid config_hash="784f11ce0b305276bc93b52b37c11b89" mdapi_config_hash="fab117db94e4e811a511e4d004f91614" id="21ebf724-d9a5-473d-a173-04923a9014fa" chipset="acmgt3" name="Ext355" />
+    <guid config_hash="4a49074c95cb3692ede631c186e891aa" mdapi_config_hash="bf7ffd2a8789cb203296bdf1caae8743" id="44f5ade0-0120-4af2-9748-1bf550c3550e" chipset="acmgt3" name="Ext356" />
+    <guid config_hash="db49a37b258468f59b62334671c84533" mdapi_config_hash="afedd995c5cb9d9a8a641a4f3cfc2c76" id="feda9279-042d-4ad4-9d09-b08448fb71e2" chipset="acmgt3" name="Ext357" />
+    <guid config_hash="cf1861b1a218097dd180b9fe6d94af12" mdapi_config_hash="66ac67e0c830f90ec11150fcba0d6208" id="287a8880-aa97-4a61-bd9c-c4ea26cac685" chipset="acmgt3" name="Ext358" />
+    <guid config_hash="0b2c652e7eadca41da6f3a8ff8f8204a" mdapi_config_hash="5d241816e60ec5a19aedf67595bb70e3" id="6ec0ccb7-2c59-4c56-a541-5cae1577ccef" chipset="acmgt3" name="Ext359" />
+    <guid config_hash="003d9962e7cf0a90cf4318b4f0d4daf6" mdapi_config_hash="7fcfc93dbd94b9524822da3e5fa255f1" id="3c210e69-5238-4d7f-a875-5526e0d10784" chipset="acmgt3" name="Ext360" />
+    <guid config_hash="4792219d9f6509251595eca8048641d1" mdapi_config_hash="c2d9764103ed7391be292eef644dec89" id="3c9d3497-fa1a-4120-86fd-3b5c6dce0608" chipset="acmgt3" name="Ext361" />
+    <guid config_hash="4683655dfd86828ca197f80dd0d25052" mdapi_config_hash="d17bd8a6a090cd603b221fe72ef606fe" id="176224fc-33cb-480b-90b8-91225247a303" chipset="acmgt3" name="Ext362" />
+    <guid config_hash="f41d9031a77fa9af31f1a4819003baa7" mdapi_config_hash="61b8fe21039656a0e6e7e6cb08d16209" id="496b0c36-4849-4398-aad8-131402b38b41" chipset="acmgt3" name="Ext363" />
+    <guid config_hash="34fdf83dde42a201aa1592316aa83455" mdapi_config_hash="1723f218d115dd90a1f5105ac09225a9" id="0a0b4d5c-4cc0-4f18-84b7-bca6fde241b4" chipset="acmgt3" name="Ext364" />
+    <guid config_hash="c6d70d51893da920dd9648e5dab843f7" mdapi_config_hash="d44dede739359e2de11fd3b193389d3b" id="a726bcbf-febf-4840-8d84-d4e6ce3a7fb0" chipset="acmgt3" name="Ext365" />
+    <guid config_hash="2098a75ebabc581e2fc69cf69abf5bb4" mdapi_config_hash="9b3865850cb37f6a7cd75679a6db4d6c" id="14001989-7d14-47a5-bd85-d1d2b11d15c1" chipset="acmgt3" name="Ext366" />
+    <guid config_hash="bf5f29b4bf43500153ec5d4df7ae804a" mdapi_config_hash="f627678bbeb9d8bcc593245c95abcca1" id="421c3eb4-c4fc-4a3b-91b3-87a99603466e" chipset="acmgt3" name="Ext367" />
+    <guid config_hash="7668727611d371858f88e24bc362b77d" mdapi_config_hash="aaf7875b655c2add7fa873b19e23a8dc" id="854ec412-1ca6-4628-a51c-620c0c9297df" chipset="acmgt3" name="Ext368" />
+    <guid config_hash="c508e310dd9932a08d3fafda8c8a1192" mdapi_config_hash="52bff5097d61f066ac8fca0a0e802959" id="02175256-9f81-41d6-97e1-ace9e4e4cd45" chipset="acmgt3" name="Ext369" />
+    <guid config_hash="916f4085e4b3fa51bc2ec8f7558e633a" mdapi_config_hash="90442e4c6d1e49b10972ef39d8f9ab5f" id="5a99d803-48ba-4b76-b689-58bf406ceaa5" chipset="acmgt3" name="Ext370" />
+    <guid config_hash="e26ce1b5480a57cc99a2f33b368f84ed" mdapi_config_hash="f6ecc8126e5c447b06728b019931f7c1" id="64b5963c-65cc-4216-8f23-d96e4268dca8" chipset="acmgt3" name="Ext371" />
+    <guid config_hash="5afb717a83b0348e3979e2d0fef902b8" mdapi_config_hash="f9ed49ae81a90bcead4ea8336a82f6f6" id="7cf2bd19-9c7c-48df-8080-04b324c1a205" chipset="acmgt3" name="Ext372" />
+    <guid config_hash="e0560b92c652de91321620b3d6e66251" mdapi_config_hash="1a2ce28d7b027c36c4be56dab7804852" id="2ac3ef91-7515-4519-a5bd-743564e52e46" chipset="acmgt3" name="Ext373" />
+    <guid config_hash="0b3251f3f963eb831188de821e80ea08" mdapi_config_hash="37aabb3d0f3bec458524786143171b33" id="1bd48e5e-2efa-4f4c-b8c1-7600113347ce" chipset="acmgt3" name="Ext374" />
+    <guid config_hash="a3d400d9b379e21084701960c941f14e" mdapi_config_hash="c31db7b4846495f489d85c08f3dee459" id="e3e63d50-a2dd-4880-899b-fc676a87853d" chipset="acmgt3" name="Ext375" />
+    <guid config_hash="354b5fe7fb069fc4e79af2112aa9f344" mdapi_config_hash="405e2970209823a50a238b3bb9b19a31" id="eb0b8725-7fc3-481c-b4ce-c53f32c8e828" chipset="acmgt3" name="Ext376" />
+    <guid config_hash="21a89fc33ebad050aa5974c1ab72d02f" mdapi_config_hash="fc70a6c08666aa194171e043f5c57fd5" id="dcb8bd26-ed68-483d-b0c9-41a81b3717dd" chipset="acmgt3" name="Ext377" />
+    <guid config_hash="f33208673510549d737fdce81af828fa" mdapi_config_hash="9619d3bf3a05972ef1412d5d2ee0094d" id="2e0b9ef7-89fc-4a49-b8e9-53f2c4c17e1b" chipset="acmgt3" name="Ext378" />
+    <guid config_hash="9dfa43d46d579a7e3ad366f377084004" mdapi_config_hash="7f77041037046f4ac1f08b7d600e5897" id="08199543-f47a-47ac-ae63-c384083ef85d" chipset="acmgt3" name="Ext379" />
+    <guid config_hash="bcf27df3f74055ce4d9dc66d4d2218ea" mdapi_config_hash="a7692f9f1fef0808450b74ea68403aae" id="7f7a14d6-3e61-478e-a4a1-8c6cfe0eb323" chipset="acmgt3" name="Ext380" />
+    <guid config_hash="aa8c72517a8c840fad9807bb4b954d8f" mdapi_config_hash="1db942487c60fcb5a1e0565574d037d1" id="cbcdedd3-06c0-452a-80bc-2657fd042c53" chipset="acmgt3" name="Ext381" />
+    <guid config_hash="823f0a9f8ad93b61cc93f811e75b7f19" mdapi_config_hash="0923d7d0ecd15ab26d99e1a4a23a0c4e" id="a43eac54-7cf5-4d96-8496-514979ca4c9a" chipset="acmgt3" name="Ext382" />
+    <guid config_hash="ee6471e9ae19e7a7f6095253cb40259a" mdapi_config_hash="bd52c1038143e4b3185760f5e3f50079" id="ca5db39c-f550-4965-8402-553fbf5e7920" chipset="acmgt3" name="Ext383" />
+    <guid config_hash="b0d28e7d957ab009a062a6c92dc0b75d" mdapi_config_hash="b6dc25afd3721189d7e44b6b690000a4" id="45be76fb-6be9-4028-b98d-5cff32f7a51e" chipset="acmgt3" name="Ext384" />
+    <guid config_hash="ec2087ff0e9dc0aa30ac55265f673a1a" mdapi_config_hash="fa956833fb6c816a92dcd6905029b019" id="840b7ed8-e148-4503-9f1b-2df3a551c5c3" chipset="acmgt3" name="Ext385" />
+    <guid config_hash="a5a22e0cc555b672b169fc0675467e61" mdapi_config_hash="08cd856be325faff77d20d4d64cfc0fc" id="5475ddd8-8385-4631-a009-45fe26c8658c" chipset="acmgt3" name="Ext386" />
+    <guid config_hash="30fe5c3c9d967ea1a98aa5d381ee87f1" mdapi_config_hash="fffe3915b6d3da13306cf99de3a6676e" id="0906197a-4ac1-4af4-868f-8172f9b034ac" chipset="acmgt3" name="Ext387" />
+    <guid config_hash="edcfc03f9a5444b661c2477f0149388b" mdapi_config_hash="bb1ad569d100cc8353967cb27894e83e" id="ce2dc9cd-b9e9-4c74-934b-d1b3590b473c" chipset="acmgt3" name="Ext388" />
+    <guid config_hash="931fa7d62526828d368f6a3b8370258d" mdapi_config_hash="974447f20adf55d781d897ce3939f289" id="d87d855d-5896-4c76-b0fe-4120c5ad1a63" chipset="acmgt3" name="Ext389" />
+    <guid config_hash="b26acf3c22d765b6e82f9fc4866fc108" mdapi_config_hash="06f4e7d4dda81474e1c7c7aba455a788" id="d8b0608d-4fe4-4762-8df3-429344ff1a10" chipset="acmgt3" name="Ext390" />
+    <guid config_hash="7669bc3762269a3c55885cdaf0f3df75" mdapi_config_hash="c22b1ae73b6c44d7c97068deeec727d2" id="1635ad22-5347-4911-a15c-0716a7fd55d0" chipset="acmgt3" name="Ext391" />
+    <guid config_hash="440719e8f887ca5d1c0633167d4f42b4" mdapi_config_hash="be1da8c1d9ebc2333da4b26d465b2343" id="e001e26e-5522-4f0b-a437-e6d6c3144a8c" chipset="acmgt3" name="Ext392" />
+    <guid config_hash="352cf837e4bb0018cb7829a0498c9e9a" mdapi_config_hash="f74f1e9d1764747a54ad862e4e961447" id="64ea4666-79c3-4e0a-a68e-5a65ed571a8d" chipset="acmgt3" name="Ext393" />
+    <guid config_hash="c175871aeb6b1e50663b782ca79bd5a1" mdapi_config_hash="56c1107a70be11bff094c71c0cdd5440" id="437d1633-c275-49f0-9994-4e94672ac99c" chipset="acmgt3" name="Ext394" />
+    <guid config_hash="784f11ce0b305276bc93b52b37c11b89" mdapi_config_hash="fab117db94e4e811a511e4d004f91614" id="ed6321f2-59be-4560-889b-5682128d1177" chipset="acmgt3" name="Ext395" />
+    <guid config_hash="4a49074c95cb3692ede631c186e891aa" mdapi_config_hash="bf7ffd2a8789cb203296bdf1caae8743" id="c3a07e91-05fe-458d-a578-55b67eb8625a" chipset="acmgt3" name="Ext396" />
+    <guid config_hash="db49a37b258468f59b62334671c84533" mdapi_config_hash="afedd995c5cb9d9a8a641a4f3cfc2c76" id="25a1e5ce-835d-4659-896b-a7279e2df94e" chipset="acmgt3" name="Ext397" />
+    <guid config_hash="cf1861b1a218097dd180b9fe6d94af12" mdapi_config_hash="66ac67e0c830f90ec11150fcba0d6208" id="13b89a1d-1377-41f5-ba3f-800afcfb86a7" chipset="acmgt3" name="Ext398" />
+    <guid config_hash="0b2c652e7eadca41da6f3a8ff8f8204a" mdapi_config_hash="5d241816e60ec5a19aedf67595bb70e3" id="dea45968-7d62-4989-bb89-ff1ffcf44402" chipset="acmgt3" name="Ext399" />
+    <guid config_hash="003d9962e7cf0a90cf4318b4f0d4daf6" mdapi_config_hash="7fcfc93dbd94b9524822da3e5fa255f1" id="5df56b7b-4cd0-4f36-b91b-44e4f47ab5da" chipset="acmgt3" name="Ext400" />
+    <guid config_hash="4792219d9f6509251595eca8048641d1" mdapi_config_hash="c2d9764103ed7391be292eef644dec89" id="f48f4171-49a5-4a0e-bfcc-9f1f89569138" chipset="acmgt3" name="Ext401" />
+    <guid config_hash="565525ffd215a6c665ed3619f2d9e8f7" mdapi_config_hash="21c96928eee0873059cdb9969e287ba0" id="bed2251c-d53e-402c-9100-2f27febc1672" chipset="acmgt3" name="Ext402" />
+    <guid config_hash="778b41293b4b7cad38f9d0e7d38dfa0d" mdapi_config_hash="6b28a9056b8e5df02fbd0e419d07499b" id="1894c9d9-8ba5-41df-97ba-6cadd89a8418" chipset="acmgt3" name="Ext403" />
+    <guid config_hash="7dd397a18515676ec3dcf6875cc1183e" mdapi_config_hash="634f6b3e1e55e867dc9bc4f70cbfe3c6" id="8712ea52-9c71-4036-a736-308b77af503a" chipset="acmgt3" name="Ext404" />
+    <guid config_hash="39b5c50c7b6c3d1f858991de68833d5f" mdapi_config_hash="f051fabe94fcc79797cd90a1be344391" id="8e9ae82a-577e-4804-b314-de02d7206903" chipset="acmgt3" name="Ext405" />
+    <guid config_hash="1d02596c4edfdfca374f4a99e06490ff" mdapi_config_hash="ce1d03a2624971c870035fb3e8ca1ba8" id="654e925d-2c2a-49a9-bd44-3470039c6e86" chipset="acmgt3" name="Ext406" />
+    <guid config_hash="b711f855b1439620388e26362f818104" mdapi_config_hash="9c5781684c870368a7f6288add10440f" id="f9c431af-992b-4f6c-b068-4e89ca0b3538" chipset="acmgt3" name="Ext407" />
+    <guid config_hash="aa2343e4e6e1f5085d6fd46e5c178143" mdapi_config_hash="1fe8f6ca9ead03111fe046d8672aeee4" id="c7fe43dc-ae1a-45d9-b64d-60fac946a070" chipset="acmgt3" name="Ext408" />
+    <guid config_hash="0289b5d358e5a810c63561a47b7ad6e3" mdapi_config_hash="56f0355d45fccda230c2e271a6a592f9" id="0b7c4602-76f0-4a2e-abe4-f0829f2f9b02" chipset="acmgt3" name="Ext409" />
+    <guid config_hash="3e0b5850b3d0cabac670e3d931551a3a" mdapi_config_hash="fde4a8d2424b85b2647b34b6e43d49fd" id="64a617b8-cae0-439e-b014-1e70e72ac75d" chipset="acmgt3" name="Ext410" />
+    <guid config_hash="eb9650578fb1ce03a8f8168d57556362" mdapi_config_hash="777806424bb4adab7ba0e3399221de95" id="304aa1c9-59be-4f9d-ab68-2d607a9b90ee" chipset="acmgt3" name="Ext411" />
+    <guid config_hash="5942f4b4f43299920d088192cc50d47c" mdapi_config_hash="3815a1d691c33ac174026dfcb90949f5" id="d9a3534a-4dca-4b28-b8e8-d447017b82a5" chipset="acmgt3" name="Ext412" />
+    <guid config_hash="e7142c3a86bfd820f714e07233dbd8fa" mdapi_config_hash="e13b60c9b41dafa399ef0c94262243f7" id="594a085e-c744-4544-b38b-196e9b52d1b0" chipset="acmgt3" name="Ext413" />
+    <guid config_hash="3f3a055f866b9f54d7925db6b7df13d2" mdapi_config_hash="f5ddb946dfe27f591c3703fef1addce5" id="99fd5805-5f5e-48ae-95d1-6cb7d5c09bfb" chipset="acmgt3" name="Ext414" />
+    <guid config_hash="bfaf72687d30faea35994a239e14bf12" mdapi_config_hash="795e2b380b76b048972eecab8a873b96" id="1be807ab-2f67-45bb-901f-9bb9d805d4a7" chipset="acmgt3" name="Ext415" />
+    <guid config_hash="9a5f753c0fcbc4c74d39e53ef7a76efc" mdapi_config_hash="35202e31bdf2bb3244bb74d69d009826" id="8204f26d-37d5-458f-aac4-e1120b674145" chipset="acmgt3" name="Ext416" />
+    <guid config_hash="41c9663fbfb9efee4d3489468d02c4d0" mdapi_config_hash="364a95814a3c2efc472d722af0405833" id="7f38c38f-0f80-4e50-9269-dfc0e08b0660" chipset="acmgt3" name="Ext417" />
+    <guid config_hash="1205381129d38276b9d747bb120ea226" mdapi_config_hash="c9c1f6b5d4372003c76fad67b81a5cf4" id="2654399f-54e6-45ca-931d-1f01c9f8ca06" chipset="acmgt3" name="Ext418" />
+    <guid config_hash="c19ad59775884ffe7b842fb6ca464ae6" mdapi_config_hash="0b32f9419989fe835aba5c86dde85f1f" id="8a2b3a4e-791f-4f5a-931d-78e3a6c673bb" chipset="acmgt3" name="Ext419" />
+    <guid config_hash="ac5393716ff764f494362b1f2b4cb60d" mdapi_config_hash="bf9b0fe2633654fdb7ad94148bb3225a" id="d5d2ec61-a953-487d-9e9f-9e15c80ad7ac" chipset="acmgt3" name="Ext420" />
+    <guid config_hash="f97d8b2baa9368e6c762e2b474f12f55" mdapi_config_hash="a0d89a98fa88c90d29ecb5416c3ecde6" id="581a1d88-3759-4cf4-ba59-4c25377cdece" chipset="acmgt3" name="Ext421" />
+    <guid config_hash="153861a319e2661463346c69cd1eae6f" mdapi_config_hash="bef15c6f614901fb73b11aef7cc3cb4f" id="316fefa3-9d16-4eaa-9904-15b2203ec95c" chipset="acmgt3" name="Ext422" />
+    <guid config_hash="4809264e0d152b35389826e2190a970d" mdapi_config_hash="e6b027af40084635ca439219675bae99" id="6e0a01cd-c537-45e1-aedd-3e181b7a7c01" chipset="acmgt3" name="Ext423" />
+    <guid config_hash="0630c3343e1646c7d4c23f5bbd5a2696" mdapi_config_hash="c0cb35547c19bafbf75ca79e45811f4f" id="9141c2fe-b37b-4f53-a292-a09a3a54dbd4" chipset="acmgt3" name="Ext424" />
+    <guid config_hash="3f2ccf0b87ca7bb24b9af2b47cf17fec" mdapi_config_hash="a5d422cb67d11f94a297bce3c4986c9c" id="b655bffc-0284-4ad5-847e-caf886a651bc" chipset="acmgt3" name="Ext425" />
+    <guid config_hash="abf13254e85fd889bee51df04cf9dac2" mdapi_config_hash="c175a1d89a40ba2f951c5ec3c229e527" id="5aca86ba-4035-4c53-af84-25152bf169e3" chipset="acmgt3" name="Ext426" />
+    <guid config_hash="8619c3fe81c5fda8bb186241476a21aa" mdapi_config_hash="8773b3ed6d6fa23b0301ffeaf85d8c08" id="0ab07bde-21c8-443c-b0b2-0ab740168d29" chipset="acmgt3" name="Ext427" />
+    <guid config_hash="85e5bf227031443dbeb0004bbf85d222" mdapi_config_hash="6a860ce3436c30532e3aa6ae4415354a" id="62a24a66-2325-40b3-a945-6ef37508674a" chipset="acmgt3" name="Ext428" />
+    <guid config_hash="ab7eb1ff6241683b3ea23b12e4e65ad9" mdapi_config_hash="1f51c6f6fc968608bc2daba0408dc0da" id="47acaafe-6b68-4d1d-a674-8d94ed118606" chipset="acmgt3" name="Ext429" />
+    <guid config_hash="b6a59649942eac9299d8b27f471579a3" mdapi_config_hash="92d47d4f0b718bbb5ec7d3c4f9166e66" id="72cb7918-7248-437c-ad7f-a0b2b8815148" chipset="acmgt3" name="Ext430" />
+    <guid config_hash="cc200dfffb9b298a4455d23f48263440" mdapi_config_hash="f425b1232803a94f21fdf6f50e51f84e" id="0ccfdef6-3cdb-485c-9aba-d3e0040e305e" chipset="acmgt3" name="Ext431" />
+    <guid config_hash="e4c5aaed23f1360734c7dd2e661d9b2f" mdapi_config_hash="17d666c68d57136d9e6e5d0ad604d1d6" id="e9b7707a-c96e-45dd-b513-fae7d7468ddb" chipset="acmgt3" name="Ext432" />
+    <guid config_hash="4a412208741539ecc74e73a4f18e547f" mdapi_config_hash="caca18d4c0cfa0c74689b45fd3d53f78" id="4ecad344-9bda-4c3e-b310-284a9d249028" chipset="acmgt3" name="Ext433" />
+    <guid config_hash="6aaf52fea6822f3af6fc7fc3bcd46433" mdapi_config_hash="bd7512498350d37c5bd83ce0a9566bd2" id="ddb99956-0871-42f4-8b6b-dbca21a726ee" chipset="acmgt3" name="Ext434" />
+    <guid config_hash="d89a6b3f24f98205fd20d42a38937f12" mdapi_config_hash="fd7ff26be4365af31b50bfe4e5a42b77" id="a992c151-134d-4959-879e-2c5b8dc2b98a" chipset="acmgt3" name="Ext435" />
+    <guid config_hash="4e6a45e0919d2a86be1b1dfda0cd69fb" mdapi_config_hash="86ea6a243725ebe329ffe5231984d749" id="05453f6f-3850-4412-9dc5-aacc57dc23ee" chipset="acmgt3" name="Ext436" />
+    <guid config_hash="b0e6c3f75ad6f28533800760257eac50" mdapi_config_hash="df4e81ef669fa5d4b548fa72400d990b" id="6a863ebb-4f0a-4a6f-81a0-979a0a972ce1" chipset="acmgt3" name="Ext437" />
+    <guid config_hash="5e74374f232dd66002897b3db70814b0" mdapi_config_hash="20e8d3b043eb806ab3808db82b60423f" id="5b95cc2f-5942-4fe3-be28-8940db9b99bb" chipset="acmgt3" name="Ext438" />
+    <guid config_hash="97e9078a622dacb4c6aaab21abc1de4f" mdapi_config_hash="2408e86fbdc16ca77d6cdb789d12a337" id="1474625b-322c-439d-90e3-53c245a07f97" chipset="acmgt3" name="Ext439" />
+    <guid config_hash="4ad598c436fef18f7b666f2e2760dbe0" mdapi_config_hash="873f3c37286eff7fee0143d4281a24d7" id="9112768a-99fd-4861-b1b2-ca7eb9a46228" chipset="acmgt3" name="Ext440" />
+    <guid config_hash="baf4e59a08a52d3c14bc694a7b70f3c0" mdapi_config_hash="36661d79efd0d8f1537b5b9029e42368" id="f2579b7f-2747-49fd-b5ed-ef10662ce62a" chipset="acmgt3" name="Ext441" />
+    <guid config_hash="b9a73d315d5203ba8f844b8550e4c73e" mdapi_config_hash="bb9ac5a4dfe508f4fc40d9c82617b2e6" id="f572f1c9-3f61-48e8-9bd1-d58a8cd60520" chipset="acmgt3" name="Ext442" />
+    <guid config_hash="241cfdd727daaf1cc8577ee89b618938" mdapi_config_hash="5fc0604f5fa399403986cec674228c4d" id="4c923c96-134d-4802-a61f-9c3e50af7e9f" chipset="acmgt3" name="Ext443" />
+    <guid config_hash="c45bd4ad69caf421d99c9b0a74816689" mdapi_config_hash="e31e1f67558db7aea87fb6558a97e0c5" id="c89197d6-8bce-4479-9961-2c50e8ffbcf7" chipset="acmgt3" name="Ext444" />
+    <guid config_hash="86231e412f91d74a56915efe3840428f" mdapi_config_hash="0da6760597d5891a29115b51b27c3a9a" id="87885a48-5d45-47e8-81b3-176db423b454" chipset="acmgt3" name="Ext445" />
+    <guid config_hash="c65fd3106da01870a15fd2f8e8ff444b" mdapi_config_hash="b9b9d1323fade3ec51fbf8bac25bada9" id="323e04f8-e194-4032-bd1f-159b0131f1bb" chipset="acmgt3" name="Ext446" />
+    <guid config_hash="717f79980285f53c545fe0b329b481d2" mdapi_config_hash="069b2effa876de094f0a62eb0a867771" id="1999b632-cd36-49ec-a888-0a458f9f5673" chipset="acmgt3" name="Ext447" />
+    <guid config_hash="4525cda5f08028c2f1875b5484021700" mdapi_config_hash="ba6eec9e4f2550641143b6f7fab55a66" id="71487a9a-9e3f-4bee-95b9-cd42969e4278" chipset="acmgt3" name="Ext448" />
+    <guid config_hash="79b946b869b1247842c7511fe6d2945d" mdapi_config_hash="f109972ca1b60b6823821d6f634d77a0" id="299dff90-c563-48f4-b1b4-eacf678b6727" chipset="acmgt3" name="Ext449" />
+    <guid config_hash="0bf6f6dd56b2c6d336a1781aa04b1502" mdapi_config_hash="d83b675b6c2e45da6d5e38f14c07b25a" id="85729a73-d105-4f88-9f85-833961661877" chipset="acmgt3" name="Ext450" />
+    <guid config_hash="461fc5b37c585489544c8b30c6d7fa67" mdapi_config_hash="3e98c9037946c5928c0a8bf154c2cde3" id="74df82fd-abc3-4934-8cb5-cc71324c1816" chipset="acmgt3" name="Ext451" />
+    <guid config_hash="8d1ecf39aa7832cbb7bf760bd2f13bd6" mdapi_config_hash="e628765e7c5efab3dc2e2e9732006d64" id="d1c28b9e-8ce0-4750-bf4b-ec446d4c3916" chipset="acmgt3" name="Ext452" />
+    <guid config_hash="fd19478ad4dea6da61caa9c314b0c346" mdapi_config_hash="cbf5a565723de1db8e228c6aed4f2644" id="56876ce8-6162-4812-a5ff-acdf8b896a9c" chipset="acmgt3" name="Ext453" />
+    <guid config_hash="08daad6beed06b0a6f1accc8a9b38d0d" mdapi_config_hash="639f98aac3aaaa33017c30309e3adc93" id="4c84ebed-5683-417b-8b31-d60919bdf00e" chipset="acmgt3" name="Ext454" />
+    <guid config_hash="60b4fd27d58e4d0f16f449005dc056f8" mdapi_config_hash="45100f131377ea7d63ea6da81c998d81" id="870f786b-e570-427d-868d-bdead22a485d" chipset="acmgt3" name="Ext455" />
+    <guid config_hash="cd58e9f6e1ed094df520055bbf9e5afb" mdapi_config_hash="2962a7e83576cdad7432b888568e3d5f" id="7385d290-7061-4248-8b13-ac4abe1212d6" chipset="acmgt3" name="Ext456" />
+    <guid config_hash="59fdefcebea930b738587742f647bafd" mdapi_config_hash="8137d97935bfd603149c0890dcde572b" id="e92a854c-ef93-44fe-a9c9-2e564fd57215" chipset="acmgt3" name="Ext457" />
+    <guid config_hash="06737eb8fef0aa339dcc5960928cddb0" mdapi_config_hash="74d3377292d0850accfb45a17420ee87" id="0839f197-8c02-4ab5-adee-f26d39d57060" chipset="acmgt3" name="Ext458" />
+    <guid config_hash="aed7ab1a9b5c0754db7faaeffbcbc3a5" mdapi_config_hash="87bead09a4791bd66eea1734d3c55842" id="b39c926c-557f-42d6-9ab8-3dc749774ca2" chipset="acmgt3" name="Ext459" />
+    <guid config_hash="dd354ed3b063f3cacfd351c38919183a" mdapi_config_hash="d153c010210ea77a81b5a0c372aa0412" id="9a7989c1-a520-4785-9aeb-f522bb692de6" chipset="acmgt3" name="Ext460" />
+    <guid config_hash="c0555923d51318b1413e476c037740c3" mdapi_config_hash="5a161fb49c8d5377fa13294e7399a31e" id="6eb94cf4-077d-4d52-89c6-272cb33fd9bc" chipset="acmgt3" name="Ext461" />
+    <guid config_hash="7f67010c34704c1863df8024edde8632" mdapi_config_hash="533b62ab153e7b96cde60055b62bc13e" id="a50d2370-c6ff-4a53-a6dc-b9523562b371" chipset="acmgt3" name="Ext462" />
+    <guid config_hash="bc07c48142ac727e2b39e20d891d52c2" mdapi_config_hash="05d49ab8f2e886c17bb46498a0370cb0" id="b737779b-4652-4892-be0b-aa8764d116ba" chipset="acmgt3" name="Ext463" />
+    <guid config_hash="88b0f394222420ca175ecddc1a78f6bf" mdapi_config_hash="1d8416037f70bf58f2e7a5db0cc160ce" id="447d463d-77e3-4bb4-9f02-7523eefa3549" chipset="acmgt3" name="Ext464" />
+    <guid config_hash="c50931c8859b71d0f63a3a781c88be28" mdapi_config_hash="9c1e026eb7dd79c1faa4ca243e1eb3fc" id="0b0dd8de-3217-4d32-9033-988a7a4a2f59" chipset="acmgt3" name="Ext465" />
+    <guid config_hash="fba5a73a68dbb764077d1e6f11061390" mdapi_config_hash="1a191cb7909055011f0167505da69512" id="46a09e7c-f9e1-4eba-ac1c-4151dc54d51f" chipset="acmgt3" name="Ext466" />
+    <guid config_hash="ab26c68707585b41c9268b8c302652ab" mdapi_config_hash="ab5137a89c28d279f4c922f76900c3fe" id="59c513fe-9984-455b-9b07-5b5f02c36e70" chipset="acmgt3" name="Ext467" />
+    <guid config_hash="411dfd4865f250f7f13b70c1dc210a53" mdapi_config_hash="9e9e1ec1e148c17c0d8aa8ea69aca70f" id="aa729499-9f35-436d-91ad-7100098dfd47" chipset="acmgt3" name="Ext468" />
+    <guid config_hash="eecb8626d28d9fd7fe5cfb50da1dd9d5" mdapi_config_hash="289e6cbc5d57343a182d5bb64e26e593" id="dea127d1-19d5-4298-b9d6-cf4a21be1563" chipset="acmgt3" name="Ext469" />
+    <guid config_hash="0c7bbc97573b03d0e19d4a5b1196c9d4" mdapi_config_hash="5a1c1d910c357a3e9f80a6612b11e01d" id="1dc79687-d7a2-4c2d-b810-0a6d5db141f6" chipset="acmgt3" name="Ext470" />
+    <guid config_hash="71560dd33f75657f5051994603438ab9" mdapi_config_hash="7e344671dfc3def53584aa2f28d0f5be" id="4487fcbd-dcf6-4f08-9512-1cadbd7f246b" chipset="acmgt3" name="Ext471" />
+    <guid config_hash="de98962d5a57c0aa0cdd495c41911f7b" mdapi_config_hash="4ea72be14c3aeb87aa2d3eb6cd7db446" id="641f5e4b-0404-456f-9aca-03154415cd34" chipset="acmgt3" name="Ext472" />
+    <guid config_hash="2b7c1419f1706a366b1d04952ee133c1" mdapi_config_hash="15720dda97a2b5d37623b6d0b1a0caac" id="2055dfa1-2b3c-4939-b905-dc3cfc8a5124" chipset="acmgt3" name="Ext473" />
+    <guid config_hash="2cbde2a80e941745417ca844498adfbc" mdapi_config_hash="3c4df221f75a524726a6da4de21552fc" id="c16b25d4-0460-43ca-a0c0-eb198877b615" chipset="acmgt3" name="Ext474" />
+    <guid config_hash="1d710775ed9c0b93b30309b571d8e00b" mdapi_config_hash="687a440a688a6e76e7b9f9aecf3554e5" id="939bce80-8718-4d3d-99ff-7908d07f7ca5" chipset="acmgt3" name="Ext475" />
+    <guid config_hash="adb8b6e9deea07ca2abd5ef1d0077b1d" mdapi_config_hash="8f751b644b8ab582f768ab9b2aef9108" id="d7cce1dc-00c2-4548-a0cd-469134c446b5" chipset="acmgt3" name="Ext476" />
+    <guid config_hash="6fe125560c8a16a74c082d56dcedbe8c" mdapi_config_hash="e775598915b331072af7dcc8a53537e5" id="c939c362-8ff8-4c4c-857f-c429c61dbaee" chipset="acmgt3" name="Ext477" />
+    <guid config_hash="9a6db5608b56252f791e4a819145e0a9" mdapi_config_hash="4366bcd940f81cb7993b412cea95b86f" id="59ec69a0-17fb-4d3a-b303-8463a4631464" chipset="acmgt3" name="Ext478" />
+    <guid config_hash="6769a79a3c30a4df78ee59bee16b22b2" mdapi_config_hash="d4639cb9b9176cfbe9a2fbe05acdea93" id="8e1b82ed-be18-45ae-88e5-2e3dfe96935f" chipset="acmgt3" name="Ext479" />
+    <guid config_hash="5588afe09365136d8932dd7a73683c98" mdapi_config_hash="8836290134ce2299aac44a528a4d6973" id="c4e0c25a-5e43-4238-a7c9-6cca88251495" chipset="acmgt3" name="Ext480" />
+    <guid config_hash="84f3050a52808d6ad68cee4c0815ea50" mdapi_config_hash="3db66d66df8a853c71666326e1b01e93" id="d70cd6f5-4ec0-4645-9654-c619926928d3" chipset="acmgt3" name="Ext481" />
+    <guid config_hash="d7030460a172f1accd4d78f3cbd6227b" mdapi_config_hash="19c0b21d799f047dd3cd5fe733fa1cd5" id="d7028d09-39d0-4009-996f-a4b193ee726a" chipset="acmgt3" name="Ext482" />
+    <guid config_hash="36db18fa0c297eedfefe3220582c03d4" mdapi_config_hash="7f8bd7fd23bd1b297e39705bad1e1e9b" id="096dd150-0f36-4af1-a2e3-2a309d19ff11" chipset="acmgt3" name="Ext483" />
+    <guid config_hash="e31eeca04b11a0eef861a50cf647ea08" mdapi_config_hash="8d7f6bae3754783f735f7bd633f52c1b" id="a3d45e15-66d1-44f4-8e1d-a0c131cf0c20" chipset="acmgt3" name="Ext484" />
+    <guid config_hash="2b0be92c62089147ec929b2799d8b305" mdapi_config_hash="11ddf6af014483dda33f8c3df20cf0af" id="26fe4473-14e3-4ec4-825b-edec00c9c60e" chipset="acmgt3" name="Ext485" />
+    <guid config_hash="d85c4fa74b860a299a55dfc0f7662cf7" mdapi_config_hash="c1ccc5b626aad7d4ece15695fa44a2ae" id="5743595a-ce3d-4942-b5e1-60f90bfe6d15" chipset="acmgt3" name="Ext486" />
+    <guid config_hash="538feaf90d74ad5a8637eadbc6991d78" mdapi_config_hash="e59cb55f7d295fa34d2aeabe1b1b5481" id="bcce765d-4327-4ce9-8dc4-beae0d4c8738" chipset="acmgt3" name="Ext487" />
+    <guid config_hash="98c4fd0bbfaa66f3664083ffa97e6113" mdapi_config_hash="0d76281d1cac0ab935039f4e47698c84" id="075a4845-117c-4d77-b2b2-b7184a875516" chipset="acmgt3" name="Ext488" />
+    <guid config_hash="8018f095d96cfc59f18b537f9e098561" mdapi_config_hash="84d89976904c9cc8c7a4650615cf83d5" id="4a9f4ce9-4ca3-4bbe-ac73-5f4299841575" chipset="acmgt3" name="Ext489" />
+    <guid config_hash="5519147608b0a2d06ceee7d8b2b8133f" mdapi_config_hash="4cdea954c4276dbf5f3bbb875df287a3" id="f24a588d-b6e3-411c-a4ba-7fe5ce65bb18" chipset="acmgt3" name="Ext490" />
+    <guid config_hash="507fd30fd3057ba7fe0bb56c1df81790" mdapi_config_hash="57ab3a2aa42d7281291058a377b3bbc1" id="70b12fa6-060d-4c67-971b-1c5c6b4fd058" chipset="acmgt3" name="Ext491" />
+    <guid config_hash="31db0da0e80572e0446adeeee7adf2db" mdapi_config_hash="91d0d3e33224d40f3cacfccdda268842" id="0a0b3e8f-9f83-4a85-a594-dd6fb87dc2ff" chipset="acmgt3" name="Ext492" />
+    <guid config_hash="b6cf112f53641d16dfaf789417da185c" mdapi_config_hash="f2d5fdd1553ebd5b2eaa850926093c30" id="413ee32f-ea00-431f-b325-39bb65fa8a82" chipset="acmgt3" name="Ext493" />
+    <guid config_hash="966ed3e6172963b604008599601e0f2f" mdapi_config_hash="c8ac1037e6ba33449898f2cd743d3d00" id="7a411505-9241-4b5e-b609-5c4788bbcb6c" chipset="acmgt3" name="Ext494" />
+    <guid config_hash="75177d16fe784efdf9bf5b97ac19b9af" mdapi_config_hash="e7234db17ef1f76b87cef715f95f9315" id="6db60455-95d8-4fe1-8205-194b741b7f9f" chipset="acmgt3" name="Ext495" />
+    <guid config_hash="3d4336527a84f7b17395dca1a675b715" mdapi_config_hash="72dd60bdeb480010dd91aac1f5471f73" id="2b445bfb-5e26-4638-9831-6d3108343565" chipset="acmgt3" name="Ext496" />
+    <guid config_hash="5bfdc0dfc22ea8dbd48b6442324eed19" mdapi_config_hash="34dacfee573a5e0f86deb1a92b77a39f" id="5f3eb4c5-fc54-471b-9f82-54de40bcbc96" chipset="acmgt3" name="Ext497" />
+    <guid config_hash="1475cc3f105c8b7b2d09d1105ada0b6a" mdapi_config_hash="309906dd5a413d7f064324a8a1b46c18" id="8ab9e563-9c33-4b0f-adde-029bd2cd484c" chipset="acmgt3" name="Ext498" />
+    <guid config_hash="7bb8e179f6e1922b3781270eccacc0b5" mdapi_config_hash="76b72c993f5fc49c33595fe1d4c28950" id="2d96310e-89ce-4f66-b558-0b253531b58f" chipset="acmgt3" name="Ext499" />
+    <guid config_hash="ce1ed6ac7b6b646528efc6ae437d0093" mdapi_config_hash="cef8755889987f6e59c6aa779f89a339" id="a9c29325-cfab-4d4b-be96-75c69b8ce57f" chipset="acmgt3" name="Ext500" />
+    <guid config_hash="7e64d60b7fed53aefe4b922cea79adad" mdapi_config_hash="0ad1ce2abb2241fe714eebbc54ffa27c" id="262f0b30-997e-4ee1-85e6-6d6647a17611" chipset="acmgt3" name="Ext501" />
+    <guid config_hash="54d6caf1fd42c342c383a9444b6aec52" mdapi_config_hash="869c91d121bdcf6d97f184bb10593d30" id="07b710c4-da24-46fa-bd26-5e761066024a" chipset="acmgt3" name="Ext502" />
+    <guid config_hash="e1be5247d18cf58c93c1291c756fd479" mdapi_config_hash="d232d835325028637d7a4a7ba382b742" id="0b727214-7830-4c26-a3e4-7dd5c446083f" chipset="acmgt3" name="Ext503" />
+    <guid config_hash="3561eb21e7cd5db1bb5cc14a254f592d" mdapi_config_hash="a1788996357fb5003bac234cb5a368b3" id="1864f248-2169-4ae4-aae4-a16c2ddd0a86" chipset="acmgt3" name="Ext504" />
+    <guid config_hash="ebce2f3df51d249e0a93a9068f320b54" mdapi_config_hash="cc4155758e90a3b9f9551b0417247d5c" id="8e644770-9bee-40ab-8a9b-359bf441e5d5" chipset="acmgt3" name="Ext505" />
+    <guid config_hash="15002033448639403d367bc03bd60606" mdapi_config_hash="ef234f0bbbfa6e3a5e65a658c07b3ec1" id="2c979a9c-11b5-4d43-bf6b-6f89a4e93dd6" chipset="acmgt3" name="Ext506" />
+    <guid config_hash="e5a73736dac16241f57f9c75ac6b5240" mdapi_config_hash="66ed38ae3f7e0e4920974db8289b9920" id="2f346753-30a5-4c6c-b6bb-5b5605a42cb1" chipset="acmgt3" name="Ext507" />
+    <guid config_hash="9a56a1213c82cea823f98b897c5bcb16" mdapi_config_hash="c2ab74c5335f17c3586295d8572de62e" id="4e07923a-091a-49c7-b823-b63e43c6fa19" chipset="acmgt3" name="Ext508" />
+    <guid config_hash="26d70ca9f31a762f8872425d9526083e" mdapi_config_hash="81e387c21c09d4b1a40764d24367b2e9" id="58350136-7dcd-4d4a-84eb-98cf90542527" chipset="acmgt3" name="Ext509" />
+    <guid config_hash="3e3d73e87043b4cff93ef9d364a879f5" mdapi_config_hash="b5dac651b688c28df2998d381bb3d5e5" id="8048a7fc-5649-47d1-a5d6-eec5249fe69b" chipset="acmgt3" name="Ext510" />
+    <guid config_hash="de12b887e71b3103b6da108e3335c505" mdapi_config_hash="2e6fb82b20511ff84cdc0f9564b5f2e8" id="a9829627-0ebb-4f96-b62c-66c235fb73b5" chipset="acmgt3" name="Ext511" />
+    <guid config_hash="c9e85ee33688ab0c21f38bcd84594b26" mdapi_config_hash="bf22d36e32664c5c660a1ee7c1768a3e" id="602d5bcc-18e2-4679-a253-b8447ae2934c" chipset="acmgt3" name="Ext512" />
+    <guid config_hash="7844b268cd0aa8187c7ad6e83fc65a0f" mdapi_config_hash="23d400ac149a6c315bd690d09df1a2b1" id="019ce184-cf6d-4457-aa35-e2b78d84b46f" chipset="acmgt3" name="Ext513" />
+    <guid config_hash="5df5d49e766b58936fe2df2bb18769a4" mdapi_config_hash="23f1c416c09d7f599c9e4fee3ad12bfa" id="207d4da9-9398-48d6-8853-c1f6c2162ff8" chipset="acmgt3" name="Ext514" />
+    <guid config_hash="9c75930cb38de95eb5e9643faa27a5f9" mdapi_config_hash="8f093f1ddc66c471f33aef986509fecd" id="17dee536-5513-4419-9551-d4f5dc3bae81" chipset="acmgt3" name="Ext515" />
+    <guid config_hash="e9816a1d86d01e0e3c3c667cc2149fab" mdapi_config_hash="b732849d8064a42ea408a8ff78c797cd" id="59061d86-24fc-4b93-baa8-c1955328ef28" chipset="acmgt3" name="Ext516" />
+    <guid config_hash="adc4d3baf26b9d81093a92a9799f2faf" mdapi_config_hash="95d02d08f591294a82c7b8989af16548" id="e626d1fe-ab2c-4728-a8d8-3be5dd359551" chipset="acmgt3" name="Ext517" />
+    <guid config_hash="778c090ed8ac80bad826ef07c33b37d1" mdapi_config_hash="c2c21553c65927ddab24d4068a93022f" id="10a8e59b-ad36-4def-a007-068dd782a72f" chipset="acmgt3" name="Ext518" />
+    <guid config_hash="7f57b28de62ae66a91abffe2f4c50915" mdapi_config_hash="76d15720d1551000e531f8ce0e5d0244" id="e433e93a-0a7c-445c-957d-ed4ee1fc2f80" chipset="acmgt3" name="Ext519" />
+    <guid config_hash="fa0ce1bb783756758851dd60d5a4c57b" mdapi_config_hash="d916a5f533b22fa9e7f737ecbb472e01" id="19225cc5-e529-4943-a909-3cc9f147129c" chipset="acmgt3" name="Ext520" />
+    <guid config_hash="afd005ac38b40acb7525cee020b54f37" mdapi_config_hash="29c1e5b2904ecba477828a963f828b7b" id="b3add843-8502-41a9-a341-95f077741e80" chipset="acmgt3" name="Ext521" />
+    <guid config_hash="d9748ba7a54c0fe5b69fdcaded72793e" mdapi_config_hash="c97ca8bf57de25cd935eb3ee02b8b592" id="24c9f0f5-1452-4c1b-9c37-5d5820da5723" chipset="acmgt3" name="Ext522" />
+    <guid config_hash="d4abf37807dad85dd724f4a2f6d4526e" mdapi_config_hash="11779157de9621ce97046ebeced5a569" id="8a3fad35-8f48-492c-a3c0-71d60b35cc9f" chipset="acmgt3" name="Ext523" />
+    <guid config_hash="468e87c719fbf85fedd546a68e906f38" mdapi_config_hash="72de3fba1f51c4f320255a7b53de255f" id="d78e5523-29e2-486c-bb2c-f850c02f0538" chipset="acmgt3" name="Ext524" />
+    <guid config_hash="6258cf6b2cc2a410ed0b1e4238e31463" mdapi_config_hash="45ddae34eed2c6233b4dfb187b1339b8" id="f9a891a4-ce16-4f09-9d87-4b9462537ac8" chipset="acmgt3" name="Ext525" />
+    <guid config_hash="45a1e9130c9e58640506749fa992fc99" mdapi_config_hash="ba61f231486bed73c6f61d33bc9d7174" id="d09595c4-1c94-406c-94f5-9eaa44a56b63" chipset="acmgt3" name="Ext526" />
+    <guid config_hash="6b9d8d73ef58298c5fd0ec6f2c827e7d" mdapi_config_hash="78baec9820e47f9a7802419c085bf0a9" id="e1bc7df6-3d10-4f45-881c-398cd9e3e037" chipset="acmgt3" name="Ext527" />
+    <guid config_hash="8239a6af95c55bbd059916553a30e214" mdapi_config_hash="58bbb76d59b36c0e6fb31992da22b367" id="2c30a5a4-7ceb-437d-83df-7d9a507060a8" chipset="acmgt3" name="Ext528" />
+    <guid config_hash="30eb0207d749a6e1881b58afe611cee3" mdapi_config_hash="b20f49345e12d7892ed825086f6b56a6" id="a87f8d10-83c9-400c-8e56-286b233c8570" chipset="acmgt3" name="Ext529" />
+    <guid config_hash="533e111102366df0c7ca1387426e6c4a" mdapi_config_hash="24bbfb8a803050590db9fe20e55a78b3" id="08cbf4ca-3da9-45a2-897c-1d817e4dfdc1" chipset="acmgt3" name="Ext530" />
+    <guid config_hash="0e5ff9e86181a16858294ddb47b4717d" mdapi_config_hash="449b73a6262b08a727ef0035063e4479" id="8f8bfee8-6aa3-4862-bf42-c2b988bde49d" chipset="acmgt3" name="Ext531" />
+    <guid config_hash="82d46193910ea1c43bdca41dffad9d87" mdapi_config_hash="18aeb7a09696178d969465541a225102" id="4373c554-04d3-4e15-abf9-c6cbe7dcd17a" chipset="acmgt3" name="Ext532" />
+    <guid config_hash="4759963a91d7864edfc2b61cd5e233fe" mdapi_config_hash="84d63289be43a7dad9d1b283b32b4680" id="b0a3dc10-4fd1-4f5a-92bc-14c53adbd1d9" chipset="acmgt3" name="Ext533" />
+    <guid config_hash="7b7b07252e160bff18c9f970093db4ba" mdapi_config_hash="262fec85c5c81ada50b7bc3a43d95cc5" id="ddd0d949-f0ff-4a4f-a36d-a465d5ff0040" chipset="acmgt3" name="Ext534" />
+    <guid config_hash="c8b5ebc3608eabcb8e383e87a8e59557" mdapi_config_hash="0dac4574ba05ce74d501de948dc0c86d" id="79d88e98-4d0e-4aa7-bbe4-05039857e623" chipset="acmgt3" name="Ext535" />
+    <guid config_hash="0958aac00074548ec1eaa49238b504bb" mdapi_config_hash="17aee33cc999eaf66008c92b7111e4e8" id="8dcba9b0-7604-491f-811d-ff80bf4e2a6f" chipset="acmgt3" name="Ext536" />
+    <guid config_hash="dd2f49b44ce341235b698d0b1951d187" mdapi_config_hash="0e853dd6bf45b8a7b97114ecb650480f" id="c0619436-6cce-4029-95ac-f6761b5afdb1" chipset="acmgt3" name="Ext537" />
+    <guid config_hash="cefd09744a993f6198a6311c97708b85" mdapi_config_hash="54f60443c344b3f1b55af18bfb48cfb8" id="f24aba41-66e9-4a6e-8d78-a7ddd46d3d49" chipset="acmgt3" name="Ext538" />
+    <guid config_hash="5867124cba63f4d67ece27ec7eb26da7" mdapi_config_hash="7042ea618875695df23a3d3aa7547a0b" id="0e79879a-074e-4ea7-b942-92cdc63855cd" chipset="acmgt3" name="Ext539" />
+    <guid config_hash="649d6ca2a62a990a972638f863c12956" mdapi_config_hash="5255183ff9b0320debe98a854a691358" id="b3d690ba-d58e-4cc9-9faf-0b51c5ba958e" chipset="acmgt3" name="Ext540" />
+    <guid config_hash="3cf77aa2a4349a58bdfef5bcfb9eaa7e" mdapi_config_hash="4bf93266f82f7c7ccfaf7ecd8edef94a" id="b0065120-ac7f-42fe-8ccf-88b32df3e4cf" chipset="acmgt3" name="Ext541" />
+    <guid config_hash="cb83036c96bdcbaceefb12c38b222006" mdapi_config_hash="df22793d5e48a257f7f6cd09f754a0d1" id="ebbb6680-4931-4719-ac03-fba60301a688" chipset="acmgt3" name="Ext542" />
+    <guid config_hash="87b0222733ab7612cf79f861b161ba66" mdapi_config_hash="085823b76335140d024dbc42062e4fd9" id="672eba96-2c76-4056-a7fa-4e73a9d25627" chipset="acmgt3" name="Ext543" />
+    <guid config_hash="a86ac5a5644bbe0d5602f594eda3f641" mdapi_config_hash="2067a6158e483a087ac46c2e8585b4d8" id="de044605-80ac-43b0-b512-5f629a51ebec" chipset="acmgt3" name="Ext544" />
+    <guid config_hash="b45cfd7dd6f71aba11e26e00c78b35d4" mdapi_config_hash="be5df28b5f276d3da22341ca492d1b9c" id="720b8b78-896f-4056-88fa-9074d5127dd7" chipset="acmgt3" name="Ext545" />
+    <guid config_hash="927a2f5c1355dea773c3daca4ab8989b" mdapi_config_hash="b116bc01c500f0526bd8fbfb3a63038b" id="ee7f867c-816e-449f-a330-1b9622b33ae6" chipset="acmgt3" name="Ext546" />
+    <guid config_hash="4ffb30753472a32a3e88225513e2f459" mdapi_config_hash="729bea0da573a6700bcd6c6a2e09b3a3" id="671d65a6-32c0-4983-9204-96e9eb7ff8fa" chipset="acmgt3" name="Ext547" />
+    <guid config_hash="b6ace9ec19cc9b5cc88db14ed9ea3aa0" mdapi_config_hash="8f15c0228830390a258cc4463d0c974c" id="e23b228a-c5ac-4f11-8cb0-bf2353dfffde" chipset="acmgt3" name="Ext548" />
+    <guid config_hash="f6b813b01f5ed3f3528a107527bf0c37" mdapi_config_hash="b4089f650b18e577bf6fb0abeedb145d" id="3b521dba-b087-4c2a-bfbe-f043967881b6" chipset="acmgt3" name="Ext549" />
+    <guid config_hash="8c5c9517b020e02ad83fa7ffac202392" mdapi_config_hash="1a7edba98b8446826e44c47d446f52a8" id="b359e8f4-73ed-4da2-9471-2999a6d5473f" chipset="acmgt3" name="Ext550" />
+    <guid config_hash="7bb5b329e31f03f561fa48db3fa14ee5" mdapi_config_hash="2cf6c52a6d372230cb5e32b8f41f2580" id="4bbd08e1-85c4-4de2-8ff6-9e5342bd0267" chipset="acmgt3" name="Ext551" />
+    <guid config_hash="66bef021e1d1e4c0b423180ca99cd611" mdapi_config_hash="c8226b062213e95d51e87148f43c9965" id="a0320c5d-dcd3-49ca-ba92-c19c068a69c8" chipset="acmgt3" name="Ext552" />
+    <guid config_hash="07dfbe584372d7c602be7208d2cc2679" mdapi_config_hash="a907826bf398f9a2320bbdf20ab642fb" id="5a2dc84d-c4a8-4b4e-af0d-b14a04ffb79e" chipset="acmgt3" name="Ext553" />
+    <guid config_hash="cdb5b209631425f594dc568c85045524" mdapi_config_hash="efbb7264b4d4b45dcb1e612711935e8e" id="82287cfa-dddc-4b40-a0ba-feae2d42d826" chipset="acmgt3" name="Ext554" />
+    <guid config_hash="3f24101554c775f0060c7e2a7604f1a4" mdapi_config_hash="f834cdbd8f899ddf45b55ed1cc19340c" id="0a00e087-e302-497d-b832-d04cd048054f" chipset="acmgt3" name="Ext555" />
+    <guid config_hash="ebccea159f9231c7b3968b28ca1f4ade" mdapi_config_hash="bc81b0d9cc155d82ff75965583b6b85f" id="204f7d1a-1063-4e39-9c93-d3fe68a48e93" chipset="acmgt3" name="Ext556" />
+    <guid config_hash="84ee7202ca09544ac060b73e63ed8e53" mdapi_config_hash="c619fdd63623e1e79cbe4b76d2944a50" id="67278ee9-56da-4f70-a405-85e27e8922ec" chipset="acmgt3" name="Ext557" />
+    <guid config_hash="460de45519ecb1b85aa773c32bf4929b" mdapi_config_hash="2c66ce1cdf6af490bff6c44536523ea1" id="b8723d61-732a-4c2f-8765-7e7aba97d348" chipset="acmgt3" name="Ext558" />
+    <guid config_hash="f86f71e58107ec9c6ef9585c48d73d46" mdapi_config_hash="2c82e375a71879ec0f607589b7014084" id="d8091fdb-460b-481e-b36f-4bc4c05c542f" chipset="acmgt3" name="Ext559" />
+    <guid config_hash="10b78551509f0b30978586be872a6eb8" mdapi_config_hash="75f87947bbdb8fd743376b22e00739e3" id="a6c44052-b731-461d-8333-da99eeb8d5de" chipset="acmgt3" name="Ext560" />
+    <guid config_hash="43175e2f125208ccb57577ed9a2436c6" mdapi_config_hash="2fcd22ec1d208f4768fa7d203315b22d" id="f2be6d7c-336b-46dc-8167-fb6e22106fe0" chipset="acmgt3" name="Ext561" />
+    <guid config_hash="ecc4b410e9a79ed87ffe1c5652fd8a45" mdapi_config_hash="342d80d50c60abf12866cb9eee1ecd5c" id="14cbc671-bc91-461f-b36c-11cac04a4368" chipset="acmgt3" name="Ext562" />
+    <guid config_hash="34b0bd7a90e1ec2209b4be846e0ed014" mdapi_config_hash="6cea79eb2457e21483f32c7b04f61f48" id="e2422880-ab04-429a-9c59-83e7d129cc06" chipset="acmgt3" name="Ext563" />
+    <guid config_hash="4b85ca5cf2f4d8a1e98e596db1bb5b2b" mdapi_config_hash="bf04449c1912d5e75274304a5dbc6496" id="665be155-1110-4a9a-9281-7c3005cdb3ae" chipset="acmgt3" name="Ext564" />
+    <guid config_hash="1829c0c6198e3d026d8d1de0e6798d3b" mdapi_config_hash="6f39550252a2257415689a69b225020f" id="65bfe375-5cb3-4677-81fe-be5cde04a66f" chipset="acmgt3" name="Ext565" />
+    <guid config_hash="379ec6ca1d29b64f3832bd505dd1ee35" mdapi_config_hash="ea09bd1484338ab13ebce1e5364ae93f" id="a039f0c8-1641-47d8-8e59-6df51100da38" chipset="acmgt3" name="Ext566" />
+    <guid config_hash="3c56ca4335075d29e7f66098aae00dab" mdapi_config_hash="92650dfb901be26f0fa8b8c6d75919d2" id="87c6ccd6-4f63-4f59-b3bc-54af974bf7c4" chipset="acmgt3" name="Ext567" />
+    <guid config_hash="afbc97754b5193186184b34681cf4c55" mdapi_config_hash="f0405a4e1c76eb0756183bb036b06d77" id="fe0cbe07-d685-40d8-ba09-4a5a8fb45b99" chipset="acmgt3" name="Ext568" />
+    <guid config_hash="e9907d0871b071a8247114e196f85fac" mdapi_config_hash="ecb8b329d75142e88a36f00af45ce953" id="05da3d04-5cf9-4ecf-ac16-65cd2c06269c" chipset="acmgt3" name="Ext569" />
+    <guid config_hash="673ee9625bf988dd5f8c2eb640c5c447" mdapi_config_hash="f8f59121feb85b6673679a5f801671b3" id="e4576efb-543e-4a05-8ce4-9b8cf86d0d65" chipset="acmgt3" name="Ext570" />
+    <guid config_hash="3123f27a6aa078e693d59b62ed080072" mdapi_config_hash="594b8beafeac5125560006d332e5dc5e" id="07dc1b67-a2ad-45a5-941c-a4f294dc5426" chipset="acmgt3" name="Ext571" />
+    <guid config_hash="d4bfdfd307744b7063f2391f0d64ccb6" mdapi_config_hash="6d1008d0babbb2cb7f68fc55ac139566" id="8c1361cf-3383-4b12-9865-d041c3c7ef80" chipset="acmgt3" name="Ext572" />
+    <guid config_hash="1339211d504a5346c7cbccef7129a48f" mdapi_config_hash="154e86cd5a2cf8864269e67ede679875" id="7b800152-513a-4d41-bcc9-f79e175f66c7" chipset="acmgt3" name="Ext573" />
+    <guid config_hash="38bd2e5d862c19552f7fbbf787a12555" mdapi_config_hash="0c1b9cee36cef2911fdc6dcdb136a670" id="089c60d7-18f0-447a-98c9-abaf82aba70b" chipset="acmgt3" name="Ext574" />
+    <guid config_hash="7b97c54cd7359a81b8b949109fb27d8a" mdapi_config_hash="e9133c44b5bb429f372ea4d80a65e73e" id="00101c81-f560-4e07-9ac8-7e276798feda" chipset="acmgt3" name="Ext575" />
+    <guid config_hash="e7df656eaa25ffdd0fd4c07f663e4a0c" mdapi_config_hash="dda8142c89ebfe099d9c8ca8c5613dab" id="bf4a340e-056c-42cc-b1a6-66ace5b2e385" chipset="acmgt3" name="Ext576" />
+    <guid config_hash="2d750c44002abd43091a81e4b2eca406" mdapi_config_hash="9b6e8dbd7c02eedc8ac82210e05e631d" id="67b34202-9016-4aea-a1f0-5978b11c8636" chipset="acmgt3" name="Ext577" />
+    <guid config_hash="a869b6f34414f43babc1b4a13356470c" mdapi_config_hash="a6ca2d47e319a29da6afb6ed0b705d6e" id="fafe97c9-e42c-443c-aa3b-bd18dcc6903c" chipset="acmgt3" name="Ext578" />
+    <guid config_hash="c20a50edee3aa29c5f66f43f58784984" mdapi_config_hash="0150ed0c57cc855c1dfa3ff15ae2800e" id="2d7f6b11-59c1-468a-bcef-131d2cb62a28" chipset="acmgt3" name="Ext579" />
+    <guid config_hash="6853e49df60ca733cbd2d8ada43c3218" mdapi_config_hash="1826a9552a510328dd569d0804299a39" id="dee1277c-09d1-49f7-9035-039420ce8f55" chipset="acmgt3" name="Ext580" />
+    <guid config_hash="237e152ac42968616089415fe5cf3023" mdapi_config_hash="4618aa0d6d5a669541fa04621971b342" id="97733423-59b0-4de6-9909-39bbe2e5f0b7" chipset="acmgt3" name="Ext581" />
+    <guid config_hash="6a51f493c0ada543d70f81ad4094a581" mdapi_config_hash="11ea4723bc723e3a2367d8dcd8fd4d46" id="14f60fa0-1209-44d4-8618-c8dd54b8965d" chipset="acmgt3" name="Ext582" />
+    <guid config_hash="4125580bcdab8928a1339fa1f066abe5" mdapi_config_hash="ad4d06ff80ba171784c2430bad7d47cd" id="6297276e-f7c6-4ac7-bc7b-4e1fb4c606a1" chipset="acmgt3" name="Ext583" />
+    <guid config_hash="5cbc17866e8c61e142e0734276fe5103" mdapi_config_hash="9e53f31e504bb84f1b22afa2cfd1dc66" id="812c0cf8-1163-454e-a6ff-36c6b3866b1f" chipset="acmgt3" name="Ext584" />
+    <guid config_hash="56e2ba8aa4a506805e9d8c0bcedf1d95" mdapi_config_hash="77c4c6a2b7c17f1b195ff881b9305d59" id="2921d39b-5490-416a-bc1f-61d1782819fc" chipset="acmgt3" name="Ext585" />
+    <guid config_hash="c79e4b150d537e8886fc45dcb5ef3136" mdapi_config_hash="9ef7973a4f81d11a5242277b1aeb1248" id="340dd552-3f57-4f94-b8c5-2d7d96c4bbdf" chipset="acmgt3" name="Ext586" />
+    <guid config_hash="ad344b9ee642449c865f5b748d589d13" mdapi_config_hash="d49ff25aa4ff793e622f0b478473fcb7" id="09a795b1-15ba-4f83-a662-18804b4eda96" chipset="acmgt3" name="Ext587" />
+    <guid config_hash="3763146387261a509535e2355b331860" mdapi_config_hash="13ebf452b2784eecf96ee483cbb7cd01" id="91a7be1d-3a4d-488f-999a-fd2b9564714e" chipset="acmgt3" name="Ext588" />
+    <guid config_hash="9c56d7e23c3075878f4f34884390686d" mdapi_config_hash="79679770d23d92c4f17c15a1b05be0ae" id="702f4f48-255f-4a82-94b9-2149053fa6c5" chipset="acmgt3" name="Ext589" />
+    <guid config_hash="97f3606c60950862ab25fac01bee36be" mdapi_config_hash="d715581225f9661aac251e3c3fd2b18a" id="21788d5b-810d-4982-b915-0048962b86e7" chipset="acmgt3" name="Ext590" />
+    <guid config_hash="6196109f4b0a65eba53a7b4c7cd5d749" mdapi_config_hash="f917ce18040b5d63299e6ff310fde306" id="d3416b56-6640-4b2a-b81d-295287c90a22" chipset="acmgt3" name="Ext591" />
+    <guid config_hash="6722721efa9f8aea249d2a31a27caf88" mdapi_config_hash="331ffe529143349ad6cdfa40215bfcee" id="0d6485c1-7bfb-4f49-98a4-6247c0597e31" chipset="acmgt3" name="Ext592" />
+    <guid config_hash="b57499b3aa569f3f5c18b7019757fd6e" mdapi_config_hash="19d56c4ef129df83d5ba0dbcf57b23c4" id="7b4adfcb-b4fe-4e2b-803c-b9cfa2b2cd17" chipset="acmgt3" name="Ext593" />
+    <guid config_hash="dbe2486f8cb57ab21f27801727fec33c" mdapi_config_hash="25fa6d8f6183c37dcd37723ef984f4b8" id="35040db3-1214-41dc-b856-f26d3b553905" chipset="acmgt3" name="Ext594" />
+    <guid config_hash="b970ca808cc236de83475c509cd1b6dd" mdapi_config_hash="6b478f4a5fa1f4e34867b8a8ce13ea4d" id="3279a141-6b9b-4f1b-a38d-2bd7386c46dc" chipset="acmgt3" name="Ext595" />
+    <guid config_hash="a26590108e6b53635bf73286339f8c62" mdapi_config_hash="82ad0a9852a5687982a7a687054dffbe" id="2a08b276-0fb8-4c89-bbed-57892a7c9542" chipset="acmgt3" name="Ext596" />
+    <guid config_hash="df86cc798f815532bd976066cc30b727" mdapi_config_hash="6ac58ed8ec289e220140544897530da6" id="2628efb2-4b7c-4d88-8a03-620235fd1014" chipset="acmgt3" name="Ext597" />
+    <guid config_hash="7ea62e412dad7f0c611d00b0c6bf55e6" mdapi_config_hash="e3269b6884221d49d689f55cbe58c148" id="b45e047d-88d6-4234-89f1-2b3763e2ec7c" chipset="acmgt3" name="Ext598" />
+    <guid config_hash="5cd92db0ead6e288ba5e623befed651e" mdapi_config_hash="e40f3da2d595de82289467cabc9802ca" id="8f41dd6c-778f-4060-b8ab-13e66e76d4ff" chipset="acmgt3" name="Ext599" />
+    <guid config_hash="70647d348c0eab5d7fee23de6490ee9f" mdapi_config_hash="7a0bb5459048161ece565630d692d3a8" id="c0cc46d1-0475-478d-ad6f-cbef207c1ccb" chipset="acmgt3" name="Ext600" />
+    <guid config_hash="a6c784e23373c9e5e40842a268114ce3" mdapi_config_hash="ebf1ee5b4013d724f0b4b916c4c47baa" id="11c7bdc4-a63a-46cb-a967-33ded50ecd42" chipset="acmgt3" name="Ext601" />
+    <guid config_hash="9d03067b339aafff5d8d1bf7055e986f" mdapi_config_hash="160b14c949cb1e0ffd837bde287d7ff7" id="d7899495-d4d2-4235-8670-dd0ee48cc477" chipset="acmgt3" name="Ext602" />
+    <guid config_hash="2288b7f17d231ecc24080fcd5afcac5a" mdapi_config_hash="1e7544bc799d6fd0c6b0cd0777d66082" id="b58e27fd-3505-4a89-a83f-0767b2f949fd" chipset="acmgt3" name="Ext603" />
+    <guid config_hash="f7991e796d87fcf0882cd89a75a45996" mdapi_config_hash="eedf799a73e13a15e8e656a80eac2137" id="abf8d7f4-395b-4c43-aaf7-e327cb5a3dc6" chipset="acmgt3" name="Ext604" />
+    <guid config_hash="1ea0135993dafa4455ce8e85b4841c7c" mdapi_config_hash="cf2a89b8c8a9996779f6289ba3a7fff0" id="44fa1922-0aca-4a6b-8adc-78e764982068" chipset="acmgt3" name="Ext605" />
+    <guid config_hash="f438f92b8f849a44db6878f4c0e1d7af" mdapi_config_hash="4e4ec1e4d84b86213d57ba4e56085ca4" id="1d5881b6-188f-4dfd-9a06-08df383da728" chipset="acmgt3" name="Ext606" />
+    <guid config_hash="c2f1af833d67bafcb1ffa9faaa3997d5" mdapi_config_hash="1cc61ee1d67c30b20d226d2922ea3637" id="4542bc83-0786-4a99-977c-52a7f0418de1" chipset="acmgt3" name="Ext607" />
+    <guid config_hash="09bcfc2387a019b26d91231c82938c9f" mdapi_config_hash="b532ecd86f4bb7511f0bcf1ec73b9eac" id="8dcf0fe7-8df6-4abc-a15d-26dcdb7634f0" chipset="acmgt3" name="Ext608" />
+    <guid config_hash="c1945d7566567fc307afdc07063b1b0d" mdapi_config_hash="4ecb92fe4bbd6aa0aa6a787291b60997" id="ee320b1d-1350-4b3a-bcbf-9de658bcd8f5" chipset="acmgt3" name="Ext609" />
+    <guid config_hash="09bcfc2387a019b26d91231c82938c9f" mdapi_config_hash="b532ecd86f4bb7511f0bcf1ec73b9eac" id="2530a673-a35d-4646-82c3-a8c3330c1baf" chipset="acmgt3" name="Ext610" />
+    <guid config_hash="3003b7560ce30cb10674b22392a3c555" mdapi_config_hash="3d1ee1e2099f29b75c94415d250e5e4e" id="bb03aede-d6b2-4a50-a851-cdbaaa918df9" chipset="acmgt3" name="Ext611" />
+    <guid config_hash="bc4c065abc5c269d0edc8a0ebeb0aa91" mdapi_config_hash="fa9b8c6c2341ef0e306a76cab99bdcfc" id="c9b9305f-5bbd-49cb-8835-f351efcc48ce" chipset="acmgt3" name="Ext612" />
+    <guid config_hash="2ed6bbabdf97abcb8d68fbfb6a5ff234" mdapi_config_hash="59dc9149aadca0def8aa4ef95ae639af" id="d5d3fda8-e845-4038-a746-538432843c47" chipset="acmgt3" name="Ext613" />
+    <guid config_hash="3229341d64538deef5930ae2836176cf" mdapi_config_hash="7ddb2b9ac927a0e07d917b44d3fe6bc1" id="2183a6ac-d667-4b20-a851-b97ccb5d5b21" chipset="acmgt3" name="Ext614" />
+    <guid config_hash="7b46c58ee82f23db97c3a3ec4fac44c6" mdapi_config_hash="28a489248b893d37df662335553a18c4" id="736b7243-3c5a-41c7-a212-d506ebdf2fe2" chipset="acmgt3" name="Ext615" />
+    <guid config_hash="4d941596e53c95e06886aa6ab2f5e6a5" mdapi_config_hash="6b5b6a41075a0ec478f2814ce34c9543" id="bebf8f78-b673-479f-803c-2e1f403454b3" chipset="acmgt3" name="Ext616" />
+    <guid config_hash="c7680cd98b3bd90a653eaa7eee713421" mdapi_config_hash="b26d97ad6c079ff809303bab5bc220ad" id="3a2d5424-78f7-445d-857f-fbea361be3fb" chipset="acmgt3" name="Ext617" />
+    <guid config_hash="f21a9b7239861712524e10e7ebc1762b" mdapi_config_hash="90b9c76f402fd65e7df988b49ce5fcdf" id="43c7733d-9c5e-48c8-a1a6-4c82e487dab9" chipset="acmgt3" name="Ext618" />
+    <guid config_hash="fd81084fbe4dc799d153e3bf8ccd23ba" mdapi_config_hash="49625deadd3b6312d1cfdb4dd5237465" id="51f2492c-e8fb-4f62-b4a7-3acd0301e2f2" chipset="acmgt3" name="Ext619" />
+    <guid config_hash="52a2a612c77154e754dbf7b11388d74b" mdapi_config_hash="d15bf91a0fb7919b1fa01786c73111da" id="dd87d3c7-2f33-41ba-a19f-36cc5eecf723" chipset="acmgt3" name="Ext620" />
+    <guid config_hash="8e6dcf4d48ab624f6d8298dbef818b23" mdapi_config_hash="c0b76844c93233935ad76d9a9a37a541" id="5762280f-381f-4c9a-99dd-96811abec85d" chipset="acmgt3" name="Ext621" />
+    <guid config_hash="e1d444f909ae85773232e11edc110bdf" mdapi_config_hash="70b58bddc144052948a143e0865fea0b" id="21c9f2d3-9ffa-48a0-8f77-b25bc916b889" chipset="acmgt3" name="Ext622" />
+    <guid config_hash="231dba32fd1f0bcd4322c19b5e6d9d41" mdapi_config_hash="3d769ce5bd2f6e22e13e37617c775064" id="fa526e5f-fd03-4a7c-a49f-fda2ade7305c" chipset="acmgt3" name="Ext623" />
+    <guid config_hash="f066956a2439276cf944bad9f380090f" mdapi_config_hash="5b19d9504651a9fa9aefdf7c62d22a7f" id="4fffc158-263b-4d29-afd1-1aa0dd09f1e3" chipset="acmgt3" name="Ext624" />
+    <guid config_hash="fc17f86011bec712261cd0449d9ca0dd" mdapi_config_hash="cf4d8aa5d4ca4c780b8dd3dfe094acfa" id="84cc7f2d-8833-4508-b075-965fc4d88ee2" chipset="acmgt3" name="Ext625" />
+    <guid config_hash="8c3f7c9cf3c782e974b3f6f3c72f3d43" mdapi_config_hash="2d47d315ba1dfd8605d78e51e728ffe7" id="0a6dbfd2-9294-4638-98ca-730eb9906e7f" chipset="acmgt3" name="Ext626" />
+    <guid config_hash="c659308cd8519687b61baa8a5df6f532" mdapi_config_hash="2d97804c9a0386617fd4b7d841fc9ce6" id="59af2a26-e755-437d-9bf0-8ce5ac59c5e3" chipset="acmgt3" name="Ext627" />
+    <guid config_hash="901efdfdbc97a68f8a7e1762bba2a1e2" mdapi_config_hash="db7d226d3605daf611bb6f0a40d055d8" id="07ea29bd-3559-458b-8aa8-75bbdde0f619" chipset="acmgt3" name="Ext628" />
+    <guid config_hash="db89d9bb907771f0176aa55dac8c8c56" mdapi_config_hash="30ab21772865bc936cd1e848478bcd07" id="c0a396af-30c1-458b-ae7f-e39cd59e6e99" chipset="acmgt3" name="Ext629" />
+    <guid config_hash="cb246377c78269d2ce201390b17f92af" mdapi_config_hash="bd5ab6a2470fcf1085e634539ceaed35" id="fdbc72a7-fd96-4120-b5fb-f7340e4ef6aa" chipset="acmgt3" name="Ext630" />
+    <guid config_hash="25d8feadca20f97673a8657f73895993" mdapi_config_hash="57df98202c7605220f5f8ddb8f79a9c0" id="8a190eb3-4bf6-456f-ba97-6ad3dd9f9041" chipset="acmgt3" name="Ext631" />
+    <guid config_hash="c94ac66bb1bd3bfd11b8fb818bcceab6" mdapi_config_hash="2635f3585d92b5e3d05cd1e9a7c95f76" id="690cf267-acc5-4f2a-a9d9-e424d39d0085" chipset="acmgt3" name="Ext632" />
+    <guid config_hash="768f678bcc3bddf8a84861187dc35346" mdapi_config_hash="e2e02f35accb3ce5c1fb0291cc202071" id="7dfd1792-f14e-47cb-b3c3-969deb04e830" chipset="acmgt3" name="Ext633" />
+    <guid config_hash="bdfbe424347697b66dad2f76a41bf4c4" mdapi_config_hash="1ffdbc88b73ff4eeeeec0baacb4f0007" id="255faebf-ef8b-4fa1-9d3c-d82b46a8a9f1" chipset="acmgt3" name="Ext634" />
+    <guid config_hash="1d01a9be6ea7a4f74d5ba3eb862949fe" mdapi_config_hash="1b70fdc20706dc235c0d5c29440108e8" id="53827355-f253-40a1-b02d-b07b591aa394" chipset="acmgt3" name="Ext635" />
+    <guid config_hash="f9b7b8d9a80506fdd1257871246e983e" mdapi_config_hash="c918d67180b94892139d79540e71abe6" id="1902b796-e21e-40b4-8132-0fd73e341735" chipset="acmgt3" name="Ext636" />
+    <guid config_hash="12c4f16efd01006503c2b60955aafda0" mdapi_config_hash="d5777f52e918f25bee3f10f4c8c78634" id="7ec62259-93dc-464b-99ea-629737cf9861" chipset="acmgt3" name="Ext637" />
+    <guid config_hash="5948dceb9176a58c3c8c7eef5230e144" mdapi_config_hash="2b32fee0630a4d64077d46a0843ccaab" id="32b54940-c66d-4636-b61a-a8f6b46d32d0" chipset="acmgt3" name="Ext638" />
+    <guid config_hash="86a34f480bfb0ffb4c5536827cfd579e" mdapi_config_hash="b7c4bd0e8504b20b0d37084a5c30a771" id="10e959bd-ef25-44ff-9d2b-b8c773e6087c" chipset="acmgt3" name="Ext639" />
+    <guid config_hash="758c0175ce5d1b5e134296ef2894e2fd" mdapi_config_hash="83fa429ba2115674e54969d7027827fb" id="371d7a11-3eef-4da8-88e5-fd25d85d10d6" chipset="acmgt3" name="Ext640" />
+    <guid config_hash="6516b26e1400ffcb9295e35a3c44b481" mdapi_config_hash="6e2a8a79a3d14c8a33d479cbd95c7e9e" id="a5be5bd5-b23d-48bb-b56b-ae9fd49acca4" chipset="acmgt3" name="Ext641" />
+    <guid config_hash="168ec4b181871c998c2203a097974860" mdapi_config_hash="e6f1c18a016b7ee9bcd810c1c5db5929" id="dd277896-494e-4db9-8da4-9efb89846b6b" chipset="acmgt3" name="Ext642" />
+    <guid config_hash="ade17d5442b2631b6ec410c1f00073a7" mdapi_config_hash="b1ec2c2e7b9e80e7dd67c1d3f5e5dbe1" id="4a13f620-9b8f-41e8-9189-0712948bc7ed" chipset="acmgt3" name="Ext643" />
+    <guid config_hash="49cabc26ac34834ac85e515a7fe3f385" mdapi_config_hash="6d979b7dbaffaf9126d431c9bad29cc5" id="c6b5a675-c1a9-4e9c-bf68-af0b1ad8dc08" chipset="acmgt3" name="Ext644" />
+    <guid config_hash="f9b8ff73a811dc4cf582a05dcbacb012" mdapi_config_hash="a8c850e993d7f0106c82ae87f7e7c4ce" id="81a0ff81-482c-4fea-93c8-f2ad4cc6a42e" chipset="acmgt3" name="Ext645" />
+    <guid config_hash="31d812ce4f90197dc6c1d9260cd9f300" mdapi_config_hash="7088d9c60b79a4aea67cd3d133d1a1e2" id="51ef51ba-0cec-4c46-8cf9-65b6b366a20f" chipset="acmgt3" name="Ext646" />
+    <guid config_hash="3be670768dfa98be4c6912c08579f6a6" mdapi_config_hash="24a0f7031e0d41ce2269e8e8cfe9dc93" id="80b23cbe-5ff0-49aa-9591-7f63c958e510" chipset="acmgt3" name="Ext647" />
+    <guid config_hash="32038de6c5cc71bf3aece769b0625d3a" mdapi_config_hash="f9a207ab9f064769db453b017f9b9108" id="c8baa82f-efca-44de-9464-75f7653c1ecd" chipset="acmgt3" name="Ext648" />
+    <guid config_hash="e9e863f7ee56e4b2a60cdc980595d8af" mdapi_config_hash="e1e725da4867c51803637c5fbf69d69f" id="417cd1e9-b680-4389-99a0-d11bd6076465" chipset="acmgt3" name="Ext649" />
+    <guid config_hash="714559764db9c60e07cba8dfe8b4da13" mdapi_config_hash="8409df8827dcd9515e7a1847f67c9636" id="5513c6b2-2b34-43f9-aa42-66ec99231838" chipset="acmgt3" name="Ext650" />
+    <guid config_hash="0308a6d42b51f31e1f68cf76de40c438" mdapi_config_hash="47f2f8e2e7fc7e6378e6924100a834da" id="e219ac69-3ea7-4ef4-90fc-43da93940404" chipset="acmgt3" name="Ext651" />
+    <guid config_hash="1c7a8e20761b355e34a3a32929799c38" mdapi_config_hash="6ea8582cad360de6797a6074912a2778" id="bd0f78e6-755f-495f-a530-2181a36e202b" chipset="acmgt3" name="Ext652" />
+    <guid config_hash="cc1290302b09bce262806e3aeaba0266" mdapi_config_hash="2249678e56761ab7da6f0b8c4a3e679b" id="ee687e64-5d49-4f00-8487-7f29ce84112b" chipset="acmgt3" name="Ext653" />
+    <guid config_hash="82b093c421bc12f2d31b36b82e144f8f" mdapi_config_hash="89a43013fe43b451ad0a60851635fc62" id="7fa4182a-6679-43a8-863d-20bf117c2f6e" chipset="acmgt3" name="Ext654" />
+    <guid config_hash="177b0945da341d86db75e7f27c414aa4" mdapi_config_hash="5173d8dc7f828b4d5ac1362e3a16713e" id="4776e4a6-e322-4a93-8492-f9e5c7ae25a9" chipset="acmgt3" name="Ext655" />
+    <guid config_hash="073ac924ce2112c529eff114e7343245" mdapi_config_hash="a8a0edb908d36a9c5e3ef41d8ac256a0" id="7e54fcd8-7d05-4a6e-a564-77da9ee3d948" chipset="acmgt3" name="Ext656" />
+    <guid config_hash="5800cbafb65e8677e930f6c50ba78a11" mdapi_config_hash="b631fcc71a8d51f56a2af24f707ca2a4" id="616a2406-05c9-412d-a3aa-a524acd66aa0" chipset="acmgt3" name="Ext657" />
+    <guid config_hash="43bebab0dcec6e64cc677f718b084709" mdapi_config_hash="833387cab16683c0a5fdaf8833db67ea" id="0902fe2b-216e-4634-ae60-349382ded3ce" chipset="acmgt3" name="Ext658" />
+    <guid config_hash="e4370e0ef2d8fbc5ecc9f578ae969104" mdapi_config_hash="0a8fab693d0eb2171d2b74c9acfa668e" id="3ed655a3-105d-438b-912a-438fb8953965" chipset="acmgt3" name="Ext659" />
+    <guid config_hash="18796680287189de473339f971891a24" mdapi_config_hash="e7e15a702997e809ee2018b17eea225d" id="609bdc17-fa1d-4dc1-b1f9-04d959d9502d" chipset="acmgt3" name="Ext660" />
+    <guid config_hash="f40003f7282a91e285d14c87ea63b3a3" mdapi_config_hash="718aeb19aad96934b19a8391d3230ebf" id="8670adf5-1083-4e44-9b34-1ad5f7187e4b" chipset="acmgt3" name="Ext661" />
+    <guid config_hash="8baf05398ef6b5a8de630b9f23c1dbaa" mdapi_config_hash="45d75eb5fdee0219d32724cee2c617d4" id="6295fd5c-e29f-4522-a7bf-83be283e0bbb" chipset="acmgt3" name="Ext662" />
+    <guid config_hash="152c742f185bd926ce65fa134a6b2fd4" mdapi_config_hash="f0d7447e15ecd998cd1f2af471c94486" id="a50eb103-f419-4fdc-bdc5-cabcf1f5f799" chipset="acmgt3" name="Ext663" />
+    <guid config_hash="2918a8770a7e69ec28679449138bf6d6" mdapi_config_hash="6f95d55befbd397476ca48d4153800f0" id="8a026261-ef0f-4331-8a07-161022e4d2a4" chipset="acmgt3" name="Ext664" />
+    <guid config_hash="3fe5501160ec84a2b964c9758636a3b4" mdapi_config_hash="fdc4cf31c16bbf8f172801edf999edd4" id="73c5b3d6-f3f9-45d5-8c88-3c3bc7cb2a7b" chipset="acmgt3" name="Ext665" />
+    <guid config_hash="83ac68986762aae5072017caa9de81da" mdapi_config_hash="68a58a4b6d986fc976bb0b6a74a96c4a" id="28f09392-e361-444e-984a-35bc2cd7319e" chipset="acmgt3" name="Ext666" />
+    <guid config_hash="17cda3afe718c7deee00be3e58e2b2a5" mdapi_config_hash="dedfa7832df192fe4d9d3ba5b651b6ec" id="b5bd5646-7215-4cfb-a393-012e42f86e6b" chipset="acmgt3" name="Ext667" />
+    <guid config_hash="fd67d74137729879007fb28d1a05922f" mdapi_config_hash="6d21fb83dcaf1fdbc45708a48d98d6ff" id="e3b9472f-95b7-49b7-9f95-96d9cfcea28f" chipset="acmgt3" name="Ext668" />
+    <guid config_hash="8337a6c59f2e5237fb8f6a99a3b2ecb3" mdapi_config_hash="62f3514ce6f3f0aaece5faafdc672c0e" id="41aa8222-8353-458f-809f-88b87bb3205a" chipset="acmgt3" name="Ext669" />
+    <guid config_hash="a4dd686fa4c080cc9f3abc3fea11f5c6" mdapi_config_hash="601d4f87467d4370f290325e54b91ac5" id="811a2fd2-eabe-421a-822c-9a3187bae218" chipset="acmgt3" name="Ext670" />
+    <guid config_hash="7d52ff3ebdec59c1bcd368ef562771ba" mdapi_config_hash="bf9711e10fddbf82677dd18fa3c5b523" id="22d6be5d-b649-4df4-87d3-e9e00f221d5a" chipset="acmgt3" name="Ext671" />
+    <guid config_hash="7540dea8de1c43c6fe39989a79ac2f05" mdapi_config_hash="9cc0c3e5060c4580d7f64e28dcc9c1ee" id="0e76590d-a922-4979-9f18-e04bf3619109" chipset="acmgt3" name="Ext672" />
+    <guid config_hash="abd37bbc0b9a946c53413bd9e6a651fe" mdapi_config_hash="52a84f25f0ba17573669b3c88f34dd45" id="1b1b6054-62b3-4811-b3af-7430310b36f7" chipset="acmgt3" name="Ext673" />
+    <guid config_hash="82a7d5bd58bbeb66df3118244abe9257" mdapi_config_hash="8ddcb516bec141f6a202328fbc92c390" id="8485658d-80cd-44e4-b275-e24c659732d4" chipset="acmgt3" name="Ext674" />
+    <guid config_hash="dcbb07ee1d2b4a5e019061a7103c95fa" mdapi_config_hash="b81b96e2d675d5061ad914894b62d1fb" id="90e30b6c-ee34-4fac-8b0c-28afe0397b18" chipset="acmgt3" name="Ext675" />
+    <guid config_hash="3076f88c9aefbc25e6c98c51bbb95651" mdapi_config_hash="879d42a78931c8d58671089b38838225" id="ac420c4f-90eb-42ec-9be9-75aaa09c99ff" chipset="acmgt3" name="Ext676" />
+    <guid config_hash="eab777d033f77da2a2438ce2644a8baa" mdapi_config_hash="74148fff4fe613740e174edd85734d1e" id="cded2a1d-8dce-4b4d-91cf-b51859474310" chipset="acmgt3" name="Ext677" />
+    <guid config_hash="b95bfe9cd9ef0a8ada6cbd05a2c25287" mdapi_config_hash="c1de4412afc725c37ca6ed938047285a" id="c1339b79-a656-4338-ab32-99638d7cea0a" chipset="acmgt3" name="Ext678" />
+    <guid config_hash="0a211e1326c56acb959096d8566476ee" mdapi_config_hash="0e26ef3746caf53b908b7b2f989e9993" id="26d16b76-0337-479c-aa3c-c47a7a10eb23" chipset="acmgt3" name="Ext679" />
+    <guid config_hash="36e16e4acc7c550f328583d8ad035d15" mdapi_config_hash="3a724b1e4dc65a02f2f32bd70c518899" id="99d71df4-d88a-4169-a019-2b2758eea5c8" chipset="acmgt3" name="Ext680" />
+    <guid config_hash="45ff392ca8268667dd82ebaf5d1e9a7f" mdapi_config_hash="90d4e02713afcbe5b3f6ae4d87db5574" id="1f921826-65ba-4ab6-a1d7-48eba4eedd34" chipset="acmgt3" name="Ext681" />
+    <guid config_hash="86536638aaff98683627063504490d2e" mdapi_config_hash="d0d878cebfc7b384f56887f95b43a131" id="69e3df50-90cf-4346-a55d-1eed069efda7" chipset="acmgt3" name="Ext682" />
+    <guid config_hash="6a9d190274478e6431d87a1b2f73bc66" mdapi_config_hash="51c45fe8961682a110b168ad4f19aeae" id="469421c9-dc97-4550-b37f-7c173053b76c" chipset="acmgt3" name="Ext683" />
+    <guid config_hash="41abd8a8e329a487b7d22853789e3e93" mdapi_config_hash="d25c10fcf17fe45eaa8d1f8b3da00367" id="286faab2-da2e-4608-bd2f-39da15cb678c" chipset="acmgt3" name="Ext684" />
+    <guid config_hash="2691669444556c87b4897f20e5491a0d" mdapi_config_hash="1dcb0a3ea11ae9b46f97ca0a1436e2c2" id="49c8e6b6-5244-4b9f-85cf-2547d6d20a79" chipset="acmgt3" name="Ext685" />
+    <guid config_hash="e9f0d3d7fc1afafb3ee93e014c70cb86" mdapi_config_hash="6cf99e9cc91de2ec49e5464791ad034c" id="79941e03-5bdc-46e4-b142-84d418628e99" chipset="acmgt3" name="Ext686" />
+    <guid config_hash="ba926411e1a73d4085a03afd4d3b6c03" mdapi_config_hash="b94c047199098c8b4bd2f8c810690224" id="9e53769d-3d3b-4a27-ab3f-f524dca94ac8" chipset="acmgt3" name="Ext687" />
+    <guid config_hash="98d5a7b785c178d951eb8c82a6f54072" mdapi_config_hash="2de70223befd80f250764a7960108e01" id="30301f6f-0a43-4ba9-a9d5-28aebf205bdf" chipset="acmgt3" name="Ext688" />
+    <guid config_hash="1a34327c1d6dd2fad4222654a46ccd29" mdapi_config_hash="5132ac250300a8309ba25dd6fab21c66" id="1d483608-9139-4903-a3af-e3ed4efc0992" chipset="acmgt3" name="Ext689" />
+    <guid config_hash="374cc49885dc987a5eb781ce893c1a7b" mdapi_config_hash="a13a7809cba931be1db24cfc475d4299" id="a9cf3d9a-04ab-40d7-ab88-0eb97a8ddcca" chipset="acmgt3" name="Ext690" />
+    <guid config_hash="c936d3bcbf9f182e78512380981a2e46" mdapi_config_hash="189b1ee202b31eef41e4db5203d56435" id="191874c3-d6af-4243-9b01-2b0f85bee6e4" chipset="acmgt3" name="Ext691" />
+    <guid config_hash="bdaedf65e1edf4167a5a5c6d974f0609" mdapi_config_hash="d63a6bc8c1952b106bdc0fd912e89626" id="0bcd4036-fa21-4cd9-8f17-dc709ee95db0" chipset="acmgt3" name="Ext692" />
+    <guid config_hash="a2b157cc51c6e0fc9d3d5f9c2ae76349" mdapi_config_hash="57c7ae66b1c05cd2b22f6600cc726430" id="b7b13b5c-1e45-4127-9bc9-fabd732ec407" chipset="acmgt3" name="Ext693" />
+    <guid config_hash="be79f2f30ee22d71f71ec34cb82467c4" mdapi_config_hash="aac1915d8dd0183201ee534bd429814b" id="e1c1db08-2425-4276-9b36-13831ce7774a" chipset="acmgt3" name="Ext694" />
+    <guid config_hash="8c451a750a4458acd86290a093279a37" mdapi_config_hash="f721fba9373c32e4cf0a7705475ad3b7" id="84e85a65-8a55-41ac-90af-3c4fe98910a5" chipset="acmgt3" name="Ext695" />
+    <guid config_hash="87a8d5176553d40c914bfc8fb08b0f1e" mdapi_config_hash="0d6399221978d7d23c7592694f24c05f" id="58ee0229-4bdc-4d5b-beaa-12bdff92eb97" chipset="acmgt3" name="Ext696" />
+    <guid config_hash="63a471ae2cc33866139d9eb307035f84" mdapi_config_hash="d7021fb43ae3f564d95f4035d36775f7" id="76811470-81d5-4807-9f02-f1c61785015f" chipset="acmgt3" name="Ext697" />
+    <guid config_hash="ad93c5157cee05cc12d569b09602a9c1" mdapi_config_hash="8663e1567a82359bebb86543182b6e6a" id="ee3d62c3-7921-453e-9e17-4de797e22de6" chipset="acmgt3" name="Ext698" />
+    <guid config_hash="7866b38ee176de433c35d99b4d85d174" mdapi_config_hash="739e9e7a5ef5959c7a8eacb7a0d330d1" id="c53174bb-fbdc-4c0a-8132-75c1a668b433" chipset="acmgt3" name="Ext699" />
+    <guid config_hash="b20490a6ca7175d5ee4f167d260e2319" mdapi_config_hash="e96e961d3eb7528c5dd0f89fe9555e89" id="642d68f5-312a-44d6-9bae-2bd1e3b3e617" chipset="acmgt3" name="Ext700" />
+    <guid config_hash="ade11cbf0ece406ba02d3237c7b9cc21" mdapi_config_hash="0187a740de990fb6b315efaa043bbf6b" id="5269dd1e-6831-4902-8ca4-592b23c58ef2" chipset="acmgt3" name="Ext701" />
+    <guid config_hash="fcc1fe90a834766a5bea5aa750f14cd5" mdapi_config_hash="53892130ba9a3b855c3afbf2a8c7f875" id="b1b5a799-4514-4027-9223-f51839cab382" chipset="acmgt3" name="Ext702" />
+    <guid config_hash="5f3e269b9f8ae4a9ca3ad71249283561" mdapi_config_hash="f6a2ccaaf22c75b6fbdac0346a804537" id="6357ffd6-fe33-463d-8251-2113c8a90e6b" chipset="acmgt3" name="Ext703" />
+    <guid config_hash="9f23d0102b16ed7c317eb72c9254561d" mdapi_config_hash="f273181fed4eaacaa8b12501175591a7" id="06b581a0-09fb-4a45-a8d8-bd77234eedf5" chipset="acmgt3" name="Ext704" />
+    <guid config_hash="2c3585e780cf400547f67ea261ac1c62" mdapi_config_hash="43f2c8ebaf6637ea56c28b4b984c4b56" id="8c310d10-71e6-461c-92cb-4b33e359c923" chipset="acmgt3" name="Ext705" />
+    <guid config_hash="56e52f531905a8164054e6010e69c0bd" mdapi_config_hash="173211c834f901d21c6ed6b612e5474a" id="01126493-600a-4768-aa3e-283509f04aaa" chipset="acmgt3" name="Ext706" />
+    <guid config_hash="b45eeb313f6a1e3af4c1dced43176f4c" mdapi_config_hash="897a53bad97970470ccf9773e0b690ae" id="516486d7-89fc-4a00-a8ac-8cd23b9fc260" chipset="acmgt3" name="Ext707" />
+    <guid config_hash="5014762d09f88c126f7fc12ff20dd038" mdapi_config_hash="00c5b26b178ee75cc450b36e2adaa059" id="61ba9e98-48b7-4081-8907-a5f9f6a16244" chipset="acmgt3" name="Ext708" />
+    <guid config_hash="d89f6f966b240817ec00c9c80ad67240" mdapi_config_hash="19ded895ad1930acff9c1d09f69ce88e" id="a638ef3a-2575-4dcf-93dc-8d351b712a73" chipset="acmgt3" name="Ext709" />
+    <guid config_hash="2c233d9f883422231389f4821dc881fb" mdapi_config_hash="8cd8c74ad3028d01dd7af2a08d324cf9" id="3b04d5c5-301a-4089-ac8b-71ab483ead8b" chipset="acmgt3" name="Ext710" />
+    <guid config_hash="3d1d573b53d1f20b713ed6a6f3f0bd52" mdapi_config_hash="e091c1aba7fa6a7000290acc63c86369" id="80168138-f069-490d-8e12-81c65d059597" chipset="acmgt3" name="Ext711" />
+    <guid config_hash="fb453b6344eb077cd4285678a692e9c2" mdapi_config_hash="5d89be05bee184e9d0bd8fa766228de0" id="26fb9ee1-06c9-488f-9454-6506a7fd0843" chipset="acmgt3" name="Ext712" />
+    <guid config_hash="fcd6af93ddc59ca999d744a1020070ba" mdapi_config_hash="5ada88dc18a11df2f420f99d9e5b2c0a" id="bf21f1d0-886c-4295-a1ee-dcf1fe02a78b" chipset="acmgt3" name="Ext713" />
+    <guid config_hash="a6870d048d72aa277bc478e15f079f06" mdapi_config_hash="d3a1adbcdb2f5a740d8dd27928d03a05" id="b2bc5d5d-269d-429b-823a-50fbb0515f9c" chipset="acmgt3" name="Ext714" />
+    <guid config_hash="e48ff9ac7461918f6383043572b291b5" mdapi_config_hash="ea5b00a94c794800c5f3345fa46278b2" id="bfa11009-8e53-4adf-9cdd-68469b9831dc" chipset="acmgt3" name="Ext715" />
+    <guid config_hash="8750da91c5ff18908bf85bb9ad4d66cd" mdapi_config_hash="b06041429dbfe063df6db3154c1e09b6" id="cfdbeec4-9757-4bbc-88df-c239c4cfd596" chipset="acmgt3" name="Ext716" />
+    <guid config_hash="b149ca4faf4a816d8668393b3faa1f64" mdapi_config_hash="e5b5ef180a64707a36424434e19e94ad" id="f846da31-bf9f-4bbd-a0ed-c4b4d5847aa0" chipset="acmgt3" name="Ext717" />
+    <guid config_hash="aef5e28718ea106a771e02daf106a709" mdapi_config_hash="c1750495ba078ecc8d35098fe45beb19" id="894bbe73-d0e2-41ae-86e4-26f2b865b04e" chipset="acmgt3" name="Ext718" />
+    <guid config_hash="ca25624f0bcccd4c77ea9384ee279bea" mdapi_config_hash="bb3c6315942c9e238612d54d79817b89" id="59118cde-ff58-4cfc-96f8-bc4339f59ca4" chipset="acmgt3" name="Ext719" />
+    <guid config_hash="6ac4cb9b25a5334e61e34589fe09739f" mdapi_config_hash="193077bd28ffdae077e386e26833506b" id="93b6fbd9-7440-4806-be39-642fa92233b3" chipset="acmgt3" name="Ext720" />
+    <guid config_hash="194e1f887b6beedcff7e0f96bb49b9a3" mdapi_config_hash="4830b0ad76ae18c57883aff6be81a343" id="cede3ea4-0edd-4d1f-9cec-0ef818ed889f" chipset="acmgt3" name="Ext721" />
+    <guid config_hash="18bc0b66362441b7a727a72dbbfaedf6" mdapi_config_hash="d18906a8c3c3a74eed499d63ca521966" id="dce7b950-36f2-44fd-b054-0a0329f3f3f6" chipset="acmgt3" name="Ext722" />
+    <guid config_hash="cc01e62842060ae23c1413fe7b5604a6" mdapi_config_hash="db5a435eefd504cafd566aaa7c9e0684" id="c3af1c92-2c04-4d33-99a6-20c5354f499d" chipset="acmgt3" name="Ext723" />
+    <guid config_hash="056b991f3b3025398e80849256e3fc29" mdapi_config_hash="5584c7343570c547f7daabcbcf3c2373" id="e2e9e72d-9eb9-493e-b8c6-27a4b3864ca0" chipset="acmgt3" name="Ext724" />
+    <guid config_hash="f71ca815729db7c4f5d2fe23b1ff363b" mdapi_config_hash="5fedddc940f045599030ad89d7b697d0" id="0511f93b-3bf2-48f7-afc4-9c4783a17d65" chipset="acmgt3" name="Ext725" />
+    <guid config_hash="226d26de9a6854da12ba33b6588a12a7" mdapi_config_hash="97dfb713ee72adb3a0d979554817380d" id="eca95fe1-d70f-46a0-b997-858695f87ed2" chipset="acmgt3" name="Ext726" />
+    <guid config_hash="2423328be437e44ba67eab0db5c3bbae" mdapi_config_hash="a066487d18ae4437159ade81b75f1333" id="d8a1a2c8-b8bf-40bd-b752-7413f227b6b9" chipset="acmgt3" name="Ext727" />
+    <guid config_hash="53c33fb094c14c1d945d754b3a51236b" mdapi_config_hash="db1bf625eea0b699b5ad9a296a5501fb" id="8b036b26-9616-4a12-84f7-5a59e54dbd95" chipset="acmgt3" name="Ext728" />
+    <guid config_hash="c1cb8bcd21d2e2bed6d75c82a62f14b6" mdapi_config_hash="151163c4af5bec4fb8ef101302062342" id="627a650a-b847-4f3b-8e74-5cbe7eded518" chipset="acmgt3" name="Ext729" />
+    <guid config_hash="9b5fa9360cd7a03808e583ca3efe1fc5" mdapi_config_hash="cee8ec351ce1210c0c4194aae240c4c9" id="44ca23da-3f5a-4b64-8dd3-5dc743588b63" chipset="acmgt3" name="Ext730" />
+    <guid config_hash="cdd39b8b990f9e29c3bc8d80f9a3572b" mdapi_config_hash="de5deeee1c16a9ddf8f70cbb3cce54eb" id="c1327b57-650a-46c6-a7a1-50567953b8ee" chipset="acmgt3" name="Ext731" />
+    <guid config_hash="b5467e098b50722f8a6884c30a340088" mdapi_config_hash="c218d96012cf5eea11a01729c7766f0a" id="8029fecc-6327-44c7-8d6a-e793609f2c4d" chipset="acmgt3" name="Ext732" />
+    <guid config_hash="fd8cbbda9ba5ed6cda2944a465fc34c2" mdapi_config_hash="d1e243a94d6136548c242de34fda800b" id="6743fa5a-d2cc-4434-84bb-98ff69765e2e" chipset="acmgt3" name="Ext733" />
+    <guid config_hash="3e8370f764415593452f65ef5702a604" mdapi_config_hash="9e042fa5fc43b50f7670a236b1f10cc0" id="993468bb-355c-44f1-90e2-1aeeff3d2b4e" chipset="acmgt3" name="Ext734" />
+    <guid config_hash="93dee25ddaba2d0af3ec9640f34b15d2" mdapi_config_hash="e2f15dac5d25809320db38226ff3923e" id="3fffa1b9-22e8-49f0-9f52-6f393fe33471" chipset="acmgt3" name="Ext735" />
+    <guid config_hash="881cc9c85df25174aa520a8c6f6bd181" mdapi_config_hash="b5b5a1f8b393900074b0acaad807158b" id="3a9252e0-711a-4c7d-9103-d67ccba0a84c" chipset="acmgt3" name="Ext736" />
+    <guid config_hash="8bb701753d27402a4aea26f6b6b73f53" mdapi_config_hash="ec2b6cc08f09422ca70882ca41d5d445" id="7a784b26-20ec-45bd-9e65-cb91454a0529" chipset="acmgt3" name="Ext737" />
+    <guid config_hash="dd4487aec34ea900e2082b240dd7b1dd" mdapi_config_hash="6a0baf87c2ac36b4b1c444248a88469f" id="2012b848-bd30-4c0e-8c20-b76c9be7411d" chipset="acmgt3" name="Ext738" />
+    <guid config_hash="1a407ba2cd935455bcb712f432dac288" mdapi_config_hash="d4eedec31e09d1005db71c6fc964cba5" id="c66cdb98-dfcf-4493-97e9-4c779e039ece" chipset="acmgt3" name="Ext739" />
+    <guid config_hash="f1e1e3dc6a0223a509a11d2ceefc7905" mdapi_config_hash="3f20084a3a9ff94f2452a223f0cb00f8" id="d38b4fa2-475c-44de-afc2-53bed3d44761" chipset="acmgt3" name="Ext740" />
+    <guid config_hash="763e92cc40b622e35feb40332ca21ccf" mdapi_config_hash="20308f642159ecff5b7d5c7bc3fc0d29" id="b11e2740-3d43-422c-8593-3739b66cdee5" chipset="acmgt3" name="Ext741" />
+    <guid config_hash="502493b032734cee788cecf9dc9a3bbb" mdapi_config_hash="58b57a8509ef1caec5fdecb2e823e0e7" id="3530dd8c-3c07-4b30-bb10-94efd308113e" chipset="acmgt3" name="Ext742" />
+    <guid config_hash="dc5e59004db65b8498af5c9297c29a8a" mdapi_config_hash="b51023475648557fc31bdc79e9cba6a8" id="fec76475-ec48-42b1-b794-8fca6c8d3f68" chipset="acmgt3" name="Ext743" />
+    <guid config_hash="bc615ca0c3b0f5e802d7b3e9b47c3ec0" mdapi_config_hash="5dca0c3e23f6f5eedc98719789034ea9" id="8b8d31ad-8dd7-492a-9339-3f735afeb52d" chipset="acmgt3" name="Ext744" />
+    <guid config_hash="54e92b8a35339e0d3f74605d445e7887" mdapi_config_hash="596e66256cfdadf59cf0becd9887e359" id="4273606f-d838-4bcd-a192-87ec29f55cb2" chipset="acmgt3" name="Ext745" />
+    <guid config_hash="c83c940204d11e91b81845009279d282" mdapi_config_hash="f2c48de85f1725ae08a14386ba855a3a" id="e0518ba4-65e7-4855-83dd-81d0a77f939b" chipset="acmgt3" name="Ext746" />
+    <guid config_hash="64646fd0788a30256a28a0a0cfff8505" mdapi_config_hash="a62a77df08b5698a13aef99ce70c04eb" id="bde1c4bb-6237-4038-becf-218c1c17d872" chipset="acmgt3" name="Ext747" />
+    <guid config_hash="603782c1e23fa1bd68149bb0a4d5a20a" mdapi_config_hash="5e4032e78ea70489eb7d19e0368a7297" id="331329d1-35f6-421d-9bdb-528bb0e20659" chipset="acmgt3" name="Ext748" />
+    <guid config_hash="82b3b82c5d4a78e16573727fb2469bca" mdapi_config_hash="9e6e747c16087552824d1e35c3689cfa" id="c4cb0cd8-a65d-44f7-b06d-f94cd7c99eb7" chipset="acmgt3" name="Ext749" />
+    <guid config_hash="f318204d62bc6ee0cc3370c5e963fc15" mdapi_config_hash="678dd4423a37af28217224954e26b2f7" id="2d70235d-0d5a-4aa5-8af5-e027f2a3eb6b" chipset="acmgt3" name="Ext750" />
+    <guid config_hash="38d0d5bb98e72586f1f601ba01fa0a00" mdapi_config_hash="3d966a35d96b3fc0230e6256a485b1cd" id="5673e7be-0e2f-4ef4-882d-7c8c10026603" chipset="acmgt3" name="Ext751" />
+    <guid config_hash="5d558d4c2229d20e152dc7ee71a58f56" mdapi_config_hash="8a304599ab64a70722b0d214156ec66b" id="c95a1628-c0a7-4cd5-98ca-212a6eeb480d" chipset="acmgt3" name="Ext752" />
+    <guid config_hash="4c1d4b694da270532073ab30edba2605" mdapi_config_hash="71c053993ea576b0438f2d02026f5ace" id="35169b45-6470-430f-b450-25c6edbc722c" chipset="acmgt3" name="Ext753" />
+    <guid config_hash="8ac2f4a286cc5bf200e13c23630487e2" mdapi_config_hash="ba7449d6113849bcad688ea9e2f674e1" id="654777a6-f5d0-4360-804e-8add6b37700a" chipset="acmgt3" name="Ext754" />
+    <guid config_hash="ab0da13bbf17b3bbc6733a6a75b4f6fa" mdapi_config_hash="499ce6846ed13d72b9c02a2a79248d73" id="e5ff2f98-6a0a-4a1e-9c6f-fd7e37a4acfd" chipset="acmgt3" name="Ext755" />
+    <guid config_hash="c9f48edb307547d585ed5430704bee1a" mdapi_config_hash="0ca8a6beb972f080ed923a22cc59b23e" id="c5ef0564-f5ee-4c47-81d1-82f9e3c5356e" chipset="acmgt3" name="Ext756" />
+    <guid config_hash="923094647220589dcfd5d3a9a49a74d4" mdapi_config_hash="607836679b54017e67be291c8a45f802" id="4b9def4f-6c45-4b4c-aebb-b258b1432dd2" chipset="acmgt3" name="Ext757" />
+    <guid config_hash="184baee4dcfd6fdcfbfa2f32df9a6c83" mdapi_config_hash="b470edf9e97adfd1085109c66826fdcb" id="4baa43ef-46f0-4563-a23c-23f7a7831777" chipset="acmgt3" name="Ext758" />
+    <guid config_hash="32462de2a55d983a095c140d2609df2f" mdapi_config_hash="d3f4c0c7edd1b89497679fb2cc9bc665" id="a41a6cba-5801-4b99-b6ca-522ab27bcc09" chipset="acmgt3" name="Ext759" />
+    <guid config_hash="ece261b3234c607e40bf5df3d0a835c9" mdapi_config_hash="f97c883cab7584a474510d14490475b8" id="ea5c0abd-cb97-4408-b10c-5b1e5cedfa44" chipset="acmgt3" name="Ext760" />
+    <guid config_hash="d7bafd2fc4ed422cd6e1bd0c30a387d3" mdapi_config_hash="07998d7c5a035d64ea9c0b5c4ee9e149" id="7d0f9d56-a46e-4af8-80c5-60bad08a9465" chipset="acmgt3" name="Ext761" />
+    <guid config_hash="e4fdcad7b2b16074c9c557052fbfafcc" mdapi_config_hash="e9af2a87b5ff750b024914edfad80749" id="1471b5b1-3c7f-45a5-b57b-ff70ede916ca" chipset="acmgt3" name="Ext762" />
+    <guid config_hash="9d6c4586991f71e9271a8a782f8a32ec" mdapi_config_hash="b1c173aedc55f6fb25a970e39c2b486b" id="cafc80ac-ba40-47b1-8e73-aad5b08d65fe" chipset="acmgt3" name="Ext763" />
+    <guid config_hash="dbf45d33e0a6a982d80061b7ec011da6" mdapi_config_hash="fed72ce6ecb76b7102a0f4b24d16540f" id="0af2df6b-39f4-4104-b2d0-c3e4077f81db" chipset="acmgt3" name="Ext764" />
+    <guid config_hash="dc2e60a06fb477ee0bc71e77f6cc22f6" mdapi_config_hash="0097a8c6b5fec037bedb9aed5bf5db7c" id="3e45edea-81f9-4d7b-879b-5b4097bdd786" chipset="acmgt3" name="Ext765" />
+    <guid config_hash="9eff22a15378d1e047a1c4854292b47f" mdapi_config_hash="1f8fff2c51eb31fe64544bf6e0aeeecb" id="eeb406e5-89ec-40f8-98d3-26deaad17507" chipset="acmgt3" name="Ext766" />
+    <guid config_hash="1f60191cb60209e34aa047cbc68884c5" mdapi_config_hash="858503a8aa44727460d600943bd90d08" id="d68aea6c-1a71-4cec-89cf-9904b9b5707d" chipset="acmgt3" name="Ext767" />
+    <guid config_hash="a3fafcc817d85762141836952131a973" mdapi_config_hash="93e16b42a59c946721555b40e230c50a" id="9a25cdbe-0af1-4586-859b-d8f03c5a4c38" chipset="acmgt3" name="Ext768" />
+    <guid config_hash="27712ab3b48b992e28d39cdaafff83f1" mdapi_config_hash="047bb1af678ae9b815b3073e08f41f80" id="d20aa948-8455-42ca-a4df-cc3040f89330" chipset="acmgt3" name="Ext769" />
+    <guid config_hash="db511fe8b97fce70cc5a5a9ca8670a36" mdapi_config_hash="bac60b89fba5795d89db65e8cf69feb9" id="adc02df6-b299-43fa-946e-2de9d979fb39" chipset="acmgt3" name="Ext770" />
+    <guid config_hash="ee262853f22dcabcaeb2d51603ecbced" mdapi_config_hash="a1de7dcf6aa6b002490b65fd603db38f" id="a5d13667-8d40-4986-bf3c-60c7cdeab38f" chipset="acmgt3" name="Ext771" />
+    <guid config_hash="20fb2f9293431b45b5a59a08ed9610c0" mdapi_config_hash="f49508cf6457480d5ef614d0aa602b3c" id="534443d5-42af-4388-8594-e1ff0f90dc3c" chipset="acmgt3" name="Ext772" />
+    <guid config_hash="1d82d309b654ac2e2520847128b46ba6" mdapi_config_hash="74c325931b8d57a2882de6cee7f2efd4" id="ff303167-7860-456a-bb57-3f33a851b1be" chipset="acmgt3" name="Ext773" />
+    <guid config_hash="e11b2b10493faa95f3b8c3b241e1f5a4" mdapi_config_hash="0bd46f5cec0932b12de5977144c78f54" id="7bef3eac-1836-440d-be35-4c9b66eb30d5" chipset="acmgt3" name="Ext774" />
+    <guid config_hash="857a89bf6d9df95fa0bc98ea1439932a" mdapi_config_hash="5e9ffa0a7b4356238145811a34f40128" id="e92a471e-0ed7-49c0-a3c0-fbb3ada6b722" chipset="acmgt3" name="Ext775" />
+    <guid config_hash="fc57da17879b1964b202d1d5a90e787c" mdapi_config_hash="5490f3ba2edface9b6d2e45371d21dbb" id="4a97778b-b9b8-4d0b-925a-82aea8f47efd" chipset="acmgt3" name="Ext776" />
+    <guid config_hash="2534fbb5f1119b77392d80fa08291519" mdapi_config_hash="3b6e035afc007b38b7bb9ba3bc96d27c" id="56abdb73-a247-461c-b516-667a353dba66" chipset="acmgt3" name="Ext777" />
+    <guid config_hash="82bd1d7823a8ad5a9d8dca138df49394" mdapi_config_hash="2d249e24796c048aafa4b40ac49f3698" id="adb95c52-6732-4701-bf82-b19e40610730" chipset="acmgt3" name="Ext778" />
+    <guid config_hash="aaa5fb497ea8ec216d8b421cf8912e38" mdapi_config_hash="7287f116e2f7bdfea4ecc5226264c3c4" id="25f4ce6e-3e46-47c5-9fab-ba1503e64779" chipset="acmgt3" name="Ext779" />
+    <guid config_hash="8c856391f84fa28dd7cf76c4b57e050c" mdapi_config_hash="fb80d0a3625e7730e25e9ffa99b87fb0" id="1c363007-b280-4450-bf7a-89b2f26bfa87" chipset="acmgt3" name="Ext780" />
+    <guid config_hash="db6550d6b1da8ae3707479ec864fb7e6" mdapi_config_hash="d1cac3686a06581b37cd3061cedf3eef" id="16822061-bdb0-4337-97f9-621fa82266f5" chipset="acmgt3" name="Ext781" />
+    <guid config_hash="a3ab175069be1a26e6507dce27125233" mdapi_config_hash="3843101190c3a70e2912a02d55a5b2ab" id="1d540165-56a1-4bac-925e-b5f85c930662" chipset="acmgt3" name="Ext782" />
+    <guid config_hash="69ec6f2068b28bcd38041e1ab6043b72" mdapi_config_hash="dbf0d66d8ca87addd6b77462e428971b" id="ded56000-0bad-417e-a357-3e96ff672775" chipset="acmgt3" name="Ext783" />
+    <guid config_hash="e231b3f689b38b59808ee88b2e0844d0" mdapi_config_hash="9e6e27e34937492c67ae56dada5bda0f" id="32b605b2-1b0d-4637-9570-7cf8fe65fc4b" chipset="acmgt3" name="Ext784" />
+    <guid config_hash="c11bc8951ff889c2c1537bdb4ae880d4" mdapi_config_hash="98cfe96f9a63830a4223457ab2c9c045" id="c75ec9a3-1b38-4b79-84ec-5978b66a2025" chipset="acmgt3" name="Ext785" />
+    <guid config_hash="a2a60f7040abefa9b74112b71ecfef4e" mdapi_config_hash="e386624cd141a6ccdc866497b997de1b" id="91bd53aa-441f-4ac9-98a0-7736d2e0b114" chipset="acmgt3" name="Ext786" />
+    <guid config_hash="3290b5ffa1d1a16275b7e4f9507ec52c" mdapi_config_hash="8b6d6f7d1f5ef333c2ddd25dffe0550f" id="94f9a5a7-03a9-4b7c-9dbd-9c21a8cf812d" chipset="acmgt3" name="Ext787" />
+    <guid config_hash="8144f6d315b04f73b7a56b784ba692b0" mdapi_config_hash="ef9051bd2b53e9a038da3de17a74a5d6" id="4f1c78e4-d2fd-4830-aefc-bfb88842abaf" chipset="acmgt3" name="Ext788" />
+    <guid config_hash="91cc21fb4f93628df5e7c249912d6d4d" mdapi_config_hash="62d488112fbd44c3c7b6019d37892011" id="c5e2f4a2-6f3e-4639-b894-2c45e1a9f0a8" chipset="acmgt3" name="Ext789" />
+    <guid config_hash="e21555486dc76b1636a144589fcdde3b" mdapi_config_hash="7a35e03e5fb54bb4481339335b16e222" id="3b972302-7e1a-4da0-a144-6bd89d47dba6" chipset="acmgt3" name="Ext790" />
+    <guid config_hash="8564471c5380facbcc6a6baebc1d599d" mdapi_config_hash="cf7f1baa127cf819c8d6288265e1cb9b" id="3cc5aaa1-5cb8-49d5-ac8f-51520b860975" chipset="acmgt3" name="Ext791" />
+    <guid config_hash="9f3aea525c0a720235d118530d061fbb" mdapi_config_hash="91bba4e092fe021ee28625da880492d8" id="ccd1df98-fb94-4b65-94d5-25c3a1d39be5" chipset="acmgt3" name="Ext792" />
+    <guid config_hash="aa2cd1b8eeb6a5c7d828374493bb4500" mdapi_config_hash="d013555d047505d00d97e86c1ce44c3a" id="317b6732-6990-422c-960b-1a82ee3b02d2" chipset="acmgt3" name="Ext793" />
+    <guid config_hash="9d7367ef1b9f34df0ffb59f8853c3b8e" mdapi_config_hash="b9181a6d28686fb45e36000610452626" id="d4d3594d-4c78-4a8f-b663-2781c6aef1f7" chipset="acmgt3" name="Ext794" />
+    <guid config_hash="00ea6ae9cf6ff5e0b92fd6185564c641" mdapi_config_hash="3abb54fbd02adabf82f877ba450811a4" id="9d5f4e50-1050-47ea-8876-02e8d2a71e3f" chipset="acmgt3" name="Ext795" />
+    <guid config_hash="cc145329e4357d891ee020b87b2e9ac2" mdapi_config_hash="36eac16f54f442633e307ff70e44d756" id="5b6d809b-26ee-4832-86bf-970d1678489b" chipset="acmgt3" name="Ext796" />
+    <guid config_hash="717848a5d663294b8d2d7b9e50de9f55" mdapi_config_hash="9a92338103bc312722156939f9b31438" id="5da0a308-98ff-4ff0-9481-4971aa263b06" chipset="acmgt3" name="Ext797" />
+    <guid config_hash="ef7e8881d8306ad3fd990919857eabaf" mdapi_config_hash="8de9d23bdc413dc8e079b93fbd1257cf" id="34cac917-42ff-4860-babe-cd0952722cd5" chipset="acmgt3" name="Ext798" />
+    <guid config_hash="57025bb16845f0dca1526ef991118d5f" mdapi_config_hash="46627f360a9e7eecf972c92c6a18ae9b" id="c7dcda7c-388d-4a21-8e24-dad58512c79d" chipset="acmgt3" name="Ext799" />
+    <guid config_hash="f6105b8f75a932f68317b9bdeec4c4a0" mdapi_config_hash="949ead5743e264daad23e8c267a3c88a" id="1528d417-08e6-4356-863b-c860637abf66" chipset="acmgt3" name="Ext800" />
+    <guid config_hash="c8a389e61dd5634f62b29c93537005e2" mdapi_config_hash="b22ecbc1df4ac10d473cc7031e2d2aac" id="b2263f12-501d-42b8-bcda-f63faa1ba105" chipset="acmgt3" name="Ext801" />
+    <guid config_hash="f26b73a49d52c7c8ad9047ec0de1c130" mdapi_config_hash="10dd4c83f5da534652ce68786c7db775" id="5db30c72-78f5-4150-87c8-264d72199699" chipset="acmgt3" name="Ext802" />
+    <guid config_hash="27deedadc1b94e4ca421f9806d834956" mdapi_config_hash="27fca788eb5cfff1721187a556563c57" id="85f9346c-6b1e-4eb1-8ab7-69cdfcee678d" chipset="acmgt3" name="Ext803" />
+    <guid config_hash="7db42fcb21e683b22e163b0e8541b967" mdapi_config_hash="90a7f1933e95259f9e5f8d67ba1066f7" id="ba52d055-bcb2-48ba-8c21-9f41517f81e7" chipset="acmgt3" name="Ext804" />
+    <guid config_hash="d4fd5bb2ef5e2cbb2f348bee12525283" mdapi_config_hash="b8a376722a9e992c6a1f3ccc692906c0" id="4b9170d3-8599-49da-a448-461ab6847b01" chipset="acmgt3" name="Ext805" />
+    <guid config_hash="eb70490e06ed627b1e45ef0c3310cc5d" mdapi_config_hash="b71f467b9ea11b23169b91b0b616161e" id="01f56dac-1c55-4720-8ecf-de58c295648a" chipset="acmgt3" name="Ext806" />
+    <guid config_hash="f18ee686a14c09b8ed096c59752b9813" mdapi_config_hash="08fd6a7268ba567cd750278158d9cb80" id="bba5c945-2c0c-4e5a-8a85-233623f5a46e" chipset="acmgt3" name="Ext807" />
+    <guid config_hash="f5476475eb3aab51276b832f57ab6da9" mdapi_config_hash="75ff38bd21048054c2f18e8a4f1b77b5" id="cbd45de0-0a72-4273-a133-04075a1b6606" chipset="acmgt3" name="Ext808" />
+    <guid config_hash="23db17cc53ee98ee78941b1eba42532a" mdapi_config_hash="e4ccf7335e246ab78e579c8fd97f34e5" id="c5dd3d85-c642-4bab-9b0d-a5cf7516fd9b" chipset="acmgt3" name="Ext809" />
+    <guid config_hash="b8c2fea0aa75ae0bb8b0a7f4ac587cea" mdapi_config_hash="d5767507b6b12d96bc953076f3814c54" id="311d6164-1ed7-416c-b029-e4ce8b6c7bf2" chipset="acmgt3" name="Ext810" />
+    <guid config_hash="61fe0e00600ee30c7244a56f5fe99cb8" mdapi_config_hash="919335b5c5886b31c1bc3a081bc89144" id="a75430da-ab08-4b44-abf4-21de4a98210d" chipset="acmgt3" name="Ext811" />
+    <guid config_hash="ae84a2b7221d033e20d07026dd24dc13" mdapi_config_hash="55c4f81d861cea976be6844baabc0b8b" id="b50ad38b-7555-47d2-a46c-257ba01fa79e" chipset="acmgt3" name="Ext812" />
+    <guid config_hash="550411d374a4bc7f6a21dcc0a83d683c" mdapi_config_hash="84e81842444232432952fef63a16e362" id="04682809-a9ee-4ef2-a4a7-9d65454305df" chipset="acmgt3" name="Ext813" />
+    <guid config_hash="d6c660bee92e4f68940b17d356fb47b4" mdapi_config_hash="b09e23f43434dd67372f338a81dac2d6" id="b8213dc4-d664-4c60-8a93-4eefb9a35c72" chipset="acmgt3" name="Ext814" />
+    <guid config_hash="c93fee24f61441a0683063cbfeeaba85" mdapi_config_hash="1d553631157627cdcf49cdd9ee857552" id="b62ea20f-c05b-4817-81c1-d79e28df757c" chipset="acmgt3" name="Ext815" />
+    <guid config_hash="1e1c8800c28ce235d2161fa864dffb12" mdapi_config_hash="922c3fb67a024eedb5e24086c551b427" id="6670d652-d39b-4d76-98f5-c12c50440f15" chipset="acmgt3" name="Ext816" />
+    <guid config_hash="5153c93fce32b4ef892f8d703ae676b9" mdapi_config_hash="ead93d33823ed157db5c5f2e1b403385" id="5e08ce48-10e9-4321-b042-480df816d469" chipset="acmgt3" name="Ext817" />
+    <guid config_hash="8e2f6a51a702dfa51f0e246b393f9e5d" mdapi_config_hash="3607b2dd2b09670de00ee1788086be6b" id="c422c5d1-a02c-48b4-96df-9b8875974dc3" chipset="acmgt3" name="Ext818" />
+    <guid config_hash="f4b82be7847c70e849c516618bf8e3f0" mdapi_config_hash="b1175784f5c77050834c5bb2baea2712" id="4a75128f-63bb-48d5-a888-ab44203de10a" chipset="acmgt3" name="Ext819" />
+    <guid config_hash="5e952e3bff5f6698cc5ad4339aba1adb" mdapi_config_hash="dd35aac368d241a8c14188fdbfc6375e" id="43ba1de5-4b19-4c2c-b009-0cdf4c84c85f" chipset="acmgt3" name="Ext820" />
+    <guid config_hash="d8323ce918233dd30dfc4a265c0d6abd" mdapi_config_hash="8aa9d980a13e5d66398832d2470c8e06" id="f9881b7a-0445-44f3-a681-38a8a96179d5" chipset="acmgt3" name="Ext821" />
+    <guid config_hash="2d89a2b2f8eb4e531b4485134a9eb734" mdapi_config_hash="60c9d92702e10df379cc14d348b69ecc" id="0ba4ce29-a0aa-4a5e-8a95-005675a4a7d2" chipset="acmgt3" name="Ext822" />
+    <guid config_hash="6a99ef912f27b2c7cfd345b6d1d01612" mdapi_config_hash="5e6578671591eb6eead72642ec1233cc" id="a6008e79-794a-433b-8236-5b0cc13bb166" chipset="acmgt3" name="Ext823" />
+    <guid config_hash="54dd9cf988b339e8a017c8a5c81d8ddf" mdapi_config_hash="b230579ac42953e2d97a3c412895fcbe" id="7293c8c9-c859-4f6d-a9e1-7245a5dd2ad5" chipset="acmgt3" name="Ext824" />
+    <guid config_hash="87b1fcc25c6d48f10925de11fd3466fd" mdapi_config_hash="091e269b8f3e25bcac660e900e607928" id="703e8945-2aba-4163-be6d-46dfc2026a4c" chipset="acmgt3" name="Ext825" />
+    <guid config_hash="9cdf22b741a02a48749c283f5db9ce54" mdapi_config_hash="9ad18de80cf94074abbf29b714a673d9" id="86fe7724-e6d6-4cb8-be2f-e5974a7f09c3" chipset="acmgt3" name="Ext826" />
+    <guid config_hash="2ec621535580f132a62b068796e407eb" mdapi_config_hash="3f7e1123525d3392cd30b34602c5faae" id="7cdb9b53-1702-4343-bbe1-f82a5a7f0e90" chipset="acmgt3" name="Ext827" />
+    <guid config_hash="5ff17b4f9d7fb9998be4e11af1e4fd56" mdapi_config_hash="bba836350330b9d2c3cc77204eefe6f1" id="49835d12-bfcd-41c8-aab2-623fb75e5af1" chipset="acmgt3" name="Ext828" />
+    <guid config_hash="b34363bcddb572cf07ff338925557d01" mdapi_config_hash="982fcae049d57f23aa871aa87b7ed55c" id="bfdd0f51-5128-4a1f-aaa0-02fca7613300" chipset="acmgt3" name="Ext829" />
+    <guid config_hash="f9590dbe8559c9555ae15d60658a6156" mdapi_config_hash="6f087259bc631ed66e7c2d29087de792" id="2b893c3a-2f78-4e0e-aa92-bc332d6d1f0f" chipset="acmgt3" name="Ext830" />
+    <guid config_hash="92a130f20dd80c9dfdbf8dc7a0d7f675" mdapi_config_hash="304de68e7d2b860be7f9096e549e42a4" id="df89b9fa-509e-4980-be3f-a9fc3604e079" chipset="acmgt3" name="Ext831" />
+    <guid config_hash="9f9602a13a0bd404c7102c8aad71d53a" mdapi_config_hash="e784e5b988cbb65ac10a72df25ba446a" id="d6a49316-ce8d-467e-930f-66f89748d7f6" chipset="acmgt3" name="Ext832" />
+    <guid config_hash="00fab21d6b1b4d61a022056e01830f09" mdapi_config_hash="01237803e767bc3f807f7e818829ea0a" id="82b22389-9176-4be3-8cf7-ebeb1db973fc" chipset="acmgt3" name="Ext833" />
+    <guid config_hash="ca1559c710cd715cf16efa84aeb6493c" mdapi_config_hash="db41ecab2cb48a8355ddbe4088ceeaf5" id="c1e9d6fe-8cd9-4c83-b9ec-5669c16e51ca" chipset="acmgt3" name="Ext834" />
+    <guid config_hash="a0412809ef3463d8be08bbc97b1af897" mdapi_config_hash="ef55134769f14a4d1a48f3fbf8f105d2" id="ef2c993e-ea71-4d00-81eb-a4192d00cd5d" chipset="acmgt3" name="Ext835" />
+    <guid config_hash="535ba3a59c6aa469eb365f413d3f1a5e" mdapi_config_hash="cb1dd1539d9ffa983528aa718a7aa1be" id="e4a9361e-d864-4368-8129-9171a70c6ab3" chipset="acmgt3" name="Ext836" />
+    <guid config_hash="0eec03130f78ce272fcdf0cd04bca7af" mdapi_config_hash="7923f35d548710905ae6296b597427d1" id="5157b0b6-6842-4d74-afc5-e9cfc011b13f" chipset="acmgt3" name="Ext837" />
+    <guid config_hash="27f9a579de84bc1d30c19566105b6b21" mdapi_config_hash="c170b43782b9d5fc277736a46dee4169" id="317eb78e-5fd5-4c28-8d28-c0b9e7ec3f4c" chipset="acmgt3" name="Ext838" />
+    <guid config_hash="8c014d0647878e830f880ce6142b8792" mdapi_config_hash="2cf93dbce544bfd7e8d4fc2522a00309" id="e92851dc-f040-4f09-8241-78bc01faeb85" chipset="acmgt3" name="Ext839" />
+    <guid config_hash="90dda63b3a1ec91b984f6848213c36f7" mdapi_config_hash="782bf987f2d295d3e13d7d4051d4c88d" id="79e2fa72-7478-4392-bdf7-9b5f13d97dde" chipset="acmgt3" name="Ext840" />
+    <guid config_hash="588868721e3e08a85bda19eb74b0e5b2" mdapi_config_hash="b69fc5cd1a94e66c519dcc428e17d75a" id="8f581530-9676-4f41-9eab-c14b99208ff1" chipset="acmgt3" name="Ext841" />
+    <guid config_hash="87d144152e6087a780c24efd71544593" mdapi_config_hash="4127d881441e52c8c49e5d8396d3933e" id="48da56da-a122-4bde-8004-d5db9d488322" chipset="acmgt3" name="Ext842" />
+    <guid config_hash="f01f0544da6db2435d3387907433319c" mdapi_config_hash="9380dd8ad9e62cb53824f5470c0b292a" id="b101af1b-2ecb-4f87-b85f-d3fb1e7d081f" chipset="acmgt3" name="Ext843" />
+    <guid config_hash="dae8c241ba42e78a435285a54dfa391d" mdapi_config_hash="e3fb38155071932de602599d9a9b588e" id="2cbe2a2f-61bf-4dde-9fa6-89fbe658cbe8" chipset="acmgt3" name="Ext844" />
+    <guid config_hash="b57b9f9ea2c7c6951ac74a4be4e3ec74" mdapi_config_hash="6abb61f2043701cdfc9e7ca9340576fa" id="57ac6b30-2145-47c9-a05d-51cde53af72d" chipset="acmgt3" name="Ext845" />
+    <guid config_hash="f897202b401e5542ec1f4ffc027b566a" mdapi_config_hash="5393335463fed68a3cd7cf4e104120f9" id="4477cd4a-90b5-4ae4-b910-4ffe26ce08eb" chipset="acmgt3" name="Ext846" />
+    <guid config_hash="5c8f6fb36a3f715fac0976185ca56542" mdapi_config_hash="aecac6296e975761ac5718b988e7e634" id="9c491ff6-caca-48c7-8f9a-9e2fcdff732d" chipset="acmgt3" name="Ext847" />
+    <guid config_hash="c29b53d92ce1b63e13fe560771fbc122" mdapi_config_hash="f8c325659343d85f4ce0dab2b4a0d8a2" id="5d9982c1-e290-475d-8a42-460a08e42b71" chipset="acmgt3" name="Ext848" />
+    <guid config_hash="1813f3a23c5725d33005622255c5e930" mdapi_config_hash="0f6e50a8f51f8dae5ee7627cf1b554a1" id="86619a01-e374-4120-91c3-77009f623ebf" chipset="acmgt3" name="Ext849" />
+    <guid config_hash="2cb9eba90e3b528af2caad664de05305" mdapi_config_hash="9e13384ebb341cdff1b32a8f26c79331" id="0bd94d4e-4ad7-4fb3-bc31-5a602fb2712a" chipset="acmgt3" name="Ext850" />
+    <guid config_hash="381c547d83b6fb65b46475fcd04114de" mdapi_config_hash="1820824f770ff1474fc1df62f15459fa" id="ce2ff90c-1370-44ef-8cf4-00af4b13faa5" chipset="acmgt3" name="Ext851" />
+    <guid config_hash="54a36a79505c6753d37967aad591847a" mdapi_config_hash="467d4b32d210b3a2bfabac83837748f0" id="33a19e51-f39f-4933-8aa7-a475e82a38e0" chipset="acmgt3" name="Ext852" />
+    <guid config_hash="efd482c8bbbc06e9809449446edb1fb2" mdapi_config_hash="50b288d07eb35e3653710b26aecf28fc" id="cb81b489-bf38-423d-b4c6-b43360549140" chipset="acmgt3" name="Ext853" />
+    <guid config_hash="dc70bb290fd6c784b698da6c6473998c" mdapi_config_hash="daf481d8a58a9b1e3326792368ceaa62" id="5ed494ff-0fec-4980-960d-897413ec11b9" chipset="acmgt3" name="Ext854" />
+    <guid config_hash="6f339c165f1c45c723eb972836db4083" mdapi_config_hash="f14d394e0680b78502e75a742f1f5b7e" id="bc52aa18-e2ae-4254-ac8a-15c8b90f4e5b" chipset="acmgt3" name="Ext855" />
+    <guid config_hash="9a182cdbd68a3b7bd746e10dad651078" mdapi_config_hash="3f578e016f470c4b570a0ff80a105d77" id="fe9d46b1-9ef7-4381-bea4-cd258cd0476f" chipset="acmgt3" name="Ext856" />
+    <guid config_hash="1d6dee406507cfcc3643230002173451" mdapi_config_hash="b7fe5f3ec225972df898db6494471b09" id="eac16312-bd15-4486-aa9a-7430b13ec682" chipset="acmgt3" name="Ext857" />
+    <guid config_hash="3bba076a2c27d0a9b4103f052a1aaa66" mdapi_config_hash="2bbbf97b91d656d7dd418b268fe33729" id="6ace67c0-1c29-46ea-ae7a-63591d19d94d" chipset="acmgt3" name="Ext858" />
+    <guid config_hash="d3ebfae0c42096b40d0f13764752d889" mdapi_config_hash="7d1f12055742e7b26c776bc48508ef43" id="21ade297-b5e4-444d-8e59-8aebc60d9d8f" chipset="acmgt3" name="Ext859" />
+    <guid config_hash="be19322e662236b67c429ca312c14a4a" mdapi_config_hash="c7edf7e9ef983a0a72dc64165f2e8cff" id="143bd38c-0888-4f91-8d74-56a4fb91aaa4" chipset="acmgt3" name="Ext860" />
+    <guid config_hash="c28b63cd57d2a912c4801944de62f357" mdapi_config_hash="39004c109ed0a2ee7ddb64bb690bfaf3" id="a7c3ffb6-6925-4fed-88a7-5d06c1d20291" chipset="acmgt3" name="Ext861" />
+    <guid config_hash="2b5ea265744fbd97bed43b7756b4494e" mdapi_config_hash="368695e7065de05cdd9b8e5d0bca04fd" id="e3c34149-03bc-4d72-8477-261483c6b40e" chipset="acmgt3" name="Ext862" />
+    <guid config_hash="3a21395f7f643f474e255b3fb705d140" mdapi_config_hash="b145baced4fca15c377cedbdeab7f57b" id="0b4dff70-5115-468b-8dcc-e6e21b9468ee" chipset="acmgt3" name="Ext863" />
+    <guid config_hash="7e14c15fd63baabb16052db21bc9975a" mdapi_config_hash="5161ed30c5b481747bf8b5190412ab18" id="85869032-aa5e-4109-baff-f124584720c8" chipset="acmgt3" name="Ext864" />
+    <guid config_hash="204b18cdf12dc3c0fa47bdfc85a20bb6" mdapi_config_hash="7a817f01a836ede8c59127d416447004" id="5dd2de9a-2dc8-4f38-8aee-48d720ee1d08" chipset="acmgt3" name="Ext865" />
+    <guid config_hash="476bf961c2a1c0c39c48a562656ff485" mdapi_config_hash="ef710314e9477176898d62ae71b054f8" id="16098b83-88a3-451d-8c1e-f2b92ef1c2a5" chipset="acmgt3" name="Ext866" />
+    <guid config_hash="16df43c5cd787c150e6740464c2edce9" mdapi_config_hash="675b01b9df81b3178133bfe6479779e1" id="12e157ed-ca6a-4cc2-a3e7-5c35b9238f54" chipset="acmgt3" name="Ext867" />
+    <guid config_hash="1b3afc3a6fd355fd1620488c7e5ad148" mdapi_config_hash="4a5a8e14ff66b639cabd5142da79355e" id="7bb5d7df-919a-4c1c-9029-5b34dec3b0a1" chipset="acmgt3" name="Ext868" />
+    <guid config_hash="7fb336aad4b6b5a08185da0ddc8afb8d" mdapi_config_hash="457e665e185f9dc5b1937f8d121e7a8b" id="f090fb53-717d-4bcc-8ac0-515ef2e9e732" chipset="acmgt3" name="Ext869" />
+    <guid config_hash="4121249a076a688fc04763ce5013ab5a" mdapi_config_hash="c566eae9dbb9e5b0ea4e392e1fe2b294" id="aaeae265-2220-4838-947e-98558d911858" chipset="acmgt3" name="Ext870" />
+    <guid config_hash="78ee5133a3a5696c16dec67860294c08" mdapi_config_hash="f3609f8885abac6e8118885d60193c8e" id="662d8774-3e66-4c9b-b5e2-5be8747980d8" chipset="acmgt3" name="Ext871" />
+    <guid config_hash="9e46811e93ea398e6efaa688793c58a3" mdapi_config_hash="6ca3dbbd582029c77db44170ade79928" id="2c69a291-9d76-46de-9db5-ceab2dccda57" chipset="acmgt3" name="Ext872" />
+    <guid config_hash="fdcf85442d03ced12ed767dc05416b1f" mdapi_config_hash="757728a59e5e1bbc1bba39e432a77eb4" id="0f86e589-8993-42a0-b344-e2b667565ede" chipset="acmgt3" name="Ext873" />
+    <guid config_hash="e2790e8172e33377825248cd69ac54e6" mdapi_config_hash="c100ba76ff9607692c95e4f7336c1b6c" id="d11c464b-ef9a-4da5-9322-1e57cb0e0897" chipset="acmgt3" name="Ext874" />
+    <guid config_hash="ead8199276396b64fcf55a3a99db42bc" mdapi_config_hash="b9e81e77e6e6ec089eb1d336fdf4b821" id="49a40c7a-1037-479e-a24c-4e9f4e8ff55a" chipset="acmgt3" name="Ext875" />
+    <guid config_hash="554e861aeb21e281b11167fdb005c262" mdapi_config_hash="b48c331f73cbc2bf41c4f0704dca2c2c" id="80397a0b-40b5-4d6f-bc14-297a9094c5ca" chipset="acmgt3" name="Ext876" />
+    <guid config_hash="3bbd86ed1d0412027a0de5cc49f699a9" mdapi_config_hash="ac55e47799fa18178b1326cfe58e918c" id="4dd595cc-86a2-4abf-bda8-aaebda8bebe4" chipset="acmgt3" name="Ext877" />
+    <guid config_hash="3e0795b4a0e261d2b5a2d9fcabd08b50" mdapi_config_hash="546d756eecb9e17a8fc2187634094627" id="4bd452af-bdfc-4d44-a607-3f2b867b5ae5" chipset="acmgt3" name="Ext878" />
+    <guid config_hash="e5751e7487c50a3a00ddee7a0ebf34e4" mdapi_config_hash="07e3501b0b216f93c9161610f1dcb5a0" id="6793871f-9574-4605-b748-50f227dc8d0d" chipset="acmgt3" name="Ext879" />
+    <guid config_hash="3c13d108c1fbc6a5fbcde8952ebaada1" mdapi_config_hash="6b9832d3f2458fdb1db24f2381043006" id="eda73924-faa7-4e99-b942-e571db97ffd9" chipset="acmgt3" name="Ext880" />
+    <guid config_hash="a5a475ae2d444c946902713123452249" mdapi_config_hash="83642711aeec161eb4a5f96bde0adf9a" id="4c4c41af-23de-4ac2-adbc-db69aa7c7a59" chipset="acmgt3" name="Ext881" />
+    <guid config_hash="5f6687514bcebe6142135e68f0073d81" mdapi_config_hash="a91c6e2ac5b66e2474f4b53bb7ce0fa1" id="3d734ca7-99c2-4cc6-a42b-0678c30adafd" chipset="acmgt3" name="Ext882" />
+    <guid config_hash="b122112f8978656e2e00974b2119cf8c" mdapi_config_hash="d8794700e500284005b936970b1f7ea2" id="c435cabd-1edf-47e1-a0b8-e952e4144f14" chipset="acmgt3" name="Ext883" />
+    <guid config_hash="900dfb84cd09a4721501187d380e40b0" mdapi_config_hash="f9e061049cbb8959fd85358cb04ef480" id="b51c6d34-8b88-48c1-a88d-d3114cc750a7" chipset="acmgt3" name="Ext884" />
+    <guid config_hash="8b0bbe1db0554c00e7a7fac4c290e432" mdapi_config_hash="9b7695a241f268ebd1b3a4f5808e9218" id="cc13457c-3aef-4c2c-9b3b-d07058268807" chipset="acmgt3" name="Ext885" />
+    <guid config_hash="e22ad2e73de9ceb99b9948845d0255a2" mdapi_config_hash="aa7deb5b48f5677d8a5416f6b50f677c" id="3b526aaf-5919-4a41-ba31-2e6fb7205765" chipset="acmgt3" name="Ext886" />
+    <guid config_hash="861e6ba02eed7b95e87519d0d309807c" mdapi_config_hash="8f1758e33a31b215c4ffa1954c09024e" id="4e1fdf9d-9a97-45ad-92d5-c4dbf0b6b6c4" chipset="acmgt3" name="Ext887" />
+    <guid config_hash="52ac2525c5a61ce935f90081f4ce1f98" mdapi_config_hash="0ebb2722100e4cde38fe655d77e0e34a" id="51d516e5-4f18-4d23-abef-d4fe43d2cedd" chipset="acmgt3" name="Ext888" />
+    <guid config_hash="387d0dfc6c2d1c020eec6dc4f76f9739" mdapi_config_hash="743039f8947c074de44bed0c1bc36861" id="69746c29-88ae-4e33-9d89-832f961ce4d0" chipset="acmgt3" name="Ext889" />
+    <guid config_hash="8dda41e9114dbb1583133bf3fa838c53" mdapi_config_hash="3d3ff0c896bea9f2778b04b1b9ab9e57" id="3772217c-5bfa-4b4f-8ce6-c1d70e1e7409" chipset="acmgt3" name="Ext890" />
+    <guid config_hash="eff36231985f11e9ee82b56d339fec65" mdapi_config_hash="137c878d93161242008e04edc4468623" id="f0a9580b-73ae-4ae7-994f-4b6d5d265291" chipset="acmgt3" name="Ext891" />
+    <guid config_hash="2da6a317f6fd074eb7c1643bdfdb035c" mdapi_config_hash="8ec3057c495d09f393aacfa6fb1f2a8a" id="52064d17-d36d-4f45-ab86-8732a72ab376" chipset="acmgt3" name="Ext892" />
+    <guid config_hash="e97a59ce8afea9006d95c5def07b08df" mdapi_config_hash="7f4422b28c9fd8fc0db3bc302880060f" id="4b2771bf-21cc-4d4f-b0c5-70b3ff4144d3" chipset="acmgt3" name="Ext893" />
+    <guid config_hash="8d84f02612a4822135754a0e52541bb6" mdapi_config_hash="305232e26d0bdae0a064994fccd0ae48" id="d028b5f8-993c-4c35-9d86-2601fa6a78e9" chipset="acmgt3" name="Ext894" />
+    <guid config_hash="dd5ed67860f6b4c29b6a643cdb5cc49d" mdapi_config_hash="0097c51fd552193141d77967d681b3e2" id="1cd63d28-50ed-4c69-8683-44eba28275b6" chipset="acmgt3" name="Ext895" />
+    <guid config_hash="3e0d5a9adc281bf2b736527bc084d920" mdapi_config_hash="eff6b4777ac18a6331f09ffbf4f8698b" id="ebd6f029-7260-4c80-9698-f18439c74959" chipset="acmgt3" name="Ext896" />
+    <guid config_hash="729eccfe458f0fe4670c280fd272802c" mdapi_config_hash="0ea36d6670e5aa3ac6b37a0d062dd9f5" id="4fef4fe4-17ad-4869-bef4-2ebdebff9f9d" chipset="acmgt3" name="Ext897" />
+    <guid config_hash="8bb897717444708b05be4fd1081bd9ef" mdapi_config_hash="f47553e2138e25c9a4a6ace046a07dbd" id="cca4086b-edba-4819-ab17-70039adaa90f" chipset="acmgt3" name="Ext898" />
+    <guid config_hash="750ac000e1b62da0c3e79879f46b913a" mdapi_config_hash="26ef725c6bc31a63cbfc5eaed6acfba5" id="de978459-938a-4d54-8a6f-0860fba80b44" chipset="acmgt3" name="Ext899" />
+    <guid config_hash="13bdffd92219b17f1a212fa4495ba304" mdapi_config_hash="c67ce4bf08c92e4fca7f3f1e7184f877" id="31c70c2d-ab25-4333-8242-c980e65fe83b" chipset="acmgt3" name="Ext900" />
+    <guid config_hash="cb5fe5bbbe8c62db334c2edda8241933" mdapi_config_hash="d9798df598a03f4198ce715e8853f24c" id="bcf7ff4e-50dc-45f7-8c63-d649dc126717" chipset="acmgt3" name="Ext901" />
+    <guid config_hash="dc060f93a7f9a03cb08faded97d4bc2e" mdapi_config_hash="e16a48af8d30d07aead3b04d508ab305" id="c79fc1e5-c7b5-4dae-ba39-4861365060f3" chipset="acmgt3" name="Ext902" />
+    <guid config_hash="dadf864f228a223b5e929994c83afebe" mdapi_config_hash="85ad8f08e6bcf51432ceab2a6617d380" id="a213b5c5-965f-4daf-8a43-a254fec22419" chipset="acmgt3" name="Ext903" />
+    <guid config_hash="3f12871f10ce2174ada3000e643074a9" mdapi_config_hash="d0296bbc29ccefb584190a61f6d9a82d" id="3a901be2-0b46-4e5e-8852-dc0187f7a829" chipset="acmgt3" name="Ext904" />
+    <guid config_hash="20f0b927556aa0eb532fb04e4f1900c4" mdapi_config_hash="43900f31e8b850921d08a9cc1459a5ed" id="9c547e29-18b8-408c-8c43-bcc3c756eed3" chipset="acmgt3" name="Ext905" />
+    <guid config_hash="b02336a90f8a4861a546c5221692cf40" mdapi_config_hash="643815b0d0e1676d63edc15ce215e018" id="64ce4293-1f46-434d-a9e4-709b2fa8b0db" chipset="acmgt3" name="Ext906" />
+    <guid config_hash="335673ef14c822903d63f5eb4dbe4e44" mdapi_config_hash="9b42529d9621dff1400a2f40d1e42984" id="73dc617b-8971-4a76-96e9-2cf205acc81e" chipset="acmgt3" name="Ext907" />
+    <guid config_hash="90e418e3fe695c87242c320a721e5566" mdapi_config_hash="aa607e756b39a559195a6b36ec0af7d4" id="9eef500b-7077-4fc2-9101-dd900833104f" chipset="acmgt3" name="Ext908" />
+    <guid config_hash="9387192e08d33bdd9808cddd1a7029bf" mdapi_config_hash="7b566d0e11d5bc728a60f7d436493f33" id="d1160adc-3cd3-4dd0-825b-7bc15e319191" chipset="acmgt3" name="Ext909" />
+    <guid config_hash="08a7f501b435dd0146ff401e563e70f7" mdapi_config_hash="662ef68ea3a80eb3176395868f6e10d2" id="6ba0f6ff-cc07-4ba5-81c6-87e4279c9867" chipset="acmgt3" name="Ext910" />
+    <guid config_hash="e799e9ff7de8608904fa496497ac9e5c" mdapi_config_hash="559af2122c4aa6a1a218785ddff4f2d1" id="09a68225-f72f-4750-b6f1-b7f2a7b7bf7e" chipset="acmgt3" name="Ext911" />
+    <guid config_hash="b00f21134ef6029b079cae5ae1f9c860" mdapi_config_hash="dd7e9780a2c9ed79eb4ada14fa3798c2" id="76e4db74-d6d2-4774-80cd-702f27e15675" chipset="acmgt3" name="Ext912" />
+    <guid config_hash="7a82933b06db3aa47385353a393e0168" mdapi_config_hash="ad0d6cdcbd02bfeabec48c40e8d663e7" id="3506a146-a056-484d-bc76-191ba6ed5036" chipset="acmgt3" name="Ext913" />
+    <guid config_hash="296f3d8c3397a5edac5994b325cdffc9" mdapi_config_hash="3cf0c248effdddea177d610558370c0c" id="3846aa70-3952-4ad3-af8a-6463b74c38c5" chipset="acmgt3" name="Ext914" />
+    <guid config_hash="7e827651508da7ceb0a804f3bbe684e6" mdapi_config_hash="83a20fe69c932a448e8a3eaef5fa25de" id="e2a3f9b4-7fc0-4229-8f7f-2f8bf4f381e5" chipset="acmgt3" name="Ext915" />
+    <guid config_hash="5416971134d9e4cf154de2b4f485a821" mdapi_config_hash="2d7911a366387f712f1c796bb95123bd" id="ae92f979-3dfd-4172-9fd3-6551c9c938cb" chipset="acmgt3" name="Ext916" />
+    <guid config_hash="15ce775444e5f8dec051cd13ff909964" mdapi_config_hash="2d81f2e2a50dc3db2d339259b506aec8" id="2f2acb42-910b-4312-b86d-2f3e13ea5e1c" chipset="acmgt3" name="Ext917" />
+    <guid config_hash="84897c723cfc247d6f0e7419cc956221" mdapi_config_hash="53b5b7ad91a4354353f23db825b0705b" id="40216875-613d-4693-ba6d-1c6a37157b32" chipset="acmgt3" name="Ext918" />
+    <guid config_hash="0d623237f9abb876bedd3fe5234de44c" mdapi_config_hash="406ab00f19e14db1b68e6c66872fc5f7" id="db527284-999a-4f23-b319-4ccac15c54c6" chipset="acmgt3" name="Ext919" />
+    <guid config_hash="8a31e21e0af390ab3b0acd85ab67cb52" mdapi_config_hash="82d1510d7d6ae474e994e051cd5953d1" id="17b8db25-a815-4616-9251-caa558af0db1" chipset="acmgt3" name="Ext920" />
+    <guid config_hash="63c6286b1ef9edba7911513aceef8dd6" mdapi_config_hash="97d734833acd8441de81e19fe00a8b7c" id="7c5214fa-e627-46dd-bf73-96b97e3b46cd" chipset="acmgt3" name="Ext921" />
+    <guid config_hash="a883549b4026fee39ba8c0d13d92ec62" mdapi_config_hash="8bad9c39e34d72cfe4804faa47699124" id="044b808a-b7f2-4e2c-bcf9-34c161b9def4" chipset="acmgt3" name="Ext922" />
+    <guid config_hash="db2279a6eff0f32ef9e85166eb282a56" mdapi_config_hash="8161b5627b5185c03032653dc03c61fd" id="7a09a646-9e0f-495d-b768-fd55dd0ccc75" chipset="acmgt3" name="Ext923" />
+    <guid config_hash="4ee54cc5fd7c19fae38cb9978d2fe58c" mdapi_config_hash="3c5b9a86b3a47b51aa3e62f2a74171f1" id="5339dcea-309f-4df0-8858-c9e668536425" chipset="acmgt3" name="Ext924" />
+    <guid config_hash="7ce45927fa56372e55a4c31cfe7edb5c" mdapi_config_hash="b56232c646502b867a8e6830c3b758ea" id="9b59db08-b7d6-4544-a8e5-486158a6377d" chipset="acmgt3" name="Ext925" />
+    <guid config_hash="e099f6fb5c98f12fae3ef5f8ca473524" mdapi_config_hash="0488beeb6c2431c2e4aacc3d8378c184" id="5f31c335-12b6-4e4f-abc3-cdc650168def" chipset="acmgt3" name="Ext926" />
+    <guid config_hash="dd003b0f9ad4aa3d720f25b3ebae0dc8" mdapi_config_hash="aba33173b0125d97d6cc31c0d8181be0" id="c413bffe-ef29-40b0-899a-d23dfb0718a2" chipset="acmgt3" name="Ext927" />
+    <guid config_hash="aeed107dee9d1dea5ac4f5ccaf27368e" mdapi_config_hash="584aabc2d11aac48d265c5ebbf7f19b7" id="42ae6e37-0810-46c4-8d78-b76e28e7a7f8" chipset="acmgt3" name="Ext928" />
+    <guid config_hash="db57e7d12cbf3ee1d4c57caac37442d0" mdapi_config_hash="dfc16b66168c2f9470eeaf1eab0446de" id="cf938b48-3aa4-4b8a-ba01-ec993f0f4c92" chipset="acmgt3" name="Ext929" />
+    <guid config_hash="1002201239949e0a56b1e073ba1705f3" mdapi_config_hash="65ebcf1fbea746ffb0f5808115a1831a" id="39e1edcd-5c27-4f20-b460-5b506bab2c5b" chipset="acmgt3" name="Ext930" />
+    <guid config_hash="515251f1bdb77ea55690372a966c1827" mdapi_config_hash="986f1c683394520a02645d0e13de6ea7" id="1e3ee19b-dfbc-483a-b1b6-8df99fa18f9a" chipset="acmgt3" name="Ext931" />
+    <guid config_hash="4686ca880329078eead3bcaac99843f0" mdapi_config_hash="ea72f5ac8412569dc0d664e68b2809ce" id="8c63d2ab-71c0-4b22-b9d7-1b74ed86b77f" chipset="acmgt3" name="Ext932" />
+    <guid config_hash="844ec33d11f2aaa903691a45f31961a3" mdapi_config_hash="07fc13d35c3bb57aa04f455b7d4b1284" id="32abbaf3-3fa0-4bf2-b455-21bc065a470a" chipset="acmgt3" name="Ext933" />
+    <guid config_hash="8a76f903da2352cfd0d9e913dd2e4696" mdapi_config_hash="a0780403cf933cc692c3e676a154975a" id="36ec10c5-30d6-4ed5-80fc-7fca5bfc8db2" chipset="acmgt3" name="Ext934" />
+    <guid config_hash="b30dd37ee49723b26bec4f8e0ef44ddb" mdapi_config_hash="06940f8fe35fcdcdf7671094ca27ee09" id="93f4ca26-8eb8-45af-acc7-ade95a86bf4e" chipset="acmgt3" name="Ext935" />
+    <guid config_hash="91f57a31adce34b65c158ac24ce7c1f3" mdapi_config_hash="2842469122b8089978f5c29ffff6fb82" id="6411422a-9ae7-4d23-83b4-27a0f571daea" chipset="acmgt3" name="Ext936" />
+    <guid config_hash="2e0500f8e85b57c58166f253fb72e534" mdapi_config_hash="8d7ca44c235fcdf76e6a029bcb02ef82" id="2a21eaf2-0ff9-4d72-a54b-d47b31a09202" chipset="acmgt3" name="Ext937" />
+    <guid config_hash="58abcf064bab97d27de16041449ff918" mdapi_config_hash="ed3cca24d1a7935b973db3d1cc9f17ae" id="13073d0f-fa11-4814-9bcd-139958585128" chipset="acmgt3" name="Ext938" />
+    <guid config_hash="0540d295c7bf010fcff4d4dc73442ce9" mdapi_config_hash="460c37bdf1cc55012704f0be52e17276" id="43a8b6e0-50ff-486e-812b-42a4d00ec5f7" chipset="acmgt3" name="Ext939" />
+    <guid config_hash="989b03a4fd288435a9ea0aa8d1929f70" mdapi_config_hash="d85adb2507408082285e8917f6521d72" id="61e98434-0a16-40c8-9b7d-371652eb33cd" chipset="acmgt3" name="Ext940" />
+    <guid config_hash="91a54865f2afb6d3d6938ea8feb7fa3b" mdapi_config_hash="d40daf95498e7c7d4ba6476594472e9c" id="1c13d9d5-c6f4-47a1-b695-8273b93037fe" chipset="acmgt3" name="Ext941" />
+    <guid config_hash="0f5e5a81dbc21ccb629b6a455bcf02b0" mdapi_config_hash="42d61e86f5b104ee99286ee7358f6bed" id="9efa16a4-a3ae-4be2-a616-7b6164ed850b" chipset="acmgt3" name="Ext942" />
+    <guid config_hash="6626195a0b4715e544e6b3de38b4f5ac" mdapi_config_hash="866afd3d545d3fef7ad1e9287c4889d6" id="e0e775d6-908a-4410-8ed1-a26b1d316700" chipset="acmgt3" name="Ext943" />
+    <guid config_hash="63ba443e056ded6291dfdbc4f715b825" mdapi_config_hash="b2151fd09f477cb3c13c052eb7209035" id="5e825890-c584-4545-bf82-6a8ded48393c" chipset="acmgt3" name="Ext944" />
+    <guid config_hash="3984107cabb8c1b878a7a61209bd9d0e" mdapi_config_hash="0e768957129af6a18181e37aaece36fb" id="07f8b9c7-a909-4ea1-ab0e-d1a1b72fba23" chipset="acmgt3" name="Ext945" />
+    <guid config_hash="a23bde0183695112dcc30cfd97847018" mdapi_config_hash="14a9cf96ae72f6ce789bf3251d4120c2" id="01c4a3bf-e61c-459a-8eed-c736edf29117" chipset="acmgt3" name="Ext946" />
+    <guid config_hash="8033ef054ac3e2c213753aa32d0cb44f" mdapi_config_hash="2662db5cc785e16de05d56ce8fe09d37" id="37906cb5-0da3-49d3-875e-d11e3584e4dd" chipset="acmgt3" name="Ext947" />
+    <guid config_hash="14e7a1993d17b04071c1a8655e38d84b" mdapi_config_hash="41b2eb84de41fc70a3b589e210f23ac2" id="12e4baf7-6d8d-46c0-acd7-5f94223dddc8" chipset="acmgt3" name="Ext948" />
+    <guid config_hash="096b8acfcd012358ac31492dec224512" mdapi_config_hash="b23926e3dd72525cde70ca29b8ade2fb" id="b616fbb5-c0d3-4e63-bcff-61bcf8ba8ff9" chipset="acmgt3" name="Ext949" />
+    <guid config_hash="2809abf72aa843ca225ff6223ff7c290" mdapi_config_hash="134eb2ea837dae4256aff08a437f0f35" id="5e7edb7d-ba9b-4574-9bac-abd4742e186e" chipset="acmgt3" name="Ext950" />
+    <guid config_hash="f19e00683373b8e4630dc97e106cde8b" mdapi_config_hash="32ea8bbd526348bc5a86a4a6775f65cd" id="24ad6a9c-cb37-4e16-b25b-3cc444e081a5" chipset="acmgt3" name="Ext951" />
+    <guid config_hash="6adb50912db8424e7b22dcc1cbd1b766" mdapi_config_hash="fbdd712d9dc4662678b4d3be7cb6c5ff" id="526b1c1e-b636-4231-9d4c-6e6987c4b24b" chipset="acmgt3" name="Ext952" />
+    <guid config_hash="93a2b17c149c2f5d2ae19cadd011daee" mdapi_config_hash="ddde37cef8e60d6927aaebbb7c2301c4" id="da7fb135-174a-41fb-a6fd-0bdc44732d9e" chipset="acmgt3" name="Ext953" />
+    <guid config_hash="44ba1099e960d107c953627375c52c7e" mdapi_config_hash="63bca47629cec5f2151c2741bb930a33" id="7499a841-6a6a-45ce-9c27-9bf6080ea900" chipset="acmgt3" name="Ext954" />
+    <guid config_hash="9426596da2a2a3d0beaa7566e76d3e88" mdapi_config_hash="4c4c372f58e8b967bc7c45f208f91de7" id="4b6cce94-cbf0-4b56-9b24-6c2ebd167755" chipset="acmgt3" name="Ext955" />
+    <guid config_hash="c2d03a5fcd676dbae55b5e0adcd7389b" mdapi_config_hash="669639b99dc7495882270bfd5f951a7e" id="c648eaa7-cac1-4c84-a2ea-c3448f108ab2" chipset="acmgt3" name="Ext956" />
+    <guid config_hash="e213eb224e0f8feb6a5110f1e8a36fd6" mdapi_config_hash="62e820cac1e2d379358c9400bce27a58" id="37b143ab-aba8-4537-a735-14cccb02f079" chipset="acmgt3" name="Ext957" />
+    <guid config_hash="a4a004066a36647b9be6b8561eb09b94" mdapi_config_hash="370585e7086a747b3947c2eb8f57e60d" id="98d49ba7-236c-410e-958a-3f08c09b74c7" chipset="acmgt3" name="Ext958" />
+    <guid config_hash="089c84322b287520d8c42c50f9a21020" mdapi_config_hash="cd848da22216d867e23c6b9b55e74ea4" id="5d40ca14-33f7-4fc8-a9cd-7cd5d3aa58b3" chipset="acmgt3" name="Ext959" />
+    <guid config_hash="9873bdc8263c086435f278d8feeb590b" mdapi_config_hash="7b59dd18c5c0c01cbcaed364edb14678" id="04f3962b-a11a-4aa4-a263-d545823df4af" chipset="acmgt3" name="Ext960" />
+    <guid config_hash="669e000a992ffc27282056fd8d492657" mdapi_config_hash="1bce465874b6c13837d204c45dd0a36d" id="b07a3402-0c0e-4ea8-af95-738c3445e5df" chipset="acmgt3" name="Ext961" />
+    <guid config_hash="426b954c31450f185873065ca0e16cbc" mdapi_config_hash="171e27ef8d26df3a37ce7483bee9a5fd" id="fcab665c-5dda-47b6-9052-99f992805980" chipset="acmgt3" name="Ext962" />
+    <guid config_hash="9164575a6195f18e1624484a180d84d1" mdapi_config_hash="e187d4aeac7c2aaad2541a8b49423b04" id="88e912b5-3333-46e1-86e2-b7c5ebfff84a" chipset="acmgt3" name="Ext963" />
+    <guid config_hash="bf7621b59eefc64c22c6f90b3aa8cb9b" mdapi_config_hash="fa18ea073d5bb540f7a3488768e45a44" id="00a17d53-6cda-47b5-95fe-36770dab66c6" chipset="acmgt3" name="Ext964" />
+    <guid config_hash="e3b6d4f1cdc364b8d0877886a8490412" mdapi_config_hash="211d32a056fd6c4f6df0f31a87a7daf6" id="3259b467-758c-42e9-a86f-a35e44003569" chipset="acmgt3" name="Ext965" />
+    <guid config_hash="1e0cb9f8417cb64c20f7502f32ed56f5" mdapi_config_hash="cf022eea1c23b4c6f087a0e8633766dd" id="a96fef9c-bc3d-4986-b2b9-d2233b157ac7" chipset="acmgt3" name="Ext966" />
+    <guid config_hash="6cc2f0967d27e1a7583878507b4a7eab" mdapi_config_hash="38e0688280cfe489af3d9e8ae1f2a113" id="cffa549c-1997-4b02-adfc-81fbff2971c2" chipset="acmgt3" name="Ext967" />
+    <guid config_hash="e84a9759058816d2795bfec84198dac8" mdapi_config_hash="4ec3784c02b0c0468224ef96c1c16374" id="97bb78db-526f-45e9-b302-e71bdb354a51" chipset="acmgt3" name="Ext968" />
+    <guid config_hash="6fd3a8cd6a8b1739a8dd1facfb7ed842" mdapi_config_hash="1311d80d8ee408e4aafd55408da38293" id="0f12e897-1e98-49e9-bd01-463aec885b06" chipset="acmgt3" name="Ext969" />
+    <guid config_hash="e313885d9c19097fd1241f052a6dd90f" mdapi_config_hash="622e09114a6831f35f949acd8445fb35" id="742767ec-da64-414c-9f32-f59d97dd9c30" chipset="acmgt3" name="Ext970" />
+    <guid config_hash="4c613b536545a0cf2bbf9c242209cc48" mdapi_config_hash="d0199e9d70df5fceddeb247f657b5b9c" id="b8132d7c-7b59-4906-bea4-7401dd0eea38" chipset="acmgt3" name="Ext971" />
+    <guid config_hash="da1b326b8d0f03f1bed0e06c4f1afed2" mdapi_config_hash="abc6622a632be235f13d88d1e548eef2" id="cbcadae5-b72e-462b-9b5a-b06880be86c6" chipset="acmgt3" name="Ext972" />
+    <guid config_hash="7981624de1c9a8802cef5d507d8d2333" mdapi_config_hash="bff60afb6bd92bde1880ec2df61f7c49" id="03be681d-684c-4f4d-8a09-18e0a605c864" chipset="acmgt3" name="Ext973" />
+    <guid config_hash="52dc470611cddc42b1db3ed4aa68b574" mdapi_config_hash="d744e736c515ef1680bbb7582b58fb76" id="acca3492-bdac-49b9-aa54-9d7033f6d46d" chipset="acmgt3" name="Ext974" />
+    <guid config_hash="b0a303e670c8e74befe31b817ebea695" mdapi_config_hash="7373e82cff36850cbf79c3e09b0a2dcd" id="2c53a11a-5077-487c-bf6d-894ac78600c7" chipset="acmgt3" name="Ext975" />
+    <guid config_hash="2a9c15d6c9cc950e14fcb0f7ba8dc8e2" mdapi_config_hash="2a0d09eb8b6fec859c59dfe7e660a880" id="ce390b14-0e8c-4f97-afd8-d3296ca986c4" chipset="acmgt3" name="Ext976" />
+    <guid config_hash="c8c67d40e6eca04a98c3d7d61cddcbe8" mdapi_config_hash="e64570d607559dd630df9811f466ecf4" id="f638017d-bd81-4359-9f9b-daafcd5b9492" chipset="acmgt3" name="Ext977" />
+    <guid config_hash="32ebe2e68b5bb17255ff5c18dc347cb5" mdapi_config_hash="73fd1ff9456e17327c3fb8f02b755651" id="28b23f45-71a2-44d2-9661-423be5a6831d" chipset="acmgt3" name="Ext978" />
+    <guid config_hash="f011437f106bbfe9ad4de30d76423d6e" mdapi_config_hash="b15d0a3707637a5680d500baa0397df4" id="88f7e719-828f-466e-8c74-61c31b885975" chipset="acmgt3" name="Ext979" />
+    <guid config_hash="078a73630414edeb0538796d642d040c" mdapi_config_hash="ce952809690643f765156dcf218cac0b" id="8ac802cf-f221-461c-aedd-7a45bcb63165" chipset="acmgt3" name="Ext980" />
+    <guid config_hash="a958575446f1df9754b985bba7ace2a9" mdapi_config_hash="f951167824050451f5cc86119867fb81" id="1bcb5260-ee4d-4c39-ba59-033b7bd84271" chipset="acmgt3" name="Ext981" />
+    <guid config_hash="0b8b53869acbfb8373adda75af88f5fb" mdapi_config_hash="64c0e54cc81fb946f88a632bae168633" id="7480a976-6f5e-46e3-babb-01cc4b34cd75" chipset="acmgt3" name="Ext982" />
+    <guid config_hash="e61bfa49202515abdd5bbcf2641a6868" mdapi_config_hash="73e847dd0e9cdbd06b615b8bb074d4ba" id="599cd4bb-5fd9-4586-b813-fcb44b53b648" chipset="acmgt3" name="Ext983" />
+    <guid config_hash="fe07ccfb8727c83297b89e1eb10fd492" mdapi_config_hash="59af419ef4515814235e71166431d074" id="3661cc06-7370-4d4d-9838-6ba6847fb2af" chipset="acmgt3" name="Ext984" />
+    <guid config_hash="9ebc1f0eb7f1e510657b8384163127cc" mdapi_config_hash="bc0502181417ffffbbb8555f1d61a63a" id="3a7100ab-0b38-4148-9fc3-15b735b80668" chipset="acmgt3" name="Ext985" />
+    <guid config_hash="033f98dbb921b0b0e483461c41ca3e89" mdapi_config_hash="1943e138de652eaf995470c7fe621d12" id="ea7e1fea-e645-42b6-875a-170eadcf6716" chipset="acmgt3" name="Ext986" />
+    <guid config_hash="3c19c7087672329e658cecf097d8c494" mdapi_config_hash="1d5dd5bbfe7ba09cee2229607b9d87df" id="0cc6ded2-c760-49d1-80c2-0ecd33484aca" chipset="acmgt3" name="Ext987" />
+    <guid config_hash="6389c2dcb6a2b100db74a782d4f7006f" mdapi_config_hash="d8d0fcb20772d25731d0ac8a7d587cb9" id="6ed6774b-beba-4a52-baae-04188cd01cc0" chipset="acmgt3" name="Ext1000" />
+    <guid config_hash="e358e6156c7379f8064b679128fe0747" mdapi_config_hash="a9988177c98737d0b52bcf215079e95b" id="28009d66-9dae-4325-8339-06b19af58abd" chipset="acmgt3" name="Ext1001" />
+    <guid config_hash="c4809b4f9dbd405691ebd29dea153aa2" mdapi_config_hash="8d1002c55a03d16517de67b4b8970d12" id="75ef7f1c-7b1f-4d06-b666-6e09a69fc16d" chipset="acmgt3" name="Ext1002" />
+    <guid config_hash="8bb1139fff1ee995a5ade92734e11d8a" mdapi_config_hash="fbbbc2eaec0f182e838cbdfa1c8372c2" id="4994b075-c659-48ab-b167-84cdb120c759" chipset="acmgt3" name="Ext1004" />
+    <guid config_hash="83d7b8e952e3598565267c65964b2771" mdapi_config_hash="7a5482c523806abe25c8c4dbcf5273e7" id="b82ec6e0-2be7-4b30-a3db-21bd725849df" chipset="acmgt3" name="Ext1005" />
+    <guid config_hash="e7efe91c7aeb591043358c1b5e3c019d" mdapi_config_hash="94ecec147a25de742814fbb01fd4e9c3" id="a864bceb-7b38-4248-9fc8-0f0f7b8c6426" chipset="acmgt3" name="Ext1006" />
+    <guid config_hash="ae85ee9664f10b42cc854c26878d6cba" mdapi_config_hash="de92fab5a4df472219094e6a3b635632" id="361fc5ef-d568-4a9b-8ca2-d34707d10575" chipset="acmgt3" name="Ext1007" />
+    <guid config_hash="310dddcb04d1088a3865f698d758cbc2" mdapi_config_hash="c6a3be7d49b5697074021ca673a39a57" id="b5663ed9-0a8f-4a22-a3d4-a1ab08fad60f" chipset="acmgt3" name="Ext1010" />
+    <guid config_hash="765a4838b8533765250eb3ad9c55819b" mdapi_config_hash="8285f749ef42ef7730742aef723e70fd" id="232e858b-7116-44e8-a4be-856c59026650" chipset="mtlgt2" name="RenderBasic" />
+    <guid config_hash="47dd4aee9ef5ba2d15e61d25f735d1d4" mdapi_config_hash="c4c86e8bd7e0cfffa7c553517340292a" id="fea2b2b7-a072-41c5-9092-2d7c48bb56c6" chipset="mtlgt2" name="ComputeBasic" />
+    <guid config_hash="da49b5c7e497eab30522295f416dd84a" mdapi_config_hash="80f802eb9434e078d1c158be06940d88" id="011e5c80-c877-46fd-90ff-fd0bb29cb5ec" chipset="mtlgt2" name="AsyncCompute" />
+    <guid config_hash="1a28d05d945714b099a9417181b72962" mdapi_config_hash="0cdf3168ffd88a84c2a42d4c62567189" id="5f430543-ba1e-487c-b217-90570cfb85f9" chipset="mtlgt2" name="XveActivity" />
+    <guid config_hash="30a171d29dd5020b9c3e783770d368fa" mdapi_config_hash="7bab7a09782a068f84c86a936d26cbd8" id="3cb64fed-0f61-4e41-a754-b9c5b4892f77" chipset="mtlgt2" name="GpuBusyness" />
+    <guid config_hash="65340d74cb80df3ee2401d71d4b95c0d" mdapi_config_hash="74800fac78bc147297868f50f25488ea" id="27d6eda4-aabc-4203-8848-aef69658ae74" chipset="mtlgt2" name="HDCAndSF" />
+    <guid config_hash="a6cd8d6e9c44203dc49ef26cd4ba87eb" mdapi_config_hash="d575fb4e1794402955c9ed37694a3a15" id="50b898ad-44ae-4d02-ba5b-a7d2a024a480" chipset="mtlgt2" name="L3" />
+    <guid config_hash="7f4047c7b40fe74c5386de73e934f725" mdapi_config_hash="66f4afaa5b82df1619e751db3295c5dd" id="29adb364-f161-40cb-929d-c14036447c4f" chipset="mtlgt2" name="RasterizerAndPixelBackend1" />
+    <guid config_hash="2e3de14acc09dea6d3a8c4ab17bfcd91" mdapi_config_hash="6c3b33c6baafba9c5046823c7ab52d22" id="787c682f-68be-4a64-b998-77d8a30b4ea6" chipset="mtlgt2" name="RasterizerAndPixelBackend2" />
+    <guid config_hash="f8ac69a904de7bffdbd0af3b1c0e50b1" mdapi_config_hash="de6a9b8cb55c7125ba5ee310caa21fba" id="1269ddfd-22a6-47ca-9a1a-dc37b8c38490" chipset="mtlgt2" name="RenderPipeProfile" />
+    <guid config_hash="34539ea3f5c80956b72b788dcbfb13a9" mdapi_config_hash="8f4960f14074f3af57ac26be2592d477" id="3c304c3b-9ada-4d92-9b54-34ec4e70aea6" chipset="mtlgt2" name="Sampler" />
+    <guid config_hash="373388fb0836bdd9d577b496dff15a0f" mdapi_config_hash="235a4fce47d90e02f060ad633d0a6886" id="616fc1b0-53bb-4411-93b0-b34ab2b0bfb8" chipset="mtlgt2" name="TDL1" />
+    <guid config_hash="c3c0bc8930f763a09a8efc23f6c1cb20" mdapi_config_hash="374b4363fe79bd487e1a1de67631e7b9" id="952fa513-550e-49bc-a355-22fadbea5455" chipset="mtlgt2" name="TDL2" />
+    <guid config_hash="f7588f87b24ad3328f816574ec29ee3a" mdapi_config_hash="d7d99e82673ef509f1e1d37b0a1970f1" id="d0ed8afd-ad64-4774-8788-1a15f4ab7829" chipset="mtlgt2" name="TestOa" />
+    <guid config_hash="321ffd18a528dd67798e8a8476f632fe" mdapi_config_hash="7984537ffe8ca547d3583a56edf26bbd" id="fc82db3d-d6a7-413a-8349-b31f02251d2f" chipset="mtlgt2" name="Ext1" />
+    <guid config_hash="28f18aeeb865c4bf1d8d82d77f571085" mdapi_config_hash="bba07ef452c6a67f0a8ff04fa9b4d93d" id="3479a81d-9017-4930-af0c-14f7fabadb38" chipset="mtlgt2" name="Ext4" />
+    <guid config_hash="0955d0036c6b2b4afe94cb4d8115c577" mdapi_config_hash="38688d5ff152f82f150d9c569caf2351" id="e4701256-cd06-48f7-a005-d4d1f9e895c1" chipset="mtlgt2" name="Ext5" />
+    <guid config_hash="dcdb3b48b18515e0a0f7d2179c89bda6" mdapi_config_hash="a4f1512b26ca4c3ed1d8d818cfedcd65" id="3e47d0e8-5414-4496-8746-37e36fefc777" chipset="mtlgt2" name="Ext7" />
+    <guid config_hash="3de00cb5cc6f1598d624b9d4c2d072cf" mdapi_config_hash="0237dfeb5d300cab42cc36a64552ebe7" id="5aa36c1f-c6da-45ab-ab21-397d9a4b6a06" chipset="mtlgt2" name="Ext8" />
+    <guid config_hash="f66aff20b452fc6746f6f345aa996b63" mdapi_config_hash="14b2a444cc752fd4946c11906f5a7486" id="1df59d79-16d8-471c-b3da-f0f62862f89e" chipset="mtlgt2" name="Ext10" />
+    <guid config_hash="f27eef4bd1b25e14f598ff04fe69a511" mdapi_config_hash="1f4b2bf31f456235f289cf7eba5039c2" id="d05d3d84-ba16-41b5-b825-5a3d2aaabbfc" chipset="mtlgt2" name="Ext11" />
+    <guid config_hash="a6cd8d6e9c44203dc49ef26cd4ba87eb" mdapi_config_hash="d575fb4e1794402955c9ed37694a3a15" id="a49e7038-1e78-4b49-bc55-e7e7d04e4074" chipset="mtlgt2" name="Ext12" />
+    <guid config_hash="eede85290cf080739c83ea0fd3ed4cc2" mdapi_config_hash="5b1a7fa91e28d06b0f7abc4c85223c9c" id="10f4cba5-2db8-46a9-a211-391dca810ea0" chipset="mtlgt2" name="Ext13" />
+    <guid config_hash="abd9542c5a4f9448419453ca9321090f" mdapi_config_hash="6b34a37d5c8421877062853389d01825" id="36c1995a-e670-4c2a-ab94-74b9e7360fb2" chipset="mtlgt2" name="Ext14" />
+    <guid config_hash="d9f8bdfdd83f60c4c6825bf3b7002c4f" mdapi_config_hash="76dc33267b5fc0c1e72904157a17c452" id="a04168f6-637e-44af-a1b6-e5f005708df4" chipset="mtlgt2" name="Ext17" />
+    <guid config_hash="ecccf5958726aca6600a5463878e15cf" mdapi_config_hash="f2e6df19e259eec4b02fd12448aa1e76" id="0486a0e0-3522-4689-bdf9-623603f8e3c6" chipset="mtlgt2" name="Ext21" />
+    <guid config_hash="fe47d492db7152a11f5af3ae0f96b37f" mdapi_config_hash="f276c8fe9f9c4e964833bc6626147190" id="b30ba7fb-fe8f-4e81-b271-3d6f52edc257" chipset="mtlgt2" name="Ext23" />
+    <guid config_hash="eb985e9199da1c856b5838ce5b915844" mdapi_config_hash="0a43d72e4da3ccb63f98cde72fd7de61" id="053ca218-0961-4bb2-b689-9fe2cb090fdc" chipset="mtlgt2" name="Ext28" />
+    <guid config_hash="57d1edc968bc247ca3a5d1980ca45bd2" mdapi_config_hash="afb3d322f2cdcd1f338c76ccde03bdeb" id="7a4a45f1-e844-460b-8800-91b62eb47124" chipset="mtlgt2" name="Ext31" />
+    <guid config_hash="e9422d51474ae2322f83584854c593ed" mdapi_config_hash="0996e8ed51a272a3843e361be3c568c2" id="fd99f6f4-d418-4d86-800b-52998df4eb00" chipset="mtlgt2" name="Ext35" />
+    <guid config_hash="49395b5d09f6656ffa0663aa31cf5f5e" mdapi_config_hash="e6faea8629a8503a3c13a5d83dc87cf2" id="10f4436b-83c7-4e38-867d-82144311e412" chipset="mtlgt2" name="Ext39" />
+    <guid config_hash="e8eb4fb7a2e8d2b8fb9bfcd2e301c12d" mdapi_config_hash="0c20b00317caecfc040c299fbfdaed0f" id="ab8c937a-a24c-4b7b-94d2-7cdf4cf3829f" chipset="mtlgt2" name="Ext43" />
+    <guid config_hash="08520364a03552d3f8982ff277bd3296" mdapi_config_hash="d5cab185f21568264fae6d541e463a96" id="aa3ac820-b824-4681-94ff-3425eee63648" chipset="mtlgt2" name="Ext45" />
+    <guid config_hash="338a9ccaf6c810f246d28e68cc70b9a4" mdapi_config_hash="2df64e320a0e757578ebca903c7010bc" id="3a093546-2929-4b79-87f4-97df02c1fe8e" chipset="mtlgt2" name="Ext51" />
+    <guid config_hash="bb46f028e07626dba6dae16eff28868e" mdapi_config_hash="328b9b5caba1cf941822285d8c270873" id="2ccdac56-9683-4eb5-89fd-7d42e77c117f" chipset="mtlgt2" name="Ext53" />
+    <guid config_hash="554b7ffcb89762832002981a66b9b07c" mdapi_config_hash="f7cb222a2895d749c41d9cfe84e33be2" id="d297b1e3-fc04-45a7-a5c5-f92ab4357eb2" chipset="mtlgt2" name="Ext57" />
+    <guid config_hash="452953e5e2b131979229302ead5450c6" mdapi_config_hash="ebcad3c1addcac5ccdb7b447aeab2f28" id="bc372334-fe31-452e-843a-515328c75fd2" chipset="mtlgt2" name="Ext61" />
+    <guid config_hash="69fc066b5f8dc4b038fbb63b91a5f2ad" mdapi_config_hash="940775c667d26d8b3e13a5581cbb805a" id="8a5ca732-17d3-4336-a33c-292a7f625237" chipset="mtlgt2" name="Ext65" />
+    <guid config_hash="cf7a75cfc1953b64a7e4a892bafbda7d" mdapi_config_hash="dec741278ca5e60b5f4b8106918c82fb" id="2e72f570-378b-4672-a615-374c1a3d524c" chipset="mtlgt2" name="Ext66" />
+    <guid config_hash="3cf40c51c606a47dc68e07c06e29ea21" mdapi_config_hash="48ebc8497a275fcd9e1ceafc7d48fa5d" id="8f63bf05-fccb-45c2-89c1-cf1226c4fb80" chipset="mtlgt2" name="Ext73" />
+    <guid config_hash="21ce98190a80bb4916bdc3149b138933" mdapi_config_hash="ecad183caf98e92b21e0566a5b1b8c16" id="2e5b5a64-580f-4cfc-ac3b-e6ccc55a1260" chipset="mtlgt2" name="Ext74" />
+    <guid config_hash="471f74bf4b3538cfd137c6e3c81331cd" mdapi_config_hash="34c46644652c355f91254d85c11873ef" id="1e7215b8-72b7-460b-99d1-9be3984e9f6c" chipset="mtlgt2" name="Ext77" />
+    <guid config_hash="dd347b2a8ac774650a6a90f56fba8c61" mdapi_config_hash="153f6c473f1f8670e8e4ae6c22e10eaa" id="a1a1cc95-7466-461d-a3a4-a04818bb5d74" chipset="mtlgt2" name="Ext79" />
+    <guid config_hash="efb8a48116d2c6fd53030edd6be30316" mdapi_config_hash="e3f794326b47260a4c8dabe76c0d125d" id="06d62e44-cf58-4e35-a8cf-c76ee2b4fd7f" chipset="mtlgt2" name="Ext80" />
+    <guid config_hash="ab6e94c6c452ea18b34d0874041701be" mdapi_config_hash="41eaaf6a094d249c7b39454e85a9ab11" id="428a93d8-3475-4efc-960e-3402b062d8f0" chipset="mtlgt2" name="Ext83" />
+    <guid config_hash="4f7ccb0bf94c14394c8a2135f55b3cce" mdapi_config_hash="c7931cdff3d2bcbbe1937092adb81ba5" id="e6db7a16-f214-4cd0-91e9-94d8036c20ee" chipset="mtlgt2" name="Ext85" />
+    <guid config_hash="0b3418bde24822c8e86141f94ec54da9" mdapi_config_hash="60fe1764b8785668eca4d57cae6efee0" id="b96d78d7-c0c8-4941-9f28-e746f36627e4" chipset="mtlgt2" name="Ext87" />
+    <guid config_hash="9bb2ad27e05044281e3bf7070ccfe3c0" mdapi_config_hash="5774953e586ef263253210314f34a0f9" id="55e5926a-364e-45f0-bbcd-69375ac61391" chipset="mtlgt2" name="Ext91" />
+    <guid config_hash="dd347b2a8ac774650a6a90f56fba8c61" mdapi_config_hash="153f6c473f1f8670e8e4ae6c22e10eaa" id="a06cf71c-ad14-49b8-8a22-b367118514bb" chipset="mtlgt2" name="Ext93" />
+    <guid config_hash="efb8a48116d2c6fd53030edd6be30316" mdapi_config_hash="e3f794326b47260a4c8dabe76c0d125d" id="a05152f2-80f2-47cc-add7-70f4664b58e8" chipset="mtlgt2" name="Ext94" />
+    <guid config_hash="a6088dbf5a232211a7d987e73ca36a1d" mdapi_config_hash="a5e11aae4003c1329e493d8c474b37be" id="39f8d4d2-b28d-40a3-b545-a57865d7714e" chipset="mtlgt2" name="Ext97" />
+    <guid config_hash="9380228536e90debf9f9585117a0fa7c" mdapi_config_hash="b34a62bf5183b1062b0a739ac6b8a02d" id="ee9377fe-2623-4588-8ffc-517e34c2eb75" chipset="mtlgt2" name="Ext98" />
+    <guid config_hash="43c1d65e64eb392ff5790865ea0b8425" mdapi_config_hash="606c77c839ad7a71ed4e68921cb16d4a" id="b5533650-f6f1-4f66-ad40-6b4aba600102" chipset="mtlgt2" name="Ext100" />
+    <guid config_hash="083d85b1e3851b3fff7a0f4ed97e853c" mdapi_config_hash="de2bd050056c4f45da9514ac1e5e58e1" id="136839ab-66a3-42ac-bca4-1cfca1d3088e" chipset="mtlgt2" name="Ext101" />
+    <guid config_hash="268abad818bec5c52ca2fc9edfd27ffc" mdapi_config_hash="d47eb8180371900676f3fc844266413d" id="bd8e9b37-35b3-4a94-8ff7-bbad7d67642c" chipset="mtlgt2" name="Ext102" />
+    <guid config_hash="00336fbcb8f17953ad66f36bcf96d1f7" mdapi_config_hash="e69cc0f7997cbe7eb427b46be253f9c6" id="576a210f-b921-46dc-9af7-7f34eb1d368e" chipset="mtlgt2" name="Ext104" />
+    <guid config_hash="92b1efe497b8cdb26c82c352b28dc049" mdapi_config_hash="c1f72a4fa4267a59e03f83aa669502be" id="96b32930-859d-4fa8-8d81-4d26a160f0e8" chipset="mtlgt2" name="Ext105" />
+    <guid config_hash="78fc03fbedac67627b981cea0af7dbe8" mdapi_config_hash="31dc77f8168b147760ff7738f82ca7a9" id="bbe4bf0d-03a3-482a-869c-1c6e71d52dac" chipset="mtlgt2" name="Ext106" />
+    <guid config_hash="26194f4043f9124535badae21420e944" mdapi_config_hash="a64ed4f60399b9d9371c4eb888769b8b" id="02eafe17-886d-4559-b18d-c661fd6914c0" chipset="mtlgt2" name="Ext107" />
+    <guid config_hash="70001583ec1c8443618eed56cb87983b" mdapi_config_hash="328f4d40a0ed0d43bee0aea380ea19ec" id="8cb51ae4-6d00-44d5-9d24-29521022f02b" chipset="mtlgt2" name="Ext113" />
+    <guid config_hash="ed2264fa989005660f1b165c5de71e2c" mdapi_config_hash="f45c258a615444f1e27058a3991b6dcc" id="c50c1328-01a4-44a4-bc10-cea109a86100" chipset="mtlgt2" name="Ext116" />
+    <guid config_hash="f88a3536fe9dd287783abe80d0edda1e" mdapi_config_hash="0289fc24004eefea42bef4e2e4b1b5ae" id="3ac7b553-9dd8-4588-be88-8a50d4aa8497" chipset="mtlgt2" name="Ext118" />
+    <guid config_hash="a347cb010be507b3c8a5c3fe2d6f0a5e" mdapi_config_hash="1bdd093a2c74398560cbb36c9af0220d" id="39bbba4c-b77d-424a-9156-ede3d325df25" chipset="mtlgt2" name="Ext120" />
+    <guid config_hash="7990587fda1b415497dbbe83e6d84ecd" mdapi_config_hash="3f0119875041ae93b86d07c4b6d33ca5" id="1c2b42f8-2763-4c20-85d9-5a5bd7381eb8" chipset="mtlgt2" name="Ext122" />
+    <guid config_hash="426403b08bd593b97e7071be2b651a3c" mdapi_config_hash="ef5368461a07b718a333e34464997fd1" id="80240cbe-83d5-44dd-a03a-c498a6928be5" chipset="mtlgt2" name="Ext123" />
+    <guid config_hash="7fd32575be46b5303a63516b12963442" mdapi_config_hash="9abf33fda46df7a6730885110ae24a3c" id="f8d36c8e-4129-4962-afce-7917f98e9b2d" chipset="mtlgt2" name="Ext124" />
+    <guid config_hash="e9877d30c603d3caa321b00f07acecff" mdapi_config_hash="a2b30d5c0faa5d26028fab800edf5d86" id="08670eec-8015-4c40-b900-d47b9824ec83" chipset="mtlgt2" name="Ext126" />
+    <guid config_hash="e7e92bbe863bdde8cc94787d195e23a7" mdapi_config_hash="78d1acbe85d3523bca2438dfad5a32f4" id="7d149ad7-90bd-4201-8791-2e8c1c4359e8" chipset="mtlgt2" name="Ext128" />
+    <guid config_hash="4470e96526ab06dee1ca081263b997d6" mdapi_config_hash="bfdb7b3de0006c0e3e1d56fad640e969" id="52597b67-dea9-411c-845e-c7f7befa744e" chipset="mtlgt2" name="Ext130" />
+    <guid config_hash="629aa39f9b3fa68572fb57e310b00e07" mdapi_config_hash="294cdd784cce86eb864ee9b066683bbb" id="56b5eb77-117c-4392-a4ed-6a809598c28f" chipset="mtlgt2" name="Ext131" />
+    <guid config_hash="ec2b35cf249483b929fb5f2022c40727" mdapi_config_hash="e0dbd537b992d8b56423012b918e6851" id="d4f5b1c3-553d-46f6-abb8-8535ee5e4c90" chipset="mtlgt2" name="Ext134" />
+    <guid config_hash="b699f44898863063eca264cbf37b766f" mdapi_config_hash="ed8191e28050161cd09ed205bca25ee9" id="2aa7d46b-8b53-4693-9e5b-1245dc85cb90" chipset="mtlgt2" name="Ext135" />
+    <guid config_hash="670ece191cdea35460a03f7979437764" mdapi_config_hash="32942251e17d0a11df3ff5173dbdc579" id="18d95a38-b79c-42ac-a1c1-f6f3ef5ee213" chipset="mtlgt2" name="Ext138" />
+    <guid config_hash="ef79fbaa45231adb103add557bcdfa7e" mdapi_config_hash="296a99e159aa5c96a44856cd1cbccef4" id="7869d90b-8a61-40c5-b705-91ce55b64cd8" chipset="mtlgt2" name="Ext139" />
+    <guid config_hash="67feee4b0df2ef6c6a6a39fbe4a07c4f" mdapi_config_hash="10f40c195c6f1ee08197d344cc5aa8d6" id="c9f005ff-957d-471f-b6d3-98ebfd423f88" chipset="mtlgt2" name="Ext142" />
+    <guid config_hash="d1407c269331aaa2d0c05f45425a0104" mdapi_config_hash="94290964a637448329f16058ba7d3ca1" id="bf8f687e-d93f-439a-904e-14758015b273" chipset="mtlgt2" name="Ext143" />
+    <guid config_hash="dc38e27d4dc72f8589c700821d80a78a" mdapi_config_hash="ed1d58c0bae86e0b3eb502fbeb0b1910" id="38cb3c8a-b6b1-46e9-b18e-331afd4faad6" chipset="mtlgt2" name="Ext146" />
+    <guid config_hash="d8c3994e7afd686d83ca62895c426ae7" mdapi_config_hash="10dec6f0a33749f4cee8d7cfaa551923" id="f0624b43-b429-4be9-9cef-1a9c966b9bf5" chipset="mtlgt2" name="Ext147" />
+    <guid config_hash="26a13684fb76c50dcf355fdc52bb8b28" mdapi_config_hash="a47769433761c24e04458cf2ca429a0f" id="9be51bc5-540f-4a51-80b9-a6e8f849107c" chipset="mtlgt2" name="Ext150" />
+    <guid config_hash="218be593da18d02c27dc438ebeac66eb" mdapi_config_hash="1a890451088d9aeec44fda3d667d92d2" id="5303f1e7-b41b-4f48-a638-02293743f84d" chipset="mtlgt2" name="Ext151" />
+    <guid config_hash="65afbf2d1ae9eef7ad7e15b50296d871" mdapi_config_hash="115918bdb42fc9fc6ab2bc2ae7652ea7" id="269bfd75-1e50-4717-959c-f72de6c5e37e" chipset="mtlgt2" name="Ext154" />
+    <guid config_hash="6b4c698b68aa600206bcc675a0ed43f8" mdapi_config_hash="9666952a31fe9299c21619db6dd6305d" id="77c2e8f4-297f-46ed-95a9-370e21e131c6" chipset="mtlgt2" name="Ext155" />
+    <guid config_hash="195f65fab22787417625c53e6382e313" mdapi_config_hash="4bff69a0e541805bbc4fa022cda7ad6e" id="dea81dd8-3792-4245-9ce3-4591a6ff2d31" chipset="mtlgt2" name="Ext156" />
+    <guid config_hash="3c74a93df63b8c7ae983fb52e95571d8" mdapi_config_hash="cb151c04e5f91f69a2bedc5926db6d93" id="0f6dfbfe-33f8-4910-996a-8b639c57066f" chipset="mtlgt2" name="Ext158" />
+    <guid config_hash="f7fae8ec5932274f4d5cfa49470e6612" mdapi_config_hash="be619a81061f1a909836d043bb90c24a" id="7b4a0c8f-f35d-49e2-b1a7-243740c4d888" chipset="mtlgt2" name="Ext159" />
+    <guid config_hash="da5d1d215d57616f2616302e959a51ed" mdapi_config_hash="8794a250fa93e368fbe322c2ced3d2a2" id="bf4c98bf-1930-408b-87ad-2674e6e617c0" chipset="mtlgt2" name="Ext161" />
+    <guid config_hash="3c57a4af712738e96d2500279bc29336" mdapi_config_hash="6049a1063763f119e351b87db59870f3" id="2826204b-5835-4b64-840f-133d1ca5b03a" chipset="mtlgt2" name="Ext163" />
+    <guid config_hash="ad47d4b0383fb791726a759ef28a203c" mdapi_config_hash="f359d9b78a1555b5c629c8a3f6a3c8fd" id="b9e7193e-99b9-4e9f-9738-de7144ea3b39" chipset="mtlgt2" name="Ext165" />
+    <guid config_hash="093c28b535d5b7a4ba2c2e08b0d61524" mdapi_config_hash="87421ac9c8a0d5159f46092e33ed2b32" id="4797cea4-4618-42c1-aa36-0f8210b42a47" chipset="mtlgt2" name="Ext167" />
+    <guid config_hash="59a2448863b980cc9c84588a8198323a" mdapi_config_hash="9d774cf27539f902b5db3668917df66d" id="daeb4a53-f0ba-4bec-9462-8025cc17ca8b" chipset="mtlgt2" name="Ext169" />
+    <guid config_hash="25c9d666664c04121ab36571481c4ee2" mdapi_config_hash="1db7b682ea705b0324dedacc348172a6" id="2aeaff8e-ce08-49f1-aacf-c9631dc3c756" chipset="mtlgt2" name="Ext171" />
+    <guid config_hash="94be50121358ed4c70c6c2d88eb054ec" mdapi_config_hash="c2fb4cbfb7c1b9d4b0da96354510ccbf" id="5005db3a-31a9-498c-8153-bf47147473b1" chipset="mtlgt2" name="Ext173" />
+    <guid config_hash="8bc132f67c4cf5774cbeccb244a3be7f" mdapi_config_hash="a8559e8882c604ea60d5cd17154ea474" id="3e2a351c-3f4f-461a-a6cf-64f099b83fc5" chipset="mtlgt2" name="Ext174" />
+    <guid config_hash="43db74afdbb95a784730e3e1977f3e7b" mdapi_config_hash="06e097060db7f52d5e1cdefca8b70bcd" id="14c17f9b-021b-41e5-a4f0-ab8daaad56a4" chipset="mtlgt2" name="Ext175" />
+    <guid config_hash="67a7d4eff753974ebe194d1a752bf814" mdapi_config_hash="4a885bf9c1decaf3f4ea6a0dd860de8f" id="a258d429-a165-4fed-bbcb-c743a09dd68f" chipset="mtlgt2" name="Ext176" />
+    <guid config_hash="a1d39c5d18e6b8869f26eef61ada3129" mdapi_config_hash="8651b8f0d81c9f4b961bc7b013928194" id="986b3512-df42-4300-a3fb-3a0d5835b5dc" chipset="mtlgt2" name="Ext177" />
+    <guid config_hash="152f2a19d7d671d47870f45fa2e2dd70" mdapi_config_hash="381509f3e8a574a4d27b68ad44c9f8a3" id="29b4890b-203f-44d7-a007-270354d414ed" chipset="mtlgt2" name="Ext181" />
+    <guid config_hash="dddeefc99febe71a2e99e4290be080eb" mdapi_config_hash="0dff1ae921ab22bf34fa593a757181b3" id="87ec0ca0-a406-4ddb-9fb9-60beed37e12a" chipset="mtlgt2" name="Ext184" />
+    <guid config_hash="7ed8c161b3386c558ee6bb1ca98ad3f3" mdapi_config_hash="0a77253275fb74a2be38fe879dd2fe89" id="11c77c80-498e-4cad-9e2d-565a52fd3578" chipset="mtlgt2" name="Ext188" />
+    <guid config_hash="33ca4423b0d44f0a3d77ab101be071f1" mdapi_config_hash="860911cb77ef428f4a35c18f83d2c60d" id="123714d3-5d52-49de-91eb-0c909557d221" chipset="mtlgt2" name="Ext190" />
+    <guid config_hash="7f8e420216e76edaaa23a477822bda55" mdapi_config_hash="13bffc77f392afd555b2904abc76f387" id="d2741830-1ee3-42ab-b578-2b9c31a69c1c" chipset="mtlgt2" name="Ext192" />
+    <guid config_hash="17c675742eb948d0e949699702f49c1d" mdapi_config_hash="4e8136e9561f4a161c87fecfe23d2c69" id="d41508b5-921c-4033-a2f0-8a88aad4e718" chipset="mtlgt2" name="Ext195" />
+    <guid config_hash="da6705ca06243ec6f1b464cd2e8c2bb4" mdapi_config_hash="b79a9dddeb2626a58b95e1feb6596589" id="73a53c50-0922-4d77-87d9-13b18d368e4e" chipset="mtlgt2" name="Ext200" />
+    <guid config_hash="c23cf5cd84138f26cd070b6b4bb43739" mdapi_config_hash="88f8aa2c40575a409a0127846902f7cf" id="32b9a4f4-b1f0-478f-8998-d86e5c5c458f" chipset="mtlgt2" name="Ext201" />
+    <guid config_hash="02325001ddfda0d37349ca08505e1231" mdapi_config_hash="3e452d2bd20cf7afe19a753dc2549a8d" id="e1606d82-b67b-4fd8-9b07-a769dd6e6581" chipset="mtlgt2" name="Ext202" />
+    <guid config_hash="14091012d862395ff4b1437664191971" mdapi_config_hash="5895f1f314f2fc4faf658e0120ff5450" id="16647b5e-c9e4-4201-afc2-cb47a9f3f4d2" chipset="mtlgt2" name="Ext203" />
+    <guid config_hash="bd1eaa0c95df534b59d09c72ca74a834" mdapi_config_hash="2c0d357c1467b95637a749f3d2e7e263" id="639a17e1-f339-49ab-9884-6b9a91a5a0c8" chipset="mtlgt2" name="Ext204" />
+    <guid config_hash="d5c3727ba4b91f4f62a9e15d8946b077" mdapi_config_hash="7f08cb770f0ff30aba8e827fb4de8b90" id="7420acf6-1809-41e3-b5d1-49455c60aa66" chipset="mtlgt2" name="Ext205" />
+    <guid config_hash="e3369a45267dbff4647add8f7c63bb71" mdapi_config_hash="7e0ecb17c631286c7c6fb2f9aa1c8322" id="015d134a-1b6e-4969-b972-b904c1d0cc85" chipset="mtlgt2" name="Ext212" />
+    <guid config_hash="509e5553d44ab5dd6f2c12838cfc8f95" mdapi_config_hash="b7e302f68f1b9b4d12c4c3aa00a43cec" id="191eb41b-6180-4cf9-b3fb-048bf4da8b94" chipset="mtlgt2" name="Ext214" />
+    <guid config_hash="73aaa5f46199c0784fdd70cffe5dc8ca" mdapi_config_hash="0915cca136dce4bea26f02fd1332316e" id="840ad20c-c8ba-4dd5-bc42-674987d6ec79" chipset="mtlgt2" name="Ext220" />
+    <guid config_hash="29c1ce19b5c64ffc6888f0842f8e9639" mdapi_config_hash="e034a61144f3354cc5bc8290e18ec8b3" id="a8bfddc1-d469-45d6-8790-7d8c649ada41" chipset="mtlgt2" name="Ext225" />
+    <guid config_hash="2fd50f84108fb2b17dfd2fada9d493e8" mdapi_config_hash="64eeab5e884e9addbecbe622f6bc637d" id="325e5e9b-a055-4c22-8997-98d546a31afe" chipset="mtlgt2" name="Ext227" />
+    <guid config_hash="38e23efc228a66b540103b546d489177" mdapi_config_hash="d0944fa48ea47bef3d83b16cd1fa5953" id="94537bb4-60fd-45fe-b172-29ed90c9abac" chipset="mtlgt2" name="Ext229" />
+    <guid config_hash="f80fcb75fad26cf87314e94d9bd1a20c" mdapi_config_hash="9c77551e17de495a8da3a3e865777f7a" id="7fceb68b-57e6-480d-81d1-991d8d6f7c4d" chipset="mtlgt2" name="Ext231" />
+    <guid config_hash="3057d5b3171642e12525304349ad7247" mdapi_config_hash="6bbe6f35785720965c5242880eeaf3ba" id="ad62dc60-987b-415e-9f7d-6976fbe82dac" chipset="mtlgt2" name="Ext237" />
+    <guid config_hash="956b340586f38bcdf82f515933afb5f5" mdapi_config_hash="4455b4c19f5834f0116157984f177517" id="e630dd77-cf9e-4deb-8f52-57506b306b63" chipset="mtlgt2" name="Ext238" />
+    <guid config_hash="f913d0b7b86a97842c99aed003b9e877" mdapi_config_hash="4d503375718b58b40107c3266fa2934d" id="6dfee12d-6bfc-434a-8873-bc076a47d80b" chipset="mtlgt2" name="Ext239" />
+    <guid config_hash="4a0418d6d5897f965772e67d7d510562" mdapi_config_hash="04933d3b78df474aeb64f18b825769f0" id="5edd0480-7a46-49f7-8709-7f737d0cc42a" chipset="mtlgt2" name="Ext240" />
+    <guid config_hash="4c0093ef4548f2db8d6b1647ae435f07" mdapi_config_hash="ce24cd03c7ed2767d8ee655bac0f2f84" id="a7cd6b7e-e8ee-4853-b2d3-269bf3ed73c7" chipset="mtlgt2" name="Ext500" />
+    <guid config_hash="a68a66449827d355064d3db9473b4df5" mdapi_config_hash="129fbcf33c8f25a6c15935e5aeaef3b4" id="8e09a7a1-b0e8-464a-a28d-90250f64ec9e" chipset="mtlgt2" name="Ext501" />
+    <guid config_hash="b66b6fe10d453212eb1bd501ae6a29bd" mdapi_config_hash="17c05f7a6933e3fcf7669b142bb55705" id="57a19b6a-1b7d-4337-a9c9-710c56c46f84" chipset="mtlgt2" name="Ext502" />
+    <guid config_hash="610d0cdc34fe0442b0c8e6277703f21a" mdapi_config_hash="32ce7dfe4ea7f5e79c69cc04d41d3f01" id="394b21ab-311c-47a5-9b10-88159f5ac999" chipset="mtlgt2" name="Ext503" />
+    <guid config_hash="3c81d715dab552c96a708e5561cddf32" mdapi_config_hash="2ef3813b66f81eda0cb04dbe437234d8" id="143440a0-d7e2-4f41-8372-8fdca1ecc2a8" chipset="mtlgt2" name="Ext508" />
+    <guid config_hash="15984b5fb58b51a666ece004db6ae774" mdapi_config_hash="26232e447ea7dcf0c3a97e4353250a53" id="7c5d3f41-b690-44b2-8352-00215ac94bae" chipset="mtlgt2" name="Ext509" />
+    <guid config_hash="d44c98ea5ef5bff89e9ceb275d0da118" mdapi_config_hash="a8071d6fc9bd3959731ab78598f80294" id="02f43996-feff-4e13-a8fd-eea9de2f13fc" chipset="mtlgt2" name="Ext510" />
+    <guid config_hash="df750e7700406492d3bcd261c4af73e6" mdapi_config_hash="c2e0e09a27bb2ad5f80b0766ab56b37b" id="2cbd327c-40e2-452b-a9fc-c7787869a352" chipset="mtlgt2" name="Ext511" />
+    <guid config_hash="6d9b68c2c4b89d9a952160fe503ac6a6" mdapi_config_hash="4508de639c858687559dd85a870d624f" id="3a9dba68-9402-48b0-a8ec-28e4e4a534de" chipset="mtlgt2" name="Ext516" />
+    <guid config_hash="039124a8e61c2e323aace525da916ab0" mdapi_config_hash="ac8b6cf6d21ba83fe04789064b2caa97" id="ea503506-9afa-42dc-b85b-1237dce6e8af" chipset="mtlgt2" name="Ext517" />
+    <guid config_hash="589d2f86e9b14cf16b9c8c33e473d1e4" mdapi_config_hash="1184ac825d3d0cba18e7ca501e515fc9" id="5056524c-12e3-4ba6-8788-eb934f284753" chipset="mtlgt2" name="Ext518" />
+    <guid config_hash="e447131244fe748ce43754407e989b65" mdapi_config_hash="951d9d20fb4e62ea8f73b3dd1177c13e" id="13f8665d-c5aa-47b4-ae3e-af80dd134e1b" chipset="mtlgt2" name="Ext519" />
+    <guid config_hash="494e73626c9ed982b41321ceb420fb5d" mdapi_config_hash="526073cfeb41eade55a0648cc0d0d8a6" id="4d5b4699-5a6a-4a85-81e1-3ad75d735476" chipset="mtlgt2" name="Ext520" />
+    <guid config_hash="afbf6eff823dc311237bffc716d9d6e2" mdapi_config_hash="810532e0a855e4a0b0d80f61bf141386" id="f9cc9e2c-c517-49a1-b27c-f81b08b411fc" chipset="mtlgt2" name="Ext521" />
+    <guid config_hash="039e3ae17b57bcec805b99da34a9ba2d" mdapi_config_hash="63296c1a360c20a6a7148bc2c019c989" id="f5fe71de-58e0-4fba-a75a-111906d8fb5b" chipset="mtlgt2" name="Ext522" />
+    <guid config_hash="976d54e9e4b863064ced81abfcb7a2f6" mdapi_config_hash="8f550dd46cf4040c385bb60019603a82" id="46d82207-1235-45ea-a0e6-f71fa55a3380" chipset="mtlgt2" name="Ext523" />
+    <guid config_hash="2d2f917670c799eaa8c65ef9ded7c1be" mdapi_config_hash="637b8f7cf80c76dd43a1f1f83bd23815" id="0ea54a28-5052-4c2a-a18a-8cc17383a072" chipset="mtlgt2" name="Ext540" />
+    <guid config_hash="513f0079011c37b9c81328099855f930" mdapi_config_hash="2e38671e81188a5e0d02ed2e9d0fa9b2" id="9cd9ba1c-3c59-483d-9ce3-136c8898f09d" chipset="mtlgt2" name="Ext541" />
+    <guid config_hash="9ebc7179829ba2d6546228ed24f3b7b9" mdapi_config_hash="a8104fb4f8d618d65e645d31d655cf45" id="ab29d0d9-3388-4316-af23-932aeef1ed23" chipset="mtlgt2" name="Ext542" />
+    <guid config_hash="fefee4d6b9f90c0fed73deb39bcc31ba" mdapi_config_hash="9ee06d6b610dac353d674590a41160e3" id="16bf4ba3-2204-4d52-8f5e-d49ef8f571bb" chipset="mtlgt2" name="Ext543" />
+    <guid config_hash="f5ad3b4e2f9a2d3bd99059e67d97f7dc" mdapi_config_hash="102886c4384e274df028ed8694d43d00" id="66331aff-0aaf-41e7-ad18-fa61060d3af6" chipset="mtlgt2" name="Ext604" />
+    <guid config_hash="6389c2dcb6a2b100db74a782d4f7006f" mdapi_config_hash="d8d0fcb20772d25731d0ac8a7d587cb9" id="2d24479d-6766-4632-8d2b-f440c9bf53c7" chipset="mtlgt2" name="Ext1000" />
+    <guid config_hash="e358e6156c7379f8064b679128fe0747" mdapi_config_hash="a9988177c98737d0b52bcf215079e95b" id="15aa1ce0-6750-4566-8b2b-6d71a6ac4039" chipset="mtlgt2" name="Ext1001" />
+    <guid config_hash="c4809b4f9dbd405691ebd29dea153aa2" mdapi_config_hash="8d1002c55a03d16517de67b4b8970d12" id="23131267-15c5-47bc-bcb3-4c05fc452e0e" chipset="mtlgt2" name="Ext1002" />
+    <guid config_hash="33b1153b5651e90c9f876a24d622b8ac" mdapi_config_hash="3006063ffc95bfa63b84bb54ea205114" id="605d1ee1-c160-46ee-9e31-6daf3885401c" chipset="mtlgt2" name="Ext1003" />
+    <guid config_hash="8bb1139fff1ee995a5ade92734e11d8a" mdapi_config_hash="fbbbc2eaec0f182e838cbdfa1c8372c2" id="40f4dcae-3ed1-4f3e-bddf-dbb87bc4279b" chipset="mtlgt2" name="Ext1004" />
+    <guid config_hash="83d7b8e952e3598565267c65964b2771" mdapi_config_hash="7a5482c523806abe25c8c4dbcf5273e7" id="099da490-3594-4baa-98af-cea30d4d6c15" chipset="mtlgt2" name="Ext1005" />
+    <guid config_hash="e7efe91c7aeb591043358c1b5e3c019d" mdapi_config_hash="94ecec147a25de742814fbb01fd4e9c3" id="ab298da4-5917-4592-bbe0-1c21dedf000b" chipset="mtlgt2" name="Ext1006" />
+    <guid config_hash="a96fb9e9d0949e6cc372ef445fded872" mdapi_config_hash="7fb3e6405e4b54b8566589aa79cd960e" id="1b429688-49f8-48f2-8a06-18ba5c6a2b52" chipset="mtlgt2" name="Ext1007" />
+    <guid config_hash="310dddcb04d1088a3865f698d758cbc2" mdapi_config_hash="c6a3be7d49b5697074021ca673a39a57" id="a4717f34-1c8b-40d8-a022-abbcf03cc6e5" chipset="mtlgt2" name="Ext1010" />
+    <guid config_hash="d379711c3ed9953849437a5a9c1b42ed" mdapi_config_hash="72853bc6b1fc36dfe4c7eeec066894eb" id="1124d1b6-6182-4b5a-950b-27b38ef7c996" chipset="mtlgt3" name="RenderBasic" />
+    <guid config_hash="47dd4aee9ef5ba2d15e61d25f735d1d4" mdapi_config_hash="c4c86e8bd7e0cfffa7c553517340292a" id="522743d7-4e01-461a-8600-7904e8ddc80c" chipset="mtlgt3" name="ComputeBasic" />
+    <guid config_hash="da49b5c7e497eab30522295f416dd84a" mdapi_config_hash="80f802eb9434e078d1c158be06940d88" id="d9edd254-60e8-4ce0-82b1-7b3de3bc79a6" chipset="mtlgt3" name="AsyncCompute" />
+    <guid config_hash="1a28d05d945714b099a9417181b72962" mdapi_config_hash="0cdf3168ffd88a84c2a42d4c62567189" id="703a9693-1444-4e7c-a235-1c4d6ee01943" chipset="mtlgt3" name="XveActivity" />
+    <guid config_hash="7fb3348429c22272f30d06cc280d712f" mdapi_config_hash="4a73d19b314757a104d1e3590c2f6c00" id="edae72d3-bb06-47af-87b4-7585274c6076" chipset="mtlgt3" name="GpuBusyness" />
+    <guid config_hash="048c29c99f2a51a14bb4621a3251854e" mdapi_config_hash="3ce1c33e1454f806fc806f7652a9eafb" id="e1a408d6-aece-4bde-8bbd-1c7fbfff02cf" chipset="mtlgt3" name="HDCAndSF1" />
+    <guid config_hash="b48a8431b61a59cc9e42c4cc201a47c0" mdapi_config_hash="fd8ba68df79e2b2a9954350de001161d" id="374e8aa3-09df-4d69-ad32-3133f6ad3c86" chipset="mtlgt3" name="HDCAndSF2" />
+    <guid config_hash="8b524b5a9426d6a09573abb7e7f3a44c" mdapi_config_hash="977769471915f98207ed14448a6bc61f" id="580d5311-4e9d-4210-b419-37259ffcd3f2" chipset="mtlgt3" name="L3" />
+    <guid config_hash="b0872ef353390889a717294e1ce9c50e" mdapi_config_hash="1a1c98d09ca2ed37298fd3aac477e0cb" id="4286bd8f-f9db-45e5-aa37-51dd7067f751" chipset="mtlgt3" name="RasterizerAndPixelBackend1" />
+    <guid config_hash="5e3c14edffb52947c5f4ec4292f9c43e" mdapi_config_hash="020f38e1b71f6039b7ae4875c48f948e" id="ac90f98d-14a6-4dcc-b5d7-31ee157bb6e2" chipset="mtlgt3" name="RasterizerAndPixelBackend2" />
+    <guid config_hash="e395591031565b1dddf3034216782bc1" mdapi_config_hash="aa2220d260291f3d3b2641205bffac96" id="f15b97f6-eb1b-43a8-839c-7bd956c143c4" chipset="mtlgt3" name="RenderPipeProfile1" />
+    <guid config_hash="06711cd69224f5be0970f1a34467da2c" mdapi_config_hash="464d03b341ea8fc6fe0eda64516a8eeb" id="86b9199d-8a44-4694-bbde-6fd35bada236" chipset="mtlgt3" name="RenderPipeProfile2" />
+    <guid config_hash="88d809d679c5560d7b83ea96370f8af4" mdapi_config_hash="5657d312fbca127e42830767e57baa54" id="ae70a69c-341d-492a-b703-afa08a3497ba" chipset="mtlgt3" name="Sampler" />
+    <guid config_hash="f43fa5ab5fa6f475cd9f4debc4b4dfae" mdapi_config_hash="d6521ce4ed82ece1d1af49577ee3e4f4" id="cf27081a-d750-4c9d-8a19-154f976992ee" chipset="mtlgt3" name="TDL1" />
+    <guid config_hash="d5da95435f87b3b2dddad10f4e1accab" mdapi_config_hash="f81b3500dba6bae30cb475a68b450623" id="fa292653-8b18-448b-b57e-8e8ff92fac11" chipset="mtlgt3" name="TDL2" />
+    <guid config_hash="21fd6477790dc8803dd6331b8c41dd24" mdapi_config_hash="48c076d960ec7e094bc846058a20264f" id="9604dfeb-2724-459c-a25b-5e5e06d93fd8" chipset="mtlgt3" name="TDL3" />
+    <guid config_hash="95b5a166dff16d27293d7d657c146c20" mdapi_config_hash="742195ae50b801b9c5d680a5a9558cb0" id="b5333a47-add0-46a5-82d9-e62dcee14e81" chipset="mtlgt3" name="TDL4" />
+    <guid config_hash="269711b73f95981cabbcdee5a96a9ccb" mdapi_config_hash="c4289990e5c8cbd4918e9c2c333f251c" id="7272a7b8-6df2-4180-a95f-2ef7ad4412cc" chipset="mtlgt3" name="TestOa" />
+    <guid config_hash="6d1cd0ed097d034869eb468b43dd879a" mdapi_config_hash="d6e43578c93c9c1ba32a063e36fa10cc" id="682c3520-dffc-4a76-8e17-1d9effc01a1a" chipset="mtlgt3" name="Ext1" />
+    <guid config_hash="e06924155d4acde10c45e89e6c65868d" mdapi_config_hash="eb6499f1a47dad7eae75cdb85b0bef2a" id="b24b7052-70a1-4ef7-b61d-7ee4d7e159ab" chipset="mtlgt3" name="Ext3" />
+    <guid config_hash="fc06c18d17085caa964777920a316cf4" mdapi_config_hash="e80db872fee6810d6f47a683a4a1c9ce" id="205ab9ab-56fd-4fdc-b3b3-91dc57be0fd3" chipset="mtlgt3" name="Ext4" />
+    <guid config_hash="939e13be9335004538a9e1d6944b4836" mdapi_config_hash="71a1bb2c5722c63fcf7176f6c61975a4" id="26cb7ee1-a26d-410a-9283-e07d6ced5fce" chipset="mtlgt3" name="Ext5" />
+    <guid config_hash="6e82d13da5cd70235fefab3b43e9e4c9" mdapi_config_hash="561b960bd69e9823d50cfae86614fabd" id="e62c9cd7-ada7-487d-87aa-b1ad4ab9a2c5" chipset="mtlgt3" name="Ext6" />
+    <guid config_hash="baa81cf9fb16c0a5e738fc023f371350" mdapi_config_hash="614db897903581ee199202e79c94ca6c" id="714e9d80-e4e3-40e6-9e79-2ca6d1d0a5a5" chipset="mtlgt3" name="Ext7" />
+    <guid config_hash="5660b1f0e0ba49d22c1eaef513c8b58a" mdapi_config_hash="31ab651e5dc06042c8d2248f65a75d73" id="30499dfb-3977-4808-a34c-93e7b50e0454" chipset="mtlgt3" name="Ext8" />
+    <guid config_hash="b3b01ef016a1c55d9d932400511dd7cc" mdapi_config_hash="b4c689c289687c4df0e2523faf70cc4f" id="417618f2-7a87-4745-bccd-6ba14d17bfa4" chipset="mtlgt3" name="Ext9" />
+    <guid config_hash="97c49cf8f71f5bf86035d3bf6cb690c9" mdapi_config_hash="e25449627d90b790133b98f4a92657e1" id="443c32c7-e5e4-43da-b4f2-77efe45a60ed" chipset="mtlgt3" name="Ext10" />
+    <guid config_hash="4e1fe79bb42638306bcea8cc462480e0" mdapi_config_hash="7a8465c347b7ec6e7c02cbabf1874764" id="3833e442-880a-4746-9df1-6347b7e5a081" chipset="mtlgt3" name="Ext11" />
+    <guid config_hash="c1d03b2147ea0f76deb7cfeba2902229" mdapi_config_hash="1d18ab4e0bcded835e9eecb45d9416b0" id="931bb082-6f87-450e-8910-fd6a4ab206f7" chipset="mtlgt3" name="Ext12" />
+    <guid config_hash="08e510b3f7601ce818fdba8c8b4f964c" mdapi_config_hash="4f1ef20feeef9aa8adfc8bc50cc38b42" id="f7fdd159-e273-47ab-99bc-f4fc410c6053" chipset="mtlgt3" name="Ext13" />
+    <guid config_hash="293f272afc98ed59c9d541aa896bbf9d" mdapi_config_hash="8afb2b1a2427c87340d1430cf61545f0" id="423732fb-f20a-4549-b632-53ac587668d9" chipset="mtlgt3" name="Ext14" />
+    <guid config_hash="90b4639151f5f3ad30d2ef227e96aed8" mdapi_config_hash="2925a421c27926ff8498938f9587206d" id="0fa8f991-d412-4014-a7a7-be08ccf5fc4c" chipset="mtlgt3" name="Ext15" />
+    <guid config_hash="f8641fe31d5f36c58296692ae77b2620" mdapi_config_hash="b0753979c6cc048e8676213967aee15c" id="e37de2da-c16f-4b2a-82bc-e1062fabfa2a" chipset="mtlgt3" name="Ext16" />
+    <guid config_hash="499b40c34f6bb9c34b4b8413ade24caa" mdapi_config_hash="27bc07fbc0e01d65bee4f1062a256bfe" id="e8a60701-f694-496d-95be-34cc80796a46" chipset="mtlgt3" name="Ext17" />
+    <guid config_hash="e83612768f09ec0b9efb3520a870dd8c" mdapi_config_hash="7f94b7c8d502d8d088987c5d32dc78b4" id="1c957158-09ff-4a89-aa5b-3c1b4e46f9ba" chipset="mtlgt3" name="Ext18" />
+    <guid config_hash="e02650a394a74a1e90dc736eb01a1026" mdapi_config_hash="38f94039244cad2e61756b842212a155" id="a0b46166-6078-4045-8321-6df39b8e8ced" chipset="mtlgt3" name="Ext21" />
+    <guid config_hash="b9f8f24947fa3168fa34073ae5fcc011" mdapi_config_hash="06f7be75246aa3c7b98295a4a5968dcd" id="92371114-aa03-46d8-ab34-6e843fc92123" chipset="mtlgt3" name="Ext22" />
+    <guid config_hash="e8c0a424c152b1543e94959717fdf5a1" mdapi_config_hash="ee36bce469ae9447b8c037b3095ccae3" id="c7cd47a5-39e8-4c58-9b4f-a9c6df869db8" chipset="mtlgt3" name="Ext23" />
+    <guid config_hash="21d31dff161af19a3857da0d9b074010" mdapi_config_hash="7394fe9b26fc0c3d7c6bc48f70b1fb48" id="2adf2c05-e151-4fa7-9e77-2331bd94235e" chipset="mtlgt3" name="Ext24" />
+    <guid config_hash="ac4fd588139786c58c0e61d7c50c85a0" mdapi_config_hash="91495c97b905fe10015bae056d784815" id="1fcdcf0a-54da-4397-8832-c884d8d0b3ff" chipset="mtlgt3" name="Ext28" />
+    <guid config_hash="ee257c12bdca8b749fe768d79d88c38e" mdapi_config_hash="2289dc2115f1ac4991ad8e310769175c" id="9701aca8-76a6-49ee-96c9-ff983f24d29e" chipset="mtlgt3" name="Ext29" />
+    <guid config_hash="9162f644c647e1b70d0afd9315c05744" mdapi_config_hash="fcd9f43d5bce9ee5df7b91bccd2bdfab" id="f47e74cf-7966-43ea-bbac-46f9a0d1dc1f" chipset="mtlgt3" name="Ext31" />
+    <guid config_hash="9b849140144bf66ebebf23069c05b145" mdapi_config_hash="fd831451961ab418239cbff8a7f8ca24" id="3e220edc-390e-4964-9e57-4d45f3e01de8" chipset="mtlgt3" name="Ext32" />
+    <guid config_hash="5fb2b44333c55500099bc27be124dea9" mdapi_config_hash="8bb2e9cce7b75a31af89abbfd00a5f30" id="d334294d-8dd2-4ae2-ae31-7d0d4acc2b6b" chipset="mtlgt3" name="Ext35" />
+    <guid config_hash="b163996d15ec4d05b4e8cce994a77a12" mdapi_config_hash="fec8dd0067a0b639ad34504fb6e30af1" id="b749495f-4fc4-4e54-965e-38990758473b" chipset="mtlgt3" name="Ext36" />
+    <guid config_hash="339da67172ac6e89bb82de83fbf43426" mdapi_config_hash="39e3a795587d5d639ca966fc2cdea1aa" id="09c0f842-3711-48f5-bf3e-74c1caa9f791" chipset="mtlgt3" name="Ext39" />
+    <guid config_hash="39b9ac5af143efc2ffbfbb79d5ff1e77" mdapi_config_hash="089833a35d72eda8879d42694f3544a6" id="be7c864e-0538-420d-916d-ce3aed7742ba" chipset="mtlgt3" name="Ext40" />
+    <guid config_hash="3f3a88d33535885690065d3a878f8503" mdapi_config_hash="81200085395f8713215ccd92a25e8fbd" id="86cf3d13-947b-4f7f-9685-1ff59ec342dd" chipset="mtlgt3" name="Ext43" />
+    <guid config_hash="75ec01b46b99f1a4248267f9ffdddf93" mdapi_config_hash="6b383cdfbf61cd299f3d394ea4b87e27" id="7675136e-a91e-4bf8-b206-32591b878339" chipset="mtlgt3" name="Ext44" />
+    <guid config_hash="cd1c94468b06e746dea62d9aa7756854" mdapi_config_hash="69910214c3c05ecfbf887ab686786cf3" id="e953dbdb-3451-4912-80ae-241ecc56a59e" chipset="mtlgt3" name="Ext45" />
+    <guid config_hash="4f0ab88a81b1430689674cd48b6d7995" mdapi_config_hash="96b88c95ba548e725b2f310f4cdd7a04" id="94219d74-6a23-4b93-bf62-88c9ad4ed4bd" chipset="mtlgt3" name="Ext46" />
+    <guid config_hash="d5128354807f67610a2ab9b8d9bad98f" mdapi_config_hash="a48c72657fb95a953a244c2423e628d6" id="cab52f96-c6bf-48ca-a34e-17e52cadc8a6" chipset="mtlgt3" name="Ext51" />
+    <guid config_hash="20fd7da676995435b082246cf05688fb" mdapi_config_hash="9a0cba03cbfa007bacea6424ea656109" id="e4597eb9-ffa4-4da5-a180-5e12299f22cc" chipset="mtlgt3" name="Ext53" />
+    <guid config_hash="afd622cf020c188763990941c4a32a2f" mdapi_config_hash="caa580213e78457e9b662f156c35f061" id="0a11c113-298b-4f77-a085-1b7cac225015" chipset="mtlgt3" name="Ext54" />
+    <guid config_hash="b47cd815b52a669c1cf78dad8de38c5b" mdapi_config_hash="bc505d4ae2001af2001205b2aa7e61f4" id="6f983509-03f1-463a-be88-3e4a40de40b4" chipset="mtlgt3" name="Ext57" />
+    <guid config_hash="ca4cce8a20d5cb29ff6e1d7b6d2ca6cf" mdapi_config_hash="9ec8b51606a07781842c6a65677ac3ba" id="75d3fdde-e74d-4ec2-a7f0-f88fe5971af3" chipset="mtlgt3" name="Ext58" />
+    <guid config_hash="84ad0a3caefdb2eaabe2aab0ca4a8e19" mdapi_config_hash="b564f52ad00dce14616dc099a1ce1fca" id="98c25532-687f-489a-b070-667edd3c41f9" chipset="mtlgt3" name="Ext61" />
+    <guid config_hash="2d68be12adc9228cb26ecefbf3e8d1a4" mdapi_config_hash="95b46b4cb2392c6d22337ba7a4ad357d" id="6ee28b50-5390-4655-af96-9d99569aee82" chipset="mtlgt3" name="Ext62" />
+    <guid config_hash="f62f805fe778e9ace913157a48827723" mdapi_config_hash="061736899929d5d258a65ca9723c08a7" id="89a4a65b-cbfa-4c75-99fb-e5d7f0def495" chipset="mtlgt3" name="Ext65" />
+    <guid config_hash="b1e63c805766ea8c224582126cb0d690" mdapi_config_hash="e258888e38bf640292690038895b1850" id="99e44f76-928f-4835-866f-663e25c69f66" chipset="mtlgt3" name="Ext66" />
+    <guid config_hash="f382748edeb17c2ac8e8d4817c4ee857" mdapi_config_hash="9665da513adfec01d0e7e1712daa76ac" id="f45dfc0c-70ef-48bd-83a2-30cf4a6ba0d5" chipset="mtlgt3" name="Ext67" />
+    <guid config_hash="d1f56fddb51936e6bb5d0419a3f0a1dd" mdapi_config_hash="b07d07820cadeebf0c104193c4905851" id="eab0942c-5181-4caf-aeec-44d9a0b69ada" chipset="mtlgt3" name="Ext68" />
+    <guid config_hash="c41d897e684d62aadb6664123bd03e10" mdapi_config_hash="5a663ddf09a8098711657aa90439bfe9" id="d9d0c398-6429-4ba8-bc08-6e8556a5880f" chipset="mtlgt3" name="Ext73" />
+    <guid config_hash="4e132724015f4644dc87f47aa13cdb0c" mdapi_config_hash="7f5cab881c9fdecbb261eccc7f41f98e" id="d91bf24f-08af-4d1d-b957-c2293923c9a4" chipset="mtlgt3" name="Ext74" />
+    <guid config_hash="f910a73bba1ab6363cc288fa80ddafc7" mdapi_config_hash="bc475f8d144f693ae277df2bd6533254" id="b5c2eaef-cffa-490b-a80e-de2b37ca63d8" chipset="mtlgt3" name="Ext75" />
+    <guid config_hash="cd48e9cbe7a28efb33867e8e4f41f0e2" mdapi_config_hash="9fe81fdea81bde745bf04df73a1d746b" id="d5cdafcf-483d-40f7-8dc9-feca73e94246" chipset="mtlgt3" name="Ext76" />
+    <guid config_hash="eaf9757a62fe2f398c9380e422a857bc" mdapi_config_hash="71a18b5b244fc162903e5a25bebcd7ed" id="240802cf-de55-472f-9e0a-710270ae9487" chipset="mtlgt3" name="Ext77" />
+    <guid config_hash="73370af89841c5fbd69f28ff5de0cf91" mdapi_config_hash="b6c293b26c65ed937ac3bd9c7fcc306b" id="3dd49211-aa69-4711-87c2-97289ff9cfff" chipset="mtlgt3" name="Ext78" />
+    <guid config_hash="7f1d73b2bdcf2bbe209e9d805ec49155" mdapi_config_hash="bd9c2882a3475d7fe2fbb0ad8e54d896" id="64aeba75-9dbe-4231-81f6-8c991b84c070" chipset="mtlgt3" name="Ext79" />
+    <guid config_hash="b18d414e19913ac7d67fcc8429952b52" mdapi_config_hash="3ed09a19ca45e3ed1d85bd67d5426ef9" id="3b293ce5-af38-4ae2-96f4-a542d3c68d5e" chipset="mtlgt3" name="Ext80" />
+    <guid config_hash="2536c43cb32b23255f894144b6018b6d" mdapi_config_hash="bc884426f69ac181e5132679a9721fd8" id="09516dce-66a0-499f-8457-97f78bb921e6" chipset="mtlgt3" name="Ext81" />
+    <guid config_hash="0bd76ac92be1e0843a2e34b3cd0c66d7" mdapi_config_hash="fabce59e3010dc86db4dd3d0038b4766" id="c0bdc35b-af55-4ac9-8078-f22578201756" chipset="mtlgt3" name="Ext82" />
+    <guid config_hash="cc1c7c752b2c021cc3f4d9acb06dcd1d" mdapi_config_hash="8fd5680f27748d5690472f6851e552a9" id="7f4b6bdf-4a28-4e6b-a67b-c9a0d320ddb8" chipset="mtlgt3" name="Ext83" />
+    <guid config_hash="62dcdd19bc413d716de3570b53678ba2" mdapi_config_hash="cbe0281f4815f184a7b48993998c804b" id="e19c5430-c632-43eb-b27f-eeb3d405bfd8" chipset="mtlgt3" name="Ext85" />
+    <guid config_hash="8944b12e013d6271d1b077410542b94f" mdapi_config_hash="e58affaf2999cda7dba89025fe8644d7" id="d379e5f5-32f3-4a6b-957f-5ccf607dda00" chipset="mtlgt3" name="Ext86" />
+    <guid config_hash="17f8a602749f92b0976d406b968b98e7" mdapi_config_hash="d3fca83fdd3626419235d6ff0ebd36d1" id="3e86ea71-8695-4815-ac18-0fd4510541a1" chipset="mtlgt3" name="Ext87" />
+    <guid config_hash="5228393e951034c19a63d3103d6b1966" mdapi_config_hash="b4bb5e199fa036db92a58885e9807682" id="31ad28aa-7425-4bb4-b1a3-423821d98d84" chipset="mtlgt3" name="Ext88" />
+    <guid config_hash="a7a4988daa8636042300224f010cb2ab" mdapi_config_hash="bd2d185b1a22864c3b2a7627e76bb5e1" id="a1963e82-2bad-44e2-9bb1-ee18657c09cd" chipset="mtlgt3" name="Ext91" />
+    <guid config_hash="f0f98c9097326a42069cedcbd27af3d8" mdapi_config_hash="b5781d959a25981d8f105fbaa7f8d2b1" id="fdf0722d-cb2e-46bd-8c1f-a85c6fbca3ff" chipset="mtlgt3" name="Ext92" />
+    <guid config_hash="7f1d73b2bdcf2bbe209e9d805ec49155" mdapi_config_hash="bd9c2882a3475d7fe2fbb0ad8e54d896" id="e0810ece-3bb5-4786-871b-b504faa00ba7" chipset="mtlgt3" name="Ext93" />
+    <guid config_hash="b18d414e19913ac7d67fcc8429952b52" mdapi_config_hash="3ed09a19ca45e3ed1d85bd67d5426ef9" id="8697d9f7-3085-4ae7-b88d-e77697972732" chipset="mtlgt3" name="Ext94" />
+    <guid config_hash="2536c43cb32b23255f894144b6018b6d" mdapi_config_hash="bc884426f69ac181e5132679a9721fd8" id="d059b804-fc25-4cbc-9682-ebc806a0d423" chipset="mtlgt3" name="Ext95" />
+    <guid config_hash="0bd76ac92be1e0843a2e34b3cd0c66d7" mdapi_config_hash="fabce59e3010dc86db4dd3d0038b4766" id="ca3c5e8c-b83a-474f-85fa-af7572a1ce27" chipset="mtlgt3" name="Ext96" />
+    <guid config_hash="576bfb7075042c54861b5e7cb7ff5054" mdapi_config_hash="5b18f890d96e4849a783b3361df49ab4" id="fbed5532-2b4f-4194-b856-0404c387b2e4" chipset="mtlgt3" name="Ext97" />
+    <guid config_hash="073488439c64df4b516dc89bfdbb0843" mdapi_config_hash="b499133252e58b0395572f9fdc806c18" id="4c975484-c2f5-4f29-b8fa-8ec1068de77a" chipset="mtlgt3" name="Ext98" />
+    <guid config_hash="51d44e10fd9d3db814bd9ec02ac7a40d" mdapi_config_hash="04f712959a996f10de12a5d91e0bf8e9" id="13017c9d-9d3a-41d1-8f9c-2eafdcbefab4" chipset="mtlgt3" name="Ext99" />
+    <guid config_hash="b9d5ce8b34486c84d3b95da633f545d9" mdapi_config_hash="74bed337b0e6fc7424f5ab775edfd518" id="a7ef0e01-74c3-48c5-8d0f-00241111cf69" chipset="mtlgt3" name="Ext100" />
+    <guid config_hash="4f7d9743a9db109f51abc8113f7cca94" mdapi_config_hash="6794fe08ea932f3c3c3b116e12524fc3" id="7e86b43f-715e-419a-83eb-e8777fd7c77a" chipset="mtlgt3" name="Ext101" />
+    <guid config_hash="b05af81036f19dd181627328ffe79abe" mdapi_config_hash="12a99b6a5ecb3e21c53284c46857c4c4" id="1fb36f5f-04a3-412f-a6ca-80233bf408a0" chipset="mtlgt3" name="Ext102" />
+    <guid config_hash="bbe343fe4f676e722c2d0a6224a02e17" mdapi_config_hash="0a2377c8eabc0e5c9fc7649801b4fdcf" id="5228137b-8e8d-4d67-b195-d5f64a88f5f0" chipset="mtlgt3" name="Ext103" />
+    <guid config_hash="c522d4d4aea6ec4c74eca84a344c9278" mdapi_config_hash="9a0469f5f8dae4f4d2606f210f868748" id="5503160a-7b2a-4099-9ec6-0d3a551cb388" chipset="mtlgt3" name="Ext104" />
+    <guid config_hash="feafba2b5724132b97cbf416958f4722" mdapi_config_hash="a419584a6f24f34f9ef483826da599ad" id="418f87f0-b6d8-4684-883e-4f10a79c5070" chipset="mtlgt3" name="Ext105" />
+    <guid config_hash="3ae3e99e7bc6ad07ad30a1d41bc43fe6" mdapi_config_hash="670ec2d5c4a55d80f2539cd206629cb8" id="f5b7256f-9bf6-4c95-94c1-4044cfad0ea6" chipset="mtlgt3" name="Ext106" />
+    <guid config_hash="af4ac637c7d969f94db5c2ab257d84c0" mdapi_config_hash="a602fbe2e5242c1038a774248654994a" id="28d75db6-0eb3-4651-b820-513a76013504" chipset="mtlgt3" name="Ext107" />
+    <guid config_hash="1fddc804398bca4cbc7da51e83c62f7b" mdapi_config_hash="f2cad9d9868ce728ea3e33a2eb570b7d" id="080da0b6-29a4-416b-b20f-ece0e2527f60" chipset="mtlgt3" name="Ext108" />
+    <guid config_hash="70dbc489309e77cf43a403263022e61d" mdapi_config_hash="ddc68543a084aa59b0f5c3bcad42cfd4" id="75a9e66d-9bbe-46d7-971e-71ca8ef680ff" chipset="mtlgt3" name="Ext109" />
+    <guid config_hash="57581e7da20e5efb1aae9575df5891f2" mdapi_config_hash="26c7a34139e3780d6db117abac5a0904" id="ae5589a9-7e09-4343-a611-3161977315d5" chipset="mtlgt3" name="Ext110" />
+    <guid config_hash="97ccf0a32274b8992a58755320526e5a" mdapi_config_hash="05a1ea932d33ad5e056c3a9d9111f1d9" id="a5e1e738-1338-4d76-a6a7-5517111cc852" chipset="mtlgt3" name="Ext111" />
+    <guid config_hash="94f1a68becc0108391fd6455df24a167" mdapi_config_hash="791ca31527b2e19be0cf657d5ccb769e" id="1a24edc7-8187-43b6-86aa-fcf56c223893" chipset="mtlgt3" name="Ext113" />
+    <guid config_hash="39e4bb4c4f1d3355cb4569c249c6594a" mdapi_config_hash="81d8ce027d98541d64e2b72e7f9b25bf" id="32565d07-8ac7-41c3-89a3-66d0c1100616" chipset="mtlgt3" name="Ext114" />
+    <guid config_hash="ab8c72137940e505ba2bc429826370cd" mdapi_config_hash="3dab0d87815befc90fe31cb9d19501b5" id="f725009a-c5e7-4418-9adf-ddb70cb2edde" chipset="mtlgt3" name="Ext116" />
+    <guid config_hash="f48cb69981b44d7814b721b9f2e9ecf7" mdapi_config_hash="697b024a5e43609141b242cbca43986b" id="f633497f-c116-461f-a0e9-bb3fdcef7683" chipset="mtlgt3" name="Ext117" />
+    <guid config_hash="fb4115d9d82da1e12aeb2a916f178d3a" mdapi_config_hash="0c600c3e7afef305650921743207c7c7" id="bae9e67e-4b5c-4fb9-b21d-21a6966bed46" chipset="mtlgt3" name="Ext118" />
+    <guid config_hash="a78cdb3224080bf1e1fcfddea6da09cc" mdapi_config_hash="dfc66357e62ec8925722cb5ebfac3a7f" id="95c08faf-813c-4b71-9062-09569c5ff432" chipset="mtlgt3" name="Ext119" />
+    <guid config_hash="9f6aa7635706acff494e64fa7ff81cad" mdapi_config_hash="4068f8f2605c6d716adfae3e01157e62" id="045ee54e-4e02-4877-adb1-5bd14ba49100" chipset="mtlgt3" name="Ext120" />
+    <guid config_hash="8f44bd8a33898bc34d388867c03b56b0" mdapi_config_hash="d891ad4276aec7da16fbef0a258fce78" id="2e3894b5-2b6a-49c4-b2b6-0dde7375cb7b" chipset="mtlgt3" name="Ext121" />
+    <guid config_hash="b6df552dd6b22d1eb876940b48a2584c" mdapi_config_hash="7ee691544205ffce052b1c2e40d37e1d" id="25ca1237-2ed3-447a-9767-1a85da89daef" chipset="mtlgt3" name="Ext122" />
+    <guid config_hash="d397cb13d8d046c737305418f304bfd6" mdapi_config_hash="59f49efdb867ee02b0ff5f3b65bbe682" id="cf41fd07-c4c2-466c-9d85-774dcde02359" chipset="mtlgt3" name="Ext123" />
+    <guid config_hash="5d43f4db3be940748177b34cce073e33" mdapi_config_hash="a86c30fb3396c0513fcf04378a2db310" id="2445e8f0-04c4-43f5-87ff-e2f99a2528ed" chipset="mtlgt3" name="Ext124" />
+    <guid config_hash="3f6e376e1fc3b3c1a02a0769390804b2" mdapi_config_hash="5ea87ac5d2d273d2491575ff19e3b7af" id="446192f5-9062-4f1e-a99e-1be87cdcd0b8" chipset="mtlgt3" name="Ext125" />
+    <guid config_hash="6347d0156a45d953bf19fb8c615fe9da" mdapi_config_hash="959da76f5eaecb36fd7696129e8267f8" id="9a0ec3ea-1d61-413e-8b9c-169cdec1f9b3" chipset="mtlgt3" name="Ext126" />
+    <guid config_hash="987196bae13b80aefd3fee6b6fd8d19e" mdapi_config_hash="21b03817e8c055656086e66395efc36a" id="1f70ab0a-6efd-461b-b06e-3b47d3602f36" chipset="mtlgt3" name="Ext127" />
+    <guid config_hash="ab1c69aab78bc0e99fbf5bc124a99602" mdapi_config_hash="28f42e3d49471ab50b6e698bd191e081" id="9eedb03f-340b-40ec-8a66-43d01973003e" chipset="mtlgt3" name="Ext128" />
+    <guid config_hash="2b7371cbef62964796d62765262a9a93" mdapi_config_hash="44808b31ac67521b3f30fee214f10ccf" id="0e5ffe58-83b2-445b-a439-9ee7a01642d4" chipset="mtlgt3" name="Ext129" />
+    <guid config_hash="ad99f7c4be1c30228b3096af076482d3" mdapi_config_hash="74d0e6925b538873d4e1c8d8d240b35f" id="78925a28-3e52-4d74-b03b-cb27c6a4401a" chipset="mtlgt3" name="Ext130" />
+    <guid config_hash="eba0af682e63c0f02756d60a5d64be1d" mdapi_config_hash="f7fdfda1128fadfe50722d6b0c8bb83a" id="1e91d8d9-ced4-4240-bf9e-fdd7d015c058" chipset="mtlgt3" name="Ext131" />
+    <guid config_hash="ed3bb8fff10f726e24cd8a3229eb5383" mdapi_config_hash="e3d3f89e16affdcd1ebc98bc4b97357c" id="1cacf022-b4d4-401c-abec-acc0a3353adc" chipset="mtlgt3" name="Ext132" />
+    <guid config_hash="8d63083bd63b2f0852c42c2993a48de1" mdapi_config_hash="1516962fb19587567356dea3b216e127" id="3c15657a-b3da-4513-8b9c-08bcc1ca0226" chipset="mtlgt3" name="Ext133" />
+    <guid config_hash="5a925f1b77c1663fb21212f1a431e0a1" mdapi_config_hash="f631688a61862c117cdc463431b81e74" id="da34c79f-d1c6-4d15-b848-2085528bb86b" chipset="mtlgt3" name="Ext134" />
+    <guid config_hash="31fce9668642a49d78187a7b27c90c71" mdapi_config_hash="775004df55bcd37dcb79332fb318610e" id="33ceab81-26bc-49f3-a124-5dbb2d592a87" chipset="mtlgt3" name="Ext135" />
+    <guid config_hash="5754bca32003bd881b498e95881ac453" mdapi_config_hash="367fc7a2dc17d55b0cc3722770f5f19a" id="d8b7d2f7-7c3a-4a68-b6c1-48d197b22945" chipset="mtlgt3" name="Ext136" />
+    <guid config_hash="623b12634eec4435a027b70800edfd58" mdapi_config_hash="b70c259360d9d61765ef0147a6ea1905" id="01d6bd34-b8d1-4412-b53b-0d16b327abec" chipset="mtlgt3" name="Ext137" />
+    <guid config_hash="4d57895e739ced0c7d61af80b26d1838" mdapi_config_hash="87426982a05610f17164d46e57ab8b5b" id="7485f9ec-ac5f-4c6d-8c5f-6a023e7d29d5" chipset="mtlgt3" name="Ext138" />
+    <guid config_hash="5167b7890e43b2e1f26414c15f49a637" mdapi_config_hash="c24330ab6ee2bfab6ba0a0b120ff9533" id="944dc12b-b2fd-4bf5-a59d-540e2b280cdd" chipset="mtlgt3" name="Ext139" />
+    <guid config_hash="6f32499aeec5a375a363d985ac8ad55f" mdapi_config_hash="7b50f0a284bfc4fe93aa2402830b8541" id="5c97330a-b407-4ef8-908f-7fdeec216f81" chipset="mtlgt3" name="Ext140" />
+    <guid config_hash="96d1ba7a8a491037d81b1aaa28503109" mdapi_config_hash="891130523e34fd75a2cb6ce40e845cb7" id="65e4ac2a-db8f-4918-bdd6-ac4d85de160e" chipset="mtlgt3" name="Ext141" />
+    <guid config_hash="9ffc6736d82905502fe255324dae0a45" mdapi_config_hash="942affcfd6a4404b30670ec6e4982406" id="0eb11775-ad71-44d4-ad2c-c2fa6431b144" chipset="mtlgt3" name="Ext142" />
+    <guid config_hash="e5ac62623933c6883c576daa62abe824" mdapi_config_hash="95acc70023a6d603b6fd440f660be0cb" id="d7736d53-f1cb-4899-8f3d-d8aaad1f1c67" chipset="mtlgt3" name="Ext143" />
+    <guid config_hash="68484d77859dc2a8c9027ce905c674ab" mdapi_config_hash="3a3e2bbc779462f1c31901a107bd71f1" id="496219cc-316b-4945-9fc4-180e60331262" chipset="mtlgt3" name="Ext144" />
+    <guid config_hash="32c74ee31a9cf1b79ade0867801fdd40" mdapi_config_hash="017693e9f88b9e83342949d66903499d" id="c7e6721e-51f9-40af-ba8b-0520a1082855" chipset="mtlgt3" name="Ext145" />
+    <guid config_hash="700a543b44a4df2993255c6d6c087801" mdapi_config_hash="180eeaf357e60beb3019df60af2a150e" id="0e9b064c-9fa7-4e85-8aaa-cc871010117d" chipset="mtlgt3" name="Ext146" />
+    <guid config_hash="1b2acda507ffeaf72511a25f127bb2d1" mdapi_config_hash="cfb556dc0948b9a0734dd834a2b9bf47" id="44d73f02-f843-4717-a3d5-3d1dfbd3f106" chipset="mtlgt3" name="Ext147" />
+    <guid config_hash="4cee03f704251cba8f5de1e5f8144ad5" mdapi_config_hash="64daf9368802f99d207c7e41eae10ce6" id="b84f370e-1b64-41d1-a4d8-f095fb79e5f8" chipset="mtlgt3" name="Ext148" />
+    <guid config_hash="dba35d067d64490d4ec1a305b3717021" mdapi_config_hash="c56aeffffee3b0186b951bbfe9403f2f" id="772a2c24-0a03-480e-baca-72f2f55a5422" chipset="mtlgt3" name="Ext149" />
+    <guid config_hash="978bc6108e7a44ec3a1388ee1a5b77f5" mdapi_config_hash="fee4d8a11368cb7a85ea5c57da17c600" id="953d3bf8-af3d-4287-ac22-dcd122c5eb51" chipset="mtlgt3" name="Ext150" />
+    <guid config_hash="c8c90d16a16f8baa37800968f0b1df9a" mdapi_config_hash="9f23a5fe7ea95105d2e7f6ed58b0b18b" id="dbb009c2-98ad-4af0-905a-e7808ac5424c" chipset="mtlgt3" name="Ext151" />
+    <guid config_hash="10d7844385bd97d561a3c5e8616a0200" mdapi_config_hash="679a886b97c3d29f71a3da04566e9b0a" id="16fd8981-676d-4cbc-b010-8d731ba66a06" chipset="mtlgt3" name="Ext152" />
+    <guid config_hash="b935e97490df078c9cec9221e54126f5" mdapi_config_hash="b90ef18e6b08e2c52781b76adf357752" id="7bcdd766-98a5-461a-ac8e-d8c648958364" chipset="mtlgt3" name="Ext153" />
+    <guid config_hash="79df661de37f475532c62d062c17a371" mdapi_config_hash="c6d9e2764c938d35794c85ab8bef3157" id="c0459fa8-1790-46b8-a0f8-3064baf7c670" chipset="mtlgt3" name="Ext154" />
+    <guid config_hash="8dedaa58bc5c72f78c0dc0dbfda6b835" mdapi_config_hash="fc3822c1a827917d132c657fa05c5d69" id="304d9439-4bdd-48a9-a82e-15b3533afaf4" chipset="mtlgt3" name="Ext155" />
+    <guid config_hash="dbda6f9bcacb02327f80b2d56b88a397" mdapi_config_hash="c8d01efd1c11076a03604142b3cf8ccb" id="90691d58-782d-459c-a242-f6e515fe9567" chipset="mtlgt3" name="Ext156" />
+    <guid config_hash="e9f892825cb93281e92bd95b73e89357" mdapi_config_hash="05b9bc602aecb23a3e8bec3e1607bd96" id="cf34a431-3cc9-4b70-a84e-0d31a71170f0" chipset="mtlgt3" name="Ext158" />
+    <guid config_hash="e7e777852592ccf26bc1b72ba22462d7" mdapi_config_hash="c40cc519814b47e976e211c2fd37f076" id="ad3cd014-8897-4613-8653-6d80c6eaff88" chipset="mtlgt3" name="Ext159" />
+    <guid config_hash="2183074bafb0f711cac56e8128228136" mdapi_config_hash="dd4d18a7e1f51eab5bcfccab86aa6098" id="aa12de63-7d11-4acf-af96-be89807729f7" chipset="mtlgt3" name="Ext160" />
+    <guid config_hash="b8065323eab58675015d298e309d6238" mdapi_config_hash="a455ebc49cb5b267cdb36c756a86cf8e" id="ac013132-7e0c-4143-bc34-ea6428ce3082" chipset="mtlgt3" name="Ext161" />
+    <guid config_hash="6ba7e6880f99c6d4320c415266a80a6b" mdapi_config_hash="918b895b37a0a4cc1299bf50f309204c" id="b9d8323a-7bb4-41b5-b99b-43ed99e23590" chipset="mtlgt3" name="Ext162" />
+    <guid config_hash="2f3e08b31f42d87f6e4420263ccbc3ad" mdapi_config_hash="57fe74a2fe03bebb8efa98fc1d85e5dd" id="6ae2c19e-672c-4ad6-9d59-0a391af1af4f" chipset="mtlgt3" name="Ext163" />
+    <guid config_hash="3a380aeed1d1ac148a8b69fc5a8236d6" mdapi_config_hash="a132354192ab856513ab113a1a762b14" id="c76b6b40-9d7f-48f6-b6da-595252c884f4" chipset="mtlgt3" name="Ext164" />
+    <guid config_hash="d0dd8dbf8a007636289d8b280f694e3a" mdapi_config_hash="cbdbda2cb7e15976448a1ab382ddd4c4" id="a85da4d8-d984-45f3-8dbe-c8678eac8aae" chipset="mtlgt3" name="Ext165" />
+    <guid config_hash="f54ad4885c3cedca6f59376e19213121" mdapi_config_hash="d422e33bf924d938594e015380c691d8" id="fbc7362e-4d05-451d-833e-f0ce5e7ad8e3" chipset="mtlgt3" name="Ext166" />
+    <guid config_hash="797a12d01f5b3da35960769111370bce" mdapi_config_hash="02b3c1d232951e26eff70731842e0b04" id="881454da-d271-41ba-9dfb-0cc354fb5aea" chipset="mtlgt3" name="Ext167" />
+    <guid config_hash="1591b950279f0c4dbd3e3670b42e9eb1" mdapi_config_hash="4548a6997cfe6ac42d5c780aed5648af" id="9f2b827b-01c6-4e82-b283-dfe91af30d88" chipset="mtlgt3" name="Ext168" />
+    <guid config_hash="9fc6c711e262b5923148b819f698d0b1" mdapi_config_hash="9ae70acc8092c087a54373c7222b0760" id="c6b40da2-4783-45d7-8252-9a4f1f75faf4" chipset="mtlgt3" name="Ext169" />
+    <guid config_hash="b6f09aab3f016fda28397126601af67d" mdapi_config_hash="edd612325e82e92f11f197292b7f94b8" id="b5883529-3595-412d-b40f-b7ade9cc3304" chipset="mtlgt3" name="Ext170" />
+    <guid config_hash="947269bc62fea65ec167e99a2d83e994" mdapi_config_hash="1218d27d42f487efb7d159c645f836e7" id="2455c20b-95bb-4e9f-8db2-597ba9447025" chipset="mtlgt3" name="Ext171" />
+    <guid config_hash="e1c65332e1527abff4a50288abe049d9" mdapi_config_hash="2ece8002782c030b6d124025b6e3847b" id="ec18cd0b-7caa-48d0-9a16-418ecbe1096e" chipset="mtlgt3" name="Ext172" />
+    <guid config_hash="0bf05f895b63b5db7124b122fad50947" mdapi_config_hash="0970ce9c1d289d37537078396680db82" id="3628b2de-d9f9-4db2-a74f-32a314e591c5" chipset="mtlgt3" name="Ext173" />
+    <guid config_hash="5f41b959d7b049e63b812d9b91ea04f3" mdapi_config_hash="aa5ae573263f8468853e4f622c007d0a" id="d35ecd39-0a9d-48f7-bf87-d3c318b8fadd" chipset="mtlgt3" name="Ext174" />
+    <guid config_hash="7fec85cfa88db131924843391378ad54" mdapi_config_hash="61d560a3b47ce80e4c17e29e67410928" id="d0d0e9cc-494c-4b01-8a43-683aae5beaff" chipset="mtlgt3" name="Ext175" />
+    <guid config_hash="1399459fe997232f503a9c4469777a12" mdapi_config_hash="7b4a6fe5c6a8cc52cde6f2c927bb5981" id="c5fde834-52c8-411b-854e-8d3197def109" chipset="mtlgt3" name="Ext176" />
+    <guid config_hash="17e850f62f2444f64b4551e3db3d51b9" mdapi_config_hash="506ccacc19b0a1be94d9fce63ac374e8" id="55830ebd-062b-40e8-8d5c-e921429957ff" chipset="mtlgt3" name="Ext177" />
+    <guid config_hash="98f72ed090075dd00d774139e66c1c3e" mdapi_config_hash="5f59632e3275dddaf1a42aa84dec5c70" id="9603d88f-e5bf-47b4-85fd-fbbb68f42632" chipset="mtlgt3" name="Ext178" />
+    <guid config_hash="029a9a53386bd6a3e2223919fe13d472" mdapi_config_hash="a80ea80e37565c0e79cdb4acf13a7115" id="b05bd7bd-387f-4fd7-a1b4-06a1dab5bc14" chipset="mtlgt3" name="Ext179" />
+    <guid config_hash="d82b578182ec53243929a874a8a69f3d" mdapi_config_hash="09edae94d82c771537ad53a49c57884d" id="49dc9023-be7b-4102-a4a2-d31b9a6b1ce4" chipset="mtlgt3" name="Ext180" />
+    <guid config_hash="56d6fb95fb581751b08c0bdf595167d8" mdapi_config_hash="e9a9dc6a0883340a0e61c50b99cfd412" id="871d8a6b-7c73-4cd7-a4ed-4bdb58d5b6ee" chipset="mtlgt3" name="Ext181" />
+    <guid config_hash="d27bfed27f8222b11af83df6dc4cc53c" mdapi_config_hash="c5e41a961878478f2c5c28cfc29ffc3f" id="25a2f80d-147e-4363-a0cb-53584b7a837d" chipset="mtlgt3" name="Ext182" />
+    <guid config_hash="dd125627d0695780c1ac61669550cb37" mdapi_config_hash="6ab8e06baf7786cc0696dfaab1908aa9" id="71863fcf-d57c-433b-858f-87f5f11ec3da" chipset="mtlgt3" name="Ext183" />
+    <guid config_hash="721b4f0187269016ccdc0ac0f2d5b5c9" mdapi_config_hash="f85bd34477fc8b1488a0dd432ea8d1ad" id="c29640d9-39eb-4a03-9043-2a54eb5a3112" chipset="mtlgt3" name="Ext184" />
+    <guid config_hash="d78cdc81b03ab2254f64288a8232c318" mdapi_config_hash="ce4d68cb8035cd47be5a7fe1c8c9751b" id="00882747-d1dd-4ba5-9b72-96df25dad7bd" chipset="mtlgt3" name="Ext185" />
+    <guid config_hash="0ac4b9a8091e9377168920de2dc8df65" mdapi_config_hash="1bda30dab3834c3d06dbc5d86629942c" id="89aea44f-ffa6-43cc-9a9c-103b4930e103" chipset="mtlgt3" name="Ext186" />
+    <guid config_hash="c793e46e8c9e4c5efea5e02b5fa2a8f7" mdapi_config_hash="e8e0cdb7017a9ccbcfb9371fe862fb32" id="11e92a4a-d605-499c-9159-e79797c230de" chipset="mtlgt3" name="Ext188" />
+    <guid config_hash="e8b7d7cd7e2d9925c1b7a6921e288825" mdapi_config_hash="1ef67dd436ccc0665bd6bcbcdbe27c1f" id="27c2ef51-6689-4ffc-acaa-3f46a8e834cf" chipset="mtlgt3" name="Ext189" />
+    <guid config_hash="d326d4159b6cfd1d9dca1cbe27f8505e" mdapi_config_hash="fb6373924b2944617e6562124d3e6a0a" id="1625df84-2f24-4aed-9ced-e652184c9949" chipset="mtlgt3" name="Ext190" />
+    <guid config_hash="09e88dd123a3120fde3ac1a4a7ce5093" mdapi_config_hash="5250011d85ce9822d67cf8a542263de3" id="d98e7947-ecee-46a9-b3ac-619d13d32b1a" chipset="mtlgt3" name="Ext191" />
+    <guid config_hash="8388ebf2e04b420d9b51d5e26e75539f" mdapi_config_hash="7356e43055e3956ec304eda7b2a29e48" id="ed973589-e13c-4115-a2b1-08bc443a4e8d" chipset="mtlgt3" name="Ext192" />
+    <guid config_hash="03ec9f9a3e75884e162d30050a30f43c" mdapi_config_hash="538fe0d38a410220a4b898a6f4ba6bf5" id="9bb6c40a-ec2c-4292-8ac8-d8b413abd301" chipset="mtlgt3" name="Ext193" />
+    <guid config_hash="6d39d90f37f6db386376f0c9ba51b23b" mdapi_config_hash="c8fb29869ab79891c05f0830645c1a13" id="9a911d6f-39b5-425d-aea3-15e49e6395fa" chipset="mtlgt3" name="Ext195" />
+    <guid config_hash="918dc4ca59e92eb297623dc156020dab" mdapi_config_hash="c968b1ed63dedf3c5ef477fbeef70827" id="814b3516-d465-4faa-b89c-67c30c96a256" chipset="mtlgt3" name="Ext196" />
+    <guid config_hash="b34bfb61b27a041a56523d33ce1536df" mdapi_config_hash="860a47c17012693c1df73d348bf393ff" id="3663ed58-377d-40c3-9af0-913cbc5d954b" chipset="mtlgt3" name="Ext198" />
+    <guid config_hash="2e1c1dd9882ddddbb73f55da3c645692" mdapi_config_hash="525b3eb81ea2efc491f0e38ee0dc346f" id="6ce22a01-9025-4afb-b3e9-652ce0c693b5" chipset="mtlgt3" name="Ext199" />
+    <guid config_hash="7128a0a1ff776e2131d2f8f82b89208f" mdapi_config_hash="5f5f9d44e4bb5b53250365015df7de19" id="7f59bef3-f0f1-4856-b4f3-e64fa9913956" chipset="mtlgt3" name="Ext200" />
+    <guid config_hash="7fabcd05be432641a0d6c29f3ea80d05" mdapi_config_hash="3dab5873273b202a3f8be8a09c6bf699" id="8982721e-16cb-42ec-92dd-eb049ae7a503" chipset="mtlgt3" name="Ext201" />
+    <guid config_hash="913941573702be71feda694890765e46" mdapi_config_hash="7a03e28c8a307a2dd95ae580ad781e16" id="d86c1224-3af7-4df1-a44d-e4522f22b2ae" chipset="mtlgt3" name="Ext202" />
+    <guid config_hash="95de2814586ae1ff92c38efd0e8ada9f" mdapi_config_hash="108b4f014f057f196add94557f49b200" id="03090380-689d-481a-ace2-9725ea0c10d2" chipset="mtlgt3" name="Ext203" />
+    <guid config_hash="187f57cadea1e58b25a4f30791632b85" mdapi_config_hash="e7d425c56b43f15c1154bd999663dcd8" id="78a1b79a-a5fd-4fa0-b33d-2ec51404e3b9" chipset="mtlgt3" name="Ext204" />
+    <guid config_hash="d185a05d0fc64e8d0bdb2d0ac240a564" mdapi_config_hash="686c88dad46a84a22474ebb5ccd80322" id="b3c2bff1-e203-4c90-8719-66546c370005" chipset="mtlgt3" name="Ext205" />
+    <guid config_hash="d69e54934297e915997271f2dc8071d0" mdapi_config_hash="a1ecff6f27eff5484af7d035bfa779d1" id="a209e458-76a6-46fc-bb62-29850f38eb0d" chipset="mtlgt3" name="Ext206" />
+    <guid config_hash="22064014f8fe7e3cb5dc49dfd54f3f0f" mdapi_config_hash="c45ed90c0aaa340d9f0480fc6f95f4d6" id="06aea283-f183-4e96-85a5-3bb7193f06c7" chipset="mtlgt3" name="Ext207" />
+    <guid config_hash="0455fd1b2a2833c64fbddafb9620b4ce" mdapi_config_hash="3a88b64bae923f2afb8ef6f07fac23a1" id="0c6d24a9-2489-4fcd-a9f6-d44380417dee" chipset="mtlgt3" name="Ext212" />
+    <guid config_hash="a0452cab88bc672122c1306c8cce790d" mdapi_config_hash="d8f6ca9528a18d24095ffdef0f5e994f" id="39a43efe-ee39-4fa2-88c4-3dfc34a74f4f" chipset="mtlgt3" name="Ext213" />
+    <guid config_hash="e6a8e49a73b5bc77092fb53e012f9c09" mdapi_config_hash="56ee5d41ee40abcd4db055b09cd2bfdc" id="f3ca645b-a2b3-496b-bf6d-f8f26b1faa86" chipset="mtlgt3" name="Ext214" />
+    <guid config_hash="7e99c71c424f94f201af36b8f3e4b48a" mdapi_config_hash="c30b2f19884a073c7d30cd7d23f4f24f" id="947b168e-df39-4e92-a622-0884c81221b3" chipset="mtlgt3" name="Ext215" />
+    <guid config_hash="8ffe459326dc9bc6048f2b0301dda8ac" mdapi_config_hash="eed630ff2d38c72d6944cacbb554bd2a" id="0722885e-4df8-4c98-8336-72b5e129e6be" chipset="mtlgt3" name="Ext220" />
+    <guid config_hash="9068320fed5d9895edc8fc1ac6c3fee9" mdapi_config_hash="b7eb003a026b5f5617812314339a05a0" id="db4a27f8-40a0-4cb5-aa3a-5368add92cd5" chipset="mtlgt3" name="Ext225" />
+    <guid config_hash="c3b4581b01fe3d0c7103628e3a37db8a" mdapi_config_hash="8167155b11844800407e945393cc2c63" id="6b5736f5-a627-4cb6-9078-1c05137bc460" chipset="mtlgt3" name="Ext226" />
+    <guid config_hash="e9ec53a52a95105299cb643af284ea00" mdapi_config_hash="59b4f0a0872022508d2ea1e1db54e4b5" id="5e6f4959-c37c-4be0-bb4e-2f1c1aef2bb3" chipset="mtlgt3" name="Ext227" />
+    <guid config_hash="94f64eaf831e296b8302727e54a94c7f" mdapi_config_hash="9df3a4ea850cabf14e504426574e5ee2" id="fe2d673e-8b2e-47d0-b9db-2c50e10ee53e" chipset="mtlgt3" name="Ext228" />
+    <guid config_hash="9b9c025f624a47719a778c435b19d660" mdapi_config_hash="df04496a358eca62d940a48c4ec83902" id="cb94a696-bfbe-4566-8225-c337f988600c" chipset="mtlgt3" name="Ext229" />
+    <guid config_hash="614f50642d8b720038815970f1a1033c" mdapi_config_hash="f6543b2c21aff10e5f7016914f526a4b" id="ec3032cb-df12-445c-9eb2-6b1031d2dc86" chipset="mtlgt3" name="Ext230" />
+    <guid config_hash="0dcf302a76f790a1e2fc69b6c0610421" mdapi_config_hash="ac24722772b5560ae72de64f46604208" id="e5e22fbb-0ff4-44f6-a549-6ed41df0dd27" chipset="mtlgt3" name="Ext231" />
+    <guid config_hash="54b2ecf4331db287f85f288f909860cb" mdapi_config_hash="3afbee7958dd2ca73515d55bcbbc14df" id="b6defb71-0fe8-400e-ae27-565ce9067082" chipset="mtlgt3" name="Ext232" />
+    <guid config_hash="48b627d11898ffd6b0ac7c1b14ed46a8" mdapi_config_hash="9c4fa67b828b68c9d493d012e290d047" id="98d5c3d9-bca6-4699-99e3-7b95a23025ce" chipset="mtlgt3" name="Ext236" />
+    <guid config_hash="ff5aeb73aeb135a97614b3c18dbbdfc6" mdapi_config_hash="e3d8562d798f0b62f1a4ed2ed750bf3a" id="4256db1d-9083-4497-9000-59bbcf9eee72" chipset="mtlgt3" name="Ext237" />
+    <guid config_hash="dbb4587f61650ce8535f97fc47a9ca74" mdapi_config_hash="36e4ae3077c51ec0fcd6ea8cacece167" id="5ba2bf20-ca4e-4872-86fd-9026c9de8c93" chipset="mtlgt3" name="Ext239" />
+    <guid config_hash="9af84da0c3095e29fc9f87588bce7f49" mdapi_config_hash="582ee8e4a7be8d7ca88804ad1674fdb5" id="fe8810c2-457b-47e0-a3b9-50cab24718b4" chipset="mtlgt3" name="Ext240" />
+    <guid config_hash="7de3e98c3348073bc17dfaad94473777" mdapi_config_hash="968070c0ee84a8065d2336937a49774d" id="ee0cc3d0-9ac8-4608-aaca-b37fd9d18238" chipset="mtlgt3" name="Ext500" />
+    <guid config_hash="25302806331fba9bc9f3450e0e642e96" mdapi_config_hash="d5a07d5812d1d12b522960872fd28137" id="f6e20d5b-52be-4035-85c2-818a690bf601" chipset="mtlgt3" name="Ext501" />
+    <guid config_hash="b206b0dc53133698a7ca18febc7e320a" mdapi_config_hash="80d90f8d67609d99b1b85717ee3f9cd2" id="d09cedef-e3e3-41b5-8ce8-ddc3933339ca" chipset="mtlgt3" name="Ext502" />
+    <guid config_hash="2c857922a97a5830183ca8b8efb72008" mdapi_config_hash="dbc6d492e27a8a6cfa2063ba2ca11edf" id="96067625-3663-4f9a-8b26-74e47ab1aff4" chipset="mtlgt3" name="Ext503" />
+    <guid config_hash="b89becafa0012d0119ce4251d4266b2c" mdapi_config_hash="83261cb3061414efb24e04580990df45" id="2bc8b90d-997c-4d62-b101-fe1aa74036e5" chipset="mtlgt3" name="Ext508" />
+    <guid config_hash="aec3fc91255b37e4f7a9f5019f5a01e0" mdapi_config_hash="993dc808e586668f20473bfc21356dae" id="79252877-1dcd-4700-b4bd-58bce74b796d" chipset="mtlgt3" name="Ext509" />
+    <guid config_hash="059b5bdee62d6b61c00848beeb2751e2" mdapi_config_hash="624661deaf5382d8c447936b0760f2ac" id="68ac1770-b062-48cd-94f4-44c6ae16867a" chipset="mtlgt3" name="Ext510" />
+    <guid config_hash="2c302efab54ba8133e020e08c44f19e5" mdapi_config_hash="0d150ac4cdc7a15a37706b2499af5490" id="443b8a84-7e77-4e9f-8a2a-56743897cba3" chipset="mtlgt3" name="Ext511" />
+    <guid config_hash="d01972b09245455a8a53df3ee5b0de48" mdapi_config_hash="1b6e276e805087093a4002d1a2fc59d4" id="68581669-8e57-4ff9-bb70-71a99f8454c8" chipset="mtlgt3" name="Ext512" />
+    <guid config_hash="980fc02bcda49523aae80255d30dd8d9" mdapi_config_hash="9083f055e06214711443b1aa92209a51" id="1b49d31f-4d7c-4dd7-ad31-030ccb59649e" chipset="mtlgt3" name="Ext513" />
+    <guid config_hash="d4c01604867190e57eb85b43ea35b19d" mdapi_config_hash="f0cc4cfd7a9d70f2d1c3464dedad851d" id="1b0ce68b-c301-4d05-8659-85fad0825057" chipset="mtlgt3" name="Ext514" />
+    <guid config_hash="019a6367c845719ff7381414a99781ff" mdapi_config_hash="2b95a32768f0449b837fb9915ed514d9" id="fde32e67-1a87-4946-bf96-c1ff68105749" chipset="mtlgt3" name="Ext515" />
+    <guid config_hash="5ad38daa6cb00090cfb6658a43d30d06" mdapi_config_hash="ba325785aeb3c90926c9955686094006" id="bf950c5b-7250-47f4-aa59-d97b22db02ff" chipset="mtlgt3" name="Ext516" />
+    <guid config_hash="5093d322d1b278f2e323e259408c7b30" mdapi_config_hash="2e6f2f19cb9752141887cbe4bd057819" id="9027ff05-4348-4061-a434-0befaba7c379" chipset="mtlgt3" name="Ext517" />
+    <guid config_hash="9d968609fbc2e37f71dca7e2b5eddea6" mdapi_config_hash="b2cbdc9610f599b7c65f6100260049f0" id="6ad0dee9-17bf-4b54-8b70-e30afcc8710b" chipset="mtlgt3" name="Ext518" />
+    <guid config_hash="9fec5f63ba0c5d47ca05c5445f6512a6" mdapi_config_hash="11fc895aeea250a40ab6eeb8db0e9f1a" id="2c2ecec8-7f33-475c-9ca4-a7e89f949f58" chipset="mtlgt3" name="Ext519" />
+    <guid config_hash="47dcda9eb7e770266c7828ac82e22df0" mdapi_config_hash="67894674e52dcc86278845c91209e4a1" id="d866e2a8-310e-4691-9edc-f7263b8d5c07" chipset="mtlgt3" name="Ext520" />
+    <guid config_hash="d458a81e003b0edbe19d417d2eb62556" mdapi_config_hash="42d5f686975cffa9b0cb8be143061e75" id="e5a95c15-d54f-4d4f-bbe2-533240392df3" chipset="mtlgt3" name="Ext521" />
+    <guid config_hash="ac11505b59b50623881a3191e02fa100" mdapi_config_hash="de073731d6fa8e1c6ba3424e9f8fb9cb" id="bba76095-18aa-447d-9a79-00461a06f233" chipset="mtlgt3" name="Ext522" />
+    <guid config_hash="56ca8acf76263c80d32b2316c3869d7d" mdapi_config_hash="e0bad3256d74e5c3f313318687c731ea" id="724a5073-2463-4f7f-aecb-7cdd90c831e1" chipset="mtlgt3" name="Ext523" />
+    <guid config_hash="579ae606dbb62ebacca5b31f508ddba7" mdapi_config_hash="0dfb2884e96910729e70a9b37e27a77f" id="3b94a07f-e4d8-4cf2-969e-ea19bb253a8c" chipset="mtlgt3" name="Ext524" />
+    <guid config_hash="a5d3063124de4e4d721fc5b32fdf7044" mdapi_config_hash="6e202a652f836dcd45925d980512261c" id="f4399df4-e808-4a0a-85ff-0c66f9c9e8a4" chipset="mtlgt3" name="Ext525" />
+    <guid config_hash="58d1c9ed90a37363fc6b8e576046a850" mdapi_config_hash="7206f26ec894f3be54b248c17346cb96" id="f588aa78-c29a-4187-9818-480b12d5b076" chipset="mtlgt3" name="Ext526" />
+    <guid config_hash="f8b25af3925a4c4e334b0538a9bfc24f" mdapi_config_hash="a38966e20bf2c1c67a41938acae11c79" id="c0a38cc9-f0e9-40f5-9c1e-a4d7eba30825" chipset="mtlgt3" name="Ext527" />
+    <guid config_hash="665a5724008d1052e1562fab29268e92" mdapi_config_hash="b55ae7a311bc24d57f6fb69cc66e7ce3" id="1cb1d3ff-ff5d-4c9b-84c9-89b9d235be36" chipset="mtlgt3" name="Ext528" />
+    <guid config_hash="8ee82681a20b0ffbed57e38ac00376d1" mdapi_config_hash="bb3eff425f6e7b364ef81b752ea0342b" id="4491913e-99ed-4420-9575-75ab7a82c45d" chipset="mtlgt3" name="Ext529" />
+    <guid config_hash="e84563408f311380023297434a2182e8" mdapi_config_hash="63e946a2b374ec41d91ec7e69651c995" id="4fe2fe09-1ef2-45ff-87f5-e789f8405713" chipset="mtlgt3" name="Ext530" />
+    <guid config_hash="00e82e07b322a25ac55e72377c2bf847" mdapi_config_hash="9eab3b64dfe45a520b98452492471f7c" id="856f213d-954d-4b0a-be6c-307b41d39b18" chipset="mtlgt3" name="Ext531" />
+    <guid config_hash="10607fa1aadc4d123e67f47918640ed3" mdapi_config_hash="fb82484f62370d84758281eb4e44fbfd" id="03eb9c9b-72ee-4c7b-930b-6211dbb60503" chipset="mtlgt3" name="Ext540" />
+    <guid config_hash="69a68b7a752cbe4239f81b029c15a5fb" mdapi_config_hash="57751e36c6e7f1d3741542d1e9461cd1" id="e3bef1e9-f563-4927-9ce8-1be6e151448c" chipset="mtlgt3" name="Ext541" />
+    <guid config_hash="11fe4fbe69ed04782396bac8bc259084" mdapi_config_hash="e623e83a67a7cdfa118ffcfafdd2981c" id="de587fdf-1740-4816-a5c0-08c1cb6b43eb" chipset="mtlgt3" name="Ext542" />
+    <guid config_hash="0ebc4f9152108056269a57160d0354c7" mdapi_config_hash="d83dba62c3d467e9372c7288d4c68e80" id="cea536f3-f7ef-449c-91fe-42c721e54b52" chipset="mtlgt3" name="Ext543" />
+    <guid config_hash="22e477a9cc34b286eeb8509bc2b0a07b" mdapi_config_hash="8b7f1e0557da951bf85a4635ab76bcc1" id="c3586bbc-f20b-4ffc-bd62-21ea68c161f4" chipset="mtlgt3" name="Ext544" />
+    <guid config_hash="1a0ab2c152e4ff2578b3f87d23145134" mdapi_config_hash="5310dcfee9f7e167452ea7df9b373e2c" id="f3d6345a-b760-4433-844e-e35204b44e09" chipset="mtlgt3" name="Ext545" />
+    <guid config_hash="49d14d81c6078a9ea05029fde1b6951a" mdapi_config_hash="8954527b889d84c88110187789e8708f" id="f5448b6d-cb2a-4aad-804e-b1a285299582" chipset="mtlgt3" name="Ext546" />
+    <guid config_hash="7fd102b93b6fa9ef00d3da928322ea32" mdapi_config_hash="0ad8487819766233ba2d0cd54d785d98" id="7b8b6c53-abff-4570-b413-91cc843181d8" chipset="mtlgt3" name="Ext547" />
+    <guid config_hash="69a96f6d845ff45b765ef6644a4d97f7" mdapi_config_hash="2458289cc479adc24c2d901a32343511" id="b83befed-d2db-4806-907c-3f952798e117" chipset="mtlgt3" name="Ext604" />
+    <guid config_hash="6389c2dcb6a2b100db74a782d4f7006f" mdapi_config_hash="d8d0fcb20772d25731d0ac8a7d587cb9" id="0d368afb-b8fd-425d-a704-9a45eaaaed3d" chipset="mtlgt3" name="Ext1000" />
+    <guid config_hash="e358e6156c7379f8064b679128fe0747" mdapi_config_hash="a9988177c98737d0b52bcf215079e95b" id="08bee982-b34c-49c1-bf0c-93c1949ffbe7" chipset="mtlgt3" name="Ext1001" />
+    <guid config_hash="c4809b4f9dbd405691ebd29dea153aa2" mdapi_config_hash="8d1002c55a03d16517de67b4b8970d12" id="845617a9-5a17-4f1f-9a6f-61ff844065e4" chipset="mtlgt3" name="Ext1002" />
+    <guid config_hash="33b1153b5651e90c9f876a24d622b8ac" mdapi_config_hash="3006063ffc95bfa63b84bb54ea205114" id="24e3b1a8-b80e-4c8c-ab21-83640d78f896" chipset="mtlgt3" name="Ext1003" />
+    <guid config_hash="8bb1139fff1ee995a5ade92734e11d8a" mdapi_config_hash="fbbbc2eaec0f182e838cbdfa1c8372c2" id="974d6469-d51f-4e4a-a393-32033f9b562e" chipset="mtlgt3" name="Ext1004" />
+    <guid config_hash="83d7b8e952e3598565267c65964b2771" mdapi_config_hash="7a5482c523806abe25c8c4dbcf5273e7" id="c172fb87-e53f-468d-893a-d8528684accc" chipset="mtlgt3" name="Ext1005" />
+    <guid config_hash="e7efe91c7aeb591043358c1b5e3c019d" mdapi_config_hash="94ecec147a25de742814fbb01fd4e9c3" id="f739508f-51b2-48df-839c-e92c14d14c64" chipset="mtlgt3" name="Ext1006" />
+    <guid config_hash="a96fb9e9d0949e6cc372ef445fded872" mdapi_config_hash="7fb3e6405e4b54b8566589aa79cd960e" id="926b1773-807e-4ee5-8561-30c9eb0a6344" chipset="mtlgt3" name="Ext1007" />
+    <guid config_hash="310dddcb04d1088a3865f698d758cbc2" mdapi_config_hash="c6a3be7d49b5697074021ca673a39a57" id="82f69b49-772a-4169-bf9a-b1ef08e0823b" chipset="mtlgt3" name="Ext1010" />
+    <guid config_hash="482cebdeeb78bb56e67b42d24644c8db" mdapi_config_hash="11e33e01a371bf15e59b9786f4fe1050" id="de84260e-32ac-4863-ba4f-998a685174a2" chipset="mtlgt2" name="MediaSet1" />
+    <guid config_hash="5bfab887a79b99cf34a606dcca5f4f8a" mdapi_config_hash="1c238e39e5c73eefd870cef2fb7a18af" id="b9d5c6d5-39f2-4069-b343-e7a886353b89" chipset="mtlgt2" name="MediaSet2" />
+    <guid config_hash="44bcb438bea8b46b57779739bebfbd69" mdapi_config_hash="fbbd97d1f3b60c17eae57bbd3c42e7fe" id="a1700053-56bc-4b7e-87b9-e29b07a08f62" chipset="mtlgt2" name="TestOam" />
+    <guid config_hash="482cebdeeb78bb56e67b42d24644c8db" mdapi_config_hash="11e33e01a371bf15e59b9786f4fe1050" id="4d9b2817-19b9-4461-a54b-dc9fdb7d69cb" chipset="mtlgt3" name="MediaSet1" />
+    <guid config_hash="5bfab887a79b99cf34a606dcca5f4f8a" mdapi_config_hash="1c238e39e5c73eefd870cef2fb7a18af" id="651a6694-0ac1-4bd5-a4a1-94bcf479d4f4" chipset="mtlgt3" name="MediaSet2" />
+    <guid config_hash="44bcb438bea8b46b57779739bebfbd69" mdapi_config_hash="fbbd97d1f3b60c17eae57bbd3c42e7fe" id="bac01106-5869-489c-a306-67303a434173" chipset="mtlgt3" name="TestOam" />
+    <guid config_hash="208c3c79f1b4db2f86277292566d3f10" mdapi_config_hash="1fbaf5ad061ccf96ff7d4e108cbcf3ae" id="12f20772-0044-44ff-bcc0-d2bc252d140e" chipset="lnl" name="RenderBasic" />
+    <guid config_hash="b781b616d31187e7f4982f3a238b0ecd" mdapi_config_hash="35c121ef361006ca639d1e3377b5c6d7" id="72539be3-67d9-4101-b067-766b7811d2bb" chipset="lnl" name="ComputeBasic" />
+    <guid config_hash="955739b43332e61729e0a7a032188c02" mdapi_config_hash="d9be0378dd2dd6a5f85f71d156d21b43" id="cae0b2ca-c52a-4111-b8bf-5af070677d57" chipset="lnl" name="DepthProfile" />
+    <guid config_hash="55ecb5067bca7d99769a30a14eaceba5" mdapi_config_hash="e444af605670c2230a5796b4ad65b2c0" id="70cc56cf-3a37-4f6c-8911-4455fe441b2a" chipset="lnl" name="DeviceCacheProfile" />
+    <guid config_hash="e4a38cb223b20b9c28c5941b2f4979cb" mdapi_config_hash="952b726980ff7e836089c7651070f44f" id="01ffd51d-a6d6-4ff4-93d0-619f04c3a547" chipset="lnl" name="MemoryProfile" />
+    <guid config_hash="5d38d137356ca80dca2ea337449675be" mdapi_config_hash="07f0aa1a93f77bc7b6771ba2b68c8325" id="6791470f-f1e6-4f77-9013-bcb0c4be6f57" chipset="lnl" name="RenderPipeProfile" />
+    <guid config_hash="72e3ab9e7d727f97c5ea29bef23be40e" mdapi_config_hash="e6b78fe68f406ee2a0cc25293c60bc62" id="d66ce633-4ae5-4de2-8678-9705adfd45bc" chipset="lnl" name="RTProfile" />
+    <guid config_hash="6dc1bd4e8d8b49cc9776701db836ffe9" mdapi_config_hash="cee63b3642783febd3bcbf45629c5e1c" id="e7338926-568c-4424-bc44-f90318a6b472" chipset="lnl" name="VectorEngineProfile" />
+    <guid config_hash="b87d3a3dfab7193309deb13aeb595589" mdapi_config_hash="1950d62ef4b729af4494d76ca3ec8101" id="4ccd6535-fb9a-440f-b0f5-882879dc4cb0" chipset="lnl" name="VectorEngineStalls" />
+    <guid config_hash="9df6fd1c4fd100b5e50cd97e16bd1cb8" mdapi_config_hash="47c19557fd9591c3fc3955e46db4565c" id="24c33f2c-f8d9-40d9-b2db-64e863b4d625" chipset="lnl" name="TestOa" />
+    <guid config_hash="9bfa717fd19e8d5b99062ca0101113dd" mdapi_config_hash="f390ce860d404c3f22f9d1a3159ec58e" id="0af24f48-05bc-467b-b561-33dec252e651" chipset="lnl" name="MetricSet1" />
+    <guid config_hash="d635631df97322be3d97b9c4e38152e9" mdapi_config_hash="68c19075e48e5128b456a91cd7b95286" id="914ad901-832a-4ccd-a21e-ddc7690ed213" chipset="lnl" name="MetricSet2" />
+    <guid config_hash="d63d186f5b83e91f8c0680847bbf4b24" mdapi_config_hash="d31ec4eaa11c8be0d8d72ecece53434f" id="3b3c9f55-e34b-423d-8c05-7b1af03b6685" chipset="lnl" name="MetricSet3" />
+    <guid config_hash="76b7587d047c30ecde26e3f6253b4165" mdapi_config_hash="e39d956ed7b8d0cbe7d354cff234af7d" id="e6f21065-a6f5-4ea4-a545-80d6aebaab56" chipset="lnl" name="MetricSet4" />
+</guids>
diff --git a/lib/xe/oa-configs/mdapi-xml-convert.py b/lib/xe/oa-configs/mdapi-xml-convert.py
new file mode 100755
index 000000000000..ab4747ddd187
--- /dev/null
+++ b/lib/xe/oa-configs/mdapi-xml-convert.py
@@ -0,0 +1,1221 @@
+#!/usr/bin/env python3
+
+# SPDX-License-Identifier: MIT
+#
+# Copyright © 2024 Intel Corporation
+#
+#
+# "MDAPI" xml files are an XML schema for maintaining meta data about Gen
+# graphics Ovservability counters, where MD API is the name of a library shared
+# by Intel GPA and Intel VTune.
+#
+# These files aren't publicly documented and have some historical baggage that
+# adds some complexity as well as being inconsistent in a number of ways that
+# makes it quite a bit of effort to parse/use the data. We also don't have
+# guarantees about how this schema is maintained.
+#
+# We've taken the opportunity to find ways to simplify the input data and to
+# make it more consistent to hopefully reduce the effort involved in using the
+# data downstream.
+#
+
+
+import argparse
+import copy
+import hashlib
+from operator import itemgetter
+import re
+import sys
+import time
+import uuid
+
+import codegen
+
+import xml.etree.ElementTree as et
+import xml.sax.saxutils as saxutils
+
+import oa_guid_registry as oa_registry
+
+
+# MDAPI configs include writes to some non-config registers,
+# thus the blacklists...
+
+hsw_chipset_params = {
+    'a_offset': 12,
+    'b_offset': 192,
+    'c_offset': 224,
+    'oa_report_size': 256,
+    'registers': {
+        # TODO extend the symbol table for nicer output...
+        0x2710: { 'name': 'OASTARTTRIG1' },
+        0x2714: { 'name': 'OASTARTTRIG1' },
+        0x2718: { 'name': 'OASTARTTRIG1' },
+        0x271c: { 'name': 'OASTARTTRIG1' },
+        0x2720: { 'name': 'OASTARTTRIG1' },
+        0x2724: { 'name': 'OASTARTTRIG6' },
+        0x2728: { 'name': 'OASTARTTRIG7' },
+        0x272c: { 'name': 'OASTARTTRIG8' },
+        0x2740: { 'name': 'OAREPORTTRIG1' },
+        0x2744: { 'name': 'OAREPORTTRIG2' },
+        0x2748: { 'name': 'OAREPORTTRIG3' },
+        0x274c: { 'name': 'OAREPORTTRIG4' },
+        0x2750: { 'name': 'OAREPORTTRIG5' },
+        0x2754: { 'name': 'OAREPORTTRIG6' },
+        0x2758: { 'name': 'OAREPORTTRIG7' },
+        0x275c: { 'name': 'OAREPORTTRIG8' },
+        0x2770: { 'name': 'OACEC0_0' },
+        0x2774: { 'name': 'OACEC0_1' },
+        0x2778: { 'name': 'OACEC1_0' },
+        0x277c: { 'name': 'OACEC1_1' },
+        0x2780: { 'name': 'OACEC2_0' },
+        0x2784: { 'name': 'OACEC2_1' },
+        0x2788: { 'name': 'OACEC3_0' },
+        0x278c: { 'name': 'OACEC3_1' },
+        0x2790: { 'name': 'OACEC4_0' },
+        0x2794: { 'name': 'OACEC4_1' },
+        0x2798: { 'name': 'OACEC5_0' },
+        0x279c: { 'name': 'OACEC5_1' },
+        0x27a0: { 'name': 'OACEC6_0' },
+        0x27a4: { 'name': 'OACEC6_1' },
+        0x27a8: { 'name': 'OACEC7_0' },
+        0x27ac: { 'name': 'OACEC7_1' },
+    },
+    'config_reg_blacklist': {
+        0x2364, # OASTATUS1 register
+    },
+    'register_offsets': {
+        0x1f0: 'PERFCNT 0',
+        0x1f8: 'PERFCNT 1',
+    },
+}
+
+gen8_11_chipset_params = {
+    'a_offset': 16,
+    'b_offset': 192,
+    'c_offset': 224,
+    'oa_report_size': 256,
+    'config_reg_blacklist': {
+        0x2364, # OACTXID
+    },
+    'register_offsets': {
+        0x1f0: 'PERFCNT 0',
+        0x1f8: 'PERFCNT 1',
+    }
+}
+
+xehpsdv_chipset_params = {
+    'a_offset': 16,
+    'b_offset': 192,
+    'c_offset': 224,
+    'oa_report_size': 256,
+    'config_reg_blacklist': {
+        0x2364, # OACTXID
+    },
+    'register_offsets': {
+        0x1b0: 'PERFCNT 0',
+        0x1b8: 'PERFCNT 1',
+    }
+}
+
+# There is no ReportType field in most Metrics XML files, Use 256B_GENERIC_NOA16
+# to denote the generic 256 byte format that is used by most chipsets
+# Just treat the MPEC counter names as A counters here. If a format has both A
+# and MPEC counters, then we need to change this.
+mtl_chipset_oam_samedia_ll_params = {
+    'a_offset': 32,
+    'b_offset': 96,
+    'c_offset': 128,
+    'oa_report_size': 192,
+    'config_reg_blacklist': {
+        0x2364, # OACTXID
+    },
+    'register_offsets': {
+        0x1b0: 'PERFCNT 0',
+        0x1b8: 'PERFCNT 1',
+    }
+}
+
+mtl_chipset_oam_samedia_params = {
+    'a_offset': 32,
+    'b_offset': 64,
+    'c_offset': 96,
+    'oa_report_size': 128,
+    'config_reg_blacklist': {
+        0x2364, # OACTXID
+    },
+    'register_offsets': {
+        0x1b0: 'PERFCNT 0',
+        0x1b8: 'PERFCNT 1',
+    }
+}
+
+# FIXME: everything except oa_report_size is incorrect here
+xe2_chipset_params = {
+    'a_offset': 16,
+    'b_offset': 192,
+    'c_offset': 224,
+    'oa_report_size': 576,
+    'config_reg_blacklist': {
+        0x2364, # OACTXID
+    },
+    'register_offsets': {
+        0x1b0: 'PERFCNT 0',
+        0x1b8: 'PERFCNT 1',
+    }
+}
+
+hsw_chipset_oa_formats = {
+    '256B_GENERIC_NOA16': hsw_chipset_params,
+}
+
+gen8_11_chipset_oa_formats = {
+    '256B_GENERIC_NOA16': gen8_11_chipset_params,
+}
+
+xehpsdv_chipset_oa_formats = {
+    '256B_GENERIC_NOA16': xehpsdv_chipset_params,
+}
+
+mtl_chipset_oa_formats = {
+    '256B_GENERIC_NOA16': xehpsdv_chipset_params,
+    '192B_MPEC8LL_NOA16': mtl_chipset_oam_samedia_ll_params,
+    '128B_MPEC8_NOA16': mtl_chipset_oam_samedia_params,
+}
+
+xe2_chipset_oa_formats = {
+    '256B_GENERIC_NOA16': xe2_chipset_params,
+}
+
+chipsets = {
+    'HSW': hsw_chipset_oa_formats,
+    'BDW': gen8_11_chipset_oa_formats,
+    'CHV': gen8_11_chipset_oa_formats,
+    'SKL': gen8_11_chipset_oa_formats,
+    'BXT': gen8_11_chipset_oa_formats,
+    'KBL': gen8_11_chipset_oa_formats,
+    'GLK': gen8_11_chipset_oa_formats,
+    'CFL': gen8_11_chipset_oa_formats,
+    'CNL': gen8_11_chipset_oa_formats,
+    'ICL': gen8_11_chipset_oa_formats,
+    'EHL': gen8_11_chipset_oa_formats,
+    'TGL': gen8_11_chipset_oa_formats,
+    'RKL': gen8_11_chipset_oa_formats,
+    'DG1': gen8_11_chipset_oa_formats,
+    'ADL': gen8_11_chipset_oa_formats,
+    'ACM': xehpsdv_chipset_oa_formats,
+    'MTL': mtl_chipset_oa_formats,
+    'LNL': xe2_chipset_oa_formats,
+}
+
+xehp_plus = ( 'ACM', 'MTL' )
+
+xe2_plus = ( 'LNL' )
+
+register_types = { 'OA', 'NOA', 'FLEX', 'PM' }
+
+default_set_blacklist = { "RenderDX1x", # TODO: rename to something non 'DX'
+                                        # specific if this config is generally
+                                        # usefull
+                          "RenderBalance", # XXX: missing register config
+                          "PipelineTimestamps", # Covered by API timestamp queries
+                        }
+
+counter_blacklist = {
+    "DramLlcThroughput", # TODO: The max equation of this counter
+                         # requires dram throughtput value. Need to
+                         # investiguate how to get this value.
+}
+
+def underscore(name):
+    s = re.sub('MHz', 'Mhz', name)
+    s = re.sub('\.', '_', s)
+    s = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', s)
+    s = re.sub('#', '_', s)
+    return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s).lower()
+
+def print_err(*args):
+    sys.stderr.write(' '.join(map(str,args)) + '\n')
+
+def read_value(chipset, offset, oa_format):
+    if offset in chipsets[chipset][oa_format]['register_offsets']:
+        return chipsets[chipset][oa_format]['register_offsets'][offset]
+    print_err("Unknown offset register at offset {0}".format(offset))
+    assert 0
+
+
+def read_token_to_rpn_read_oam(chipset, token, raw_offsets, oa_format):
+    width, offset_str = token.split('@')
+    offset = int(offset_str, 16)
+
+    if width == 'qw':
+        den = 8
+    else:
+        den = 4
+
+    if raw_offsets:
+        # Location in the HW reports
+        a_offset = chipsets[chipset][oa_format]['a_offset']
+        b_offset = chipsets[chipset][oa_format]['b_offset']
+        c_offset = chipsets[chipset][oa_format]['c_offset']
+        report_size = chipsets[chipset][oa_format]['oa_report_size']
+
+        if offset < a_offset:
+            if offset == 8:
+                return "GPU_TIME 0 READ"
+            elif offset == 24:
+                return "GPU_CLOCK 0 READ"
+            else:
+                assert 0
+        elif offset < b_offset:
+            a_cnt_offset = int((offset - a_offset) / den)
+            return "A " + str(a_cnt_offset) + " READ"
+        elif offset < c_offset:
+            return "B " + str(int((offset - b_offset) / den)) + " READ"
+        elif offset < report_size:
+            return "C " + str(int((offset - c_offset) / den)) + " READ"
+        else:
+            return "{0} READ".format(read_value(chipset, offset, oa_format))
+    else:
+        # Location in the accumulated deltas
+        idx = int(offset / 8)
+        if chipset in xehp_plus:
+            # For XEHPSDV the array of accumulated counters is
+            # assumed to start with a GPU_TIME then GPU_CLOCK,
+            # then 38 A counters, then 8 B counters and finally
+            # 8 C counters.
+            if idx == 0:
+                return "GPU_TIME 0 READ"
+            elif idx == 1:
+                return "GPU_CLOCK 0 READ"
+            elif idx < 40:
+                return "A " + str(idx - 2) + " READ"
+            elif idx < 48:
+                return "B " + str(idx - 40) + " READ"
+            elif idx < 56:
+                return "C " + str(idx - 48) + " READ"
+            else:
+                return "{0} READ".format(read_value(chipset, offset, oa_format))
+
+    assert 0
+
+def read_token_to_rpn_read_oag(chipset, token, raw_offsets, oa_format):
+    width, offset_str = token.split('@')
+
+    # For Broadwell the raw read notation was extended for 40 bit
+    # counters: rd40@<32bit_part1_offset>:<8bit_part2_offset>
+    if width == "rd40":
+        offset_32_str, offset_8_str = offset_str.split(':')
+        offset_str = offset_32_str
+
+    offset = int(offset_str, 16)
+
+    if raw_offsets:
+        # Location in the HW reports
+        a_offset = chipsets[chipset][oa_format]['a_offset']
+        b_offset = chipsets[chipset][oa_format]['b_offset']
+        c_offset = chipsets[chipset][oa_format]['c_offset']
+        report_size = chipsets[chipset][oa_format]['oa_report_size']
+
+        if offset < a_offset:
+            if offset == 4:
+                return "GPU_TIME 0 READ"
+            elif offset == 12:
+                assert chipset != "HSW" # Only for Gen8+
+                return "GPU_CLOCK 0 READ"
+            else:
+                assert 0
+        elif offset < b_offset:
+            a_cnt_offset = int((offset - a_offset) / 4)
+            if chipset in xehp_plus:
+                # Most A counters are in a contiguous array, except
+                # this A37.
+                if a_cnt_offset == 42:
+                    return "A 37 READ"
+                return "A " + str(a_cnt_offset) + " READ"
+            else:
+                return "A " + str(a_cnt_offset) + " READ"
+        elif offset < c_offset:
+            return "B " + str(int((offset - b_offset) / 4)) + " READ"
+        elif offset < report_size:
+            return "C " + str(int((offset - c_offset) / 4)) + " READ"
+        else:
+            return "{0} READ".format(read_value(chipset, offset, oa_format))
+    else:
+        # Location in the accumulated deltas
+        idx = int(offset / 8)
+        if chipset == "HSW":
+            # On Haswell accumulated counters are assumed to start
+            # with GPU_TIME followed by 45 A counters, then 8 B
+            # counters and finally 8 C counters.
+            if idx < 1:
+                return "GPU_TIME 0 READ"
+            elif idx < 46:
+                return "A " + str(idx - 1) + " READ"
+            elif idx < 54:
+                return "B " + str(idx - 46) + " READ"
+            elif idx < 62:
+                return "C " + str(idx - 54) + " READ"
+            else:
+                return "{0} READ".format(read_value(chipset, offset, oa_format))
+        elif chipset in xehp_plus:
+            # For XEHPSDV the array of accumulated counters is
+            # assumed to start with a GPU_TIME then GPU_CLOCK,
+            # then 38 A counters, then 8 B counters and finally
+            # 8 C counters.
+            if idx == 0:
+                return "GPU_TIME 0 READ"
+            elif idx == 1:
+                return "GPU_CLOCK 0 READ"
+            elif idx < 40:
+                return "A " + str(idx - 2) + " READ"
+            elif idx < 48:
+                return "B " + str(idx - 40) + " READ"
+            elif idx < 56:
+                return "C " + str(idx - 48) + " READ"
+            else:
+                return "{0} READ".format(read_value(chipset, offset, oa_format))
+        elif chipset in xe2_plus:
+            # FIXME: skip all metrics to retain just the registers
+                return "GPU_TIME 0 READ"
+        else:
+            # For Gen8+ the array of accumulated counters is
+            # assumed to start with a GPU_TIME then GPU_CLOCK,
+            # then 36 A counters, then 8 B counters and finally
+            # 8 C counters.
+            if idx == 0:
+                return "GPU_TIME 0 READ"
+            elif idx == 1:
+                return "GPU_CLOCK 0 READ"
+            elif idx < 38:
+                return "A " + str(idx - 2) + " READ"
+            elif idx < 46:
+                return "B " + str(idx - 38) + " READ"
+            elif idx < 54:
+                return "C " + str(idx - 46) + " READ"
+            else:
+                return "{0} READ".format(read_value(chipset, offset, oa_format))
+
+    assert 0
+
+
+def read_token_to_rpn_read(chipset, token, raw_offsets, oa_format):
+    if oa_format == '256B_GENERIC_NOA16':
+        return read_token_to_rpn_read_oag(chipset, token, raw_offsets, oa_format)
+
+    if oa_format in ['192B_MPEC8LL_NOA16', '128B_MPEC8_NOA16']:
+        return read_token_to_rpn_read_oam(chipset, token, raw_offsets, oa_format)
+
+    assert 0
+
+def replace_read_tokens_with_rpn_read_ops(chipset, oa_format, equation, raw_offsets):
+    # MDAPI MetricSet equations use tokens like 'dw at 0xff' for reading raw
+    # values from snapshots, but this doesn't seem convenient for a few
+    # reasons:
+    #
+    # 1) The offsets hide the particular a, b, or c counter they
+    #    correspond to which in turn makes it awkward to experiment
+    #    with different report sizes which trade off how many a, b and
+    #    c counters are available
+    #
+    # 2) Raw reads could be represented as RPN operations too, and
+    #    the consistency could make them slightly easier for tools to
+    #    handle, E.g:
+    #
+    #      "A 5 READ" = read A counter 5
+    #
+    # We replace dw@ address tokens with GPU_TIME, A, B or C READ ops...
+    #
+
+    tokens = equation.split()
+    equation = ""
+
+    for token in tokens:
+        if '@' in token:
+            read_exp = read_token_to_rpn_read(chipset, token, raw_offsets, oa_format)
+            equation = equation + " " + read_exp
+        else:
+            equation = equation + " " + token
+
+    return equation
+
+
+parser = argparse.ArgumentParser()
+parser.add_argument("xml", nargs="+", help="XML description of metrics")
+parser.add_argument("--guids", required=True, help="Metric set GUID registry")
+parser.add_argument("--whitelist", help="Only output for given, space-separated, sets")
+parser.add_argument("--blacklist", help="Don't generate anything for given metric sets")
+parser.add_argument("--merge", help="Additional meta data to merge into the result")
+parser.add_argument("--dry-run", action="store_true",
+                    help="Not generate new XML but to check any errors")
+
+args = parser.parse_args()
+
+metrics = et.Element('metrics')
+tree = et.ElementTree(metrics)
+
+def apply_aliases(text, aliases):
+    if aliases == None:
+        return text
+
+    for alias in aliases.split(','):
+        (a, b) = alias.split('|')
+        text = re.sub(r"\b%s\b" % re.escape(a), b, text)
+
+        a = a.lower()
+        b = b.lower()
+        text = re.sub(r"\b%s\b" % re.escape(a), b, text)
+
+    return text
+
+def strip_dx_apis(text):
+    if text == None:
+        return ""
+    stripped = ""
+    apis = text.split()
+    for api in apis:
+        if api[:2] != "DX":
+            stripped = stripped + " " + api
+
+    return stripped.strip()
+
+def add_gpu_core_clocks_if_missing(metric_set, counters, counter_deps):
+    if len(counters) < 1:
+        return
+
+    for name,element in counters.items():
+        if name == 'GpuCoreClocks':
+            return
+
+    print_err("WARNING: add missing GpuCoreClocks counter for MetricSets=\"{0}\"".format(metric_set.get('ShortName')))
+    counter = et.SubElement(metric_set, 'Metric')
+    counter.set("SymbolName", "GpuCoreClocks")
+    counter.set("SignalName", "oa.fixed")
+    counter.set("ShortName", "GPU Core Clocks")
+    counter.set("LongName", "The total number of GPU core clocks elapsed during the measurement.")
+    counter.set("Group", "GPU")
+    counter.set("UsageFlags", "Tier1 Frame Batch Draw")
+    counter.set("MetricType", "EVENT")
+    counter.set("ResultType", "UINT64")
+    counter.set("MetricUnits", "cycles")
+    counter.set("HWUnitType", "GPU")
+    counter.set("SnapshotReportReadEquation", "dw at 0x0c")
+    counter.set("SnapshotReportDeltaFunction", "DELTA 32")
+    counter.set("DeltaReportReadEquation", "qw at 0x08")
+    counter.set("NormalizationEquation", "")
+
+    counters["GpuCoreClocks"] = counter
+    counter_deps["GpuCoreClocks"] = []
+
+# For recursively appending counters in order of dependencies...
+def append_deps_and_counter(mdapi_counter, mdapi_counters, deps,
+                            sorted_array, sorted_set):
+    symbol_name = oa_registry.Registry.sanitize_symbol_name(mdapi_counter.get('SymbolName'))
+
+    if symbol_name in sorted_set:
+        return
+
+    for dep_name in deps[symbol_name]:
+        if dep_name in mdapi_counters:
+            append_deps_and_counter(mdapi_counters[dep_name], mdapi_counters, deps,
+                                    sorted_array, sorted_set)
+
+    sorted_array.append(mdapi_counter)
+    sorted_set[symbol_name] = mdapi_counter
+
+def sort_counters(mdapi_counters, deps):
+    sorted_array = []
+    sorted_set = {} # counters in here have been added to array
+    for symbol_name in mdapi_counters:
+        append_deps_and_counter(mdapi_counters[symbol_name], mdapi_counters, deps,
+                                sorted_array, sorted_set)
+
+    return sorted_array
+
+def expand_macros(equation):
+    equation = equation.replace('GpuDuration', "$Self 100 UMUL $GpuCoreClocks FDIV")
+    equation = equation.replace('EuAggrDuration', "$Self $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV")
+    return equation
+
+def fixup_equation(equation):
+    if equation is None:
+        return None
+    return equation.replace('$SubliceMask', '$SubsliceMask')
+
+# The MDAPI XML files sometimes duplicate the same Flex EU/OA regs
+# between configs with different AvailabilityEquations even though the
+# availability checks are only expected to affect the MUX configs
+#
+# We iterate all the configs to filter out the FLEX/OA configs and
+# double check that there's never any variations between repeated
+# configs
+#
+def filter_single_config_registers_of_type(mdapi_metric_set, type, oa_format):
+    regs = []
+    for mdapi_reg_config in mdapi_metric_set.findall("RegConfigStart"):
+        tmp_regs = []
+        for mdapi_reg in mdapi_reg_config.findall("Register"):
+            reg = (int(mdapi_reg.get('offset'),16), int(mdapi_reg.get('value'),16))
+
+            if reg[0] in chipsets[chipset][oa_format]['config_reg_blacklist']:
+                continue
+
+            if mdapi_reg.get('type') == type:
+                tmp_regs.append(reg)
+
+        if len(tmp_regs) > 0:
+            bad = False
+            if len(regs) == 0:
+                regs = tmp_regs
+            elif len(regs) != len(tmp_regs):
+                bad = True
+            else:
+                for i in range(0, len(regs)):
+                    if regs[i] != tmp_regs[i]:
+                        bad = True
+                        break
+            if bad:
+                print_err("ERROR: multiple, differing FLEX/OA configs for one set: MetricSet=\"" + mdapi_metric_set.get('ShortName'))
+                sys.exit(1)
+
+    return regs
+
+
+# We only have a very small number of IDs, but we aren't assuming they
+# start from zero or are contiguous in the MDAPI XML files. Python
+# doesn't seem to have a built in sparse array type so we just
+# loop over the entries we have:
+def get_mux_id_group(id_groups, id):
+    for group in id_groups:
+        if group['id'] == id:
+            return group
+
+    new_group = { 'id': id, 'configs': [] }
+    id_groups.append(new_group)
+
+    return new_group
+
+
+
+def process_mux_configs(mdapi_set, oa_format):
+    allow_missing_id = True
+
+    mux_config_id_groups = []
+
+    for mdapi_reg_config in mdapi_set.findall("RegConfigStart"):
+
+        mux_regs = []
+        for mdapi_reg in mdapi_reg_config.findall("Register"):
+            address = int(mdapi_reg.get('offset'), 16)
+
+            if address in chipsets[chipset][oa_format]['config_reg_blacklist']:
+                continue
+
+            reg_type = mdapi_reg.get('type')
+
+            if reg_type not in register_types:
+                print_err("ERROR: unknown register type=\"" + reg_type + "\": MetricSet=\"" + mdapi_set.get('ShortName'))
+                sys.exit(1)
+
+            if reg_type != 'NOA' and reg_type != 'PM':
+                continue
+
+            reg = (address, int(mdapi_reg.get('value'), 16))
+            mux_regs.append(reg)
+
+        if len(mux_regs) == 0:
+            continue
+
+        availability = mdapi_reg_config.get('AvailabilityEquation')
+        if availability == "":
+            availability = None
+
+        if mdapi_reg_config.get('ConfigPriority') != None:
+            reg_config_priority = int(mdapi_reg_config.get('ConfigPriority'))
+        else:
+            reg_config_priority = 0
+
+        if mdapi_reg_config.get('ConfigId') != None:
+            reg_config_id = int(mdapi_reg_config.get('ConfigId'))
+            allow_missing_id = False
+        elif mdapi_reg_config.get('ConfigId') == None and allow_missing_id == True:
+            reg_config_id = 0
+        else:
+            # It will spell trouble if there's a mixture of explicit and
+            # implied config IDs...
+            print_err("ERROR: register configs mixing implied/explicit IDs: MetricSet=\"" + mdapi_set.get('ShortName'))
+            sys.exit(1)
+
+        mux_config = { 'priority': reg_config_priority,
+                       'availability': availability,
+                       'registers': mux_regs }
+
+        mux_config_id_group = get_mux_id_group(mux_config_id_groups, reg_config_id)
+        mux_config_id_group['configs'].append(mux_config)
+
+    mux_config_id_groups.sort(key=itemgetter('id'))
+
+    # The only special case we currently support for more than one group of NOA
+    # MUX configs is for the Broadwell ComputeExtended metric set with two Id
+    # groups and the second just has a single unconditional config that can
+    # logically be appended to all the conditional configs of the first group
+    if len(mux_config_id_groups) > 1:
+        if len(mux_config_id_groups) != 2:
+            print_err("ERROR: Script doesn't currently allow more than two groups of NOA MUX configs for a single metric set: MetricSet=\"" + mdapi_set.get('ShortName'))
+            sys.exit(1)
+
+        last_id_group = mux_config_id_groups[-1]
+        if len(last_id_group['configs']) != 1:
+            print_err("ERROR: Script currently only allows up to two Ids for NOA MUX configs if second Id only contains a single unconditional config: MetricSet=\"" + mdapi_set.get('ShortName'))
+            sys.exit(1)
+
+        tail_config = last_id_group['configs'][0]
+        for mux_config in mux_config_id_groups[0]['configs']:
+            mux_config['registers'] = mux_config['registers'] + tail_config['registers']
+
+        mux_config_id_groups = [mux_config_id_groups[0]]
+
+    if len(mux_config_id_groups) == 0 or mux_config_id_groups[0]['configs'] == 0:
+        return ()
+
+    mux_configs = mux_config_id_groups[0]['configs']
+    assert isinstance(mux_configs, list)
+    assert len(mux_configs) >= 1
+    assert len(mux_configs[0]['registers']) > 1 # > 1 registers
+    return mux_configs
+
+
+def add_register_config(set, priority, availability, regs, type):
+    reg_config = et.SubElement(set, 'register_config')
+
+    reg_config.set('type', type)
+
+    if availability != None:
+        assert type == "NOA"
+        reg_config.set('priority', str(priority))
+        reg_config.set('availability', availability)
+
+    for reg in regs:
+        elem = et.SubElement(reg_config, 'register')
+        elem.set('type', type)
+        elem.set('address', "0x%08X" % reg[0])
+        elem.set('value', "0x%08X" % reg[1])
+
+def to_text(value):
+    if value == None:
+        return ""
+    return value
+
+# There are duplicated metric sets with the same symbol name so we
+# keep track of the sets we've read so we can skip duplicates...
+sets = {}
+
+guids = {}
+
+guids_xml = et.parse(args.guids)
+for guid in guids_xml.findall(".//guid"):
+    hashing_key = oa_registry.Registry.chipset_derive_hash(guid.get('chipset'),
+                                                           guid.get('name'),
+                                                           guid.get('mdapi_config_hash'))
+    guids[hashing_key] = guid.get('id')
+
+for arg in args.xml:
+    mdapi = et.parse(arg)
+
+    concurrent_group = mdapi.find(".//ConcurrentGroup")
+    chipset = oa_registry.Registry.chipset_name(concurrent_group.get('SupportedHW'))
+
+    chipset_fullname = chipset
+    if concurrent_group.get('SupportedGT') != None:
+        chipset_fullname = chipset_fullname + oa_registry.Registry.gt_name(concurrent_group.get('SupportedGT'))
+    if chipset not in chipsets:
+        print_err("WARNING: unsupported chipset {0}, consider updating {1}".format(chipset, __file__))
+        continue
+
+    for mdapi_set in mdapi.findall(".//MetricSet"):
+
+        apis = mdapi_set.get('SupportedAPI')
+        if "OGL" not in apis and "OCL" not in apis and "MEDIA" not in apis and "IO" not in apis:
+            continue
+
+        oa_format = '256B_GENERIC_NOA16'
+        if mdapi_set.get('ReportType') in chipsets[chipset]:
+            oa_format = mdapi_set.get('ReportType')
+
+        set_symbol_name = oa_registry.Registry.sanitize_symbol_name(mdapi_set.get('SymbolName'))
+
+        if set_symbol_name in sets:
+            print_err("WARNING: duplicate set named \"" + set_symbol_name + "\" (SKIPPING)")
+            continue
+
+        if args.whitelist:
+            set_whitelist = args.whitelist.split()
+            if set_symbol_name not in set_whitelist:
+                continue
+
+        if args.blacklist:
+            set_blacklist = args.blacklist.split()
+        else:
+            set_blacklist = default_set_blacklist
+        if set_symbol_name in set_blacklist:
+            continue
+
+        if mdapi_set.get('SnapshotReportSize') != str(chipsets[chipset][oa_format]['oa_report_size']):
+            print_err("WARNING: skipping metric set '{0}', report size {1} invalid".format(set_symbol_name, mdapi_set.get('SnapshotReportSize')))
+            continue
+
+        set = et.SubElement(metrics, 'set')
+
+        set.set('chipset', chipset_fullname)
+
+        set.set('name', mdapi_set.get('ShortName'))
+        set.set('symbol_name', set_symbol_name)
+        set.set('underscore_name', underscore(mdapi_set.get('SymbolName')))
+        set.set('mdapi_supported_apis', strip_dx_apis(mdapi_set.get('SupportedAPI')))
+        set.set('oa_format', oa_format)
+
+
+        # Look at the hardware register config before looking at the counters.
+        #
+        # The hardware configuration is used as a key to lookup up a GUID which
+        # is used by applications to lookup the corresponding counter
+        # normalization equations.
+        #
+        # We want to skip over any metric sets that don't yet have a registered
+        # GUID in guids.xml.
+
+        # There can be multiple NOA MUX configs, since they may have associated
+        # availability tests to match particular systems.
+        #
+        # Unlike the MDAPI XML files we only support tracking one group of
+        # mutually exclusive MUX configs, whereas the MDAPI XML files
+        # theoretically allow a single metric set to be associated with ordered
+        # groups of mutually exclusive configs. So far there is only one
+        # Broadwell, ComputeExtended metric set which uses this, but that
+        # particular case can be expressed in less general terms.
+        #
+        # Being a bit simpler here should make it easier for downstream tools
+        # to deal with. (At least we got the handling of the Broadwell
+        # ComputeExtended example wrong and it took several email exchanges and
+        # a conference call to confirm how to interpret this case)
+        mux_configs = process_mux_configs(mdapi_set, oa_format)
+
+        # Unlike for MUX registers, we only expect one set of FLEX/OA
+        # registers per metric set (even though they are sometimes duplicated
+        # between configs in MDAPI XML files.
+        #
+        # This filter function, extracts the register of a certain type but
+        # also double checks that if they are repeated in separate configs that
+        # they don't vary. (Notably the current xe_oa Linux driver would
+        # need some adapting to support multiple OA/FLEX configs with different
+        # availability expressions)
+        #
+        flex_regs = filter_single_config_registers_of_type(mdapi_set, "FLEX", oa_format)
+        oa_regs = filter_single_config_registers_of_type(mdapi_set, "OA", oa_format)
+
+
+        # Note: we ignore Perfmon registers
+
+        for mux_config in mux_configs:
+            add_register_config(set, mux_config['priority'], mux_config['availability'], mux_config['registers'], "NOA")
+        if len(oa_regs) > 0:
+            add_register_config(set, 0, None, oa_regs, "OA")
+        if len(flex_regs) > 0:
+            add_register_config(set, 0, None, flex_regs, "FLEX")
+
+        mdapi_hw_config_hash = oa_registry.Registry.mdapi_hw_config_hash(mdapi_set)
+        guid_hash = oa_registry.Registry.chipset_derive_hash(chipset_fullname.lower(),
+                                                             set_symbol_name,
+                                                             mdapi_hw_config_hash)
+        hw_config_hash = oa_registry.Registry.hw_config_hash(set)
+
+        if guid_hash in guids:
+            set.set('hw_config_guid', guids[guid_hash])
+        else:
+            print_err("WARNING: No GUID found for metric set " + chipset_fullname + ", " + set_symbol_name + " (SKIPPING)")
+            print_err("WARNING: If this is a new config add the following to guids.xml:")
+            print_err("<guid config_hash=\"" + hw_config_hash + "\" mdapi_config_hash=\"" + mdapi_hw_config_hash + "\" id=\"" + str(uuid.uuid4()) + "\" chipset=\"" + chipset_fullname.lower() + "\" name=\"" + set_symbol_name + "\" />")
+            metrics.remove(set)
+            continue
+
+
+        sets[set_symbol_name] = set
+
+        counters = {}
+        normalization_equations = {}
+        raw_equations = {}
+
+        # Awkwardly we can't assume metrics are in dependency order and have to
+        # sort them manually. We start by associating a list of dependencies with
+        # each counter...
+
+        mdapi_counters = {}
+        mdapi_counter_deps = {}
+
+        for mdapi_counter in mdapi_set.findall("Metrics/Metric"):
+            symbol_name = oa_registry.Registry.sanitize_symbol_name(mdapi_counter.get('SymbolName'))
+
+            if symbol_name in counter_blacklist:
+                continue;
+
+            # Have seen at least one MetricSet with a duplicate GpuCoreClocks counter...
+            if symbol_name in mdapi_counters:
+                print_err("WARNING: Skipping duplicate counter \"" + symbol_name + \
+                        "\" in " + set.get('name') + " :: " + mdapi_counter.get('ShortName'))
+                continue;
+
+            deps = []
+            equations = fixup_equation(str(mdapi_counter.get('SnapshotReportReadEquation'))) + " " + \
+                        fixup_equation(str(mdapi_counter.get('SnapshotReportDeltaEquation'))) + " " + \
+                        fixup_equation(str(mdapi_counter.get('DeltaReportReadEquation'))) + " " + \
+                        fixup_equation(str(mdapi_counter.get('NormalizationEquation')))
+            equations = expand_macros(equations)
+            equations = equations.replace('$$', "$")
+            for token in equations.split():
+                if token[0] == '$' and not codegen.is_hw_var(token) and token[1:] != "Self":
+                    deps.append(token[1:])
+
+            mdapi_counters[symbol_name] = mdapi_counter
+            mdapi_counter_deps[symbol_name] = deps
+
+        add_gpu_core_clocks_if_missing(mdapi_set, mdapi_counters, mdapi_counter_deps)
+        sorted_mdapi_counters = sort_counters(mdapi_counters, mdapi_counter_deps)
+
+        for mdapi_counter in sorted_mdapi_counters:
+
+            aliases = mdapi_counter.get('Alias')
+
+            skip_counter = False
+
+            # We don't currently support configuring and reading perfmon registers
+            signal = mdapi_counter.get('SignalName')
+            if signal and "perfmon" in signal:
+                continue;
+
+            # A few things to fixup with this common counter...
+            if mdapi_counter.get('SymbolName') == "AvgGpuCoreFrequencyMHz":
+                # To avoid requiring a special case in tools, add a max value
+                # equation for the gpu frequency...
+                mdapi_counter.set('MaxValueEquation', "$GpuMaxFrequency")
+
+                # Don't include units in the name
+                mdapi_counter.set('SymbolName', "AvgGpuCoreFrequency")
+
+                # Use canonical, first order of magnitude units specifier
+                mdapi_counter.set('MetricUnits', 'Hz')
+                mdapi_counter.set('NormalizationEquation', '$GpuCoreClocks 1000000000 UMUL $GpuTime UDIV')
+                #mdapi_counter.set('DeltaReportReadEquation', '$GpuCoreClocks $GpuTime UDIV')
+
+
+            symbol_name = oa_registry.Registry.sanitize_symbol_name(mdapi_counter.get('SymbolName'))
+
+            counter = et.SubElement(set, 'counter')
+            counter.set('name', apply_aliases(mdapi_counter.get('ShortName'), aliases))
+            counter.set('symbol_name', oa_registry.Registry.sanitize_symbol_name(mdapi_counter.get('SymbolName')))
+            counter.set('underscore_name', underscore(mdapi_counter.get('SymbolName')))
+            counter.set('description', apply_aliases(mdapi_counter.get('LongName'), aliases))
+            counter.set('mdapi_group', apply_aliases(to_text(mdapi_counter.get('Group')), aliases))
+            counter.set('mdapi_usage_flags', to_text(mdapi_counter.get('UsageFlags')))
+            counter.set('mdapi_supported_apis', strip_dx_apis(mdapi_counter.get('SupportedAPI')))
+            low = mdapi_counter.get('LowWatermark')
+            if low:
+                counter.set('low_watermark', low)
+            high = to_text(mdapi_counter.get('HighWatermark'))
+            if high:
+                counter.set('high_watermark', high)
+            counter.set('data_type', mdapi_counter.get('ResultType').lower())
+
+            max_eq = fixup_equation(mdapi_counter.get('MaxValueEquation'))
+            if max_eq:
+                counter.set('max_equation', max_eq)
+
+            # XXX Not sure why EU metrics tend to just be bundled under 'gpu'
+            counter.set('mdapi_hw_unit_type', mdapi_counter.get('HWUnitType').lower())
+
+            # Some counters do not have MetricUnits, treat them as number.
+            if mdapi_counter.get('MetricUnits') == None:
+                units = "number"
+            else:
+                units = mdapi_counter.get('MetricUnits').lower()
+
+            # There are counters representing cycle counts that have a semantic
+            # type of 'duration' which doesn't seem to make sense...
+            if units == "cycles":
+                semantic_type = "event"
+            else:
+                semantic_type = mdapi_counter.get('MetricType').lower()
+
+            counter.set('units', units)
+            counter.set('semantic_type', semantic_type)
+
+            # MDAPI MetricSets have 3 different kinds of counter read equations:
+            #
+            # 1) One for reading a raw (unnormalized) value from a hardware report
+            #
+            #       The line between normalized and raw isn't always clear
+            #       as the raw equation may e.g. read and ADD multiple counters
+            #
+            #       Not all counters have a raw equation if they are instead
+            #       derived through $CounterName references to other counters
+            #       in a normalized value equation
+            #
+            # 2) One for reading an unnormalized value from the accumulated 'delta reports'
+            #
+            #       Seems to duplicate the raw equation but with delta report
+            #       offsets and referencing 64bit values
+            #
+            #       The normalized value equations are always based on these
+            #       accumulated delta values
+            #
+            # 3) One for reading a normalized value
+            #
+            #       These may start with a reference to "$Self" which is
+            #       effectively a macro for the above delta report equation
+            #
+            #       If this is missing the delta report equation is effectively
+            #       the normalized equation too
+            #
+            #       XXX: Beware that there are some inconsistent counters that
+            #       have a normalization equation with a $Self reference and a
+            #       raw equation but no delta report equation. This seems
+            #       pretty sketchy, but (at least for 'MEDIA' metrics) we will
+            #       substitute the raw equation for $Self in this case along
+            #       with a warning to double check the results.
+            #
+            # Currently there doesn't appear to be a clear reason to
+            # differentiate these equations and the separation seems to
+            # complicate things for tools wanting to generate code from this
+            # data.
+            #
+            # We instead aim to have one normalized equation per counter that
+            # always reference accumulated counter values.
+
+            # XXX: As a special case, we override the raw and delta report
+            # equations for the GpuTime counters, which seem inconsistent
+            if mdapi_counter.get('SymbolName') == "GpuTime":
+                mdapi_counter.set('DeltaReportReadEquation', "qw at 0x0 1000000000 UMUL $GpuTimestampFrequency UDIV")
+                if chipset == 'MTL' and oa_format != '256B_GENERIC_NOA16':
+                    mdapi_counter.set('SnapshotReportReadEquation', "qw at 0x08 1000000000 UMUL $GpuTimestampFrequency UDIV")
+                else:
+                    mdapi_counter.set('SnapshotReportReadEquation', "dw at 0x04 1000000000 UMUL $GpuTimestampFrequency UDIV")
+
+            availability = fixup_equation(mdapi_counter.get('AvailabilityEquation'))
+            if availability == "":
+                availability = None
+
+            # We prefer to only look at the equations that reference the raw
+            # reports since the mapping of offsets back to A,B,C counters is
+            # unambiguous, but if necessary we will fallback to mapping
+            # delta report offsets (accumulated 64bit values that correspond
+            # to the 32bit or 40bit values from raw repots)
+
+            raw_read_eq = fixup_equation(mdapi_counter.get('SnapshotReportReadEquation'))
+            if raw_read_eq:
+                if raw_read_eq == "":
+                    raw_read_eq = None
+                else:
+                    raw_read_eq = replace_read_tokens_with_rpn_read_ops(chipset,
+                                                                        oa_format,
+                                                                        raw_read_eq,
+                                                                        True) #raw offsets
+
+            delta_read_eq = fixup_equation(mdapi_counter.get('DeltaReportReadEquation'))
+            if delta_read_eq:
+                if delta_read_eq == "":
+                    delta_read_eq = None
+                else:
+                    delta_read_eq = replace_read_tokens_with_rpn_read_ops(chipset,
+                                                                          oa_format,
+                                                                          delta_read_eq,
+                                                                          False) #delta offsets
+
+            if raw_read_eq and not delta_read_eq:
+                print_err("WARNING: Counter with raw equation but no delta report equation: MetricSet=\"" + \
+                          mdapi_set.get('ShortName') + "\" Metric=\"" + mdapi_counter.get('SymbolName') + \
+                          "(" + mdapi_counter.get('ShortName') + ")" + "\"")
+                # Media metric counters currently have no delta equation even
+                # though they have normalization equations that reference $Self
+                if "MEDIA" in apis or "IO" in apis:
+                    print_err("WARNING: -> Treating inconsistent media metric's 'raw' equation as a 'delta report' equation, but results should be double checked!")
+                    delta_read_eq = raw_read_eq
+                else:
+                    set.remove(counter)
+                    continue
+
+            # Some counters are sourced from register values that are
+            # not put into the OA reports. This is why some counters
+            # will have a delta equation but not a raw equation. These
+            # counters are typically only available in query mode. For
+            # this reason we put a particular availability value.
+            if delta_read_eq and not raw_read_eq:
+                assert availability == None
+                availability = "true $QueryMode &&"
+                raw_read_eq = delta_read_eq
+
+            # After replacing read tokens with RPN counter READ ops the raw and
+            # delta equations are expected to be identical so warn if that's
+            # not true...
+            if bool(raw_read_eq) ^ bool(delta_read_eq) or raw_read_eq != delta_read_eq:
+                print_err(("WARNING: Inconsistent raw and delta report equations for {0} :: {1} ({2}): " +
+                           "raw=\"{3}\" / \"{4}\" delta=\"{5}\" / \"{6}\" (SKIPPING)")
+                          .format(mdapi_set.get('ShortName'),
+                                  mdapi_counter.get('SymbolName'),
+                                  mdapi_counter.get('ShortName'),
+                                  str(raw_read_eq),
+                                  mdapi_counter.get('SnapshotReportReadEquation'),
+                                  str(delta_read_eq),
+                                  mdapi_counter.get('DeltaReportReadEquation')))
+                set.remove(counter)
+                continue
+
+            normalize_eq = fixup_equation(mdapi_counter.get('NormalizationEquation'))
+            if normalize_eq and normalize_eq == "":
+                normalize_eq = None
+
+            if normalize_eq:
+                # Some normalization equations are represented with macros such as
+                # 'GpuDuration' corresponding to:
+                #
+                #   "$Self 100 UMUL $GpuCoreClocks FDIV"
+                #
+                # We expand macros here so tools don't need to care about them...
+                #
+                equation = normalize_eq
+                equation = expand_macros(equation)
+                if raw_read_eq:
+                    equation = equation.replace('$Self', raw_read_eq)
+            else:
+                equation = delta_read_eq
+
+            if '$Self' in equation:
+                print_err("WARNING: Counter equation (\"" + equation + "\") with unexpanded $Self token: MetricSet=\"" + \
+                          mdapi_set.get('ShortName') + "\" Metric=\"" + mdapi_counter.get('SymbolName') + \
+                          "(" + mdapi_counter.get('ShortName') + ")" + "\" (SKIPPING)")
+                set.remove(counter)
+                continue
+
+            # $$CounterName vs $CounterName in an equation is intended to
+            # differentiate referencing the normalized or raw value of another
+            # counter.
+            #
+            # Since we are only keeping a single (normalized) equation for
+            # counters we only need one form, but we want to be careful to
+            # check if any equations really depend on the raw value of another
+            # counter so we can expand those variables now
+            #
+            tmp = equation
+            for token in tmp.split():
+                if token[0] == '$' and token[1] != '$':
+                    if token[1:] in normalization_equations:
+                        raw_eq = raw_equations[token[1:]]
+
+                        equation = equation.replace(token, raw_eq)
+                        #if token[1:] not in raw_equations:
+                        #   print_err("WARNING: Counter equation (\"" + equation + "\") references un-kept raw equation of another counter : MetricSet=\"" + \
+                        #             mdapi_set.get('ShortName') + "\" Metric=\"" + mdapi_counter.get('ShortName') + "\"")
+
+                    elif token[1:] not in raw_equations and not codegen.is_hw_var(token):
+                        print_err("Unknown variable name: \"" + token + "\" in equation \"" + equation + "\"")
+
+            symbol_name = counter.get('symbol_name')
+
+            # Make sure that every variable in the equation is a known sys_var or counter name
+            equation = equation.replace('$$', "$")
+            for token in equation.split():
+                if token[0] == '$':
+                    if token[1:] not in counters and not codegen.is_hw_var(token):
+                        print_err("WARNING: Counter equation (\"" + equation + "\") with unknown variable " + \
+                                  token + " (maybe skipped counter): MetricSet=\"" + mdapi_set.get('ShortName') + \
+                                  "\" Metric=\"" + mdapi_counter.get('SymbolName') + "(" + mdapi_counter.get('ShortName') + \
+                                  ")" + "\" (SKIPPING)")
+                        set.remove(counter)
+                        skip_counter = True
+                        break
+
+            if skip_counter:
+                continue
+
+            counter.set('equation', equation.strip())
+
+            if availability != None:
+                counter.set('availability', availability)
+
+            counters[symbol_name] = counter;
+            if normalize_eq:
+                normalization_equations[symbol_name] = normalize_eq
+            if raw_read_eq:
+                raw_equations[symbol_name] = raw_read_eq
+
+
+if args.dry_run:
+    sys.exit(0)
+
+# Merge in any custom meta data we have...
+if args.merge:
+    merge = et.parse(args.merge)
+    merge_metrics = merge.getroot()
+
+    for merge_set in merge.findall(".//set"):
+        pattern = ".//set[@symbol_name=\"" + merge_set.get('symbol_name') + "\"][@chipset=\"" + merge_set.get('chipset') + "\"]"
+        real_set = metrics.find(pattern)
+        if real_set is not None:
+            for set_attr in merge_set.items():
+                real_set.set(set_attr[0], set_attr[1])
+
+            for merge_elem in merge_set:
+                if merge_elem.tag == "counter":
+                    merge_counter = merge_elem
+                    pattern = "counter[@symbol_name=\"" + merge_counter.get('symbol_name') + "\"]"
+                    real_counter = real_set.find(pattern)
+                    if real_counter is not None:
+                        for counter_attr in merge_counter.items():
+                            real_counter.set(counter_attr[0], counter_attr[1])
+                    else:
+                        real_set.append(merge_counter)
+                        real_counter = merge_counter
+                else:
+                    real_set.append(merge_elem)
+
+    # For consistency + readability print everything manually...
+    merge_md5 = hashlib.md5(open("merge.xml", 'rb').read()).hexdigest()
+else:
+    merge_md5 = ""
+
+print ("<?xml version=\"1.0\"?>")
+print("<metrics version=\"" + str(int(time.time())) + "\" merge_md5=\"" + merge_md5 + "\">")
+for set in metrics.findall(".//set"):
+    print("  <set name=\"" + set.get('name') + "\"")
+    del set.attrib['name']
+    for attr in set.items():
+        print("       " + attr[0] + "=\"" + attr[1] + "\"")
+    print("       >")
+    for counter in set.findall("counter"):
+        print("    <counter name=\"" + counter.get('name') + "\"")
+        del counter.attrib['name']
+        for attr in counter.items():
+            if attr[0][:6] != "mdapi_":
+                print("             " + attr[0] + "=\"" + saxutils.escape(attr[1]) + "\"")
+        for attr in counter.items():
+            if attr[0][:6] == "mdapi_":
+                print("             " + attr[0] + "=\"" + saxutils.escape(attr[1]) + "\"")
+        print("             />")
+    for config in set.findall("register_config"):
+        if config.get('availability') != None:
+            print("    <register_config type=\"" + config.get('type') + "\"")
+            print("                     availability=\"" + saxutils.escape(config.get('availability')) + "\"")
+            print("                     priority=\"" + config.get('priority') + "\"")
+            print("                     >")
+        else:
+            print("    <register_config type=\"" + config.get('type') + "\">")
+        for reg in config.findall("register"):
+            addr = int(reg.get('address'), 16)
+
+            if 'registers' in chipsets[chipset][oa_format] and addr in chipsets[chipset][oa_format]['registers']:
+                reg_info = chipsets[chipset][oa_format]['registers'][addr]
+                comment = ' <!--' + reg_info['name'] + ' -->'
+            else:
+                comment = ''
+
+            print("        <register type=\"" + reg.get('type') + "\" address=\"" + reg.get('address') + "\" value=\"" + reg.get('value') + "\" />" + comment)
+        print("    </register_config>")
+    print("  </set>\n")
+print("</metrics>")
diff --git a/lib/xe/oa-configs/oa-equations-codegen.py b/lib/xe/oa-configs/oa-equations-codegen.py
new file mode 100644
index 000000000000..a4a00f46d924
--- /dev/null
+++ b/lib/xe/oa-configs/oa-equations-codegen.py
@@ -0,0 +1,261 @@
+#!/usr/bin/env python3
+#
+# SPDX-License-Identifier: MIT
+#
+# Copyright © 2024 Intel Corporation
+#
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+
+import argparse
+import os
+import sys
+import textwrap
+
+import codegen
+
+h = None
+c = None
+
+hashed_funcs = {}
+
+def data_type_to_ctype(ret_type):
+    if ret_type == "uint64":
+        return "uint64_t"
+    elif ret_type == "float":
+        return "double"
+    else:
+        raise Exception("Unhandled case for mapping \"" + ret_type + "\" to a C type")
+
+
+def output_counter_read(gen, set, counter):
+    if counter.read_hash in hashed_funcs:
+        return
+
+    c("\n")
+    c("/* {0} :: {1} */".format(set.name, counter.get('name')))
+
+    ret_type = counter.get('data_type')
+    ret_ctype = data_type_to_ctype(ret_type)
+    read_eq = counter.get('equation')
+
+    c(ret_ctype)
+    c(counter.read_sym + "(const struct intel_perf *perf,\n")
+    c.indent(len(counter.read_sym) + 1)
+    c("const struct intel_perf_metric_set *metric_set,\n")
+    c("uint64_t *accumulator)\n")
+    c.outdent(len(counter.read_sym) + 1)
+
+    c("{")
+    c.indent(4)
+
+    gen.output_rpn_equation_code(set, counter, read_eq)
+
+    c.outdent(4)
+    c("}")
+
+    hashed_funcs[counter.read_hash] = counter.read_sym
+
+
+def output_counter_read_definition(gen, set, counter):
+    if counter.read_hash in hashed_funcs:
+        h("#define %s \\" % counter.read_sym)
+        h.indent(4)
+        h("%s" % hashed_funcs[counter.read_hash])
+        h.outdent(4)
+    else:
+        ret_type = counter.get('data_type')
+        ret_ctype = data_type_to_ctype(ret_type)
+        read_eq = counter.get('equation')
+
+        h(ret_ctype)
+        h(counter.read_sym + "(const struct intel_perf *perf,\n")
+        h.indent(len(counter.read_sym) + 1)
+        h("const struct intel_perf_metric_set *metric_set,\n")
+        h("uint64_t *accumulator);\n")
+        h.outdent(len(counter.read_sym) + 1)
+
+        hashed_funcs[counter.read_hash] = counter.read_sym
+
+
+def output_counter_max(gen, set, counter):
+    max_eq = counter.get('max_equation')
+
+    if not max_eq or max_eq == "100":
+        return
+
+    if counter.max_hash in hashed_funcs:
+        return
+
+    c("\n")
+    c("/* {0} :: {1} */".format(set.name, counter.get('name')))
+
+    ret_type = counter.get('data_type')
+    ret_ctype = data_type_to_ctype(ret_type)
+
+    c(ret_ctype)
+    c(counter.max_sym + "(const struct intel_perf *perf,\n")
+    c.indent(len(counter.max_sym) + 1)
+    c("const struct intel_perf_metric_set *metric_set,\n")
+    c("uint64_t *accumulator)\n")
+    c.outdent(len(counter.max_sym) + 1)
+
+    c("{")
+    c.indent(4)
+
+    gen.output_rpn_equation_code(set, counter, max_eq)
+
+    c.outdent(4)
+    c("}")
+
+    hashed_funcs[counter.max_hash] = counter.max_sym
+
+
+def output_counter_max_definition(gen, set, counter):
+    max_eq = counter.get('max_equation')
+
+    if not max_eq or max_eq == "100":
+        return
+
+    if counter.max_hash in hashed_funcs:
+        h("#define %s \\" % counter.max_sym)
+        h.indent(4)
+        h("%s" % hashed_funcs[counter.max_hash])
+        h.outdent(4)
+        h("\n")
+    else:
+        ret_type = counter.get('data_type')
+        ret_ctype = data_type_to_ctype(ret_type)
+
+        h(ret_ctype)
+
+        h(counter.max_sym + "(const struct intel_perf *perf,")
+        h.indent(len(counter.max_sym) + 1)
+        h("const struct intel_perf_metric_set *metric_set,")
+        h("uint64_t *accumulator);")
+        h.outdent(len(counter.max_sym) + 1)
+        h("\n")
+
+        hashed_funcs[counter.max_hash] = counter.max_sym
+
+
+def generate_equations(args, gens):
+    global hashed_funcs
+
+    header_file = os.path.basename(args.header)
+    header_define = header_file.replace('.', '_').upper()
+
+    hashed_funcs = {}
+    c(textwrap.dedent("""\
+        #include <stdlib.h>
+        #include <string.h>
+
+        #include "xe/xe_oa.h"
+        #include "%s"
+
+        #define MIN(x, y) (((x) < (y)) ? (x) : (y))
+        #define MAX(a, b) (((a) > (b)) ? (a) : (b))
+
+        double
+        percentage_max_callback_float(const struct intel_perf *perf,
+                                      const struct intel_perf_metric_set *metric_set,
+                                      uint64_t *accumulator)
+        {
+           return 100;
+        }
+
+        uint64_t
+        percentage_max_callback_uint64(const struct intel_perf *perf,
+                                       const struct intel_perf_metric_set *metric_set,
+                                       uint64_t *accumulator)
+        {
+           return 100;
+        }
+
+        """ % os.path.basename(args.header)))
+
+    # Print out all equation functions.
+    for gen in gens:
+        for set in gen.sets:
+            for counter in set.counters:
+                output_counter_read(gen, set, counter)
+                output_counter_max(gen, set, counter)
+
+    hashed_funcs = {}
+    h(textwrap.dedent("""\
+        #ifndef __%s__
+        #define __%s__
+
+        #include <stddef.h>
+        #include <stdint.h>
+        #include <stdbool.h>
+
+        struct intel_perf;
+        struct intel_perf_metric_set;
+
+        double
+        percentage_max_callback_float(const struct intel_perf *perf,
+                                      const struct intel_perf_metric_set *metric_set,
+                                      uint64_t *accumulator);
+        uint64_t
+        percentage_max_callback_uint64(const struct intel_perf *perf,
+                                       const struct intel_perf_metric_set *metric_set,
+                                       uint64_t *accumulator);
+
+        """ % (header_define, header_define)))
+
+    # Print out all equation functions.
+    for gen in gens:
+        for set in gen.sets:
+            for counter in set.counters:
+                output_counter_read_definition(gen, set, counter)
+                output_counter_max_definition(gen, set, counter)
+
+    h(textwrap.dedent("""\
+
+        #endif /* __%s__ */
+        """ % header_define))
+
+
+def main():
+    global c
+    global h
+
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--header", help="Header file to write")
+    parser.add_argument("--code", help="C file to write")
+    parser.add_argument("xml_files", nargs='+', help="List of xml metrics files to process")
+
+    args = parser.parse_args()
+
+    # Note: either arg may == None
+    h = codegen.Codegen(args.header)
+    c = codegen.Codegen(args.code)
+
+    gens = []
+    for xml_file in args.xml_files:
+        gens.append(codegen.Gen(xml_file, c))
+
+    copyright = textwrap.dedent("""\
+        /* Autogenerated file, DO NOT EDIT manually! generated by {} */
+        // SPDX-License-Identifier: MIT
+        /*
+         * Copyright © 2024 Intel Corporation
+         */
+
+        """).format(os.path.basename(__file__))
+
+    h(copyright)
+    c(copyright)
+
+    generate_equations(args, gens)
+
+
+if __name__ == '__main__':
+    main()
diff --git a/lib/xe/oa-configs/oa-lnl.xml b/lib/xe/oa-configs/oa-lnl.xml
new file mode 100644
index 000000000000..3576ca2827fe
--- /dev/null
+++ b/lib/xe/oa-configs/oa-lnl.xml
@@ -0,0 +1,2799 @@
+<?xml version="1.0"?>
+<metrics version="1697079501" merge_md5="">
+  <set name="RenderBasic"
+       chipset="LNL"
+       symbol_name="RenderBasic"
+       underscore_name="render_basic"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="12f20772-0044-44ff-bcc0-d2bc252d140e"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000402" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000400" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000A0D" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x00000002" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000006" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x00000601" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x0000060F" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x0000060F" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x0000060F" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00000603" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00000603" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x00013068" value="0x00000603" />
+        <register type="OA" address="0x0001306C" value="0x00000000" />
+        <register type="OA" address="0x00013070" value="0x00000604" />
+        <register type="OA" address="0x00013074" value="0x00000000" />
+        <register type="OA" address="0x00013078" value="0x0000060B" />
+        <register type="OA" address="0x0001307C" value="0x00000000" />
+        <register type="OA" address="0x00013080" value="0x00000A13" />
+        <register type="OA" address="0x00013084" value="0x00000000" />
+        <register type="OA" address="0x00013088" value="0x00000A14" />
+        <register type="OA" address="0x0001308C" value="0x00000000" />
+        <register type="OA" address="0x00013090" value="0x00000A15" />
+        <register type="OA" address="0x00013094" value="0x00000000" />
+        <register type="OA" address="0x00013098" value="0x00000A16" />
+        <register type="OA" address="0x0001309C" value="0x00000000" />
+        <register type="OA" address="0x000130A0" value="0x00000606" />
+        <register type="OA" address="0x000130A4" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x00000005" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00000622" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x00000623" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x00000605" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x0000060F" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00000603" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00000600" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00000C10" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00000C18" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00000A0A" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00000A0B" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00004001" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00004001" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00004001" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00004000" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00004000" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00004000" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x0000600F" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x0000600F" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x0000600F" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00006010" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00006010" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00006010" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00005009" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00005009" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00005009" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00005013" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00005013" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00005013" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00005000" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00005000" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00005000" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00006603" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00006603" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00006603" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00006601" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00006601" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00006601" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00006606" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00006606" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00006606" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00006605" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00006605" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00006605" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00004404" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00004404" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00004404" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00004402" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00004402" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00004402" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00006611" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00006611" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00006611" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00006612" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00006612" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00006612" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00004400" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00004400" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00004400" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00004600" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00004600" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00004600" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00004601" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00004601" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00004601" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x00005C00" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x00005C00" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x00005C00" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x00005E04" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x00005E04" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x00005E04" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+        <register type="OA" address="0x000133B8" value="0x00004A00" />
+        <register type="OA" address="0x000133BC" value="0x00000000" />
+        <register type="OA" address="0x000135B8" value="0x00004A00" />
+        <register type="OA" address="0x000135BC" value="0x00000000" />
+        <register type="OA" address="0x000137B8" value="0x00004A00" />
+        <register type="OA" address="0x000137BC" value="0x00000000" />
+        <register type="OA" address="0x000133C0" value="0x00004A01" />
+        <register type="OA" address="0x000133C4" value="0x00000000" />
+        <register type="OA" address="0x000135C0" value="0x00004A01" />
+        <register type="OA" address="0x000135C4" value="0x00000000" />
+        <register type="OA" address="0x000137C0" value="0x00004A01" />
+        <register type="OA" address="0x000137C4" value="0x00000000" />
+        <register type="OA" address="0x000133C8" value="0x00005E0A" />
+        <register type="OA" address="0x000133CC" value="0x00000000" />
+        <register type="OA" address="0x000135C8" value="0x00005E0A" />
+        <register type="OA" address="0x000135CC" value="0x00000000" />
+        <register type="OA" address="0x000137C8" value="0x00005E0A" />
+        <register type="OA" address="0x000137CC" value="0x00000000" />
+        <register type="OA" address="0x000133D0" value="0x00005E0B" />
+        <register type="OA" address="0x000133D4" value="0x00000000" />
+        <register type="OA" address="0x000135D0" value="0x00005E0B" />
+        <register type="OA" address="0x000135D4" value="0x00000000" />
+        <register type="OA" address="0x000137D0" value="0x00005E0B" />
+        <register type="OA" address="0x000137D4" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00060000" />
+        <register type="FLEX" address="0x0000E558" value="0x00010050" />
+        <register type="FLEX" address="0x0000E658" value="0x00050060" />
+        <register type="FLEX" address="0x0000E758" value="0x00000010" />
+        <register type="FLEX" address="0x0000E65C" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="ComputeBasic"
+       chipset="LNL"
+       symbol_name="ComputeBasic"
+       underscore_name="compute_basic"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="72539be3-67d9-4101-b067-766b7811d2bb"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000622" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000623" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000605" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x0000060F" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000603" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x00000601" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x00000604" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x00000A0B" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x00000A0A" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00001804" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00001600" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x00013068" value="0x00000625" />
+        <register type="OA" address="0x0001306C" value="0x00000000" />
+        <register type="OA" address="0x00013070" value="0x00000626" />
+        <register type="OA" address="0x00013074" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x0000060B" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00000600" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x00000606" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x00000614" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x00000624" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00000A0E" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00000A0D" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00000A15" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00000A16" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00000A13" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00000A14" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00006002" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00006002" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00006002" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00006012" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00006012" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00006012" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00006011" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00006011" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00006011" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x0000600F" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x0000600F" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x0000600F" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00006010" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00006010" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00006010" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00006015" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00006015" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00006015" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00004600" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00004600" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00004600" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00004601" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00004601" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00004601" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00005E0A" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00005E0A" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00005E0A" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00005E0B" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00005E0B" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00005E0B" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00005E00" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00005E00" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00005E00" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00005E01" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00005E01" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00005E01" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00005E04" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00005E04" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00005E04" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00005C00" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00005C00" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00005C00" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00005009" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00005009" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00005009" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00005008" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00005008" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00005008" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00005000" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00005000" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00005000" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00005010" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00005010" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00005010" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x00005013" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x00005013" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x00005013" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x00005012" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x00005012" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x00005012" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="DepthProfile"
+       chipset="LNL"
+       symbol_name="DepthProfile"
+       underscore_name="depth_profile"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="cae0b2ca-c52a-4111-b8bf-5af070677d57"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00004C23" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00004C23" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00004C23" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00004C22" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00004C22" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00004C22" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00004C04" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00004C04" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00004C04" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00004C02" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00004C02" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00004C02" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00004C05" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00004C05" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00004C05" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00004C03" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00004C03" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00004C03" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00004C01" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00004C01" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00004C01" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00004C00" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00004C00" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00004C00" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00004C24" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00004C24" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00004C24" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00004C20" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00004C20" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00004C20" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00004C21" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00004C21" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00004C21" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00004003" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00004003" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00004003" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00004004" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00004004" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00004004" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00004005" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00004005" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00004005" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00004006" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00004006" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00004006" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00004A02" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00004A02" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00004A02" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00006801" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00006801" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00006801" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00006802" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00006802" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00006802" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x00005E05" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x00005E05" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x00005E05" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="DeviceCacheProfile"
+       chipset="LNL"
+       symbol_name="DeviceCacheProfile"
+       underscore_name="device_cache_profile"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="70cc56cf-3a37-4f6c-8911-4455fe441b2a"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00006017" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00006017" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00006017" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00006019" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00006019" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00006019" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00006016" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00006016" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00006016" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00006018" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00006018" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00006018" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x0000600B" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x0000600B" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x0000600B" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x0000600C" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x0000600C" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x0000600C" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00006008" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00006008" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00006008" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00006007" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00006007" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00006007" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x0000601C" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x0000601C" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x0000601C" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x0000601A" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x0000601A" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x0000601A" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x0000601B" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x0000601B" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x0000601B" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x0000600A" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x0000600A" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x0000600A" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00006009" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00006009" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00006009" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x0000600D" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x0000600D" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x0000600D" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x0000600E" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x0000600E" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x0000600E" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00006014" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00006014" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00006014" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00006000" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00006000" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00006000" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00006001" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00006001" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00006001" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x00006013" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x00006013" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x00006013" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x00006002" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x00006002" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x00006002" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+        <register type="OA" address="0x000133B8" value="0x00006012" />
+        <register type="OA" address="0x000133BC" value="0x00000000" />
+        <register type="OA" address="0x000135B8" value="0x00006012" />
+        <register type="OA" address="0x000135BC" value="0x00000000" />
+        <register type="OA" address="0x000137B8" value="0x00006012" />
+        <register type="OA" address="0x000137BC" value="0x00000000" />
+        <register type="OA" address="0x000133C0" value="0x00006011" />
+        <register type="OA" address="0x000133C4" value="0x00000000" />
+        <register type="OA" address="0x000135C0" value="0x00006011" />
+        <register type="OA" address="0x000135C4" value="0x00000000" />
+        <register type="OA" address="0x000137C0" value="0x00006011" />
+        <register type="OA" address="0x000137C4" value="0x00000000" />
+        <register type="OA" address="0x000133C8" value="0x0000600F" />
+        <register type="OA" address="0x000133CC" value="0x00000000" />
+        <register type="OA" address="0x000135C8" value="0x0000600F" />
+        <register type="OA" address="0x000135CC" value="0x00000000" />
+        <register type="OA" address="0x000137C8" value="0x0000600F" />
+        <register type="OA" address="0x000137CC" value="0x00000000" />
+        <register type="OA" address="0x000133D0" value="0x00006015" />
+        <register type="OA" address="0x000133D4" value="0x00000000" />
+        <register type="OA" address="0x000135D0" value="0x00006015" />
+        <register type="OA" address="0x000135D4" value="0x00000000" />
+        <register type="OA" address="0x000137D0" value="0x00006015" />
+        <register type="OA" address="0x000137D4" value="0x00000000" />
+        <register type="OA" address="0x000133D8" value="0x00006010" />
+        <register type="OA" address="0x000133DC" value="0x00000000" />
+        <register type="OA" address="0x000135D8" value="0x00006010" />
+        <register type="OA" address="0x000135DC" value="0x00000000" />
+        <register type="OA" address="0x000137D8" value="0x00006010" />
+        <register type="OA" address="0x000137DC" value="0x00000000" />
+        <register type="OA" address="0x000133E0" value="0x00005E00" />
+        <register type="OA" address="0x000133E4" value="0x00000000" />
+        <register type="OA" address="0x000135E0" value="0x00005E00" />
+        <register type="OA" address="0x000135E4" value="0x00000000" />
+        <register type="OA" address="0x000137E0" value="0x00005E00" />
+        <register type="OA" address="0x000137E4" value="0x00000000" />
+        <register type="OA" address="0x000133E8" value="0x00005E01" />
+        <register type="OA" address="0x000133EC" value="0x00000000" />
+        <register type="OA" address="0x000135E8" value="0x00005E01" />
+        <register type="OA" address="0x000135EC" value="0x00000000" />
+        <register type="OA" address="0x000137E8" value="0x00005E01" />
+        <register type="OA" address="0x000137EC" value="0x00000000" />
+        <register type="OA" address="0x000133F0" value="0x00005E02" />
+        <register type="OA" address="0x000133F4" value="0x00000000" />
+        <register type="OA" address="0x000135F0" value="0x00005E02" />
+        <register type="OA" address="0x000135F4" value="0x00000000" />
+        <register type="OA" address="0x000137F0" value="0x00005E02" />
+        <register type="OA" address="0x000137F4" value="0x00000000" />
+        <register type="OA" address="0x000133F8" value="0x00005E03" />
+        <register type="OA" address="0x000133FC" value="0x00000000" />
+        <register type="OA" address="0x000135F8" value="0x00005E03" />
+        <register type="OA" address="0x000135FC" value="0x00000000" />
+        <register type="OA" address="0x000137F8" value="0x00005E03" />
+        <register type="OA" address="0x000137FC" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="MemoryProfile"
+       chipset="LNL"
+       symbol_name="MemoryProfile"
+       underscore_name="memory_profile"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="01ffd51d-a6d6-4ff4-93d0-619f04c3a547"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000A0B" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000A13" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000A14" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x00000A0A" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000A11" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x00000A10" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x00000A01" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x00000A06" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x00000A07" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00000A04" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00000A05" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x00000A0C" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00000A12" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x00000A0E" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x00000A17" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x00000A0D" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00000A15" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00000A16" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00000A02" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00000A03" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00000A00" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00000A0F" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00004600" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00004600" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00004600" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00004601" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00004601" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00004601" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00005E08" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00005E08" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00005E08" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00005E09" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00005E09" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00005E09" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00005E06" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00005E06" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00005E06" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00005E07" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00005E07" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00005E07" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00005E0A" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00005E0A" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00005E0A" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00005E0B" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00005E0B" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00005E0B" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00005E00" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00005E00" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00005E00" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00005E01" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00005E01" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00005E01" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00005E04" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00005E04" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00005E04" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00005C00" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00005C00" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00005C00" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00006002" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00006002" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00006002" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00006014" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00006014" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00006014" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00006012" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00006012" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00006012" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00006000" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00006000" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00006000" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00006011" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00006011" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00006011" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00006001" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00006001" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00006001" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x0000600F" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x0000600F" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x0000600F" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x00006015" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x00006015" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x00006015" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+        <register type="OA" address="0x000133B8" value="0x00006013" />
+        <register type="OA" address="0x000133BC" value="0x00000000" />
+        <register type="OA" address="0x000135B8" value="0x00006013" />
+        <register type="OA" address="0x000135BC" value="0x00000000" />
+        <register type="OA" address="0x000137B8" value="0x00006013" />
+        <register type="OA" address="0x000137BC" value="0x00000000" />
+        <register type="OA" address="0x000133C0" value="0x00006010" />
+        <register type="OA" address="0x000133C4" value="0x00000000" />
+        <register type="OA" address="0x000135C0" value="0x00006010" />
+        <register type="OA" address="0x000135C4" value="0x00000000" />
+        <register type="OA" address="0x000137C0" value="0x00006010" />
+        <register type="OA" address="0x000137C4" value="0x00000000" />
+        <register type="OA" address="0x000133C8" value="0x00006E00" />
+        <register type="OA" address="0x000133CC" value="0x00000000" />
+        <register type="OA" address="0x000135C8" value="0x00006E00" />
+        <register type="OA" address="0x000135CC" value="0x00000000" />
+        <register type="OA" address="0x000137C8" value="0x00006E00" />
+        <register type="OA" address="0x000137CC" value="0x00000000" />
+        <register type="OA" address="0x000133D0" value="0x00006E02" />
+        <register type="OA" address="0x000133D4" value="0x00000000" />
+        <register type="OA" address="0x000135D0" value="0x00006E02" />
+        <register type="OA" address="0x000135D4" value="0x00000000" />
+        <register type="OA" address="0x000137D0" value="0x00006E02" />
+        <register type="OA" address="0x000137D4" value="0x00000000" />
+        <register type="OA" address="0x000133D8" value="0x00006E01" />
+        <register type="OA" address="0x000133DC" value="0x00000000" />
+        <register type="OA" address="0x000135D8" value="0x00006E01" />
+        <register type="OA" address="0x000135DC" value="0x00000000" />
+        <register type="OA" address="0x000137D8" value="0x00006E01" />
+        <register type="OA" address="0x000137DC" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="RenderPipeProfile"
+       chipset="LNL"
+       symbol_name="RenderPipeProfile"
+       underscore_name="render_pipe_profile"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="6791470f-f1e6-4f77-9013-bcb0c4be6f57"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000401" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000007" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000003" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x00000001" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000004" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x00001803" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00001800" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x00001605" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x00001603" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x00001601" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00001604" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00001602" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00001606" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00001807" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00001808" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00006600" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00006600" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00006600" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00006604" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00006604" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00006604" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00006602" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00006602" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00006602" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00004401" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00004401" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00004401" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00006610" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00006610" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00006610" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00004407" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00004407" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00004407" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00004406" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00004406" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00004406" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00004403" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00004403" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00004403" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00004201" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00004201" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00004201" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00004002" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00004002" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00004002" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00004202" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00004202" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00004202" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00004200" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00004200" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00004200" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00004007" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00004007" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00004007" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00004008" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00004008" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00004008" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00004E04" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00004E04" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00004E04" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00004E03" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00004E03" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00004E03" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00006800" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00006800" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00006800" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00006803" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00006803" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00006803" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x00006804" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x00006804" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x00006804" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x00005011" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x00005011" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x00005011" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+        <register type="OA" address="0x000133B8" value="0x00004E00" />
+        <register type="OA" address="0x000133BC" value="0x00000000" />
+        <register type="OA" address="0x000135B8" value="0x00004E00" />
+        <register type="OA" address="0x000135BC" value="0x00000000" />
+        <register type="OA" address="0x000137B8" value="0x00004E00" />
+        <register type="OA" address="0x000137BC" value="0x00000000" />
+        <register type="OA" address="0x000133C0" value="0x00004E01" />
+        <register type="OA" address="0x000133C4" value="0x00000000" />
+        <register type="OA" address="0x000135C0" value="0x00004E01" />
+        <register type="OA" address="0x000135C4" value="0x00000000" />
+        <register type="OA" address="0x000137C0" value="0x00004E01" />
+        <register type="OA" address="0x000137C4" value="0x00000000" />
+        <register type="OA" address="0x000133C8" value="0x00004E02" />
+        <register type="OA" address="0x000133CC" value="0x00000000" />
+        <register type="OA" address="0x000135C8" value="0x00004E02" />
+        <register type="OA" address="0x000135CC" value="0x00000000" />
+        <register type="OA" address="0x000137C8" value="0x00004E02" />
+        <register type="OA" address="0x000137CC" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="RTProfile"
+       chipset="LNL"
+       symbol_name="RTProfile"
+       underscore_name="rt_profile"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="d66ce633-4ae5-4de2-8678-9705adfd45bc"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000C03" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000C04" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000C00" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x00000C1A" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000C2F" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x00000C1D" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x00000C2A" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x0000060F" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x0000060F" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x0000060F" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00000603" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x00013068" value="0x00000603" />
+        <register type="OA" address="0x0001306C" value="0x00000000" />
+        <register type="OA" address="0x00013070" value="0x00000603" />
+        <register type="OA" address="0x00013074" value="0x00000000" />
+        <register type="OA" address="0x00013078" value="0x00000604" />
+        <register type="OA" address="0x0001307C" value="0x00000000" />
+        <register type="OA" address="0x00013080" value="0x00000C10" />
+        <register type="OA" address="0x00013084" value="0x00000000" />
+        <register type="OA" address="0x00013088" value="0x00000C18" />
+        <register type="OA" address="0x0001308C" value="0x00000000" />
+        <register type="OA" address="0x00013090" value="0x00000A08" />
+        <register type="OA" address="0x00013094" value="0x00000000" />
+        <register type="OA" address="0x00013098" value="0x00000A09" />
+        <register type="OA" address="0x0001309C" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x00000C2D" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00000C02" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x00000C19" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x00000C01" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x00000C2E" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00000C30" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00000C2B" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00000C20" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00000C2C" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00000C28" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00000C29" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E558" value="0x000D00C0" />
+        <register type="FLEX" address="0x0000E658" value="0x000C00E0" />
+        <register type="FLEX" address="0x0000E758" value="0x000E00D0" />
+        <register type="FLEX" address="0x0000E45C" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="VectorEngineProfile"
+       chipset="LNL"
+       symbol_name="VectorEngineProfile"
+       underscore_name="vector_engine_profile"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="e7338926-568c-4424-bc44-f90318a6b472"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000622" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000623" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000605" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x0000060F" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000603" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x0000060E" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x0000060A" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x00000609" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x00000601" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00000616" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00000615" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x00013068" value="0x00000619" />
+        <register type="OA" address="0x0001306C" value="0x00000000" />
+        <register type="OA" address="0x00013070" value="0x00000618" />
+        <register type="OA" address="0x00013074" value="0x00000000" />
+        <register type="OA" address="0x00013078" value="0x00000617" />
+        <register type="OA" address="0x0001307C" value="0x00000000" />
+        <register type="OA" address="0x00013080" value="0x0000060B" />
+        <register type="OA" address="0x00013084" value="0x00000000" />
+        <register type="OA" address="0x00013088" value="0x00000624" />
+        <register type="OA" address="0x0001308C" value="0x00000000" />
+        <register type="OA" address="0x00013090" value="0x00000625" />
+        <register type="OA" address="0x00013094" value="0x00000000" />
+        <register type="OA" address="0x00013098" value="0x00000626" />
+        <register type="OA" address="0x0001309C" value="0x00000000" />
+        <register type="OA" address="0x000130A0" value="0x00000604" />
+        <register type="OA" address="0x000130A4" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x00000614" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00000608" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x00000607" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x00000602" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x00000611" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00000610" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00000612" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00000629" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x0000060C" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x0000060D" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00000613" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00006002" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00006002" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00006002" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00006014" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00006014" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00006014" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00006012" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00006012" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00006012" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00006000" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00006000" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00006000" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00006011" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00006011" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00006011" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00006001" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00006001" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00006001" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x0000600F" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x0000600F" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x0000600F" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00006015" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00006015" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00006015" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00006013" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00006013" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00006013" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00006010" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00006010" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00006010" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00005009" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00005009" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00005009" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00005008" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00005008" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00005008" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00005013" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00005013" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00005013" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00005012" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00005012" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00005012" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00004600" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00004600" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00004600" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00004601" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00004601" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00004601" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00005E0A" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00005E0A" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00005E0A" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00005E0B" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00005E0B" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00005E0B" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x00005C00" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x00005C00" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x00005C00" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x00005E04" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x00005E04" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x00005E04" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00000000" />
+        <register type="FLEX" address="0x0000E558" value="0x00000000" />
+        <register type="FLEX" address="0x0000E658" value="0x00000000" />
+        <register type="FLEX" address="0x0000E758" value="0x00000000" />
+        <register type="FLEX" address="0x0000E45C" value="0x00000000" />
+        <register type="FLEX" address="0x0000E65C" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="VectorEngineStalls"
+       chipset="LNL"
+       symbol_name="VectorEngineStalls"
+       underscore_name="vector_engine_stalls"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="4ccd6535-fb9a-440f-b0f5-882879dc4cb0"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x0000061D" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x0000061B" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000620" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x0000061A" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000621" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x00000600" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x00000606" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x00000604" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x00000624" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00000625" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00000626" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x0000061F" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00000628" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x0000061C" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x0000061E" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x00001601" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00001604" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00001602" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00001606" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00001807" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00001808" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00000605" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00000000" />
+        <register type="FLEX" address="0x0000E558" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="TestOa"
+       chipset="LNL"
+       symbol_name="TestOa"
+       underscore_name="test_oa"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="24c33f2c-f8d9-40d9-b2db-64e863b4d625"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001801" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001802" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00003E00" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00005A00" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00005A00" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00005A00" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004405" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004405" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004405" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006805" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006805" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006805" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00007E00" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00007E00" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00007E00" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="MetricSet1"
+       chipset="LNL"
+       symbol_name="MetricSet1"
+       underscore_name="metric_set1"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="0af24f48-05bc-467b-b561-33dec252e651"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00000001" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00000002" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000003" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000004" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000005" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x00000006" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000007" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x00000400" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x00000401" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x00000402" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x00000600" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00000601" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00000602" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x00013068" value="0x00000603" />
+        <register type="OA" address="0x0001306C" value="0x00000000" />
+        <register type="OA" address="0x00013070" value="0x00000604" />
+        <register type="OA" address="0x00013074" value="0x00000000" />
+        <register type="OA" address="0x00013078" value="0x00000605" />
+        <register type="OA" address="0x0001307C" value="0x00000000" />
+        <register type="OA" address="0x00013080" value="0x00000606" />
+        <register type="OA" address="0x00013084" value="0x00000000" />
+        <register type="OA" address="0x00013088" value="0x00000607" />
+        <register type="OA" address="0x0001308C" value="0x00000000" />
+        <register type="OA" address="0x00013090" value="0x00000608" />
+        <register type="OA" address="0x00013094" value="0x00000000" />
+        <register type="OA" address="0x00013098" value="0x00000609" />
+        <register type="OA" address="0x0001309C" value="0x00000000" />
+        <register type="OA" address="0x000130A0" value="0x0000060A" />
+        <register type="OA" address="0x000130A4" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x0000060B" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x0000060C" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x0000060D" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x0000060E" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x0000060F" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00000610" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00000611" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00000612" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00000613" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00000614" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00000615" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00004000" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00004000" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00004000" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004001" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004001" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004001" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00004002" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00004002" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00004002" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00004003" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00004003" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00004003" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00004004" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00004004" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00004004" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00004005" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00004005" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00004005" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00004006" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00004006" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00004006" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00004007" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00004007" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00004007" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00004008" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00004008" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00004008" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00004200" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00004200" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00004200" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00004201" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00004201" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00004201" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00004202" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00004202" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00004202" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00004400" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00004400" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00004400" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00004401" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00004401" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00004401" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00004402" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00004402" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00004402" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00004403" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00004403" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00004403" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00004404" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00004404" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00004404" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00004405" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00004405" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00004405" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00004406" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00004406" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00004406" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00004407" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00004407" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00004407" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00004600" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00004600" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00004600" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x00004601" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x00004601" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x00004601" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x00004A00" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x00004A00" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x00004A00" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+        <register type="OA" address="0x000133B8" value="0x00004A01" />
+        <register type="OA" address="0x000133BC" value="0x00000000" />
+        <register type="OA" address="0x000135B8" value="0x00004A01" />
+        <register type="OA" address="0x000135BC" value="0x00000000" />
+        <register type="OA" address="0x000137B8" value="0x00004A01" />
+        <register type="OA" address="0x000137BC" value="0x00000000" />
+        <register type="OA" address="0x000133C0" value="0x00004A02" />
+        <register type="OA" address="0x000133C4" value="0x00000000" />
+        <register type="OA" address="0x000135C0" value="0x00004A02" />
+        <register type="OA" address="0x000135C4" value="0x00000000" />
+        <register type="OA" address="0x000137C0" value="0x00004A02" />
+        <register type="OA" address="0x000137C4" value="0x00000000" />
+        <register type="OA" address="0x000133C8" value="0x00004C00" />
+        <register type="OA" address="0x000133CC" value="0x00000000" />
+        <register type="OA" address="0x000135C8" value="0x00004C00" />
+        <register type="OA" address="0x000135CC" value="0x00000000" />
+        <register type="OA" address="0x000137C8" value="0x00004C00" />
+        <register type="OA" address="0x000137CC" value="0x00000000" />
+        <register type="OA" address="0x000133D0" value="0x00004C01" />
+        <register type="OA" address="0x000133D4" value="0x00000000" />
+        <register type="OA" address="0x000135D0" value="0x00004C01" />
+        <register type="OA" address="0x000135D4" value="0x00000000" />
+        <register type="OA" address="0x000137D0" value="0x00004C01" />
+        <register type="OA" address="0x000137D4" value="0x00000000" />
+        <register type="OA" address="0x000133D8" value="0x00004C02" />
+        <register type="OA" address="0x000133DC" value="0x00000000" />
+        <register type="OA" address="0x000135D8" value="0x00004C02" />
+        <register type="OA" address="0x000135DC" value="0x00000000" />
+        <register type="OA" address="0x000137D8" value="0x00004C02" />
+        <register type="OA" address="0x000137DC" value="0x00000000" />
+        <register type="OA" address="0x000133E0" value="0x00004C03" />
+        <register type="OA" address="0x000133E4" value="0x00000000" />
+        <register type="OA" address="0x000135E0" value="0x00004C03" />
+        <register type="OA" address="0x000135E4" value="0x00000000" />
+        <register type="OA" address="0x000137E0" value="0x00004C03" />
+        <register type="OA" address="0x000137E4" value="0x00000000" />
+        <register type="OA" address="0x000133E8" value="0x00004C04" />
+        <register type="OA" address="0x000133EC" value="0x00000000" />
+        <register type="OA" address="0x000135E8" value="0x00004C04" />
+        <register type="OA" address="0x000135EC" value="0x00000000" />
+        <register type="OA" address="0x000137E8" value="0x00004C04" />
+        <register type="OA" address="0x000137EC" value="0x00000000" />
+        <register type="OA" address="0x000133F0" value="0x00004C05" />
+        <register type="OA" address="0x000133F4" value="0x00000000" />
+        <register type="OA" address="0x000135F0" value="0x00004C05" />
+        <register type="OA" address="0x000135F4" value="0x00000000" />
+        <register type="OA" address="0x000137F0" value="0x00004C05" />
+        <register type="OA" address="0x000137F4" value="0x00000000" />
+        <register type="OA" address="0x000133F8" value="0x00004C20" />
+        <register type="OA" address="0x000133FC" value="0x00000000" />
+        <register type="OA" address="0x000135F8" value="0x00004C20" />
+        <register type="OA" address="0x000135FC" value="0x00000000" />
+        <register type="OA" address="0x000137F8" value="0x00004C20" />
+        <register type="OA" address="0x000137FC" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="MetricSet2"
+       chipset="LNL"
+       symbol_name="MetricSet2"
+       underscore_name="metric_set2"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="914ad901-832a-4ccd-a21e-ddc7690ed213"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00000616" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00000617" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000618" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000619" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x0000061A" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x0000061B" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x0000061C" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x0000061D" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x0000061E" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x0000061F" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x00000620" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00000621" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00000622" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x00013068" value="0x00000623" />
+        <register type="OA" address="0x0001306C" value="0x00000000" />
+        <register type="OA" address="0x00013070" value="0x00000624" />
+        <register type="OA" address="0x00013074" value="0x00000000" />
+        <register type="OA" address="0x00013078" value="0x00000625" />
+        <register type="OA" address="0x0001307C" value="0x00000000" />
+        <register type="OA" address="0x00013080" value="0x00000626" />
+        <register type="OA" address="0x00013084" value="0x00000000" />
+        <register type="OA" address="0x00013088" value="0x00000628" />
+        <register type="OA" address="0x0001308C" value="0x00000000" />
+        <register type="OA" address="0x00013090" value="0x00000629" />
+        <register type="OA" address="0x00013094" value="0x00000000" />
+        <register type="OA" address="0x00013098" value="0x00000A00" />
+        <register type="OA" address="0x0001309C" value="0x00000000" />
+        <register type="OA" address="0x000130A0" value="0x00000A01" />
+        <register type="OA" address="0x000130A4" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x00000A02" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00000A03" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x00000A04" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x00000A05" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x00000A06" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00000A07" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00000A08" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00000A09" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00000A0A" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00000A0B" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00000A0C" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00004C21" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00004C21" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00004C21" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00004C22" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00004C22" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00004C22" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00004C23" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00004C23" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00004C23" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00004C24" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00004C24" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00004C24" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00004E00" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00004E00" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00004E00" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00004E01" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00004E01" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00004E01" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00004E02" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00004E02" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00004E02" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00004E03" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00004E03" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00004E03" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00004E04" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00004E04" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00004E04" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00005000" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00005000" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00005000" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00005008" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00005008" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00005008" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00005009" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00005009" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00005009" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00005010" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00005010" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00005010" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00005011" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00005011" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00005011" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00005012" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00005012" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00005012" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00005013" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00005013" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00005013" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00005A00" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00005A00" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00005A00" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00005C00" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00005C00" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00005C00" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00005E00" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00005E00" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00005E00" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00005E01" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00005E01" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00005E01" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x00005E02" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x00005E02" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x00005E02" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x00005E03" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x00005E03" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x00005E03" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x00005E04" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x00005E04" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x00005E04" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+        <register type="OA" address="0x000133B8" value="0x00005E05" />
+        <register type="OA" address="0x000133BC" value="0x00000000" />
+        <register type="OA" address="0x000135B8" value="0x00005E05" />
+        <register type="OA" address="0x000135BC" value="0x00000000" />
+        <register type="OA" address="0x000137B8" value="0x00005E05" />
+        <register type="OA" address="0x000137BC" value="0x00000000" />
+        <register type="OA" address="0x000133C0" value="0x00005E06" />
+        <register type="OA" address="0x000133C4" value="0x00000000" />
+        <register type="OA" address="0x000135C0" value="0x00005E06" />
+        <register type="OA" address="0x000135C4" value="0x00000000" />
+        <register type="OA" address="0x000137C0" value="0x00005E06" />
+        <register type="OA" address="0x000137C4" value="0x00000000" />
+        <register type="OA" address="0x000133C8" value="0x00005E07" />
+        <register type="OA" address="0x000133CC" value="0x00000000" />
+        <register type="OA" address="0x000135C8" value="0x00005E07" />
+        <register type="OA" address="0x000135CC" value="0x00000000" />
+        <register type="OA" address="0x000137C8" value="0x00005E07" />
+        <register type="OA" address="0x000137CC" value="0x00000000" />
+        <register type="OA" address="0x000133D0" value="0x00005E08" />
+        <register type="OA" address="0x000133D4" value="0x00000000" />
+        <register type="OA" address="0x000135D0" value="0x00005E08" />
+        <register type="OA" address="0x000135D4" value="0x00000000" />
+        <register type="OA" address="0x000137D0" value="0x00005E08" />
+        <register type="OA" address="0x000137D4" value="0x00000000" />
+        <register type="OA" address="0x000133D8" value="0x00005E09" />
+        <register type="OA" address="0x000133DC" value="0x00000000" />
+        <register type="OA" address="0x000135D8" value="0x00005E09" />
+        <register type="OA" address="0x000135DC" value="0x00000000" />
+        <register type="OA" address="0x000137D8" value="0x00005E09" />
+        <register type="OA" address="0x000137DC" value="0x00000000" />
+        <register type="OA" address="0x000133E0" value="0x00005E0A" />
+        <register type="OA" address="0x000133E4" value="0x00000000" />
+        <register type="OA" address="0x000135E0" value="0x00005E0A" />
+        <register type="OA" address="0x000135E4" value="0x00000000" />
+        <register type="OA" address="0x000137E0" value="0x00005E0A" />
+        <register type="OA" address="0x000137E4" value="0x00000000" />
+        <register type="OA" address="0x000133E8" value="0x00005E0B" />
+        <register type="OA" address="0x000133EC" value="0x00000000" />
+        <register type="OA" address="0x000135E8" value="0x00005E0B" />
+        <register type="OA" address="0x000135EC" value="0x00000000" />
+        <register type="OA" address="0x000137E8" value="0x00005E0B" />
+        <register type="OA" address="0x000137EC" value="0x00000000" />
+        <register type="OA" address="0x000133F0" value="0x00006000" />
+        <register type="OA" address="0x000133F4" value="0x00000000" />
+        <register type="OA" address="0x000135F0" value="0x00006000" />
+        <register type="OA" address="0x000135F4" value="0x00000000" />
+        <register type="OA" address="0x000137F0" value="0x00006000" />
+        <register type="OA" address="0x000137F4" value="0x00000000" />
+        <register type="OA" address="0x000133F8" value="0x00006001" />
+        <register type="OA" address="0x000133FC" value="0x00000000" />
+        <register type="OA" address="0x000135F8" value="0x00006001" />
+        <register type="OA" address="0x000135FC" value="0x00000000" />
+        <register type="OA" address="0x000137F8" value="0x00006001" />
+        <register type="OA" address="0x000137FC" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="MetricSet3"
+       chipset="LNL"
+       symbol_name="MetricSet3"
+       underscore_name="metric_set3"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="3b3c9f55-e34b-423d-8c05-7b1af03b6685"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00000A0D" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00000A0E" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00000A0F" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00000A10" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00000A11" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x00000A12" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00000A13" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x00000A14" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x00000A15" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x00000A16" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x00000A17" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00000C00" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00000C01" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x00013068" value="0x00000C02" />
+        <register type="OA" address="0x0001306C" value="0x00000000" />
+        <register type="OA" address="0x00013070" value="0x00000C03" />
+        <register type="OA" address="0x00013074" value="0x00000000" />
+        <register type="OA" address="0x00013078" value="0x00000C04" />
+        <register type="OA" address="0x0001307C" value="0x00000000" />
+        <register type="OA" address="0x00013080" value="0x00000C10" />
+        <register type="OA" address="0x00013084" value="0x00000000" />
+        <register type="OA" address="0x00013088" value="0x00000C18" />
+        <register type="OA" address="0x0001308C" value="0x00000000" />
+        <register type="OA" address="0x00013090" value="0x00000C19" />
+        <register type="OA" address="0x00013094" value="0x00000000" />
+        <register type="OA" address="0x00013098" value="0x00000C1A" />
+        <register type="OA" address="0x0001309C" value="0x00000000" />
+        <register type="OA" address="0x000130A0" value="0x00000C1D" />
+        <register type="OA" address="0x000130A4" value="0x00000000" />
+        <register type="OA" address="0x000130A8" value="0x00000C20" />
+        <register type="OA" address="0x000130AC" value="0x00000000" />
+        <register type="OA" address="0x000130B0" value="0x00000C28" />
+        <register type="OA" address="0x000130B4" value="0x00000000" />
+        <register type="OA" address="0x000130B8" value="0x00000C29" />
+        <register type="OA" address="0x000130BC" value="0x00000000" />
+        <register type="OA" address="0x000130C0" value="0x00000C2A" />
+        <register type="OA" address="0x000130C4" value="0x00000000" />
+        <register type="OA" address="0x000130C8" value="0x00000C2B" />
+        <register type="OA" address="0x000130CC" value="0x00000000" />
+        <register type="OA" address="0x000130D0" value="0x00000C2C" />
+        <register type="OA" address="0x000130D4" value="0x00000000" />
+        <register type="OA" address="0x000130D8" value="0x00000C2D" />
+        <register type="OA" address="0x000130DC" value="0x00000000" />
+        <register type="OA" address="0x000130E0" value="0x00000C2E" />
+        <register type="OA" address="0x000130E4" value="0x00000000" />
+        <register type="OA" address="0x000130E8" value="0x00000C2F" />
+        <register type="OA" address="0x000130EC" value="0x00000000" />
+        <register type="OA" address="0x000130F0" value="0x00000C30" />
+        <register type="OA" address="0x000130F4" value="0x00000000" />
+        <register type="OA" address="0x000130F8" value="0x00001600" />
+        <register type="OA" address="0x000130FC" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00006002" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00006002" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00006002" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00006007" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00006007" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00006007" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006008" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006008" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006008" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00006009" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00006009" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00006009" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x0000600A" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x0000600A" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x0000600A" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x0000600B" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x0000600B" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x0000600B" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x0000600C" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x0000600C" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x0000600C" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x0000600D" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x0000600D" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x0000600D" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x0000600E" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x0000600E" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x0000600E" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x0000600F" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x0000600F" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x0000600F" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00006010" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00006010" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00006010" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00006011" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00006011" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00006011" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00006012" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00006012" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00006012" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00006013" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00006013" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00006013" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00006014" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00006014" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00006014" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+        <register type="OA" address="0x00013378" value="0x00006015" />
+        <register type="OA" address="0x0001337C" value="0x00000000" />
+        <register type="OA" address="0x00013578" value="0x00006015" />
+        <register type="OA" address="0x0001357C" value="0x00000000" />
+        <register type="OA" address="0x00013778" value="0x00006015" />
+        <register type="OA" address="0x0001377C" value="0x00000000" />
+        <register type="OA" address="0x00013380" value="0x00006016" />
+        <register type="OA" address="0x00013384" value="0x00000000" />
+        <register type="OA" address="0x00013580" value="0x00006016" />
+        <register type="OA" address="0x00013584" value="0x00000000" />
+        <register type="OA" address="0x00013780" value="0x00006016" />
+        <register type="OA" address="0x00013784" value="0x00000000" />
+        <register type="OA" address="0x00013388" value="0x00006017" />
+        <register type="OA" address="0x0001338C" value="0x00000000" />
+        <register type="OA" address="0x00013588" value="0x00006017" />
+        <register type="OA" address="0x0001358C" value="0x00000000" />
+        <register type="OA" address="0x00013788" value="0x00006017" />
+        <register type="OA" address="0x0001378C" value="0x00000000" />
+        <register type="OA" address="0x00013390" value="0x00006018" />
+        <register type="OA" address="0x00013394" value="0x00000000" />
+        <register type="OA" address="0x00013590" value="0x00006018" />
+        <register type="OA" address="0x00013594" value="0x00000000" />
+        <register type="OA" address="0x00013790" value="0x00006018" />
+        <register type="OA" address="0x00013794" value="0x00000000" />
+        <register type="OA" address="0x00013398" value="0x00006019" />
+        <register type="OA" address="0x0001339C" value="0x00000000" />
+        <register type="OA" address="0x00013598" value="0x00006019" />
+        <register type="OA" address="0x0001359C" value="0x00000000" />
+        <register type="OA" address="0x00013798" value="0x00006019" />
+        <register type="OA" address="0x0001379C" value="0x00000000" />
+        <register type="OA" address="0x000133A0" value="0x0000601A" />
+        <register type="OA" address="0x000133A4" value="0x00000000" />
+        <register type="OA" address="0x000135A0" value="0x0000601A" />
+        <register type="OA" address="0x000135A4" value="0x00000000" />
+        <register type="OA" address="0x000137A0" value="0x0000601A" />
+        <register type="OA" address="0x000137A4" value="0x00000000" />
+        <register type="OA" address="0x000133A8" value="0x0000601B" />
+        <register type="OA" address="0x000133AC" value="0x00000000" />
+        <register type="OA" address="0x000135A8" value="0x0000601B" />
+        <register type="OA" address="0x000135AC" value="0x00000000" />
+        <register type="OA" address="0x000137A8" value="0x0000601B" />
+        <register type="OA" address="0x000137AC" value="0x00000000" />
+        <register type="OA" address="0x000133B0" value="0x0000601C" />
+        <register type="OA" address="0x000133B4" value="0x00000000" />
+        <register type="OA" address="0x000135B0" value="0x0000601C" />
+        <register type="OA" address="0x000135B4" value="0x00000000" />
+        <register type="OA" address="0x000137B0" value="0x0000601C" />
+        <register type="OA" address="0x000137B4" value="0x00000000" />
+        <register type="OA" address="0x000133B8" value="0x00006400" />
+        <register type="OA" address="0x000133BC" value="0x00000000" />
+        <register type="OA" address="0x000135B8" value="0x00006400" />
+        <register type="OA" address="0x000135BC" value="0x00000000" />
+        <register type="OA" address="0x000137B8" value="0x00006400" />
+        <register type="OA" address="0x000137BC" value="0x00000000" />
+        <register type="OA" address="0x000133C0" value="0x00006401" />
+        <register type="OA" address="0x000133C4" value="0x00000000" />
+        <register type="OA" address="0x000135C0" value="0x00006401" />
+        <register type="OA" address="0x000135C4" value="0x00000000" />
+        <register type="OA" address="0x000137C0" value="0x00006401" />
+        <register type="OA" address="0x000137C4" value="0x00000000" />
+        <register type="OA" address="0x000133C8" value="0x00006402" />
+        <register type="OA" address="0x000133CC" value="0x00000000" />
+        <register type="OA" address="0x000135C8" value="0x00006402" />
+        <register type="OA" address="0x000135CC" value="0x00000000" />
+        <register type="OA" address="0x000137C8" value="0x00006402" />
+        <register type="OA" address="0x000137CC" value="0x00000000" />
+        <register type="OA" address="0x000133D0" value="0x00006403" />
+        <register type="OA" address="0x000133D4" value="0x00000000" />
+        <register type="OA" address="0x000135D0" value="0x00006403" />
+        <register type="OA" address="0x000135D4" value="0x00000000" />
+        <register type="OA" address="0x000137D0" value="0x00006403" />
+        <register type="OA" address="0x000137D4" value="0x00000000" />
+        <register type="OA" address="0x000133D8" value="0x00006600" />
+        <register type="OA" address="0x000133DC" value="0x00000000" />
+        <register type="OA" address="0x000135D8" value="0x00006600" />
+        <register type="OA" address="0x000135DC" value="0x00000000" />
+        <register type="OA" address="0x000137D8" value="0x00006600" />
+        <register type="OA" address="0x000137DC" value="0x00000000" />
+        <register type="OA" address="0x000133E0" value="0x00006601" />
+        <register type="OA" address="0x000133E4" value="0x00000000" />
+        <register type="OA" address="0x000135E0" value="0x00006601" />
+        <register type="OA" address="0x000135E4" value="0x00000000" />
+        <register type="OA" address="0x000137E0" value="0x00006601" />
+        <register type="OA" address="0x000137E4" value="0x00000000" />
+        <register type="OA" address="0x000133E8" value="0x00006602" />
+        <register type="OA" address="0x000133EC" value="0x00000000" />
+        <register type="OA" address="0x000135E8" value="0x00006602" />
+        <register type="OA" address="0x000135EC" value="0x00000000" />
+        <register type="OA" address="0x000137E8" value="0x00006602" />
+        <register type="OA" address="0x000137EC" value="0x00000000" />
+        <register type="OA" address="0x000133F0" value="0x00006603" />
+        <register type="OA" address="0x000133F4" value="0x00000000" />
+        <register type="OA" address="0x000135F0" value="0x00006603" />
+        <register type="OA" address="0x000135F4" value="0x00000000" />
+        <register type="OA" address="0x000137F0" value="0x00006603" />
+        <register type="OA" address="0x000137F4" value="0x00000000" />
+        <register type="OA" address="0x000133F8" value="0x00006604" />
+        <register type="OA" address="0x000133FC" value="0x00000000" />
+        <register type="OA" address="0x000135F8" value="0x00006604" />
+        <register type="OA" address="0x000135FC" value="0x00000000" />
+        <register type="OA" address="0x000137F8" value="0x00006604" />
+        <register type="OA" address="0x000137FC" value="0x00000000" />
+    </register_config>
+  </set>
+
+  <set name="MetricSet4"
+       chipset="LNL"
+       symbol_name="MetricSet4"
+       underscore_name="metric_set4"
+       mdapi_supported_apis="VK OGL OCL IO"
+       oa_format="256B_GENERIC_NOA16"
+       hw_config_guid="e6f21065-a6f5-4ea4-a545-80d6aebaab56"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="event"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="OA">
+        <register type="OA" address="0x00013000" value="0x00001601" />
+        <register type="OA" address="0x00013004" value="0x00000000" />
+        <register type="OA" address="0x00013008" value="0x00001602" />
+        <register type="OA" address="0x0001300C" value="0x00000000" />
+        <register type="OA" address="0x00013010" value="0x00001603" />
+        <register type="OA" address="0x00013014" value="0x00000000" />
+        <register type="OA" address="0x00013018" value="0x00001604" />
+        <register type="OA" address="0x0001301C" value="0x00000000" />
+        <register type="OA" address="0x00013020" value="0x00001605" />
+        <register type="OA" address="0x00013024" value="0x00000000" />
+        <register type="OA" address="0x00013028" value="0x00001606" />
+        <register type="OA" address="0x0001302C" value="0x00000000" />
+        <register type="OA" address="0x00013030" value="0x00001800" />
+        <register type="OA" address="0x00013034" value="0x00000000" />
+        <register type="OA" address="0x00013038" value="0x00001801" />
+        <register type="OA" address="0x0001303C" value="0x00000000" />
+        <register type="OA" address="0x00013040" value="0x00001802" />
+        <register type="OA" address="0x00013044" value="0x00000000" />
+        <register type="OA" address="0x00013048" value="0x00001803" />
+        <register type="OA" address="0x0001304C" value="0x00000000" />
+        <register type="OA" address="0x00013050" value="0x00001804" />
+        <register type="OA" address="0x00013054" value="0x00000000" />
+        <register type="OA" address="0x00013058" value="0x00001807" />
+        <register type="OA" address="0x0001305C" value="0x00000000" />
+        <register type="OA" address="0x00013060" value="0x00001808" />
+        <register type="OA" address="0x00013064" value="0x00000000" />
+        <register type="OA" address="0x00013068" value="0x00003E00" />
+        <register type="OA" address="0x0001306C" value="0x00000000" />
+        <register type="OA" address="0x00013300" value="0x00006605" />
+        <register type="OA" address="0x00013304" value="0x00000000" />
+        <register type="OA" address="0x00013500" value="0x00006605" />
+        <register type="OA" address="0x00013504" value="0x00000000" />
+        <register type="OA" address="0x00013700" value="0x00006605" />
+        <register type="OA" address="0x00013704" value="0x00000000" />
+        <register type="OA" address="0x00013308" value="0x00006606" />
+        <register type="OA" address="0x0001330C" value="0x00000000" />
+        <register type="OA" address="0x00013508" value="0x00006606" />
+        <register type="OA" address="0x0001350C" value="0x00000000" />
+        <register type="OA" address="0x00013708" value="0x00006606" />
+        <register type="OA" address="0x0001370C" value="0x00000000" />
+        <register type="OA" address="0x00013310" value="0x00006610" />
+        <register type="OA" address="0x00013314" value="0x00000000" />
+        <register type="OA" address="0x00013510" value="0x00006610" />
+        <register type="OA" address="0x00013514" value="0x00000000" />
+        <register type="OA" address="0x00013710" value="0x00006610" />
+        <register type="OA" address="0x00013714" value="0x00000000" />
+        <register type="OA" address="0x00013318" value="0x00006611" />
+        <register type="OA" address="0x0001331C" value="0x00000000" />
+        <register type="OA" address="0x00013518" value="0x00006611" />
+        <register type="OA" address="0x0001351C" value="0x00000000" />
+        <register type="OA" address="0x00013718" value="0x00006611" />
+        <register type="OA" address="0x0001371C" value="0x00000000" />
+        <register type="OA" address="0x00013320" value="0x00006612" />
+        <register type="OA" address="0x00013324" value="0x00000000" />
+        <register type="OA" address="0x00013520" value="0x00006612" />
+        <register type="OA" address="0x00013524" value="0x00000000" />
+        <register type="OA" address="0x00013720" value="0x00006612" />
+        <register type="OA" address="0x00013724" value="0x00000000" />
+        <register type="OA" address="0x00013328" value="0x00006800" />
+        <register type="OA" address="0x0001332C" value="0x00000000" />
+        <register type="OA" address="0x00013528" value="0x00006800" />
+        <register type="OA" address="0x0001352C" value="0x00000000" />
+        <register type="OA" address="0x00013728" value="0x00006800" />
+        <register type="OA" address="0x0001372C" value="0x00000000" />
+        <register type="OA" address="0x00013330" value="0x00006801" />
+        <register type="OA" address="0x00013334" value="0x00000000" />
+        <register type="OA" address="0x00013530" value="0x00006801" />
+        <register type="OA" address="0x00013534" value="0x00000000" />
+        <register type="OA" address="0x00013730" value="0x00006801" />
+        <register type="OA" address="0x00013734" value="0x00000000" />
+        <register type="OA" address="0x00013338" value="0x00006802" />
+        <register type="OA" address="0x0001333C" value="0x00000000" />
+        <register type="OA" address="0x00013538" value="0x00006802" />
+        <register type="OA" address="0x0001353C" value="0x00000000" />
+        <register type="OA" address="0x00013738" value="0x00006802" />
+        <register type="OA" address="0x0001373C" value="0x00000000" />
+        <register type="OA" address="0x00013340" value="0x00006803" />
+        <register type="OA" address="0x00013344" value="0x00000000" />
+        <register type="OA" address="0x00013540" value="0x00006803" />
+        <register type="OA" address="0x00013544" value="0x00000000" />
+        <register type="OA" address="0x00013740" value="0x00006803" />
+        <register type="OA" address="0x00013744" value="0x00000000" />
+        <register type="OA" address="0x00013348" value="0x00006804" />
+        <register type="OA" address="0x0001334C" value="0x00000000" />
+        <register type="OA" address="0x00013548" value="0x00006804" />
+        <register type="OA" address="0x0001354C" value="0x00000000" />
+        <register type="OA" address="0x00013748" value="0x00006804" />
+        <register type="OA" address="0x0001374C" value="0x00000000" />
+        <register type="OA" address="0x00013350" value="0x00006805" />
+        <register type="OA" address="0x00013354" value="0x00000000" />
+        <register type="OA" address="0x00013550" value="0x00006805" />
+        <register type="OA" address="0x00013554" value="0x00000000" />
+        <register type="OA" address="0x00013750" value="0x00006805" />
+        <register type="OA" address="0x00013754" value="0x00000000" />
+        <register type="OA" address="0x00013358" value="0x00006E00" />
+        <register type="OA" address="0x0001335C" value="0x00000000" />
+        <register type="OA" address="0x00013558" value="0x00006E00" />
+        <register type="OA" address="0x0001355C" value="0x00000000" />
+        <register type="OA" address="0x00013758" value="0x00006E00" />
+        <register type="OA" address="0x0001375C" value="0x00000000" />
+        <register type="OA" address="0x00013360" value="0x00006E01" />
+        <register type="OA" address="0x00013364" value="0x00000000" />
+        <register type="OA" address="0x00013560" value="0x00006E01" />
+        <register type="OA" address="0x00013564" value="0x00000000" />
+        <register type="OA" address="0x00013760" value="0x00006E01" />
+        <register type="OA" address="0x00013764" value="0x00000000" />
+        <register type="OA" address="0x00013368" value="0x00006E02" />
+        <register type="OA" address="0x0001336C" value="0x00000000" />
+        <register type="OA" address="0x00013568" value="0x00006E02" />
+        <register type="OA" address="0x0001356C" value="0x00000000" />
+        <register type="OA" address="0x00013768" value="0x00006E02" />
+        <register type="OA" address="0x0001376C" value="0x00000000" />
+        <register type="OA" address="0x00013370" value="0x00007E00" />
+        <register type="OA" address="0x00013374" value="0x00000000" />
+        <register type="OA" address="0x00013570" value="0x00007E00" />
+        <register type="OA" address="0x00013574" value="0x00000000" />
+        <register type="OA" address="0x00013770" value="0x00007E00" />
+        <register type="OA" address="0x00013774" value="0x00000000" />
+    </register_config>
+  </set>
+
+</metrics>
diff --git a/lib/xe/oa-configs/oa-metricset-codegen.py b/lib/xe/oa-configs/oa-metricset-codegen.py
new file mode 100644
index 000000000000..3c4e870701d6
--- /dev/null
+++ b/lib/xe/oa-configs/oa-metricset-codegen.py
@@ -0,0 +1,304 @@
+#!/usr/bin/env python3
+#
+# SPDX-License-Identifier: MIT
+#
+# Copyright © 2024 Intel Corporation
+
+import argparse
+import os
+import sys
+import textwrap
+
+import codegen
+
+h = None
+c = None
+
+semantic_type_map = {
+    "duration": "raw",
+    "ratio": "event"
+    }
+
+def output_units(unit):
+    return unit.replace(' ', '_').upper()
+
+def availability_func_name(set, counter):
+    return set.gen.chipset + "_" + set.underscore_name + "_" + counter.get('symbol_name') + "_availability"
+
+def output_availability_funcs(set, counter):
+    availability = counter.get('availability')
+    if availability:
+        c("static bool " + availability_func_name(set, counter) + "(const struct intel_perf *perf) {")
+        c.indent(4)
+        set.gen.output_availability(set, availability, counter.get('name'))
+        c.indent(4)
+        c("return true;")
+        c.outdent(4)
+        c("}")
+        c("return false;")
+        c.outdent(4)
+        c("}")
+
+def output_counter_report(set, counter):
+    data_type = counter.get('data_type')
+    data_type_uc = data_type.upper()
+    c_type = data_type
+
+    if "uint" in c_type:
+        c_type = c_type + "_t"
+
+    semantic_type = counter.get('semantic_type')
+    if semantic_type in semantic_type_map:
+        semantic_type = semantic_type_map[semantic_type]
+
+    semantic_type_uc = semantic_type.upper()
+
+    c("\n")
+
+    c("{")
+    c.indent(4)
+    c(".name = \"{0}\",\n".format(counter.get('name')))
+    c(".symbol_name = \"{0}\",\n".format(counter.get('symbol_name')))
+    c(".desc = \"{0}\",\n".format(counter.get('description')))
+    c(".type = INTEL_PERF_LOGICAL_COUNTER_TYPE_{0},\n".format(semantic_type_uc))
+    c(".storage = INTEL_PERF_LOGICAL_COUNTER_STORAGE_{0},\n".format(data_type_uc))
+    c(".unit = INTEL_PERF_LOGICAL_COUNTER_UNIT_{0},\n".format(output_units(counter.get('units'))))
+    c(".read_{0} = {1},\n".format(data_type, set.read_funcs["$" + counter.get('symbol_name')]))
+    c(".max_{0} = {1},\n".format(data_type, set.max_funcs["$" + counter.get('symbol_name')]))
+    c(".group = \"{0}\",\n".format(counter.get('mdapi_group')))
+    availability = counter.get('availability')
+    if availability:
+        c(".availability = {0},\n".format(availability_func_name(set, counter)))
+    c.outdent(4)
+    c("},")
+
+
+def generate_metric_sets(args, gen):
+    c(textwrap.dedent("""\
+#include <stddef.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <assert.h>
+
+enum xe_oa_format_name {
+	XE_OA_FORMAT_C4_B8 = 1,
+
+	/* Gen8+ */
+	XE_OA_FORMAT_A12,
+	XE_OA_FORMAT_A12_B8_C8,
+	XE_OA_FORMAT_A32u40_A4u32_B8_C8,
+
+	/* DG2 */
+	XE_OAR_FORMAT_A32u40_A4u32_B8_C8,
+	XE_OA_FORMAT_A24u40_A14u32_B8_C8,
+
+        /* DG2/MTL OAC */
+        XE_OAC_FORMAT_A24u64_B8_C8,
+        XE_OAC_FORMAT_A22u32_R2u32_B8_C8,
+
+	/* MTL OAM */
+	XE_OAM_FORMAT_MPEC8u64_B8_C8,
+	XE_OAM_FORMAT_MPEC8u32_B8_C8,
+
+	/* Xe2+ */
+	XE_OA_FORMAT_PEC64u64,
+	XE_OA_FORMAT_PEC64u64_B8_C8,
+	XE_OA_FORMAT_PEC64u32,
+	XE_OA_FORMAT_PEC32u64_G1,
+	XE_OA_FORMAT_PEC32u32_G1,
+	XE_OA_FORMAT_PEC32u64_G2,
+	XE_OA_FORMAT_PEC32u32_G2,
+	XE_OA_FORMAT_PEC36u64_G1_32_G2_4,
+	XE_OA_FORMAT_PEC36u64_G1_4_G2_32,
+
+	XE_OA_FORMAT_MAX,
+};
+
+        """))
+
+    c("#include \"{0}\"".format(os.path.basename(args.header)))
+    c("#include \"{0}\"".format(os.path.basename(args.equations_include)))
+    c("#include \"{0}\"".format(os.path.basename(args.registers_include)))
+
+    # Print out all set registration functions for each set in each
+    # generation.
+    for set in gen.sets:
+        counters = sorted(set.counters, key=lambda k: k.get('symbol_name'))
+
+        c("\n")
+
+        for counter in counters:
+          output_availability_funcs(set, counter)
+
+        c("\nstatic void\n")
+        c(gen.chipset + "_add_" + set.underscore_name + "_metric_set(struct intel_perf *perf)")
+        c("{\n")
+        c.indent(4)
+
+        c("struct intel_perf_metric_set *metric_set;\n")
+        c("struct intel_perf_logical_counter *counter;\n\n")
+
+        c("metric_set = calloc(1, sizeof(*metric_set));\n")
+        c("metric_set->name = \"" + set.name + "\";\n")
+        c("metric_set->symbol_name = \"" + set.symbol_name + "\";\n")
+        c("metric_set->hw_config_guid = \"" + set.hw_config_guid + "\";\n")
+        c("metric_set->counters = calloc({0}, sizeof(struct intel_perf_logical_counter));\n".format(str(len(counters))))
+        c("metric_set->n_counters = 0;\n")
+        c("metric_set->perf_oa_metrics_set = 0; // determined at runtime\n")
+
+        if gen.chipset.startswith("acm") or gen.chipset.startswith("mtl"):
+            if set.oa_format == "128B_MPEC8_NOA16":
+                c(textwrap.dedent("""\
+                    metric_set->perf_oa_format = XE_OAM_FORMAT_MPEC8u32_B8_C8;
+
+                    metric_set->perf_raw_size = 128;
+                    metric_set->gpu_time_offset = 0;
+                    metric_set->gpu_clock_offset = 1;
+                    metric_set->a_offset = 2;
+                    metric_set->b_offset = metric_set->a_offset + 8;
+                    metric_set->c_offset = metric_set->b_offset + 8;
+                    metric_set->perfcnt_offset = metric_set->c_offset + 8;
+                """))
+            else:
+                c(textwrap.dedent("""\
+                    metric_set->perf_oa_format = XE_OA_FORMAT_A24u40_A14u32_B8_C8;
+
+                    metric_set->perf_raw_size = 256;
+                    metric_set->gpu_time_offset = 0;
+                    metric_set->gpu_clock_offset = 1;
+                    metric_set->a_offset = 2;
+                    metric_set->b_offset = metric_set->a_offset + 38;
+                    metric_set->c_offset = metric_set->b_offset + 8;
+                    metric_set->perfcnt_offset = metric_set->c_offset + 8;
+                """))
+        elif gen.chipset == "lnl":
+            c(textwrap.dedent("""\
+                metric_set->perf_oa_format = XE_OA_FORMAT_PEC64u64;
+
+                metric_set->perf_raw_size = 576;
+                metric_set->gpu_time_offset = 0;
+                metric_set->gpu_clock_offset = 1;
+                metric_set->a_offset = 2;
+                // metric_set->b_offset = metric_set->a_offset + 38;
+                // metric_set->c_offset = metric_set->b_offset + 8;
+                metric_set->perfcnt_offset = metric_set->a_offset + 64;
+
+            """))
+        else:
+            c(textwrap.dedent("""\
+                metric_set->perf_oa_format = XE_OA_FORMAT_A32u40_A4u32_B8_C8;
+
+                metric_set->perf_raw_size = 256;
+                metric_set->gpu_time_offset = 0;
+                metric_set->gpu_clock_offset = 1;
+                metric_set->a_offset = 2;
+                metric_set->b_offset = metric_set->a_offset + 36;
+                metric_set->c_offset = metric_set->b_offset + 8;
+                metric_set->perfcnt_offset = metric_set->c_offset + 8;
+
+            """))
+
+        c("%s_%s_add_registers(perf, metric_set);" % (gen.chipset, set.underscore_name))
+
+        c("intel_perf_add_metric_set(perf, metric_set);");
+        c("\n")
+
+        c("{")
+        c.indent(4)
+        c("static const struct intel_perf_logical_counter _counters[] = {")
+        c.indent(4)
+
+        for counter in counters:
+            output_counter_report(set, counter)
+        c.outdent(4)
+        c("};")
+        c("int i;")
+
+        c("for (i = 0; i < sizeof(_counters) / sizeof(_counters[0]); i++) {")
+        c.indent(4)
+        c("if (_counters[i].availability && !_counters[i].availability(perf))")
+        c.indent(4)
+        c("continue;")
+        c.outdent(4)
+        c("counter = &metric_set->counters[metric_set->n_counters++];")
+        c("*counter = _counters[i];")
+        c("counter->metric_set = metric_set;")
+        c("intel_perf_add_logical_counter(perf, counter, counter->group);")
+        c.outdent(4)
+        c("}")
+        c.outdent(4)
+        c("}")
+        c("\nassert(metric_set->n_counters <= {0});\n".format(len(counters)));
+
+        c.outdent(4)
+        c("}\n")
+
+    c("\nvoid")
+    c("intel_perf_load_metrics_" + gen.chipset + "(struct intel_perf *perf)")
+    c("{")
+    c.indent(4)
+
+    for set in gen.sets:
+        c("{0}_add_{1}_metric_set(perf);".format(gen.chipset, set.underscore_name))
+
+    c.outdent(4)
+    c("}")
+
+
+
+def main():
+    global c
+    global h
+
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--header", help="Header file to write")
+    parser.add_argument("--code", help="C file to write")
+    parser.add_argument("--equations-include", help="Equations header file")
+    parser.add_argument("--registers-include", help="Registers header file")
+    parser.add_argument("--xml-file", help="Xml file to generate metric sets from")
+
+    args = parser.parse_args()
+
+    # Note: either arg may == None
+    h = codegen.Codegen(args.header)
+    c = codegen.Codegen(args.code)
+
+    gen = codegen.Gen(args.xml_file, c)
+
+    copyright = textwrap.dedent("""\
+        /* Autogenerated file, DO NOT EDIT manually! generated by {} */
+        // SPDX-License-Identifier: MIT
+        /*
+         * Copyright © 2024 Intel Corporation
+         */
+
+        """).format(os.path.basename(__file__))
+
+    header_file = os.path.basename(args.header)
+    header_define = header_file.replace('.', '_').upper()
+
+    h(copyright)
+    h(textwrap.dedent("""\
+        #ifndef %s
+        #define %s
+
+        #include <string.h>
+
+        #include "xe/xe_oa.h"
+
+        """ % (header_define, header_define)))
+
+    # Print out all set registration functions for each generation.
+    h("void intel_perf_load_metrics_" + gen.chipset + "(struct intel_perf *perf);\n\n")
+
+    h(textwrap.dedent("""\
+        #endif /* %s */
+        """ % header_define))
+
+    c(copyright)
+    generate_metric_sets(args, gen)
+
+
+if __name__ == '__main__':
+    main()
diff --git a/lib/xe/oa-configs/oa-registers-codegen.py b/lib/xe/oa-configs/oa-registers-codegen.py
new file mode 100644
index 000000000000..a4aa1340975a
--- /dev/null
+++ b/lib/xe/oa-configs/oa-registers-codegen.py
@@ -0,0 +1,118 @@
+#!/usr/bin/env python3
+#
+# SPDX-License-Identifier: MIT
+#
+# Copyright © 2024 Intel Corporation
+
+import argparse
+import os
+import sys
+import textwrap
+
+import codegen
+
+h = None
+c = None
+
+
+def generate_register_configs(set):
+    register_types = {
+        'FLEX': 'flex_regs',
+        'NOA': 'mux_regs',
+        'OA': 'b_counter_regs',
+    }
+
+    c("void %s_%s_add_registers(struct intel_perf *perf, struct intel_perf_metric_set *metric_set)" %
+      (set.gen.chipset, set.underscore_name))
+    c("{")
+    c.indent(4)
+
+    # fill in register/values
+    register_configs = set.findall('register_config')
+    for register_config in register_configs:
+        t = register_types[register_config.get('type')]
+
+        availability = register_config.get('availability')
+        if availability:
+            set.gen.output_availability(set, availability, register_config.get('type') + ' register config')
+            c.indent(4)
+
+        c("{")
+        c.indent(4)
+        c("static const struct intel_perf_register_prog _%s[] = {" % t)
+        c.indent(4)
+        for register in register_config.findall('register'):
+            c("{ .reg = %s, .val = %s }," %
+              (register.get('address'), register.get('value')))
+        c.outdent(4)
+        c("};")
+        c("metric_set->%s = _%s;" % (t, t))
+        c("metric_set->n_%s = sizeof(_%s) / sizeof(_%s[0]);" % (t, t, t))
+        c.outdent(4)
+        c("}")
+
+        if availability:
+            c.outdent(4)
+            c("}")
+        c("\n")
+
+    c.outdent(4)
+    c("}")
+
+
+def main():
+    global c
+    global h
+    global xml_equations
+
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--header", help="Header file to write")
+    parser.add_argument("--code", help="C file to write")
+    parser.add_argument("--xml-file", help="Xml file to generate register configurations from")
+
+    args = parser.parse_args()
+
+    # Note: either arg may == None
+    h = codegen.Codegen(args.header)
+    c = codegen.Codegen(args.code)
+
+    gen = codegen.Gen(args.xml_file, c)
+
+    copyright = textwrap.dedent("""\
+        /* Autogenerated file, DO NOT EDIT manually! generated by {} */
+        // SPDX-License-Identifier: MIT
+        /*
+         * Copyright © 2024 Intel Corporation
+         */
+
+        """).format(os.path.basename(__file__))
+
+
+    header_file = os.path.basename(args.header)
+    header_define = "__%s__" % header_file.replace('.', '_').upper()
+
+    h(copyright)
+    h("#ifndef %s" % header_define)
+    h("#define %s" % header_define)
+    h("\n")
+    h("struct intel_perf;")
+    h("struct intel_perf_metric_set;")
+    h("\n")
+    for set in gen.sets:
+        h("void %s_%s_add_registers(struct intel_perf *perf, struct intel_perf_metric_set *metric_set);" %
+          (gen.chipset, set.underscore_name))
+    h("\n")
+    h("#endif /* %s */" % header_define)
+
+    c(copyright)
+    c("\n")
+    c("#include \"%s\"" % header_file)
+    c("#include \"xe/xe_oa.h\"")
+
+    for set in gen.sets:
+        c("\n")
+        generate_register_configs(set)
+
+
+if __name__ == '__main__':
+    main()
diff --git a/lib/xe/oa-configs/oa_guid_registry.py b/lib/xe/oa-configs/oa_guid_registry.py
new file mode 100644
index 000000000000..bc265cc689ab
--- /dev/null
+++ b/lib/xe/oa-configs/oa_guid_registry.py
@@ -0,0 +1,131 @@
+import copy
+import hashlib
+import re
+
+import xml.etree.ElementTree as et
+
+
+class Registry:
+
+    # Tries to avoid fragility from et.tostring() by normalizing into CSV string first
+    @staticmethod
+    def hw_config_hash(metric_set):
+        """Hashes the given metric set's HW register configs.
+
+        Args:
+            metric_set -- is an ElementTree element for a 'set'
+
+        Note this doesn't accept an MDAPI based metric set description
+        """
+
+        registers_str = ""
+        for config in metric_set.findall(".//register_config"):
+            if config.get('id') == None:
+                config_id = '0'
+            else:
+                config_id = config.get('id')
+            if config.get('priority') == None:
+                config_priority = '0'
+            else:
+                config_priority = config.get('priority')
+            if config.get('availability') == None:
+                config_availability = ""
+            else:
+                config_availability = config.get('availability')
+            for reg in config.findall("register"):
+                addr = int(reg.get('address'), 16)
+                value = int(reg.get('value'), 16)
+                registers_str = registers_str + config_id + ',' + config_priority + ',' + config_availability + ',' + str(addr) + ',' + str(value) + '\n'
+
+        return hashlib.md5(registers_str.encode('utf-8')).hexdigest()
+
+
+    @staticmethod
+    def mdapi_hw_config_hash(mdapi_metric_set):
+        """Hashes the HW register configuration of a metric set from VPG's MDAPI XML files.
+
+        Args:
+            mdapi_metric_set -- is an ElementTree element for a 'MetricSet'
+
+        Note: being a simplistic hash of all RegConfigStart element contents
+        this will change for minor comment changes in VPG's files. Without
+        any promisies of stability within these files then it can't help to
+        err on the side of caution here, so we know when to investigate
+        changes that might affect our useages.
+        """
+
+        def reorder_attributes(root):
+            for el in root.iter():
+                attrib = el.attrib
+                if len(attrib) > 1:
+                    # adjust attribute order, e.g. by sorting
+                    attribs = sorted(attrib.items())
+                    attrib.clear()
+                    attrib.update(attribs)
+
+        config = et.Element('config')
+        for registers in mdapi_metric_set.findall(".//RegConfigStart"):
+            config.append(copy.deepcopy(registers))
+        reorder_attributes(config)
+        registers_str = et.tostring(config)
+
+        return hashlib.md5(registers_str).hexdigest()
+
+    @staticmethod
+    def chipset_derive_hash(chipset, set_name, hash):
+        """Derive a HW config hash for a given chipset & set name.
+
+        This helps us avoiding collisions with identical config across
+        different Gen or GT.
+        """
+
+        return "%s-%s-%s" % (chipset, set_name, hash)
+
+
+    @staticmethod
+    def chipset_name(name):
+        known_chipsets = ( 'HSW',
+                           'BDW',
+                           'CHV',
+                           'SKL',
+                           'BXT',
+                           'KBL',
+                           'GLK',
+                           'CFL',
+                           'CNL',
+                           'ICL',
+                           'EHL',
+                           'TGL',
+                           'RKL',
+                           'DG1',
+                           'ACM',
+                           'PVC',
+                           'MTL',
+                           'LNL',
+                          )
+        if name in known_chipsets:
+            return name
+
+        internal_chipsets = {
+            'P22': 'ATS',
+            'P24': 'DG2',
+            'P25': 'PVC',
+            'P26': 'ADL',
+            'P27': 'MTL',
+            'P31': 'LNL',
+        }
+
+        if name in internal_chipsets:
+            return internal_chipsets[name]
+
+        # Unknown HW
+        assert 0
+
+
+    @staticmethod
+    def gt_name(name):
+        return re.sub(' ', '', name)
+
+    @staticmethod
+    def sanitize_symbol_name(text):
+        return text.replace('#', "_")
diff --git a/lib/xe/oa-configs/update-guids.py b/lib/xe/oa-configs/update-guids.py
new file mode 100755
index 000000000000..18f3458e84c9
--- /dev/null
+++ b/lib/xe/oa-configs/update-guids.py
@@ -0,0 +1,223 @@
+#!/usr/bin/env python3
+# coding=utf-8
+
+# SPDX-License-Identifier: MIT
+#
+# Copyright © 2024 Intel Corporation
+#
+#
+# This script can:
+#
+# - Automatically add template entries for unregistered metric sets diescovered
+#   in new mdapi xml files.
+# - Once mdapi-convert-xml.py has been run to output register configs for new
+#   metric sets then re-running this script can add the config_hash attribute
+#   to corresponding registry entries.
+#
+# The script is designed to allow incremental updates/fixups of the guid
+# registry by working in terms of:
+#
+# 1) load all the existing state
+# 2) apply tweaks/modifications
+# 3) write everything back out
+#
+# The script should gracefully handle incomplete guid entries, which is
+# important when considering how the mdapi-xml-convert.py script depends on the
+# 'mdapi_config_hash' attribute while adding the 'config_hash' attribute
+# depends on the configs output by mdapi-xml-convert.py.
+
+
+
+import argparse
+import os.path
+import re
+import sys
+import time
+import uuid
+
+import xml.etree.ElementTree as et
+import xml.sax.saxutils as saxutils
+
+import oa_guid_registry as oa_registry
+
+
+def print_err(*args):
+    sys.stderr.write(' '.join(map(str,args)) + '\n')
+
+def guid_hashing_key(guid_obj):
+    ret = oa_registry.Registry.chipset_derive_hash(guid_obj['chipset'],
+                                                   guid_obj['name'],
+                                                   guid_obj['mdapi_config_hash'])
+    return ret
+
+parser = argparse.ArgumentParser()
+parser.add_argument("xml", nargs="+", help="XML description of metrics")
+parser.add_argument("--guids", required=True, help="Metric set GUID registry")
+
+args = parser.parse_args()
+
+
+guids = []
+guid_index = {} # guid objects indexed by id
+mdapi_config_hash_guid_table = {} # indexed by MDAPI XML register config hash
+named_guid_table = {} # indexed by name=<chipset>_<symbol_name>
+
+
+
+# 1) read everything we have currently
+#
+guids_xml = et.parse(args.guids)
+for guid in guids_xml.findall(".//guid"):
+    guid_obj = {}
+
+    if guid.get('id') != None:
+        guid_obj['id'] = guid.get('id')
+    else:
+        guid_obj['id'] = str(uuid.uuid4())
+
+    if guid.get('mdapi_config_hash') != None:
+        guid_obj['mdapi_config_hash'] = guid.get('mdapi_config_hash')
+    if guid.get('config_hash') != None:
+        guid_obj['config_hash'] = guid.get('config_hash')
+
+    if guid.get('chipset') != None:
+        guid_obj['chipset'] = guid.get('chipset')
+    if guid.get('name') != None:
+        guid_obj['name'] = guid.get('name')
+        named_guid_table[guid_obj['chipset'] + "_" + guid_obj['name']] = guid_obj
+
+    if 'mdapi_config_hash' in guid_obj:
+        hashing_key = oa_registry.Registry.chipset_derive_hash(guid_obj['chipset'],
+                                                               guid_obj['name'],
+                                                               guid_obj['mdapi_config_hash'])
+        mdapi_config_hash_guid_table[hashing_key] = guid_obj
+
+    guids.append(guid_obj)
+
+    if guid_obj['id'] in guid_index:
+        print_err("Duplicate GUID " + guid_obj['id'] + "!")
+        sys.exit(1)
+    guid_index[guid_obj['id']] = guid_obj
+
+
+#
+# 2) fixup/modify the guid entries...
+#
+
+
+for arg in args.xml:
+    internal = et.parse(arg)
+
+    concurrent_group = internal.find(".//ConcurrentGroup")
+    chipset = oa_registry.Registry.chipset_name(concurrent_group.get('SupportedHW')).lower()
+    if concurrent_group.get('SupportedGT') != None:
+        chipset = chipset + oa_registry.Registry.gt_name(concurrent_group.get('SupportedGT')).lower()
+
+
+    for mdapi_set in internal.findall(".//MetricSet"):
+
+        mdapi_config_hash = oa_registry.Registry.mdapi_hw_config_hash(mdapi_set)
+
+        set_name = oa_registry.Registry.sanitize_symbol_name(mdapi_set.get('SymbolName'))
+
+        name = chipset + "_" + set_name;
+
+        hashing_key = oa_registry.Registry.chipset_derive_hash(chipset, set_name, mdapi_config_hash)
+        if hashing_key in mdapi_config_hash_guid_table:
+            guid_obj = mdapi_config_hash_guid_table[hashing_key]
+
+            guid_obj['name'] = set_name
+            guid_obj['chipset'] = chipset
+            guid_obj['matched_mdapi'] = True
+        elif name in named_guid_table:
+            guid_obj = named_guid_table[name]
+
+            guid_obj['matched_mdapi'] = True
+            guid_obj['mdapi_config_hash'] = mdapi_config_hash
+            if 'config_hash' in guid_obj:
+                del guid_obj['config_hash']
+            guid_obj['comment'] = "WARNING: MDAPI XML config hash changed! If upstream, double check raw counter semantics unchanged"
+            print_err("WARNING: MDAPI XML config hash changed for \"" + set_name + "\" (" + chipset + ") If upstream, double check raw counter semantics unchanged")
+        else:
+            guid_obj = { 'mdapi_config_hash': mdapi_config_hash,
+                         'id': str(uuid.uuid4()),
+                         'name': set_name,
+                         'chipset': chipset,
+                         'unregistered': True,
+                         'matched_mdapi': True,
+                         'comment': "New"
+                       }
+            guid_index[guid_obj['id']] = guid_obj
+            mdapi_config_hash_guid_table[guid_hashing_key(guid_obj)] = guid_obj
+            guids.append(guid_obj)
+            print_err("New GUID \"" + guid_obj['id'] + "\" for metric set = " + set_name + " (" + chipset + ")")
+
+        named_guid_table[chipset + '_' + set_name] = guid_obj
+
+
+
+chipsets = [ 'hsw',
+             'bdw', 'chv',
+             'sklgt2', 'sklgt3', 'sklgt4', 'kblgt2', 'kblgt3', 'cflgt2', 'cflgt3',
+             'bxt', 'glk',
+             'cnl',
+             'icl', 'ehl',
+             'tglgt1', 'tglgt2', 'rkl', 'dg1', 'adl',
+             'acmgt1', 'acmgt2', 'acmgt3',
+             'mtlgt2', 'mtlgt3',
+             'lnl',
+]
+
+for chipset in chipsets:
+    filename = 'oa-' + chipset + '.xml'
+    if not os.path.isfile(filename):
+        continue
+
+    public = et.parse(filename)
+
+    for metricset in public.findall(".//set"):
+
+        set_name = metricset.get('symbol_name')
+
+        config_hash = oa_registry.Registry.hw_config_hash(metricset)
+
+        guid_key = chipset + "_" + set_name
+        if guid_key in named_guid_table:
+            guid_obj = named_guid_table[guid_key]
+            guid_obj['config_hash'] = config_hash
+
+
+#
+# 3) write all the guids back out...
+
+print("<guids>")
+for guid_obj in guids:
+    comment = None
+    line = "<guid"
+
+    if 'matched_mdapi' not in guid_obj:
+        comment = "Not found in MDAPI XML file[s]; Entry copied unmodified (maybe removed from MDAPI XML or not all files given on command line)"
+
+    if 'comment' in guid_obj:
+        comment = guid_obj['comment']
+
+    if 'config_hash' in guid_obj:
+        line = line + ' config_hash="' + guid_obj['config_hash'] + '"'
+    if 'mdapi_config_hash' in guid_obj:
+        line = line + ' mdapi_config_hash="' + guid_obj['mdapi_config_hash'] + '"'
+
+    line = line + ' id="' + guid_obj['id'] + '"'
+
+    if 'chipset' in guid_obj:
+        line = line + ' chipset="' + guid_obj['chipset'] + '"'
+
+    if 'name' in guid_obj:
+        line = line + ' name="' + guid_obj['name'] + '"'
+
+    line = line + ' />'
+
+    if comment != None:
+        print("    <!-- ↓" + comment + " -->")
+
+    print("    " + line)
+print("</guids>")
diff --git a/lib/xe/xe_oa.c b/lib/xe/xe_oa.c
new file mode 100644
index 000000000000..22d7b2eb7048
--- /dev/null
+++ b/lib/xe/xe_oa.c
@@ -0,0 +1,706 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#include <assert.h>
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <sys/stat.h>
+#include <sys/sysmacros.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include "drmtest.h"
+#include "i915_pciids.h"
+#include "i915_pciids_local.h"
+#include "intel_chipset.h"
+#include "intel_hwconfig_types.h"
+#include "ioctl_wrappers.h"
+#include "linux_scaffold.h"
+#include "xe_ioctl.h"
+#include "xe_oa.h"
+#include "xe_query.h"
+
+#include "xe_oa_metrics_lnl.h"
+
+static struct intel_perf_logical_counter_group *
+intel_perf_logical_counter_group_new(struct intel_perf *perf,
+				     struct intel_perf_logical_counter_group *parent,
+				     const char *name)
+{
+	struct intel_perf_logical_counter_group *group = calloc(1, sizeof(*group));
+
+	group->name = strdup(name);
+
+	IGT_INIT_LIST_HEAD(&group->counters);
+	IGT_INIT_LIST_HEAD(&group->groups);
+
+	if (parent)
+		igt_list_add_tail(&group->link, &parent->groups);
+	else
+		IGT_INIT_LIST_HEAD(&group->link);
+
+	return group;
+}
+
+static void
+intel_perf_logical_counter_group_free(struct intel_perf_logical_counter_group *group)
+{
+	struct intel_perf_logical_counter_group *child, *tmp;
+
+	igt_list_for_each_entry_safe(child, tmp, &group->groups, link) {
+		igt_list_del(&child->link);
+		intel_perf_logical_counter_group_free(child);
+	}
+
+	free(group->name);
+	free(group);
+}
+
+static void
+intel_perf_metric_set_free(struct intel_perf_metric_set *metric_set)
+{
+	free(metric_set->counters);
+	free(metric_set);
+}
+
+static bool
+slice_available(const struct drm_i915_query_topology_info *topo,
+		int s)
+{
+	return (topo->data[s / 8] >> (s % 8)) & 1;
+}
+
+static bool
+subslice_available(const struct drm_i915_query_topology_info *topo,
+		   int s, int ss)
+{
+	return (topo->data[topo->subslice_offset +
+			   s * topo->subslice_stride +
+			   ss / 8] >> (ss % 8)) & 1;
+}
+
+static bool
+eu_available(const struct drm_i915_query_topology_info *topo,
+	     int s, int ss, int eu)
+{
+	return (topo->data[topo->eu_offset +
+			   (s * topo->max_subslices + ss) * topo->eu_stride +
+			   eu / 8] >> (eu % 8)) & 1;
+}
+
+static struct intel_perf *
+unsupported_xe_oa_platform(struct intel_perf *perf)
+{
+	intel_perf_free(perf);
+	return NULL;
+}
+
+struct intel_perf *
+intel_perf_for_devinfo(uint32_t device_id,
+		       uint32_t revision,
+		       uint64_t timestamp_frequency,
+		       uint64_t gt_min_freq,
+		       uint64_t gt_max_freq,
+		       const struct drm_i915_query_topology_info *topology)
+{
+	const struct intel_device_info *devinfo = intel_get_device_info(device_id);
+	struct intel_perf *perf;
+	uint32_t subslice_mask_len;
+	uint32_t eu_mask_len;
+	uint32_t half_max_subslices;
+	uint64_t half_subslices_mask;
+	int bits_per_subslice;
+
+	if (!devinfo)
+		return NULL;
+
+	perf = calloc(1, sizeof(*perf));;
+	perf->root_group = intel_perf_logical_counter_group_new(perf, NULL, "");
+
+	IGT_INIT_LIST_HEAD(&perf->metric_sets);
+
+	/* Initialize the device characterists first. Loading the
+	 * metrics uses that information to detect whether some
+	 * counters are available on a given device (for example BXT
+	 * 2x6 does not have 2 samplers).
+	 */
+	perf->devinfo.devid = device_id;
+	perf->devinfo.graphics_ver = devinfo->graphics_ver;
+	perf->devinfo.revision = revision;
+	perf->devinfo.timestamp_frequency = timestamp_frequency;
+	perf->devinfo.gt_min_freq = gt_min_freq;
+	perf->devinfo.gt_max_freq = gt_max_freq;
+
+	if (devinfo->codename) {
+		snprintf(perf->devinfo.devname, sizeof(perf->devinfo.devname),
+			 "%s", devinfo->codename);
+	}
+
+	/* Store i915 topology. */
+	perf->devinfo.max_slices = topology->max_slices;
+	perf->devinfo.max_subslices_per_slice = topology->max_subslices;
+	perf->devinfo.max_eu_per_subslice = topology->max_eus_per_subslice;
+
+	subslice_mask_len =
+		topology->max_slices * topology->subslice_stride;
+	igt_assert(sizeof(perf->devinfo.subslice_masks) >= subslice_mask_len);
+	memcpy(perf->devinfo.subslice_masks,
+	       &topology->data[topology->subslice_offset],
+	       subslice_mask_len);
+
+	eu_mask_len = topology->eu_stride *
+		topology->max_subslices * topology->max_slices;
+	igt_assert(sizeof(perf->devinfo.eu_masks) >= eu_mask_len);
+	memcpy(perf->devinfo.eu_masks,
+	       &topology->data[topology->eu_offset],
+	       eu_mask_len);
+
+	bits_per_subslice = 8;
+	for (uint32_t s = 0; s < topology->max_slices; s++) {
+		if (!slice_available(topology, s))
+			continue;
+
+		perf->devinfo.slice_mask |= 1ULL << s;
+		for (uint32_t ss = 0; ss < topology->max_subslices; ss++) {
+			if (!subslice_available(topology, s, ss))
+				continue;
+
+			perf->devinfo.subslice_mask |= 1ULL << (s * bits_per_subslice + ss);
+
+			for (uint32_t eu = 0; eu < topology->max_eus_per_subslice; eu++) {
+				if (eu_available(topology, s, ss, eu))
+					perf->devinfo.n_eus++;
+			}
+		}
+	}
+
+	perf->devinfo.n_eu_slices = __builtin_popcount(perf->devinfo.slice_mask);
+	perf->devinfo.n_eu_sub_slices = __builtin_popcount(perf->devinfo.subslice_mask);
+
+	/* Compute number of subslices/dualsubslices in first half of
+	 * the GPU.
+	 */
+	half_max_subslices = topology->max_subslices / 2;
+	half_subslices_mask = perf->devinfo.subslice_mask &
+		((1 << half_max_subslices) - 1);
+	perf->devinfo.n_eu_sub_slices_half_slices = __builtin_popcount(half_subslices_mask);
+
+	/* Valid on most generations except Gen9LP. */
+	perf->devinfo.eu_threads_count = 7;
+
+	/* Most platforms have full 32bit timestamps. */
+	perf->devinfo.oa_timestamp_mask = 0xffffffff;
+	perf->devinfo.oa_timestamp_shift = 0;
+
+	if (devinfo->is_lunarlake) {
+		intel_perf_load_metrics_lnl(perf);
+	} else {
+		return unsupported_xe_oa_platform(perf);
+	}
+
+	return perf;
+}
+
+static bool
+read_fd_uint64(int fd, uint64_t *out_value)
+{
+	char buf[32];
+	int n;
+
+	n = read(fd, buf, sizeof (buf) - 1);
+	if (n < 0)
+		return false;
+
+	buf[n] = '\0';
+	*out_value = strtoull(buf, 0, 0);
+
+	return true;
+}
+
+static bool
+read_sysfs(int sysfs_dir_fd, const char *file_path, uint64_t *out_value)
+{
+	int fd = openat(sysfs_dir_fd, file_path, O_RDONLY);
+	bool res;
+
+	if (fd < 0)
+		return false;
+
+	res = read_fd_uint64(fd, out_value);
+	close(fd);
+
+	return res;
+}
+
+static int
+open_master_sysfs_dir(int drm_fd)
+{
+	char path[128];
+	struct stat st;
+	int sysfs;
+
+	if (fstat(drm_fd, &st) || !S_ISCHR(st.st_mode))
+                return -1;
+
+	snprintf(path, sizeof(path), "/sys/dev/char/%d:%d", major(st.st_rdev), minor(st.st_rdev));
+	sysfs = open(path, O_DIRECTORY);
+	if (sysfs < 0)
+		return sysfs;
+
+	if (minor(st.st_rdev) >= 128) {
+		/* If we were given a renderD* drm_fd, find it's associated cardX node. */
+		char device[100], cmp[100];
+		int device_len, cmp_len, i;
+
+		device_len = readlinkat(sysfs, "device", device, sizeof(device));
+		close(sysfs);
+		if (device_len < 0)
+			return device_len;
+
+		for (i = 0; i < 64; i++) {
+
+			snprintf(path, sizeof(path), "/sys/dev/char/%d:%d", major(st.st_rdev), i);
+			sysfs = open(path, O_DIRECTORY);
+			if (sysfs < 0)
+				continue;
+
+			cmp_len = readlinkat(sysfs, "device", cmp, sizeof(cmp));
+			if (cmp_len == device_len && !memcmp(cmp, device, cmp_len))
+				break;
+
+			close(sysfs);
+			sysfs = -1;
+		}
+	}
+
+	return sysfs;
+}
+
+typedef enum {
+	RPS_MIN_FREQ_MHZ,
+	RPS_MAX_FREQ_MHZ,
+
+	RPS_MAX_ATTR,
+} intel_sysfs_attr_id;
+
+static void process_hwconfig(void *data, uint32_t len,
+			     struct drm_i915_query_topology_info *topinfo)
+{
+
+	uint32_t *d = (uint32_t*)data;
+	uint32_t l = len / 4;
+	uint32_t pos = 0;
+
+	while (pos + 2 < l) {
+		if (d[pos + 1] == 1) {
+			switch (d[pos]) {
+			case INTEL_HWCONFIG_MAX_SLICES_SUPPORTED:
+				topinfo->max_slices = d[pos + 2];
+				igt_debug("hwconfig: max_slices %d\n", topinfo->max_slices);
+				break;
+			case INTEL_HWCONFIG_MAX_SUBSLICE:
+			case INTEL_HWCONFIG_MAX_DUAL_SUBSLICES_SUPPORTED:
+				topinfo->max_subslices = d[pos + 2];
+				igt_debug("hwconfig: max_subslices %d\n", topinfo->max_subslices);
+				break;
+			case INTEL_HWCONFIG_MAX_EU_PER_SUBSLICE:
+			case INTEL_HWCONFIG_MAX_NUM_EU_PER_DSS:
+				topinfo->max_eus_per_subslice = d[pos + 2];
+				igt_debug("hwconfig: max_eus_per_subslice %d\n",
+					  topinfo->max_eus_per_subslice);
+				break;
+			default:
+				break;
+			}
+		}
+		pos += 2 + d[pos + 1];
+	}
+}
+
+static void query_hwconfig(int fd, struct drm_i915_query_topology_info *topinfo)
+{
+	struct drm_xe_device_query query = {
+		.extensions = 0,
+		.query = DRM_XE_DEVICE_QUERY_HWCONFIG,
+		.size = 0,
+		.data = 0,
+	};
+	void *hwconfig;
+
+	igt_assert_eq(igt_ioctl(fd, DRM_IOCTL_XE_DEVICE_QUERY, &query), 0);
+	igt_assert(query.size);
+
+	hwconfig = malloc(query.size);
+	igt_assert(hwconfig);
+
+	query.data = to_user_pointer(hwconfig);
+	igt_assert_eq(igt_ioctl(fd, DRM_IOCTL_XE_DEVICE_QUERY, &query), 0);
+
+	process_hwconfig(hwconfig, query.size, topinfo);
+	free(hwconfig);
+}
+
+struct drm_i915_query_topology_info *xe_fill_i915_topology_info(int drm_fd)
+{
+	struct drm_i915_query_topology_info i915_topinfo = {};
+	struct drm_i915_query_topology_info *i915_topo;
+	struct drm_xe_query_topology_mask *xe_topo;
+	int total_size, pos = 0;
+	u8 *ptr;
+	struct drm_xe_device_query query = {
+		.extensions = 0,
+		.query = DRM_XE_DEVICE_QUERY_GT_TOPOLOGY,
+		.size = 0,
+		.data = 0,
+	};
+
+	query_hwconfig(drm_fd, &i915_topinfo);
+
+	i915_topinfo.subslice_offset = 1;		/* always 1 */
+	i915_topinfo.subslice_stride = DIV_ROUND_UP(i915_topinfo.max_subslices, 8);
+	i915_topinfo.eu_offset = i915_topinfo.subslice_offset + i915_topinfo.subslice_stride;
+	i915_topinfo.eu_stride = DIV_ROUND_UP(i915_topinfo.max_eus_per_subslice, 8);
+
+	/* Allocate and start filling the struct to return */
+	total_size = sizeof(i915_topinfo) + i915_topinfo.eu_offset +
+			i915_topinfo.max_subslices * i915_topinfo.eu_stride;
+	i915_topo = malloc(total_size);
+	igt_assert(i915_topo);
+
+	memcpy(i915_topo, &i915_topinfo, sizeof(i915_topinfo));
+	ptr = (u8 *)i915_topo + sizeof(i915_topinfo);
+	*ptr++ = 0x1;					/* slice mask */
+
+	/* Get xe topology masks */
+	igt_assert_eq(igt_ioctl(drm_fd, DRM_IOCTL_XE_DEVICE_QUERY, &query), 0);
+	igt_assert_neq(query.size, 0);
+
+	xe_topo = malloc(query.size);
+	igt_assert(xe_topo);
+
+	query.data = to_user_pointer(xe_topo);
+	igt_assert_eq(igt_ioctl(drm_fd, DRM_IOCTL_XE_DEVICE_QUERY, &query), 0);
+	igt_debug("Topology size: %d\n", query.size);
+
+	while (query.size >= sizeof(struct drm_xe_query_topology_mask)) {
+		struct drm_xe_query_topology_mask *topo =
+			(struct drm_xe_query_topology_mask*)((unsigned char*)xe_topo + pos);
+		int i, sz = sizeof(struct drm_xe_query_topology_mask) + topo->num_bytes;
+		u64 geom_mask, compute_mask;
+
+		igt_debug(" gt_id: %d type: %d n:%d [%d] ", topo->gt_id, topo->type, topo->num_bytes, sz);
+		for (int j=0; j< topo->num_bytes; j++)
+			igt_debug(" %02x", topo->mask[j]);
+		igt_debug("\n");
+
+		/* i915 only returns topology for gt 0, do the same here */
+		if (topo->gt_id)
+			goto next;
+
+		/* Follow the same order as in xe query_gt_topology() */
+		switch (topo->type) {
+		case DRM_XE_TOPO_DSS_GEOMETRY:
+			igt_assert_lte(i915_topo->subslice_stride, 8);	/* Fit in u64 mask */
+			memcpy(&geom_mask, topo->mask, i915_topo->subslice_stride);
+			break;
+		case DRM_XE_TOPO_DSS_COMPUTE:
+			memcpy(&compute_mask, topo->mask, i915_topo->subslice_stride);
+			geom_mask |= compute_mask;
+			memcpy(ptr, &geom_mask, i915_topo->subslice_stride);
+			ptr += i915_topo->subslice_stride;
+			break;
+		case DRM_XE_TOPO_EU_PER_DSS:
+			for (i = 0; i < i915_topo->max_subslices; i++) {
+				memcpy(ptr, topo->mask, i915_topo->eu_stride);
+				ptr += i915_topo->eu_stride;
+			}
+			break;
+		default:
+			igt_assert(0);
+		}
+next:
+		query.size -= sz;
+		pos += sz;
+	}
+
+	free(xe_topo);
+
+	return i915_topo;
+}
+
+static struct intel_perf *
+xe_perf_for_fd(int drm_fd, int gt)
+{
+	uint32_t device_id;
+	uint32_t device_revision = 0;
+	uint32_t timestamp_frequency;
+	uint64_t gt_min_freq = 0;
+	uint64_t gt_max_freq = 0;
+	struct drm_i915_query_topology_info *topology;
+	struct intel_perf *ret;
+	int sysfs_dir_fd = open_master_sysfs_dir(drm_fd);
+	char path_min[64], path_max[64];
+
+	if (sysfs_dir_fd < 0) {
+		igt_warn("open_master_sysfs_dir failed\n");
+		return NULL;
+	}
+
+	if (IS_PONTEVECCHIO(xe_dev_id(drm_fd))) {
+		sprintf(path_min, "device/tile%d/gt%d/freq%d/min_freq", gt, gt, gt);
+		sprintf(path_max, "device/tile%d/gt%d/freq%d/max_freq", gt, gt, gt);
+	} else {
+		sprintf(path_min, "device/tile0/gt%d/freq%d/min_freq", gt, gt);
+		sprintf(path_max, "device/tile0/gt%d/freq%d/max_freq", gt, gt);
+	}
+
+	if (!read_sysfs(sysfs_dir_fd, path_min, &gt_min_freq) ||
+	    !read_sysfs(sysfs_dir_fd, path_max, &gt_max_freq)) {
+		igt_warn("Unable to read freqs from sysfs\n");
+		close(sysfs_dir_fd);
+		return NULL;
+	}
+	close(sysfs_dir_fd);
+
+	device_id = intel_get_drm_devid(drm_fd);
+	timestamp_frequency = xe_oa_units(drm_fd)->oa_units[0].oa_timestamp_freq;
+
+	topology = xe_fill_i915_topology_info(drm_fd);
+	if (!topology) {
+		igt_warn("xe_fill_i915_topology_info failed\n");
+		return NULL;
+	}
+
+	ret = intel_perf_for_devinfo(device_id,
+				     device_revision,
+				     timestamp_frequency,
+				     gt_min_freq * 1000000,
+				     gt_max_freq * 1000000,
+				     topology);
+	if (!ret)
+		igt_warn("intel_perf_for_devinfo failed\n");
+
+	free(topology);
+
+	return ret;
+}
+
+struct intel_perf *
+intel_perf_for_fd(int drm_fd, int gt)
+{
+	if (!is_xe_device(drm_fd))
+		return NULL;
+
+	return xe_perf_for_fd(drm_fd, gt);
+}
+
+void
+intel_perf_free(struct intel_perf *perf)
+{
+	struct intel_perf_metric_set *metric_set, *tmp;
+
+	intel_perf_logical_counter_group_free(perf->root_group);
+
+	igt_list_for_each_entry_safe(metric_set, tmp, &perf->metric_sets, link) {
+		igt_list_del(&metric_set->link);
+		intel_perf_metric_set_free(metric_set);
+	}
+
+	free(perf);
+}
+
+void
+intel_perf_add_logical_counter(struct intel_perf *perf,
+			       struct intel_perf_logical_counter *counter,
+			       const char *group_path)
+{
+	const char *group_path_end = group_path + strlen(group_path);
+	struct intel_perf_logical_counter_group *group = perf->root_group, *child_group = NULL;
+	const char *name = group_path;
+
+	while (name < group_path_end) {
+		const char *name_end = strstr(name, "/");
+		char group_name[128] = { 0, };
+		struct intel_perf_logical_counter_group *iter_group;
+
+		if (!name_end)
+			name_end = group_path_end;
+
+		memcpy(group_name, name, name_end - name);
+
+		child_group = NULL;
+		igt_list_for_each_entry(iter_group, &group->groups, link) {
+			if (!strcmp(iter_group->name, group_name)) {
+				child_group = iter_group;
+				break;
+			}
+		}
+
+		if (!child_group)
+			child_group = intel_perf_logical_counter_group_new(perf, group, group_name);
+
+		name = name_end + 1;
+		group = child_group;
+	}
+
+	igt_list_add_tail(&counter->link, &child_group->counters);
+}
+
+void
+intel_perf_add_metric_set(struct intel_perf *perf,
+			  struct intel_perf_metric_set *metric_set)
+{
+	igt_list_add_tail(&metric_set->link, &perf->metric_sets);
+}
+
+static void
+load_metric_set_config(struct intel_perf_metric_set *metric_set, int drm_fd)
+{
+	struct drm_xe_oa_config config;
+	u8 *regs;
+	int ret;
+
+	memset(&config, 0, sizeof(config));
+
+	memcpy(config.uuid, metric_set->hw_config_guid, sizeof(config.uuid));
+
+	config.n_regs = metric_set->n_mux_regs +
+		metric_set->n_b_counter_regs +
+		metric_set->n_flex_regs;
+	config.regs_ptr = to_user_pointer(malloc(2 * config.n_regs * sizeof(u32)));
+	igt_assert(config.regs_ptr);
+	regs = (u8 *)config.regs_ptr;
+
+	memcpy(regs, metric_set->mux_regs, 2 * metric_set->n_mux_regs * sizeof(u32));
+	regs += 2 * metric_set->n_mux_regs * sizeof(u32);
+	memcpy(regs, metric_set->b_counter_regs, 2 * metric_set->n_b_counter_regs * sizeof(u32));
+	regs += 2 * metric_set->n_b_counter_regs * sizeof(u32);
+	memcpy(regs, metric_set->flex_regs, 2 * metric_set->n_flex_regs * sizeof(u32));
+	regs += 2 * metric_set->n_flex_regs * sizeof(u32);
+
+	ret = xe_perf_ioctl(drm_fd, DRM_XE_PERF_OP_ADD_CONFIG, &config);
+	if (ret >= 0)
+		metric_set->perf_oa_metrics_set = ret;
+
+	free((void *)config.regs_ptr);
+}
+
+void
+intel_perf_load_perf_configs(struct intel_perf *perf, int drm_fd)
+{
+	int sysfs_dir_fd = open_master_sysfs_dir(drm_fd);
+	struct dirent *entry;
+	int metrics_dir_fd;
+	DIR *metrics_dir;
+	struct intel_perf_metric_set *metric_set;
+
+	if (sysfs_dir_fd < 0)
+		return;
+
+	metrics_dir_fd = openat(sysfs_dir_fd, "metrics", O_DIRECTORY);
+	close(sysfs_dir_fd);
+	if (metrics_dir_fd < -1)
+		return;
+
+	metrics_dir = fdopendir(metrics_dir_fd);
+	if (!metrics_dir) {
+		close(metrics_dir_fd);
+		return;
+	}
+
+	while ((entry = readdir(metrics_dir))) {
+		bool metric_id_read;
+		uint64_t metric_id;
+		char path[256 + 4];
+		int id_fd;
+
+		if (entry->d_type != DT_DIR)
+			continue;
+
+		snprintf(path, sizeof(path), "%s/id", entry->d_name);
+
+		id_fd = openat(metrics_dir_fd, path, O_RDONLY);
+		if (id_fd < 0)
+			continue;
+
+		metric_id_read = read_fd_uint64(id_fd, &metric_id);
+		close(id_fd);
+
+		if (!metric_id_read)
+			continue;
+
+		igt_list_for_each_entry(metric_set, &perf->metric_sets, link) {
+			if (!strcmp(metric_set->hw_config_guid, entry->d_name)) {
+				metric_set->perf_oa_metrics_set = metric_id;
+				break;
+			}
+		}
+	}
+
+	closedir(metrics_dir);
+
+	igt_list_for_each_entry(metric_set, &perf->metric_sets, link) {
+		if (metric_set->perf_oa_metrics_set)
+			continue;
+
+		load_metric_set_config(metric_set, drm_fd);
+	}
+}
+
+static void xe_oa_prop_to_ext(struct drm_xe_oa_open_prop *properties,
+			      struct drm_xe_ext_set_property *extn)
+{
+	__u64 *prop = (__u64 *)properties->properties_ptr;
+	struct drm_xe_ext_set_property *ext = extn;
+	int i, j;
+
+	for (i = 0; i < properties->num_properties; i++) {
+		ext->base.name = DRM_XE_OA_EXTENSION_SET_PROPERTY;
+		ext->property = *prop++;
+		ext->value = *prop++;
+		ext++;
+	}
+
+	igt_assert_lte(1, i);
+	ext = extn;
+	for (j = 0; j < i - 1; j++)
+		ext[j].base.next_extension = (__u64)&ext[j + 1];
+}
+
+int xe_perf_ioctl(int fd, enum drm_xe_perf_op op, void *arg)
+{
+#define XE_OA_MAX_SET_PROPERTIES 16
+
+	struct drm_xe_ext_set_property ext[XE_OA_MAX_SET_PROPERTIES] = {};
+
+	/* Chain the PERF layer struct */
+	struct drm_xe_perf_param p = {
+		.extensions = 0,
+		.perf_type = DRM_XE_PERF_TYPE_OA,
+		.perf_op = op,
+		.param = (__u64)((op == DRM_XE_PERF_OP_STREAM_OPEN) ? ext : arg),
+	};
+
+	if (op == DRM_XE_PERF_OP_STREAM_OPEN) {
+		struct drm_xe_oa_open_prop *oprop = (struct drm_xe_oa_open_prop *)arg;
+
+		igt_assert_lte(oprop->num_properties, XE_OA_MAX_SET_PROPERTIES);
+		xe_oa_prop_to_ext(oprop, ext);
+	}
+
+	return igt_ioctl(fd, DRM_IOCTL_XE_PERF, &p);
+}
+
+void xe_perf_ioctl_err(int fd, enum drm_xe_perf_op op, void *arg, int err)
+{
+	igt_assert_eq(xe_perf_ioctl(fd, op, arg), -1);
+	igt_assert_eq(errno, err);
+	errno = 0;
+}
diff --git a/lib/xe/xe_oa.h b/lib/xe/xe_oa.h
new file mode 100644
index 000000000000..f3a9d1f6c7b4
--- /dev/null
+++ b/lib/xe/xe_oa.h
@@ -0,0 +1,328 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2023 Intel Corporation
+ */
+
+#ifndef PERF_METRICS_H
+#define PERF_METRICS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdbool.h>
+#include <stdint.h>
+
+#include "igt_list.h"
+#include <xe_drm.h>
+
+#define _DIV_ROUND_UP(a, b)  (((a) + (b) - 1) / (b))
+
+#define INTEL_DEVICE_MAX_SLICES           (8)
+#define INTEL_DEVICE_MAX_SUBSLICES        (32)
+#define INTEL_DEVICE_MAX_EUS_PER_SUBSLICE (16) /* Maximum on gfx12 */
+
+struct intel_perf_devinfo {
+	char devname[20];
+
+	/* The following fields are prepared for equations from the XML files.
+	 * Their values are build up from the topology fields.
+	 */
+	uint32_t devid;
+	uint32_t graphics_ver;
+	uint32_t revision;
+	/**
+	 * Bit shifting required to put OA report timestamps into
+	 * timestamp_frequency (some HW generations can shift
+	 * timestamp values to the right by a number of bits).
+	 */
+	int32_t  oa_timestamp_shift;
+	/**
+	 * On some platforms only part of the timestamp bits are valid
+	 * (on previous platforms we would get full 32bits, newer
+	 * platforms can have fewer). It's important to know when
+	 * correlating the full 36bits timestamps to the OA report
+	 * timestamps.
+	 */
+	uint64_t  oa_timestamp_mask;
+	/* Frequency of the timestamps in Hz */
+	uint64_t timestamp_frequency;
+	uint64_t gt_min_freq;
+	uint64_t gt_max_freq;
+
+	/* Total number of EUs */
+	uint64_t n_eus;
+	/* Total number of EUs in a slice */
+	uint64_t n_eu_slices;
+	/* Total number of subslices/dualsubslices */
+	uint64_t n_eu_sub_slices;
+	/* Number of subslices/dualsubslices in the first half of the
+	 * slices.
+	 */
+	uint64_t n_eu_sub_slices_half_slices;
+	/* Mask of available subslices/dualsubslices */
+	uint64_t subslice_mask;
+	/* Mask of available slices */
+	uint64_t slice_mask;
+	/* Number of threads in one EU */
+	uint64_t eu_threads_count;
+
+	/**
+	 * Maximu number of slices present on this device (can be more than
+	 * num_slices if some slices are fused).
+	 */
+	uint16_t max_slices;
+
+	/**
+	 * Maximu number of subslices per slice present on this device (can be more
+	 * than the maximum value in the num_subslices[] array if some subslices are
+	 * fused).
+	 */
+	uint16_t max_subslices_per_slice;
+
+	/**
+	 * Stride to access subslice_masks[].
+	 */
+	uint16_t subslice_slice_stride;
+
+	/**
+	 * Maximum number of EUs per subslice (can be more than
+	 * num_eu_per_subslice if some EUs are fused off).
+	 */
+	uint16_t max_eu_per_subslice;
+
+	/**
+	 * Strides to access eu_masks[].
+	 */
+	uint16_t eu_slice_stride;
+	uint16_t eu_subslice_stride;
+
+	/**
+	 * A bit mask of the slices available.
+	 */
+	uint8_t slice_masks[_DIV_ROUND_UP(INTEL_DEVICE_MAX_SLICES, 8)];
+
+	/**
+	 * An array of bit mask of the subslices available, use subslice_slice_stride
+	 * to access this array.
+	 */
+	uint8_t subslice_masks[INTEL_DEVICE_MAX_SLICES *
+			       _DIV_ROUND_UP(INTEL_DEVICE_MAX_SUBSLICES, 8)];
+
+	/**
+	 * An array of bit mask of EUs available, use eu_slice_stride &
+	 * eu_subslice_stride to access this array.
+	 */
+	uint8_t eu_masks[INTEL_DEVICE_MAX_SLICES *
+			 INTEL_DEVICE_MAX_SUBSLICES *
+			 _DIV_ROUND_UP(INTEL_DEVICE_MAX_EUS_PER_SUBSLICE, 8)];
+};
+
+typedef enum {
+	INTEL_PERF_LOGICAL_COUNTER_STORAGE_UINT64,
+	INTEL_PERF_LOGICAL_COUNTER_STORAGE_UINT32,
+	INTEL_PERF_LOGICAL_COUNTER_STORAGE_DOUBLE,
+	INTEL_PERF_LOGICAL_COUNTER_STORAGE_FLOAT,
+	INTEL_PERF_LOGICAL_COUNTER_STORAGE_BOOL32,
+} intel_perf_logical_counter_storage_t;
+
+typedef enum {
+	INTEL_PERF_LOGICAL_COUNTER_TYPE_RAW,
+	INTEL_PERF_LOGICAL_COUNTER_TYPE_DURATION_RAW,
+	INTEL_PERF_LOGICAL_COUNTER_TYPE_DURATION_NORM,
+	INTEL_PERF_LOGICAL_COUNTER_TYPE_EVENT,
+	INTEL_PERF_LOGICAL_COUNTER_TYPE_THROUGHPUT,
+	INTEL_PERF_LOGICAL_COUNTER_TYPE_TIMESTAMP,
+} intel_perf_logical_counter_type_t;
+
+typedef enum {
+	/* size */
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_BYTES,
+
+	/* frequency */
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_HZ,
+
+	/* time */
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_NS,
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_US,
+
+	/**/
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_PIXELS,
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_TEXELS,
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_THREADS,
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_PERCENT,
+
+	/* events */
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_MESSAGES,
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_NUMBER,
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_CYCLES,
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_EVENTS,
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_UTILIZATION,
+
+	/**/
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_EU_SENDS_TO_L3_CACHE_LINES,
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_EU_ATOMIC_REQUESTS_TO_L3_CACHE_LINES,
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_EU_REQUESTS_TO_L3_CACHE_LINES,
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_EU_BYTES_PER_L3_CACHE_LINE,
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_GBPS,
+
+	INTEL_PERF_LOGICAL_COUNTER_UNIT_MAX
+} intel_perf_logical_counter_unit_t;
+
+/* Hold deltas of raw performance counters. */
+struct intel_perf_accumulator {
+#define INTEL_PERF_MAX_RAW_OA_COUNTERS 64
+	uint64_t deltas[INTEL_PERF_MAX_RAW_OA_COUNTERS];
+};
+
+struct intel_perf;
+struct intel_perf_metric_set;
+struct intel_perf_logical_counter {
+	const struct intel_perf_metric_set *metric_set;
+	const char *name;
+	const char *symbol_name;
+	const char *desc;
+	const char *group;
+	bool (*availability)(const struct intel_perf *perf);
+	intel_perf_logical_counter_storage_t storage;
+	intel_perf_logical_counter_type_t type;
+	intel_perf_logical_counter_unit_t unit;
+	union {
+		uint64_t (*max_uint64)(const struct intel_perf *perf,
+				       const struct intel_perf_metric_set *metric_set,
+				       uint64_t *deltas);
+		double (*max_float)(const struct intel_perf *perf,
+				    const struct intel_perf_metric_set *metric_set,
+				    uint64_t *deltas);
+	};
+
+	union {
+		uint64_t (*read_uint64)(const struct intel_perf *perf,
+					const struct intel_perf_metric_set *metric_set,
+					uint64_t *deltas);
+		double (*read_float)(const struct intel_perf *perf,
+				     const struct intel_perf_metric_set *metric_set,
+				     uint64_t *deltas);
+	};
+
+	struct igt_list_head link; /* list from intel_perf_logical_counter_group.counters */
+};
+
+struct intel_perf_register_prog {
+	uint32_t reg;
+	uint32_t val;
+};
+
+struct intel_perf_metric_set {
+	const char *name;
+	const char *symbol_name;
+	const char *hw_config_guid;
+
+	struct intel_perf_logical_counter *counters;
+	int n_counters;
+
+	uint64_t perf_oa_metrics_set;
+	int perf_oa_format;
+	int perf_raw_size;
+
+	/* For indexing into accumulator->deltas[] ... */
+	int gpu_time_offset;
+	int gpu_clock_offset;
+	int a_offset;
+	int b_offset;
+	int c_offset;
+	int perfcnt_offset;
+
+	const struct intel_perf_register_prog *b_counter_regs;
+	uint32_t n_b_counter_regs;
+
+	const struct intel_perf_register_prog *mux_regs;
+	uint32_t n_mux_regs;
+
+	const struct intel_perf_register_prog *flex_regs;
+	uint32_t n_flex_regs;
+
+	struct igt_list_head link;
+};
+
+/* A tree structure with group having subgroups and counters. */
+struct intel_perf_logical_counter_group {
+	char *name;
+
+	struct igt_list_head counters;
+	struct igt_list_head groups;
+
+	struct igt_list_head link;  /* link for intel_perf_logical_counter_group.groups */
+};
+
+struct intel_perf {
+	const char *name;
+
+	struct intel_perf_logical_counter_group *root_group;
+
+	struct igt_list_head metric_sets;
+
+	struct intel_perf_devinfo devinfo;
+};
+
+struct drm_i915_query_topology_info;
+
+static inline bool
+intel_perf_devinfo_slice_available(const struct intel_perf_devinfo *devinfo,
+				   int slice)
+{
+	return (devinfo->slice_masks[slice / 8] & (1U << (slice % 8))) != 0;
+}
+
+static inline bool
+intel_perf_devinfo_subslice_available(const struct intel_perf_devinfo *devinfo,
+				      int slice, int subslice)
+{
+	return (devinfo->subslice_masks[slice * devinfo->subslice_slice_stride +
+					subslice / 8] & (1U << (subslice % 8))) != 0;
+}
+
+static inline bool
+intel_perf_devinfo_eu_available(const struct intel_perf_devinfo *devinfo,
+				int slice, int subslice, int eu)
+{
+	unsigned subslice_offset = slice * devinfo->eu_slice_stride +
+		subslice * devinfo->eu_subslice_stride;
+
+	return (devinfo->eu_masks[subslice_offset + eu / 8] & (1U << eu % 8)) != 0;
+}
+
+struct drm_i915_query_topology_info *xe_fill_i915_topology_info(int drm_fd);
+struct intel_perf *intel_perf_for_fd(int drm_fd, int gt);
+struct intel_perf *intel_perf_for_devinfo(uint32_t device_id,
+					  uint32_t revision,
+					  uint64_t timestamp_frequency,
+					  uint64_t gt_min_freq,
+					  uint64_t gt_max_freq,
+					  const struct drm_i915_query_topology_info *topology);
+void intel_perf_free(struct intel_perf *perf);
+
+void intel_perf_add_logical_counter(struct intel_perf *perf,
+				    struct intel_perf_logical_counter *counter,
+				    const char *group);
+
+void intel_perf_add_metric_set(struct intel_perf *perf,
+			       struct intel_perf_metric_set *metric_set);
+
+void intel_perf_load_perf_configs(struct intel_perf *perf, int drm_fd);
+
+
+struct drm_xe_oa_open_prop {
+	uint32_t num_properties;
+	uint32_t reserved;
+	uint64_t properties_ptr;
+};
+
+int xe_perf_ioctl(int fd, enum drm_xe_perf_op op, void *arg);
+void xe_perf_ioctl_err(int fd, enum drm_xe_perf_op op, void *arg, int err);
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* PERF_METRICS_H */
diff --git a/lib/xe/xe_query.c b/lib/xe/xe_query.c
index 729fba6b1a43..9e08caa74b1b 100644
--- a/lib/xe/xe_query.c
+++ b/lib/xe/xe_query.c
@@ -114,6 +114,27 @@ static struct drm_xe_query_mem_regions *xe_query_mem_regions_new(int fd)
 	return mem_regions;
 }
 
+static struct drm_xe_query_oa_units *xe_query_oa_units_new(int fd)
+{
+	struct drm_xe_query_oa_units *oa_units;
+	struct drm_xe_device_query query = {
+		.extensions = 0,
+		.query = DRM_XE_DEVICE_QUERY_OA_UNITS,
+		.size = 0,
+		.data = 0,
+	};
+
+	igt_assert_eq(igt_ioctl(fd, DRM_IOCTL_XE_DEVICE_QUERY, &query), 0);
+
+	oa_units = malloc(query.size);
+	igt_assert(oa_units);
+
+	query.data = to_user_pointer(oa_units);
+	igt_assert_eq(igt_ioctl(fd, DRM_IOCTL_XE_DEVICE_QUERY, &query), 0);
+
+	return oa_units;
+}
+
 static uint64_t native_region_for_gt(const struct drm_xe_query_gt_list *gt_list, int gt)
 {
 	uint64_t region;
@@ -251,6 +272,7 @@ struct xe_device *xe_device_get(int fd)
 	xe_dev->memory_regions = __memory_regions(xe_dev->gt_list);
 	xe_dev->engines = xe_query_engines(fd);
 	xe_dev->mem_regions = xe_query_mem_regions_new(fd);
+	xe_dev->oa_units = xe_query_oa_units_new(fd);
 	xe_dev->vram_size = calloc(xe_dev->gt_list->num_gt, sizeof(*xe_dev->vram_size));
 	xe_dev->visible_vram_size = calloc(xe_dev->gt_list->num_gt, sizeof(*xe_dev->visible_vram_size));
 	for (int gt = 0; gt < xe_dev->gt_list->num_gt; gt++) {
@@ -524,6 +546,22 @@ uint32_t xe_min_page_size(int fd, uint64_t region)
  */
 xe_dev_FN(xe_config, config, struct drm_xe_query_config *);
 
+/**
+ * xe_gt_list:
+ * @fd: xe device fd
+ *
+ * Returns query gts of xe device @fd.
+ */
+xe_dev_FN(xe_gt_list, gt_list, struct drm_xe_query_gt_list *);
+
+/**
+ * xe_oa_units:
+ * @fd: xe device fd
+ *
+ * Returns query gts of xe device @fd.
+ */
+xe_dev_FN(xe_oa_units, oa_units, struct drm_xe_query_oa_units *);
+
 /**
  * xe_number_engine:
  * @fd: xe device fd
diff --git a/lib/xe/xe_query.h b/lib/xe/xe_query.h
index 2460384c99af..5e2b7d223a65 100644
--- a/lib/xe/xe_query.h
+++ b/lib/xe/xe_query.h
@@ -38,6 +38,9 @@ struct xe_device {
 	/** @mem_regions: regions memory information and usage */
 	struct drm_xe_query_mem_regions *mem_regions;
 
+	/** @oa_units: information about OA units */
+	struct drm_xe_query_oa_units *oa_units;
+
 	/** @vram_size: array of vram sizes for all gt_list */
 	uint64_t *vram_size;
 
@@ -85,6 +88,8 @@ const char *xe_region_name(uint64_t region);
 uint16_t xe_region_class(int fd, uint64_t region);
 uint32_t xe_min_page_size(int fd, uint64_t region);
 struct drm_xe_query_config *xe_config(int fd);
+struct drm_xe_query_gt_list *xe_gt_list(int fd);
+struct drm_xe_query_oa_units *xe_oa_units(int fd);
 unsigned int xe_number_engines(int fd);
 bool xe_has_vram(int fd);
 uint64_t xe_vram_size(int fd, int gt);
diff --git a/tests/intel-ci/xe-fast-feedback.testlist b/tests/intel-ci/xe-fast-feedback.testlist
index 6c01374c1adf..a44e9e84d0eb 100644
--- a/tests/intel-ci/xe-fast-feedback.testlist
+++ b/tests/intel-ci/xe-fast-feedback.testlist
@@ -1,6 +1,49 @@
 # Should be the first test
 igt at xe_module_load@load
 
+# oa tests
+igt at xe-oa@i915-ref-count
+igt at xe-oa@sysctl-defaults
+igt at xe-oa@non-system-wide-paranoid
+igt at xe-oa@invalid-open-flags
+igt at xe-oa@invalid-oa-metric-set-id
+igt at xe-oa@invalid-oa-format-id
+igt at xe-oa@missing-sample-flags
+igt at xe-oa@oa-formats
+igt at xe-oa@invalid-oa-exponent
+igt at xe-oa@low-oa-exponent-permissions
+igt at xe-oa@oa-exponents
+igt at xe-oa@per-context-mode-unprivileged
+igt at xe-oa@buffer-fill
+igt at xe-oa@non-zero-reason
+igt at xe-oa@disabled-read-error
+igt at xe-oa@non-sampling-read-error
+igt at xe-oa@enable-disable
+igt at xe-oa@blocking
+igt at xe-oa@blocking-parameterized
+igt at xe-oa@polling
+igt at xe-oa@polling-parameterized
+igt at xe-oa@polling-small-buf
+igt at xe-oa@short-reads
+igt at xe-oa@mi-rpc
+igt at xe-oa@unprivileged-single-ctx-counters
+igt at xe-oa@gen8-unprivileged-single-ctx-counters
+igt at xe-oa@gen12-mi-rpc
+igt at xe-oa@gen12-oa-tlb-invalidate
+igt at xe-oa@gen12-unprivileged-single-ctx-counters
+igt at xe-oa@gen12-invalid-class-instance
+igt at xe-oa@gen12-group-exclusive-stream-sample-oa
+igt at xe-oa@gen12-group-exclusive-stream-ctx-handle
+igt at xe-oa@gen12-group-concurrent-oa-buffer-read
+igt at xe-oa@rc6-disable
+igt at xe-oa@stress-open-close
+igt at xe-oa@global-sseu-config-invalid
+igt at xe-oa@global-sseu-config
+igt at xe-oa@invalid-create-userspace-config
+igt at xe-oa@invalid-remove-userspace-config
+igt at xe-oa@create-destroy-userspace-config
+igt at xe-oa@whitelisted-registers-userspace-config
+
 igt at xe_compute@compute-square
 igt at xe_create@create-execqueues-noleak
 igt at xe_create@create-execqueues-leak
diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
new file mode 100644
index 000000000000..b10216813ac6
--- /dev/null
+++ b/tests/intel/xe_oa.c
@@ -0,0 +1,4999 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <fcntl.h>
+#include <inttypes.h>
+#include <errno.h>
+#include <signal.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/times.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <time.h>
+#include <poll.h>
+#include <math.h>
+
+#include "drm.h"
+#include "igt.h"
+#include "igt_device.h"
+#include "igt_sysfs.h"
+#include "xe/xe_ioctl.h"
+#include "xe/xe_query.h"
+#include "xe/xe_oa.h"
+
+/**
+ * TEST: xe_oa
+ * Description: Test the xe oa metrics streaming interface
+ * Run type: FULL
+ *
+ * SUBTEST: blocking
+ * Description: Test blocking read with default hrtimer frequency
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: buffer-fill
+ * Description: Test the xe perf metrics streaming interface
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: create-destroy-userspace-config
+ * Description: Test the xe perf metrics streaming interface
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: disabled-read-error
+ * Description: Test the xe perf metrics streaming interface
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: enable-disable
+ * Feature: oa
+ *
+ * SUBTEST: oa-unit-concurrent-oa-buffer-read
+ * Description: Verify concurrent reads from OA buffers in different oa units
+ * Feature: oa
+ *
+ * SUBTEST: oa-unit-exclusive-stream-ctx-handle
+ * Description: Verify exclusivity of perf streams with ctx handle
+ * Feature: oa
+ *
+ * SUBTEST: oa-unit-exclusive-stream-sample-oa
+ * Description: Verify exclusivity of perf streams with sample oa option
+ * Feature: oa
+ *
+ * SUBTEST: mi-rpc
+ * Description: Test MI REPORT PERF COUNT
+ * Feature: oa
+ *
+ * SUBTEST: oa-tlb-invalidate
+ * Description: Test OA TLB invalidate
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: unprivileged-single-ctx-counters
+ * Description: Measure performance for a specific context using OAR
+ * Feature: oa
+ *
+ * SUBTEST: xe-ref-count
+ * Description: Test the xe perf metrics streaming interface
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: invalid-create-userspace-config
+ * Description: Test the xe perf metrics streaming interface
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: invalid-oa-exponent
+ * Description: Test the xe perf metrics streaming interface
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: invalid-oa-format-id
+ * Description: Test the xe perf metrics streaming interface
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: invalid-oa-metric-set-id
+ * Description: Test the xe perf metrics streaming interface
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: invalid-open-flags
+ * Description: Test the xe perf metrics streaming interface
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: invalid-remove-userspace-config
+ * Description: Test the xe perf metrics streaming interface
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: low-oa-exponent-permissions
+ * Description: Test the xe perf metrics streaming interface
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: mi-rpc
+ * Feature: oa
+ *
+ * SUBTEST: missing-sample-flags
+ * Description: Test the xe perf metrics streaming interface
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: non-sampling-read-error
+ * Description: Test the xe perf metrics streaming interface
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: non-system-wide-paranoid
+ * Feature: oa
+ *
+ * SUBTEST: non-zero-reason
+ * Description: Test that reason field in OA reports is never 0
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: oa-exponents
+ * Feature: oa
+ *
+ * SUBTEST: oa-formats
+ * Description: Test the xe perf metrics streaming interface
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: per-context-mode-unprivileged
+ * Feature: oa, obsolete
+ *
+ * SUBTEST: polling
+ * Description: Test polled read with default hrtimer frequency
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: polling-parameterized
+ * Description: Test polled read with different hrtimer frequencies
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: polling-small-buf
+ * Description: Test polled read with buffer size smaller than available data
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: rc6-disable
+ * Feature: oa
+ *
+ * SUBTEST: short-reads
+ * Description: Test the xe perf metrics streaming interface
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: stress-open-close
+ * Description: Stress tests opening & closing the xe-perf stream in a busy loop
+ * Feature: oa
+ *
+ * SUBTEST: sysctl-defaults
+ * Description: Test the xe perf metrics streaming interface
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: unprivileged-single-ctx-counters
+ * Feature: oa, obsolete
+ *
+ * SUBTEST: whitelisted-registers-userspace-config
+ * Description: Test the xe perf metrics streaming interface
+ * Feature: xe streaming interface, oa
+ * Test category: Perf
+ *
+ * SUBTEST: map-oa-buffer
+ * Description: Test oa buffer mmap
+ * Feature: oa
+ *
+ * SUBTEST: invalid-map-oa-buffer
+ * Description: Test oa buffer mmap
+ * Feature: oa
+ *
+ * SUBTEST: non-privileged-map-oa-buffer
+ * Description: Test oa buffer mmap
+ * Feature: oa
+ *
+ * SUBTEST: non-privileged-access-vaddr
+ * Description: Test oa buffer mmap
+ * Feature: oa
+ *
+ * SUBTEST: privileged-forked-access-vaddr
+ * Description: Test oa buffer mmap
+ * Feature: oa
+ *
+ * SUBTEST: closed-fd-and-unmapped-access
+ * Description: Test oa buffer mmap
+ * Feature: oa
+ */
+
+IGT_TEST_DESCRIPTION("Test the xe oa metrics streaming interface");
+
+#define OASTATUS_MMIO_TRG_Q_FULL	REG_BIT(6)
+#define OASTATUS_COUNTER_OVERFLOW	REG_BIT(2)
+#define OASTATUS_BUFFER_OVERFLOW	REG_BIT(1)
+#define OASTATUS_REPORT_LOST		REG_BIT(0)
+
+#define OA_MI_REPORT_PERF_COUNT		((0x28 << 23) | (4 - 2))
+
+#define OAREPORT_REASON_MASK           0x3f
+#define OAREPORT_REASON_SHIFT          19
+#define OAREPORT_REASON_TIMER          (1<<0)
+#define OAREPORT_REASON_INTERNAL       (3<<1)
+#define OAREPORT_REASON_CTX_SWITCH     (1<<3)
+#define OAREPORT_REASON_GO             (1<<4)
+#define OAREPORT_REASON_CLK_RATIO      (1<<5)
+
+#define PIPE_CONTROL_GLOBAL_SNAPSHOT_COUNT_RESET	(1 << 19)
+#define PIPE_CONTROL_SYNC_GFDT	  (1 << 17)
+#define PIPE_CONTROL_NO_WRITE	   (0 << 14)
+#define PIPE_CONTROL_WRITE_IMMEDIATE    (1 << 14)
+#define PIPE_CONTROL_WRITE_DEPTH_COUNT  (2 << 14)
+#define PIPE_CONTROL_RENDER_TARGET_FLUSH (1 << 12)
+#define PIPE_CONTROL_INSTRUCTION_INVALIDATE (1 << 11)
+#define PIPE_CONTROL_ISP_DIS	    (1 << 9)
+#define PIPE_CONTROL_INTERRUPT_ENABLE   (1 << 8)
+/* GT */
+#define PIPE_CONTROL_DATA_CACHE_INVALIDATE      (1 << 5)
+#define PIPE_CONTROL_PPGTT_WRITE	(0 << 2)
+#define PIPE_CONTROL_GLOBAL_GTT_WRITE   (1 << 2)
+
+#define MAX_OA_BUF_SIZE (16 * 1024 * 1024)
+#define OA_BUFFER_SIZE MAX_OA_BUF_SIZE
+
+#define RING_FORCE_TO_NONPRIV_ADDRESS_MASK 0x03fffffc
+/*
+ * Engine specific registers defined as offsets from engine->mmio_base. For
+ * these registers, OR bit[0] with 1 so we can add the mmio_base when running
+ * engine specific test.
+ */
+#define MMIO_BASE_OFFSET 0x1
+
+#define OAG_OASTATUS (0xdafc)
+#define OAG_PERF_COUNTER_B(idx) (0xDA94 + 4 * (idx))
+#define OAG_OATAILPTR (0xdb04)
+#define OAG_OATAILPTR_MASK 0xffffffc0
+#define OAG_OABUFFER (0xdb08)
+
+#define ADD_PROPS(_head, _tail, _key, _value) \
+	do { \
+		igt_assert((_tail - _head) < (DRM_XE_OA_PROPERTY_MAX * 2)); \
+		*_tail++ = DRM_XE_OA_PROPERTY_##_key; \
+		*_tail++ = _value; \
+	} while (0)
+
+/*
+ * If formats are added here remember to change
+ * lib/xe/oa-configs/oa-metricset-codegen.py
+ */
+enum xe_oa_format_name {
+	XE_OA_FORMAT_C4_B8 = 1,
+
+	/* Gen8+ */
+	XE_OA_FORMAT_A12,
+	XE_OA_FORMAT_A12_B8_C8,
+	XE_OA_FORMAT_A32u40_A4u32_B8_C8,
+
+	/* DG2 */
+	XE_OAR_FORMAT_A32u40_A4u32_B8_C8,
+	XE_OA_FORMAT_A24u40_A14u32_B8_C8,
+
+	/* DG2/MTL OAC */
+	XE_OAC_FORMAT_A24u64_B8_C8,
+	XE_OAC_FORMAT_A22u32_R2u32_B8_C8,
+
+	/* MTL OAM */
+	XE_OAM_FORMAT_MPEC8u64_B8_C8,
+	XE_OAM_FORMAT_MPEC8u32_B8_C8,
+
+	/* Xe2+ */
+	XE_OA_FORMAT_PEC64u64,
+	XE_OA_FORMAT_PEC64u64_B8_C8,
+	XE_OA_FORMAT_PEC64u32,
+	XE_OA_FORMAT_PEC32u64_G1,
+	XE_OA_FORMAT_PEC32u32_G1,
+	XE_OA_FORMAT_PEC32u64_G2,
+	XE_OA_FORMAT_PEC32u32_G2,
+	XE_OA_FORMAT_PEC36u64_G1_32_G2_4,
+	XE_OA_FORMAT_PEC36u64_G1_4_G2_32,
+
+	XE_OA_FORMAT_MAX,
+};
+
+struct accumulator {
+#define MAX_RAW_OA_COUNTERS 62
+	enum xe_oa_format_name format;
+
+	uint64_t deltas[MAX_RAW_OA_COUNTERS];
+};
+
+/* OA unit types */
+enum {
+	OAG,
+	OAR,
+	OAM,
+
+	MAX_OA_TYPE,
+};
+
+struct oa_format {
+	const char *name;
+	size_t size;
+	int a40_high_off; /* bytes */
+	int a40_low_off;
+	int n_a40;
+	int a64_off;
+	int n_a64;
+	int a_off;
+	int n_a;
+	int first_a;
+	int first_a40;
+	int b_off;
+	int n_b;
+	int c_off;
+	int n_c;
+	int oa_type; /* of enum xe_oa_format_name */
+	bool report_hdr_64bit;
+	int counter_select;
+	int counter_size;
+	int bc_report;
+};
+
+static struct oa_format gen12_oa_formats[XE_OA_FORMAT_MAX] = {
+	[XE_OA_FORMAT_A32u40_A4u32_B8_C8] = {
+		"A32u40_A4u32_B8_C8", .size = 256,
+		.a40_high_off = 160, .a40_low_off = 16, .n_a40 = 32,
+		.a_off = 144, .n_a = 4, .first_a = 32,
+		.b_off = 192, .n_b = 8,
+		.c_off = 224, .n_c = 8, .oa_type = DRM_XE_OA_FMT_TYPE_OAG,
+		.counter_select = 5,
+	},
+};
+
+static struct oa_format dg2_oa_formats[XE_OA_FORMAT_MAX] = {
+	[XE_OAR_FORMAT_A32u40_A4u32_B8_C8] = {
+		"A32u40_A4u32_B8_C8", .size = 256,
+		.a40_high_off = 160, .a40_low_off = 16, .n_a40 = 32,
+		.a_off = 144, .n_a = 4, .first_a = 32,
+		.b_off = 192, .n_b = 8,
+		.c_off = 224, .n_c = 8, .oa_type = DRM_XE_OA_FMT_TYPE_OAR,
+		.counter_select = 5,
+	},
+	/* This format has A36 and A37 interleaved with high bytes of some A
+	 * counters, so we will accumulate only subset of counters.
+	 */
+	[XE_OA_FORMAT_A24u40_A14u32_B8_C8] = {
+		"A24u40_A14u32_B8_C8", .size = 256,
+		/* u40: A4 - A23 */
+		.a40_high_off = 160, .a40_low_off = 16, .n_a40 = 20, .first_a40 = 4,
+		/* u32: A0 - A3 */
+		.a_off = 16, .n_a = 4,
+		.b_off = 192, .n_b = 8,
+		.c_off = 224, .n_c = 8, .oa_type = DRM_XE_OA_FMT_TYPE_OAG,
+		.counter_select = 5,
+	},
+	/* This format has 24 u64 counters ranging from A0 - A35. Until we come
+	 * up with a better mechanism to define missing counters, we will use a
+	 * subset of counters that are indexed by one-increments - A28 - A35.
+	 */
+	[XE_OAC_FORMAT_A24u64_B8_C8] = {
+		"OAC_A24u64_B8_C8", .size = 320,
+		.a64_off = 160, .n_a64 = 8,
+		.b_off = 224, .n_b = 8,
+		.c_off = 256, .n_c = 8, .oa_type = DRM_XE_OA_FMT_TYPE_OAC,
+		.report_hdr_64bit = true,
+		.counter_select = 1, },
+};
+
+static struct oa_format mtl_oa_formats[XE_OA_FORMAT_MAX] = {
+	[XE_OAR_FORMAT_A32u40_A4u32_B8_C8] = {
+		"A32u40_A4u32_B8_C8", .size = 256,
+		.a40_high_off = 160, .a40_low_off = 16, .n_a40 = 32,
+		.a_off = 144, .n_a = 4, .first_a = 32,
+		.b_off = 192, .n_b = 8,
+		.c_off = 224, .n_c = 8, .oa_type = DRM_XE_OA_FMT_TYPE_OAR,
+		.counter_select = 5,
+	},
+	/* This format has A36 and A37 interleaved with high bytes of some A
+	 * counters, so we will accumulate only subset of counters.
+	 */
+	[XE_OA_FORMAT_A24u40_A14u32_B8_C8] = {
+		"A24u40_A14u32_B8_C8", .size = 256,
+		/* u40: A4 - A23 */
+		.a40_high_off = 160, .a40_low_off = 16, .n_a40 = 20, .first_a40 = 4,
+		/* u32: A0 - A3 */
+		.a_off = 16, .n_a = 4,
+		.b_off = 192, .n_b = 8,
+		.c_off = 224, .n_c = 8, .oa_type = DRM_XE_OA_FMT_TYPE_OAG,
+		.counter_select = 5,
+	},
+
+	/* Treat MPEC countes as A counters for now */
+	[XE_OAM_FORMAT_MPEC8u64_B8_C8] = {
+		"MPEC8u64_B8_C8", .size = 192,
+		.a64_off = 32, .n_a64 = 8,
+		.b_off = 96, .n_b = 8,
+		.c_off = 128, .n_c = 8, .oa_type = DRM_XE_OA_FMT_TYPE_OAM_MPEC,
+		.report_hdr_64bit = true,
+		.counter_select = 1,
+	},
+	[XE_OAM_FORMAT_MPEC8u32_B8_C8] = {
+		"MPEC8u32_B8_C8", .size = 128,
+		.a_off = 32, .n_a = 8,
+		.b_off = 64, .n_b = 8,
+		.c_off = 96, .n_c = 8, .oa_type = DRM_XE_OA_FMT_TYPE_OAM_MPEC,
+		.report_hdr_64bit = true,
+		.counter_select = 2,
+	},
+	/* This format has 24 u64 counters ranging from A0 - A35. Until we come
+	 * up with a better mechanism to define missing counters, we will use a
+	 * subset of counters that are indexed by one-increments - A28 - A35.
+	 */
+	[XE_OAC_FORMAT_A24u64_B8_C8] = {
+		"OAC_A24u64_B8_C8", .size = 320,
+		.a64_off = 160, .n_a64 = 8,
+		.b_off = 224, .n_b = 8,
+		.c_off = 256, .n_c = 8, .oa_type = DRM_XE_OA_FMT_TYPE_OAC,
+		.report_hdr_64bit = true,
+		.counter_select = 1, },
+};
+
+static struct oa_format lnl_oa_formats[XE_OA_FORMAT_MAX] = {
+	[XE_OA_FORMAT_PEC64u64] = {
+		"PEC64u64", .size = 576,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 1,
+		.counter_size = 1,
+		.bc_report = 0 },
+	[XE_OA_FORMAT_PEC64u64_B8_C8] = {
+		"PEC64u64_B8_C8", .size = 640,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 1,
+		.counter_size = 1,
+		.bc_report = 1 },
+	[XE_OA_FORMAT_PEC64u32] = {
+		"PEC64u32", .size = 320,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 1,
+		.counter_size = 0,
+		.bc_report = 0 },
+	[XE_OA_FORMAT_PEC32u64_G1] = {
+		"PEC32u64_G1", .size = 320,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 5,
+		.counter_size = 1,
+		.bc_report = 0 },
+	[XE_OA_FORMAT_PEC32u32_G1] = {
+		"PEC32u32_G1", .size = 192,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 5,
+		.counter_size = 0,
+		.bc_report = 0 },
+	[XE_OA_FORMAT_PEC32u64_G2] = {
+		"PEC32u64_G2", .size = 320,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 6,
+		.counter_size = 1,
+		.bc_report = 0 },
+	[XE_OA_FORMAT_PEC32u32_G2] = {
+		"PEC32u64_G2", .size = 192,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 6,
+		.counter_size = 0,
+		.bc_report = 0 },
+	[XE_OA_FORMAT_PEC36u64_G1_32_G2_4] = {
+		"PEC36u64_G1_32_G2_4", .size = 320,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 3,
+		.counter_size = 1,
+		.bc_report = 0 },
+	[XE_OA_FORMAT_PEC36u64_G1_4_G2_32] = {
+		"PEC36u64_G1_4_G2_32_G2", .size = 320,
+		.oa_type = DRM_XE_OA_FMT_TYPE_PEC,
+		.report_hdr_64bit = true,
+		.counter_select = 4,
+		.counter_size = 1,
+		.bc_report = 0 },
+};
+
+/* No A counters currently reserved/undefined for gen8+ so far */
+static bool undefined_a_counters[45];
+
+static int drm_fd = -1;
+static int sysfs = -1;
+static int pm_fd = -1;
+static int stream_fd = -1;
+static uint32_t devid;
+
+struct drm_xe_engine_class_instance default_hwe;
+
+static struct intel_perf *intel_perf;
+static uint64_t oa_exp_1_millisec;
+struct intel_mmio_data mmio_data;
+static igt_render_copyfunc_t render_copy;
+
+static struct intel_perf_metric_set *metric_set(const struct drm_xe_engine_class_instance *hwe);
+#define default_test_set metric_set(&default_hwe)
+
+static void set_fd_flags(int fd, int flags)
+{
+	int old = fcntl(fd, F_GETFL, 0);
+
+	igt_assert_lte(0, old);
+	igt_assert_eq(0, fcntl(fd, F_SETFL, old | flags));
+}
+
+static u32 get_stream_status(int fd)
+{
+	struct drm_xe_oa_stream_status status;
+
+	do_ioctl(fd, DRM_XE_PERF_IOCTL_STATUS, &status);
+
+	return status.oa_status;
+}
+
+static void
+dump_report(const uint32_t *report, uint32_t size, const char *message) {
+	uint32_t i;
+	igt_debug("%s\n", message);
+	for (i = 0; i < size; i += 4) {
+		igt_debug("%08x %08x %08x %08x\n",
+				report[i],
+				report[i + 1],
+				report[i + 2],
+				report[i + 3]);
+	}
+}
+
+static struct oa_format
+get_oa_format(enum xe_oa_format_name format)
+{
+	if (IS_DG2(devid))
+		return dg2_oa_formats[format];
+	else if (IS_METEORLAKE(devid))
+		return mtl_oa_formats[format];
+	else if (IS_LUNARLAKE(devid))
+		return lnl_oa_formats[format];
+	else
+		return gen12_oa_formats[format];
+}
+
+static u64 oa_format_fields(u64 name)
+{
+#define FIELD_PREP_ULL(_mask, _val) \
+	(((_val) << (__builtin_ffsll(_mask) - 1)) & (_mask))
+
+	struct oa_format f = get_oa_format(name);
+
+	/* 0 format name is invalid */
+	if (!name)
+		memset(&f, 0xff, sizeof(f));
+
+	return FIELD_PREP_ULL(DRM_XE_OA_FORMAT_MASK_FMT_TYPE, (u64)f.oa_type) |
+		FIELD_PREP_ULL(DRM_XE_OA_FORMAT_MASK_COUNTER_SEL, (u64)f.counter_select) |
+		FIELD_PREP_ULL(DRM_XE_OA_FORMAT_MASK_COUNTER_SIZE, (u64)f.counter_size) |
+		FIELD_PREP_ULL(DRM_XE_OA_FORMAT_MASK_BC_REPORT, (u64)f.bc_report);
+}
+#define __ff oa_format_fields
+
+static struct drm_xe_engine_class_instance *oa_unit_engine(int fd, int n)
+{
+	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
+	struct drm_xe_engine_class_instance *hwe = NULL;
+	struct drm_xe_oa_unit *oau;
+	u8 *poau;
+
+	poau = (u8 *)&qoa->oa_units[0];
+	for (int i = 0; i < qoa->num_oa_units; i++) {
+		oau = (struct drm_xe_oa_unit *)poau;
+
+		if (i == n) {
+			hwe = &oau->eci[random() % oau->num_engines];
+			break;
+		}
+		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
+	}
+
+	return hwe;
+}
+
+static struct drm_xe_oa_unit *nth_oa_unit(int fd, int n)
+{
+	struct drm_xe_query_oa_units *qoa = xe_oa_units(fd);
+	struct drm_xe_oa_unit *oau;
+	u8 *poau;
+
+	poau = (u8 *)&qoa->oa_units[0];
+	for (int i = 0; i < qoa->num_oa_units; i++) {
+		oau = (struct drm_xe_oa_unit *)poau;
+		if (i == n)
+			return oau;
+		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
+	}
+
+	return NULL;
+}
+
+static char *
+pretty_print_oa_period(uint64_t oa_period_ns)
+{
+	static char result[100];
+	static const char *units[4] = { "ns", "us", "ms", "s" };
+	double val = oa_period_ns;
+	int iter = 0;
+
+	while (iter < (ARRAY_SIZE(units) - 1) &&
+	       val >= 1000.0f) {
+		val /= 1000.0f;
+		iter++;
+	}
+
+	snprintf(result, sizeof(result), "%.3f%s", val, units[iter]);
+	return result;
+}
+
+static void
+__perf_close(int fd)
+{
+	close(fd);
+	stream_fd = -1;
+
+	if (pm_fd >= 0) {
+		close(pm_fd);
+		pm_fd = -1;
+	}
+}
+
+static int
+__perf_open(int fd, struct drm_xe_oa_open_prop *param, bool prevent_pm)
+{
+	int ret;
+	int32_t pm_value = 0;
+
+	if (stream_fd >= 0)
+		__perf_close(stream_fd);
+	if (pm_fd >= 0) {
+		close(pm_fd);
+		pm_fd = -1;
+	}
+
+	ret = xe_perf_ioctl(fd, DRM_XE_PERF_OP_STREAM_OPEN, param);
+
+	igt_assert(ret >= 0);
+	errno = 0;
+
+	if (prevent_pm) {
+		pm_fd = open("/dev/cpu_dma_latency", O_RDWR);
+		igt_assert(pm_fd >= 0);
+
+		igt_assert_eq(write(pm_fd, &pm_value, sizeof(pm_value)), sizeof(pm_value));
+	}
+
+	return ret;
+}
+
+static uint64_t
+read_u64_file(const char *path)
+{
+	FILE *f;
+	uint64_t val;
+
+	f = fopen(path, "r");
+	igt_assert(f);
+
+	igt_assert_eq(fscanf(f, "%"PRIu64, &val), 1);
+
+	fclose(f);
+
+	return val;
+}
+
+static void
+write_u64_file(const char *path, uint64_t val)
+{
+	FILE *f;
+
+	f = fopen(path, "w");
+	igt_assert(f);
+
+	igt_assert(fprintf(f, "%"PRIu64, val) > 0);
+
+	fclose(f);
+}
+
+static bool
+try_sysfs_read_u64(const char *path, uint64_t *val)
+{
+	return igt_sysfs_scanf(sysfs, path, "%"PRIu64, val) == 1;
+}
+
+static unsigned long rc6_residency_ms(void)
+{
+	unsigned long value;
+
+	igt_assert(igt_sysfs_scanf(sysfs, "device/tile0/gt0/gtidle/idle_residency_ms", "%lu", &value) == 1);
+	return value;
+}
+
+static uint64_t
+read_report_ticks(const uint32_t *report, enum xe_oa_format_name format)
+{
+
+	struct oa_format fmt = get_oa_format(format);
+
+	return fmt.report_hdr_64bit ? *(uint64_t *)&report[6] : report[3];
+}
+
+/*
+ * t0 is a value sampled before t1. width is number of bits used to represent
+ * t0/t1. Normally t1 is greater than t0. In cases where t1 < t0 use this
+ * helper. Since the size of t1/t0 is already 64 bits, no special handling is
+ * needed for width = 64.
+ */
+static uint64_t
+elapsed_delta(uint64_t t1, uint64_t t0, uint32_t width)
+{
+	uint32_t max_bits = sizeof(t1) * 8;
+
+	igt_assert(width <= max_bits);
+
+	if (t1 < t0 && width != max_bits)
+		return ((1ULL << width) - t0) + t1;
+
+	return t1 - t0;
+}
+
+static uint64_t
+oa_tick_delta(const uint32_t *report1,
+	      const uint32_t *report0,
+	      enum xe_oa_format_name format)
+{
+	return elapsed_delta(read_report_ticks(report1, format),
+			     read_report_ticks(report0, format), 32);
+}
+
+static void
+read_report_clock_ratios(const uint32_t *report,
+			      uint32_t *slice_freq_mhz,
+			      uint32_t *unslice_freq_mhz)
+{
+	uint32_t unslice_freq = report[0] & 0x1ff;
+	uint32_t slice_freq_low = (report[0] >> 25) & 0x7f;
+	uint32_t slice_freq_high = (report[0] >> 9) & 0x3;
+	uint32_t slice_freq = slice_freq_low | (slice_freq_high << 7);
+
+	*slice_freq_mhz = (slice_freq * 16666) / 1000;
+	*unslice_freq_mhz = (unslice_freq * 16666) / 1000;
+}
+
+static uint32_t
+report_reason(const uint32_t *report)
+{
+	return ((report[0] >> OAREPORT_REASON_SHIFT) &
+		OAREPORT_REASON_MASK);
+}
+
+static const char *
+read_report_reason(const uint32_t *report)
+{
+	uint32_t reason = report_reason(report);
+
+	if (reason & (1<<0))
+		return "timer";
+	else if (reason & (1<<1))
+	      return "internal trigger 1";
+	else if (reason & (1<<2))
+	      return "internal trigger 2";
+	else if (reason & (1<<3))
+	      return "context switch";
+	else if (reason & (1<<4))
+	      return "GO 1->0 transition (enter RC6)";
+	else if (reason & (1<<5))
+		return "[un]slice clock ratio change";
+	else
+		return "unknown";
+}
+
+static uint32_t
+cs_timestamp_frequency(int fd)
+{
+	return xe_gt_list(drm_fd)->gt_list[0].reference_clock;
+}
+
+static uint64_t
+cs_timebase_scale(uint32_t u32_delta)
+{
+	return ((uint64_t)u32_delta * NSEC_PER_SEC) / cs_timestamp_frequency(drm_fd);
+}
+
+static uint64_t
+oa_timestamp(const uint32_t *report, enum xe_oa_format_name format)
+{
+	struct oa_format fmt = get_oa_format(format);
+
+	return fmt.report_hdr_64bit ? *(uint64_t *)&report[2] : report[1];
+}
+
+static uint64_t
+oa_timestamp_delta(const uint32_t *report1,
+		   const uint32_t *report0,
+		   enum xe_oa_format_name format)
+{
+	uint32_t width = intel_graphics_ver(devid) >= IP_VER(12, 55) ? 56 : 32;
+
+	return elapsed_delta(oa_timestamp(report1, format),
+			     oa_timestamp(report0, format), width);
+}
+
+static uint64_t
+timebase_scale(uint64_t delta)
+{
+	return (delta * NSEC_PER_SEC) / intel_perf->devinfo.timestamp_frequency;
+}
+
+/* Returns: the largest OA exponent that will still result in a sampling period
+ * less than or equal to the given @period.
+ */
+static int
+max_oa_exponent_for_period_lte(uint64_t period)
+{
+	/* NB: timebase_scale() takes a uint64_t and an exponent of 30
+	 * would already represent a period of ~3 minutes so there's
+	 * really no need to consider higher exponents.
+	 */
+	for (int i = 0; i < 30; i++) {
+		uint64_t oa_period = timebase_scale(2 << i);
+
+		if (oa_period > period)
+			return max(0, i - 1);
+	}
+
+	igt_assert(!"reached");
+	return -1;
+}
+
+static uint64_t
+oa_exponent_to_ns(int exponent)
+{
+       return 1000000000ULL * (2ULL << exponent) / intel_perf->devinfo.timestamp_frequency;
+}
+
+static bool
+oa_report_is_periodic(uint32_t oa_exponent, const uint32_t *report)
+{
+	if (report_reason(report) & OAREPORT_REASON_TIMER)
+		return true;
+
+	return false;
+}
+
+static bool
+oa_report_ctx_is_valid(uint32_t *report)
+{
+	return report[0] & (1ul << 16);
+}
+
+static uint32_t
+oa_report_get_ctx_id(uint32_t *report)
+{
+	if (!oa_report_ctx_is_valid(report))
+		return 0xffffffff;
+	return report[2];
+}
+
+static int
+oar_unit_default_format(void)
+{
+	if (IS_DG2(devid) || IS_METEORLAKE(devid))
+		return XE_OAR_FORMAT_A32u40_A4u32_B8_C8;
+
+	return default_test_set->perf_oa_format;
+}
+
+static void *buf_map(int fd, struct intel_buf *buf, bool write)
+{
+	void *p;
+
+	if (is_xe_device(fd)) {
+		buf->ptr = xe_bo_map(fd, buf->handle, buf->surface[0].size);
+		p = buf->ptr;
+	} else {
+		if (gem_has_llc(fd))
+			p = intel_buf_cpu_map(buf, write);
+		else
+			p = intel_buf_device_map(buf, write);
+	}
+	return p;
+}
+
+static void
+scratch_buf_memset(struct intel_buf *buf, int width, int height, uint32_t color)
+{
+	buf_map(buf_ops_get_fd(buf->bops), buf, true);
+
+	for (int i = 0; i < width * height; i++)
+		buf->ptr[i] = color;
+
+	intel_buf_unmap(buf);
+}
+
+static void
+scratch_buf_init(struct buf_ops *bops,
+		 struct intel_buf *buf,
+		 int width, int height,
+		 uint32_t color)
+{
+	intel_buf_init(bops, buf, width, height, 32, 0,
+		       I915_TILING_NONE, I915_COMPRESSION_NONE);
+	scratch_buf_memset(buf, width, height, color);
+}
+
+static void
+emit_report_perf_count(struct intel_bb *ibb,
+		       struct intel_buf *dst,
+		       int dst_offset,
+		       uint32_t report_id)
+{
+	intel_bb_add_intel_buf(ibb, dst, true);
+
+	intel_bb_out(ibb, OA_MI_REPORT_PERF_COUNT);
+	intel_bb_emit_reloc(ibb, dst->handle,
+			    I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
+			    dst_offset, dst->addr.offset);
+	intel_bb_out(ibb, report_id);
+}
+
+static uint64_t
+read_40bit_a_counter(const uint32_t *report,
+			  enum xe_oa_format_name fmt, int a_id)
+{
+	struct oa_format format = get_oa_format(fmt);
+	uint8_t *a40_high = (((uint8_t *)report) + format.a40_high_off);
+	uint32_t *a40_low = (uint32_t *)(((uint8_t *)report) +
+					 format.a40_low_off);
+	uint64_t high = (uint64_t)(a40_high[a_id]) << 32;
+
+	return a40_low[a_id] | high;
+}
+
+static uint64_t
+xehpsdv_read_64bit_a_counter(const uint32_t *report, enum xe_oa_format_name fmt, int a_id)
+{
+	struct oa_format format = get_oa_format(fmt);
+	uint64_t *a64 = (uint64_t *)(((uint8_t *)report) + format.a64_off);
+
+	return a64[a_id];
+}
+
+static uint64_t
+get_40bit_a_delta(uint64_t value0, uint64_t value1)
+{
+	if (value0 > value1)
+		return (1ULL << 40) + value1 - value0;
+	else
+		return value1 - value0;
+}
+
+static void
+accumulate_uint32(size_t offset,
+		  uint32_t *report0,
+                  uint32_t *report1,
+                  uint64_t *delta)
+{
+	uint32_t value0 = *(uint32_t *)(((uint8_t *)report0) + offset);
+	uint32_t value1 = *(uint32_t *)(((uint8_t *)report1) + offset);
+
+	*delta += (uint32_t)(value1 - value0);
+}
+
+static void
+accumulate_uint40(int a_index,
+                  uint32_t *report0,
+                  uint32_t *report1,
+		  enum xe_oa_format_name format,
+                  uint64_t *delta)
+{
+	uint64_t value0 = read_40bit_a_counter(report0, format, a_index),
+		 value1 = read_40bit_a_counter(report1, format, a_index);
+
+	*delta += get_40bit_a_delta(value0, value1);
+}
+
+static void
+accumulate_uint64(int a_index,
+		  const uint32_t *report0,
+		  const uint32_t *report1,
+		  enum xe_oa_format_name format,
+		  uint64_t *delta)
+{
+	uint64_t value0 = xehpsdv_read_64bit_a_counter(report0, format, a_index),
+		 value1 = xehpsdv_read_64bit_a_counter(report1, format, a_index);
+
+	*delta += (value1 - value0);
+}
+
+static void
+accumulate_reports(struct accumulator *accumulator,
+		   uint32_t *start,
+		   uint32_t *end)
+{
+	struct oa_format format = get_oa_format(accumulator->format);
+	uint64_t *deltas = accumulator->deltas;
+	int idx = 0;
+
+	/* timestamp */
+	deltas[idx] += oa_timestamp_delta(end, start, accumulator->format);
+	idx++;
+
+	/* clock cycles */
+	deltas[idx] += oa_tick_delta(end, start, accumulator->format);
+	idx++;
+
+	for (int i = 0; i < format.n_a40; i++) {
+		accumulate_uint40(i, start, end, accumulator->format,
+				  deltas + idx++);
+	}
+
+	for (int i = 0; i < format.n_a64; i++) {
+		accumulate_uint64(i, start, end, accumulator->format,
+				  deltas + idx++);
+	}
+
+	for (int i = 0; i < format.n_a; i++) {
+		accumulate_uint32(format.a_off + 4 * i,
+				  start, end, deltas + idx++);
+	}
+
+	for (int i = 0; i < format.n_b; i++) {
+		accumulate_uint32(format.b_off + 4 * i,
+				  start, end, deltas + idx++);
+	}
+
+	for (int i = 0; i < format.n_c; i++) {
+		accumulate_uint32(format.c_off + 4 * i,
+				  start, end, deltas + idx++);
+	}
+}
+
+static void
+accumulator_print(struct accumulator *accumulator, const char *title)
+{
+	struct oa_format format = get_oa_format(accumulator->format);
+	uint64_t *deltas = accumulator->deltas;
+	int idx = 0;
+
+	igt_debug("%s:\n", title);
+	igt_debug("\ttime delta = %"PRIu64"\n", deltas[idx++]);
+	igt_debug("\tclock cycle delta = %"PRIu64"\n", deltas[idx++]);
+
+	for (int i = 0; i < format.n_a40; i++)
+		igt_debug("\tA%u = %"PRIu64"\n", i, deltas[idx++]);
+
+	for (int i = 0; i < format.n_a64; i++)
+		igt_debug("\tA64_%u = %"PRIu64"\n", i, deltas[idx++]);
+
+	for (int i = 0; i < format.n_a; i++) {
+		int a_id = format.first_a + i;
+		igt_debug("\tA%u = %"PRIu64"\n", a_id, deltas[idx++]);
+	}
+
+	for (int i = 0; i < format.n_a; i++)
+		igt_debug("\tB%u = %"PRIu64"\n", i, deltas[idx++]);
+
+	for (int i = 0; i < format.n_c; i++)
+		igt_debug("\tC%u = %"PRIu64"\n", i, deltas[idx++]);
+}
+
+/* The TestOa metric set is designed so */
+static void
+sanity_check_reports(const uint32_t *oa_report0, const uint32_t *oa_report1,
+		     enum xe_oa_format_name fmt)
+{
+	struct oa_format format = get_oa_format(fmt);
+	uint64_t time_delta = timebase_scale(oa_timestamp_delta(oa_report1,
+								oa_report0,
+								fmt));
+	uint64_t clock_delta = oa_tick_delta(oa_report1, oa_report0, fmt);
+	uint64_t max_delta;
+	uint64_t freq;
+	uint32_t *rpt0_b = (uint32_t *)(((uint8_t *)oa_report0) +
+					format.b_off);
+	uint32_t *rpt1_b = (uint32_t *)(((uint8_t *)oa_report1) +
+					format.b_off);
+	uint32_t b;
+	uint32_t ref;
+
+	igt_debug("report type: %s->%s\n",
+		  read_report_reason(oa_report0),
+		  read_report_reason(oa_report1));
+
+	freq = time_delta ? (clock_delta * 1000) / time_delta : 0;
+	igt_debug("freq = %"PRIu64"\n", freq);
+
+	igt_debug("clock delta = %"PRIu64"\n", clock_delta);
+
+	max_delta = clock_delta * intel_perf->devinfo.n_eus;
+
+	/* Gen8+ has some 40bit A counters... */
+	for (int j = format.first_a40; j < format.n_a40 + format.first_a40; j++) {
+		uint64_t value0 = read_40bit_a_counter(oa_report0, fmt, j);
+		uint64_t value1 = read_40bit_a_counter(oa_report1, fmt, j);
+		uint64_t delta = get_40bit_a_delta(value0, value1);
+
+		if (undefined_a_counters[j])
+			continue;
+
+		igt_debug("A40_%d: delta = %"PRIu64"\n", j, delta);
+		igt_assert_f(delta <= max_delta,
+			     "A40_%d: delta = %"PRIu64", max_delta = %"PRIu64"\n",
+			     j, delta, max_delta);
+	}
+
+	for (int j = 0; j < format.n_a64; j++) {
+		uint64_t delta = 0;
+
+		accumulate_uint64(j, oa_report0, oa_report1, fmt, &delta);
+
+		if (undefined_a_counters[j])
+			continue;
+
+		igt_debug("A64_%d: delta = %"PRIu64"\n", format.first_a + j, delta);
+		igt_assert_f(delta <= max_delta,
+			     "A64_%d: delta = %"PRIu64", max_delta = %"PRIu64"\n",
+			     format.first_a + j, delta, max_delta);
+	}
+
+	for (int j = 0; j < format.n_a; j++) {
+		uint32_t *a0 = (uint32_t *)(((uint8_t *)oa_report0) +
+					    format.a_off);
+		uint32_t *a1 = (uint32_t *)(((uint8_t *)oa_report1) +
+					    format.a_off);
+		int a_id = format.first_a + j;
+		uint32_t delta = a1[j] - a0[j];
+
+		if (undefined_a_counters[a_id])
+			continue;
+
+		igt_debug("A%d: delta = %"PRIu32"\n", a_id, delta);
+		igt_assert_f(delta <= max_delta,
+			     "A%d: delta = %"PRIu32", max_delta = %"PRIu64"\n",
+			     a_id, delta, max_delta);
+	}
+
+	/* The TestOa metric set defines all B counters to be a
+	 * multiple of the gpu clock
+	 */
+	if (format.n_b && (format.oa_type == DRM_XE_OA_FMT_TYPE_OAG || format.oa_type == DRM_XE_OA_FMT_TYPE_OAR)) {
+		if (clock_delta > 0) {
+			b = rpt1_b[0] - rpt0_b[0];
+			igt_debug("B0: delta = %"PRIu32"\n", b);
+			igt_assert_eq(b, 0);
+
+			b = rpt1_b[1] - rpt0_b[1];
+			igt_debug("B1: delta = %"PRIu32"\n", b);
+			igt_assert_eq(b, clock_delta);
+
+			b = rpt1_b[2] - rpt0_b[2];
+			igt_debug("B2: delta = %"PRIu32"\n", b);
+			igt_assert_eq(b, clock_delta);
+
+			b = rpt1_b[3] - rpt0_b[3];
+			ref = clock_delta / 2;
+			igt_debug("B3: delta = %"PRIu32"\n", b);
+			igt_assert(b >= ref - 1 && b <= ref + 1);
+
+			b = rpt1_b[4] - rpt0_b[4];
+			ref = clock_delta / 3;
+			igt_debug("B4: delta = %"PRIu32"\n", b);
+			igt_assert(b >= ref - 1 && b <= ref + 1);
+
+			b = rpt1_b[5] - rpt0_b[5];
+			ref = clock_delta / 3;
+			igt_debug("B5: delta = %"PRIu32"\n", b);
+			igt_assert(b >= ref - 1 && b <= ref + 1);
+
+			b = rpt1_b[6] - rpt0_b[6];
+			ref = clock_delta / 6;
+			igt_debug("B6: delta = %"PRIu32"\n", b);
+			igt_assert(b >= ref - 1 && b <= ref + 1);
+
+			b = rpt1_b[7] - rpt0_b[7];
+			ref = clock_delta * 2 / 3;
+			igt_debug("B7: delta = %"PRIu32"\n", b);
+			igt_assert(b >= ref - 1 && b <= ref + 1);
+		} else {
+			for (int j = 0; j < format.n_b; j++) {
+				b = rpt1_b[j] - rpt0_b[j];
+				igt_debug("B%i: delta = %"PRIu32"\n", j, b);
+				igt_assert_eq(b, 0);
+			}
+		}
+	}
+
+	for (int j = 0; j < format.n_c; j++) {
+		uint32_t *c0 = (uint32_t *)(((uint8_t *)oa_report0) +
+					    format.c_off);
+		uint32_t *c1 = (uint32_t *)(((uint8_t *)oa_report1) +
+					    format.c_off);
+		uint32_t delta = c1[j] - c0[j];
+
+		igt_debug("C%d: delta = %"PRIu32", max_delta=%"PRIu64"\n",
+			  j, delta, max_delta);
+		igt_assert_f(delta <= max_delta,
+			     "C%d: delta = %"PRIu32", max_delta = %"PRIu64"\n",
+			     j, delta, max_delta);
+	}
+}
+
+static bool
+init_sys_info(void)
+{
+	igt_assert_neq(devid, 0);
+
+	intel_perf = intel_perf_for_fd(drm_fd, 0);
+	igt_require(intel_perf);
+
+	igt_debug("n_eu_slices: %"PRIu64"\n", intel_perf->devinfo.n_eu_slices);
+	igt_debug("n_eu_sub_slices: %"PRIu64"\n", intel_perf->devinfo.n_eu_sub_slices);
+	igt_debug("n_eus: %"PRIu64"\n", intel_perf->devinfo.n_eus);
+	igt_debug("timestamp_frequency = %"PRIu64"\n",
+		  intel_perf->devinfo.timestamp_frequency);
+	igt_assert_neq(intel_perf->devinfo.timestamp_frequency, 0);
+
+	intel_perf_load_perf_configs(intel_perf, drm_fd);
+
+	oa_exp_1_millisec = max_oa_exponent_for_period_lte(1000000);
+
+	return true;
+}
+
+/* CAP_SYS_ADMIN is required to open system wide metrics, unless the system
+ * control parameter dev.xe.perf_stream_paranoid == 0 */
+static void
+test_system_wide_paranoid(void)
+{
+	igt_fork(child, 1) {
+		uint64_t properties[] = {
+			DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+			/* Include OA reports in samples */
+			DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+			/* OA unit configuration */
+			DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+			DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+			DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exp_1_millisec,
+		};
+		struct drm_xe_oa_open_prop param = {
+			.num_properties = ARRAY_SIZE(properties) / 2,
+			.properties_ptr = to_user_pointer(properties),
+		};
+
+		write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
+
+		igt_drop_root();
+
+		xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EACCES);
+	}
+
+	igt_waitchildren();
+
+	igt_fork(child, 1) {
+		uint64_t properties[] = {
+			DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+			/* Include OA reports in samples */
+			DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+			/* OA unit configuration */
+			DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+			DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+			DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exp_1_millisec,
+		};
+		struct drm_xe_oa_open_prop param = {
+			.num_properties = ARRAY_SIZE(properties) / 2,
+			.properties_ptr = to_user_pointer(properties),
+		};
+		write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 0);
+
+		igt_drop_root();
+
+		stream_fd = __perf_open(drm_fd, &param, false);
+		__perf_close(stream_fd);
+	}
+
+	igt_waitchildren();
+
+	/* leave in paranoid state */
+	write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
+}
+
+static void
+test_invalid_oa_metric_set_id(void)
+{
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exp_1_millisec,
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, UINT64_MAX,
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+
+	xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EINVAL);
+
+	properties[ARRAY_SIZE(properties) - 1] = 0; /* ID 0 is also be reserved as invalid */
+	xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EINVAL);
+
+	/* Check that we aren't just seeing false positives... */
+	properties[ARRAY_SIZE(properties) - 1] = default_test_set->perf_oa_metrics_set;
+	stream_fd = __perf_open(drm_fd, &param, false);
+	__perf_close(stream_fd);
+
+	/* There's no valid default OA metric set ID... */
+	param.num_properties--;
+	xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EINVAL);
+}
+
+static void
+test_invalid_oa_format_id(void)
+{
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exp_1_millisec,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, UINT64_MAX, /* No __ff() here */
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+
+	xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EINVAL);
+
+	properties[ARRAY_SIZE(properties) - 1] = __ff(0); /* ID 0 is also be reserved as invalid */
+	xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EINVAL);
+
+	/* Check that we aren't just seeing false positives... */
+	properties[ARRAY_SIZE(properties) - 1] = __ff(default_test_set->perf_oa_format);
+	stream_fd = __perf_open(drm_fd, &param, false);
+	__perf_close(stream_fd);
+	/* There's no valid default OA format... */
+	param.num_properties--;
+	xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EINVAL);
+}
+
+static void
+test_missing_sample_flags(void)
+{
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* No _PROP_SAMPLE_xyz flags */
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exp_1_millisec,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+
+	xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EINVAL);
+}
+
+static void
+read_2_oa_reports(int format_id,
+		  int exponent,
+		  uint32_t *oa_report0,
+		  uint32_t *oa_report1,
+		  bool timer_only)
+{
+	size_t format_size = get_oa_format(format_id).size;
+	uint32_t exponent_mask = (1 << (exponent + 1)) - 1;
+
+	/* Note: we allocate a large buffer so that each read() iteration
+	 * should scrape *all* pending records.
+	 *
+	 * The largest buffer the OA unit supports is 16MB.
+	 *
+	 * Being sure we are fetching all buffered reports allows us to
+	 * potentially throw away / skip all reports whenever we see
+	 * a _REPORT_LOST notification as a way of being sure are
+	 * measurements aren't skewed by a lost report.
+	 *
+	 * Note: that is is useful for some tests but also not something
+	 * applications would be expected to resort to. Lost reports are
+	 * somewhat unpredictable but typically don't pose a problem - except
+	 * to indicate that the OA unit may be over taxed if lots of reports
+	 * are being lost.
+	 */
+	int max_reports = MAX_OA_BUF_SIZE / format_size;
+	int buf_size = format_size * max_reports * 1.5;
+	uint8_t *buf = malloc(buf_size);
+	int n = 0;
+
+	for (int i = 0; i < 1000; i++) {
+		ssize_t len;
+		u32 oa_status;
+
+		while ((len = read(stream_fd, buf, buf_size)) < 0 &&
+		       errno == EINTR)
+			;
+
+		oa_status = get_stream_status(stream_fd);
+		igt_debug("oa_status %#x\n", oa_status);
+
+		igt_assert(len > 0);
+		igt_debug("read %d bytes\n", (int)len);
+
+		/* Need at least 2 reports */
+		if (len < 2 * format_size)
+			continue;
+
+		for (size_t offset = 0; offset < len; offset += format_size) {
+			const uint32_t *report = (void *)(buf + offset);
+
+			/* Currently the only test that should ever expect to
+			 * see a _BUFFER_LOST error is the buffer_fill test,
+			 * otherwise something bad has probably happened...
+			 */
+			igt_assert(!(oa_status & OASTATUS_BUFFER_OVERFLOW));
+
+			/* At high sampling frequencies the OA HW might not be
+			 * able to cope with all write requests and will notify
+			 * us that a report was lost. We restart our read of
+			 * two sequential reports due to the timeline blip this
+			 * implies
+			 */
+			if (oa_status & OASTATUS_REPORT_LOST) {
+				igt_debug("read restart: OA trigger collision / report lost\n");
+				n = 0;
+
+				/* XXX: break, because we don't know where
+				 * within the series of already read reports
+				 * there could be a blip from the lost report.
+				 */
+				break;
+			}
+
+			dump_report(report, format_size / 4, "oa-formats");
+
+			igt_debug("read report: reason = %x, timestamp = %"PRIx64", exponent mask=%x\n",
+				  report[0], oa_timestamp(report, format_id), exponent_mask);
+
+			/* Don't expect zero for timestamps */
+			igt_assert_neq_u64(oa_timestamp(report, format_id), 0);
+
+			if (timer_only) {
+				if (!oa_report_is_periodic(exponent, report)) {
+					igt_debug("skipping non timer report\n");
+					continue;
+				}
+			}
+
+			if (n++ == 0)
+				memcpy(oa_report0, report, format_size);
+			else {
+				memcpy(oa_report1, report, format_size);
+				free(buf);
+				return;
+			}
+		}
+	}
+
+	free(buf);
+
+	igt_assert(!"reached");
+}
+
+static void
+open_and_read_2_oa_reports(int format_id,
+			   int exponent,
+			   uint32_t *oa_report0,
+			   uint32_t *oa_report1,
+			   bool timer_only,
+			   const struct drm_xe_engine_class_instance *hwe)
+{
+	struct intel_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(format_id),
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, exponent,
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+	set_fd_flags(stream_fd, O_CLOEXEC);
+
+	read_2_oa_reports(format_id, exponent,
+			  oa_report0, oa_report1, timer_only);
+
+	__perf_close(stream_fd);
+}
+
+static void
+print_reports(uint32_t *oa_report0, uint32_t *oa_report1, int fmt)
+{
+	struct oa_format format = get_oa_format(fmt);
+	uint64_t ts0 = oa_timestamp(oa_report0, fmt);
+	uint64_t ts1 = oa_timestamp(oa_report1, fmt);
+
+	igt_debug("TIMESTAMP: 1st = %"PRIu64", 2nd = %"PRIu64", delta = %"PRIu64"\n",
+		  ts0, ts1, ts1 - ts0);
+
+	{
+		uint64_t clock0 = read_report_ticks(oa_report0, fmt);
+		uint64_t clock1 = read_report_ticks(oa_report1, fmt);
+
+		igt_debug("CLOCK: 1st = %"PRIu64", 2nd = %"PRIu64", delta = %"PRIu64"\n",
+			  clock0, clock1, clock1 - clock0);
+	}
+
+	{
+		uint32_t slice_freq0, slice_freq1, unslice_freq0, unslice_freq1;
+		const char *reason0 = read_report_reason(oa_report0);
+		const char *reason1 = read_report_reason(oa_report1);
+
+		igt_debug("CTX ID: 1st = %"PRIu32", 2nd = %"PRIu32"\n",
+			  oa_report0[2], oa_report1[2]);
+
+		read_report_clock_ratios(oa_report0,
+					 &slice_freq0, &unslice_freq0);
+		read_report_clock_ratios(oa_report1,
+					 &slice_freq1, &unslice_freq1);
+
+		igt_debug("SLICE CLK: 1st = %umhz, 2nd = %umhz, delta = %d\n",
+			  slice_freq0, slice_freq1,
+			  ((int)slice_freq1 - (int)slice_freq0));
+		igt_debug("UNSLICE CLK: 1st = %umhz, 2nd = %umhz, delta = %d\n",
+			  unslice_freq0, unslice_freq1,
+			  ((int)unslice_freq1 - (int)unslice_freq0));
+
+		igt_debug("REASONS: 1st = \"%s\", 2nd = \"%s\"\n", reason0, reason1);
+	}
+
+	/* Gen8+ has some 40bit A counters... */
+	for (int j = 0; j < format.n_a40; j++) {
+		uint64_t value0 = read_40bit_a_counter(oa_report0, fmt, j);
+		uint64_t value1 = read_40bit_a_counter(oa_report1, fmt, j);
+		uint64_t delta = get_40bit_a_delta(value0, value1);
+
+		if (undefined_a_counters[j])
+			continue;
+
+		igt_debug("A%d: 1st = %"PRIu64", 2nd = %"PRIu64", delta = %"PRIu64"\n",
+			  j, value0, value1, delta);
+	}
+
+	for (int j = 0; j < format.n_a64; j++) {
+		uint64_t value0 = xehpsdv_read_64bit_a_counter(oa_report0, fmt, j);
+		uint64_t value1 = xehpsdv_read_64bit_a_counter(oa_report1, fmt, j);
+		uint64_t delta = value1 - value0;
+
+		if (undefined_a_counters[j])
+			continue;
+
+		igt_debug("A_64%d: 1st = %"PRIu64", 2nd = %"PRIu64", delta = %"PRIu64"\n",
+			  format.first_a + j, value0, value1, delta);
+	}
+
+	for (int j = 0; j < format.n_a; j++) {
+		uint32_t *a0 = (uint32_t *)(((uint8_t *)oa_report0) +
+					    format.a_off);
+		uint32_t *a1 = (uint32_t *)(((uint8_t *)oa_report1) +
+					    format.a_off);
+		int a_id = format.first_a + j;
+		uint32_t delta = a1[j] - a0[j];
+
+		if (undefined_a_counters[a_id])
+			continue;
+
+		igt_debug("A%d: 1st = %"PRIu32", 2nd = %"PRIu32", delta = %"PRIu32"\n",
+			  a_id, a0[j], a1[j], delta);
+	}
+
+	for (int j = 0; j < format.n_b; j++) {
+		uint32_t *b0 = (uint32_t *)(((uint8_t *)oa_report0) +
+					    format.b_off);
+		uint32_t *b1 = (uint32_t *)(((uint8_t *)oa_report1) +
+					    format.b_off);
+		uint32_t delta = b1[j] - b0[j];
+
+		igt_debug("B%d: 1st = %"PRIu32", 2nd = %"PRIu32", delta = %"PRIu32"\n",
+			  j, b0[j], b1[j], delta);
+	}
+
+	for (int j = 0; j < format.n_c; j++) {
+		uint32_t *c0 = (uint32_t *)(((uint8_t *)oa_report0) +
+					    format.c_off);
+		uint32_t *c1 = (uint32_t *)(((uint8_t *)oa_report1) +
+					    format.c_off);
+		uint32_t delta = c1[j] - c0[j];
+
+		igt_debug("C%d: 1st = %"PRIu32", 2nd = %"PRIu32", delta = %"PRIu32"\n",
+			  j, c0[j], c1[j], delta);
+	}
+}
+
+/* Debug function, only useful when reports don't make sense. */
+#if 0
+static void
+print_report(uint32_t *report, int fmt)
+{
+	struct oa_format format = get_oa_format(fmt);
+
+	igt_debug("TIMESTAMP: %"PRIu64"\n", oa_timestamp(report, fmt));
+
+	{
+		uint64_t clock = read_report_ticks(report, fmt);
+
+		igt_debug("CLOCK: %"PRIu64"\n", clock);
+	}
+
+	{
+		uint32_t slice_freq, unslice_freq;
+		const char *reason = read_report_reason(report);
+
+		read_report_clock_ratios(report, &slice_freq, &unslice_freq);
+
+		igt_debug("SLICE CLK: %umhz\n", slice_freq);
+		igt_debug("UNSLICE CLK: %umhz\n", unslice_freq);
+		igt_debug("REASON: \"%s\"\n", reason);
+		igt_debug("CTX ID: %"PRIu32"/%"PRIx32"\n", report[2], report[2]);
+	}
+
+	/* Gen8+ has some 40bit A counters... */
+	for (int j = 0; j < format.n_a40; j++) {
+		uint64_t value = read_40bit_a_counter(report, fmt, j);
+
+		if (undefined_a_counters[j])
+			continue;
+
+		igt_debug("A%d: %"PRIu64"\n", j, value);
+	}
+
+	for (int j = 0; j < format.n_a; j++) {
+		uint32_t *a = (uint32_t *)(((uint8_t *)report) +
+					   format.a_off);
+		int a_id = format.first_a + j;
+
+		if (undefined_a_counters[a_id])
+			continue;
+
+		igt_debug("A%d: %"PRIu32"\n", a_id, a[j]);
+	}
+
+	for (int j = 0; j < format.n_b; j++) {
+		uint32_t *b = (uint32_t *)(((uint8_t *)report) +
+					   format.b_off);
+
+		igt_debug("B%d: %"PRIu32"\n", j, b[j]);
+	}
+
+	for (int j = 0; j < format.n_c; j++) {
+		uint32_t *c = (uint32_t *)(((uint8_t *)report) +
+					   format.c_off);
+
+		igt_debug("C%d: %"PRIu32"\n", j, c[j]);
+	}
+}
+#endif
+
+static bool
+hwe_supports_oa_type(int oa_type, const struct drm_xe_engine_class_instance *hwe)
+{
+	switch (oa_type) {
+	case DRM_XE_OA_FMT_TYPE_OAM:
+	case DRM_XE_OA_FMT_TYPE_OAM_MPEC:
+		return hwe->engine_class == DRM_XE_ENGINE_CLASS_VIDEO_DECODE ||
+		       hwe->engine_class == DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE;
+	case DRM_XE_OA_FMT_TYPE_OAG:
+	case DRM_XE_OA_FMT_TYPE_OAR:
+		return hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER;
+	case DRM_XE_OA_FMT_TYPE_OAC:
+		return hwe->engine_class == DRM_XE_ENGINE_CLASS_COMPUTE;
+	case DRM_XE_OA_FMT_TYPE_PEC:
+		return hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER ||
+		       hwe->engine_class == DRM_XE_ENGINE_CLASS_COMPUTE;
+	default:
+		return false;
+	}
+
+}
+
+static void
+test_oa_formats(const struct drm_xe_engine_class_instance *hwe)
+{
+	for (int i = 0; i < XE_OA_FORMAT_MAX; i++) {
+		struct oa_format format = get_oa_format(i);
+		uint32_t oa_report0[format.size / 4];
+		uint32_t oa_report1[format.size / 4];
+
+		if (!format.name) /* sparse, indexed by ID */
+			continue;
+
+		if (!hwe_supports_oa_type(format.oa_type, hwe))
+			continue;
+
+		igt_debug("Checking OA format %s\n", format.name);
+
+		open_and_read_2_oa_reports(i,
+					   oa_exp_1_millisec,
+					   oa_report0,
+					   oa_report1,
+					   false, /* timer reports only */
+					   hwe);
+
+		print_reports(oa_report0, oa_report1, i);
+		sanity_check_reports(oa_report0, oa_report1, i);
+	}
+}
+
+
+enum load {
+	LOW,
+	HIGH
+};
+
+#define LOAD_HELPER_PAUSE_USEC 500
+
+static struct load_helper {
+	int devid;
+	struct buf_ops *bops;
+	uint32_t context_id;
+	uint32_t vm;
+	struct intel_bb *ibb;
+	enum load load;
+	bool exit;
+	struct igt_helper_process igt_proc;
+	struct intel_buf src, dst;
+} lh = { 0, };
+
+static void load_helper_signal_handler(int sig)
+{
+	if (sig == SIGUSR2)
+		lh.load = lh.load == LOW ? HIGH : LOW;
+	else
+		lh.exit = true;
+}
+
+static void load_helper_set_load(enum load load)
+{
+	igt_assert(lh.igt_proc.running);
+
+	if (lh.load == load)
+		return;
+
+	lh.load = load;
+	kill(lh.igt_proc.pid, SIGUSR2);
+}
+
+static void load_helper_run(enum load load)
+{
+	if (!render_copy)
+		return;
+
+	/*
+	 * FIXME fork helpers won't get cleaned up when started from within a
+	 * subtest, so handle the case where it sticks around a bit too long.
+	 */
+	if (lh.igt_proc.running) {
+		load_helper_set_load(load);
+		return;
+	}
+
+	lh.load = load;
+
+	igt_fork_helper(&lh.igt_proc) {
+		signal(SIGUSR1, load_helper_signal_handler);
+		signal(SIGUSR2, load_helper_signal_handler);
+
+		while (!lh.exit) {
+			render_copy(lh.ibb,
+				    &lh.src, 0, 0, 1920, 1080,
+				    &lh.dst, 0, 0);
+
+			intel_bb_sync(lh.ibb);
+
+			/* Lower the load by pausing after every submitted
+			 * write. */
+			if (lh.load == LOW)
+				usleep(LOAD_HELPER_PAUSE_USEC);
+		}
+	}
+}
+
+static void load_helper_stop(void)
+{
+	if (!render_copy)
+		return;
+
+	kill(lh.igt_proc.pid, SIGUSR1);
+	igt_assert(igt_wait_helper(&lh.igt_proc) == 0);
+}
+
+static void load_helper_init(void)
+{
+	if (!render_copy) {
+		igt_info("Running test without render_copy\n");
+		return;
+	}
+
+	lh.devid = intel_get_drm_devid(drm_fd);
+	lh.bops = buf_ops_create(drm_fd);
+	lh.vm = xe_vm_create(drm_fd, 0, 0);
+	lh.context_id = xe_exec_queue_create(drm_fd, lh.vm, &xe_engine(drm_fd, 0)->instance, 0);
+	igt_assert_neq(lh.context_id, 0xffffffff);
+
+	lh.ibb = intel_bb_create_with_context(drm_fd, lh.context_id, lh.vm, NULL, BATCH_SZ);
+
+	scratch_buf_init(lh.bops, &lh.dst, 1920, 1080, 0);
+	scratch_buf_init(lh.bops, &lh.src, 1920, 1080, 0);
+}
+
+static void load_helper_fini(void)
+{
+	if (!render_copy)
+		return;
+
+	if (lh.igt_proc.running)
+		load_helper_stop();
+
+	intel_buf_close(lh.bops, &lh.src);
+	intel_buf_close(lh.bops, &lh.dst);
+	intel_bb_destroy(lh.ibb);
+	xe_exec_queue_destroy(drm_fd, lh.context_id);
+	xe_vm_destroy(drm_fd, lh.vm);
+	buf_ops_destroy(lh.bops);
+}
+
+static bool expected_report_timing_delta(uint32_t delta, uint32_t expected_delta)
+{
+	/*
+	 * On ICL, the OA unit appears to be a bit more relaxed about
+	 * its timing for emitting OA reports (often missing the
+	 * deadline by 1 timestamp).
+	 */
+	if (IS_ICELAKE(devid))
+		return delta <= (expected_delta + 3);
+	else
+		return delta <= expected_delta;
+}
+
+static void
+test_oa_exponents(const struct drm_xe_engine_class_instance *hwe)
+{
+	struct intel_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t fmt = test_set->perf_oa_format;
+
+	load_helper_init();
+	load_helper_run(HIGH);
+
+	/* It's asking a lot to sample with a 160 nanosecond period and the
+	 * test can fail due to buffer overflows if it wasn't possible to
+	 * keep up, so we don't start from an exponent of zero...
+	 */
+	for (int exponent = 5; exponent < 20; exponent++) {
+		uint64_t properties[] = {
+			DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+			/* Include OA reports in samples */
+			DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+			/* OA unit configuration */
+			DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+			DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
+			DRM_XE_OA_PROPERTY_OA_EXPONENT, exponent,
+			DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+		};
+		struct drm_xe_oa_open_prop param = {
+			.num_properties = ARRAY_SIZE(properties) / 2,
+			.properties_ptr = to_user_pointer(properties),
+		};
+		uint64_t expected_timestamp_delta = 2ULL << exponent;
+		size_t format_size = get_oa_format(fmt).size;
+		int max_reports = MAX_OA_BUF_SIZE / format_size;
+		int buf_size = format_size * max_reports * 1.5;
+		uint8_t *buf = calloc(1, buf_size);
+		int ret, n_timer_reports = 0;
+		uint32_t matches = 0;
+#define NUM_TIMER_REPORTS 30
+		uint32_t *reports = malloc(NUM_TIMER_REPORTS * format_size);
+		uint32_t *timer_reports = reports;
+
+		igt_debug("testing OA exponent %d,"
+			  " expected ts delta = %"PRIu64" (%"PRIu64"ns/%.2fus/%.2fms)\n",
+			  exponent, expected_timestamp_delta,
+			  oa_exponent_to_ns(exponent),
+			  oa_exponent_to_ns(exponent) / 1000.0,
+			  oa_exponent_to_ns(exponent) / (1000.0 * 1000.0));
+
+		stream_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
+
+		while (n_timer_reports < NUM_TIMER_REPORTS) {
+			u32 oa_status;
+
+			while ((ret = read(stream_fd, buf, buf_size)) < 0 &&
+			       errno == EINTR)
+				;
+
+			/* igt_debug(" > read %i bytes\n", ret); */
+			oa_status = get_stream_status(stream_fd);
+			igt_debug("oa_status %#x\n", oa_status);
+
+			/* We should never have no data. */
+			igt_assert(ret > 0);
+
+			for (int offset = 0;
+			     offset < ret && n_timer_reports < NUM_TIMER_REPORTS;
+			     offset += format_size) {
+				uint32_t *report = (void *)(buf + offset);
+
+				if (oa_status & OASTATUS_BUFFER_OVERFLOW) {
+					igt_assert(!"reached");
+					break;
+				}
+
+				if (oa_status & OASTATUS_REPORT_LOST)
+					igt_debug("report loss\n");
+
+				if (!oa_report_is_periodic(exponent, report))
+					continue;
+
+				memcpy(timer_reports, report, format_size);
+				n_timer_reports++;
+				timer_reports += (format_size / 4);
+			}
+		}
+
+		__perf_close(stream_fd);
+
+		igt_debug("report%04i ts=%"PRIx64" hw_id=0x%08x\n", 0,
+			  oa_timestamp(&reports[0], fmt),
+			  oa_report_get_ctx_id(&reports[0]));
+		for (int i = 1; i < n_timer_reports; i++) {
+			uint64_t delta = oa_timestamp_delta(&reports[i],
+							    &reports[i - 1],
+							    fmt);
+
+			igt_debug("report%04i ts=%"PRIx64" hw_id=0x%08x delta=%"PRIu64" %s\n", i,
+				  oa_timestamp(&reports[i], fmt),
+				  oa_report_get_ctx_id(&reports[i]),
+				  delta, expected_report_timing_delta(delta,
+								      expected_timestamp_delta) ? "" : "******");
+
+			matches += expected_report_timing_delta(delta,expected_timestamp_delta);
+		}
+
+		igt_debug("matches=%u/%u\n", matches, n_timer_reports - 1);
+
+		/*
+		 * Expect half the reports to match the timing
+		 * expectation. The results are quite erratic because
+		 * the condition under which the HW reaches
+		 * expectations depends on memory controller pressure
+		 * etc...
+		 */
+		igt_assert_lte(n_timer_reports / 2, matches);
+
+		free(reports);
+	}
+
+	load_helper_stop();
+	load_helper_fini();
+}
+
+/* The OA exponent selects a timestamp counter bit to trigger reports on.
+ *
+ * With a 64bit timestamp and least significant bit approx == 80ns then the MSB
+ * equates to > 40 thousand years and isn't exposed via the xe oa interface.
+ *
+ * The max exponent exposed is expected to be 31, which is still a fairly
+ * ridiculous period (>5min) but is the maximum exponent where it's still
+ * possible to use periodic sampling as a means for tracking the overflow of
+ * 32bit OA report timestamps.
+ */
+static void
+test_invalid_oa_exponent(void)
+{
+	uint64_t properties[] = {
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, 31, /* maximum exponent expected
+						       to be accepted */
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+
+	__perf_close(stream_fd);
+
+	for (int i = 32; i < 65; i++) {
+		properties[7] = i;
+		xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EINVAL);
+	}
+}
+
+static int64_t
+get_time(void)
+{
+	struct timespec ts;
+
+	clock_gettime(CLOCK_MONOTONIC, &ts);
+
+	return ts.tv_sec * 1000000000 + ts.tv_nsec;
+}
+
+/* Note: The interface doesn't currently provide strict guarantees or control
+ * over the upper bound for how long it might take for a POLLIN event after
+ * some OA report is written by the OA unit.
+ *
+ * The plan is to add a property later that gives some control over the maximum
+ * latency, but for now we expect it is tuned for a fairly low latency
+ * suitable for applications wanting to provide live feedback for captured
+ * metrics.
+ *
+ * At the time of writing this test the driver was using a fixed 200Hz hrtimer
+ * regardless of the OA sampling exponent.
+ *
+ * There is no lower bound since a stream configured for periodic sampling may
+ * still contain other automatically triggered reports.
+ *
+ * What we try and check for here is that blocking reads don't return EAGAIN
+ * and that we aren't spending any significant time burning the cpu in
+ * kernelspace.
+ */
+static void
+test_blocking(uint64_t requested_oa_period,
+	      bool set_kernel_hrtimer,
+	      uint64_t kernel_hrtimer,
+	      const struct drm_xe_engine_class_instance *hwe)
+{
+	int oa_exponent = max_oa_exponent_for_period_lte(requested_oa_period);
+	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
+	uint64_t props[DRM_XE_OA_PROPERTY_MAX * 2];
+	uint64_t *idx = props;
+	struct drm_xe_oa_open_prop param;
+	uint8_t buf[1024 * 1024];
+	struct tms start_times;
+	struct tms end_times;
+	int64_t user_ns, kernel_ns;
+	int64_t tick_ns = 1000000000 / sysconf(_SC_CLK_TCK);
+	int64_t test_duration_ns = tick_ns * 100;
+	int max_iterations = (test_duration_ns / oa_period) + 2;
+	int n_extra_iterations = 0;
+	int perf_fd;
+
+	/* It's a bit tricky to put a lower limit here, but we expect a
+	 * relatively low latency for seeing reports, while we don't currently
+	 * give any control over this in the api.
+	 *
+	 * We assume a maximum latency of 6 millisecond to deliver a POLLIN and
+	 * read() after a new sample is written (46ms per iteration) considering
+	 * the knowledge that that the driver uses a 200Hz hrtimer (5ms period)
+	 * to check for data and giving some time to read().
+	 */
+	int min_iterations = (test_duration_ns / (oa_period + kernel_hrtimer + kernel_hrtimer / 5));
+	int64_t start, end;
+	int n = 0;
+	struct intel_perf_metric_set *test_set = metric_set(hwe);
+	size_t format_size = get_oa_format(test_set->perf_oa_format).size;
+
+	ADD_PROPS(props, idx, SAMPLE_OA, true);
+	ADD_PROPS(props, idx, OA_METRIC_SET, test_set->perf_oa_metrics_set);
+	ADD_PROPS(props, idx, OA_FORMAT, __ff(test_set->perf_oa_format));
+	ADD_PROPS(props, idx, OA_EXPONENT, oa_exponent);
+	ADD_PROPS(props, idx, OA_DISABLED, true);
+	ADD_PROPS(props, idx, OA_UNIT_ID, 0);
+	ADD_PROPS(props, idx, OA_ENGINE_INSTANCE, hwe->engine_instance);
+
+	param.num_properties = (idx - props) / 2;
+	param.properties_ptr = to_user_pointer(props);
+
+	perf_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
+        set_fd_flags(perf_fd, O_CLOEXEC);
+
+	times(&start_times);
+
+	igt_debug("tick length = %dns, test duration = %"PRIu64"ns, min iter. = %d,"
+		  " estimated max iter. = %d, oa_period = %s\n",
+		  (int)tick_ns, test_duration_ns,
+		  min_iterations, max_iterations,
+		  pretty_print_oa_period(oa_period));
+
+	/* In the loop we perform blocking polls while the HW is sampling at
+	 * ~25Hz, with the expectation that we spend most of our time blocked
+	 * in the kernel, and shouldn't be burning cpu cycles in the kernel in
+	 * association with this process (verified by looking at stime before
+	 * and after loop).
+	 *
+	 * We're looking to assert that less than 1% of the test duration is
+	 * spent in the kernel dealing with polling and read()ing.
+	 *
+	 * The test runs for a relatively long time considering the very low
+	 * resolution of stime in ticks of typically 10 milliseconds. Since we
+	 * don't know the fractional part of tick values we read from userspace
+	 * so our minimum threshold needs to be >= one tick since any
+	 * measurement might really be +- tick_ns (assuming we effectively get
+	 * floor(real_stime)).
+	 *
+	 * We Loop for 1000 x tick_ns so one tick corresponds to 0.1%
+	 *
+	 * Also enable the stream just before poll/read to minimize
+	 * the error delta.
+	 */
+	start = get_time();
+	do_ioctl(perf_fd, DRM_XE_PERF_IOCTL_ENABLE, 0);
+	for (/* nop */; ((end = get_time()) - start) < test_duration_ns; /* nop */) {
+		bool timer_report_read = false;
+		bool non_timer_report_read = false;
+		int ret;
+
+		while ((ret = read(perf_fd, buf, sizeof(buf))) < 0 &&
+		       errno == EINTR)
+			;
+
+		igt_assert(ret > 0);
+
+		for (int offset = 0; offset < ret; offset += format_size) {
+			uint32_t *report = (void *)(buf + offset);
+
+			if (oa_report_is_periodic(oa_exponent, report))
+				timer_report_read = true;
+			else
+				non_timer_report_read = true;
+		}
+
+		if (non_timer_report_read && !timer_report_read)
+			n_extra_iterations++;
+
+		n++;
+	}
+
+	times(&end_times);
+
+	/* Using nanosecond units is fairly silly here, given the tick in-
+	 * precision - ah well, it's consistent with the get_time() units.
+	 */
+	user_ns = (end_times.tms_utime - start_times.tms_utime) * tick_ns;
+	kernel_ns = (end_times.tms_stime - start_times.tms_stime) * tick_ns;
+
+	igt_debug("%d blocking reads during test with %"PRIu64" Hz OA sampling (expect no more than %d)\n",
+		  n, NSEC_PER_SEC / oa_period, max_iterations);
+	igt_debug("%d extra iterations seen, not related to periodic sampling (e.g. context switches)\n",
+		  n_extra_iterations);
+	igt_debug("time in userspace = %"PRIu64"ns (+-%dns) (start utime = %d, end = %d)\n",
+		  user_ns, (int)tick_ns,
+		  (int)start_times.tms_utime, (int)end_times.tms_utime);
+	igt_debug("time in kernelspace = %"PRIu64"ns (+-%dns) (start stime = %d, end = %d)\n",
+		  kernel_ns, (int)tick_ns,
+		  (int)start_times.tms_stime, (int)end_times.tms_stime);
+
+	/* With completely broken blocking (but also not returning an error) we
+	 * could end up with an open loop,
+	 */
+	igt_assert(n <= (max_iterations + n_extra_iterations));
+
+	/* Make sure the driver is reporting new samples with a reasonably
+	 * low latency...
+	 */
+	igt_assert(n > (min_iterations + n_extra_iterations));
+
+	if (!set_kernel_hrtimer)
+		igt_assert(kernel_ns <= (test_duration_ns / 100ull));
+
+	__perf_close(perf_fd);
+}
+
+static void
+test_polling(uint64_t requested_oa_period,
+	     bool set_kernel_hrtimer,
+	     uint64_t kernel_hrtimer,
+	     const struct drm_xe_engine_class_instance *hwe)
+{
+	int oa_exponent = max_oa_exponent_for_period_lte(requested_oa_period);
+	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
+	uint64_t props[DRM_XE_OA_PROPERTY_MAX * 2];
+	uint64_t *idx = props;
+	struct drm_xe_oa_open_prop param;
+	uint8_t buf[1024 * 1024];
+	struct tms start_times;
+	struct tms end_times;
+	int64_t user_ns, kernel_ns;
+	int64_t tick_ns = 1000000000 / sysconf(_SC_CLK_TCK);
+	int64_t test_duration_ns = tick_ns * 100;
+
+	int max_iterations = (test_duration_ns / oa_period) + 2;
+	int n_extra_iterations = 0;
+
+	/* It's a bit tricky to put a lower limit here, but we expect a
+	 * relatively low latency for seeing reports.
+	 *
+	 * We assume a maximum latency of kernel_hrtimer + some margin
+	 * to deliver a POLLIN and read() after a new sample is
+	 * written (40ms + hrtimer + margin per iteration) considering
+	 * the knowledge that that the driver uses a 200Hz hrtimer
+	 * (5ms period) to check for data and giving some time to
+	 * read().
+	 */
+	int min_iterations = (test_duration_ns / (oa_period + (kernel_hrtimer + kernel_hrtimer / 5)));
+	int64_t start, end;
+	int n = 0;
+	struct intel_perf_metric_set *test_set = metric_set(hwe);
+	size_t format_size = get_oa_format(test_set->perf_oa_format).size;
+
+	ADD_PROPS(props, idx, SAMPLE_OA, true);
+	ADD_PROPS(props, idx, OA_METRIC_SET, test_set->perf_oa_metrics_set);
+	ADD_PROPS(props, idx, OA_FORMAT, __ff(test_set->perf_oa_format));
+	ADD_PROPS(props, idx, OA_EXPONENT, oa_exponent);
+	ADD_PROPS(props, idx, OA_DISABLED, true);
+	ADD_PROPS(props, idx, OA_UNIT_ID, 0);
+	ADD_PROPS(props, idx, OA_ENGINE_INSTANCE, hwe->engine_instance);
+
+	param.num_properties = (idx - props) / 2;
+	param.properties_ptr = to_user_pointer(props);
+
+	stream_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
+	set_fd_flags(stream_fd, O_CLOEXEC | O_NONBLOCK);
+
+	times(&start_times);
+
+	igt_debug("tick length = %dns, oa period = %s, "
+		  "test duration = %"PRIu64"ns, min iter. = %d, max iter. = %d\n",
+		  (int)tick_ns, pretty_print_oa_period(oa_period), test_duration_ns,
+		  min_iterations, max_iterations);
+
+	/* In the loop we perform blocking polls while the HW is sampling at
+	 * ~25Hz, with the expectation that we spend most of our time blocked
+	 * in the kernel, and shouldn't be burning cpu cycles in the kernel in
+	 * association with this process (verified by looking at stime before
+	 * and after loop).
+	 *
+	 * We're looking to assert that less than 1% of the test duration is
+	 * spent in the kernel dealing with polling and read()ing.
+	 *
+	 * The test runs for a relatively long time considering the very low
+	 * resolution of stime in ticks of typically 10 milliseconds. Since we
+	 * don't know the fractional part of tick values we read from userspace
+	 * so our minimum threshold needs to be >= one tick since any
+	 * measurement might really be +- tick_ns (assuming we effectively get
+	 * floor(real_stime)).
+	 *
+	 * We Loop for 1000 x tick_ns so one tick corresponds to 0.1%
+	 *
+	 * Also enable the stream just before poll/read to minimize
+	 * the error delta.
+	 */
+	start = get_time();
+	do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_ENABLE, 0);
+	for (/* nop */; ((end = get_time()) - start) < test_duration_ns; /* nop */) {
+		struct pollfd pollfd = { .fd = stream_fd, .events = POLLIN };
+		bool timer_report_read = false;
+		bool non_timer_report_read = false;
+		int ret;
+
+		while ((ret = poll(&pollfd, 1, -1)) < 0 &&
+		       errno == EINTR)
+			;
+		igt_assert_eq(ret, 1);
+		igt_assert(pollfd.revents & POLLIN);
+
+		while ((ret = read(stream_fd, buf, sizeof(buf))) < 0 &&
+		       errno == EINTR)
+			;
+
+		/* Don't expect to see EAGAIN if we've had a POLLIN event
+		 *
+		 * XXX: actually this is technically overly strict since we do
+		 * knowingly allow false positive POLLIN events. At least in
+		 * the future when supporting context filtering of metrics for
+		 * Gen8+ handled in the kernel then POLLIN events may be
+		 * delivered when we know there are pending reports to process
+		 * but before we've done any filtering to know for certain that
+		 * any reports are destined to be copied to userspace.
+		 *
+		 * Still, for now it's a reasonable sanity check.
+		 */
+		if (ret < 0)
+			igt_debug("Unexpected error when reading after poll = %d\n", errno);
+		igt_assert_neq(ret, -1);
+
+		/* For Haswell reports don't contain a well defined reason
+		 * field we so assume all reports to be 'periodic'. For gen8+
+		 * we want to to consider that the HW automatically writes some
+		 * non periodic reports (e.g. on context switch) which might
+		 * lead to more successful read()s than expected due to
+		 * periodic sampling and we don't want these extra reads to
+		 * cause the test to fail...
+		 */
+		for (int offset = 0; offset < ret; offset += format_size) {
+			uint32_t *report = (void *)(buf + offset);
+
+			if (oa_report_is_periodic(oa_exponent, report))
+				timer_report_read = true;
+			else
+				non_timer_report_read = true;
+		}
+
+		if (non_timer_report_read && !timer_report_read)
+			n_extra_iterations++;
+
+		/* At this point, after consuming pending reports (and hoping
+		 * the scheduler hasn't stopped us for too long) we now expect
+		 * EAGAIN on read. While this works most of the times, there are
+		 * some rare failures when the OA period passed to this test is
+		 * very small (say 500 us) and that results in some valid
+		 * reports here. To weed out those rare occurences we assert
+		 * only if the OA period is >= 40 ms because 40 ms has withstood
+		 * the test of time on most platforms (ref: subtest: polling).
+		 */
+		while ((ret = read(stream_fd, buf, sizeof(buf))) < 0 &&
+		       errno == EINTR)
+			;
+
+		if (requested_oa_period >= 40000000) {
+			igt_assert_eq(ret, -1);
+			igt_assert_eq(errno, EAGAIN);
+		}
+
+		n++;
+	}
+
+	times(&end_times);
+
+	/* Using nanosecond units is fairly silly here, given the tick in-
+	 * precision - ah well, it's consistent with the get_time() units.
+	 */
+	user_ns = (end_times.tms_utime - start_times.tms_utime) * tick_ns;
+	kernel_ns = (end_times.tms_stime - start_times.tms_stime) * tick_ns;
+
+	igt_debug("%d non-blocking reads during test with %"PRIu64" Hz OA sampling (expect no more than %d)\n",
+		  n, NSEC_PER_SEC / oa_period, max_iterations);
+	igt_debug("%d extra iterations seen, not related to periodic sampling (e.g. context switches)\n",
+		  n_extra_iterations);
+	igt_debug("time in userspace = %"PRIu64"ns (+-%dns) (start utime = %d, end = %d)\n",
+		  user_ns, (int)tick_ns,
+		  (int)start_times.tms_utime, (int)end_times.tms_utime);
+	igt_debug("time in kernelspace = %"PRIu64"ns (+-%dns) (start stime = %d, end = %d)\n",
+		  kernel_ns, (int)tick_ns,
+		  (int)start_times.tms_stime, (int)end_times.tms_stime);
+
+	/* With completely broken blocking while polling (but still somehow
+	 * reporting a POLLIN event) we could end up with an open loop.
+	 */
+	igt_assert(n <= (max_iterations + n_extra_iterations));
+
+	/* Make sure the driver is reporting new samples with a reasonably
+	 * low latency...
+	 */
+	igt_assert(n > (min_iterations + n_extra_iterations));
+
+	if (!set_kernel_hrtimer)
+		igt_assert(kernel_ns <= (test_duration_ns / 100ull));
+
+	__perf_close(stream_fd);
+}
+
+static void test_polling_small_buf(void)
+{
+	int oa_exponent = max_oa_exponent_for_period_lte(40 * 1000); /* 40us */
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exponent,
+		DRM_XE_OA_PROPERTY_OA_DISABLED, true,
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	uint32_t test_duration = 80 * 1000 * 1000;
+	int sample_size = get_oa_format(default_test_set->perf_oa_format).size;
+	int n_expected_reports = test_duration / oa_exponent_to_ns(oa_exponent);
+	int n_expect_read_bytes = n_expected_reports * sample_size;
+	struct timespec ts = {};
+	int n_bytes_read = 0;
+	uint32_t n_polls = 0;
+
+	stream_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
+	set_fd_flags(stream_fd, O_CLOEXEC | O_NONBLOCK);
+	do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_ENABLE, 0);
+
+	while (igt_nsec_elapsed(&ts) < test_duration) {
+		struct pollfd pollfd = { .fd = stream_fd, .events = POLLIN };
+
+		ppoll(&pollfd, 1, NULL, NULL);
+		if (pollfd.revents & POLLIN) {
+			uint8_t buf[1024];
+			int ret;
+
+			ret = read(stream_fd, buf, sizeof(buf));
+			if (ret >= 0)
+				n_bytes_read += ret;
+		}
+
+		n_polls++;
+	}
+
+	igt_info("Read %d expected %d (%.2f%% of the expected number), polls=%u\n",
+		 n_bytes_read, n_expect_read_bytes,
+		 n_bytes_read * 100.0f / n_expect_read_bytes,
+		 n_polls);
+
+	__perf_close(stream_fd);
+
+	igt_assert(abs(n_expect_read_bytes - n_bytes_read) <
+		   0.20 * n_expect_read_bytes);
+}
+
+static int
+num_valid_reports_captured(struct drm_xe_oa_open_prop *param,
+			   int64_t *duration_ns, int fmt)
+{
+	uint8_t buf[1024 * 1024];
+	int64_t start, end;
+	int num_reports = 0;
+	size_t format_size = get_oa_format(fmt).size;
+
+	igt_debug("Expected duration = %"PRId64"\n", *duration_ns);
+
+	stream_fd = __perf_open(drm_fd, param, true);
+
+	start = get_time();
+	do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_ENABLE, 0);
+	for (/* nop */; ((end = get_time()) - start) < *duration_ns; /* nop */) {
+		int ret;
+
+		while ((ret = read(stream_fd, buf, sizeof(buf))) < 0 &&
+		       errno == EINTR)
+			;
+
+		igt_assert(ret > 0);
+
+		for (int offset = 0; offset < ret; offset += format_size) {
+			uint32_t *report = (void *)(buf + offset);
+
+			if (report_reason(report) & OAREPORT_REASON_TIMER)
+				num_reports++;
+		}
+	}
+	__perf_close(stream_fd);
+
+	*duration_ns = end - start;
+
+	igt_debug("Actual duration = %"PRIu64"\n", *duration_ns);
+
+	return num_reports;
+}
+
+static void
+test_oa_tlb_invalidate(const struct drm_xe_engine_class_instance *hwe)
+{
+	int oa_exponent = max_oa_exponent_for_period_lte(30000000);
+	struct intel_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exponent,
+		DRM_XE_OA_PROPERTY_OA_DISABLED, true,
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	int num_reports1, num_reports2, num_expected_reports;
+	int64_t duration;
+
+	/* Capture reports for 5 seconds twice and then make sure you get around
+	 * the same number of reports. In the case of failure, the number of
+	 * reports will vary largely since the beginning of the OA buffer
+	 * will have invalid entries.
+	 */
+	duration = 5LL * NSEC_PER_SEC;
+	num_reports1 = num_valid_reports_captured(&param, &duration, test_set->perf_oa_format);
+	num_expected_reports = duration / oa_exponent_to_ns(oa_exponent);
+	igt_debug("expected num reports = %d\n", num_expected_reports);
+	igt_debug("actual num reports = %d\n", num_reports1);
+	igt_assert(num_reports1 > 0.95 * num_expected_reports);
+
+	duration = 5LL * NSEC_PER_SEC;
+	num_reports2 = num_valid_reports_captured(&param, &duration, test_set->perf_oa_format);
+	num_expected_reports = duration / oa_exponent_to_ns(oa_exponent);
+	igt_debug("expected num reports = %d\n", num_expected_reports);
+	igt_debug("actual num reports = %d\n", num_reports2);
+	igt_assert(num_reports2 > 0.95 * num_expected_reports);
+}
+
+
+static void
+test_buffer_fill(const struct drm_xe_engine_class_instance *hwe)
+{
+	/* ~5 micro second period */
+	int oa_exponent = max_oa_exponent_for_period_lte(5000);
+	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
+	struct intel_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t fmt = test_set->perf_oa_format;
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exponent,
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	size_t report_size = get_oa_format(fmt).size;
+	int buf_size = 65536 * report_size;
+	uint8_t *buf = malloc(buf_size);
+	int len;
+	size_t oa_buf_size = MAX_OA_BUF_SIZE;
+	int n_full_oa_reports = oa_buf_size / report_size;
+	uint64_t fill_duration = n_full_oa_reports * oa_period;
+	uint32_t *last_periodic_report = malloc(report_size);
+	u32 oa_status;
+
+	igt_assert(fill_duration < 1000000000);
+
+	stream_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+
+	for (int i = 0; i < 5; i++) {
+		bool overflow_seen;
+		uint32_t n_periodic_reports;
+		uint32_t first_timestamp = 0, last_timestamp = 0;
+
+		do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_ENABLE, 0);
+
+		nanosleep(&(struct timespec){ .tv_sec = 0,
+					      .tv_nsec = fill_duration * 1.25 },
+			  NULL);
+
+		while ((len = read(stream_fd, buf, buf_size)) == -1 && errno == EINTR)
+			;
+		igt_assert_neq(len, -1);
+
+		oa_status = get_stream_status(stream_fd);
+		igt_debug("oa_status %#x\n", oa_status);
+		overflow_seen = (oa_status & OASTATUS_BUFFER_OVERFLOW) ? true : false;
+
+		/* Overrun mode is disabled in the kernel for Xe2+ */
+		if (!IS_LUNARLAKE(xe_dev_id(drm_fd)))
+			igt_assert_eq(overflow_seen, true);
+
+		do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_DISABLE, 0);
+
+		igt_debug("fill_duration = %"PRIu64"ns, oa_exponent = %u\n",
+			  fill_duration, oa_exponent);
+
+		do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_ENABLE, 0);
+
+		nanosleep(&(struct timespec){ .tv_sec = 0,
+					.tv_nsec = fill_duration / 2 },
+			NULL);
+
+		n_periodic_reports = 0;
+
+		/* Because of the race condition between notification of new
+		 * reports and reports landing in memory, we need to rely on
+		 * timestamps to figure whether we've read enough of them.
+		 */
+		while (((last_timestamp - first_timestamp) * oa_period) < (fill_duration / 2)) {
+
+			igt_debug("dts=%u elapsed=%"PRIu64" duration=%"PRIu64"\n",
+				  last_timestamp - first_timestamp,
+				  (last_timestamp - first_timestamp) * oa_period,
+				  fill_duration / 2);
+
+			while ((len = read(stream_fd, buf, buf_size)) == -1 && errno == EINTR)
+				;
+			igt_assert_neq(len, -1);
+
+			oa_status = get_stream_status(stream_fd);
+			igt_debug("oa_status %#x\n", oa_status);
+			igt_assert(!(oa_status & OASTATUS_BUFFER_OVERFLOW));
+
+			for (int offset = 0; offset < len; offset += report_size) {
+				uint32_t *report = (void *) (buf + offset);
+
+				igt_debug(" > report ts=%"PRIu64""
+					  " ts_delta_last_periodic=%"PRIu64" is_timer=%i ctx_id=%8x nb_periodic=%u\n",
+					  oa_timestamp(report, fmt),
+					  n_periodic_reports > 0 ?  oa_timestamp_delta(report, last_periodic_report, fmt) : 0,
+					  oa_report_is_periodic(oa_exponent, report),
+					  oa_report_get_ctx_id(report),
+					  n_periodic_reports);
+
+				if (first_timestamp == 0)
+					first_timestamp = oa_timestamp(report, fmt);
+				last_timestamp = oa_timestamp(report, fmt);
+
+				if (oa_report_is_periodic(oa_exponent, report)) {
+					memcpy(last_periodic_report, report, report_size);
+					n_periodic_reports++;
+				}
+			}
+		}
+
+		do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_DISABLE, 0);
+
+		igt_debug("first ts = %u, last ts = %u\n", first_timestamp, last_timestamp);
+
+		igt_debug("%f < %zu < %f\n",
+			  report_size * n_full_oa_reports * 0.45,
+			  n_periodic_reports * report_size,
+			  report_size * n_full_oa_reports * 0.55);
+
+		igt_assert(n_periodic_reports * report_size >
+			   report_size * n_full_oa_reports * 0.45);
+		igt_assert(n_periodic_reports * report_size <
+			   report_size * n_full_oa_reports * 0.55);
+	}
+
+	free(last_periodic_report);
+	free(buf);
+
+	__perf_close(stream_fd);
+}
+
+static void
+test_non_zero_reason(const struct drm_xe_engine_class_instance *hwe)
+{
+	/* ~20 micro second period */
+	int oa_exponent = max_oa_exponent_for_period_lte(20000);
+	struct intel_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t fmt = test_set->perf_oa_format;
+	size_t report_size = get_oa_format(fmt).size;
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exponent,
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	uint32_t buf_size = 3 * 65536 * report_size;
+	uint8_t *buf = malloc(buf_size);
+	uint32_t total_len = 0;
+	const uint32_t *last_report;
+	int len;
+	u32 oa_status;
+
+	igt_assert(buf);
+
+	igt_debug("Ready to read about %u bytes\n", buf_size);
+
+	load_helper_init();
+	load_helper_run(HIGH);
+
+	stream_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+
+	while (total_len < buf_size &&
+	       ((len = read(stream_fd, &buf[total_len], buf_size - total_len)) > 0 ||
+		(len == -1 && errno == EINTR))) {
+		if (len > 0)
+			total_len += len;
+	}
+
+	oa_status = get_stream_status(stream_fd);
+	igt_debug("oa_status %#x\n", oa_status);
+	igt_assert(!(oa_status & OASTATUS_BUFFER_OVERFLOW));
+
+	__perf_close(stream_fd);
+
+	load_helper_stop();
+	load_helper_fini();
+
+	igt_debug("Got %u bytes\n", total_len);
+
+	last_report = NULL;
+	for (uint32_t offset = 0; offset < total_len; offset += report_size) {
+		const uint32_t *report = (void *) (buf + offset);
+		uint32_t reason = (report[0] >> OAREPORT_REASON_SHIFT) & OAREPORT_REASON_MASK;
+
+		igt_assert_neq(reason, 0);
+
+		if (last_report)
+			sanity_check_reports(last_report, report, fmt);
+
+		last_report = report;
+	}
+
+	free(buf);
+}
+
+static void
+test_enable_disable(const struct drm_xe_engine_class_instance *hwe)
+{
+	/* ~5 micro second period */
+	int oa_exponent = max_oa_exponent_for_period_lte(5000);
+	uint64_t oa_period = oa_exponent_to_ns(oa_exponent);
+	struct intel_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t fmt = test_set->perf_oa_format;
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exponent,
+		DRM_XE_OA_PROPERTY_OA_DISABLED, true,
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	size_t report_size = get_oa_format(fmt).size;
+	int buf_size = 65536 * report_size;
+	uint8_t *buf = malloc(buf_size);
+	size_t oa_buf_size = MAX_OA_BUF_SIZE;
+	int n_full_oa_reports = oa_buf_size / report_size;
+	uint64_t fill_duration = n_full_oa_reports * oa_period;
+	uint32_t *last_periodic_report = malloc(report_size);
+
+	load_helper_init();
+	load_helper_run(HIGH);
+
+	stream_fd = __perf_open(drm_fd, &param, true /* prevent_pm */);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+
+	for (int i = 0; i < 5; i++) {
+		int len;
+		uint32_t n_periodic_reports;
+		uint64_t first_timestamp = 0, last_timestamp = 0;
+		u32 oa_status;
+
+		/* Giving enough time for an overflow might help catch whether
+		 * the OA unit has been enabled even if the driver might at
+		 * least avoid copying reports while disabled.
+		 */
+		nanosleep(&(struct timespec){ .tv_sec = 0,
+					      .tv_nsec = fill_duration * 1.25 },
+			  NULL);
+
+		while ((len = read(stream_fd, buf, buf_size)) == -1 && errno == EINTR)
+			;
+
+		igt_assert_eq(len, -1);
+		igt_assert_eq(errno, EIO);
+
+		do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_ENABLE, 0);
+
+		nanosleep(&(struct timespec){ .tv_sec = 0,
+					      .tv_nsec = fill_duration / 2 },
+			NULL);
+
+		n_periodic_reports = 0;
+
+		/* Because of the race condition between notification of new
+		 * reports and reports landing in memory, we need to rely on
+		 * timestamps to figure whether we've read enough of them.
+		 */
+		while (((last_timestamp - first_timestamp) * oa_period) < (fill_duration / 2)) {
+
+			while ((len = read(stream_fd, buf, buf_size)) == -1 && errno == EINTR)
+				;
+			igt_assert_neq(len, -1);
+
+			oa_status = get_stream_status(stream_fd);
+			igt_debug("oa_status %#x\n", oa_status);
+			igt_assert(!(oa_status & OASTATUS_BUFFER_OVERFLOW));
+
+			for (int offset = 0; offset < len; offset += report_size) {
+				uint32_t *report = (void *) (buf + offset);
+
+				if (first_timestamp == 0)
+					first_timestamp = oa_timestamp(report, fmt);
+				last_timestamp = oa_timestamp(report, fmt);
+
+				igt_debug(" > report ts=%"PRIx64""
+					  " ts_delta_last_periodic=%s%"PRIu64""
+					  " is_timer=%i ctx_id=0x%8x\n",
+					  oa_timestamp(report, fmt),
+					  oa_report_is_periodic(oa_exponent, report) ? " " : "*",
+					  n_periodic_reports > 0 ?  oa_timestamp_delta(report, last_periodic_report, fmt) : 0,
+					  oa_report_is_periodic(oa_exponent, report),
+					  oa_report_get_ctx_id(report));
+
+				if (oa_report_is_periodic(oa_exponent, report)) {
+					memcpy(last_periodic_report, report, report_size);
+
+					/* We want to measure only the periodic reports,
+					 * ctx-switch might inflate the content of the
+					 * buffer and skew or measurement.
+					 */
+					n_periodic_reports++;
+				}
+			}
+		}
+
+		do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_DISABLE, 0);
+
+		igt_debug("first ts = %lu, last ts = %lu\n", first_timestamp, last_timestamp);
+
+		igt_debug("%f < %zu < %f\n",
+			  report_size * n_full_oa_reports * 0.45,
+			  n_periodic_reports * report_size,
+			  report_size * n_full_oa_reports * 0.55);
+
+		igt_assert((n_periodic_reports * report_size) >
+			   (report_size * n_full_oa_reports * 0.45));
+		igt_assert((n_periodic_reports * report_size) <
+			   report_size * n_full_oa_reports * 0.55);
+
+
+		/* It's considered an error to read a stream while it's disabled
+		 * since it would block indefinitely...
+		 */
+		len = read(stream_fd, buf, buf_size);
+
+		igt_assert_eq(len, -1);
+		igt_assert_eq(errno, EIO);
+	}
+
+	free(last_periodic_report);
+	free(buf);
+
+	__perf_close(stream_fd);
+
+	load_helper_stop();
+	load_helper_fini();
+}
+
+static void
+test_short_reads(void)
+{
+	int oa_exponent = max_oa_exponent_for_period_lte(5000);
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exponent,
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	size_t record_size = get_oa_format(default_test_set->perf_oa_format).size;
+	size_t page_size = sysconf(_SC_PAGE_SIZE);
+	int zero_fd = open("/dev/zero", O_RDWR|O_CLOEXEC);
+	uint8_t *pages = mmap(NULL, page_size * 2,
+			      PROT_READ|PROT_WRITE, MAP_PRIVATE, zero_fd, 0);
+	u8 *header;
+	int ret, errnum;
+	u32 oa_status;
+
+	igt_assert_neq(zero_fd, -1);
+	close(zero_fd);
+	zero_fd = -1;
+
+	igt_assert(pages);
+
+	ret = mprotect(pages + page_size, page_size, PROT_NONE);
+	igt_assert_eq(ret, 0);
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+
+	nanosleep(&(struct timespec){ .tv_sec = 0, .tv_nsec = 5000000 }, NULL);
+
+	/* At this point there should be lots of pending reports to read */
+
+	/* A read that can return at least one record should result in a short
+	 * read not an EFAULT if the buffer is smaller than the requested read
+	 * size...
+	 *
+	 * Expect to see a sample record here, but at least skip over any
+	 * _RECORD_LOST notifications.
+	 */
+	do {
+		header = (void *)(pages + page_size - record_size);
+		ret = read(stream_fd, header, page_size);
+		igt_assert(ret > 0);
+		oa_status = get_stream_status(stream_fd);
+
+	} while (oa_status & OASTATUS_REPORT_LOST);
+
+	igt_assert_eq(ret, record_size);
+
+	/* A read that can't return a single record because it would result
+	 * in a fault on buffer overrun should result in an EFAULT error...
+	 *
+	 * Make sure to weed out all report lost errors before verifying EFAULT.
+	 */
+	header = (void *)(pages + page_size - 16);
+	do {
+		ret = read(stream_fd, header, page_size);
+		errnum = errno;
+		oa_status = get_stream_status(stream_fd);
+		errno = errnum;
+	} while (ret > 0 && oa_status & OASTATUS_REPORT_LOST);
+	igt_assert_eq(ret, -1);
+	igt_assert_eq(errno, EFAULT);
+
+	/* A read that can't return a single record because the buffer is too
+	 * small should result in an ENOSPC error..
+	 *
+	 * Again, skip over _RECORD_LOST records (smaller than record_size/2)
+	 */
+	do {
+		header = (void *)(pages + page_size - record_size / 2);
+		ret = read(stream_fd, header, record_size / 2);
+		errnum = errno;
+		oa_status = get_stream_status(stream_fd);
+		errno = errnum;
+	} while (ret > 0 && oa_status & OASTATUS_REPORT_LOST);
+
+	igt_assert_eq(ret, -1);
+	igt_assert_eq(errno, ENOSPC);
+
+	__perf_close(stream_fd);
+
+	munmap(pages, page_size * 2);
+}
+
+static void
+test_non_sampling_read_error(void)
+{
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* XXX: even without periodic sampling we have to
+		 * specify at least one sample layout property...
+		 */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+
+		/* XXX: no sampling exponent */
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	int ret;
+	uint8_t buf[1024];
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+
+	ret = read(stream_fd, buf, sizeof(buf));
+	igt_assert_eq(ret, -1);
+	igt_assert_eq(errno, EIO);
+
+	__perf_close(stream_fd);
+}
+
+/* Check that attempts to read from a stream while it is disable will return
+ * EIO instead of blocking indefinitely.
+ */
+static void
+test_disabled_read_error(void)
+{
+	int oa_exponent = 5; /* 5 micro seconds */
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* XXX: even without periodic sampling we have to
+		 * specify at least one sample layout property...
+		 */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exponent,
+		DRM_XE_OA_PROPERTY_OA_DISABLED, true,
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	uint32_t oa_report0[64];
+	uint32_t oa_report1[64];
+	uint32_t buf[128] = { 0 };
+	int ret;
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+
+	ret = read(stream_fd, buf, sizeof(buf));
+	igt_assert_eq(ret, -1);
+	igt_assert_eq(errno, EIO);
+
+	__perf_close(stream_fd);
+
+	properties[ARRAY_SIZE(properties) - 1] = false; /* Set DISABLED to false */
+	stream_fd = __perf_open(drm_fd, &param, false);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+
+	read_2_oa_reports(default_test_set->perf_oa_format,
+			  oa_exponent,
+			  oa_report0,
+			  oa_report1,
+			  false); /* not just timer reports */
+
+	do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_DISABLE, 0);
+
+	ret = read(stream_fd, buf, sizeof(buf));
+	igt_assert_eq(ret, -1);
+	igt_assert_eq(errno, EIO);
+
+	do_ioctl(stream_fd, DRM_XE_PERF_IOCTL_ENABLE, 0);
+
+	read_2_oa_reports(default_test_set->perf_oa_format,
+			  oa_exponent,
+			  oa_report0,
+			  oa_report1,
+			  false); /* not just timer reports */
+
+	__perf_close(stream_fd);
+}
+
+static void
+test_mi_rpc(struct drm_xe_engine_class_instance *hwe)
+
+{
+	uint64_t fmt = ((IS_DG2(devid) || IS_METEORLAKE(devid)) &&
+			hwe->engine_class == DRM_XE_ENGINE_CLASS_COMPUTE) ?
+		XE_OAC_FORMAT_A24u64_B8_C8 : oar_unit_default_format();
+	struct intel_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* On Gen12, MI RPC uses OAR. OAR is configured only for the
+		 * render context that wants to measure the performance. Hence a
+		 * context must be specified in the gen12 MI RPC when compared
+		 * to previous gens.
+		 *
+		 * Have a random value here for the context id, but initialize
+		 * it once you figure out the context ID for the work to be
+		 * measured
+		 */
+		DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID, UINT64_MAX,
+
+		/* OA unit configuration:
+		 * DRM_XE_OA_PROPERTY_SAMPLE_OA is no longer required for Gen12
+		 * because the OAR unit increments counters only for the
+		 * relevant context. No other parameters are needed since we do
+		 * not rely on the OA buffer anymore to normalize the counter
+		 * values.
+		 */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	struct buf_ops *bops;
+	struct intel_bb *ibb;
+	struct intel_buf *buf;
+#define INVALID_CTX_ID 0xffffffff
+	uint32_t ctx_id = INVALID_CTX_ID;
+	uint32_t vm = 0;
+	uint32_t *report32;
+	size_t format_size_32;
+	struct oa_format format = get_oa_format(fmt);
+
+	/* Ensure perf_stream_paranoid is set to 1 by default */
+	write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
+
+	bops = buf_ops_create(drm_fd);
+	vm = xe_vm_create(drm_fd, 0, 0);
+	ctx_id = xe_exec_queue_create(drm_fd, vm, hwe, 0);
+	igt_assert_neq(ctx_id, INVALID_CTX_ID);
+	properties[3] = ctx_id;
+
+	ibb = intel_bb_create_with_context(drm_fd, ctx_id, vm, NULL, BATCH_SZ);
+	buf = intel_buf_create(bops, 4096, 1, 8, 64,
+			       I915_TILING_NONE, I915_COMPRESSION_NONE);
+
+	buf_map(drm_fd, buf, true);
+	memset(buf->ptr, 0x80, 4096);
+	intel_buf_unmap(buf);
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+
+#define REPORT_ID 0xdeadbeef
+#define REPORT_OFFSET 0
+	emit_report_perf_count(ibb,
+			       buf,
+			       REPORT_OFFSET,
+			       REPORT_ID);
+	intel_bb_flush_render(ibb);
+	intel_bb_sync(ibb);
+
+	buf_map(drm_fd, buf, false);
+	report32 = buf->ptr;
+	format_size_32 = format.size >> 2;
+	dump_report(report32, format_size_32, "mi-rpc");
+
+	/* Sanity check reports
+	 * reportX_32[0]: report id passed with mi-rpc
+	 * reportX_32[1]: timestamp. NOTE: wraps around in ~6 minutes.
+	 *
+	 * reportX_32[format.b_off]: check if the entire report was filled.
+	 * B0 counter falls in the last 64 bytes of this report format.
+	 * Since reports are filled in 64 byte blocks, we should be able to
+	 * assure that the report was filled by checking the B0 counter. B0
+	 * counter is defined to be zero, so we can easily validate it.
+	 *
+	 * reportX_32[format_size_32]: outside report, make sure only the report
+	 * size amount of data was written.
+	 */
+	igt_assert_eq(report32[0], REPORT_ID);
+	igt_assert(oa_timestamp(report32, test_set->perf_oa_format));
+	igt_assert_neq(report32[format.b_off >> 2], 0x80808080);
+	igt_assert_eq(report32[format_size_32], 0x80808080);
+
+	intel_buf_unmap(buf);
+	intel_buf_destroy(buf);
+	intel_bb_destroy(ibb);
+	xe_exec_queue_destroy(drm_fd, ctx_id);
+	xe_vm_destroy(drm_fd, vm);
+	buf_ops_destroy(bops);
+	__perf_close(stream_fd);
+}
+
+static void
+emit_stall_timestamp_and_rpc(struct intel_bb *ibb,
+			     struct intel_buf *dst,
+			     int timestamp_offset,
+			     int report_dst_offset,
+			     uint32_t report_id)
+{
+	uint32_t pipe_ctl_flags = (PIPE_CONTROL_CS_STALL |
+				   PIPE_CONTROL_RENDER_TARGET_FLUSH |
+				   PIPE_CONTROL_WRITE_TIMESTAMP);
+
+	intel_bb_add_intel_buf(ibb, dst, true);
+	intel_bb_out(ibb, GFX_OP_PIPE_CONTROL(6));
+	intel_bb_out(ibb, pipe_ctl_flags);
+	intel_bb_emit_reloc(ibb, dst->handle,
+			    I915_GEM_DOMAIN_INSTRUCTION, I915_GEM_DOMAIN_INSTRUCTION,
+			    timestamp_offset, dst->addr.offset);
+	intel_bb_out(ibb, 0); /* imm lower */
+	intel_bb_out(ibb, 0); /* imm upper */
+
+	emit_report_perf_count(ibb, dst, report_dst_offset, report_id);
+}
+
+static void single_ctx_helper(struct drm_xe_engine_class_instance *hwe)
+{
+	struct intel_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t fmt = oar_unit_default_format();
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Have a random value here for the context id, but initialize
+		 * it once you figure out the context ID for the work to be
+		 * measured
+		 */
+		DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID, UINT64_MAX,
+
+		/* OA unit configuration:
+		 * DRM_XE_OA_PROPERTY_SAMPLE_OA is no longer required for Gen12
+		 * because the OAR unit increments counters only for the
+		 * relevant context. No other parameters are needed since we do
+		 * not rely on the OA buffer anymore to normalize the counter
+		 * values.
+		 */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(fmt),
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	struct buf_ops *bops;
+	struct intel_bb *ibb0, *ibb1;
+	struct intel_buf src[3], dst[3], *dst_buf;
+	uint32_t context0_id, context1_id, vm = 0;
+	uint32_t *report0_32, *report1_32, *report2_32, *report3_32;
+	uint64_t timestamp0_64, timestamp1_64;
+	uint64_t delta_ts64, delta_oa32;
+	uint64_t delta_ts64_ns, delta_oa32_ns;
+	uint64_t delta_delta;
+	int width = 800;
+	int height = 600;
+#define INVALID_CTX_ID 0xffffffff
+	uint32_t ctx0_id = INVALID_CTX_ID;
+	uint32_t ctx1_id = INVALID_CTX_ID;
+	int ret;
+	struct accumulator accumulator = {
+		.format = fmt
+	};
+
+	bops = buf_ops_create(drm_fd);
+
+	for (int i = 0; i < ARRAY_SIZE(src); i++) {
+		scratch_buf_init(bops, &src[i], width, height, 0xff0000ff);
+		scratch_buf_init(bops, &dst[i], width, height, 0x00ff00ff);
+	}
+
+	vm = xe_vm_create(drm_fd, 0, 0);
+	context0_id = xe_exec_queue_create(drm_fd, vm, hwe, 0);
+	context1_id = xe_exec_queue_create(drm_fd, vm, hwe, 0);
+	ibb0 = intel_bb_create_with_context(drm_fd, context0_id, vm, NULL, BATCH_SZ);
+	ibb1 = intel_bb_create_with_context(drm_fd, context1_id, vm, NULL, BATCH_SZ);
+
+	igt_debug("submitting warm up render_copy\n");
+
+	/* Submit some early, unmeasured, work to the context we want */
+	render_copy(ibb0,
+		    &src[0], 0, 0, width, height,
+		    &dst[0], 0, 0);
+
+	/* Initialize the context parameter to the perf open ioctl here */
+	properties[3] = context0_id;
+
+	igt_debug("opening xe oa stream\n");
+	stream_fd = __perf_open(drm_fd, &param, false);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+
+	dst_buf = intel_buf_create(bops, 4096, 1, 8, 64,
+				   I915_TILING_NONE,
+				   I915_COMPRESSION_NONE);
+
+	/* Set write domain to cpu briefly to fill the buffer with 80s */
+	buf_map(drm_fd, dst_buf, true /* write enable */);
+	memset(dst_buf->ptr, 0x80, 2048);
+	memset((uint8_t *) dst_buf->ptr + 2048, 0, 2048);
+	intel_buf_unmap(dst_buf);
+
+	/* Submit an mi-rpc to context0 before measurable work */
+#define BO_TIMESTAMP_OFFSET0 1024
+#define BO_REPORT_OFFSET0 0
+#define BO_REPORT_ID0 0xdeadbeef
+	emit_stall_timestamp_and_rpc(ibb0,
+				     dst_buf,
+				     BO_TIMESTAMP_OFFSET0,
+				     BO_REPORT_OFFSET0,
+				     BO_REPORT_ID0);
+	intel_bb_flush_render(ibb0);
+
+	/* Remove intel_buf from ibb0 added implicitly in rendercopy */
+	intel_bb_remove_intel_buf(ibb0, dst_buf);
+
+	/* This is the work/context that is measured for counter increments */
+	render_copy(ibb0,
+		    &src[0], 0, 0, width, height,
+		    &dst[0], 0, 0);
+	intel_bb_flush_render(ibb0);
+
+	/* Submit an mi-rpc to context1 before work
+	 *
+	 * On gen12, this measurement should just yield counters that are
+	 * all zeroes, since the counters will only increment for the
+	 * context passed to perf open ioctl
+	 */
+#define BO_TIMESTAMP_OFFSET2 1040
+#define BO_REPORT_OFFSET2 512
+#define BO_REPORT_ID2 0x00c0ffee
+	emit_stall_timestamp_and_rpc(ibb1,
+				     dst_buf,
+				     BO_TIMESTAMP_OFFSET2,
+				     BO_REPORT_OFFSET2,
+				     BO_REPORT_ID2);
+	intel_bb_flush_render(ibb1);
+
+	/* Submit two copies on the other context to avoid a false
+	 * positive in case the driver somehow ended up filtering for
+	 * context1
+	 */
+	render_copy(ibb1,
+		    &src[1], 0, 0, width, height,
+		    &dst[1], 0, 0);
+
+	render_copy(ibb1,
+		    &src[2], 0, 0, width, height,
+		    &dst[2], 0, 0);
+	intel_bb_flush_render(ibb1);
+
+	/* Submit an mi-rpc to context1 after all work */
+#define BO_TIMESTAMP_OFFSET3 1048
+#define BO_REPORT_OFFSET3 768
+#define BO_REPORT_ID3 0x01c0ffee
+	emit_stall_timestamp_and_rpc(ibb1,
+				     dst_buf,
+				     BO_TIMESTAMP_OFFSET3,
+				     BO_REPORT_OFFSET3,
+				     BO_REPORT_ID3);
+	intel_bb_flush_render(ibb1);
+
+	/* Remove intel_buf from ibb1 added implicitly in rendercopy */
+	intel_bb_remove_intel_buf(ibb1, dst_buf);
+
+	/* Submit an mi-rpc to context0 after all measurable work */
+#define BO_TIMESTAMP_OFFSET1 1032
+#define BO_REPORT_OFFSET1 256
+#define BO_REPORT_ID1 0xbeefbeef
+	emit_stall_timestamp_and_rpc(ibb0,
+				     dst_buf,
+				     BO_TIMESTAMP_OFFSET1,
+				     BO_REPORT_OFFSET1,
+				     BO_REPORT_ID1);
+	intel_bb_flush_render(ibb0);
+	intel_bb_sync(ibb0);
+	intel_bb_sync(ibb1);
+
+	buf_map(drm_fd, dst_buf, false);
+
+	/* Sanity check reports
+	 * reportX_32[0]: report id passed with mi-rpc
+	 * reportX_32[1]: timestamp
+	 * reportX_32[2]: context id
+	 *
+	 * report0_32: start of measurable work
+	 * report1_32: end of measurable work
+	 * report2_32: start of other work
+	 * report3_32: end of other work
+	 */
+	report0_32 = dst_buf->ptr;
+	igt_assert_eq(report0_32[0], 0xdeadbeef);
+	igt_assert(oa_timestamp(report0_32, fmt));
+	ctx0_id = report0_32[2];
+	igt_debug("MI_RPC(start) CTX ID: %u\n", ctx0_id);
+	dump_report(report0_32, 64, "report0_32");
+
+	report1_32 = report0_32 + 64;
+	igt_assert_eq(report1_32[0], 0xbeefbeef);
+	igt_assert(oa_timestamp(report1_32, fmt));
+	ctx1_id = report1_32[2];
+	igt_debug("CTX ID1: %u\n", ctx1_id);
+	dump_report(report1_32, 64, "report1_32");
+
+	/* Verify that counters in context1 are all zeroes */
+	report2_32 = report0_32 + 128;
+	igt_assert_eq(report2_32[0], 0x00c0ffee);
+	igt_assert(oa_timestamp(report2_32, fmt));
+	dump_report(report2_32, 64, "report2_32");
+	igt_assert_eq(0, memcmp(&report2_32[4],
+				(uint8_t *) dst_buf->ptr + 2048,
+				240));
+
+	report3_32 = report0_32 + 192;
+	igt_assert_eq(report3_32[0], 0x01c0ffee);
+	igt_assert(oa_timestamp(report3_32, fmt));
+	dump_report(report3_32, 64, "report3_32");
+	igt_assert_eq(0, memcmp(&report3_32[4],
+				(uint8_t *) dst_buf->ptr + 2048,
+				240));
+
+	/* Accumulate deltas for counters - A0, A21 and A26 */
+	memset(accumulator.deltas, 0, sizeof(accumulator.deltas));
+	accumulate_reports(&accumulator, report0_32, report1_32);
+	igt_debug("total: A0 = %"PRIu64", A21 = %"PRIu64", A26 = %"PRIu64"\n",
+			accumulator.deltas[2 + 0],
+			accumulator.deltas[2 + 21],
+			accumulator.deltas[2 + 26]);
+
+	igt_debug("oa_timestamp32 0 = %"PRIu64"\n", oa_timestamp(report0_32, fmt));
+	igt_debug("oa_timestamp32 1 = %"PRIu64"\n", oa_timestamp(report1_32, fmt));
+	igt_debug("ctx_id 0 = %u\n", report0_32[2]);
+	igt_debug("ctx_id 1 = %u\n", report1_32[2]);
+
+	/* The delta as calculated via the PIPE_CONTROL timestamp or
+	 * the OA report timestamps should be almost identical but
+	 * allow a 500 nanoseconds margin.
+	 */
+	timestamp0_64 = *(uint64_t *)(((uint8_t *)dst_buf->ptr) + BO_TIMESTAMP_OFFSET0);
+	timestamp1_64 = *(uint64_t *)(((uint8_t *)dst_buf->ptr) + BO_TIMESTAMP_OFFSET1);
+
+	igt_debug("ts_timestamp64 0 = %"PRIu64"\n", timestamp0_64);
+	igt_debug("ts_timestamp64 1 = %"PRIu64"\n", timestamp1_64);
+
+	delta_ts64 = timestamp1_64 - timestamp0_64;
+	delta_oa32 = oa_timestamp_delta(report1_32, report0_32, fmt);
+
+	/* Sanity check that we can pass the delta to timebase_scale */
+	delta_oa32_ns = timebase_scale(delta_oa32);
+	delta_ts64_ns = cs_timebase_scale(delta_ts64);
+
+	igt_debug("oa32 delta = %"PRIu64", = %"PRIu64"ns\n",
+			delta_oa32, delta_oa32_ns);
+	igt_debug("ts64 delta = %"PRIu64", = %"PRIu64"ns\n",
+			delta_ts64, delta_ts64_ns);
+
+	delta_delta = delta_ts64_ns > delta_oa32_ns ?
+		      (delta_ts64_ns - delta_oa32_ns) :
+		      (delta_oa32_ns - delta_ts64_ns);
+	if (delta_delta > 500) {
+		igt_debug("delta_delta = %"PRIu64". exceeds margin, skipping..\n",
+			  delta_delta);
+		exit(EAGAIN);
+	}
+
+	igt_debug("n samples written = %"PRIu64"/%"PRIu64" (%ix%i)\n",
+		  accumulator.deltas[2 + 21],
+		  accumulator.deltas[2 + 26],
+		  width, height);
+	accumulator_print(&accumulator, "filtered");
+
+	/* Verify that the work actually happened by comparing the src
+	 * and dst buffers
+	 */
+	buf_map(drm_fd, &src[0], false);
+	buf_map(drm_fd, &dst[0], false);
+
+	ret = memcmp(src[0].ptr, dst[0].ptr, 4 * width * height);
+	intel_buf_unmap(&src[0]);
+	intel_buf_unmap(&dst[0]);
+
+	if (ret != 0) {
+		accumulator_print(&accumulator, "total");
+		exit(EAGAIN);
+	}
+
+	/* FIXME: can we deduce the presence of A26 from get_oa_format(fmt)? */
+	if (IS_LUNARLAKE(devid))
+		goto skip_check;
+
+	/* Check that this test passed. The test measures the number of 2x2
+	 * samples written to the render target using the counter A26. For
+	 * OAR, this counter will only have increments relevant to this specific
+	 * context. The value equals the width * height of the rendered work.
+	 */
+	igt_assert_eq(accumulator.deltas[2 + 26], width * height);
+
+ skip_check:
+	/* Clean up */
+	for (int i = 0; i < ARRAY_SIZE(src); i++) {
+		intel_buf_close(bops, &src[i]);
+		intel_buf_close(bops, &dst[i]);
+	}
+
+	intel_buf_unmap(dst_buf);
+	intel_buf_destroy(dst_buf);
+	intel_bb_destroy(ibb0);
+	intel_bb_destroy(ibb1);
+	xe_exec_queue_destroy(drm_fd, context0_id);
+	xe_exec_queue_destroy(drm_fd, context1_id);
+	xe_vm_destroy(drm_fd, vm);
+	buf_ops_destroy(bops);
+	__perf_close(stream_fd);
+}
+
+static void
+test_single_ctx_render_target_writes_a_counter(struct drm_xe_engine_class_instance *hwe)
+{
+	int child_ret;
+	struct igt_helper_process child = {};
+
+	/* Ensure perf_stream_paranoid is set to 1 by default */
+	write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
+
+	do {
+		igt_fork_helper(&child) {
+			/* A local device for local resources. */
+			drm_fd = drm_reopen_driver(drm_fd);
+
+			igt_drop_root();
+
+			single_ctx_helper(hwe);
+
+			drm_close_driver(drm_fd);
+		}
+		child_ret = igt_wait_helper(&child);
+		igt_assert(WEXITSTATUS(child_ret) == EAGAIN ||
+			   WEXITSTATUS(child_ret) == 0);
+	} while (WEXITSTATUS(child_ret) == EAGAIN);
+}
+
+static void
+test_rc6_disable(void)
+{
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exp_1_millisec,
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	unsigned long rc6_start, rc6_end;
+
+	/* Verify rc6 is functional by measuring residency while idle */
+	rc6_start = rc6_residency_ms();
+	usleep(50000);
+	rc6_end = rc6_residency_ms();
+	igt_require(rc6_end != rc6_start);
+
+	/* While OA is active, we keep rc6 disabled so we don't lose metrics */
+	stream_fd = __perf_open(drm_fd, &param, false);
+
+	rc6_start = rc6_residency_ms();
+	usleep(50000);
+	rc6_end = rc6_residency_ms();
+	igt_assert_eq(rc6_end - rc6_start, 0);
+
+	__perf_close(stream_fd);
+
+	/* But once OA is closed, we expect the device to sleep again */
+	rc6_start = rc6_residency_ms();
+	usleep(50000);
+	rc6_end = rc6_residency_ms();
+	igt_assert_neq(rc6_end - rc6_start, 0);
+}
+
+static void
+test_stress_open_close(const struct drm_xe_engine_class_instance *hwe)
+{
+	struct intel_perf_metric_set *test_set = metric_set(hwe);
+
+	load_helper_init();
+	load_helper_run(HIGH);
+
+	igt_until_timeout(2) {
+		int oa_exponent = 5; /* 5 micro seconds */
+		uint64_t properties[] = {
+			DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+			/* XXX: even without periodic sampling we have to
+			 * specify at least one sample layout property...
+			 */
+			DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+			/* OA unit configuration */
+			DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+			DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
+			DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exponent,
+			DRM_XE_OA_PROPERTY_OA_DISABLED, true,
+			DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+		};
+		struct drm_xe_oa_open_prop param = {
+			.num_properties = ARRAY_SIZE(properties) / 2,
+			.properties_ptr = to_user_pointer(properties),
+		};
+
+		stream_fd = __perf_open(drm_fd, &param, false);
+		__perf_close(stream_fd);
+	}
+
+	load_helper_stop();
+	load_helper_fini();
+}
+
+static int __xe_oa_add_config(int fd, struct drm_xe_oa_config *config)
+{
+	int ret = xe_perf_ioctl(fd, DRM_XE_PERF_OP_ADD_CONFIG, config);
+	if (ret < 0)
+		ret = -errno;
+	return ret;
+}
+
+static int xe_oa_add_config(int fd, struct drm_xe_oa_config *config)
+{
+	int config_id = __xe_oa_add_config(fd, config);
+
+	igt_debug("config_id=%i\n", config_id);
+	igt_assert(config_id > 0);
+
+	return config_id;
+}
+
+static void xe_oa_remove_config(int fd, uint64_t config_id)
+{
+	igt_assert_eq(xe_perf_ioctl(fd, DRM_XE_PERF_OP_REMOVE_CONFIG, &config_id), 0);
+}
+
+static bool has_xe_oa_userspace_config(int fd)
+{
+	uint64_t config = 0;
+	int ret = xe_perf_ioctl(fd, DRM_XE_PERF_OP_REMOVE_CONFIG, &config);
+	igt_assert_eq(ret, -1);
+
+	igt_debug("errno=%i\n", errno);
+
+	return errno != EINVAL;
+}
+
+#define SAMPLE_MUX_REG (IS_LUNARLAKE(xe_dev_id(drm_fd)) ? \
+			0x13000 /* PES* */ : 0x9888 /* NOA_WRITE */)
+
+static void
+test_invalid_create_userspace_config(void)
+{
+	struct drm_xe_oa_config config;
+	const char *uuid = "01234567-0123-0123-0123-0123456789ab";
+	const char *invalid_uuid = "blablabla-wrong";
+	uint32_t mux_regs[] = { SAMPLE_MUX_REG, 0x0 };
+	uint32_t invalid_mux_regs[] = { 0x12345678 /* invalid register */, 0x0 };
+
+	igt_require(has_xe_oa_userspace_config(drm_fd));
+
+	memset(&config, 0, sizeof(config));
+
+	/* invalid uuid */
+	strncpy(config.uuid, invalid_uuid, sizeof(config.uuid));
+	config.n_regs = 1;
+	config.regs_ptr = to_user_pointer(mux_regs);
+
+	igt_assert_eq(__xe_oa_add_config(drm_fd, &config), -EINVAL);
+
+	/* invalid mux_regs */
+	memcpy(config.uuid, uuid, sizeof(config.uuid));
+	config.n_regs = 1;
+	config.regs_ptr = to_user_pointer(invalid_mux_regs);
+
+	igt_assert_eq(__xe_oa_add_config(drm_fd, &config), -EINVAL);
+
+	/* empty config */
+	memcpy(config.uuid, uuid, sizeof(config.uuid));
+	config.n_regs = 0;
+	config.regs_ptr = to_user_pointer(mux_regs);
+
+	igt_assert_eq(__xe_oa_add_config(drm_fd, &config), -EINVAL);
+
+	/* empty config with null pointer */
+	memcpy(config.uuid, uuid, sizeof(config.uuid));
+	config.n_regs = 1;
+	config.regs_ptr = to_user_pointer(NULL);
+
+	igt_assert_eq(__xe_oa_add_config(drm_fd, &config), -EINVAL);
+
+	/* invalid pointer */
+	memcpy(config.uuid, uuid, sizeof(config.uuid));
+	config.n_regs = 42;
+	config.regs_ptr = to_user_pointer((void *) 0xDEADBEEF);
+
+	igt_assert_eq(__xe_oa_add_config(drm_fd, &config), -EFAULT);
+}
+
+static void
+test_invalid_remove_userspace_config(void)
+{
+	struct drm_xe_oa_config config;
+	const char *uuid = "01234567-0123-0123-0123-0123456789ab";
+	uint32_t mux_regs[] = { SAMPLE_MUX_REG, 0x0 };
+	uint64_t config_id, wrong_config_id = 999999999;
+	char path[512];
+
+	igt_require(has_xe_oa_userspace_config(drm_fd));
+
+	snprintf(path, sizeof(path), "metrics/%s/id", uuid);
+
+	/* Destroy previous configuration if present */
+	if (try_sysfs_read_u64(path, &config_id))
+		xe_oa_remove_config(drm_fd, config_id);
+
+	memset(&config, 0, sizeof(config));
+
+	memcpy(config.uuid, uuid, sizeof(config.uuid));
+
+	config.n_regs = 1;
+	config.regs_ptr = to_user_pointer(mux_regs);
+
+	config_id = xe_oa_add_config(drm_fd, &config);
+
+	/* Removing configs without permissions should fail. */
+	igt_fork(child, 1) {
+		igt_drop_root();
+
+		xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_REMOVE_CONFIG, &config_id, EACCES);
+	}
+	igt_waitchildren();
+
+	/* Removing invalid config ID should fail. */
+	xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_REMOVE_CONFIG, &wrong_config_id, ENOENT);
+
+	xe_oa_remove_config(drm_fd, config_id);
+}
+
+static void
+test_create_destroy_userspace_config(void)
+{
+	struct drm_xe_oa_config config;
+	const char *uuid = "01234567-0123-0123-0123-0123456789ab";
+	uint32_t mux_regs[] = { SAMPLE_MUX_REG, 0x0 };
+	uint32_t regs[100];
+	int i;
+	uint64_t config_id;
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, 0, /* Filled later */
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exp_1_millisec,
+		DRM_XE_OA_PROPERTY_OA_DISABLED, true,
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	char path[512];
+
+	igt_require(has_xe_oa_userspace_config(drm_fd));
+
+	snprintf(path, sizeof(path), "metrics/%s/id", uuid);
+
+	/* Destroy previous configuration if present */
+	if (try_sysfs_read_u64(path, &config_id))
+		xe_oa_remove_config(drm_fd, config_id);
+
+	memset(&config, 0, sizeof(config));
+	memcpy(config.uuid, uuid, sizeof(config.uuid));
+
+	regs[0] = mux_regs[0];
+	regs[1] = mux_regs[1];
+	/* Flex EU counters */
+	for (i = 1; i < ARRAY_SIZE(regs) / 2; i++) {
+		regs[i * 2] = 0xe458; /* EU_PERF_CNTL0 */
+		regs[i * 2 + 1] = 0x0;
+	}
+	config.regs_ptr = to_user_pointer(regs);
+	config.n_regs = ARRAY_SIZE(regs) / 2;
+
+	/* Creating configs without permissions shouldn't work. */
+	igt_fork(child, 1) {
+		igt_drop_root();
+
+		igt_assert_eq(__xe_oa_add_config(drm_fd, &config), -EACCES);
+	}
+	igt_waitchildren();
+
+	/* Create a new config */
+	config_id = xe_oa_add_config(drm_fd, &config);
+
+	/* Verify that adding the another config with the same uuid fails. */
+	igt_assert_eq(__xe_oa_add_config(drm_fd, &config), -EADDRINUSE);
+
+	/* Try to use the new config */
+	properties[3] = config_id;
+	stream_fd = __perf_open(drm_fd, &param, false);
+
+	/* Verify that destroying the config doesn't yield any error. */
+	xe_oa_remove_config(drm_fd, config_id);
+
+	/* Read the config to verify shouldn't raise any issue. */
+	config_id = xe_oa_add_config(drm_fd, &config);
+
+	__perf_close(stream_fd);
+
+	xe_oa_remove_config(drm_fd, config_id);
+}
+
+/* Registers required by userspace. This list should be maintained by
+ * the OA configs developers and agreed upon with kernel developers as
+ * some of the registers have bits used by the kernel (for workarounds
+ * for instance) and other bits that need to be set by the OA configs.
+ */
+static void
+test_whitelisted_registers_userspace_config(void)
+{
+	struct drm_xe_oa_config config;
+	const char *uuid = "01234567-0123-0123-0123-0123456789ab";
+	uint32_t regs[600];
+	uint32_t i;
+	uint32_t oa_start_trig1, oa_start_trig8;
+	uint32_t oa_report_trig1, oa_report_trig8;
+	uint64_t config_id;
+	char path[512];
+	int ret;
+	const uint32_t flex[] = {
+		0xe458,
+		0xe558,
+		0xe658,
+		0xe758,
+		0xe45c,
+		0xe55c,
+		0xe65c
+	};
+
+	igt_require(has_xe_oa_userspace_config(drm_fd));
+
+	snprintf(path, sizeof(path), "metrics/%s/id", uuid);
+
+	if (try_sysfs_read_u64(path, &config_id))
+		xe_oa_remove_config(drm_fd, config_id);
+
+	memset(&config, 0, sizeof(config));
+	memcpy(config.uuid, uuid, sizeof(config.uuid));
+
+	oa_start_trig1 = 0xd900;
+	oa_start_trig8 = 0xd91c;
+	oa_report_trig1 = 0xd920;
+	oa_report_trig8 = 0xd93c;
+
+	/* b_counters_regs: OASTARTTRIG[1-8] */
+	for (i = oa_start_trig1; i <= oa_start_trig8; i += 4) {
+		regs[config.n_regs * 2] = i;
+		regs[config.n_regs * 2 + 1] = 0;
+		config.n_regs++;
+	}
+	/* b_counters_regs: OAREPORTTRIG[1-8] */
+	for (i = oa_report_trig1; i <= oa_report_trig8; i += 4) {
+		regs[config.n_regs * 2] = i;
+		regs[config.n_regs * 2 + 1] = 0;
+		config.n_regs++;
+	}
+
+	/* Flex EU registers, only from Gen8+. */
+	for (i = 0; i < ARRAY_SIZE(flex); i++) {
+		regs[config.n_regs * 2] = flex[i];
+		regs[config.n_regs * 2 + 1] = 0;
+		config.n_regs++;
+	}
+
+	/* Mux registers (too many of them, just checking bounds) */
+	/* NOA_WRITE */
+	regs[config.n_regs * 2] = SAMPLE_MUX_REG;
+	regs[config.n_regs * 2 + 1] = 0;
+	config.n_regs++;
+
+	/* NOA_CONFIG */
+	if (!IS_LUNARLAKE(devid)) {
+		regs[config.n_regs * 2] = 0xD04;
+		regs[config.n_regs * 2 + 1] = 0;
+		config.n_regs++;
+		regs[config.n_regs * 2] = 0xD2C;
+		regs[config.n_regs * 2 + 1] = 0;
+		config.n_regs++;
+	}
+	if (!IS_LUNARLAKE(devid) && !IS_METEORLAKE(devid)) {
+		/* WAIT_FOR_RC6_EXIT */
+		regs[config.n_regs * 2] = 0x20CC;
+		regs[config.n_regs * 2 + 1] = 0;
+		config.n_regs++;
+	}
+
+	config.regs_ptr = (uintptr_t) regs;
+
+	/* Create a new config */
+	ret = xe_perf_ioctl(drm_fd, DRM_XE_PERF_OP_ADD_CONFIG, &config);
+	igt_assert(ret > 0); /* Config 0 should be used by the kernel */
+	config_id = ret;
+
+	xe_oa_remove_config(drm_fd, config_id);
+}
+
+#define OAG_OASTATUS (0xdafc)
+#define OAG_MMIOTRIGGER (0xdb1c)
+
+static const uint32_t oa_wl[] = {
+	OAG_MMIOTRIGGER,
+	OAG_OASTATUS,
+};
+
+static const uint32_t nonpriv_slot_offsets[] = {
+	0x4d0, 0x4d4, 0x4d8, 0x4dc, 0x4e0, 0x4e4, 0x4e8, 0x4ec,
+	0x4f0, 0x4f4, 0x4f8, 0x4fc, 0x010, 0x014, 0x018, 0x01c,
+	0x1e0, 0x1e4, 0x1e8, 0x1ec,
+};
+
+struct test_perf {
+	const uint32_t *slots;
+	uint32_t num_slots;
+	const uint32_t *wl;
+	uint32_t num_wl;
+} perf;
+
+#define HAS_OA_MMIO_TRIGGER(__d) \
+	(IS_DG2(__d) || IS_PONTEVECCHIO(__d) || IS_METEORLAKE(__d) || IS_LUNARLAKE(__d))
+
+static void perf_init_whitelist(void)
+{
+	perf.slots = nonpriv_slot_offsets;
+	perf.num_slots = 20;
+	perf.wl = oa_wl;
+	perf.num_wl = ARRAY_SIZE(oa_wl);
+}
+
+static void
+emit_oa_reg_read(struct intel_bb *ibb, struct intel_buf *dst, uint32_t offset,
+		 uint32_t reg)
+{
+	intel_bb_add_intel_buf(ibb, dst, true);
+
+	intel_bb_out(ibb, MI_STORE_REGISTER_MEM | 2);
+	intel_bb_out(ibb, reg);
+	intel_bb_emit_reloc(ibb, dst->handle,
+			    I915_GEM_DOMAIN_INSTRUCTION,
+			    I915_GEM_DOMAIN_INSTRUCTION,
+			    offset, dst->addr.offset);
+	intel_bb_out(ibb, lower_32_bits(offset));
+	intel_bb_out(ibb, upper_32_bits(offset));
+}
+
+static void
+emit_mmio_triggered_report(struct intel_bb *ibb, uint32_t value)
+{
+	intel_bb_out(ibb, MI_LOAD_REGISTER_IMM(1));
+	intel_bb_out(ibb, OAG_MMIOTRIGGER);
+	intel_bb_out(ibb, value);
+}
+
+static void dump_whitelist(uint32_t mmio_base, const char *msg)
+{
+	int i;
+
+	igt_debug("%s\n", msg);
+
+	for (i = 0; i < perf.num_slots; i++)
+		igt_debug("FORCE_TO_NON_PRIV_%02d = %08x\n",
+			  i, intel_register_read(&mmio_data,
+						 mmio_base + perf.slots[i]));
+}
+
+static bool in_whitelist(uint32_t mmio_base, uint32_t reg)
+{
+	int i;
+
+	if (reg & MMIO_BASE_OFFSET)
+		reg = (reg & ~MMIO_BASE_OFFSET) + mmio_base;
+
+	for (i = 0; i < perf.num_slots; i++) {
+		uint32_t fpriv = intel_register_read(&mmio_data,
+						     mmio_base + perf.slots[i]);
+
+		if ((fpriv & RING_FORCE_TO_NONPRIV_ADDRESS_MASK) == reg)
+			return true;
+	}
+
+	return false;
+}
+
+static void oa_regs_in_whitelist(uint32_t mmio_base, bool are_present)
+{
+	int i;
+
+	if (are_present) {
+		for (i = 0; i < perf.num_wl; i++)
+			igt_assert(in_whitelist(mmio_base, perf.wl[i]));
+	} else {
+		for (i = 0; i < perf.num_wl; i++)
+			igt_assert(!in_whitelist(mmio_base, perf.wl[i]));
+	}
+}
+
+static u32 oa_get_mmio_base(const struct drm_xe_engine_class_instance *hwe)
+{
+	u32 mmio_base = 0x2000;
+
+	switch (hwe->engine_class) {
+	case DRM_XE_ENGINE_CLASS_RENDER:
+		mmio_base = 0x2000;
+		break;
+	case DRM_XE_ENGINE_CLASS_COMPUTE:
+		switch (hwe->engine_instance) {
+		case 0:
+			mmio_base = 0x1a000;
+			break;
+		case 1:
+			mmio_base = 0x1c000;
+			break;
+		case 2:
+			mmio_base = 0x1e000;
+			break;
+		case 3:
+			mmio_base = 0x26000;
+			break;
+		}
+	}
+
+	return mmio_base;
+}
+
+static void test_oa_regs_whitelist(const struct drm_xe_engine_class_instance *hwe)
+{
+	struct intel_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exp_1_millisec,
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = sizeof(properties) / 16,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	// uint32_t mmio_base = gem_engine_mmio_base(drm_fd, e->name);
+	u32 mmio_base;
+
+	/* FIXME: Add support for OAM whitelist testing */
+	if (hwe->engine_class != DRM_XE_ENGINE_CLASS_RENDER &&
+	    hwe->engine_class != DRM_XE_ENGINE_CLASS_COMPUTE)
+		return;
+
+	mmio_base = oa_get_mmio_base(hwe);
+
+	intel_register_access_init(&mmio_data,
+				   igt_device_get_pci_device(drm_fd),
+				   0, drm_fd);
+	stream_fd = __perf_open(drm_fd, &param, false);
+
+	dump_whitelist(mmio_base, "oa whitelisted");
+
+	oa_regs_in_whitelist(mmio_base, true);
+
+	__perf_close(stream_fd);
+
+	dump_whitelist(mmio_base, "oa remove whitelist");
+
+	/*
+	 * after perf close, check that registers are removed from the nonpriv
+	 * slots
+	 * FIXME if needed: currently regs remain added forever
+	 */
+	// oa_regs_in_whitelist(mmio_base, false);
+
+	intel_register_access_fini(&mmio_data);
+}
+
+static void
+__test_mmio_triggered_reports(struct drm_xe_engine_class_instance *hwe)
+{
+	struct intel_perf_metric_set *test_set = default_test_set;
+	int oa_exponent = max_oa_exponent_for_period_lte(2 * NSEC_PER_SEC);
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exponent,
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = sizeof(properties) / 16,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	size_t format_size = get_oa_format(test_set->perf_oa_format).size;
+	uint32_t oa_buffer, offset_tail1, offset_tail2;
+	struct intel_buf src, dst, *dst_buf;
+	uint32_t mmio_triggered_reports = 0;
+	uint32_t *start, *end;
+	struct buf_ops *bops;
+	struct intel_bb *ibb;
+	uint32_t context, vm;
+	int height = 600;
+	int width = 800;
+	uint8_t *buf;
+
+	bops = buf_ops_create(drm_fd);
+
+	dst_buf = intel_buf_create(bops, 4096, 1, 8, 64,
+				   I915_TILING_NONE,
+				   I915_COMPRESSION_NONE);
+	buf_map(drm_fd, dst_buf, true);
+	memset(dst_buf->ptr, 0, 4096);
+	intel_buf_unmap(dst_buf);
+
+	scratch_buf_init(bops, &src, width, height, 0xff0000ff);
+	scratch_buf_init(bops, &dst, width, height, 0x00ff00ff);
+
+	vm = xe_vm_create(drm_fd, 0, 0);
+	context = xe_exec_queue_create(drm_fd, vm, hwe, 0);
+	igt_assert(context);
+	ibb = intel_bb_create_with_context(drm_fd, context, vm, NULL, BATCH_SZ);
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+
+	buf = mmap(0, OA_BUFFER_SIZE, PROT_READ, MAP_PRIVATE, stream_fd, 0);
+	igt_assert(buf != NULL);
+
+	emit_oa_reg_read(ibb, dst_buf, 0, OAG_OABUFFER);
+	emit_oa_reg_read(ibb, dst_buf, 4, OAG_OATAILPTR);
+	emit_mmio_triggered_report(ibb, 0xc0ffee11);
+
+	if (render_copy)
+		render_copy(ibb,
+			    &src, 0, 0, width, height,
+			    &dst, 0, 0);
+
+	emit_mmio_triggered_report(ibb, 0xc0ffee22);
+
+	emit_oa_reg_read(ibb, dst_buf, 8, OAG_OATAILPTR);
+
+	intel_bb_flush_render(ibb);
+	intel_bb_sync(ibb);
+
+	buf_map(drm_fd, dst_buf, false);
+
+	oa_buffer = dst_buf->ptr[0] & OAG_OATAILPTR_MASK;
+	offset_tail1 = (dst_buf->ptr[1] & OAG_OATAILPTR_MASK) - oa_buffer;
+	offset_tail2 = (dst_buf->ptr[2] & OAG_OATAILPTR_MASK) - oa_buffer;
+
+	igt_debug("oa_buffer = %08x, tail1 = %08x, tail2 = %08x\n",
+		  oa_buffer, offset_tail1, offset_tail2);
+
+	start = (uint32_t *)(buf + offset_tail1);
+	end = (uint32_t *)(buf + offset_tail2);
+	while (start < end) {
+		if (!report_reason(start))
+			mmio_triggered_reports++;
+
+		if (get_oa_format(test_set->perf_oa_format).report_hdr_64bit) {
+			u64 *start64 = (u64 *)start;
+
+			igt_debug("hdr: %016lx %016lx %016lx %016lx\n",
+				  start64[0], start64[1], start64[2], start64[3]);
+		} else {
+			igt_debug("hdr: %08x %08x %08x %08x\n",
+				  start[0], start[1], start[2], start[3]);
+		}
+
+		start += format_size / 4;
+	}
+
+	igt_assert_eq(mmio_triggered_reports, 2);
+
+	munmap(buf, OA_BUFFER_SIZE);
+	intel_buf_close(bops, &src);
+	intel_buf_close(bops, &dst);
+	intel_buf_unmap(dst_buf);
+	intel_buf_destroy(dst_buf);
+	intel_bb_destroy(ibb);
+	xe_exec_queue_destroy(drm_fd, context);
+	xe_vm_destroy(drm_fd, vm);
+	buf_ops_destroy(bops);
+	__perf_close(stream_fd);
+}
+
+static void
+test_mmio_triggered_reports(struct drm_xe_engine_class_instance *hwe)
+{
+	struct igt_helper_process child = {};
+	int ret;
+
+	write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 0);
+	igt_fork_helper(&child) {
+		igt_drop_root();
+
+		__test_mmio_triggered_reports(hwe);
+	}
+	ret = igt_wait_helper(&child);
+	write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
+
+	igt_assert(WEXITSTATUS(ret) == EAGAIN ||
+		   WEXITSTATUS(ret) == 0);
+}
+
+static unsigned read_xe_module_ref(void)
+{
+	FILE *fp = fopen("/proc/modules", "r");
+	char *line = NULL;
+	size_t line_buf_size = 0;
+	int len = 0;
+	unsigned ref_count;
+	char mod[8];
+	int modn = 3;
+
+	igt_assert(fp);
+
+	strcpy(mod, "xe ");
+	while ((len = getline(&line, &line_buf_size, fp)) > 0) {
+		if (strncmp(line, mod, modn) == 0) {
+			unsigned long mem;
+			int ret = sscanf(line + 5, "%lu %u", &mem, &ref_count);
+			igt_assert(ret == 2);
+			goto done;
+		}
+	}
+
+	igt_assert(!"reached");
+
+done:
+	free(line);
+	fclose(fp);
+	return ref_count;
+}
+
+/* check that an open oa stream holds a reference on the xe module
+ * including in the corner case where the original drm fd has been closed.
+ */
+static void
+test_xe_ref_count(void)
+{
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+
+		/* Include OA reports in samples */
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+
+		/* OA unit configuration */
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, 0 /* updated below */,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(0), /* update below */
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, 0, /* update below */
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	unsigned baseline, ref_count0, ref_count1;
+	uint32_t oa_report0[64];
+	uint32_t oa_report1[64];
+
+	/* This should be the first test before the first fixture so no drm_fd
+	 * should have been opened so far...
+	 */
+	igt_assert_eq(drm_fd, -1);
+
+	baseline = read_xe_module_ref();
+	igt_debug("baseline ref count (drm fd closed) = %u\n", baseline);
+
+	drm_fd = __drm_open_driver(DRIVER_XE);
+	if (is_xe_device(drm_fd))
+		xe_device_get(drm_fd);
+	devid = intel_get_drm_devid(drm_fd);
+	sysfs = igt_sysfs_open(drm_fd);
+
+	/* Note: these global variables are only initialized after calling
+	 * init_sys_info()...
+	 */
+	igt_require(init_sys_info());
+	properties[5] = default_test_set->perf_oa_metrics_set;
+	properties[7] = __ff(default_test_set->perf_oa_format);
+	properties[9] = oa_exp_1_millisec;
+
+	ref_count0 = read_xe_module_ref();
+	igt_debug("initial ref count with drm_fd open = %u\n", ref_count0);
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+        set_fd_flags(stream_fd, O_CLOEXEC);
+	ref_count1 = read_xe_module_ref();
+	igt_debug("ref count after opening oa stream = %u\n", ref_count1);
+
+	drm_close_driver(drm_fd);
+	close(sysfs);
+	drm_fd = -1;
+	sysfs = -1;
+	ref_count0 = read_xe_module_ref();
+	igt_debug("ref count after closing drm fd = %u\n", ref_count0);
+
+	read_2_oa_reports(default_test_set->perf_oa_format,
+			  oa_exp_1_millisec,
+			  oa_report0,
+			  oa_report1,
+			  false); /* not just timer reports */
+
+	__perf_close(stream_fd);
+	ref_count0 = read_xe_module_ref();
+	igt_debug("ref count after closing oa stream fd = %u\n", ref_count0);
+}
+
+static void
+test_sysctl_defaults(void)
+{
+	int paranoid = read_u64_file("/proc/sys/dev/xe/perf_stream_paranoid");
+
+	igt_assert_eq(paranoid, 1);
+}
+
+static struct intel_perf_metric_set *metric_set(const struct drm_xe_engine_class_instance *hwe)
+{
+	const char *test_set_name = NULL;
+	struct intel_perf_metric_set *metric_set_iter;
+	struct intel_perf_metric_set *test_set = NULL;
+
+	if (hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER ||
+	    hwe->engine_class == DRM_XE_ENGINE_CLASS_COMPUTE)
+		test_set_name = "TestOa";
+	else if ((hwe->engine_class == DRM_XE_ENGINE_CLASS_VIDEO_DECODE ||
+		  hwe->engine_class == DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE) &&
+		 HAS_OAM(devid))
+		test_set_name = "MediaSet1";
+	else
+		igt_assert(!"reached");
+
+	igt_list_for_each_entry(metric_set_iter, &intel_perf->metric_sets, link) {
+		if (strcmp(metric_set_iter->symbol_name, test_set_name) == 0) {
+			test_set = metric_set_iter;
+			break;
+		}
+	}
+
+	igt_assert(test_set);
+
+	/*
+	 * configuration was loaded in init_sys_info() ->
+	 * intel_perf_load_perf_configs(), and test_set->perf_oa_metrics_set
+	 * should point to metric id returned by the config add ioctl. 0 is
+	 * invalid.
+	 */
+	igt_assert_neq_u64(test_set->perf_oa_metrics_set, 0);
+
+	igt_debug("engine %d:%d - %s metric set UUID = %s\n",
+		  hwe->engine_class,
+		  hwe->engine_instance,
+		  test_set->symbol_name,
+		  test_set->hw_config_guid);
+
+	return test_set;
+}
+
+/*
+ * Test if OA buffer streams can be independently opened on OA unit. Once a user
+ * opens a stream, that oa unit is exclusive to the user, other users get -EBUSY on
+ * trying to open a stream.
+ */
+static void
+test_oa_unit_exclusive_stream(bool exponent)
+{
+	struct drm_xe_query_oa_units *qoa = xe_oa_units(drm_fd);
+	struct drm_xe_oa_unit *oau;
+	u8 *poau = (u8 *)&qoa->oa_units[0];
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, 0,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(0),
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, 0,
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exp_1_millisec,
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	uint32_t *exec_q = calloc(qoa->num_oa_units, sizeof(u32));
+	uint32_t *perf_fd = calloc(qoa->num_oa_units, sizeof(u32));
+	u32 vm = xe_vm_create(drm_fd, 0, 0);
+	struct intel_perf_metric_set *test_set;
+	uint32_t i;
+
+	/* for each oa unit, open one random perf stream with sample OA */
+	for (i = 0; i < qoa->num_oa_units; i++) {
+		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, i);
+
+		oau = (struct drm_xe_oa_unit *)poau;
+		if (oau->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
+			continue;
+		test_set = metric_set(hwe);
+
+		igt_debug("opening OA buffer with c:i %d:%d\n",
+			  hwe->engine_class, hwe->engine_instance);
+		exec_q[i] = xe_exec_queue_create(drm_fd, vm, hwe, 0);
+		if (!exponent) {
+			properties[10] = DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID;
+			properties[11] = exec_q[i];
+		}
+
+		properties[1] = oau->oa_unit_id;
+		properties[5] = test_set->perf_oa_metrics_set;
+		properties[7] = __ff(test_set->perf_oa_format);
+		properties[9] = hwe->engine_instance;
+		perf_fd[i] = xe_perf_ioctl(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param);
+		igt_assert(perf_fd[i] >= 0);
+		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
+	}
+
+	/* Xe KMD holds reference to the exec_q's so they shouldn't be really destroyed */
+	for (i = 0; i < qoa->num_oa_units; i++)
+		if (exec_q[i])
+			xe_exec_queue_destroy(drm_fd, exec_q[i]);
+
+	/* for each oa unit make sure no other streams can be opened */
+	poau = (u8 *)&qoa->oa_units[0];
+	for (i = 0; i < qoa->num_oa_units; i++) {
+		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, i);
+		int err;
+
+		oau = (struct drm_xe_oa_unit *)poau;
+		if (oau->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
+			continue;
+		test_set = metric_set(hwe);
+
+		igt_debug("try with exp with c:i %d:%d\n",
+			  hwe->engine_class, hwe->engine_instance);
+		/* case 1: concurrent access to OAG should fail */
+		properties[1] = oau->oa_unit_id;
+		properties[5] = test_set->perf_oa_metrics_set;
+		properties[7] = __ff(test_set->perf_oa_format);
+		properties[9] = hwe->engine_instance;
+		properties[10] = DRM_XE_OA_PROPERTY_OA_EXPONENT;
+		properties[11] = oa_exp_1_millisec;
+		xe_perf_ioctl_err(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param, EBUSY);
+
+		/* case 2: concurrent access to non-OAG unit should fail */
+		igt_debug("try with exec_q with c:i %d:%d\n",
+			  hwe->engine_class, hwe->engine_instance);
+		exec_q[i] = xe_exec_queue_create(drm_fd, vm, hwe, 0);
+		properties[10] = DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID;
+		properties[11] = exec_q[i];
+		errno = 0;
+		err = xe_perf_ioctl(drm_fd, DRM_XE_PERF_OP_STREAM_OPEN, &param);
+		igt_assert(err < 0);
+		igt_assert(errno == EBUSY || errno == ENODEV);
+		poau += sizeof(*oau) + oau->num_engines * sizeof(oau->eci[0]);
+	}
+
+	for (i = 0; i < qoa->num_oa_units; i++) {
+		if (perf_fd[i])
+			close(perf_fd[i]);
+		if (exec_q[i])
+			xe_exec_queue_destroy(drm_fd, exec_q[i]);
+	}
+}
+
+static void
+test_oa_unit_concurrent_oa_buffer_read(void)
+{
+	struct drm_xe_query_oa_units *qoa = xe_oa_units(drm_fd);
+
+	igt_fork(child, qoa->num_oa_units) {
+		struct drm_xe_engine_class_instance *hwe = oa_unit_engine(drm_fd, child);
+
+		/* No OAM support yet */
+		if (nth_oa_unit(drm_fd, child)->oa_unit_type != DRM_XE_OA_UNIT_TYPE_OAG)
+			exit(0);
+
+		test_blocking(40 * 1000 * 1000, false, 5 * 1000 * 1000, hwe);
+	}
+	igt_waitchildren();
+}
+
+static void *map_oa_buffer(u32 *size)
+{
+	void *vaddr = mmap(0, OA_BUFFER_SIZE, PROT_READ, MAP_PRIVATE, stream_fd, 0);
+
+	igt_assert(vaddr != NULL);
+	*size = OA_BUFFER_SIZE;
+	return vaddr;
+}
+
+static void invalid_param_map_oa_buffer(const struct drm_xe_engine_class_instance *hwe)
+{
+	void *oa_vaddr = NULL;
+
+	/* try a couple invalid mmaps */
+	/* bad prots */
+	oa_vaddr = mmap(0, OA_BUFFER_SIZE, PROT_WRITE, MAP_PRIVATE, stream_fd, 0);
+	igt_assert(oa_vaddr == MAP_FAILED);
+
+	oa_vaddr = mmap(0, OA_BUFFER_SIZE, PROT_EXEC, MAP_PRIVATE, stream_fd, 0);
+	igt_assert(oa_vaddr == MAP_FAILED);
+
+	/* bad MAPs */
+	oa_vaddr = mmap(0, OA_BUFFER_SIZE, PROT_READ, MAP_SHARED, stream_fd, 0);
+	igt_assert(oa_vaddr == MAP_FAILED);
+
+	/* bad size */
+	oa_vaddr = mmap(0, OA_BUFFER_SIZE + 1, PROT_READ, MAP_PRIVATE, stream_fd, 0);
+	igt_assert(oa_vaddr == MAP_FAILED);
+
+	/* do the right thing */
+	oa_vaddr = mmap(0, OA_BUFFER_SIZE, PROT_READ, MAP_PRIVATE, stream_fd, 0);
+	igt_assert(oa_vaddr != MAP_FAILED && oa_vaddr != NULL);
+
+	munmap(oa_vaddr, OA_BUFFER_SIZE);
+}
+
+static void unprivileged_try_to_map_oa_buffer(void)
+{
+	void *oa_vaddr;
+
+	oa_vaddr = mmap(0, OA_BUFFER_SIZE, PROT_READ, MAP_PRIVATE, stream_fd, 0);
+	igt_assert(oa_vaddr == MAP_FAILED);
+	igt_assert_eq(errno, EACCES);
+}
+
+static void unprivileged_map_oa_buffer(const struct drm_xe_engine_class_instance *hwe)
+{
+	igt_fork(child, 1) {
+		igt_drop_root();
+		unprivileged_try_to_map_oa_buffer();
+	}
+	igt_waitchildren();
+}
+
+static jmp_buf jmp;
+static void __attribute__((noreturn)) sigtrap(int sig)
+{
+	siglongjmp(jmp, sig);
+}
+
+static void try_invalid_access(void *vaddr)
+{
+	sighandler_t old_sigsegv;
+	uint32_t dummy;
+
+	old_sigsegv = signal(SIGSEGV, sigtrap);
+	switch (sigsetjmp(jmp, SIGSEGV)) {
+	case SIGSEGV:
+		break;
+	case 0:
+		dummy = READ_ONCE(*((uint32_t *)vaddr + 1));
+		(void) dummy;
+	default:
+		igt_assert(!"reached");
+		break;
+	}
+	signal(SIGSEGV, old_sigsegv);
+}
+
+static void map_oa_buffer_unprivilege_access(const struct drm_xe_engine_class_instance *hwe)
+{
+	void *vaddr;
+	uint32_t size;
+
+	vaddr = map_oa_buffer(&size);
+
+	igt_fork(child, 1) {
+		igt_drop_root();
+		try_invalid_access(vaddr);
+	}
+	igt_waitchildren();
+
+	munmap(vaddr, size);
+}
+
+static void map_oa_buffer_forked_access(const struct drm_xe_engine_class_instance *hwe)
+{
+	void *vaddr;
+	uint32_t size;
+
+	vaddr = map_oa_buffer(&size);
+
+	igt_fork(child, 1) {
+		try_invalid_access(vaddr);
+	}
+	igt_waitchildren();
+
+	munmap(vaddr, size);
+}
+
+static void check_reports(void *oa_vaddr, uint32_t oa_size,
+			  const struct drm_xe_engine_class_instance *hwe)
+{
+	struct intel_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t fmt = test_set->perf_oa_format;
+	struct oa_format format = get_oa_format(fmt);
+	size_t report_words = format.size >> 2;
+	uint32_t *reports;
+	uint32_t timer_reports = 0;
+
+	for (reports = (uint32_t *)oa_vaddr;
+	     timer_reports < 20 && reports[0] && oa_timestamp(reports, fmt);
+	     reports += report_words) {
+		if (!oa_report_is_periodic(oa_exp_1_millisec, reports))
+			continue;
+
+		timer_reports++;
+		if (timer_reports >= 3)
+			sanity_check_reports(reports - 2 * report_words,
+					     reports - report_words, fmt);
+	}
+
+	igt_assert(timer_reports >= 3);
+}
+
+static void check_reports_from_mapped_buffer(const struct drm_xe_engine_class_instance *hwe)
+{
+	void *vaddr;
+	uint32_t size;
+	uint32_t period_us = oa_exponent_to_ns(oa_exp_1_millisec) / 1000;
+
+	vaddr = map_oa_buffer(&size);
+
+	/* wait for approx 100 reports */
+	usleep(100 * period_us);
+	check_reports(vaddr, size, hwe);
+
+	munmap(vaddr, size);
+}
+
+static void closed_fd_and_unmapped_access(const struct drm_xe_engine_class_instance *hwe)
+{
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, default_test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(default_test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exp_1_millisec,
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+	void *vaddr;
+	uint32_t size;
+	uint32_t period_us = oa_exponent_to_ns(oa_exp_1_millisec) / 1000;
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+	vaddr = map_oa_buffer(&size);
+
+	usleep(100 * period_us);
+	check_reports(vaddr, size, hwe);
+
+	munmap(vaddr, size);
+	__perf_close(stream_fd);
+
+	try_invalid_access(vaddr);
+}
+
+typedef void (*map_oa_buffer_test_t)(const struct drm_xe_engine_class_instance *hwe);
+static void test_mapped_oa_buffer(map_oa_buffer_test_t test_with_fd_open,
+				  const struct drm_xe_engine_class_instance *hwe)
+{
+	struct intel_perf_metric_set *test_set = metric_set(hwe);
+	uint64_t properties[] = {
+		DRM_XE_OA_PROPERTY_OA_UNIT_ID, 0,
+		DRM_XE_OA_PROPERTY_SAMPLE_OA, true,
+		DRM_XE_OA_PROPERTY_OA_METRIC_SET, test_set->perf_oa_metrics_set,
+		DRM_XE_OA_PROPERTY_OA_FORMAT, __ff(test_set->perf_oa_format),
+		DRM_XE_OA_PROPERTY_OA_EXPONENT, oa_exp_1_millisec,
+		DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE, hwe->engine_instance,
+	};
+	struct drm_xe_oa_open_prop param = {
+		.num_properties = ARRAY_SIZE(properties) / 2,
+		.properties_ptr = to_user_pointer(properties),
+	};
+
+	stream_fd = __perf_open(drm_fd, &param, false);
+
+	igt_assert(test_with_fd_open);
+	test_with_fd_open(hwe);
+
+	__perf_close(stream_fd);
+}
+
+static const char *xe_engine_class_name(uint32_t engine_class)
+{
+	switch (engine_class) {
+		case DRM_XE_ENGINE_CLASS_RENDER:
+			return "rcs";
+		case DRM_XE_ENGINE_CLASS_COPY:
+			return "bcs";
+		case DRM_XE_ENGINE_CLASS_VIDEO_DECODE:
+			return "vcs";
+		case DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE:
+			return "vecs";
+		case DRM_XE_ENGINE_CLASS_COMPUTE:
+			return "ccs";
+		default:
+			igt_warn("Engine class 0x%x unknown\n", engine_class);
+			return "unknown";
+	}
+}
+
+#define __for_one_hwe_in_each_oa_unit(hwe) \
+	for (int m = 0; !m || hwe; m++) \
+		for_each_if(hwe = oa_unit_engine(drm_fd, m)) \
+			igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
+				      hwe->engine_instance)
+
+/* Only OAG (not OAM) is currently supported */
+#define __for_one_hwe_in_oag(hwe) \
+	if ((hwe = oa_unit_engine(drm_fd, 0))) \
+		igt_dynamic_f("%s-%d", xe_engine_class_name(hwe->engine_class), \
+			      hwe->engine_instance)
+
+#define __for_one_render_engine_0(hwe) \
+	xe_for_each_engine(drm_fd, hwe) \
+		if (hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER) \
+			break; \
+	for_each_if(hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER) \
+		igt_dynamic_f("rcs-%d", hwe->engine_instance)
+
+#define __for_one_render_engine(hwe)	      \
+	for (int m = 0, done = 0; !done; m++) \
+		for_each_if(m < xe_number_engines(drm_fd) && \
+			    (hwe = &xe_engine(drm_fd, m)->instance) && \
+			    hwe->engine_class == DRM_XE_ENGINE_CLASS_RENDER && \
+			    (done = 1)) \
+			igt_dynamic_f("rcs-%d", hwe->engine_instance)
+
+igt_main
+{
+	struct drm_xe_engine_class_instance *hwe = NULL;
+
+	igt_fixture {
+		struct stat sb;
+
+		/*
+		 * Prior tests may have unloaded the module or failed while
+		 * loading/unloading the module. Load xe here before we
+		 * stat the files.
+		 */
+		drm_load_module(DRIVER_XE);
+		srandom(time(NULL));
+		igt_require(!stat("/proc/sys/dev/xe/perf_stream_paranoid", &sb));
+	}
+
+	igt_subtest("xe-ref-count")
+		test_xe_ref_count();
+
+	igt_subtest("sysctl-defaults")
+		test_sysctl_defaults();
+
+	igt_fixture {
+		/* We expect that the ref count test before these fixtures
+		 * should have closed drm_fd...
+		 */
+		igt_assert_eq(drm_fd, -1);
+
+		drm_fd = drm_open_driver(DRIVER_XE);
+		xe_device_get(drm_fd);
+
+		devid = intel_get_drm_devid(drm_fd);
+		sysfs = igt_sysfs_open(drm_fd);
+
+		igt_require(init_sys_info());
+
+		write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
+
+		render_copy = igt_get_render_copyfunc(devid);
+	}
+
+	igt_subtest("non-system-wide-paranoid")
+		test_system_wide_paranoid();
+
+	igt_subtest("invalid-oa-metric-set-id")
+		test_invalid_oa_metric_set_id();
+
+	igt_subtest("invalid-oa-format-id")
+		test_invalid_oa_format_id();
+
+	igt_subtest("missing-sample-flags")
+		test_missing_sample_flags();
+
+	igt_subtest_with_dynamic("oa-formats")
+		__for_one_render_engine(hwe)
+			test_oa_formats(hwe);
+
+	igt_subtest("invalid-oa-exponent")
+		test_invalid_oa_exponent();
+
+	igt_subtest_with_dynamic("oa-exponents")
+		__for_one_hwe_in_oag(hwe)
+			test_oa_exponents(hwe);
+
+	igt_subtest_with_dynamic("buffer-fill")
+		__for_one_hwe_in_oag(hwe)
+			test_buffer_fill(hwe);
+
+	igt_describe("Test that reason field in OA reports is never 0 on Gen8+");
+	igt_subtest_with_dynamic("non-zero-reason") {
+		__for_one_hwe_in_oag(hwe)
+			test_non_zero_reason(hwe);
+	}
+
+	igt_subtest("disabled-read-error")
+		test_disabled_read_error();
+	igt_subtest("non-sampling-read-error")
+		test_non_sampling_read_error();
+
+	igt_subtest_with_dynamic("enable-disable")
+		__for_one_hwe_in_oag(hwe)
+			test_enable_disable(hwe);
+
+	igt_describe("Test blocking read with default hrtimer frequency");
+	igt_subtest_with_dynamic("blocking") {
+		__for_one_hwe_in_oag(hwe)
+			test_blocking(40 * 1000 * 1000 /* 40ms oa period */,
+				      false /* set_kernel_hrtimer */,
+				      5 * 1000 * 1000 /* default 5ms/200Hz hrtimer */,
+				      hwe);
+	}
+
+	igt_describe("Test polled read with default hrtimer frequency");
+	igt_subtest_with_dynamic("polling") {
+		__for_one_hwe_in_oag(hwe)
+			test_polling(40 * 1000 * 1000 /* 40ms oa period */,
+				     false /* set_kernel_hrtimer */,
+				     5 * 1000 * 1000 /* default 5ms/200Hz hrtimer */,
+				     hwe);
+	}
+
+	igt_describe("Test polled read with buffer size smaller than available data");
+	igt_subtest("polling-small-buf")
+		test_polling_small_buf();
+
+	igt_subtest("short-reads") {
+		test_short_reads();
+	}
+
+	igt_subtest_group {
+		igt_describe("Test MI REPORT PERF COUNT for Gen 12");
+		igt_subtest_with_dynamic("mi-rpc")
+			__for_one_hwe_in_oag(hwe)
+				test_mi_rpc(hwe);
+
+		igt_describe("Test OA TLB invalidate");
+		igt_subtest_with_dynamic("oa-tlb-invalidate")
+			__for_one_hwe_in_oag(hwe)
+				test_oa_tlb_invalidate(hwe);
+
+		igt_describe("Measure performance for a specific context using OAR in Gen 12");
+		igt_subtest_with_dynamic("unprivileged-single-ctx-counters") {
+			igt_require_f(render_copy, "no render-copy function\n");
+			igt_require(!IS_LUNARLAKE(devid));
+			__for_one_render_engine(hwe)
+				test_single_ctx_render_target_writes_a_counter(hwe);
+		}
+	}
+	igt_subtest_group {
+		igt_describe("Verify exclusivity of oa streams with sample oa option");
+		igt_subtest("oa-unit-exclusive-stream-sample-oa")
+			test_oa_unit_exclusive_stream(true);
+
+		igt_describe("Verify exclusivity of oa streams with exec queue");
+		igt_subtest("oa-unit-exclusive-stream-exec-q")
+			test_oa_unit_exclusive_stream(false);
+
+		igt_describe("Verify concurrent reads from OA buffers in different oa units");
+		igt_subtest("oa-unit-concurrent-oa-buffer-read")
+			test_oa_unit_concurrent_oa_buffer_read();
+	}
+
+	igt_subtest("rc6-disable")
+		test_rc6_disable();
+
+	igt_describe("Stress tests opening & closing the xe-oa stream in a busy loop");
+	igt_subtest_with_dynamic("stress-open-close") {
+		__for_one_hwe_in_oag(hwe)
+			test_stress_open_close(hwe);
+	}
+
+	igt_subtest("invalid-create-userspace-config")
+		test_invalid_create_userspace_config();
+
+	igt_subtest("invalid-remove-userspace-config")
+		test_invalid_remove_userspace_config();
+
+	igt_subtest("create-destroy-userspace-config")
+		test_create_destroy_userspace_config();
+
+	igt_subtest("whitelisted-registers-userspace-config")
+		test_whitelisted_registers_userspace_config();
+
+	igt_subtest_group {
+		igt_describe("Verify mapping of oa buffer");
+		igt_subtest_with_dynamic("map-oa-buffer")
+			__for_one_hwe_in_oag(hwe)
+				test_mapped_oa_buffer(check_reports_from_mapped_buffer, hwe);
+
+		igt_describe("Verify invalid mappings of oa buffer");
+		igt_subtest_with_dynamic("invalid-map-oa-buffer")
+			__for_one_hwe_in_oag(hwe)
+				test_mapped_oa_buffer(invalid_param_map_oa_buffer, hwe);
+
+		igt_describe("Verify if non-privileged user can map oa buffer");
+		igt_subtest_with_dynamic("non-privileged-map-oa-buffer")
+			__for_one_hwe_in_oag(hwe)
+				test_mapped_oa_buffer(unprivileged_map_oa_buffer, hwe);
+
+		igt_describe("Verify if non-privileged user can map oa buffer");
+		igt_subtest_with_dynamic("non-privileged-access-vaddr")
+			__for_one_hwe_in_oag(hwe)
+				test_mapped_oa_buffer(map_oa_buffer_unprivilege_access, hwe);
+
+		igt_describe("Verify that forked access to mapped buffer fails");
+		igt_subtest_with_dynamic("privileged-forked-access-vaddr")
+			__for_one_hwe_in_oag(hwe)
+				test_mapped_oa_buffer(map_oa_buffer_forked_access, hwe);
+
+		igt_describe("Unmap buffer, close fd and try to access");
+		igt_subtest_with_dynamic("closed-fd-and-unmapped-access")
+			__for_one_hwe_in_oag(hwe)
+				closed_fd_and_unmapped_access(hwe);
+	}
+
+	igt_subtest_group {
+		igt_fixture {
+			perf_init_whitelist();
+		}
+
+		igt_describe("Verify that OA registers are whitelisted");
+		igt_subtest_with_dynamic("oa-regs-whitelisted")
+			__for_one_hwe_in_oag(hwe)
+				test_oa_regs_whitelist(hwe);
+
+		igt_describe("Verify mmio triggered reports");
+		igt_subtest_with_dynamic("mmio-triggered-reports") {
+			igt_require(HAS_OA_MMIO_TRIGGER(devid));
+			__for_one_hwe_in_oag(hwe)
+				test_mmio_triggered_reports(hwe);
+		}
+	}
+
+	igt_fixture {
+		/* leave sysctl options in their default state... */
+		write_u64_file("/proc/sys/dev/xe/perf_stream_paranoid", 1);
+
+		if (intel_perf)
+			intel_perf_free(intel_perf);
+
+		drm_close_driver(drm_fd);
+	}
+}
diff --git a/tests/intel/xe_query.c b/tests/intel/xe_query.c
index 9a6799c8473a..1d75dfb98362 100644
--- a/tests/intel/xe_query.c
+++ b/tests/intel/xe_query.c
@@ -730,6 +730,50 @@ static void test_engine_cycles_invalid(int fd)
 	query_engine_cycles(fd, &ts);
 }
 
+static void test_query_oa_units(int fd)
+{
+	struct drm_xe_query_oa_units *qoa;
+	struct drm_xe_device_query query = {
+		.extensions = 0,
+		.query = DRM_XE_DEVICE_QUERY_OA_UNITS,
+		.size = 0,
+		.data = 0,
+	};
+	struct drm_xe_oa_unit *oau;
+	int i, j;
+	u8 *poau;
+
+	igt_assert_eq(igt_ioctl(fd, DRM_IOCTL_XE_DEVICE_QUERY, &query), 0);
+
+	qoa = malloc(query.size);
+	igt_assert(qoa);
+
+	query.data = to_user_pointer(qoa);
+	igt_assert_eq(igt_ioctl(fd, DRM_IOCTL_XE_DEVICE_QUERY, &query), 0);
+
+	igt_info("num_oa_units %d\n", qoa->num_oa_units);
+
+	poau = (u8 *)&qoa->oa_units[0];
+	for (i = 0; i < qoa->num_oa_units; i++) {
+		oau = (struct drm_xe_oa_unit *)poau;
+
+		igt_info("-------------------------------\n");
+		igt_info("oa_unit %d\n", i);
+		igt_info("-------------------------------\n");
+		igt_info("oa_unit_id %d\n", oau->oa_unit_id);
+		igt_info("oa_unit_type %d\n", oau->oa_unit_type);
+		igt_info("capabilities %#llx\n", oau->capabilities);
+		igt_info("oa_timestamp_freq %lld\n", oau->oa_timestamp_freq);
+		igt_info("num_engines %lld\n", oau->num_engines);
+		igt_info("Engines:");
+		for (j = 0; j < oau->num_engines; j++)
+			igt_info(" (%d, %d)", oau->eci[j].engine_class,
+				 oau->eci[j].engine_instance);
+		igt_info("\n");
+		poau += sizeof(*oau) + j * sizeof(oau->eci[0]);
+	}
+}
+
 igt_main
 {
 	const struct {
@@ -743,6 +787,7 @@ igt_main
 		{ "query-hwconfig", test_query_hwconfig },
 		{ "query-topology", test_query_gt_topology },
 		{ "query-cs-cycles", test_query_engine_cycles },
+		{ "query-oa-units", test_query_oa_units },
 		{ "query-invalid-cs-cycles", test_engine_cycles_invalid },
 		{ "query-invalid-query", test_query_invalid_query },
 		{ "query-invalid-size", test_query_invalid_size },
diff --git a/tests/meson.build b/tests/meson.build
index d107d16fa423..c1326a7a0952 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -304,6 +304,7 @@ intel_xe_progs = [
 	'xe_mmap',
 	'xe_module_load',
 	'xe_noexec_ping_pong',
+	'xe_oa',
 	'xe_pat',
 	'xe_peer2peer',
 	'xe_pm',
@@ -377,6 +378,7 @@ extra_dependencies = {
 	'perf': [ lib_igt_i915_perf ],
 	'perf_pmu':  [ lib_igt_perf ],
 	'sw_sync': [ libatomic ],
+	'xe_oa': [ lib_igt_xe_oa ],
 }
 
 test_executables = []
diff --git a/tools/meson.build b/tools/meson.build
index ac79d8b5840c..7ff40450b191 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -112,4 +112,5 @@ if libudev.found()
 endif
 
 subdir('i915-perf')
+subdir('xe-perf')
 subdir('null_state_gen')
diff --git a/tools/xe-perf/i915_perf_recorder_commands.h b/tools/xe-perf/i915_perf_recorder_commands.h
new file mode 100644
index 000000000000..d9353cfa9f0f
--- /dev/null
+++ b/tools/xe-perf/i915_perf_recorder_commands.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2019 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef I915_PERF_RECORDER_COMMANDS_H
+#define I915_PERF_RECORDER_COMMANDS_H
+
+#include <stdint.h>
+
+#define I915_PERF_RECORD_FIFO_PATH "/tmp/.i915-perf-record"
+
+enum recorder_command {
+	RECORDER_COMMAND_DUMP = 1,
+	RECORDER_COMMAND_QUIT,
+};
+
+struct recorder_command_base {
+	uint32_t command;
+	uint32_t size; /* size of recorder_command_base + dump in bytes */
+};
+
+/*
+ The dump after the recorder_command_base header:
+
+struct recorder_command_dump {
+	uint8_t path[0];
+};
+*/
+
+#endif
diff --git a/tools/xe-perf/meson.build b/tools/xe-perf/meson.build
new file mode 100644
index 000000000000..2f1036d2c875
--- /dev/null
+++ b/tools/xe-perf/meson.build
@@ -0,0 +1,5 @@
+executable('xe-perf-recorder',
+           [ 'xe_perf_recorder.c' ],
+           include_directories: inc,
+           dependencies: [lib_igt, lib_igt_i915_perf],
+           install: true)
diff --git a/tools/xe-perf/xe_perf_recorder.c b/tools/xe-perf/xe_perf_recorder.c
new file mode 100644
index 000000000000..ca4354832b0c
--- /dev/null
+++ b/tools/xe-perf/xe_perf_recorder.c
@@ -0,0 +1,1230 @@
+/*
+ * Copyright (C) 2019 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include <assert.h>
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <getopt.h>
+#include <inttypes.h>
+#include <limits.h>
+#include <poll.h>
+#include <signal.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <sys/stat.h>
+#include <sys/sysmacros.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <time.h>
+#include <unistd.h>
+
+#include <i915_drm.h>
+
+#include "i915/i915_drm_local.h"
+
+#include "igt_core.h"
+#include "intel_chipset.h"
+#include "i915/perf.h"
+#include "i915/perf_data.h"
+
+#include "i915_perf_recorder_commands.h"
+
+#define ALIGN(v, a) (((v) + (a)-1) & ~((a)-1))
+#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof((arr)[0]))
+#define MAX(a,b) ((a) > (b) ? (a) : (b))
+#define MIN(a,b) ((a) < (b) ? (a) : (b))
+
+struct circular_buffer {
+	char   *data;
+	size_t  allocated_size;
+	size_t  size;
+	size_t  beginpos;
+	size_t  endpos;
+};
+
+struct chunk {
+	char *data;
+	size_t len;
+};
+
+static size_t
+circular_available_size(const struct circular_buffer *buffer)
+{
+	assert(buffer->size <= buffer->allocated_size);
+	return buffer->allocated_size - buffer->size;
+}
+
+static void
+get_chunks(struct chunk *chunks, struct circular_buffer *buffer, bool write, size_t len)
+{
+	size_t offset = write ? buffer->endpos : buffer->beginpos;
+
+	if (write)
+		assert(circular_available_size(buffer) >= len);
+	else
+		assert(buffer->size >= len);
+
+	chunks[0].data = &buffer->data[offset];
+
+	if ((offset + len) > buffer->allocated_size) {
+		chunks[0].len = buffer->allocated_size - offset;
+		chunks[1].data = buffer->data;
+		chunks[1].len = len - (buffer->allocated_size - offset);
+	} else {
+		chunks[0].len = len;
+		chunks[1].data = NULL;
+		chunks[1].len = 0;
+	}
+}
+
+static ssize_t
+circular_buffer_read(void *c, char *buf, size_t size)
+{
+	struct circular_buffer *buffer = c;
+	struct chunk chunks[2];
+
+	if (buffer->size < size)
+		return -1;
+
+	get_chunks(chunks, buffer, false, size);
+
+	memcpy(buf, chunks[0].data, chunks[0].len);
+	memcpy(buf + chunks[0].len, chunks[1].data, chunks[1].len);
+	buffer->beginpos = (buffer->beginpos + size) % buffer->allocated_size;
+	buffer->size -= size;
+
+	return size;
+}
+
+static size_t
+peek_item_size(struct circular_buffer *buffer)
+{
+	struct drm_i915_perf_record_header header;
+	struct chunk chunks[2];
+
+	if (!buffer->size)
+		return 0;
+
+	assert(buffer->size >= sizeof(header));
+
+	get_chunks(chunks, buffer, false, sizeof(header));
+	memcpy(&header, chunks[0].data, chunks[0].len);
+	memcpy((char *) &header + chunks[0].len, chunks[1].data, chunks[1].len);
+
+	return header.size;
+}
+
+static void
+circular_shrink(struct circular_buffer *buffer, size_t size)
+{
+	size_t shrank = 0, item_size;
+
+	assert(size <= buffer->allocated_size);
+
+	while (shrank < size && buffer->size > (item_size = peek_item_size(buffer))) {
+		assert(item_size > 0 && item_size <= buffer->allocated_size);
+
+		buffer->beginpos = (buffer->beginpos + item_size) % buffer->allocated_size;
+		buffer->size -= item_size;
+
+		shrank += item_size;
+	}
+}
+
+static ssize_t
+circular_buffer_write(void *c, const char *buf, size_t _size)
+{
+	struct circular_buffer *buffer = c;
+	size_t size = _size;
+
+	while (size) {
+		size_t avail = circular_available_size(buffer), item_size;
+		struct chunk chunks[2];
+
+		/* Make space in the buffer if there is too much data. */
+		if (avail < size)
+			circular_shrink(buffer, size - avail);
+
+		item_size = MIN(circular_available_size(buffer), size);
+
+		get_chunks(chunks, buffer, true, item_size);
+
+		memcpy(chunks[0].data, buf, chunks[0].len);
+		memcpy(chunks[1].data, buf + chunks[0].len, chunks[1].len);
+
+		buf += item_size;
+		size -= item_size;
+
+		buffer->endpos = (buffer->endpos + item_size) % buffer->allocated_size;
+		buffer->size += item_size;
+	}
+
+	return _size;
+}
+
+static int
+circular_buffer_seek(void *c, off64_t *offset, int whence)
+{
+	return -1;
+}
+
+static int
+circular_buffer_close(void *c)
+{
+	return 0;
+}
+
+cookie_io_functions_t circular_buffer_functions = {
+	.read  = circular_buffer_read,
+	.write = circular_buffer_write,
+	.seek  = circular_buffer_seek,
+	.close = circular_buffer_close,
+};
+
+
+static bool
+read_file_uint64(const char *file, uint64_t *value)
+{
+	char buf[32];
+	int fd, n;
+
+	fd = open(file, 0);
+	if (fd < 0)
+		return false;
+	n = read(fd, buf, sizeof (buf) - 1);
+	close(fd);
+	if (n < 0)
+		return false;
+
+	buf[n] = '\0';
+	*value = strtoull(buf, 0, 0);
+
+	return true;
+}
+
+static uint32_t
+read_device_param(const char *stem, int id, const char *param)
+{
+	char *name;
+	int ret = asprintf(&name, "/sys/class/drm/%s%u/device/%s", stem, id, param);
+	uint64_t value;
+	bool success;
+
+	assert(ret != -1);
+
+	success = read_file_uint64(name, &value);
+	free(name);
+
+	return success ? value : 0;
+}
+
+static int
+find_intel_render_node(void)
+{
+	for (int i = 128; i < (128 + 16); i++) {
+		if (read_device_param("renderD", i, "vendor") == 0x8086)
+			return i;
+	}
+
+	return -1;
+}
+
+static void
+print_intel_devices(void)
+{
+	fprintf(stdout, "Available devices:\n");
+	for (int i = 0; i < 128; i++) {
+		if (read_device_param("card", i, "vendor") == 0x8086) {
+			uint32_t devid = read_device_param("card", i, "device");
+			const struct intel_device_info *devinfo =
+				intel_get_device_info(devid);
+			fprintf(stdout, "   %i: %s (0x%04hx)\n", i,
+				devinfo ? devinfo->codename : "unknwon",
+				devid);
+		}
+	}
+}
+
+static int
+open_render_node(uint32_t *devid, int card)
+{
+	char *name;
+	int ret;
+	int fd;
+	int render;
+
+	if (card < 0) {
+		render = find_intel_render_node();
+		if (render < 0)
+			return -1;
+	} else {
+		render = 128 + card;
+	}
+
+	ret = asprintf(&name, "/dev/dri/renderD%u", render);
+	assert(ret != -1);
+
+	*devid = read_device_param("renderD", render, "device");
+
+	fd = open(name, O_RDWR);
+	free(name);
+
+	return fd;
+}
+
+static uint32_t
+oa_exponent_for_period(uint64_t device_timestamp_frequency, double period)
+{
+	uint64_t period_ns = 1000 * 1000 * 1000 * period;
+	uint64_t device_periods[32];
+
+	for (uint32_t i = 0; i < ARRAY_SIZE(device_periods); i++)
+		device_periods[i] = 1000000000ull * (1u << i) / device_timestamp_frequency;
+
+	for (uint32_t i = 1; i < ARRAY_SIZE(device_periods); i++) {
+		if (period_ns >= device_periods[i - 1] &&
+		    period_ns < device_periods[i]) {
+			if ((device_periods[i] - period_ns) >
+			    (period_ns - device_periods[i - 1]))
+				return i - 1;
+			return i;
+		}
+	}
+
+	return -1;
+}
+
+static int
+perf_ioctl(int fd, unsigned long request, void *arg)
+{
+	int ret;
+
+	do {
+		ret = ioctl(fd, request, arg);
+	} while (ret == -1 && (errno == EINTR || errno == EAGAIN));
+
+	return ret;
+}
+
+static uint64_t
+get_device_cs_timestamp_frequency(const struct intel_device_info *devinfo, int drm_fd)
+{
+	drm_i915_getparam_t gp;
+	int timestamp_frequency;
+
+	gp.param = I915_PARAM_CS_TIMESTAMP_FREQUENCY;
+	gp.value = &timestamp_frequency;
+	if (perf_ioctl(drm_fd, DRM_IOCTL_I915_GETPARAM, &gp) == 0)
+		return timestamp_frequency;
+
+	if (devinfo->graphics_ver > 9) {
+		fprintf(stderr, "Unable to query timestamp frequency from i915, please update kernel.\n");
+		return 0;
+	}
+
+	fprintf(stderr, "Warning: unable to query timestamp frequency from i915, guessing values...\n");
+
+	if (devinfo->graphics_ver <= 8)
+		return 12500000;
+	if (devinfo->is_broxton)
+		return 19200000;
+	return 12000000;
+}
+
+static uint64_t
+get_device_oa_timestamp_frequency(const struct intel_device_info *devinfo, int drm_fd)
+{
+	drm_i915_getparam_t gp;
+	int timestamp_frequency;
+
+	gp.param = I915_PARAM_OA_TIMESTAMP_FREQUENCY;
+	gp.value = &timestamp_frequency;
+	if (perf_ioctl(drm_fd, DRM_IOCTL_I915_GETPARAM, &gp) == 0)
+		return timestamp_frequency;
+
+	gp.param = I915_PARAM_CS_TIMESTAMP_FREQUENCY;
+	gp.value = &timestamp_frequency;
+	if (perf_ioctl(drm_fd, DRM_IOCTL_I915_GETPARAM, &gp) == 0)
+		return timestamp_frequency;
+
+
+	if (devinfo->graphics_ver > 9) {
+		fprintf(stderr, "Unable to query timestamp frequency from i915, please update kernel.\n");
+		return 0;
+	}
+
+	fprintf(stderr, "Warning: unable to query timestamp frequency from i915, guessing values...\n");
+
+	if (devinfo->graphics_ver <= 8)
+		return 12500000;
+	if (devinfo->is_broxton)
+		return 19200000;
+	return 12000000;
+}
+
+struct recording_context {
+	int drm_fd;
+	int perf_fd;
+
+	uint32_t devid;
+	uint64_t oa_timestamp_frequency;
+	uint64_t cs_timestamp_frequency;
+
+	const struct intel_device_info *devinfo;
+
+	struct drm_i915_query_topology_info *topology;
+	uint32_t topology_size;
+
+	struct intel_perf *perf;
+	struct intel_perf_metric_set *metric_set;
+
+	uint32_t oa_exponent;
+
+	struct circular_buffer circular_buffer;
+	FILE *output_stream;
+
+	const char *command_fifo;
+	int command_fifo_fd;
+
+	uint64_t poll_period;
+
+	struct i915_engine_class_instance engine;
+	int gt;
+};
+
+static int
+perf_revision(int drm_fd)
+{
+	drm_i915_getparam_t gp;
+	int value = 1;
+
+	gp.param = I915_PARAM_PERF_REVISION;
+	gp.value = &value;
+	perf_ioctl(drm_fd, DRM_IOCTL_I915_GETPARAM, &gp);
+
+	return value;
+}
+
+static int
+perf_open(struct recording_context *ctx)
+{
+	uint64_t properties[DRM_I915_PERF_PROP_MAX * 2];
+	struct drm_i915_perf_open_param param;
+	int p = 0, stream_fd, revision;
+
+	revision = perf_revision(ctx->drm_fd);
+
+	properties[p++] = DRM_I915_PERF_PROP_SAMPLE_OA;
+	properties[p++] = true;
+
+	properties[p++] = DRM_I915_PERF_PROP_OA_METRICS_SET;
+	properties[p++] = ctx->metric_set->perf_oa_metrics_set;
+
+	properties[p++] = DRM_I915_PERF_PROP_OA_FORMAT;
+	properties[p++] = ctx->metric_set->perf_oa_format;
+
+	properties[p++] = DRM_I915_PERF_PROP_OA_EXPONENT;
+	properties[p++] = ctx->oa_exponent;
+
+	if (revision >= 5) {
+		properties[p++] = DRM_I915_PERF_PROP_POLL_OA_PERIOD;
+		properties[p++] = ctx->poll_period;
+	}
+
+	if (revision >= 6 && ctx->engine.engine_class >= 0 && ctx->engine.engine_instance >= 0) {
+		properties[p++] = DRM_I915_PERF_PROP_OA_ENGINE_CLASS;
+		properties[p++] = ctx->engine.engine_class;
+		properties[p++] = DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE;
+		properties[p++] = ctx->engine.engine_instance;
+	}
+
+	memset(&param, 0, sizeof(param));
+	param.flags = 0;
+	param.flags |= I915_PERF_FLAG_FD_CLOEXEC | I915_PERF_FLAG_FD_NONBLOCK;
+	param.properties_ptr = (uintptr_t)properties;
+	param.num_properties = p / 2;
+
+	stream_fd = perf_ioctl(ctx->drm_fd, DRM_IOCTL_I915_PERF_OPEN, &param);
+	return stream_fd;
+}
+
+static bool quit = false;
+
+static void
+sigint_handler(int val)
+{
+	quit = true;
+}
+
+static bool
+write_version(FILE *output, struct recording_context *ctx)
+{
+	struct intel_perf_record_version version = {
+		.version = INTEL_PERF_RECORD_VERSION,
+	};
+	struct drm_i915_perf_record_header header = {
+		.type = INTEL_PERF_RECORD_TYPE_VERSION,
+		.size = sizeof(header) + sizeof(version),
+	};
+
+	if (fwrite(&header, sizeof(header), 1, output) != 1)
+		return false;
+
+	if (fwrite(&version, sizeof(version), 1, output) != 1)
+		return false;
+
+	return true;
+}
+
+static bool
+write_header(FILE *output, struct recording_context *ctx)
+{
+	struct intel_perf_record_device_info info = {
+		.timestamp_frequency = ctx->oa_timestamp_frequency,
+		.device_id = ctx->perf->devinfo.devid,
+		.device_revision = ctx->perf->devinfo.revision,
+		.gt_min_frequency = ctx->perf->devinfo.gt_min_freq,
+		.gt_max_frequency = ctx->perf->devinfo.gt_max_freq,
+		.oa_format = ctx->metric_set->perf_oa_format,
+		.engine_class = ctx->engine.engine_class,
+		.engine_instance = ctx->engine.engine_instance,
+	};
+	struct drm_i915_perf_record_header header = {
+		.type = INTEL_PERF_RECORD_TYPE_DEVICE_INFO,
+		.size = sizeof(header) + sizeof(info),
+	};
+
+	snprintf(info.metric_set_name, sizeof(info.metric_set_name),
+		 "%s", ctx->metric_set->symbol_name);
+	snprintf(info.metric_set_uuid, sizeof(info.metric_set_uuid),
+		 "%s", ctx->metric_set->hw_config_guid);
+
+	if (fwrite(&header, sizeof(header), 1, output) != 1)
+		return false;
+
+	if (fwrite(&info, sizeof(info), 1, output) != 1)
+		return false;
+
+	return true;
+}
+
+static struct drm_i915_query_topology_info *
+get_topology(int drm_fd, uint32_t *topology_size)
+{
+	struct drm_i915_query query = {};
+	struct drm_i915_query_topology_info *topo_info;
+	struct drm_i915_query_item item = {
+		.query_id = DRM_I915_QUERY_TOPOLOGY_INFO,
+	};
+	int ret;
+
+	query.num_items = 1;
+	query.items_ptr = (uintptr_t) &item;
+
+	/* Maybe not be available on older kernels. */
+	ret = perf_ioctl(drm_fd, DRM_IOCTL_I915_QUERY, &query);
+	if (ret < 0)
+		return NULL;
+
+	assert(item.length > 0);
+	*topology_size = ALIGN(item.length, 8);
+	topo_info = calloc(1, *topology_size);
+	item.data_ptr = (uintptr_t) topo_info;
+
+	ret = perf_ioctl(drm_fd, DRM_IOCTL_I915_QUERY, &query);
+	assert(ret == 0);
+
+	return topo_info;
+}
+
+static bool
+write_topology(FILE *output, struct recording_context *ctx)
+{
+	struct drm_i915_perf_record_header header = {
+		.type = INTEL_PERF_RECORD_TYPE_DEVICE_TOPOLOGY,
+	};
+
+	header.size = sizeof(header) + ctx->topology_size;
+	if (fwrite(&header, sizeof(header), 1, output) != 1)
+		return false;
+
+	if (fwrite(ctx->topology, ctx->topology_size, 1, output) != 1)
+		return false;
+
+	return true;
+}
+
+static bool
+write_i915_perf_data(FILE *output, int perf_fd)
+{
+	ssize_t ret;
+	char data[4096];
+
+	while ((ret = read(perf_fd, data, sizeof(data))) > 0 ||
+	       errno == EINTR) {
+		if (fwrite(data, ret, 1, output) != 1)
+			return false;
+	}
+
+	return true;
+}
+
+static uint64_t timespec_diff(struct timespec *begin,
+			      struct timespec *end)
+{
+	return 1000000000ull * (end->tv_sec - begin->tv_sec) + end->tv_nsec - begin->tv_nsec;
+}
+
+static clock_t correlation_clock_id = CLOCK_MONOTONIC;
+
+static const char *
+get_correlation_clock_name(clock_t clock_id)
+{
+  switch (clock_id) {
+  case CLOCK_BOOTTIME:      return "bootime";
+  case CLOCK_MONOTONIC:     return "monotonic";
+  case CLOCK_MONOTONIC_RAW: return "monotonic_raw";
+  default:                  return "*unknown*";
+  }
+}
+
+static bool
+get_correlation_timestamps(struct intel_perf_record_timestamp_correlation *corr, int drm_fd)
+{
+	struct drm_i915_reg_read reg_read;
+	struct {
+		struct timespec cpu_ts_begin;
+		struct timespec cpu_ts_end;
+		uint64_t gpu_ts;
+	} attempts[3];
+	uint32_t best = 0;
+
+#define RENDER_RING_TIMESTAMP 0x2358
+
+        reg_read.offset = RENDER_RING_TIMESTAMP | I915_REG_READ_8B_WA;
+
+	/* Gather 3 correlations. */
+	for (uint32_t i = 0; i < ARRAY_SIZE(attempts); i++) {
+		clock_gettime(correlation_clock_id, &attempts[i].cpu_ts_begin);
+		if (perf_ioctl(drm_fd, DRM_IOCTL_I915_REG_READ, &reg_read) < 0)
+			return false;
+		clock_gettime(correlation_clock_id, &attempts[i].cpu_ts_end);
+
+		attempts[i].gpu_ts = reg_read.val;
+	}
+
+	/* Now select the best. */
+	for (uint32_t i = 1; i < ARRAY_SIZE(attempts); i++) {
+		if (timespec_diff(&attempts[i].cpu_ts_begin,
+				  &attempts[i].cpu_ts_end) <
+		    timespec_diff(&attempts[best].cpu_ts_begin,
+				  &attempts[best].cpu_ts_end))
+			best = i;
+	}
+
+	corr->cpu_timestamp =
+		(attempts[best].cpu_ts_begin.tv_sec * 1000000000ull +
+		 attempts[best].cpu_ts_begin.tv_nsec) +
+		timespec_diff(&attempts[best].cpu_ts_begin,
+			      &attempts[best].cpu_ts_end) / 2;
+	corr->gpu_timestamp = attempts[best].gpu_ts;
+
+	return true;
+}
+
+static bool
+write_saved_correlation_timestamps(FILE *output,
+				   const struct intel_perf_record_timestamp_correlation *corr)
+{
+	struct drm_i915_perf_record_header header = {
+		.type = INTEL_PERF_RECORD_TYPE_TIMESTAMP_CORRELATION,
+		.size = sizeof(header) + sizeof(*corr),
+	};
+
+	if (fwrite(&header, sizeof(header), 1, output) != 1)
+		return false;
+
+	if (fwrite(corr, sizeof(*corr), 1, output) != 1)
+		return false;
+
+	return true;
+}
+
+static bool
+write_correlation_timestamps(FILE *output, int drm_fd)
+{
+	struct intel_perf_record_timestamp_correlation corr;
+
+	if (!get_correlation_timestamps(&corr, drm_fd))
+		return false;
+
+	return write_saved_correlation_timestamps(output, &corr);
+}
+
+static void
+read_command_file(struct recording_context *ctx)
+{
+	struct recorder_command_base header;
+	ssize_t ret = read(ctx->command_fifo_fd, &header, sizeof(header));
+
+	if (ret < 0)
+		return;
+
+	switch (header.command) {
+	case RECORDER_COMMAND_DUMP: {
+		uint32_t len = header.size - sizeof(header), offset = 0;
+		uint8_t *dump = malloc(len);
+		FILE *file;
+
+		while (offset < len &&
+		       ((ret = read(ctx->command_fifo_fd,
+				    (void *) dump + offset, len - offset)) > 0
+			|| errno == EAGAIN)) {
+			if (ret > 0)
+				offset += ret;
+		}
+
+		fprintf(stdout, "Writing circular buffer to %s\n", dump);
+
+		file = fopen((const char *) dump, "w+");
+		if (file) {
+			struct chunk chunks[2];
+
+			fflush(ctx->output_stream);
+			get_chunks(chunks, &ctx->circular_buffer,
+				   false, ctx->circular_buffer.size);
+
+			if (!write_version(file, ctx) ||
+			    !write_header(file, ctx) ||
+			    !write_topology(file, ctx) ||
+			    fwrite(chunks[0].data, chunks[0].len, 1, file) != 1 ||
+			    (chunks[1].len > 0 &&
+			     fwrite(chunks[1].data, chunks[1].len, 1, file) != 1) ||
+			    !write_correlation_timestamps(file, ctx->drm_fd)) {
+				fprintf(stderr, "Unable to write circular buffer data in file '%s'\n",
+					dump);
+			}
+			fclose(file);
+		} else
+			fprintf(stderr, "Unable to write dump file '%s'\n", dump);
+
+		free(dump);
+		break;
+	}
+	case RECORDER_COMMAND_QUIT:
+		quit = true;
+		break;
+	default:
+		fprintf(stderr, "Unknown command 0x%x\n", header.command);
+		break;
+	}
+}
+
+static void
+print_metric_sets(const struct intel_perf *perf)
+{
+	struct intel_perf_metric_set *metric_set;
+	uint32_t longest_name = 0;
+
+	igt_list_for_each_entry(metric_set, &perf->metric_sets, link) {
+		longest_name = MAX(longest_name, strlen(metric_set->symbol_name));
+	}
+
+	igt_list_for_each_entry(metric_set, &perf->metric_sets, link) {
+		fprintf(stdout, "%s:%*s%s\n",
+			metric_set->symbol_name,
+			(int) (longest_name - strlen(metric_set->symbol_name) + 1), " ",
+			metric_set->name);
+	}
+}
+
+static void
+print_metric_set_counters(const struct intel_perf_metric_set *metric_set)
+{
+	uint32_t longest_name = 0;
+
+	for (uint32_t i = 0; i < metric_set->n_counters; i++) {
+		longest_name = MAX(longest_name, strlen(metric_set->counters[i].name));
+	}
+
+	fprintf(stdout, "%s (%s):\n", metric_set->symbol_name, metric_set->name);
+	for (uint32_t i = 0; i < metric_set->n_counters; i++) {
+		struct intel_perf_logical_counter *counter = &metric_set->counters[i];
+
+		fprintf(stdout, "  %s:%*s%s\n",
+			counter->name,
+			(int)(longest_name - strlen(counter->name) + 1), " ",
+			counter->desc);
+	}
+}
+
+static void
+print_metric_sets_counters(struct intel_perf *perf)
+{
+	struct intel_perf_metric_set *metric_set;
+
+	igt_list_for_each_entry(metric_set, &perf->metric_sets, link)
+		print_metric_set_counters(metric_set);
+}
+
+static void
+usage(const char *name)
+{
+	fprintf(stdout,
+		"Usage: %s [options]\n"
+		"Recording tool for i915-perf.\n"
+		"\n"
+		"     --help,               -h          Print this screen\n"
+		"     --device,             -d <value>  Device to use\n"
+		"                                       (value=list to list devices\n"
+		"                                        value=1 to use /dev/dri/card1)\n"
+		"     --correlation-period, -c <value>  Time period of timestamp correlation in seconds\n"
+		"                                       (default = 1.0)\n"
+		"     --perf-period,        -p <value>  Time period of i915-perf reports in seconds\n"
+		"                                       (default = 0.001)\n"
+		"     --metric,             -m <value>  i915 metric to sample with (use value=list to list all metrics)\n"
+		"     --counters,           -C          List counters for a given metric and exit\n"
+		"     --size,               -s <value>  Size of circular buffer to use in kilobytes\n"
+		"                                       If specified, a maximum amount of <value> data will\n"
+		"                                       be recorded.\n"
+		"     --command-fifo,       -f <path>   Path to a command fifo, implies circular buffer\n"
+		"                                       (To use with i915-perf-control)\n"
+		"     --output,             -o <path>   Output file (default = i915_perf.record)\n"
+		"     --cpu-clock,          -k <path>   Cpu clock to use for correlations\n"
+		"                                       Values: boot, mono, mono_raw (default = mono)\n"
+		"     --poll-period         -P <value>  Polling interval in microseconds used by a timer in the driver to query\n"
+		"                                       for OA reports periodically\n"
+		"                                       (default = 5000), Minimum = 100.\n"
+		"     --engine-class        -e <value>  Engine class used for the OA capture.\n"
+		"     --engine-instance     -i <value>  Engine instance used for the OA capture.\n",
+		name);
+}
+
+static void
+teardown_recording_context(struct recording_context *ctx)
+{
+	if (ctx->topology)
+		free(ctx->topology);
+
+	if (ctx->perf)
+		intel_perf_free(ctx->perf);
+
+	if (ctx->command_fifo)
+		unlink(ctx->command_fifo);
+	if (ctx->command_fifo_fd != -1)
+		close(ctx->command_fifo_fd);
+
+	if (ctx->output_stream)
+		fclose(ctx->output_stream);
+
+	free(ctx->circular_buffer.data);
+
+	if (ctx->perf_fd != -1)
+		close(ctx->perf_fd);
+	if (ctx->drm_fd != -1)
+		close(ctx->drm_fd);
+}
+
+static int
+mtl_engine_to_gt(const struct i915_engine_class_instance *engine)
+{
+        switch (engine->engine_class) {
+        case I915_ENGINE_CLASS_RENDER:
+                return 0;
+        case I915_ENGINE_CLASS_VIDEO:
+        case I915_ENGINE_CLASS_VIDEO_ENHANCE:
+                return 1;
+        default:
+                return -1;
+        }
+}
+
+/* static mapping as in igt core library until a different way is available */
+static int
+engine_to_gt(struct recording_context *ctx)
+{
+	if (ctx->devinfo->is_meteorlake)
+		return mtl_engine_to_gt(&ctx->engine);
+	else if (ctx->engine.engine_class == I915_ENGINE_CLASS_RENDER &&
+		 ctx->engine.engine_instance == 0)
+		return 0;
+
+	return -1;
+}
+
+int
+main(int argc, char *argv[])
+{
+	const struct option long_options[] = {
+		{"help",                       no_argument, 0, 'h'},
+		{"device",               required_argument, 0, 'd'},
+		{"correlation-period",   required_argument, 0, 'c'},
+		{"perf-period",          required_argument, 0, 'p'},
+		{"metric",               required_argument, 0, 'm'},
+		{"counters",                   no_argument, 0, 'C'},
+		{"output",               required_argument, 0, 'o'},
+		{"size",                 required_argument, 0, 's'},
+		{"command-fifo",         required_argument, 0, 'f'},
+		{"cpu-clock",            required_argument, 0, 'k'},
+		{"poll-period",          required_argument, 0, 'P'},
+		{"engine-class",         required_argument, 0, 'e'},
+		{"engine-instance",      required_argument, 0, 'i'},
+		{0, 0, 0, 0}
+	};
+	const struct {
+		clock_t id;
+		const char *name;
+	} clock_names[] = {
+		{ CLOCK_BOOTTIME,      "boot" },
+		{ CLOCK_MONOTONIC,     "mono" },
+		{ CLOCK_MONOTONIC_RAW, "mono_raw" },
+	};
+	double corr_period = 1.0, perf_period = 0.001;
+	const char *metric_name = NULL, *output_file = "i915_perf.record";
+	struct intel_perf_metric_set *metric_set;
+	struct intel_perf_record_timestamp_correlation initial_correlation;
+	struct timespec now;
+	uint64_t corr_period_ns, poll_time_ns;
+	uint32_t circular_size = 0;
+	int opt, dev_node_id = -1;
+	bool list_counters = false;
+	FILE *output = NULL;
+	struct recording_context ctx = {
+		.drm_fd = -1,
+		.perf_fd = -1,
+
+		.command_fifo = I915_PERF_RECORD_FIFO_PATH,
+		.command_fifo_fd = -1,
+
+		/* 5 ms poll period */
+		.poll_period = 5 * 1000 * 1000,
+		.engine = { USHRT_MAX, USHRT_MAX },
+	};
+
+	while ((opt = getopt_long(argc, argv, "hc:d:p:m:Co:s:f:k:P:e:i:", long_options, NULL)) != -1) {
+		switch (opt) {
+		case 'h':
+			usage(argv[0]);
+			return EXIT_SUCCESS;
+		case 'c':
+			corr_period = atof(optarg);
+			break;
+		case 'd':
+			if (!strcmp(optarg, "list"))
+				dev_node_id = -2;
+			else
+				dev_node_id = atoi(optarg);
+			break;
+		case 'p':
+			perf_period = atof(optarg);
+			break;
+		case 'm':
+			metric_name = optarg;
+			break;
+		case 'C':
+			list_counters = true;
+			break;
+		case 'o':
+			output_file = optarg;
+			break;
+		case 's':
+			circular_size = MAX(8, atoi(optarg)) * 1024;
+			break;
+		case 'f':
+			ctx.command_fifo = optarg;
+			circular_size = 8 * 1024 * 1024;
+			break;
+		case 'k': {
+			bool found = false;
+			for (uint32_t i = 0; i < ARRAY_SIZE(clock_names); i++) {
+				if (!strcmp(clock_names[i].name, optarg)) {
+					correlation_clock_id = clock_names[i].id;
+					found = true;
+					break;
+				}
+			}
+			if (!found) {
+				fprintf(stderr, "Unknown clock name '%s'\n", optarg);
+				return EXIT_FAILURE;
+			}
+			break;
+		}
+		case 'P':
+			ctx.poll_period = MAX(100, atol(optarg)) * 1000;
+			break;
+		case 'e':
+			ctx.engine.engine_class = atoi(optarg);
+			break;
+		case 'i':
+			ctx.engine.engine_instance = atoi(optarg);
+			break;
+		default:
+			fprintf(stderr, "Internal error: "
+				"unexpected getopt value: %d\n", opt);
+			usage(argv[0]);
+			return EXIT_FAILURE;
+		}
+	}
+
+	if (dev_node_id == -2) {
+		print_intel_devices();
+		return EXIT_SUCCESS;
+	}
+
+	if (ctx.engine.engine_class == USHRT_MAX ||
+	    ctx.engine.engine_instance == USHRT_MAX) {
+		ctx.engine.engine_class = I915_ENGINE_CLASS_RENDER;
+		ctx.engine.engine_instance = 0;
+	}
+
+	ctx.drm_fd = open_render_node(&ctx.devid, dev_node_id);
+	if (ctx.drm_fd < 0) {
+		fprintf(stderr, "Unable to open device.\n");
+		return EXIT_FAILURE;
+	}
+
+	ctx.devinfo = intel_get_device_info(ctx.devid);
+	if (!ctx.devinfo) {
+		fprintf(stderr, "No device info found.\n");
+		goto fail;
+	}
+
+	ctx.gt = engine_to_gt(&ctx);
+	if (ctx.gt < 0) {
+		fprintf(stderr, "Unsupported engine class:instance %d:%d.\n",
+			ctx.engine.engine_class, ctx.engine.engine_instance);
+		goto fail;
+	}
+
+	fprintf(stdout, "Device name=%s gen=%i gt=%i id=0x%x\n",
+		ctx.devinfo->codename, ctx.devinfo->graphics_ver, ctx.devinfo->gt, ctx.devid);
+
+	ctx.topology = get_topology(ctx.drm_fd, &ctx.topology_size);
+	if (!ctx.topology) {
+		fprintf(stderr, "Unable to retrieve GPU topology (requires kernel 4.17+).\n");
+		goto fail;
+	}
+
+	ctx.perf = intel_perf_for_fd(ctx.drm_fd, ctx.gt);
+	if (!ctx.perf) {
+		fprintf(stderr, "No perf data found.\n");
+		goto fail;
+	}
+
+	intel_perf_load_perf_configs(ctx.perf, ctx.drm_fd);
+
+	if (metric_name) {
+		if (!strcmp(metric_name, "list")) {
+			print_metric_sets(ctx.perf);
+			return EXIT_SUCCESS;
+		}
+
+		igt_list_for_each_entry(metric_set, &ctx.perf->metric_sets, link) {
+			if (!strcasecmp(metric_set->symbol_name, metric_name)) {
+				ctx.metric_set = metric_set;
+				break;
+			}
+		}
+	}
+
+	if (list_counters) {
+		if (!ctx.metric_set)
+			print_metric_sets_counters(ctx.perf);
+		else
+			print_metric_set_counters(ctx.metric_set);
+		teardown_recording_context(&ctx);
+		return EXIT_SUCCESS;
+	}
+
+	if (!ctx.metric_set) {
+		if (!metric_name)
+			fprintf(stderr, "No metric set specified.\n");
+		else
+			fprintf(stderr, "Unknown metric set '%s'.\n", metric_name);
+		print_metric_sets(ctx.perf);
+		goto fail;
+	}
+
+	intel_perf_load_perf_configs(ctx.perf, ctx.drm_fd);
+
+	ctx.oa_timestamp_frequency = get_device_oa_timestamp_frequency(ctx.devinfo, ctx.drm_fd);
+	ctx.cs_timestamp_frequency = get_device_cs_timestamp_frequency(ctx.devinfo, ctx.drm_fd);
+
+	signal(SIGINT, sigint_handler);
+
+	if (ctx.command_fifo) {
+		if (mkfifo(ctx.command_fifo,
+			   S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH) != 0) {
+			fprintf(stderr, "Unable to create command fifo '%s': %s\n",
+				ctx.command_fifo, strerror(errno));
+			goto fail;
+		}
+
+		ctx.command_fifo_fd = open(ctx.command_fifo, O_RDWR);
+		if (ctx.command_fifo_fd < 0) {
+			fprintf(stderr, "Unable to open command fifo '%s': %s\n",
+				ctx.command_fifo, strerror(errno));
+			goto fail;
+		}
+	}
+
+	if (circular_size) {
+		ctx.circular_buffer.allocated_size = circular_size;
+		ctx.circular_buffer.data = malloc(circular_size);
+		if (!ctx.circular_buffer.data) {
+			fprintf(stderr, "Unable to allocate circular buffer\n");
+			goto fail;
+		}
+
+		ctx.output_stream = fopencookie(&ctx.circular_buffer, "w+",
+						circular_buffer_functions);
+		if (!ctx.output_stream) {
+			fprintf(stderr, "Unable to create circular buffer\n");
+			goto fail;
+		}
+
+		if (!get_correlation_timestamps(&initial_correlation, ctx.drm_fd)) {
+			fprintf(stderr, "Unable to correlation timestamps\n");
+			goto fail;
+		}
+
+		write_correlation_timestamps(ctx.output_stream, ctx.drm_fd);
+		fprintf(stdout,
+			"Recoding in internal circular buffer.\n"
+			"Use i915-perf-control to snapshot into file.\n");
+	} else {
+		output = fopen(output_file, "w+");
+		if (!output) {
+			fprintf(stderr, "Unable to open output file '%s'\n",
+				output_file);
+			goto fail;
+		}
+
+		if (!write_version(output, &ctx) ||
+		    !write_header(output, &ctx) ||
+		    !write_topology(output, &ctx) ||
+		    !write_correlation_timestamps(output, ctx.drm_fd)) {
+			fprintf(stderr, "Unable to write header in file '%s'\n",
+				output_file);
+			goto fail;
+		}
+
+		ctx.output_stream = output;
+		fprintf(stdout, "Writing recoding to %s\n", output_file);
+	}
+
+	if (ctx.metric_set->perf_oa_metrics_set == 0) {
+		fprintf(stderr,
+			"Unable to load performance configuration, consider running:\n"
+			"   sysctl dev.i915.perf_stream_paranoid=0\n");
+		goto fail;
+	}
+
+	fprintf(stdout, "Using correlation clock: %s\n",
+		get_correlation_clock_name(correlation_clock_id));
+
+	ctx.oa_exponent = oa_exponent_for_period(ctx.oa_timestamp_frequency, perf_period);
+	fprintf(stdout, "Opening perf stream with metric_id=%"PRIu64" oa_exponent=%u oa_format=%u\n",
+		ctx.metric_set->perf_oa_metrics_set, ctx.oa_exponent,
+		ctx.metric_set->perf_oa_format);
+
+	ctx.perf_fd = perf_open(&ctx);
+	if (ctx.perf_fd < 0) {
+		fprintf(stderr, "Unable to open i915 perf stream: %s\n",
+			strerror(errno));
+		goto fail;
+	}
+
+	corr_period_ns = corr_period * 1000000000ul;
+	poll_time_ns = corr_period_ns;
+
+	while (!quit) {
+		struct pollfd pollfd[2] = {
+			{         ctx.perf_fd, POLLIN, 0 },
+			{ ctx.command_fifo_fd, POLLIN, 0 },
+		};
+		uint64_t elapsed_ns;
+		int ret;
+
+		igt_gettime(&now);
+		ret = poll(pollfd, ctx.command_fifo_fd != -1 ? 2 : 1, poll_time_ns / 1000000);
+		if (ret < 0 && errno != EINTR) {
+			fprintf(stderr, "Failed to poll i915-perf stream: %s\n",
+				strerror(errno));
+			break;
+		}
+
+		if (ret > 0) {
+			if (pollfd[0].revents & POLLIN) {
+				if (!write_i915_perf_data(ctx.output_stream, ctx.perf_fd)) {
+					fprintf(stderr, "Failed to write i915-perf data: %s\n",
+						strerror(errno));
+					break;
+				}
+			}
+
+			if (pollfd[1].revents & POLLIN) {
+				read_command_file(&ctx);
+			}
+		}
+
+		elapsed_ns = igt_nsec_elapsed(&now);
+		if (elapsed_ns > poll_time_ns) {
+			poll_time_ns = corr_period_ns;
+			if (!write_correlation_timestamps(ctx.output_stream, ctx.drm_fd)) {
+				fprintf(stderr,
+					"Failed to write i915 timestamp correlation data: %s\n",
+					strerror(errno));
+				break;
+			}
+		} else {
+			poll_time_ns -= elapsed_ns;
+		}
+	}
+
+	fprintf(stdout, "Exiting...\n");
+
+	if (!write_i915_perf_data(ctx.output_stream, ctx.perf_fd)) {
+		fprintf(stderr, "Failed to write i915-perf data: %s\n",
+			strerror(errno));
+	}
+
+	if (!write_correlation_timestamps(ctx.output_stream, ctx.drm_fd)) {
+		fprintf(stderr,
+			"Failed to write final i915 timestamp correlation data: %s\n",
+			strerror(errno));
+	}
+
+	teardown_recording_context(&ctx);
+
+	return EXIT_SUCCESS;
+
+ fail:
+	teardown_recording_context(&ctx);
+
+	return EXIT_FAILURE;
+}
-- 
2.41.0



More information about the Intel-gfx-trybot mailing list