From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 84C2BC74A5B for ; Tue, 21 Mar 2023 12:41:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229846AbjCUMlB (ORCPT ); Tue, 21 Mar 2023 08:41:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38370 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229832AbjCUMko (ORCPT ); Tue, 21 Mar 2023 08:40:44 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A752FDBEE; Tue, 21 Mar 2023 05:40:15 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 1A412B811BB; Tue, 21 Mar 2023 12:40:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 46F4BC4339B; Tue, 21 Mar 2023 12:40:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1679402411; bh=6U8OJxLGcYciEaYGDCP2A9LZA/rZzM6y29wV4qR4AGk=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=hrUBNgwOiOwtnai4132orqVcdRdEs1pCkpFAna4q7uBMOOtHubNVZYR7PjMntApi6 +NJE7LUnYGil5jdnmt6pFSl9bppsEAfKMvn1ieGzu8DUypTTsTweSNGCicLyR88U2x srzvzsFLrjB4o/qIWnwrW9w6AT85EMoLY3hh6RGQvdX1kfxMF/ao7KvYxBuy4UHDFk bJUkBRdI6hevBZydT1WrjazRIMhJ7Ft1KfUelQcpdKzKTm6/uBPFhWbmysQTAgrPD+ 7/NUK5qT5zq/pjl+ct2HBOZe5TKW7SdbhexWeyWLIC7Nqx2rR1OTzkrLXHHaStaT1U McPKmp3JErT8w== Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id E76184052D; Tue, 21 Mar 2023 09:40:08 -0300 (-03) Date: Tue, 21 Mar 2023 09:40:08 -0300 From: Arnaldo Carvalho de Melo To: Ian Rogers Cc: James Clark , linux-perf-users@vger.kernel.org, renyu.zj@linux.alibaba.com, john.g.garry@oracle.com, Will Deacon , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Adrian Hunter , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH] perf vendor events arm64: Add N1 metrics Message-ID: References: <20230320114601.524958-1-james.clark@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Url: http://acmel.wordpress.com Precedence: bulk List-ID: X-Mailing-List: linux-perf-users@vger.kernel.org Em Mon, Mar 20, 2023 at 10:41:46AM -0700, Ian Rogers escreveu: > On Mon, Mar 20, 2023 at 4:46 AM James Clark wrote: > > > > Generated from the telemetry solution repo[1] with this command: > > > > ./generate.py /tools/perf/ --telemetry-files \ > > ../../data/pmu/cpu/neoverse/neoverse-n1.json > > > > Since this data source now includes the SPE events for N1, it has > > diverged from A76 which means the folder has to be split. > > > > The new data also uses more fine grained grouping, but this will be > > consistent for all future products. Long PublicDescriptions are now > > included even for common events because this can include product > > specific details. For non verbose mode the common BriefDescriptions > > remain the same. > > > > [1]: https://gitlab.arm.com/telemetry-solution/telemetry-solution > > > > Signed-off-by: James Clark > > Acked-by: Ian Rogers Thanks, applied. - Arnaldo > Thanks, > Ian > > > --- > > .../{cortex-a76-n1 => cortex-a76}/branch.json | 0 > > .../{cortex-a76-n1 => cortex-a76}/bus.json | 0 > > .../{cortex-a76-n1 => cortex-a76}/cache.json | 0 > > .../exception.json | 0 > > .../instruction.json | 0 > > .../{cortex-a76-n1 => cortex-a76}/memory.json | 0 > > .../pipeline.json | 0 > > .../arch/arm64/arm/neoverse-n1/bus.json | 18 ++ > > .../arch/arm64/arm/neoverse-n1/exception.json | 62 +++++ > > .../arch/arm64/arm/neoverse-n1/general.json | 6 + > > .../arch/arm64/arm/neoverse-n1/l1d_cache.json | 50 ++++ > > .../arch/arm64/arm/neoverse-n1/l1i_cache.json | 10 + > > .../arch/arm64/arm/neoverse-n1/l2_cache.json | 46 ++++ > > .../arch/arm64/arm/neoverse-n1/l3_cache.json | 18 ++ > > .../arch/arm64/arm/neoverse-n1/ll_cache.json | 10 + > > .../arch/arm64/arm/neoverse-n1/memory.json | 22 ++ > > .../arch/arm64/arm/neoverse-n1/metrics.json | 219 ++++++++++++++++++ > > .../arch/arm64/arm/neoverse-n1/retired.json | 26 +++ > > .../arch/arm64/arm/neoverse-n1/spe.json | 18 ++ > > .../arm64/arm/neoverse-n1/spec_operation.json | 102 ++++++++ > > .../arch/arm64/arm/neoverse-n1/stall.json | 10 + > > .../arch/arm64/arm/neoverse-n1/tlb.json | 66 ++++++ > > tools/perf/pmu-events/arch/arm64/mapfile.csv | 4 +- > > 23 files changed, 685 insertions(+), 2 deletions(-) > > rename tools/perf/pmu-events/arch/arm64/arm/{cortex-a76-n1 => cortex-a76}/branch.json (100%) > > rename tools/perf/pmu-events/arch/arm64/arm/{cortex-a76-n1 => cortex-a76}/bus.json (100%) > > rename tools/perf/pmu-events/arch/arm64/arm/{cortex-a76-n1 => cortex-a76}/cache.json (100%) > > rename tools/perf/pmu-events/arch/arm64/arm/{cortex-a76-n1 => cortex-a76}/exception.json (100%) > > rename tools/perf/pmu-events/arch/arm64/arm/{cortex-a76-n1 => cortex-a76}/instruction.json (100%) > > rename tools/perf/pmu-events/arch/arm64/arm/{cortex-a76-n1 => cortex-a76}/memory.json (100%) > > rename tools/perf/pmu-events/arch/arm64/arm/{cortex-a76-n1 => cortex-a76}/pipeline.json (100%) > > create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/bus.json > > create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/exception.json > > create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/general.json > > create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/l1d_cache.json > > create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/l1i_cache.json > > create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/l2_cache.json > > create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/l3_cache.json > > create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/ll_cache.json > > create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/memory.json > > create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/metrics.json > > create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/retired.json > > create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/spe.json > > create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/spec_operation.json > > create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/stall.json > > create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/tlb.json > > > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/branch.json b/tools/perf/pmu-events/arch/arm64/arm/cortex-a76/branch.json > > similarity index 100% > > rename from tools/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/branch.json > > rename to tools/perf/pmu-events/arch/arm64/arm/cortex-a76/branch.json > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/bus.json b/tools/perf/pmu-events/arch/arm64/arm/cortex-a76/bus.json > > similarity index 100% > > rename from tools/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/bus.json > > rename to tools/perf/pmu-events/arch/arm64/arm/cortex-a76/bus.json > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/cache.json b/tools/perf/pmu-events/arch/arm64/arm/cortex-a76/cache.json > > similarity index 100% > > rename from tools/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/cache.json > > rename to tools/perf/pmu-events/arch/arm64/arm/cortex-a76/cache.json > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/exception.json b/tools/perf/pmu-events/arch/arm64/arm/cortex-a76/exception.json > > similarity index 100% > > rename from tools/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/exception.json > > rename to tools/perf/pmu-events/arch/arm64/arm/cortex-a76/exception.json > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/instruction.json b/tools/perf/pmu-events/arch/arm64/arm/cortex-a76/instruction.json > > similarity index 100% > > rename from tools/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/instruction.json > > rename to tools/perf/pmu-events/arch/arm64/arm/cortex-a76/instruction.json > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/memory.json b/tools/perf/pmu-events/arch/arm64/arm/cortex-a76/memory.json > > similarity index 100% > > rename from tools/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/memory.json > > rename to tools/perf/pmu-events/arch/arm64/arm/cortex-a76/memory.json > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/pipeline.json b/tools/perf/pmu-events/arch/arm64/arm/cortex-a76/pipeline.json > > similarity index 100% > > rename from tools/perf/pmu-events/arch/arm64/arm/cortex-a76-n1/pipeline.json > > rename to tools/perf/pmu-events/arch/arm64/arm/cortex-a76/pipeline.json > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/bus.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/bus.json > > new file mode 100644 > > index 000000000000..2e11a8c4a484 > > --- /dev/null > > +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/bus.json > > @@ -0,0 +1,18 @@ > > +[ > > + { > > + "ArchStdEvent": "BUS_ACCESS", > > + "PublicDescription": "Counts memory transactions issued by the CPU to the external bus, including snoop requests and snoop responses. Each beat of data is counted individually." > > + }, > > + { > > + "ArchStdEvent": "BUS_CYCLES", > > + "PublicDescription": "Counts bus cycles in the CPU. Bus cycles represent a clock cycle in which a transaction could be sent or received on the interface from the CPU to the external bus. Since that interface is driven at the same clock speed as the CPU, this event is a duplicate of CPU_CYCLES." > > + }, > > + { > > + "ArchStdEvent": "BUS_ACCESS_RD", > > + "PublicDescription": "Counts memory read transactions seen on the external bus. Each beat of data is counted individually." > > + }, > > + { > > + "ArchStdEvent": "BUS_ACCESS_WR", > > + "PublicDescription": "Counts memory write transactions seen on the external bus. Each beat of data is counted individually." > > + } > > +] > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/exception.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/exception.json > > new file mode 100644 > > index 000000000000..4404b8e91690 > > --- /dev/null > > +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/exception.json > > @@ -0,0 +1,62 @@ > > +[ > > + { > > + "ArchStdEvent": "EXC_TAKEN", > > + "PublicDescription": "Counts any taken architecturally visible exceptions such as IRQ, FIQ, SError, and other synchronous exceptions. Exceptions are counted whether or not they are taken locally." > > + }, > > + { > > + "ArchStdEvent": "EXC_RETURN", > > + "PublicDescription": "Counts any architecturally executed exception return instructions. Eg: AArch64: ERET" > > + }, > > + { > > + "ArchStdEvent": "EXC_UNDEF", > > + "PublicDescription": "Counts the number of synchronous exceptions which are taken locally that are due to attempting to execute an instruction that is UNDEFINED. Attempting to execute instruction bit patterns that have not been allocated. Attempting to execute instructions when they are disabled. Attempting to execute instructions at an inappropriate Exception level. Attempting to execute an instruction when the value of PSTATE.IL is 1." > > + }, > > + { > > + "ArchStdEvent": "EXC_SVC", > > + "PublicDescription": "Counts SVC exceptions taken locally." > > + }, > > + { > > + "ArchStdEvent": "EXC_PABORT", > > + "PublicDescription": "Counts synchronous exceptions that are taken locally and caused by Instruction Aborts." > > + }, > > + { > > + "ArchStdEvent": "EXC_DABORT", > > + "PublicDescription": "Counts exceptions that are taken locally and are caused by data aborts or SErrors. Conditions that could cause those exceptions are attempting to read or write memory where the MMU generates a fault, attempting to read or write memory with a misaligned address, interrupts from the nSEI inputs and internally generated SErrors." > > + }, > > + { > > + "ArchStdEvent": "EXC_IRQ", > > + "PublicDescription": "Counts IRQ exceptions including the virtual IRQs that are taken locally." > > + }, > > + { > > + "ArchStdEvent": "EXC_FIQ", > > + "PublicDescription": "Counts FIQ exceptions including the virtual FIQs that are taken locally." > > + }, > > + { > > + "ArchStdEvent": "EXC_SMC", > > + "PublicDescription": "Counts SMC exceptions take to EL3." > > + }, > > + { > > + "ArchStdEvent": "EXC_HVC", > > + "PublicDescription": "Counts HVC exceptions taken to EL2." > > + }, > > + { > > + "ArchStdEvent": "EXC_TRAP_PABORT", > > + "PublicDescription": "Counts exceptions which are traps not taken locally and are caused by Instruction Aborts. For example, attempting to execute an instruction with a misaligned PC." > > + }, > > + { > > + "ArchStdEvent": "EXC_TRAP_DABORT", > > + "PublicDescription": "Counts exceptions which are traps not taken locally and are caused by Data Aborts or SError interrupts. Conditions that could cause those exceptions are:\n\n1. Attempting to read or write memory where the MMU generates a fault,\n2. Attempting to read or write memory with a misaligned address,\n3. Interrupts from the SEI input.\n4. internally generated SErrors." > > + }, > > + { > > + "ArchStdEvent": "EXC_TRAP_OTHER", > > + "PublicDescription": "Counts the number of synchronous trap exceptions which are not taken locally and are not SVC, SMC, HVC, data aborts, Instruction Aborts, or interrupts." > > + }, > > + { > > + "ArchStdEvent": "EXC_TRAP_IRQ", > > + "PublicDescription": "Counts IRQ exceptions including the virtual IRQs that are not taken locally." > > + }, > > + { > > + "ArchStdEvent": "EXC_TRAP_FIQ", > > + "PublicDescription": "Counts FIQs which are not taken locally but taken from EL0, EL1,\n or EL2 to EL3 (which would be the normal behavior for FIQs when not executing\n in EL3)." > > + } > > +] > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/general.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/general.json > > new file mode 100644 > > index 000000000000..20fada95ef97 > > --- /dev/null > > +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/general.json > > @@ -0,0 +1,6 @@ > > +[ > > + { > > + "ArchStdEvent": "CPU_CYCLES", > > + "PublicDescription": "Counts CPU clock cycles (not timer cycles). The clock measured by this event is defined as the physical clock driving the CPU logic." > > + } > > +] > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/l1d_cache.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/l1d_cache.json > > new file mode 100644 > > index 000000000000..6cd0b3ba5010 > > --- /dev/null > > +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/l1d_cache.json > > @@ -0,0 +1,50 @@ > > +[ > > + { > > + "ArchStdEvent": "L1D_CACHE_REFILL", > > + "PublicDescription": "Counts level 1 data cache refills caused by speculatively executed load or store operations that missed in the level 1 data cache. This event only counts one event per cache line. This event does not count cache line allocations from preload instructions or from hardware cache prefetching." > > + }, > > + { > > + "ArchStdEvent": "L1D_CACHE", > > + "PublicDescription": "Counts level 1 data cache accesses from any load/store operations. Atomic operations that resolve in the CPUs caches (near atomic operations) counts as both a write access and read access. Each access to a cache line is counted including the multiple accesses caused by single instructions such as LDM or STM. Each access to other level 1 data or unified memory structures, for example refill buffers, write buffers, and write-back buffers, are also counted." > > + }, > > + { > > + "ArchStdEvent": "L1D_CACHE_WB", > > + "PublicDescription": "Counts write-backs of dirty data from the L1 data cache to the L2 cache. This occurs when either a dirty cache line is evicted from L1 data cache and allocated in the L2 cache or dirty data is written to the L2 and possibly to the next level of cache. This event counts both victim cache line evictions and cache write-backs from snoops or cache maintenance operations. The following cache operations are not counted:\n\n1. Invalidations which do not result in data being transferred out of the L1 (such as evictions of clean data),\n2. Full line writes which write to L2 without writing L1, such as write streaming mode." > > + }, > > + { > > + "ArchStdEvent": "L1D_CACHE_RD", > > + "PublicDescription": "Counts level 1 data cache accesses from any load operation. Atomic load operations that resolve in the CPUs caches counts as both a write access and read access." > > + }, > > + { > > + "ArchStdEvent": "L1D_CACHE_WR", > > + "PublicDescription": "Counts level 1 data cache accesses generated by store operations. This event also counts accesses caused by a DC ZVA (data cache zero, specified by virtual address) instruction. Near atomic operations that resolve in the CPUs caches count as a write access and read access." > > + }, > > + { > > + "ArchStdEvent": "L1D_CACHE_REFILL_RD", > > + "PublicDescription": "Counts level 1 data cache refills caused by speculatively executed load instructions where the memory read operation misses in the level 1 data cache. This event only counts one event per cache line." > > + }, > > + { > > + "ArchStdEvent": "L1D_CACHE_REFILL_WR", > > + "PublicDescription": "Counts level 1 data cache refills caused by speculatively executed store instructions where the memory write operation misses in the level 1 data cache. This event only counts one event per cache line." > > + }, > > + { > > + "ArchStdEvent": "L1D_CACHE_REFILL_INNER", > > + "PublicDescription": "Counts level 1 data cache refills where the cache line data came from caches inside the immediate cluster of the core." > > + }, > > + { > > + "ArchStdEvent": "L1D_CACHE_REFILL_OUTER", > > + "PublicDescription": "Counts level 1 data cache refills for which the cache line data came from outside the immediate cluster of the core, like an SLC in the system interconnect or DRAM." > > + }, > > + { > > + "ArchStdEvent": "L1D_CACHE_WB_VICTIM", > > + "PublicDescription": "Counts dirty cache line evictions from the level 1 data cache caused by a new cache line allocation. This event does not count evictions caused by cache maintenance operations." > > + }, > > + { > > + "ArchStdEvent": "L1D_CACHE_WB_CLEAN", > > + "PublicDescription": "Counts write-backs from the level 1 data cache that are a result of a coherency operation made by another CPU. Event count includes cache maintenance operations." > > + }, > > + { > > + "ArchStdEvent": "L1D_CACHE_INVAL", > > + "PublicDescription": "Counts each explicit invalidation of a cache line in the level 1 data cache caused by:\n\n- Cache Maintenance Operations (CMO) that operate by a virtual address.\n- Broadcast cache coherency operations from another CPU in the system.\n\nThis event does not count for the following conditions:\n\n1. A cache refill invalidates a cache line.\n2. A CMO which is executed on that CPU and invalidates a cache line specified by set/way.\n\nNote that CMOs that operate by set/way cannot be broadcast from one CPU to another." > > + } > > +] > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/l1i_cache.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/l1i_cache.json > > new file mode 100644 > > index 000000000000..e719b6e7fa77 > > --- /dev/null > > +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/l1i_cache.json > > @@ -0,0 +1,10 @@ > > +[ > > + { > > + "ArchStdEvent": "L1I_CACHE_REFILL", > > + "PublicDescription": "Counts cache line refills in the level 1 instruction cache caused by a missed instruction fetch. Instruction fetches may include accessing multiple instructions, but the single cache line allocation is counted once." > > + }, > > + { > > + "ArchStdEvent": "L1I_CACHE", > > + "PublicDescription": "Counts instruction fetches which access the level 1 instruction cache. Instruction cache accesses caused by cache maintenance operations are not counted." > > + } > > +] > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/l2_cache.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/l2_cache.json > > new file mode 100644 > > index 000000000000..2f6099889de1 > > --- /dev/null > > +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/l2_cache.json > > @@ -0,0 +1,46 @@ > > +[ > > + { > > + "ArchStdEvent": "L2D_CACHE", > > + "PublicDescription": "Counts level 2 cache accesses. level 2 cache is a unified cache for data and instruction accesses. Accesses are for misses in the first level caches or translation resolutions due to accesses. This event also counts write back of dirty data from level 1 data cache to the L2 cache." > > + }, > > + { > > + "ArchStdEvent": "L2D_CACHE_REFILL", > > + "PublicDescription": "Counts cache line refills into the level 2 cache. level 2 cache is a unified cache for data and instruction accesses. Accesses are for misses in the level 1 caches or translation resolutions due to accesses." > > + }, > > + { > > + "ArchStdEvent": "L2D_CACHE_WB", > > + "PublicDescription": "Counts write-backs of data from the L2 cache to outside the CPU. This includes snoops to the L2 (from other CPUs) which return data even if the snoops cause an invalidation. L2 cache line invalidations which do not write data outside the CPU and snoops which return data from an L1 cache are not counted. Data would not be written outside the cache when invalidating a clean cache line." > > + }, > > + { > > + "ArchStdEvent": "L2D_CACHE_ALLOCATE", > > + "PublicDescription": "TBD" > > + }, > > + { > > + "ArchStdEvent": "L2D_CACHE_RD", > > + "PublicDescription": "Counts level 2 cache accesses due to memory read operations. level 2 cache is a unified cache for data and instruction accesses, accesses are for misses in the level 1 caches or translation resolutions due to accesses." > > + }, > > + { > > + "ArchStdEvent": "L2D_CACHE_WR", > > + "PublicDescription": "Counts level 2 cache accesses due to memory write operations. level 2 cache is a unified cache for data and instruction accesses, accesses are for misses in the level 1 caches or translation resolutions due to accesses." > > + }, > > + { > > + "ArchStdEvent": "L2D_CACHE_REFILL_RD", > > + "PublicDescription": "Counts refills for memory accesses due to memory read operation counted by L2D_CACHE_RD. level 2 cache is a unified cache for data and instruction accesses, accesses are for misses in the level 1 caches or translation resolutions due to accesses." > > + }, > > + { > > + "ArchStdEvent": "L2D_CACHE_REFILL_WR", > > + "PublicDescription": "Counts refills for memory accesses due to memory write operation counted by L2D_CACHE_WR. level 2 cache is a unified cache for data and instruction accesses, accesses are for misses in the level 1 caches or translation resolutions due to accesses." > > + }, > > + { > > + "ArchStdEvent": "L2D_CACHE_WB_VICTIM", > > + "PublicDescription": "Counts evictions from the level 2 cache because of a line being allocated into the L2 cache." > > + }, > > + { > > + "ArchStdEvent": "L2D_CACHE_WB_CLEAN", > > + "PublicDescription": "Counts write-backs from the level 2 cache that are a result of either:\n\n1. Cache maintenance operations,\n\n2. Snoop responses or,\n\n3. Direct cache transfers to another CPU due to a forwarding snoop request." > > + }, > > + { > > + "ArchStdEvent": "L2D_CACHE_INVAL", > > + "PublicDescription": "Counts each explicit invalidation of a cache line in the level 2 cache by cache maintenance operations that operate by a virtual address, or by external coherency operations. This event does not count if either:\n\n1. A cache refill invalidates a cache line or,\n2. A Cache Maintenance Operation (CMO), which invalidates a cache line specified by set/way, is executed on that CPU.\n\nCMOs that operate by set/way cannot be broadcast from one CPU to another." > > + } > > +] > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/l3_cache.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/l3_cache.json > > new file mode 100644 > > index 000000000000..f93e0c9f309a > > --- /dev/null > > +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/l3_cache.json > > @@ -0,0 +1,18 @@ > > +[ > > + { > > + "ArchStdEvent": "L3D_CACHE_ALLOCATE", > > + "PublicDescription": "Counts level 3 cache line allocates that do not fetch data from outside the level 3 data or unified cache. For example, allocates due to streaming stores." > > + }, > > + { > > + "ArchStdEvent": "L3D_CACHE_REFILL", > > + "PublicDescription": "Counts level 3 accesses that receive data from outside the L3 cache." > > + }, > > + { > > + "ArchStdEvent": "L3D_CACHE", > > + "PublicDescription": "Counts level 3 cache accesses. level 3 cache is a unified cache for data and instruction accesses. Accesses are for misses in the lower level caches or translation resolutions due to accesses." > > + }, > > + { > > + "ArchStdEvent": "L3D_CACHE_RD", > > + "PublicDescription": "TBD" > > + } > > +] > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/ll_cache.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/ll_cache.json > > new file mode 100644 > > index 000000000000..bb712d57d58a > > --- /dev/null > > +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/ll_cache.json > > @@ -0,0 +1,10 @@ > > +[ > > + { > > + "ArchStdEvent": "LL_CACHE_RD", > > + "PublicDescription": "Counts read transactions that were returned from outside the core cluster. This event counts when the system register CPUECTLR.EXTLLC bit is set. This event counts read transactions returned from outside the core if those transactions are either hit in the system level cache or missed in the SLC and are returned from any other external sources." > > + }, > > + { > > + "ArchStdEvent": "LL_CACHE_MISS_RD", > > + "PublicDescription": "Counts read transactions that were returned from outside the core cluster but missed in the system level cache. This event counts when the system register CPUECTLR.EXTLLC bit is set. This event counts read transactions returned from outside the core if those transactions are missed in the System level Cache. The data source of the transaction is indicated by a field in the CHI transaction returning to the CPU. This event does not count reads caused by cache maintenance operations." > > + } > > +] > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/memory.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/memory.json > > new file mode 100644 > > index 000000000000..9041f6e0befb > > --- /dev/null > > +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/memory.json > > @@ -0,0 +1,22 @@ > > +[ > > + { > > + "ArchStdEvent": "MEM_ACCESS", > > + "PublicDescription": "Counts memory accesses issued by the CPU load store unit, where those accesses are issued due to load or store operations. This event counts memory accesses no matter whether the data is received from any level of cache hierarchy or external memory. If memory accesses are broken up into smaller transactions than what were specified in the load or store instructions, then the event counts those smaller memory transactions." > > + }, > > + { > > + "ArchStdEvent": "MEMORY_ERROR", > > + "PublicDescription": "Counts any detected correctable or uncorrectable physical memory errors (ECC or parity) in protected CPUs RAMs. On the core, this event counts errors in the caches (including data and tag rams). Any detected memory error (from either a speculative and abandoned access, or an architecturally executed access) is counted. Note that errors are only detected when the actual protected memory is accessed by an operation." > > + }, > > + { > > + "ArchStdEvent": "REMOTE_ACCESS", > > + "PublicDescription": "Counts accesses to another chip, which is implemented as a different CMN mesh in the system. If the CHI bus response back to the core indicates that the data source is from another chip (mesh), then the counter is updated. If no data is returned, even if the system snoops another chip/mesh, then the counter is not updated." > > + }, > > + { > > + "ArchStdEvent": "MEM_ACCESS_RD", > > + "PublicDescription": "Counts memory accesses issued by the CPU due to load operations. The event counts any memory load access, no matter whether the data is received from any level of cache hierarchy or external memory. The event also counts atomic load operations. If memory accesses are broken up by the load/store unit into smaller transactions that are issued by the bus interface, then the event counts those smaller transactions." > > + }, > > + { > > + "ArchStdEvent": "MEM_ACCESS_WR", > > + "PublicDescription": "Counts memory accesses issued by the CPU due to store operations. The event counts any memory store access, no matter whether the data is located in any level of cache or external memory. The event also counts atomic load and store operations. If memory accesses are broken up by the load/store unit into smaller transactions that are issued by the bus interface, then the event counts those smaller transactions." > > + } > > +] > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/metrics.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/metrics.json > > new file mode 100644 > > index 000000000000..dc0f8638f8f5 > > --- /dev/null > > +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/metrics.json > > @@ -0,0 +1,219 @@ > > +[ > > + { > > + "MetricName": "backend_stalled_cycles", > > + "MetricExpr": "((STALL_BACKEND / CPU_CYCLES) * 100)", > > + "BriefDescription": "This metric is the percentage of cycles that were stalled due to resource constraints in the backend unit of the processor.", > > + "MetricGroup": "Cycle_Accounting", > > + "ScaleUnit": "1percent of cycles" > > + }, > > + { > > + "MetricName": "branch_misprediction_ratio", > > + "MetricExpr": "(BR_MIS_PRED_RETIRED / BR_RETIRED)", > > + "BriefDescription": "This metric measures the ratio of branches mispredicted to the total number of branches architecturally executed. This gives an indication of the effectiveness of the branch prediction unit.", > > + "MetricGroup": "Miss_Ratio;Branch_Effectiveness", > > + "ScaleUnit": "1per branch" > > + }, > > + { > > + "MetricName": "branch_mpki", > > + "MetricExpr": "((BR_MIS_PRED_RETIRED / INST_RETIRED) * 1000)", > > + "BriefDescription": "This metric measures the number of branch mispredictions per thousand instructions executed.", > > + "MetricGroup": "MPKI;Branch_Effectiveness", > > + "ScaleUnit": "1MPKI" > > + }, > > + { > > + "MetricName": "branch_percentage", > > + "MetricExpr": "(((BR_IMMED_SPEC + BR_INDIRECT_SPEC) / INST_SPEC) * 100)", > > + "BriefDescription": "This metric measures branch operations as a percentage of operations speculatively executed.", > > + "MetricGroup": "Operation_Mix", > > + "ScaleUnit": "1percent of operations" > > + }, > > + { > > + "MetricName": "crypto_percentage", > > + "MetricExpr": "((CRYPTO_SPEC / INST_SPEC) * 100)", > > + "BriefDescription": "This metric measures crypto operations as a percentage of operations speculatively executed.", > > + "MetricGroup": "Operation_Mix", > > + "ScaleUnit": "1percent of operations" > > + }, > > + { > > + "MetricName": "dtlb_mpki", > > + "MetricExpr": "((DTLB_WALK / INST_RETIRED) * 1000)", > > + "BriefDescription": "This metric measures the number of data TLB Walks per thousand instructions executed.", > > + "MetricGroup": "MPKI;DTLB_Effectiveness", > > + "ScaleUnit": "1MPKI" > > + }, > > + { > > + "MetricName": "dtlb_walk_ratio", > > + "MetricExpr": "(DTLB_WALK / L1D_TLB)", > > + "BriefDescription": "This metric measures the ratio of instruction TLB Walks to the total number of data TLB accesses. This gives an indication of the effectiveness of the data TLB accesses.", > > + "MetricGroup": "Miss_Ratio;DTLB_Effectiveness", > > + "ScaleUnit": "1per TLB access" > > + }, > > + { > > + "MetricName": "frontend_stalled_cycles", > > + "MetricExpr": "((STALL_FRONTEND / CPU_CYCLES) * 100)", > > + "BriefDescription": "This metric is the percentage of cycles that were stalled due to resource constraints in the frontend unit of the processor.", > > + "MetricGroup": "Cycle_Accounting", > > + "ScaleUnit": "1percent of cycles" > > + }, > > + { > > + "MetricName": "integer_dp_percentage", > > + "MetricExpr": "((DP_SPEC / INST_SPEC) * 100)", > > + "BriefDescription": "This metric measures scalar integer operations as a percentage of operations speculatively executed.", > > + "MetricGroup": "Operation_Mix", > > + "ScaleUnit": "1percent of operations" > > + }, > > + { > > + "MetricName": "ipc", > > + "MetricExpr": "(INST_RETIRED / CPU_CYCLES)", > > + "BriefDescription": "This metric measures the number of instructions retired per cycle.", > > + "MetricGroup": "General", > > + "ScaleUnit": "1per cycle" > > + }, > > + { > > + "MetricName": "itlb_mpki", > > + "MetricExpr": "((ITLB_WALK / INST_RETIRED) * 1000)", > > + "BriefDescription": "This metric measures the number of instruction TLB Walks per thousand instructions executed.", > > + "MetricGroup": "MPKI;ITLB_Effectiveness", > > + "ScaleUnit": "1MPKI" > > + }, > > + { > > + "MetricName": "itlb_walk_ratio", > > + "MetricExpr": "(ITLB_WALK / L1I_TLB)", > > + "BriefDescription": "This metric measures the ratio of instruction TLB Walks to the total number of instruction TLB accesses. This gives an indication of the effectiveness of the instruction TLB accesses.", > > + "MetricGroup": "Miss_Ratio;ITLB_Effectiveness", > > + "ScaleUnit": "1per TLB access" > > + }, > > + { > > + "MetricName": "l1d_cache_miss_ratio", > > + "MetricExpr": "(L1D_CACHE_REFILL / L1D_CACHE)", > > + "BriefDescription": "This metric measures the ratio of level 1 data cache accesses missed to the total number of level 1 data cache accesses. This gives an indication of the effectiveness of the level 1 data cache.", > > + "MetricGroup": "Miss_Ratio;L1D_Cache_Effectiveness", > > + "ScaleUnit": "1per cache access" > > + }, > > + { > > + "MetricName": "l1d_cache_mpki", > > + "MetricExpr": "((L1D_CACHE_REFILL / INST_RETIRED) * 1000)", > > + "BriefDescription": "This metric measures the number of level 1 data cache accesses missed per thousand instructions executed.", > > + "MetricGroup": "MPKI;L1D_Cache_Effectiveness", > > + "ScaleUnit": "1MPKI" > > + }, > > + { > > + "MetricName": "l1d_tlb_miss_ratio", > > + "MetricExpr": "(L1D_TLB_REFILL / L1D_TLB)", > > + "BriefDescription": "This metric measures the ratio of level 1 data TLB accesses missed to the total number of level 1 data TLB accesses. This gives an indication of the effectiveness of the level 1 data TLB.", > > + "MetricGroup": "Miss_Ratio;DTLB_Effectiveness", > > + "ScaleUnit": "1per TLB access" > > + }, > > + { > > + "MetricName": "l1d_tlb_mpki", > > + "MetricExpr": "((L1D_TLB_REFILL / INST_RETIRED) * 1000)", > > + "BriefDescription": "This metric measures the number of level 1 instruction TLB accesses missed per thousand instructions executed.", > > + "MetricGroup": "MPKI;DTLB_Effectiveness", > > + "ScaleUnit": "1MPKI" > > + }, > > + { > > + "MetricName": "l1i_cache_miss_ratio", > > + "MetricExpr": "(L1I_CACHE_REFILL / L1I_CACHE)", > > + "BriefDescription": "This metric measures the ratio of level 1 instruction cache accesses missed to the total number of level 1 instruction cache accesses. This gives an indication of the effectiveness of the level 1 instruction cache.", > > + "MetricGroup": "Miss_Ratio;L1I_Cache_Effectiveness", > > + "ScaleUnit": "1per cache access" > > + }, > > + { > > + "MetricName": "l1i_cache_mpki", > > + "MetricExpr": "((L1I_CACHE_REFILL / INST_RETIRED) * 1000)", > > + "BriefDescription": "This metric measures the number of level 1 instruction cache accesses missed per thousand instructions executed.", > > + "MetricGroup": "MPKI;L1I_Cache_Effectiveness", > > + "ScaleUnit": "1MPKI" > > + }, > > + { > > + "MetricName": "l1i_tlb_miss_ratio", > > + "MetricExpr": "(L1I_TLB_REFILL / L1I_TLB)", > > + "BriefDescription": "This metric measures the ratio of level 1 instruction TLB accesses missed to the total number of level 1 instruction TLB accesses. This gives an indication of the effectiveness of the level 1 instruction TLB.", > > + "MetricGroup": "Miss_Ratio;ITLB_Effectiveness", > > + "ScaleUnit": "1per TLB access" > > + }, > > + { > > + "MetricName": "l1i_tlb_mpki", > > + "MetricExpr": "((L1I_TLB_REFILL / INST_RETIRED) * 1000)", > > + "BriefDescription": "This metric measures the number of level 1 instruction TLB accesses missed per thousand instructions executed.", > > + "MetricGroup": "MPKI;ITLB_Effectiveness", > > + "ScaleUnit": "1MPKI" > > + }, > > + { > > + "MetricName": "l2_cache_miss_ratio", > > + "MetricExpr": "(L2D_CACHE_REFILL / L2D_CACHE)", > > + "BriefDescription": "This metric measures the ratio of level 2 cache accesses missed to the total number of level 2 cache accesses. This gives an indication of the effectiveness of the level 2 cache, which is a unified cache that stores both data and instruction. Note that cache accesses in this cache are either data memory access or instruction fetch as this is a unified cache.", > > + "MetricGroup": "Miss_Ratio;L2_Cache_Effectiveness", > > + "ScaleUnit": "1per cache access" > > + }, > > + { > > + "MetricName": "l2_cache_mpki", > > + "MetricExpr": "((L2D_CACHE_REFILL / INST_RETIRED) * 1000)", > > + "BriefDescription": "This metric measures the number of level 2 unified cache accesses missed per thousand instructions executed. Note that cache accesses in this cache are either data memory access or instruction fetch as this is a unified cache.", > > + "MetricGroup": "MPKI;L2_Cache_Effectiveness", > > + "ScaleUnit": "1MPKI" > > + }, > > + { > > + "MetricName": "l2_tlb_miss_ratio", > > + "MetricExpr": "(L2D_TLB_REFILL / L2D_TLB)", > > + "BriefDescription": "This metric measures the ratio of level 2 unified TLB accesses missed to the total number of level 2 unified TLB accesses. This gives an indication of the effectiveness of the level 2 TLB.", > > + "MetricGroup": "Miss_Ratio;ITLB_Effectiveness;DTLB_Effectiveness", > > + "ScaleUnit": "1per TLB access" > > + }, > > + { > > + "MetricName": "l2_tlb_mpki", > > + "MetricExpr": "((L2D_TLB_REFILL / INST_RETIRED) * 1000)", > > + "BriefDescription": "This metric measures the number of level 2 unified TLB accesses missed per thousand instructions executed.", > > + "MetricGroup": "MPKI;ITLB_Effectiveness;DTLB_Effectiveness", > > + "ScaleUnit": "1MPKI" > > + }, > > + { > > + "MetricName": "ll_cache_read_hit_ratio", > > + "MetricExpr": "((LL_CACHE_RD - LL_CACHE_MISS_RD) / LL_CACHE_RD)", > > + "BriefDescription": "This metric measures the ratio of last level cache read accesses hit in the cache to the total number of last level cache accesses. This gives an indication of the effectiveness of the last level cache for read traffic. Note that cache accesses in this cache are either data memory access or instruction fetch as this is a system level cache.", > > + "MetricGroup": "LL_Cache_Effectiveness", > > + "ScaleUnit": "1per cache access" > > + }, > > + { > > + "MetricName": "ll_cache_read_miss_ratio", > > + "MetricExpr": "(LL_CACHE_MISS_RD / LL_CACHE_RD)", > > + "BriefDescription": "This metric measures the ratio of last level cache read accesses missed to the total number of last level cache accesses. This gives an indication of the effectiveness of the last level cache for read traffic. Note that cache accesses in this cache are either data memory access or instruction fetch as this is a system level cache.", > > + "MetricGroup": "Miss_Ratio;LL_Cache_Effectiveness", > > + "ScaleUnit": "1per cache access" > > + }, > > + { > > + "MetricName": "ll_cache_read_mpki", > > + "MetricExpr": "((LL_CACHE_MISS_RD / INST_RETIRED) * 1000)", > > + "BriefDescription": "This metric measures the number of last level cache read accesses missed per thousand instructions executed.", > > + "MetricGroup": "MPKI;LL_Cache_Effectiveness", > > + "ScaleUnit": "1MPKI" > > + }, > > + { > > + "MetricName": "load_percentage", > > + "MetricExpr": "((LD_SPEC / INST_SPEC) * 100)", > > + "BriefDescription": "This metric measures load operations as a percentage of operations speculatively executed.", > > + "MetricGroup": "Operation_Mix", > > + "ScaleUnit": "1percent of operations" > > + }, > > + { > > + "MetricName": "scalar_fp_percentage", > > + "MetricExpr": "((VFP_SPEC / INST_SPEC) * 100)", > > + "BriefDescription": "This metric measures scalar floating point operations as a percentage of operations speculatively executed.", > > + "MetricGroup": "Operation_Mix", > > + "ScaleUnit": "1percent of operations" > > + }, > > + { > > + "MetricName": "simd_percentage", > > + "MetricExpr": "((ASE_SPEC / INST_SPEC) * 100)", > > + "BriefDescription": "This metric measures advanced SIMD operations as a percentage of total operations speculatively executed.", > > + "MetricGroup": "Operation_Mix", > > + "ScaleUnit": "1percent of operations" > > + }, > > + { > > + "MetricName": "store_percentage", > > + "MetricExpr": "((ST_SPEC / INST_SPEC) * 100)", > > + "BriefDescription": "This metric measures store operations as a percentage of operations speculatively executed.", > > + "MetricGroup": "Operation_Mix", > > + "ScaleUnit": "1percent of operations" > > + } > > +] > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/retired.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/retired.json > > new file mode 100644 > > index 000000000000..0c7692ad5108 > > --- /dev/null > > +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/retired.json > > @@ -0,0 +1,26 @@ > > +[ > > + { > > + "ArchStdEvent": "SW_INCR", > > + "PublicDescription": "Counts software writes to the PMSWINC_EL0 (software PMU increment) register. The PMSWINC_EL0 register is a manually updated counter for use by application software.\n\nThis event could be used to measure any user program event, such as accesses to a particular data structure (by writing to the PMSWINC_EL0 register each time the data structure is accessed).\n\nTo use the PMSWINC_EL0 register and event, developers must insert instructions that write to the PMSWINC_EL0 register into the source code.\n\nSince the SW_INCR event records writes to the PMSWINC_EL0 register, there is no need to do a read/increment/write sequence to the PMSWINC_EL0 register." > > + }, > > + { > > + "ArchStdEvent": "INST_RETIRED", > > + "PublicDescription": "Counts instructions that have been architecturally executed." > > + }, > > + { > > + "ArchStdEvent": "CID_WRITE_RETIRED", > > + "PublicDescription": "Counts architecturally executed writes to the CONTEXTIDR register, which usually contain the kernel PID and can be output with hardware trace." > > + }, > > + { > > + "ArchStdEvent": "TTBR_WRITE_RETIRED", > > + "PublicDescription": "Counts architectural writes to TTBR0/1_EL1. If virtualization host extensions are enabled (by setting the HCR_EL2.E2H bit to 1), then accesses to TTBR0/1_EL1 that are redirected to TTBR0/1_EL2, or accesses to TTBR0/1_EL12, are counted. TTBRn registers are typically updated when the kernel is swapping user-space threads or applications." > > + }, > > + { > > + "ArchStdEvent": "BR_RETIRED", > > + "PublicDescription": "Counts architecturally executed branches, whether the branch is taken or not. Instructions that explicitly write to the PC are also counted." > > + }, > > + { > > + "ArchStdEvent": "BR_MIS_PRED_RETIRED", > > + "PublicDescription": "Counts branches counted by BR_RETIRED which were mispredicted and caused a pipeline flush." > > + } > > +] > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/spe.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/spe.json > > new file mode 100644 > > index 000000000000..5de8b0f3a440 > > --- /dev/null > > +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/spe.json > > @@ -0,0 +1,18 @@ > > +[ > > + { > > + "ArchStdEvent": "SAMPLE_POP", > > + "PublicDescription": "Counts statistical profiling sample population, the count of all operations that could be sampled but may or may not be chosen for sampling." > > + }, > > + { > > + "ArchStdEvent": "SAMPLE_FEED", > > + "PublicDescription": "Counts statistical profiling samples taken for sampling." > > + }, > > + { > > + "ArchStdEvent": "SAMPLE_FILTRATE", > > + "PublicDescription": "Counts statistical profiling samples taken which are not removed by filtering." > > + }, > > + { > > + "ArchStdEvent": "SAMPLE_COLLISION", > > + "PublicDescription": "Counts statistical profiling samples that have collided with a previous sample and so therefore not taken." > > + } > > +] > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/spec_operation.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/spec_operation.json > > new file mode 100644 > > index 000000000000..be8c0667f1d9 > > --- /dev/null > > +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/spec_operation.json > > @@ -0,0 +1,102 @@ > > +[ > > + { > > + "ArchStdEvent": "BR_MIS_PRED", > > + "PublicDescription": "Counts branches which are speculatively executed and mispredicted." > > + }, > > + { > > + "ArchStdEvent": "BR_PRED", > > + "PublicDescription": "Counts branches speculatively executed and were predicted right." > > + }, > > + { > > + "ArchStdEvent": "INST_SPEC", > > + "PublicDescription": "Counts operations that have been speculatively executed." > > + }, > > + { > > + "ArchStdEvent": "UNALIGNED_LD_SPEC", > > + "PublicDescription": "Counts unaligned memory read operations issued by the CPU. This event counts unaligned accesses (as defined by the actual instruction), even if they are subsequently issued as multiple aligned accesses. The event does not count preload operations (PLD, PLI)." > > + }, > > + { > > + "ArchStdEvent": "UNALIGNED_ST_SPEC", > > + "PublicDescription": "Counts unaligned memory write operations issued by the CPU. This event counts unaligned accesses (as defined by the actual instruction), even if they are subsequently issued as multiple aligned accesses." > > + }, > > + { > > + "ArchStdEvent": "UNALIGNED_LDST_SPEC", > > + "PublicDescription": "Counts unaligned memory operations issued by the CPU. This event counts unaligned accesses (as defined by the actual instruction), even if they are subsequently issued as multiple aligned accesses." > > + }, > > + { > > + "ArchStdEvent": "LDREX_SPEC", > > + "PublicDescription": "Counts Load-Exclusive operations that have been speculatively executed. Eg: LDREX, LDX" > > + }, > > + { > > + "ArchStdEvent": "STREX_PASS_SPEC", > > + "PublicDescription": "Counts store-exclusive operations that have been speculatively executed and have successfully completed the store operation." > > + }, > > + { > > + "ArchStdEvent": "STREX_FAIL_SPEC", > > + "PublicDescription": "Counts store-exclusive operations that have been speculatively executed and have not successfully completed the store operation." > > + }, > > + { > > + "ArchStdEvent": "STREX_SPEC", > > + "PublicDescription": "Counts store-exclusive operations that have been speculatively executed." > > + }, > > + { > > + "ArchStdEvent": "LD_SPEC", > > + "PublicDescription": "Counts speculatively executed load operations including Single Instruction Multiple Data (SIMD) load operations." > > + }, > > + { > > + "ArchStdEvent": "ST_SPEC", > > + "PublicDescription": "Counts speculatively executed store operations including Single Instruction Multiple Data (SIMD) store operations." > > + }, > > + { > > + "ArchStdEvent": "DP_SPEC", > > + "PublicDescription": "Counts speculatively executed logical or arithmetic instructions such as MOV/MVN operations." > > + }, > > + { > > + "ArchStdEvent": "ASE_SPEC", > > + "PublicDescription": "Counts speculatively executed Advanced SIMD operations excluding load, store and move micro-operations that move data to or from SIMD (vector) registers." > > + }, > > + { > > + "ArchStdEvent": "VFP_SPEC", > > + "PublicDescription": "Counts speculatively executed floating point operations. This event does not count operations that move data to or from floating point (vector) registers." > > + }, > > + { > > + "ArchStdEvent": "PC_WRITE_SPEC", > > + "PublicDescription": "Counts speculatively executed operations which cause software changes of the PC. Those operations include all taken branch operations." > > + }, > > + { > > + "ArchStdEvent": "CRYPTO_SPEC", > > + "PublicDescription": "Counts speculatively executed cryptographic operations except for PMULL and VMULL operations." > > + }, > > + { > > + "ArchStdEvent": "BR_IMMED_SPEC", > > + "PublicDescription": "Counts immediate branch operations which are speculatively executed." > > + }, > > + { > > + "ArchStdEvent": "BR_RETURN_SPEC", > > + "PublicDescription": "Counts procedure return operations (RET) which are speculatively executed." > > + }, > > + { > > + "ArchStdEvent": "BR_INDIRECT_SPEC", > > + "PublicDescription": "Counts indirect branch operations including procedure returns, which are speculatively executed. This includes operations that force a software change of the PC, other than exception-generating operations. Eg: BR Xn, RET" > > + }, > > + { > > + "ArchStdEvent": "ISB_SPEC", > > + "PublicDescription": "Counts ISB operations that are executed." > > + }, > > + { > > + "ArchStdEvent": "DSB_SPEC", > > + "PublicDescription": "Counts DSB operations that are speculatively issued to Load/Store unit in the CPU." > > + }, > > + { > > + "ArchStdEvent": "DMB_SPEC", > > + "PublicDescription": "Counts DMB operations that are speculatively issued to the Load/Store unit in the CPU. This event does not count implied barriers from load acquire/store release operations." > > + }, > > + { > > + "ArchStdEvent": "RC_LD_SPEC", > > + "PublicDescription": "Counts any load acquire operations that are speculatively executed. Eg: LDAR, LDARH, LDARB" > > + }, > > + { > > + "ArchStdEvent": "RC_ST_SPEC", > > + "PublicDescription": "Counts any store release operations that are speculatively executed. Eg: STLR, STLRH, STLRB'" > > + } > > +] > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/stall.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/stall.json > > new file mode 100644 > > index 000000000000..688afd8a4061 > > --- /dev/null > > +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/stall.json > > @@ -0,0 +1,10 @@ > > +[ > > + { > > + "ArchStdEvent": "STALL_FRONTEND", > > + "PublicDescription": "Counts cycles when frontend could not send any micro-operations to the rename stage because of frontend resource stalls caused by fetch memory latency or branch prediction flow stalls. All the frontend slots were empty during the cycle when this event counts." > > + }, > > + { > > + "ArchStdEvent": "STALL_BACKEND", > > + "PublicDescription": "Counts cycles whenever the rename unit is unable to send any micro-operations to the backend of the pipeline because of backend resource constraints. Backend resource constraints can include issue stage fullness, execution stage fullness, or other internal pipeline resource fullness. All the backend slots were empty during the cycle when this event counts." > > + } > > +] > > diff --git a/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/tlb.json b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/tlb.json > > new file mode 100644 > > index 000000000000..b550af1831f5 > > --- /dev/null > > +++ b/tools/perf/pmu-events/arch/arm64/arm/neoverse-n1/tlb.json > > @@ -0,0 +1,66 @@ > > +[ > > + { > > + "ArchStdEvent": "L1I_TLB_REFILL", > > + "PublicDescription": "Counts level 1 instruction TLB refills from any Instruction fetch. If there are multiple misses in the TLB that are resolved by the refill, then this event only counts once. This event will not count if the translation table walk results in a fault (such as a translation or access fault), since there is no new translation created for the TLB." > > + }, > > + { > > + "ArchStdEvent": "L1D_TLB_REFILL", > > + "PublicDescription": "Counts level 1 data TLB accesses that resulted in TLB refills. If there are multiple misses in the TLB that are resolved by the refill, then this event only counts once. This event counts for refills caused by preload instructions or hardware prefetch accesses. This event counts regardless of whether the miss hits in L2 or results in a translation table walk. This event will not count if the translation table walk results in a fault (such as a translation or access fault), since there is no new translation created for the TLB. This event will not count on an access from an AT(address translation) instruction." > > + }, > > + { > > + "ArchStdEvent": "L1D_TLB", > > + "PublicDescription": "Counts level 1 data TLB accesses caused by any memory load or store operation. Note that load or store instructions can be broken up into multiple memory operations. This event does not count TLB maintenance operations." > > + }, > > + { > > + "ArchStdEvent": "L1I_TLB", > > + "PublicDescription": "Counts level 1 instruction TLB accesses, whether the access hits or misses in the TLB. This event counts both demand accesses and prefetch or preload generated accesses." > > + }, > > + { > > + "ArchStdEvent": "L2D_TLB_REFILL", > > + "PublicDescription": "Counts level 2 TLB refills caused by memory operations from both data and instruction fetch, except for those caused by TLB maintenance operations and hardware prefetches." > > + }, > > + { > > + "ArchStdEvent": "L2D_TLB", > > + "PublicDescription": "Counts level 2 TLB accesses except those caused by TLB maintenance operations." > > + }, > > + { > > + "ArchStdEvent": "DTLB_WALK", > > + "PublicDescription": "Counts data memory translation table walks caused by a miss in the L2 TLB driven by a memory access. Note that partial translations that also cause a table walk are counted. This event does not count table walks caused by TLB maintenance operations." > > + }, > > + { > > + "ArchStdEvent": "ITLB_WALK", > > + "PublicDescription": "Counts instruction memory translation table walks caused by a miss in the L2 TLB driven by a memory access. Partial translations that also cause a table walk are counted. This event does not count table walks caused by TLB maintenance operations." > > + }, > > + { > > + "ArchStdEvent": "L1D_TLB_REFILL_RD", > > + "PublicDescription": "Counts level 1 data TLB refills caused by memory read operations. If there are multiple misses in the TLB that are resolved by the refill, then this event only counts once. This event counts for refills caused by preload instructions or hardware prefetch accesses. This event counts regardless of whether the miss hits in L2 or results in a translation table walk. This event will not count if the translation table walk results in a fault (such as a translation or access fault), since there is no new translation created for the TLB. This event will not count on an access from an Address Translation (AT) instruction." > > + }, > > + { > > + "ArchStdEvent": "L1D_TLB_REFILL_WR", > > + "PublicDescription": "Counts level 1 data TLB refills caused by data side memory write operations. If there are multiple misses in the TLB that are resolved by the refill, then this event only counts once. This event counts for refills caused by preload instructions or hardware prefetch accesses. This event counts regardless of whether the miss hits in L2 or results in a translation table walk. This event will not count if the table walk results in a fault (such as a translation or access fault), since there is no new translation created for the TLB. This event will not count with an access from an Address Translation (AT) instruction." > > + }, > > + { > > + "ArchStdEvent": "L1D_TLB_RD", > > + "PublicDescription": "Counts level 1 data TLB accesses caused by memory read operations. This event counts whether the access hits or misses in the TLB. This event does not count TLB maintenance operations." > > + }, > > + { > > + "ArchStdEvent": "L1D_TLB_WR", > > + "PublicDescription": "Counts any L1 data side TLB accesses caused by memory write operations. This event counts whether the access hits or misses in the TLB. This event does not count TLB maintenance operations." > > + }, > > + { > > + "ArchStdEvent": "L2D_TLB_REFILL_RD", > > + "PublicDescription": "Counts level 2 TLB refills caused by memory read operations from both data and instruction fetch except for those caused by TLB maintenance operations or hardware prefetches." > > + }, > > + { > > + "ArchStdEvent": "L2D_TLB_REFILL_WR", > > + "PublicDescription": "Counts level 2 TLB refills caused by memory write operations from both data and instruction fetch except for those caused by TLB maintenance operations." > > + }, > > + { > > + "ArchStdEvent": "L2D_TLB_RD", > > + "PublicDescription": "Counts level 2 TLB accesses caused by memory read operations from both data and instruction fetch except for those caused by TLB maintenance operations." > > + }, > > + { > > + "ArchStdEvent": "L2D_TLB_WR", > > + "PublicDescription": "Counts level 2 TLB accesses caused by memory write operations from both data and instruction fetch except for those caused by TLB maintenance operations." > > + } > > +] > > diff --git a/tools/perf/pmu-events/arch/arm64/mapfile.csv b/tools/perf/pmu-events/arch/arm64/mapfile.csv > > index f134e833c069..9d400785d195 100644 > > --- a/tools/perf/pmu-events/arch/arm64/mapfile.csv > > +++ b/tools/perf/pmu-events/arch/arm64/mapfile.csv > > @@ -23,8 +23,8 @@ > > 0x00000000410fd080,v1,arm/cortex-a57-a72,core > > 0x00000000410fd090,v1,arm/cortex-a73,core > > 0x00000000410fd0a0,v1,arm/cortex-a75,core > > -0x00000000410fd0b0,v1,arm/cortex-a76-n1,core > > -0x00000000410fd0c0,v1,arm/cortex-a76-n1,core > > +0x00000000410fd0b0,v1,arm/cortex-a76,core > > +0x00000000410fd0c0,v1,arm/neoverse-n1,core > > 0x00000000410fd0d0,v1,arm/cortex-a77,core > > 0x00000000410fd400,v1,arm/neoverse-v1,core > > 0x00000000410fd410,v1,arm/cortex-a78,core > > -- > > 2.34.1 > > -- - Arnaldo From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 636B8C6FD1D for ; Tue, 21 Mar 2023 12:41:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=DzXWEcmiFHP8me3ThEjFEjqn84rJc2y2Tb1RBH4kOrU=; b=Vc2/H3ilgdDPev HOo7pARVEjJ1P9UxpFUx6wMnzXgmJYzuTERFJLLAqCdIPly+d6jhm9LieXp0+drASSD4hpcWCmbIB w0J6blPz+wDa7NCE1qIm4momAbOB7wCP1dCQWLIcZazgj1GIl+gePcJkhAp9IwYbGisVN8MS6v+dh 5Gy+EMk/WSWEy5JjYu3DCj1WDSIx/VcbMu99xKm1Tbobdp44opobjfvkS13mP2Dpwr3ECh3ouBH8/ 0y+KIq0jM52ia2JE0M/X6DhTMuHUmw9rEaJ60622wvpfaG5IXu0XIreJa04+nV+vyuo6sMj8U6gly yYEUgL+pL4YT61eXZrPQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pebHm-00CMZW-1E; Tue, 21 Mar 2023 12:40:18 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pebHk-00CMYK-20 for linux-arm-kernel@bombadil.infradead.org; Tue, 21 Mar 2023 12:40:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=In-Reply-To:Content-Transfer-Encoding: Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date: Sender:Reply-To:Content-ID:Content-Description; bh=dWgjy53RqDSprfEhgCdhvRWg0UrDcbUCxy8t3C0Fy24=; b=kog1eZHemJs8MTScvYTRfZQ1RQ WszIjjpOsfFmNMwRGlwRfLb29axfStLVPPeDYSZBxw52DZc4MkfF/iZJCQRfhHvmCAK11w6PDH9IN DUuDXe+Bx1XkiRZlM9cdjGFo+r47rRSp9XpPTSu2WM7R4Klmo41K1yv31V9/O0dx5GjiD2PB+mPjQ cjZIuHH726FMBDxctKYmGV4+RO/NI9YiR/6qod2LckALMBtyedwyygiYH3+x1cTkhZEuHriH0C7fC Ld/3RnPwPl3RDr+b9KcwXck5t+50smiNXUhMtnGBjkFnhvCk2bYcblJ/roBHlsqNW2IeUqhRQXXxr TKHyOhhw==; Received: from [187.19.239.165] (helo=quaco.ghostprotocols.net) by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux)) id 1pebHh-004FnV-10; Tue, 21 Mar 2023 12:40:13 +0000 Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id E76184052D; Tue, 21 Mar 2023 09:40:08 -0300 (-03) Date: Tue, 21 Mar 2023 09:40:08 -0300 From: Arnaldo Carvalho de Melo To: Ian Rogers Cc: James Clark , linux-perf-users@vger.kernel.org, renyu.zj@linux.alibaba.com, john.g.garry@oracle.com, Will Deacon , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Adrian Hunter , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH] perf vendor events arm64: Add N1 metrics Message-ID: References: <20230320114601.524958-1-james.clark@arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Url: http://acmel.wordpress.com X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RW0gTW9uLCBNYXIgMjAsIDIwMjMgYXQgMTA6NDE6NDZBTSAtMDcwMCwgSWFuIFJvZ2VycyBlc2Ny ZXZldToKPiBPbiBNb24sIE1hciAyMCwgMjAyMyBhdCA0OjQ24oCvQU0gSmFtZXMgQ2xhcmsgPGph bWVzLmNsYXJrQGFybS5jb20+IHdyb3RlOgo+ID4KPiA+IEdlbmVyYXRlZCBmcm9tIHRoZSB0ZWxl bWV0cnkgc29sdXRpb24gcmVwb1sxXSB3aXRoIHRoaXMgY29tbWFuZDoKPiA+Cj4gPiAgIC4vZ2Vu ZXJhdGUucHkgPGxpbnV4LXJlcG8+L3Rvb2xzL3BlcmYvIC0tdGVsZW1ldHJ5LWZpbGVzIFwKPiA+ ICAgICAuLi8uLi9kYXRhL3BtdS9jcHUvbmVvdmVyc2UvbmVvdmVyc2UtbjEuanNvbgo+ID4KPiA+ IFNpbmNlIHRoaXMgZGF0YSBzb3VyY2Ugbm93IGluY2x1ZGVzIHRoZSBTUEUgZXZlbnRzIGZvciBO MSwgaXQgaGFzCj4gPiBkaXZlcmdlZCBmcm9tIEE3NiB3aGljaCBtZWFucyB0aGUgZm9sZGVyIGhh cyB0byBiZSBzcGxpdC4KPiA+Cj4gPiBUaGUgbmV3IGRhdGEgYWxzbyB1c2VzIG1vcmUgZmluZSBn cmFpbmVkIGdyb3VwaW5nLCBidXQgdGhpcyB3aWxsIGJlCj4gPiBjb25zaXN0ZW50IGZvciBhbGwg ZnV0dXJlIHByb2R1Y3RzLiBMb25nIFB1YmxpY0Rlc2NyaXB0aW9ucyBhcmUgbm93Cj4gPiBpbmNs dWRlZCBldmVuIGZvciBjb21tb24gZXZlbnRzIGJlY2F1c2UgdGhpcyBjYW4gaW5jbHVkZSBwcm9k dWN0Cj4gPiBzcGVjaWZpYyBkZXRhaWxzLiBGb3Igbm9uIHZlcmJvc2UgbW9kZSB0aGUgY29tbW9u IEJyaWVmRGVzY3JpcHRpb25zCj4gPiByZW1haW4gdGhlIHNhbWUuCj4gPgo+ID4gWzFdOiBodHRw czovL2dpdGxhYi5hcm0uY29tL3RlbGVtZXRyeS1zb2x1dGlvbi90ZWxlbWV0cnktc29sdXRpb24K PiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBDbGFyayA8amFtZXMuY2xhcmtAYXJtLmNvbT4K PiAKPiBBY2tlZC1ieTogSWFuIFJvZ2VycyA8aXJvZ2Vyc0Bnb29nbGUuY29tPgoKVGhhbmtzLCBh cHBsaWVkLgoKLSBBcm5hbGRvCgogCj4gVGhhbmtzLAo+IElhbgo+IAo+ID4gLS0tCj4gPiAgLi4u L3tjb3J0ZXgtYTc2LW4xID0+IGNvcnRleC1hNzZ9L2JyYW5jaC5qc29uIHwgICAwCj4gPiAgLi4u L3tjb3J0ZXgtYTc2LW4xID0+IGNvcnRleC1hNzZ9L2J1cy5qc29uICAgIHwgICAwCj4gPiAgLi4u L3tjb3J0ZXgtYTc2LW4xID0+IGNvcnRleC1hNzZ9L2NhY2hlLmpzb24gIHwgICAwCj4gPiAgLi4u L2V4Y2VwdGlvbi5qc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAwCj4gPiAgLi4u L2luc3RydWN0aW9uLmpzb24gICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAwCj4gPiAgLi4u L3tjb3J0ZXgtYTc2LW4xID0+IGNvcnRleC1hNzZ9L21lbW9yeS5qc29uIHwgICAwCj4gPiAgLi4u L3BpcGVsaW5lLmpzb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAwCj4gPiAgLi4u L2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL2J1cy5qc29uICAgICAgIHwgIDE4ICsrCj4gPiAg Li4uL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL2V4Y2VwdGlvbi5qc29uIHwgIDYyICsrKysr Cj4gPiAgLi4uL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL2dlbmVyYWwuanNvbiAgIHwgICA2 ICsKPiA+ICAuLi4vYXJjaC9hcm02NC9hcm0vbmVvdmVyc2UtbjEvbDFkX2NhY2hlLmpzb24gfCAg NTAgKysrKwo+ID4gIC4uLi9hcmNoL2FybTY0L2FybS9uZW92ZXJzZS1uMS9sMWlfY2FjaGUuanNv biB8ICAxMCArCj4gPiAgLi4uL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL2wyX2NhY2hlLmpz b24gIHwgIDQ2ICsrKysKPiA+ICAuLi4vYXJjaC9hcm02NC9hcm0vbmVvdmVyc2UtbjEvbDNfY2Fj aGUuanNvbiAgfCAgMTggKysKPiA+ICAuLi4vYXJjaC9hcm02NC9hcm0vbmVvdmVyc2UtbjEvbGxf Y2FjaGUuanNvbiAgfCAgMTAgKwo+ID4gIC4uLi9hcmNoL2FybTY0L2FybS9uZW92ZXJzZS1uMS9t ZW1vcnkuanNvbiAgICB8ICAyMiArKwo+ID4gIC4uLi9hcmNoL2FybTY0L2FybS9uZW92ZXJzZS1u MS9tZXRyaWNzLmpzb24gICB8IDIxOSArKysrKysrKysrKysrKysrKysKPiA+ICAuLi4vYXJjaC9h cm02NC9hcm0vbmVvdmVyc2UtbjEvcmV0aXJlZC5qc29uICAgfCAgMjYgKysrCj4gPiAgLi4uL2Fy Y2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL3NwZS5qc29uICAgICAgIHwgIDE4ICsrCj4gPiAgLi4u L2FybTY0L2FybS9uZW92ZXJzZS1uMS9zcGVjX29wZXJhdGlvbi5qc29uIHwgMTAyICsrKysrKysr Cj4gPiAgLi4uL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL3N0YWxsLmpzb24gICAgIHwgIDEw ICsKPiA+ICAuLi4vYXJjaC9hcm02NC9hcm0vbmVvdmVyc2UtbjEvdGxiLmpzb24gICAgICAgfCAg NjYgKysrKysrCj4gPiAgdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvbWFwZmlsZS5j c3YgIHwgICA0ICstCj4gPiAgMjMgZmlsZXMgY2hhbmdlZCwgNjg1IGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCj4gPiAgcmVuYW1lIHRvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0 L2FybS97Y29ydGV4LWE3Ni1uMSA9PiBjb3J0ZXgtYTc2fS9icmFuY2guanNvbiAoMTAwJSkKPiA+ ICByZW5hbWUgdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL3tjb3J0ZXgtYTc2 LW4xID0+IGNvcnRleC1hNzZ9L2J1cy5qc29uICgxMDAlKQo+ID4gIHJlbmFtZSB0b29scy9wZXJm L3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0ve2NvcnRleC1hNzYtbjEgPT4gY29ydGV4LWE3Nn0v Y2FjaGUuanNvbiAoMTAwJSkKPiA+ICByZW5hbWUgdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gv YXJtNjQvYXJtL3tjb3J0ZXgtYTc2LW4xID0+IGNvcnRleC1hNzZ9L2V4Y2VwdGlvbi5qc29uICgx MDAlKQo+ID4gIHJlbmFtZSB0b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0ve2Nv cnRleC1hNzYtbjEgPT4gY29ydGV4LWE3Nn0vaW5zdHJ1Y3Rpb24uanNvbiAoMTAwJSkKPiA+ICBy ZW5hbWUgdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL3tjb3J0ZXgtYTc2LW4x ID0+IGNvcnRleC1hNzZ9L21lbW9yeS5qc29uICgxMDAlKQo+ID4gIHJlbmFtZSB0b29scy9wZXJm L3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0ve2NvcnRleC1hNzYtbjEgPT4gY29ydGV4LWE3Nn0v cGlwZWxpbmUuanNvbiAoMTAwJSkKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9w bXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL2J1cy5qc29uCj4gPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9uZW92ZXJz ZS1uMS9leGNlcHRpb24uanNvbgo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9wZXJmL3Bt dS1ldmVudHMvYXJjaC9hcm02NC9hcm0vbmVvdmVyc2UtbjEvZ2VuZXJhbC5qc29uCj4gPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9uZW92 ZXJzZS1uMS9sMWRfY2FjaGUuanNvbgo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9wZXJm L3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0vbmVvdmVyc2UtbjEvbDFpX2NhY2hlLmpzb24KPiA+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJt L25lb3ZlcnNlLW4xL2wyX2NhY2hlLmpzb24KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMv cGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL2wzX2NhY2hlLmpzb24K PiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQv YXJtL25lb3ZlcnNlLW4xL2xsX2NhY2hlLmpzb24KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9v bHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL21lbW9yeS5qc29u Cj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0 L2FybS9uZW92ZXJzZS1uMS9tZXRyaWNzLmpzb24KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9v bHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL3JldGlyZWQuanNv bgo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02 NC9hcm0vbmVvdmVyc2UtbjEvc3BlLmpzb24KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMv cGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL3NwZWNfb3BlcmF0aW9u Lmpzb24KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gv YXJtNjQvYXJtL25lb3ZlcnNlLW4xL3N0YWxsLmpzb24KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQg dG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL3RsYi5qc29u Cj4gPgo+ID4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2Fy bS9jb3J0ZXgtYTc2LW4xL2JyYW5jaC5qc29uIGIvdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gv YXJtNjQvYXJtL2NvcnRleC1hNzYvYnJhbmNoLmpzb24KPiA+IHNpbWlsYXJpdHkgaW5kZXggMTAw JQo+ID4gcmVuYW1lIGZyb20gdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL2Nv cnRleC1hNzYtbjEvYnJhbmNoLmpzb24KPiA+IHJlbmFtZSB0byB0b29scy9wZXJmL3BtdS1ldmVu dHMvYXJjaC9hcm02NC9hcm0vY29ydGV4LWE3Ni9icmFuY2guanNvbgo+ID4gZGlmZiAtLWdpdCBh L3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9jb3J0ZXgtYTc2LW4xL2J1cy5q c29uIGIvdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL2NvcnRleC1hNzYvYnVz Lmpzb24KPiA+IHNpbWlsYXJpdHkgaW5kZXggMTAwJQo+ID4gcmVuYW1lIGZyb20gdG9vbHMvcGVy Zi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL2NvcnRleC1hNzYtbjEvYnVzLmpzb24KPiA+IHJl bmFtZSB0byB0b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0vY29ydGV4LWE3Ni9i dXMuanNvbgo+ID4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0 L2FybS9jb3J0ZXgtYTc2LW4xL2NhY2hlLmpzb24gYi90b29scy9wZXJmL3BtdS1ldmVudHMvYXJj aC9hcm02NC9hcm0vY29ydGV4LWE3Ni9jYWNoZS5qc29uCj4gPiBzaW1pbGFyaXR5IGluZGV4IDEw MCUKPiA+IHJlbmFtZSBmcm9tIHRvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9j b3J0ZXgtYTc2LW4xL2NhY2hlLmpzb24KPiA+IHJlbmFtZSB0byB0b29scy9wZXJmL3BtdS1ldmVu dHMvYXJjaC9hcm02NC9hcm0vY29ydGV4LWE3Ni9jYWNoZS5qc29uCj4gPiBkaWZmIC0tZ2l0IGEv dG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL2NvcnRleC1hNzYtbjEvZXhjZXB0 aW9uLmpzb24gYi90b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0vY29ydGV4LWE3 Ni9leGNlcHRpb24uanNvbgo+ID4gc2ltaWxhcml0eSBpbmRleCAxMDAlCj4gPiByZW5hbWUgZnJv bSB0b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0vY29ydGV4LWE3Ni1uMS9leGNl cHRpb24uanNvbgo+ID4gcmVuYW1lIHRvIHRvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0 L2FybS9jb3J0ZXgtYTc2L2V4Y2VwdGlvbi5qc29uCj4gPiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVy Zi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL2NvcnRleC1hNzYtbjEvaW5zdHJ1Y3Rpb24uanNv biBiL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9jb3J0ZXgtYTc2L2luc3Ry dWN0aW9uLmpzb24KPiA+IHNpbWlsYXJpdHkgaW5kZXggMTAwJQo+ID4gcmVuYW1lIGZyb20gdG9v bHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL2NvcnRleC1hNzYtbjEvaW5zdHJ1Y3Rp b24uanNvbgo+ID4gcmVuYW1lIHRvIHRvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2Fy bS9jb3J0ZXgtYTc2L2luc3RydWN0aW9uLmpzb24KPiA+IGRpZmYgLS1naXQgYS90b29scy9wZXJm L3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0vY29ydGV4LWE3Ni1uMS9tZW1vcnkuanNvbiBiL3Rv b2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9jb3J0ZXgtYTc2L21lbW9yeS5qc29u Cj4gPiBzaW1pbGFyaXR5IGluZGV4IDEwMCUKPiA+IHJlbmFtZSBmcm9tIHRvb2xzL3BlcmYvcG11 LWV2ZW50cy9hcmNoL2FybTY0L2FybS9jb3J0ZXgtYTc2LW4xL21lbW9yeS5qc29uCj4gPiByZW5h bWUgdG8gdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL2NvcnRleC1hNzYvbWVt b3J5Lmpzb24KPiA+IGRpZmYgLS1naXQgYS90b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02 NC9hcm0vY29ydGV4LWE3Ni1uMS9waXBlbGluZS5qc29uIGIvdG9vbHMvcGVyZi9wbXUtZXZlbnRz L2FyY2gvYXJtNjQvYXJtL2NvcnRleC1hNzYvcGlwZWxpbmUuanNvbgo+ID4gc2ltaWxhcml0eSBp bmRleCAxMDAlCj4gPiByZW5hbWUgZnJvbSB0b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02 NC9hcm0vY29ydGV4LWE3Ni1uMS9waXBlbGluZS5qc29uCj4gPiByZW5hbWUgdG8gdG9vbHMvcGVy Zi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL2NvcnRleC1hNzYvcGlwZWxpbmUuanNvbgo+ID4g ZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9uZW92ZXJz ZS1uMS9idXMuanNvbiBiL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9uZW92 ZXJzZS1uMS9idXMuanNvbgo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAw MDAwMDAwMC4uMmUxMWE4YzRhNDg0Cj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi90b29scy9w ZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0vbmVvdmVyc2UtbjEvYnVzLmpzb24KPiA+IEBA IC0wLDAgKzEsMTggQEAKPiA+ICtbCj4gPiArICAgIHsKPiA+ICsgICAgICAgICJBcmNoU3RkRXZl bnQiOiAiQlVTX0FDQ0VTUyIsCj4gPiArICAgICAgICAiUHVibGljRGVzY3JpcHRpb24iOiAiQ291 bnRzIG1lbW9yeSB0cmFuc2FjdGlvbnMgaXNzdWVkIGJ5IHRoZSBDUFUgdG8gdGhlIGV4dGVybmFs IGJ1cywgaW5jbHVkaW5nIHNub29wIHJlcXVlc3RzIGFuZCBzbm9vcCByZXNwb25zZXMuIEVhY2gg YmVhdCBvZiBkYXRhIGlzIGNvdW50ZWQgaW5kaXZpZHVhbGx5LiIKPiA+ICsgICAgfSwKPiA+ICsg ICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRFdmVudCI6ICJCVVNfQ1lDTEVTIiwKPiA+ICsgICAg ICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgYnVzIGN5Y2xlcyBpbiB0aGUgQ1BVLiBC dXMgY3ljbGVzIHJlcHJlc2VudCBhIGNsb2NrIGN5Y2xlIGluIHdoaWNoIGEgdHJhbnNhY3Rpb24g Y291bGQgYmUgc2VudCBvciByZWNlaXZlZCBvbiB0aGUgaW50ZXJmYWNlIGZyb20gdGhlIENQVSB0 byB0aGUgZXh0ZXJuYWwgYnVzLiBTaW5jZSB0aGF0IGludGVyZmFjZSBpcyBkcml2ZW4gYXQgdGhl IHNhbWUgY2xvY2sgc3BlZWQgYXMgdGhlIENQVSwgdGhpcyBldmVudCBpcyBhIGR1cGxpY2F0ZSBv ZiBDUFVfQ1lDTEVTLiIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hT dGRFdmVudCI6ICJCVVNfQUNDRVNTX1JEIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlv biI6ICJDb3VudHMgbWVtb3J5IHJlYWQgdHJhbnNhY3Rpb25zIHNlZW4gb24gdGhlIGV4dGVybmFs IGJ1cy4gRWFjaCBiZWF0IG9mIGRhdGEgaXMgY291bnRlZCBpbmRpdmlkdWFsbHkuIgo+ID4gKyAg ICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIkJVU19BQ0NFU1Nf V1IiLAo+ID4gKyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBtZW1vcnkgd3Jp dGUgdHJhbnNhY3Rpb25zIHNlZW4gb24gdGhlIGV4dGVybmFsIGJ1cy4gRWFjaCBiZWF0IG9mIGRh dGEgaXMgY291bnRlZCBpbmRpdmlkdWFsbHkuIgo+ID4gKyAgICB9Cj4gPiArXQo+ID4gZGlmZiAt LWdpdCBhL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9uZW92ZXJzZS1uMS9l eGNlcHRpb24uanNvbiBiL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9uZW92 ZXJzZS1uMS9leGNlcHRpb24uanNvbgo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4 IDAwMDAwMDAwMDAwMC4uNDQwNGI4ZTkxNjkwCj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi90 b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0vbmVvdmVyc2UtbjEvZXhjZXB0aW9u Lmpzb24KPiA+IEBAIC0wLDAgKzEsNjIgQEAKPiA+ICtbCj4gPiArICAgIHsKPiA+ICsgICAgICAg ICJBcmNoU3RkRXZlbnQiOiAiRVhDX1RBS0VOIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlw dGlvbiI6ICJDb3VudHMgYW55IHRha2VuIGFyY2hpdGVjdHVyYWxseSB2aXNpYmxlIGV4Y2VwdGlv bnMgc3VjaCBhcyBJUlEsIEZJUSwgU0Vycm9yLCBhbmQgb3RoZXIgc3luY2hyb25vdXMgZXhjZXB0 aW9ucy4gRXhjZXB0aW9ucyBhcmUgY291bnRlZCB3aGV0aGVyIG9yIG5vdCB0aGV5IGFyZSB0YWtl biBsb2NhbGx5LiIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRF dmVudCI6ICJFWENfUkVUVVJOIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJD b3VudHMgYW55IGFyY2hpdGVjdHVyYWxseSBleGVjdXRlZCBleGNlcHRpb24gcmV0dXJuIGluc3Ry dWN0aW9ucy4gRWc6IEFBcmNoNjQ6IEVSRVQiCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsg ICAgICAgICJBcmNoU3RkRXZlbnQiOiAiRVhDX1VOREVGIiwKPiA+ICsgICAgICAgICJQdWJsaWNE ZXNjcmlwdGlvbiI6ICJDb3VudHMgdGhlIG51bWJlciBvZiBzeW5jaHJvbm91cyBleGNlcHRpb25z IHdoaWNoIGFyZSB0YWtlbiBsb2NhbGx5IHRoYXQgYXJlIGR1ZSB0byBhdHRlbXB0aW5nIHRvIGV4 ZWN1dGUgYW4gaW5zdHJ1Y3Rpb24gdGhhdCBpcyBVTkRFRklORUQuIEF0dGVtcHRpbmcgdG8gZXhl Y3V0ZSBpbnN0cnVjdGlvbiBiaXQgcGF0dGVybnMgdGhhdCBoYXZlIG5vdCBiZWVuIGFsbG9jYXRl ZC4gQXR0ZW1wdGluZyB0byBleGVjdXRlIGluc3RydWN0aW9ucyB3aGVuIHRoZXkgYXJlIGRpc2Fi bGVkLiBBdHRlbXB0aW5nIHRvIGV4ZWN1dGUgaW5zdHJ1Y3Rpb25zIGF0IGFuIGluYXBwcm9wcmlh dGUgRXhjZXB0aW9uIGxldmVsLiBBdHRlbXB0aW5nIHRvIGV4ZWN1dGUgYW4gaW5zdHJ1Y3Rpb24g d2hlbiB0aGUgdmFsdWUgb2YgUFNUQVRFLklMIGlzIDEuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7 Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIkVYQ19TVkMiLAo+ID4gKyAgICAgICAgIlB1 YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBTVkMgZXhjZXB0aW9ucyB0YWtlbiBsb2NhbGx5LiIK PiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRFdmVudCI6ICJFWENf UEFCT1JUIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgc3luY2hy b25vdXMgZXhjZXB0aW9ucyB0aGF0IGFyZSB0YWtlbiBsb2NhbGx5IGFuZCBjYXVzZWQgYnkgSW5z dHJ1Y3Rpb24gQWJvcnRzLiIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFy Y2hTdGRFdmVudCI6ICJFWENfREFCT1JUIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlv biI6ICJDb3VudHMgZXhjZXB0aW9ucyB0aGF0IGFyZSB0YWtlbiBsb2NhbGx5IGFuZCBhcmUgY2F1 c2VkIGJ5IGRhdGEgYWJvcnRzIG9yIFNFcnJvcnMuIENvbmRpdGlvbnMgdGhhdCBjb3VsZCBjYXVz ZSB0aG9zZSBleGNlcHRpb25zIGFyZSBhdHRlbXB0aW5nIHRvIHJlYWQgb3Igd3JpdGUgbWVtb3J5 IHdoZXJlIHRoZSBNTVUgZ2VuZXJhdGVzIGEgZmF1bHQsIGF0dGVtcHRpbmcgdG8gcmVhZCBvciB3 cml0ZSBtZW1vcnkgd2l0aCBhIG1pc2FsaWduZWQgYWRkcmVzcywgaW50ZXJydXB0cyBmcm9tIHRo ZSBuU0VJIGlucHV0cyBhbmQgaW50ZXJuYWxseSBnZW5lcmF0ZWQgU0Vycm9ycy4iCj4gPiArICAg IH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAgICJBcmNoU3RkRXZlbnQiOiAiRVhDX0lSUSIsCj4g PiArICAgICAgICAiUHVibGljRGVzY3JpcHRpb24iOiAiQ291bnRzIElSUSBleGNlcHRpb25zIGlu Y2x1ZGluZyB0aGUgdmlydHVhbCBJUlFzIHRoYXQgYXJlIHRha2VuIGxvY2FsbHkuIgo+ID4gKyAg ICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIkVYQ19GSVEiLAo+ ID4gKyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBGSVEgZXhjZXB0aW9ucyBp bmNsdWRpbmcgdGhlIHZpcnR1YWwgRklRcyB0aGF0IGFyZSB0YWtlbiBsb2NhbGx5LiIKPiA+ICsg ICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRFdmVudCI6ICJFWENfU01DIiwK PiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgU01DIGV4Y2VwdGlvbnMg dGFrZSB0byBFTDMuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0 ZEV2ZW50IjogIkVYQ19IVkMiLAo+ID4gKyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNv dW50cyBIVkMgZXhjZXB0aW9ucyB0YWtlbiB0byBFTDIuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7 Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIkVYQ19UUkFQX1BBQk9SVCIsCj4gPiArICAg ICAgICAiUHVibGljRGVzY3JpcHRpb24iOiAiQ291bnRzIGV4Y2VwdGlvbnMgd2hpY2ggYXJlIHRy YXBzIG5vdCB0YWtlbiBsb2NhbGx5IGFuZCBhcmUgY2F1c2VkIGJ5IEluc3RydWN0aW9uIEFib3J0 cy4gRm9yIGV4YW1wbGUsIGF0dGVtcHRpbmcgdG8gZXhlY3V0ZSBhbiBpbnN0cnVjdGlvbiB3aXRo IGEgbWlzYWxpZ25lZCBQQy4iCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAgICJB cmNoU3RkRXZlbnQiOiAiRVhDX1RSQVBfREFCT1JUIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNj cmlwdGlvbiI6ICJDb3VudHMgZXhjZXB0aW9ucyB3aGljaCBhcmUgdHJhcHMgbm90IHRha2VuIGxv Y2FsbHkgYW5kIGFyZSBjYXVzZWQgYnkgRGF0YSBBYm9ydHMgb3IgU0Vycm9yIGludGVycnVwdHMu IENvbmRpdGlvbnMgdGhhdCBjb3VsZCBjYXVzZSB0aG9zZSBleGNlcHRpb25zIGFyZTpcblxuMS4g QXR0ZW1wdGluZyB0byByZWFkIG9yIHdyaXRlIG1lbW9yeSB3aGVyZSB0aGUgTU1VIGdlbmVyYXRl cyBhIGZhdWx0LFxuMi4gQXR0ZW1wdGluZyB0byByZWFkIG9yIHdyaXRlIG1lbW9yeSB3aXRoIGEg bWlzYWxpZ25lZCBhZGRyZXNzLFxuMy4gSW50ZXJydXB0cyBmcm9tIHRoZSBTRUkgaW5wdXQuXG40 LiBpbnRlcm5hbGx5IGdlbmVyYXRlZCBTRXJyb3JzLiIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ ID4gKyAgICAgICAgIkFyY2hTdGRFdmVudCI6ICJFWENfVFJBUF9PVEhFUiIsCj4gPiArICAgICAg ICAiUHVibGljRGVzY3JpcHRpb24iOiAiQ291bnRzIHRoZSBudW1iZXIgb2Ygc3luY2hyb25vdXMg dHJhcCBleGNlcHRpb25zIHdoaWNoIGFyZSBub3QgdGFrZW4gbG9jYWxseSBhbmQgYXJlIG5vdCBT VkMsIFNNQywgSFZDLCBkYXRhIGFib3J0cywgSW5zdHJ1Y3Rpb24gQWJvcnRzLCBvciBpbnRlcnJ1 cHRzLiIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRFdmVudCI6 ICJFWENfVFJBUF9JUlEiLAo+ID4gKyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50 cyBJUlEgZXhjZXB0aW9ucyBpbmNsdWRpbmcgdGhlIHZpcnR1YWwgSVJRcyB0aGF0IGFyZSBub3Qg dGFrZW4gbG9jYWxseS4iCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAgICJBcmNo U3RkRXZlbnQiOiAiRVhDX1RSQVBfRklRIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlv biI6ICJDb3VudHMgRklRcyB3aGljaCBhcmUgbm90IHRha2VuIGxvY2FsbHkgYnV0IHRha2VuIGZy b20gRUwwLCBFTDEsXG4gb3IgRUwyIHRvIEVMMyAod2hpY2ggd291bGQgYmUgdGhlIG5vcm1hbCBi ZWhhdmlvciBmb3IgRklRcyB3aGVuIG5vdCBleGVjdXRpbmdcbiBpbiBFTDMpLiIKPiA+ICsgICAg fQo+ID4gK10KPiA+IGRpZmYgLS1naXQgYS90b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02 NC9hcm0vbmVvdmVyc2UtbjEvZ2VuZXJhbC5qc29uIGIvdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2Fy Y2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL2dlbmVyYWwuanNvbgo+ID4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uMjBmYWRhOTVlZjk3Cj4gPiAtLS0gL2Rldi9u dWxsCj4gPiArKysgYi90b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0vbmVvdmVy c2UtbjEvZ2VuZXJhbC5qc29uCj4gPiBAQCAtMCwwICsxLDYgQEAKPiA+ICtbCj4gPiArICAgIHsK PiA+ICsgICAgICAgICJBcmNoU3RkRXZlbnQiOiAiQ1BVX0NZQ0xFUyIsCj4gPiArICAgICAgICAi UHVibGljRGVzY3JpcHRpb24iOiAiQ291bnRzIENQVSBjbG9jayBjeWNsZXMgKG5vdCB0aW1lciBj eWNsZXMpLiBUaGUgY2xvY2sgbWVhc3VyZWQgYnkgdGhpcyBldmVudCBpcyBkZWZpbmVkIGFzIHRo ZSBwaHlzaWNhbCBjbG9jayBkcml2aW5nIHRoZSBDUFUgbG9naWMuIgo+ID4gKyAgICB9Cj4gPiAr XQo+ID4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9u ZW92ZXJzZS1uMS9sMWRfY2FjaGUuanNvbiBiL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2Fy bTY0L2FybS9uZW92ZXJzZS1uMS9sMWRfY2FjaGUuanNvbgo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uNmNkMGIzYmE1MDEwCj4gPiAtLS0gL2Rldi9udWxs Cj4gPiArKysgYi90b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0vbmVvdmVyc2Ut bjEvbDFkX2NhY2hlLmpzb24KPiA+IEBAIC0wLDAgKzEsNTAgQEAKPiA+ICtbCj4gPiArICAgIHsK PiA+ICsgICAgICAgICJBcmNoU3RkRXZlbnQiOiAiTDFEX0NBQ0hFX1JFRklMTCIsCj4gPiArICAg ICAgICAiUHVibGljRGVzY3JpcHRpb24iOiAiQ291bnRzIGxldmVsIDEgZGF0YSBjYWNoZSByZWZp bGxzIGNhdXNlZCBieSBzcGVjdWxhdGl2ZWx5IGV4ZWN1dGVkIGxvYWQgb3Igc3RvcmUgb3BlcmF0 aW9ucyB0aGF0IG1pc3NlZCBpbiB0aGUgbGV2ZWwgMSBkYXRhIGNhY2hlLiBUaGlzIGV2ZW50IG9u bHkgY291bnRzIG9uZSBldmVudCBwZXIgY2FjaGUgbGluZS4gVGhpcyBldmVudCBkb2VzIG5vdCBj b3VudCBjYWNoZSBsaW5lIGFsbG9jYXRpb25zIGZyb20gcHJlbG9hZCBpbnN0cnVjdGlvbnMgb3Ig ZnJvbSBoYXJkd2FyZSBjYWNoZSBwcmVmZXRjaGluZy4iCj4gPiArICAgIH0sCj4gPiArICAgIHsK PiA+ICsgICAgICAgICJBcmNoU3RkRXZlbnQiOiAiTDFEX0NBQ0hFIiwKPiA+ICsgICAgICAgICJQ dWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgbGV2ZWwgMSBkYXRhIGNhY2hlIGFjY2Vzc2VzIGZy b20gYW55IGxvYWQvc3RvcmUgb3BlcmF0aW9ucy4gQXRvbWljIG9wZXJhdGlvbnMgdGhhdCByZXNv bHZlIGluIHRoZSBDUFVzIGNhY2hlcyAobmVhciBhdG9taWMgb3BlcmF0aW9ucykgY291bnRzIGFz IGJvdGggYSB3cml0ZSBhY2Nlc3MgYW5kIHJlYWQgYWNjZXNzLiBFYWNoIGFjY2VzcyB0byBhIGNh Y2hlIGxpbmUgaXMgY291bnRlZCBpbmNsdWRpbmcgdGhlIG11bHRpcGxlIGFjY2Vzc2VzIGNhdXNl ZCBieSBzaW5nbGUgaW5zdHJ1Y3Rpb25zIHN1Y2ggYXMgTERNIG9yIFNUTS4gRWFjaCBhY2Nlc3Mg dG8gb3RoZXIgbGV2ZWwgMSBkYXRhIG9yIHVuaWZpZWQgbWVtb3J5IHN0cnVjdHVyZXMsIGZvciBl eGFtcGxlIHJlZmlsbCBidWZmZXJzLCB3cml0ZSBidWZmZXJzLCBhbmQgd3JpdGUtYmFjayBidWZm ZXJzLCBhcmUgYWxzbyBjb3VudGVkLiIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAg ICAgIkFyY2hTdGRFdmVudCI6ICJMMURfQ0FDSEVfV0IiLAo+ID4gKyAgICAgICAgIlB1YmxpY0Rl c2NyaXB0aW9uIjogIkNvdW50cyB3cml0ZS1iYWNrcyBvZiBkaXJ0eSBkYXRhIGZyb20gdGhlIEwx IGRhdGEgY2FjaGUgdG8gdGhlIEwyIGNhY2hlLiBUaGlzIG9jY3VycyB3aGVuIGVpdGhlciBhIGRp cnR5IGNhY2hlIGxpbmUgaXMgZXZpY3RlZCBmcm9tIEwxIGRhdGEgY2FjaGUgYW5kIGFsbG9jYXRl ZCBpbiB0aGUgTDIgY2FjaGUgb3IgZGlydHkgZGF0YSBpcyB3cml0dGVuIHRvIHRoZSBMMiBhbmQg cG9zc2libHkgdG8gdGhlIG5leHQgbGV2ZWwgb2YgY2FjaGUuIFRoaXMgZXZlbnQgY291bnRzIGJv dGggdmljdGltIGNhY2hlIGxpbmUgZXZpY3Rpb25zIGFuZCBjYWNoZSB3cml0ZS1iYWNrcyBmcm9t IHNub29wcyBvciBjYWNoZSBtYWludGVuYW5jZSBvcGVyYXRpb25zLiBUaGUgZm9sbG93aW5nIGNh Y2hlIG9wZXJhdGlvbnMgYXJlIG5vdCBjb3VudGVkOlxuXG4xLiBJbnZhbGlkYXRpb25zIHdoaWNo IGRvIG5vdCByZXN1bHQgaW4gZGF0YSBiZWluZyB0cmFuc2ZlcnJlZCBvdXQgb2YgdGhlIEwxIChz dWNoIGFzIGV2aWN0aW9ucyBvZiBjbGVhbiBkYXRhKSxcbjIuIEZ1bGwgbGluZSB3cml0ZXMgd2hp Y2ggd3JpdGUgdG8gTDIgd2l0aG91dCB3cml0aW5nIEwxLCBzdWNoIGFzIHdyaXRlIHN0cmVhbWlu ZyBtb2RlLiIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRFdmVu dCI6ICJMMURfQ0FDSEVfUkQiLAo+ID4gKyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNv dW50cyBsZXZlbCAxIGRhdGEgY2FjaGUgYWNjZXNzZXMgZnJvbSBhbnkgbG9hZCBvcGVyYXRpb24u IEF0b21pYyBsb2FkIG9wZXJhdGlvbnMgdGhhdCByZXNvbHZlIGluIHRoZSBDUFVzIGNhY2hlcyBj b3VudHMgYXMgYm90aCBhIHdyaXRlIGFjY2VzcyBhbmQgcmVhZCBhY2Nlc3MuIgo+ID4gKyAgICB9 LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIkwxRF9DQUNIRV9XUiIs Cj4gPiArICAgICAgICAiUHVibGljRGVzY3JpcHRpb24iOiAiQ291bnRzIGxldmVsIDEgZGF0YSBj YWNoZSBhY2Nlc3NlcyBnZW5lcmF0ZWQgYnkgc3RvcmUgb3BlcmF0aW9ucy4gVGhpcyBldmVudCBh bHNvIGNvdW50cyBhY2Nlc3NlcyBjYXVzZWQgYnkgYSBEQyBaVkEgKGRhdGEgY2FjaGUgemVybywg c3BlY2lmaWVkIGJ5IHZpcnR1YWwgYWRkcmVzcykgaW5zdHJ1Y3Rpb24uIE5lYXIgYXRvbWljIG9w ZXJhdGlvbnMgdGhhdCByZXNvbHZlIGluIHRoZSBDUFVzIGNhY2hlcyBjb3VudCBhcyBhIHdyaXRl IGFjY2VzcyBhbmQgcmVhZCBhY2Nlc3MuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAg ICAgICAiQXJjaFN0ZEV2ZW50IjogIkwxRF9DQUNIRV9SRUZJTExfUkQiLAo+ID4gKyAgICAgICAg IlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBsZXZlbCAxIGRhdGEgY2FjaGUgcmVmaWxscyBj YXVzZWQgYnkgc3BlY3VsYXRpdmVseSBleGVjdXRlZCBsb2FkIGluc3RydWN0aW9ucyB3aGVyZSB0 aGUgbWVtb3J5IHJlYWQgb3BlcmF0aW9uIG1pc3NlcyBpbiB0aGUgbGV2ZWwgMSBkYXRhIGNhY2hl LiBUaGlzIGV2ZW50IG9ubHkgY291bnRzIG9uZSBldmVudCBwZXIgY2FjaGUgbGluZS4iCj4gPiAr ICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAgICJBcmNoU3RkRXZlbnQiOiAiTDFEX0NBQ0hF X1JFRklMTF9XUiIsCj4gPiArICAgICAgICAiUHVibGljRGVzY3JpcHRpb24iOiAiQ291bnRzIGxl dmVsIDEgZGF0YSBjYWNoZSByZWZpbGxzIGNhdXNlZCBieSBzcGVjdWxhdGl2ZWx5IGV4ZWN1dGVk IHN0b3JlIGluc3RydWN0aW9ucyB3aGVyZSB0aGUgbWVtb3J5IHdyaXRlIG9wZXJhdGlvbiBtaXNz ZXMgaW4gdGhlIGxldmVsIDEgZGF0YSBjYWNoZS4gVGhpcyBldmVudCBvbmx5IGNvdW50cyBvbmUg ZXZlbnQgcGVyIGNhY2hlIGxpbmUuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAg ICAiQXJjaFN0ZEV2ZW50IjogIkwxRF9DQUNIRV9SRUZJTExfSU5ORVIiLAo+ID4gKyAgICAgICAg IlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBsZXZlbCAxIGRhdGEgY2FjaGUgcmVmaWxscyB3 aGVyZSB0aGUgY2FjaGUgbGluZSBkYXRhIGNhbWUgZnJvbSBjYWNoZXMgaW5zaWRlIHRoZSBpbW1l ZGlhdGUgY2x1c3RlciBvZiB0aGUgY29yZS4iCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsg ICAgICAgICJBcmNoU3RkRXZlbnQiOiAiTDFEX0NBQ0hFX1JFRklMTF9PVVRFUiIsCj4gPiArICAg ICAgICAiUHVibGljRGVzY3JpcHRpb24iOiAiQ291bnRzIGxldmVsIDEgZGF0YSBjYWNoZSByZWZp bGxzIGZvciB3aGljaCB0aGUgY2FjaGUgbGluZSBkYXRhIGNhbWUgZnJvbSBvdXRzaWRlIHRoZSBp bW1lZGlhdGUgY2x1c3RlciBvZiB0aGUgY29yZSwgbGlrZSBhbiBTTEMgaW4gdGhlIHN5c3RlbSBp bnRlcmNvbm5lY3Qgb3IgRFJBTS4iCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAg ICJBcmNoU3RkRXZlbnQiOiAiTDFEX0NBQ0hFX1dCX1ZJQ1RJTSIsCj4gPiArICAgICAgICAiUHVi bGljRGVzY3JpcHRpb24iOiAiQ291bnRzIGRpcnR5IGNhY2hlIGxpbmUgZXZpY3Rpb25zIGZyb20g dGhlIGxldmVsIDEgZGF0YSBjYWNoZSBjYXVzZWQgYnkgYSBuZXcgY2FjaGUgbGluZSBhbGxvY2F0 aW9uLiBUaGlzIGV2ZW50IGRvZXMgbm90IGNvdW50IGV2aWN0aW9ucyBjYXVzZWQgYnkgY2FjaGUg bWFpbnRlbmFuY2Ugb3BlcmF0aW9ucy4iCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAg ICAgICJBcmNoU3RkRXZlbnQiOiAiTDFEX0NBQ0hFX1dCX0NMRUFOIiwKPiA+ICsgICAgICAgICJQ dWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgd3JpdGUtYmFja3MgZnJvbSB0aGUgbGV2ZWwgMSBk YXRhIGNhY2hlIHRoYXQgYXJlIGEgcmVzdWx0IG9mIGEgY29oZXJlbmN5IG9wZXJhdGlvbiBtYWRl IGJ5IGFub3RoZXIgQ1BVLiBFdmVudCBjb3VudCBpbmNsdWRlcyBjYWNoZSBtYWludGVuYW5jZSBv cGVyYXRpb25zLiIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRF dmVudCI6ICJMMURfQ0FDSEVfSU5WQUwiLAo+ID4gKyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9u IjogIkNvdW50cyBlYWNoIGV4cGxpY2l0IGludmFsaWRhdGlvbiBvZiBhIGNhY2hlIGxpbmUgaW4g dGhlIGxldmVsIDEgZGF0YSBjYWNoZSBjYXVzZWQgYnk6XG5cbi0gQ2FjaGUgTWFpbnRlbmFuY2Ug T3BlcmF0aW9ucyAoQ01PKSB0aGF0IG9wZXJhdGUgYnkgYSB2aXJ0dWFsIGFkZHJlc3MuXG4tIEJy b2FkY2FzdCBjYWNoZSBjb2hlcmVuY3kgb3BlcmF0aW9ucyBmcm9tIGFub3RoZXIgQ1BVIGluIHRo ZSBzeXN0ZW0uXG5cblRoaXMgZXZlbnQgZG9lcyBub3QgY291bnQgZm9yIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczpcblxuMS4gQSBjYWNoZSByZWZpbGwgaW52YWxpZGF0ZXMgYSBjYWNoZSBsaW5l LlxuMi4gQSBDTU8gd2hpY2ggaXMgZXhlY3V0ZWQgb24gdGhhdCBDUFUgYW5kIGludmFsaWRhdGVz IGEgY2FjaGUgbGluZSBzcGVjaWZpZWQgYnkgc2V0L3dheS5cblxuTm90ZSB0aGF0IENNT3MgdGhh dCBvcGVyYXRlIGJ5IHNldC93YXkgY2Fubm90IGJlIGJyb2FkY2FzdCBmcm9tIG9uZSBDUFUgdG8g YW5vdGhlci4iCj4gPiArICAgIH0KPiA+ICtdCj4gPiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9w bXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL2wxaV9jYWNoZS5qc29uIGIvdG9v bHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL2wxaV9jYWNoZS5q c29uCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5lNzE5 YjZlN2ZhNzcKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL3Rvb2xzL3BlcmYvcG11LWV2ZW50 cy9hcmNoL2FybTY0L2FybS9uZW92ZXJzZS1uMS9sMWlfY2FjaGUuanNvbgo+ID4gQEAgLTAsMCAr MSwxMCBAQAo+ID4gK1sKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRFdmVudCI6ICJM MUlfQ0FDSEVfUkVGSUxMIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3Vu dHMgY2FjaGUgbGluZSByZWZpbGxzIGluIHRoZSBsZXZlbCAxIGluc3RydWN0aW9uIGNhY2hlIGNh dXNlZCBieSBhIG1pc3NlZCBpbnN0cnVjdGlvbiBmZXRjaC4gSW5zdHJ1Y3Rpb24gZmV0Y2hlcyBt YXkgaW5jbHVkZSBhY2Nlc3NpbmcgbXVsdGlwbGUgaW5zdHJ1Y3Rpb25zLCBidXQgdGhlIHNpbmds ZSBjYWNoZSBsaW5lIGFsbG9jYXRpb24gaXMgY291bnRlZCBvbmNlLiIKPiA+ICsgICAgfSwKPiA+ ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRFdmVudCI6ICJMMUlfQ0FDSEUiLAo+ID4gKyAg ICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBpbnN0cnVjdGlvbiBmZXRjaGVzIHdo aWNoIGFjY2VzcyB0aGUgbGV2ZWwgMSBpbnN0cnVjdGlvbiBjYWNoZS4gSW5zdHJ1Y3Rpb24gY2Fj aGUgYWNjZXNzZXMgY2F1c2VkIGJ5IGNhY2hlIG1haW50ZW5hbmNlIG9wZXJhdGlvbnMgYXJlIG5v dCBjb3VudGVkLiIKPiA+ICsgICAgfQo+ID4gK10KPiA+IGRpZmYgLS1naXQgYS90b29scy9wZXJm L3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0vbmVvdmVyc2UtbjEvbDJfY2FjaGUuanNvbiBiL3Rv b2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9uZW92ZXJzZS1uMS9sMl9jYWNoZS5q c29uCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi4yZjYw OTk4ODlkZTEKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL3Rvb2xzL3BlcmYvcG11LWV2ZW50 cy9hcmNoL2FybTY0L2FybS9uZW92ZXJzZS1uMS9sMl9jYWNoZS5qc29uCj4gPiBAQCAtMCwwICsx LDQ2IEBACj4gPiArWwo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIkwy RF9DQUNIRSIsCj4gPiArICAgICAgICAiUHVibGljRGVzY3JpcHRpb24iOiAiQ291bnRzIGxldmVs IDIgY2FjaGUgYWNjZXNzZXMuIGxldmVsIDIgY2FjaGUgaXMgYSB1bmlmaWVkIGNhY2hlIGZvciBk YXRhIGFuZCBpbnN0cnVjdGlvbiBhY2Nlc3Nlcy4gQWNjZXNzZXMgYXJlIGZvciBtaXNzZXMgaW4g dGhlIGZpcnN0IGxldmVsIGNhY2hlcyBvciB0cmFuc2xhdGlvbiByZXNvbHV0aW9ucyBkdWUgdG8g YWNjZXNzZXMuIFRoaXMgZXZlbnQgYWxzbyBjb3VudHMgd3JpdGUgYmFjayBvZiBkaXJ0eSBkYXRh IGZyb20gbGV2ZWwgMSBkYXRhIGNhY2hlIHRvIHRoZSBMMiBjYWNoZS4iCj4gPiArICAgIH0sCj4g PiArICAgIHsKPiA+ICsgICAgICAgICJBcmNoU3RkRXZlbnQiOiAiTDJEX0NBQ0hFX1JFRklMTCIs Cj4gPiArICAgICAgICAiUHVibGljRGVzY3JpcHRpb24iOiAiQ291bnRzIGNhY2hlIGxpbmUgcmVm aWxscyBpbnRvIHRoZSBsZXZlbCAyIGNhY2hlLiBsZXZlbCAyIGNhY2hlIGlzIGEgdW5pZmllZCBj YWNoZSBmb3IgZGF0YSBhbmQgaW5zdHJ1Y3Rpb24gYWNjZXNzZXMuIEFjY2Vzc2VzIGFyZSBmb3Ig bWlzc2VzIGluIHRoZSBsZXZlbCAxIGNhY2hlcyBvciB0cmFuc2xhdGlvbiByZXNvbHV0aW9ucyBk dWUgdG8gYWNjZXNzZXMuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJj aFN0ZEV2ZW50IjogIkwyRF9DQUNIRV9XQiIsCj4gPiArICAgICAgICAiUHVibGljRGVzY3JpcHRp b24iOiAiQ291bnRzIHdyaXRlLWJhY2tzIG9mIGRhdGEgZnJvbSB0aGUgTDIgY2FjaGUgdG8gb3V0 c2lkZSB0aGUgQ1BVLiBUaGlzIGluY2x1ZGVzIHNub29wcyB0byB0aGUgTDIgKGZyb20gb3RoZXIg Q1BVcykgd2hpY2ggcmV0dXJuIGRhdGEgZXZlbiBpZiB0aGUgc25vb3BzIGNhdXNlIGFuIGludmFs aWRhdGlvbi4gTDIgY2FjaGUgbGluZSBpbnZhbGlkYXRpb25zIHdoaWNoIGRvIG5vdCB3cml0ZSBk YXRhIG91dHNpZGUgdGhlIENQVSBhbmQgc25vb3BzIHdoaWNoIHJldHVybiBkYXRhIGZyb20gYW4g TDEgY2FjaGUgYXJlIG5vdCBjb3VudGVkLiBEYXRhIHdvdWxkIG5vdCBiZSB3cml0dGVuIG91dHNp ZGUgdGhlIGNhY2hlIHdoZW4gaW52YWxpZGF0aW5nIGEgY2xlYW4gY2FjaGUgbGluZS4iCj4gPiAr ICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAgICJBcmNoU3RkRXZlbnQiOiAiTDJEX0NBQ0hF X0FMTE9DQVRFIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJUQkQiCj4gPiAr ICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAgICJBcmNoU3RkRXZlbnQiOiAiTDJEX0NBQ0hF X1JEIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgbGV2ZWwgMiBj YWNoZSBhY2Nlc3NlcyBkdWUgdG8gbWVtb3J5IHJlYWQgb3BlcmF0aW9ucy4gbGV2ZWwgMiBjYWNo ZSBpcyBhIHVuaWZpZWQgY2FjaGUgZm9yIGRhdGEgYW5kIGluc3RydWN0aW9uIGFjY2Vzc2VzLCBh Y2Nlc3NlcyBhcmUgZm9yIG1pc3NlcyBpbiB0aGUgbGV2ZWwgMSBjYWNoZXMgb3IgdHJhbnNsYXRp b24gcmVzb2x1dGlvbnMgZHVlIHRvIGFjY2Vzc2VzLiIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ ID4gKyAgICAgICAgIkFyY2hTdGRFdmVudCI6ICJMMkRfQ0FDSEVfV1IiLAo+ID4gKyAgICAgICAg IlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBsZXZlbCAyIGNhY2hlIGFjY2Vzc2VzIGR1ZSB0 byBtZW1vcnkgd3JpdGUgb3BlcmF0aW9ucy4gbGV2ZWwgMiBjYWNoZSBpcyBhIHVuaWZpZWQgY2Fj aGUgZm9yIGRhdGEgYW5kIGluc3RydWN0aW9uIGFjY2Vzc2VzLCBhY2Nlc3NlcyBhcmUgZm9yIG1p c3NlcyBpbiB0aGUgbGV2ZWwgMSBjYWNoZXMgb3IgdHJhbnNsYXRpb24gcmVzb2x1dGlvbnMgZHVl IHRvIGFjY2Vzc2VzLiIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hT dGRFdmVudCI6ICJMMkRfQ0FDSEVfUkVGSUxMX1JEIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNj cmlwdGlvbiI6ICJDb3VudHMgcmVmaWxscyBmb3IgbWVtb3J5IGFjY2Vzc2VzIGR1ZSB0byBtZW1v cnkgcmVhZCBvcGVyYXRpb24gY291bnRlZCBieSBMMkRfQ0FDSEVfUkQuIGxldmVsIDIgY2FjaGUg aXMgYSB1bmlmaWVkIGNhY2hlIGZvciBkYXRhIGFuZCBpbnN0cnVjdGlvbiBhY2Nlc3NlcywgYWNj ZXNzZXMgYXJlIGZvciBtaXNzZXMgaW4gdGhlIGxldmVsIDEgY2FjaGVzIG9yIHRyYW5zbGF0aW9u IHJlc29sdXRpb25zIGR1ZSB0byBhY2Nlc3Nlcy4iCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ ICsgICAgICAgICJBcmNoU3RkRXZlbnQiOiAiTDJEX0NBQ0hFX1JFRklMTF9XUiIsCj4gPiArICAg ICAgICAiUHVibGljRGVzY3JpcHRpb24iOiAiQ291bnRzIHJlZmlsbHMgZm9yIG1lbW9yeSBhY2Nl c3NlcyBkdWUgdG8gbWVtb3J5IHdyaXRlIG9wZXJhdGlvbiBjb3VudGVkIGJ5IEwyRF9DQUNIRV9X Ui4gbGV2ZWwgMiBjYWNoZSBpcyBhIHVuaWZpZWQgY2FjaGUgZm9yIGRhdGEgYW5kIGluc3RydWN0 aW9uIGFjY2Vzc2VzLCBhY2Nlc3NlcyBhcmUgZm9yIG1pc3NlcyBpbiB0aGUgbGV2ZWwgMSBjYWNo ZXMgb3IgdHJhbnNsYXRpb24gcmVzb2x1dGlvbnMgZHVlIHRvIGFjY2Vzc2VzLiIKPiA+ICsgICAg fSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRFdmVudCI6ICJMMkRfQ0FDSEVfV0Jf VklDVElNIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgZXZpY3Rp b25zIGZyb20gdGhlIGxldmVsIDIgY2FjaGUgYmVjYXVzZSBvZiBhIGxpbmUgYmVpbmcgYWxsb2Nh dGVkIGludG8gdGhlIEwyIGNhY2hlLiIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAg ICAgIkFyY2hTdGRFdmVudCI6ICJMMkRfQ0FDSEVfV0JfQ0xFQU4iLAo+ID4gKyAgICAgICAgIlB1 YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyB3cml0ZS1iYWNrcyBmcm9tIHRoZSBsZXZlbCAyIGNh Y2hlIHRoYXQgYXJlIGEgcmVzdWx0IG9mIGVpdGhlcjpcblxuMS4gQ2FjaGUgbWFpbnRlbmFuY2Ug b3BlcmF0aW9ucyxcblxuMi4gU25vb3AgcmVzcG9uc2VzIG9yLFxuXG4zLiBEaXJlY3QgY2FjaGUg dHJhbnNmZXJzIHRvIGFub3RoZXIgQ1BVIGR1ZSB0byBhIGZvcndhcmRpbmcgc25vb3AgcmVxdWVz dC4iCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAgICJBcmNoU3RkRXZlbnQiOiAi TDJEX0NBQ0hFX0lOVkFMIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3Vu dHMgZWFjaCBleHBsaWNpdCBpbnZhbGlkYXRpb24gb2YgYSBjYWNoZSBsaW5lIGluIHRoZSBsZXZl bCAyIGNhY2hlIGJ5IGNhY2hlIG1haW50ZW5hbmNlIG9wZXJhdGlvbnMgdGhhdCBvcGVyYXRlIGJ5 IGEgdmlydHVhbCBhZGRyZXNzLCBvciBieSBleHRlcm5hbCBjb2hlcmVuY3kgb3BlcmF0aW9ucy4g VGhpcyBldmVudCBkb2VzIG5vdCBjb3VudCBpZiBlaXRoZXI6XG5cbjEuIEEgY2FjaGUgcmVmaWxs IGludmFsaWRhdGVzIGEgY2FjaGUgbGluZSBvcixcbjIuIEEgQ2FjaGUgTWFpbnRlbmFuY2UgT3Bl cmF0aW9uIChDTU8pLCB3aGljaCBpbnZhbGlkYXRlcyBhIGNhY2hlIGxpbmUgc3BlY2lmaWVkIGJ5 IHNldC93YXksIGlzIGV4ZWN1dGVkIG9uIHRoYXQgQ1BVLlxuXG5DTU9zIHRoYXQgb3BlcmF0ZSBi eSBzZXQvd2F5IGNhbm5vdCBiZSBicm9hZGNhc3QgZnJvbSBvbmUgQ1BVIHRvIGFub3RoZXIuIgo+ ID4gKyAgICB9Cj4gPiArXQo+ID4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9h cmNoL2FybTY0L2FybS9uZW92ZXJzZS1uMS9sM19jYWNoZS5qc29uIGIvdG9vbHMvcGVyZi9wbXUt ZXZlbnRzL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL2wzX2NhY2hlLmpzb24KPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmY5M2UwYzlmMzA5YQo+ID4g LS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQv YXJtL25lb3ZlcnNlLW4xL2wzX2NhY2hlLmpzb24KPiA+IEBAIC0wLDAgKzEsMTggQEAKPiA+ICtb Cj4gPiArICAgIHsKPiA+ICsgICAgICAgICJBcmNoU3RkRXZlbnQiOiAiTDNEX0NBQ0hFX0FMTE9D QVRFIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgbGV2ZWwgMyBj YWNoZSBsaW5lIGFsbG9jYXRlcyB0aGF0IGRvIG5vdCBmZXRjaCBkYXRhIGZyb20gb3V0c2lkZSB0 aGUgbGV2ZWwgMyBkYXRhIG9yIHVuaWZpZWQgY2FjaGUuIEZvciBleGFtcGxlLCBhbGxvY2F0ZXMg ZHVlIHRvIHN0cmVhbWluZyBzdG9yZXMuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAg ICAgICAiQXJjaFN0ZEV2ZW50IjogIkwzRF9DQUNIRV9SRUZJTEwiLAo+ID4gKyAgICAgICAgIlB1 YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBsZXZlbCAzIGFjY2Vzc2VzIHRoYXQgcmVjZWl2ZSBk YXRhIGZyb20gb3V0c2lkZSB0aGUgTDMgY2FjaGUuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4g PiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIkwzRF9DQUNIRSIsCj4gPiArICAgICAgICAiUHVi bGljRGVzY3JpcHRpb24iOiAiQ291bnRzIGxldmVsIDMgY2FjaGUgYWNjZXNzZXMuIGxldmVsIDMg Y2FjaGUgaXMgYSB1bmlmaWVkIGNhY2hlIGZvciBkYXRhIGFuZCBpbnN0cnVjdGlvbiBhY2Nlc3Nl cy4gQWNjZXNzZXMgYXJlIGZvciBtaXNzZXMgaW4gdGhlIGxvd2VyIGxldmVsIGNhY2hlcyBvciB0 cmFuc2xhdGlvbiByZXNvbHV0aW9ucyBkdWUgdG8gYWNjZXNzZXMuIgo+ID4gKyAgICB9LAo+ID4g KyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIkwzRF9DQUNIRV9SRCIsCj4gPiAr ICAgICAgICAiUHVibGljRGVzY3JpcHRpb24iOiAiVEJEIgo+ID4gKyAgICB9Cj4gPiArXQo+ID4g ZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9uZW92ZXJz ZS1uMS9sbF9jYWNoZS5qc29uIGIvdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJt L25lb3ZlcnNlLW4xL2xsX2NhY2hlLmpzb24KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBp bmRleCAwMDAwMDAwMDAwMDAuLmJiNzEyZDU3ZDU4YQo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysr IGIvdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL2xsX2Nh Y2hlLmpzb24KPiA+IEBAIC0wLDAgKzEsMTAgQEAKPiA+ICtbCj4gPiArICAgIHsKPiA+ICsgICAg ICAgICJBcmNoU3RkRXZlbnQiOiAiTExfQ0FDSEVfUkQiLAo+ID4gKyAgICAgICAgIlB1YmxpY0Rl c2NyaXB0aW9uIjogIkNvdW50cyByZWFkIHRyYW5zYWN0aW9ucyB0aGF0IHdlcmUgcmV0dXJuZWQg ZnJvbSBvdXRzaWRlIHRoZSBjb3JlIGNsdXN0ZXIuIFRoaXMgZXZlbnQgY291bnRzIHdoZW4gdGhl IHN5c3RlbSByZWdpc3RlciBDUFVFQ1RMUi5FWFRMTEMgYml0IGlzIHNldC4gVGhpcyBldmVudCBj b3VudHMgcmVhZCB0cmFuc2FjdGlvbnMgcmV0dXJuZWQgZnJvbSBvdXRzaWRlIHRoZSBjb3JlIGlm IHRob3NlIHRyYW5zYWN0aW9ucyBhcmUgZWl0aGVyIGhpdCBpbiB0aGUgc3lzdGVtIGxldmVsIGNh Y2hlIG9yIG1pc3NlZCBpbiB0aGUgU0xDIGFuZCBhcmUgcmV0dXJuZWQgZnJvbSBhbnkgb3RoZXIg ZXh0ZXJuYWwgc291cmNlcy4iCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAgICJB cmNoU3RkRXZlbnQiOiAiTExfQ0FDSEVfTUlTU19SRCIsCj4gPiArICAgICAgICAiUHVibGljRGVz Y3JpcHRpb24iOiAiQ291bnRzIHJlYWQgdHJhbnNhY3Rpb25zIHRoYXQgd2VyZSByZXR1cm5lZCBm cm9tIG91dHNpZGUgdGhlIGNvcmUgY2x1c3RlciBidXQgbWlzc2VkIGluIHRoZSBzeXN0ZW0gbGV2 ZWwgY2FjaGUuIFRoaXMgZXZlbnQgY291bnRzIHdoZW4gdGhlIHN5c3RlbSByZWdpc3RlciBDUFVF Q1RMUi5FWFRMTEMgYml0IGlzIHNldC4gVGhpcyBldmVudCBjb3VudHMgcmVhZCB0cmFuc2FjdGlv bnMgcmV0dXJuZWQgZnJvbSBvdXRzaWRlIHRoZSBjb3JlIGlmIHRob3NlIHRyYW5zYWN0aW9ucyBh cmUgbWlzc2VkIGluIHRoZSBTeXN0ZW0gbGV2ZWwgQ2FjaGUuIFRoZSBkYXRhIHNvdXJjZSBvZiB0 aGUgdHJhbnNhY3Rpb24gaXMgaW5kaWNhdGVkIGJ5IGEgZmllbGQgaW4gdGhlIENISSB0cmFuc2Fj dGlvbiByZXR1cm5pbmcgdG8gdGhlIENQVS4gVGhpcyBldmVudCBkb2VzIG5vdCBjb3VudCByZWFk cyBjYXVzZWQgYnkgY2FjaGUgbWFpbnRlbmFuY2Ugb3BlcmF0aW9ucy4iCj4gPiArICAgIH0KPiA+ ICtdCj4gPiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJt L25lb3ZlcnNlLW4xL21lbW9yeS5qc29uIGIvdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJt NjQvYXJtL25lb3ZlcnNlLW4xL21lbW9yeS5qc29uCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ ID4gaW5kZXggMDAwMDAwMDAwMDAwLi45MDQxZjZlMGJlZmIKPiA+IC0tLSAvZGV2L251bGwKPiA+ ICsrKyBiL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9uZW92ZXJzZS1uMS9t ZW1vcnkuanNvbgo+ID4gQEAgLTAsMCArMSwyMiBAQAo+ID4gK1sKPiA+ICsgICAgewo+ID4gKyAg ICAgICAgIkFyY2hTdGRFdmVudCI6ICJNRU1fQUNDRVNTIiwKPiA+ICsgICAgICAgICJQdWJsaWNE ZXNjcmlwdGlvbiI6ICJDb3VudHMgbWVtb3J5IGFjY2Vzc2VzIGlzc3VlZCBieSB0aGUgQ1BVIGxv YWQgc3RvcmUgdW5pdCwgd2hlcmUgdGhvc2UgYWNjZXNzZXMgYXJlIGlzc3VlZCBkdWUgdG8gbG9h ZCBvciBzdG9yZSBvcGVyYXRpb25zLiBUaGlzIGV2ZW50IGNvdW50cyBtZW1vcnkgYWNjZXNzZXMg bm8gbWF0dGVyIHdoZXRoZXIgdGhlIGRhdGEgaXMgcmVjZWl2ZWQgZnJvbSBhbnkgbGV2ZWwgb2Yg Y2FjaGUgaGllcmFyY2h5IG9yIGV4dGVybmFsIG1lbW9yeS4gSWYgbWVtb3J5IGFjY2Vzc2VzIGFy ZSBicm9rZW4gdXAgaW50byBzbWFsbGVyIHRyYW5zYWN0aW9ucyB0aGFuIHdoYXQgd2VyZSBzcGVj aWZpZWQgaW4gdGhlIGxvYWQgb3Igc3RvcmUgaW5zdHJ1Y3Rpb25zLCB0aGVuIHRoZSBldmVudCBj b3VudHMgdGhvc2Ugc21hbGxlciBtZW1vcnkgdHJhbnNhY3Rpb25zLiIKPiA+ICsgICAgfSwKPiA+ ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRFdmVudCI6ICJNRU1PUllfRVJST1IiLAo+ID4g KyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBhbnkgZGV0ZWN0ZWQgY29ycmVj dGFibGUgb3IgdW5jb3JyZWN0YWJsZSBwaHlzaWNhbCBtZW1vcnkgZXJyb3JzIChFQ0Mgb3IgcGFy aXR5KSBpbiBwcm90ZWN0ZWQgQ1BVcyBSQU1zLiBPbiB0aGUgY29yZSwgdGhpcyBldmVudCBjb3Vu dHMgZXJyb3JzIGluIHRoZSBjYWNoZXMgKGluY2x1ZGluZyBkYXRhIGFuZCB0YWcgcmFtcykuIEFu eSBkZXRlY3RlZCBtZW1vcnkgZXJyb3IgKGZyb20gZWl0aGVyIGEgc3BlY3VsYXRpdmUgYW5kIGFi YW5kb25lZCBhY2Nlc3MsIG9yIGFuIGFyY2hpdGVjdHVyYWxseSBleGVjdXRlZCBhY2Nlc3MpIGlz IGNvdW50ZWQuIE5vdGUgdGhhdCBlcnJvcnMgYXJlIG9ubHkgZGV0ZWN0ZWQgd2hlbiB0aGUgYWN0 dWFsIHByb3RlY3RlZCBtZW1vcnkgaXMgYWNjZXNzZWQgYnkgYW4gb3BlcmF0aW9uLiIKPiA+ICsg ICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRFdmVudCI6ICJSRU1PVEVfQUND RVNTIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgYWNjZXNzZXMg dG8gYW5vdGhlciBjaGlwLCB3aGljaCBpcyBpbXBsZW1lbnRlZCBhcyBhIGRpZmZlcmVudCBDTU4g bWVzaCBpbiB0aGUgc3lzdGVtLiBJZiB0aGUgQ0hJIGJ1cyByZXNwb25zZSBiYWNrIHRvIHRoZSBj b3JlIGluZGljYXRlcyB0aGF0IHRoZSBkYXRhIHNvdXJjZSBpcyBmcm9tIGFub3RoZXIgY2hpcCAo bWVzaCksIHRoZW4gdGhlIGNvdW50ZXIgaXMgdXBkYXRlZC4gSWYgbm8gZGF0YSBpcyByZXR1cm5l ZCwgZXZlbiBpZiB0aGUgc3lzdGVtIHNub29wcyBhbm90aGVyIGNoaXAvbWVzaCwgdGhlbiB0aGUg Y291bnRlciBpcyBub3QgdXBkYXRlZC4iCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAg ICAgICJBcmNoU3RkRXZlbnQiOiAiTUVNX0FDQ0VTU19SRCIsCj4gPiArICAgICAgICAiUHVibGlj RGVzY3JpcHRpb24iOiAiQ291bnRzIG1lbW9yeSBhY2Nlc3NlcyBpc3N1ZWQgYnkgdGhlIENQVSBk dWUgdG8gbG9hZCBvcGVyYXRpb25zLiBUaGUgZXZlbnQgY291bnRzIGFueSBtZW1vcnkgbG9hZCBh Y2Nlc3MsIG5vIG1hdHRlciB3aGV0aGVyIHRoZSBkYXRhIGlzIHJlY2VpdmVkIGZyb20gYW55IGxl dmVsIG9mIGNhY2hlIGhpZXJhcmNoeSBvciBleHRlcm5hbCBtZW1vcnkuIFRoZSBldmVudCBhbHNv IGNvdW50cyBhdG9taWMgbG9hZCBvcGVyYXRpb25zLiBJZiBtZW1vcnkgYWNjZXNzZXMgYXJlIGJy b2tlbiB1cCBieSB0aGUgbG9hZC9zdG9yZSB1bml0IGludG8gc21hbGxlciB0cmFuc2FjdGlvbnMg dGhhdCBhcmUgaXNzdWVkIGJ5IHRoZSBidXMgaW50ZXJmYWNlLCB0aGVuIHRoZSBldmVudCBjb3Vu dHMgdGhvc2Ugc21hbGxlciB0cmFuc2FjdGlvbnMuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4g PiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIk1FTV9BQ0NFU1NfV1IiLAo+ID4gKyAgICAgICAg IlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBtZW1vcnkgYWNjZXNzZXMgaXNzdWVkIGJ5IHRo ZSBDUFUgZHVlIHRvIHN0b3JlIG9wZXJhdGlvbnMuIFRoZSBldmVudCBjb3VudHMgYW55IG1lbW9y eSBzdG9yZSBhY2Nlc3MsIG5vIG1hdHRlciB3aGV0aGVyIHRoZSBkYXRhIGlzIGxvY2F0ZWQgaW4g YW55IGxldmVsIG9mIGNhY2hlIG9yIGV4dGVybmFsIG1lbW9yeS4gVGhlIGV2ZW50IGFsc28gY291 bnRzIGF0b21pYyBsb2FkIGFuZCBzdG9yZSBvcGVyYXRpb25zLiBJZiBtZW1vcnkgYWNjZXNzZXMg YXJlIGJyb2tlbiB1cCBieSB0aGUgbG9hZC9zdG9yZSB1bml0IGludG8gc21hbGxlciB0cmFuc2Fj dGlvbnMgdGhhdCBhcmUgaXNzdWVkIGJ5IHRoZSBidXMgaW50ZXJmYWNlLCB0aGVuIHRoZSBldmVu dCBjb3VudHMgdGhvc2Ugc21hbGxlciB0cmFuc2FjdGlvbnMuIgo+ID4gKyAgICB9Cj4gPiArXQo+ ID4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9uZW92 ZXJzZS1uMS9tZXRyaWNzLmpzb24gYi90b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02NC9h cm0vbmVvdmVyc2UtbjEvbWV0cmljcy5qc29uCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4g aW5kZXggMDAwMDAwMDAwMDAwLi5kYzBmODYzOGY4ZjUKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsr KyBiL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9uZW92ZXJzZS1uMS9tZXRy aWNzLmpzb24KPiA+IEBAIC0wLDAgKzEsMjE5IEBACj4gPiArWwo+ID4gKyAgICB7Cj4gPiArICAg ICAgICAiTWV0cmljTmFtZSI6ICJiYWNrZW5kX3N0YWxsZWRfY3ljbGVzIiwKPiA+ICsgICAgICAg ICJNZXRyaWNFeHByIjogIigoU1RBTExfQkFDS0VORCAvIENQVV9DWUNMRVMpICogMTAwKSIsCj4g PiArICAgICAgICAiQnJpZWZEZXNjcmlwdGlvbiI6ICJUaGlzIG1ldHJpYyBpcyB0aGUgcGVyY2Vu dGFnZSBvZiBjeWNsZXMgdGhhdCB3ZXJlIHN0YWxsZWQgZHVlIHRvIHJlc291cmNlIGNvbnN0cmFp bnRzIGluIHRoZSBiYWNrZW5kIHVuaXQgb2YgdGhlIHByb2Nlc3Nvci4iLAo+ID4gKyAgICAgICAg Ik1ldHJpY0dyb3VwIjogIkN5Y2xlX0FjY291bnRpbmciLAo+ID4gKyAgICAgICAgIlNjYWxlVW5p dCI6ICIxcGVyY2VudCBvZiBjeWNsZXMiCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAg ICAgICJNZXRyaWNOYW1lIjogImJyYW5jaF9taXNwcmVkaWN0aW9uX3JhdGlvIiwKPiA+ICsgICAg ICAgICJNZXRyaWNFeHByIjogIihCUl9NSVNfUFJFRF9SRVRJUkVEIC8gQlJfUkVUSVJFRCkiLAo+ ID4gKyAgICAgICAgIkJyaWVmRGVzY3JpcHRpb24iOiAiVGhpcyBtZXRyaWMgbWVhc3VyZXMgdGhl IHJhdGlvIG9mIGJyYW5jaGVzIG1pc3ByZWRpY3RlZCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGJy YW5jaGVzIGFyY2hpdGVjdHVyYWxseSBleGVjdXRlZC4gVGhpcyBnaXZlcyBhbiBpbmRpY2F0aW9u IG9mIHRoZSBlZmZlY3RpdmVuZXNzIG9mIHRoZSBicmFuY2ggcHJlZGljdGlvbiB1bml0LiIsCj4g PiArICAgICAgICAiTWV0cmljR3JvdXAiOiAiTWlzc19SYXRpbztCcmFuY2hfRWZmZWN0aXZlbmVz cyIsCj4gPiArICAgICAgICAiU2NhbGVVbml0IjogIjFwZXIgYnJhbmNoIgo+ID4gKyAgICB9LAo+ ID4gKyAgICB7Cj4gPiArICAgICAgICAiTWV0cmljTmFtZSI6ICJicmFuY2hfbXBraSIsCj4gPiAr ICAgICAgICAiTWV0cmljRXhwciI6ICIoKEJSX01JU19QUkVEX1JFVElSRUQgLyBJTlNUX1JFVElS RUQpICogMTAwMCkiLAo+ID4gKyAgICAgICAgIkJyaWVmRGVzY3JpcHRpb24iOiAiVGhpcyBtZXRy aWMgbWVhc3VyZXMgdGhlIG51bWJlciBvZiBicmFuY2ggbWlzcHJlZGljdGlvbnMgcGVyIHRob3Vz YW5kIGluc3RydWN0aW9ucyBleGVjdXRlZC4iLAo+ID4gKyAgICAgICAgIk1ldHJpY0dyb3VwIjog Ik1QS0k7QnJhbmNoX0VmZmVjdGl2ZW5lc3MiLAo+ID4gKyAgICAgICAgIlNjYWxlVW5pdCI6ICIx TVBLSSIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIk1ldHJpY05hbWUiOiAi YnJhbmNoX3BlcmNlbnRhZ2UiLAo+ID4gKyAgICAgICAgIk1ldHJpY0V4cHIiOiAiKCgoQlJfSU1N RURfU1BFQyArIEJSX0lORElSRUNUX1NQRUMpIC8gSU5TVF9TUEVDKSAqIDEwMCkiLAo+ID4gKyAg ICAgICAgIkJyaWVmRGVzY3JpcHRpb24iOiAiVGhpcyBtZXRyaWMgbWVhc3VyZXMgYnJhbmNoIG9w ZXJhdGlvbnMgYXMgYSBwZXJjZW50YWdlIG9mIG9wZXJhdGlvbnMgc3BlY3VsYXRpdmVseSBleGVj dXRlZC4iLAo+ID4gKyAgICAgICAgIk1ldHJpY0dyb3VwIjogIk9wZXJhdGlvbl9NaXgiLAo+ID4g KyAgICAgICAgIlNjYWxlVW5pdCI6ICIxcGVyY2VudCBvZiBvcGVyYXRpb25zIgo+ID4gKyAgICB9 LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiTWV0cmljTmFtZSI6ICJjcnlwdG9fcGVyY2VudGFn ZSIsCj4gPiArICAgICAgICAiTWV0cmljRXhwciI6ICIoKENSWVBUT19TUEVDIC8gSU5TVF9TUEVD KSAqIDEwMCkiLAo+ID4gKyAgICAgICAgIkJyaWVmRGVzY3JpcHRpb24iOiAiVGhpcyBtZXRyaWMg bWVhc3VyZXMgY3J5cHRvIG9wZXJhdGlvbnMgYXMgYSBwZXJjZW50YWdlIG9mIG9wZXJhdGlvbnMg c3BlY3VsYXRpdmVseSBleGVjdXRlZC4iLAo+ID4gKyAgICAgICAgIk1ldHJpY0dyb3VwIjogIk9w ZXJhdGlvbl9NaXgiLAo+ID4gKyAgICAgICAgIlNjYWxlVW5pdCI6ICIxcGVyY2VudCBvZiBvcGVy YXRpb25zIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiTWV0cmljTmFtZSI6 ICJkdGxiX21wa2kiLAo+ID4gKyAgICAgICAgIk1ldHJpY0V4cHIiOiAiKChEVExCX1dBTEsgLyBJ TlNUX1JFVElSRUQpICogMTAwMCkiLAo+ID4gKyAgICAgICAgIkJyaWVmRGVzY3JpcHRpb24iOiAi VGhpcyBtZXRyaWMgbWVhc3VyZXMgdGhlIG51bWJlciBvZiBkYXRhIFRMQiBXYWxrcyBwZXIgdGhv dXNhbmQgaW5zdHJ1Y3Rpb25zIGV4ZWN1dGVkLiIsCj4gPiArICAgICAgICAiTWV0cmljR3JvdXAi OiAiTVBLSTtEVExCX0VmZmVjdGl2ZW5lc3MiLAo+ID4gKyAgICAgICAgIlNjYWxlVW5pdCI6ICIx TVBLSSIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIk1ldHJpY05hbWUiOiAi ZHRsYl93YWxrX3JhdGlvIiwKPiA+ICsgICAgICAgICJNZXRyaWNFeHByIjogIihEVExCX1dBTEsg LyBMMURfVExCKSIsCj4gPiArICAgICAgICAiQnJpZWZEZXNjcmlwdGlvbiI6ICJUaGlzIG1ldHJp YyBtZWFzdXJlcyB0aGUgcmF0aW8gb2YgaW5zdHJ1Y3Rpb24gVExCIFdhbGtzIHRvIHRoZSB0b3Rh bCBudW1iZXIgb2YgZGF0YSBUTEIgYWNjZXNzZXMuIFRoaXMgZ2l2ZXMgYW4gaW5kaWNhdGlvbiBv ZiB0aGUgZWZmZWN0aXZlbmVzcyBvZiB0aGUgZGF0YSBUTEIgYWNjZXNzZXMuIiwKPiA+ICsgICAg ICAgICJNZXRyaWNHcm91cCI6ICJNaXNzX1JhdGlvO0RUTEJfRWZmZWN0aXZlbmVzcyIsCj4gPiAr ICAgICAgICAiU2NhbGVVbml0IjogIjFwZXIgVExCIGFjY2VzcyIKPiA+ICsgICAgfSwKPiA+ICsg ICAgewo+ID4gKyAgICAgICAgIk1ldHJpY05hbWUiOiAiZnJvbnRlbmRfc3RhbGxlZF9jeWNsZXMi LAo+ID4gKyAgICAgICAgIk1ldHJpY0V4cHIiOiAiKChTVEFMTF9GUk9OVEVORCAvIENQVV9DWUNM RVMpICogMTAwKSIsCj4gPiArICAgICAgICAiQnJpZWZEZXNjcmlwdGlvbiI6ICJUaGlzIG1ldHJp YyBpcyB0aGUgcGVyY2VudGFnZSBvZiBjeWNsZXMgdGhhdCB3ZXJlIHN0YWxsZWQgZHVlIHRvIHJl c291cmNlIGNvbnN0cmFpbnRzIGluIHRoZSBmcm9udGVuZCB1bml0IG9mIHRoZSBwcm9jZXNzb3Iu IiwKPiA+ICsgICAgICAgICJNZXRyaWNHcm91cCI6ICJDeWNsZV9BY2NvdW50aW5nIiwKPiA+ICsg ICAgICAgICJTY2FsZVVuaXQiOiAiMXBlcmNlbnQgb2YgY3ljbGVzIgo+ID4gKyAgICB9LAo+ID4g KyAgICB7Cj4gPiArICAgICAgICAiTWV0cmljTmFtZSI6ICJpbnRlZ2VyX2RwX3BlcmNlbnRhZ2Ui LAo+ID4gKyAgICAgICAgIk1ldHJpY0V4cHIiOiAiKChEUF9TUEVDIC8gSU5TVF9TUEVDKSAqIDEw MCkiLAo+ID4gKyAgICAgICAgIkJyaWVmRGVzY3JpcHRpb24iOiAiVGhpcyBtZXRyaWMgbWVhc3Vy ZXMgc2NhbGFyIGludGVnZXIgb3BlcmF0aW9ucyBhcyBhIHBlcmNlbnRhZ2Ugb2Ygb3BlcmF0aW9u cyBzcGVjdWxhdGl2ZWx5IGV4ZWN1dGVkLiIsCj4gPiArICAgICAgICAiTWV0cmljR3JvdXAiOiAi T3BlcmF0aW9uX01peCIsCj4gPiArICAgICAgICAiU2NhbGVVbml0IjogIjFwZXJjZW50IG9mIG9w ZXJhdGlvbnMiCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAgICJNZXRyaWNOYW1l IjogImlwYyIsCj4gPiArICAgICAgICAiTWV0cmljRXhwciI6ICIoSU5TVF9SRVRJUkVEIC8gQ1BV X0NZQ0xFUykiLAo+ID4gKyAgICAgICAgIkJyaWVmRGVzY3JpcHRpb24iOiAiVGhpcyBtZXRyaWMg bWVhc3VyZXMgdGhlIG51bWJlciBvZiBpbnN0cnVjdGlvbnMgcmV0aXJlZCBwZXIgY3ljbGUuIiwK PiA+ICsgICAgICAgICJNZXRyaWNHcm91cCI6ICJHZW5lcmFsIiwKPiA+ICsgICAgICAgICJTY2Fs ZVVuaXQiOiAiMXBlciBjeWNsZSIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAg Ik1ldHJpY05hbWUiOiAiaXRsYl9tcGtpIiwKPiA+ICsgICAgICAgICJNZXRyaWNFeHByIjogIigo SVRMQl9XQUxLIC8gSU5TVF9SRVRJUkVEKSAqIDEwMDApIiwKPiA+ICsgICAgICAgICJCcmllZkRl c2NyaXB0aW9uIjogIlRoaXMgbWV0cmljIG1lYXN1cmVzIHRoZSBudW1iZXIgb2YgaW5zdHJ1Y3Rp b24gVExCIFdhbGtzIHBlciB0aG91c2FuZCBpbnN0cnVjdGlvbnMgZXhlY3V0ZWQuIiwKPiA+ICsg ICAgICAgICJNZXRyaWNHcm91cCI6ICJNUEtJO0lUTEJfRWZmZWN0aXZlbmVzcyIsCj4gPiArICAg ICAgICAiU2NhbGVVbml0IjogIjFNUEtJIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAg ICAgICAiTWV0cmljTmFtZSI6ICJpdGxiX3dhbGtfcmF0aW8iLAo+ID4gKyAgICAgICAgIk1ldHJp Y0V4cHIiOiAiKElUTEJfV0FMSyAvIEwxSV9UTEIpIiwKPiA+ICsgICAgICAgICJCcmllZkRlc2Ny aXB0aW9uIjogIlRoaXMgbWV0cmljIG1lYXN1cmVzIHRoZSByYXRpbyBvZiBpbnN0cnVjdGlvbiBU TEIgV2Fsa3MgdG8gdGhlIHRvdGFsIG51bWJlciBvZiBpbnN0cnVjdGlvbiBUTEIgYWNjZXNzZXMu IFRoaXMgZ2l2ZXMgYW4gaW5kaWNhdGlvbiBvZiB0aGUgZWZmZWN0aXZlbmVzcyBvZiB0aGUgaW5z dHJ1Y3Rpb24gVExCIGFjY2Vzc2VzLiIsCj4gPiArICAgICAgICAiTWV0cmljR3JvdXAiOiAiTWlz c19SYXRpbztJVExCX0VmZmVjdGl2ZW5lc3MiLAo+ID4gKyAgICAgICAgIlNjYWxlVW5pdCI6ICIx cGVyIFRMQiBhY2Nlc3MiCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAgICJNZXRy aWNOYW1lIjogImwxZF9jYWNoZV9taXNzX3JhdGlvIiwKPiA+ICsgICAgICAgICJNZXRyaWNFeHBy IjogIihMMURfQ0FDSEVfUkVGSUxMIC8gTDFEX0NBQ0hFKSIsCj4gPiArICAgICAgICAiQnJpZWZE ZXNjcmlwdGlvbiI6ICJUaGlzIG1ldHJpYyBtZWFzdXJlcyB0aGUgcmF0aW8gb2YgbGV2ZWwgMSBk YXRhIGNhY2hlIGFjY2Vzc2VzIG1pc3NlZCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGxldmVsIDEg ZGF0YSBjYWNoZSBhY2Nlc3Nlcy4gVGhpcyBnaXZlcyBhbiBpbmRpY2F0aW9uIG9mIHRoZSBlZmZl Y3RpdmVuZXNzIG9mIHRoZSBsZXZlbCAxIGRhdGEgY2FjaGUuIiwKPiA+ICsgICAgICAgICJNZXRy aWNHcm91cCI6ICJNaXNzX1JhdGlvO0wxRF9DYWNoZV9FZmZlY3RpdmVuZXNzIiwKPiA+ICsgICAg ICAgICJTY2FsZVVuaXQiOiAiMXBlciBjYWNoZSBhY2Nlc3MiCj4gPiArICAgIH0sCj4gPiArICAg IHsKPiA+ICsgICAgICAgICJNZXRyaWNOYW1lIjogImwxZF9jYWNoZV9tcGtpIiwKPiA+ICsgICAg ICAgICJNZXRyaWNFeHByIjogIigoTDFEX0NBQ0hFX1JFRklMTCAvIElOU1RfUkVUSVJFRCkgKiAx MDAwKSIsCj4gPiArICAgICAgICAiQnJpZWZEZXNjcmlwdGlvbiI6ICJUaGlzIG1ldHJpYyBtZWFz dXJlcyB0aGUgbnVtYmVyIG9mIGxldmVsIDEgZGF0YSBjYWNoZSBhY2Nlc3NlcyBtaXNzZWQgcGVy IHRob3VzYW5kIGluc3RydWN0aW9ucyBleGVjdXRlZC4iLAo+ID4gKyAgICAgICAgIk1ldHJpY0dy b3VwIjogIk1QS0k7TDFEX0NhY2hlX0VmZmVjdGl2ZW5lc3MiLAo+ID4gKyAgICAgICAgIlNjYWxl VW5pdCI6ICIxTVBLSSIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIk1ldHJp Y05hbWUiOiAibDFkX3RsYl9taXNzX3JhdGlvIiwKPiA+ICsgICAgICAgICJNZXRyaWNFeHByIjog IihMMURfVExCX1JFRklMTCAvIEwxRF9UTEIpIiwKPiA+ICsgICAgICAgICJCcmllZkRlc2NyaXB0 aW9uIjogIlRoaXMgbWV0cmljIG1lYXN1cmVzIHRoZSByYXRpbyBvZiBsZXZlbCAxIGRhdGEgVExC IGFjY2Vzc2VzIG1pc3NlZCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGxldmVsIDEgZGF0YSBUTEIg YWNjZXNzZXMuIFRoaXMgZ2l2ZXMgYW4gaW5kaWNhdGlvbiBvZiB0aGUgZWZmZWN0aXZlbmVzcyBv ZiB0aGUgbGV2ZWwgMSBkYXRhIFRMQi4iLAo+ID4gKyAgICAgICAgIk1ldHJpY0dyb3VwIjogIk1p c3NfUmF0aW87RFRMQl9FZmZlY3RpdmVuZXNzIiwKPiA+ICsgICAgICAgICJTY2FsZVVuaXQiOiAi MXBlciBUTEIgYWNjZXNzIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiTWV0 cmljTmFtZSI6ICJsMWRfdGxiX21wa2kiLAo+ID4gKyAgICAgICAgIk1ldHJpY0V4cHIiOiAiKChM MURfVExCX1JFRklMTCAvIElOU1RfUkVUSVJFRCkgKiAxMDAwKSIsCj4gPiArICAgICAgICAiQnJp ZWZEZXNjcmlwdGlvbiI6ICJUaGlzIG1ldHJpYyBtZWFzdXJlcyB0aGUgbnVtYmVyIG9mIGxldmVs IDEgaW5zdHJ1Y3Rpb24gVExCIGFjY2Vzc2VzIG1pc3NlZCBwZXIgdGhvdXNhbmQgaW5zdHJ1Y3Rp b25zIGV4ZWN1dGVkLiIsCj4gPiArICAgICAgICAiTWV0cmljR3JvdXAiOiAiTVBLSTtEVExCX0Vm ZmVjdGl2ZW5lc3MiLAo+ID4gKyAgICAgICAgIlNjYWxlVW5pdCI6ICIxTVBLSSIKPiA+ICsgICAg fSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIk1ldHJpY05hbWUiOiAibDFpX2NhY2hlX21pc3Nf cmF0aW8iLAo+ID4gKyAgICAgICAgIk1ldHJpY0V4cHIiOiAiKEwxSV9DQUNIRV9SRUZJTEwgLyBM MUlfQ0FDSEUpIiwKPiA+ICsgICAgICAgICJCcmllZkRlc2NyaXB0aW9uIjogIlRoaXMgbWV0cmlj IG1lYXN1cmVzIHRoZSByYXRpbyBvZiBsZXZlbCAxIGluc3RydWN0aW9uIGNhY2hlIGFjY2Vzc2Vz IG1pc3NlZCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGxldmVsIDEgaW5zdHJ1Y3Rpb24gY2FjaGUg YWNjZXNzZXMuIFRoaXMgZ2l2ZXMgYW4gaW5kaWNhdGlvbiBvZiB0aGUgZWZmZWN0aXZlbmVzcyBv ZiB0aGUgbGV2ZWwgMSBpbnN0cnVjdGlvbiBjYWNoZS4iLAo+ID4gKyAgICAgICAgIk1ldHJpY0dy b3VwIjogIk1pc3NfUmF0aW87TDFJX0NhY2hlX0VmZmVjdGl2ZW5lc3MiLAo+ID4gKyAgICAgICAg IlNjYWxlVW5pdCI6ICIxcGVyIGNhY2hlIGFjY2VzcyIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ ID4gKyAgICAgICAgIk1ldHJpY05hbWUiOiAibDFpX2NhY2hlX21wa2kiLAo+ID4gKyAgICAgICAg Ik1ldHJpY0V4cHIiOiAiKChMMUlfQ0FDSEVfUkVGSUxMIC8gSU5TVF9SRVRJUkVEKSAqIDEwMDAp IiwKPiA+ICsgICAgICAgICJCcmllZkRlc2NyaXB0aW9uIjogIlRoaXMgbWV0cmljIG1lYXN1cmVz IHRoZSBudW1iZXIgb2YgbGV2ZWwgMSBpbnN0cnVjdGlvbiBjYWNoZSBhY2Nlc3NlcyBtaXNzZWQg cGVyIHRob3VzYW5kIGluc3RydWN0aW9ucyBleGVjdXRlZC4iLAo+ID4gKyAgICAgICAgIk1ldHJp Y0dyb3VwIjogIk1QS0k7TDFJX0NhY2hlX0VmZmVjdGl2ZW5lc3MiLAo+ID4gKyAgICAgICAgIlNj YWxlVW5pdCI6ICIxTVBLSSIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIk1l dHJpY05hbWUiOiAibDFpX3RsYl9taXNzX3JhdGlvIiwKPiA+ICsgICAgICAgICJNZXRyaWNFeHBy IjogIihMMUlfVExCX1JFRklMTCAvIEwxSV9UTEIpIiwKPiA+ICsgICAgICAgICJCcmllZkRlc2Ny aXB0aW9uIjogIlRoaXMgbWV0cmljIG1lYXN1cmVzIHRoZSByYXRpbyBvZiBsZXZlbCAxIGluc3Ry dWN0aW9uIFRMQiBhY2Nlc3NlcyBtaXNzZWQgdG8gdGhlIHRvdGFsIG51bWJlciBvZiBsZXZlbCAx IGluc3RydWN0aW9uIFRMQiBhY2Nlc3Nlcy4gVGhpcyBnaXZlcyBhbiBpbmRpY2F0aW9uIG9mIHRo ZSBlZmZlY3RpdmVuZXNzIG9mIHRoZSBsZXZlbCAxIGluc3RydWN0aW9uIFRMQi4iLAo+ID4gKyAg ICAgICAgIk1ldHJpY0dyb3VwIjogIk1pc3NfUmF0aW87SVRMQl9FZmZlY3RpdmVuZXNzIiwKPiA+ ICsgICAgICAgICJTY2FsZVVuaXQiOiAiMXBlciBUTEIgYWNjZXNzIgo+ID4gKyAgICB9LAo+ID4g KyAgICB7Cj4gPiArICAgICAgICAiTWV0cmljTmFtZSI6ICJsMWlfdGxiX21wa2kiLAo+ID4gKyAg ICAgICAgIk1ldHJpY0V4cHIiOiAiKChMMUlfVExCX1JFRklMTCAvIElOU1RfUkVUSVJFRCkgKiAx MDAwKSIsCj4gPiArICAgICAgICAiQnJpZWZEZXNjcmlwdGlvbiI6ICJUaGlzIG1ldHJpYyBtZWFz dXJlcyB0aGUgbnVtYmVyIG9mIGxldmVsIDEgaW5zdHJ1Y3Rpb24gVExCIGFjY2Vzc2VzIG1pc3Nl ZCBwZXIgdGhvdXNhbmQgaW5zdHJ1Y3Rpb25zIGV4ZWN1dGVkLiIsCj4gPiArICAgICAgICAiTWV0 cmljR3JvdXAiOiAiTVBLSTtJVExCX0VmZmVjdGl2ZW5lc3MiLAo+ID4gKyAgICAgICAgIlNjYWxl VW5pdCI6ICIxTVBLSSIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIk1ldHJp Y05hbWUiOiAibDJfY2FjaGVfbWlzc19yYXRpbyIsCj4gPiArICAgICAgICAiTWV0cmljRXhwciI6 ICIoTDJEX0NBQ0hFX1JFRklMTCAvIEwyRF9DQUNIRSkiLAo+ID4gKyAgICAgICAgIkJyaWVmRGVz Y3JpcHRpb24iOiAiVGhpcyBtZXRyaWMgbWVhc3VyZXMgdGhlIHJhdGlvIG9mIGxldmVsIDIgY2Fj aGUgYWNjZXNzZXMgbWlzc2VkIHRvIHRoZSB0b3RhbCBudW1iZXIgb2YgbGV2ZWwgMiBjYWNoZSBh Y2Nlc3Nlcy4gVGhpcyBnaXZlcyBhbiBpbmRpY2F0aW9uIG9mIHRoZSBlZmZlY3RpdmVuZXNzIG9m IHRoZSBsZXZlbCAyIGNhY2hlLCB3aGljaCBpcyBhIHVuaWZpZWQgY2FjaGUgdGhhdCBzdG9yZXMg Ym90aCBkYXRhIGFuZCBpbnN0cnVjdGlvbi4gTm90ZSB0aGF0IGNhY2hlIGFjY2Vzc2VzIGluIHRo aXMgY2FjaGUgYXJlIGVpdGhlciBkYXRhIG1lbW9yeSBhY2Nlc3Mgb3IgaW5zdHJ1Y3Rpb24gZmV0 Y2ggYXMgdGhpcyBpcyBhIHVuaWZpZWQgY2FjaGUuIiwKPiA+ICsgICAgICAgICJNZXRyaWNHcm91 cCI6ICJNaXNzX1JhdGlvO0wyX0NhY2hlX0VmZmVjdGl2ZW5lc3MiLAo+ID4gKyAgICAgICAgIlNj YWxlVW5pdCI6ICIxcGVyIGNhY2hlIGFjY2VzcyIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4g KyAgICAgICAgIk1ldHJpY05hbWUiOiAibDJfY2FjaGVfbXBraSIsCj4gPiArICAgICAgICAiTWV0 cmljRXhwciI6ICIoKEwyRF9DQUNIRV9SRUZJTEwgLyBJTlNUX1JFVElSRUQpICogMTAwMCkiLAo+ ID4gKyAgICAgICAgIkJyaWVmRGVzY3JpcHRpb24iOiAiVGhpcyBtZXRyaWMgbWVhc3VyZXMgdGhl IG51bWJlciBvZiBsZXZlbCAyIHVuaWZpZWQgY2FjaGUgYWNjZXNzZXMgbWlzc2VkIHBlciB0aG91 c2FuZCBpbnN0cnVjdGlvbnMgZXhlY3V0ZWQuIE5vdGUgdGhhdCBjYWNoZSBhY2Nlc3NlcyBpbiB0 aGlzIGNhY2hlIGFyZSBlaXRoZXIgZGF0YSBtZW1vcnkgYWNjZXNzIG9yIGluc3RydWN0aW9uIGZl dGNoIGFzIHRoaXMgaXMgYSB1bmlmaWVkIGNhY2hlLiIsCj4gPiArICAgICAgICAiTWV0cmljR3Jv dXAiOiAiTVBLSTtMMl9DYWNoZV9FZmZlY3RpdmVuZXNzIiwKPiA+ICsgICAgICAgICJTY2FsZVVu aXQiOiAiMU1QS0kiCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAgICJNZXRyaWNO YW1lIjogImwyX3RsYl9taXNzX3JhdGlvIiwKPiA+ICsgICAgICAgICJNZXRyaWNFeHByIjogIihM MkRfVExCX1JFRklMTCAvIEwyRF9UTEIpIiwKPiA+ICsgICAgICAgICJCcmllZkRlc2NyaXB0aW9u IjogIlRoaXMgbWV0cmljIG1lYXN1cmVzIHRoZSByYXRpbyBvZiBsZXZlbCAyIHVuaWZpZWQgVExC IGFjY2Vzc2VzIG1pc3NlZCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGxldmVsIDIgdW5pZmllZCBU TEIgYWNjZXNzZXMuIFRoaXMgZ2l2ZXMgYW4gaW5kaWNhdGlvbiBvZiB0aGUgZWZmZWN0aXZlbmVz cyBvZiB0aGUgbGV2ZWwgMiBUTEIuIiwKPiA+ICsgICAgICAgICJNZXRyaWNHcm91cCI6ICJNaXNz X1JhdGlvO0lUTEJfRWZmZWN0aXZlbmVzcztEVExCX0VmZmVjdGl2ZW5lc3MiLAo+ID4gKyAgICAg ICAgIlNjYWxlVW5pdCI6ICIxcGVyIFRMQiBhY2Nlc3MiCj4gPiArICAgIH0sCj4gPiArICAgIHsK PiA+ICsgICAgICAgICJNZXRyaWNOYW1lIjogImwyX3RsYl9tcGtpIiwKPiA+ICsgICAgICAgICJN ZXRyaWNFeHByIjogIigoTDJEX1RMQl9SRUZJTEwgLyBJTlNUX1JFVElSRUQpICogMTAwMCkiLAo+ ID4gKyAgICAgICAgIkJyaWVmRGVzY3JpcHRpb24iOiAiVGhpcyBtZXRyaWMgbWVhc3VyZXMgdGhl IG51bWJlciBvZiBsZXZlbCAyIHVuaWZpZWQgVExCIGFjY2Vzc2VzIG1pc3NlZCBwZXIgdGhvdXNh bmQgaW5zdHJ1Y3Rpb25zIGV4ZWN1dGVkLiIsCj4gPiArICAgICAgICAiTWV0cmljR3JvdXAiOiAi TVBLSTtJVExCX0VmZmVjdGl2ZW5lc3M7RFRMQl9FZmZlY3RpdmVuZXNzIiwKPiA+ICsgICAgICAg ICJTY2FsZVVuaXQiOiAiMU1QS0kiCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAg ICJNZXRyaWNOYW1lIjogImxsX2NhY2hlX3JlYWRfaGl0X3JhdGlvIiwKPiA+ICsgICAgICAgICJN ZXRyaWNFeHByIjogIigoTExfQ0FDSEVfUkQgLSBMTF9DQUNIRV9NSVNTX1JEKSAvIExMX0NBQ0hF X1JEKSIsCj4gPiArICAgICAgICAiQnJpZWZEZXNjcmlwdGlvbiI6ICJUaGlzIG1ldHJpYyBtZWFz dXJlcyB0aGUgcmF0aW8gb2YgbGFzdCBsZXZlbCBjYWNoZSByZWFkIGFjY2Vzc2VzIGhpdCBpbiB0 aGUgY2FjaGUgdG8gdGhlIHRvdGFsIG51bWJlciBvZiBsYXN0IGxldmVsIGNhY2hlIGFjY2Vzc2Vz LiBUaGlzIGdpdmVzIGFuIGluZGljYXRpb24gb2YgdGhlIGVmZmVjdGl2ZW5lc3Mgb2YgdGhlIGxh c3QgbGV2ZWwgY2FjaGUgZm9yIHJlYWQgdHJhZmZpYy4gTm90ZSB0aGF0IGNhY2hlIGFjY2Vzc2Vz IGluIHRoaXMgY2FjaGUgYXJlIGVpdGhlciBkYXRhIG1lbW9yeSBhY2Nlc3Mgb3IgaW5zdHJ1Y3Rp b24gZmV0Y2ggYXMgdGhpcyBpcyBhIHN5c3RlbSBsZXZlbCBjYWNoZS4iLAo+ID4gKyAgICAgICAg Ik1ldHJpY0dyb3VwIjogIkxMX0NhY2hlX0VmZmVjdGl2ZW5lc3MiLAo+ID4gKyAgICAgICAgIlNj YWxlVW5pdCI6ICIxcGVyIGNhY2hlIGFjY2VzcyIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4g KyAgICAgICAgIk1ldHJpY05hbWUiOiAibGxfY2FjaGVfcmVhZF9taXNzX3JhdGlvIiwKPiA+ICsg ICAgICAgICJNZXRyaWNFeHByIjogIihMTF9DQUNIRV9NSVNTX1JEIC8gTExfQ0FDSEVfUkQpIiwK PiA+ICsgICAgICAgICJCcmllZkRlc2NyaXB0aW9uIjogIlRoaXMgbWV0cmljIG1lYXN1cmVzIHRo ZSByYXRpbyBvZiBsYXN0IGxldmVsIGNhY2hlIHJlYWQgYWNjZXNzZXMgbWlzc2VkIHRvIHRoZSB0 b3RhbCBudW1iZXIgb2YgbGFzdCBsZXZlbCBjYWNoZSBhY2Nlc3Nlcy4gVGhpcyBnaXZlcyBhbiBp bmRpY2F0aW9uIG9mIHRoZSBlZmZlY3RpdmVuZXNzIG9mIHRoZSBsYXN0IGxldmVsIGNhY2hlIGZv ciByZWFkIHRyYWZmaWMuIE5vdGUgdGhhdCBjYWNoZSBhY2Nlc3NlcyBpbiB0aGlzIGNhY2hlIGFy ZSBlaXRoZXIgZGF0YSBtZW1vcnkgYWNjZXNzIG9yIGluc3RydWN0aW9uIGZldGNoIGFzIHRoaXMg aXMgYSBzeXN0ZW0gbGV2ZWwgY2FjaGUuIiwKPiA+ICsgICAgICAgICJNZXRyaWNHcm91cCI6ICJN aXNzX1JhdGlvO0xMX0NhY2hlX0VmZmVjdGl2ZW5lc3MiLAo+ID4gKyAgICAgICAgIlNjYWxlVW5p dCI6ICIxcGVyIGNhY2hlIGFjY2VzcyIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAg ICAgIk1ldHJpY05hbWUiOiAibGxfY2FjaGVfcmVhZF9tcGtpIiwKPiA+ICsgICAgICAgICJNZXRy aWNFeHByIjogIigoTExfQ0FDSEVfTUlTU19SRCAvIElOU1RfUkVUSVJFRCkgKiAxMDAwKSIsCj4g PiArICAgICAgICAiQnJpZWZEZXNjcmlwdGlvbiI6ICJUaGlzIG1ldHJpYyBtZWFzdXJlcyB0aGUg bnVtYmVyIG9mIGxhc3QgbGV2ZWwgY2FjaGUgcmVhZCBhY2Nlc3NlcyBtaXNzZWQgcGVyIHRob3Vz YW5kIGluc3RydWN0aW9ucyBleGVjdXRlZC4iLAo+ID4gKyAgICAgICAgIk1ldHJpY0dyb3VwIjog Ik1QS0k7TExfQ2FjaGVfRWZmZWN0aXZlbmVzcyIsCj4gPiArICAgICAgICAiU2NhbGVVbml0Ijog IjFNUEtJIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiTWV0cmljTmFtZSI6 ICJsb2FkX3BlcmNlbnRhZ2UiLAo+ID4gKyAgICAgICAgIk1ldHJpY0V4cHIiOiAiKChMRF9TUEVD IC8gSU5TVF9TUEVDKSAqIDEwMCkiLAo+ID4gKyAgICAgICAgIkJyaWVmRGVzY3JpcHRpb24iOiAi VGhpcyBtZXRyaWMgbWVhc3VyZXMgbG9hZCBvcGVyYXRpb25zIGFzIGEgcGVyY2VudGFnZSBvZiBv cGVyYXRpb25zIHNwZWN1bGF0aXZlbHkgZXhlY3V0ZWQuIiwKPiA+ICsgICAgICAgICJNZXRyaWNH cm91cCI6ICJPcGVyYXRpb25fTWl4IiwKPiA+ICsgICAgICAgICJTY2FsZVVuaXQiOiAiMXBlcmNl bnQgb2Ygb3BlcmF0aW9ucyIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIk1l dHJpY05hbWUiOiAic2NhbGFyX2ZwX3BlcmNlbnRhZ2UiLAo+ID4gKyAgICAgICAgIk1ldHJpY0V4 cHIiOiAiKChWRlBfU1BFQyAvIElOU1RfU1BFQykgKiAxMDApIiwKPiA+ICsgICAgICAgICJCcmll ZkRlc2NyaXB0aW9uIjogIlRoaXMgbWV0cmljIG1lYXN1cmVzIHNjYWxhciBmbG9hdGluZyBwb2lu dCBvcGVyYXRpb25zIGFzIGEgcGVyY2VudGFnZSBvZiBvcGVyYXRpb25zIHNwZWN1bGF0aXZlbHkg ZXhlY3V0ZWQuIiwKPiA+ICsgICAgICAgICJNZXRyaWNHcm91cCI6ICJPcGVyYXRpb25fTWl4IiwK PiA+ICsgICAgICAgICJTY2FsZVVuaXQiOiAiMXBlcmNlbnQgb2Ygb3BlcmF0aW9ucyIKPiA+ICsg ICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIk1ldHJpY05hbWUiOiAic2ltZF9wZXJjZW50 YWdlIiwKPiA+ICsgICAgICAgICJNZXRyaWNFeHByIjogIigoQVNFX1NQRUMgLyBJTlNUX1NQRUMp ICogMTAwKSIsCj4gPiArICAgICAgICAiQnJpZWZEZXNjcmlwdGlvbiI6ICJUaGlzIG1ldHJpYyBt ZWFzdXJlcyBhZHZhbmNlZCBTSU1EIG9wZXJhdGlvbnMgYXMgYSBwZXJjZW50YWdlIG9mIHRvdGFs IG9wZXJhdGlvbnMgc3BlY3VsYXRpdmVseSBleGVjdXRlZC4iLAo+ID4gKyAgICAgICAgIk1ldHJp Y0dyb3VwIjogIk9wZXJhdGlvbl9NaXgiLAo+ID4gKyAgICAgICAgIlNjYWxlVW5pdCI6ICIxcGVy Y2VudCBvZiBvcGVyYXRpb25zIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAi TWV0cmljTmFtZSI6ICJzdG9yZV9wZXJjZW50YWdlIiwKPiA+ICsgICAgICAgICJNZXRyaWNFeHBy IjogIigoU1RfU1BFQyAvIElOU1RfU1BFQykgKiAxMDApIiwKPiA+ICsgICAgICAgICJCcmllZkRl c2NyaXB0aW9uIjogIlRoaXMgbWV0cmljIG1lYXN1cmVzIHN0b3JlIG9wZXJhdGlvbnMgYXMgYSBw ZXJjZW50YWdlIG9mIG9wZXJhdGlvbnMgc3BlY3VsYXRpdmVseSBleGVjdXRlZC4iLAo+ID4gKyAg ICAgICAgIk1ldHJpY0dyb3VwIjogIk9wZXJhdGlvbl9NaXgiLAo+ID4gKyAgICAgICAgIlNjYWxl VW5pdCI6ICIxcGVyY2VudCBvZiBvcGVyYXRpb25zIgo+ID4gKyAgICB9Cj4gPiArXQo+ID4gZGlm ZiAtLWdpdCBhL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9uZW92ZXJzZS1u MS9yZXRpcmVkLmpzb24gYi90b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0vbmVv dmVyc2UtbjEvcmV0aXJlZC5qc29uCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXgg MDAwMDAwMDAwMDAwLi4wYzc2OTJhZDUxMDgKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL3Rv b2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9uZW92ZXJzZS1uMS9yZXRpcmVkLmpz b24KPiA+IEBAIC0wLDAgKzEsMjYgQEAKPiA+ICtbCj4gPiArICAgIHsKPiA+ICsgICAgICAgICJB cmNoU3RkRXZlbnQiOiAiU1dfSU5DUiIsCj4gPiArICAgICAgICAiUHVibGljRGVzY3JpcHRpb24i OiAiQ291bnRzIHNvZnR3YXJlIHdyaXRlcyB0byB0aGUgUE1TV0lOQ19FTDAgKHNvZnR3YXJlIFBN VSBpbmNyZW1lbnQpIHJlZ2lzdGVyLiBUaGUgUE1TV0lOQ19FTDAgcmVnaXN0ZXIgaXMgYSBtYW51 YWxseSB1cGRhdGVkIGNvdW50ZXIgZm9yIHVzZSBieSBhcHBsaWNhdGlvbiBzb2Z0d2FyZS5cblxu VGhpcyBldmVudCBjb3VsZCBiZSB1c2VkIHRvIG1lYXN1cmUgYW55IHVzZXIgcHJvZ3JhbSBldmVu dCwgc3VjaCBhcyBhY2Nlc3NlcyB0byBhIHBhcnRpY3VsYXIgZGF0YSBzdHJ1Y3R1cmUgKGJ5IHdy aXRpbmcgdG8gdGhlIFBNU1dJTkNfRUwwIHJlZ2lzdGVyIGVhY2ggdGltZSB0aGUgZGF0YSBzdHJ1 Y3R1cmUgaXMgYWNjZXNzZWQpLlxuXG5UbyB1c2UgdGhlIFBNU1dJTkNfRUwwIHJlZ2lzdGVyIGFu ZCBldmVudCwgZGV2ZWxvcGVycyBtdXN0IGluc2VydCBpbnN0cnVjdGlvbnMgdGhhdCB3cml0ZSB0 byB0aGUgUE1TV0lOQ19FTDAgcmVnaXN0ZXIgaW50byB0aGUgc291cmNlIGNvZGUuXG5cblNpbmNl IHRoZSBTV19JTkNSIGV2ZW50IHJlY29yZHMgd3JpdGVzIHRvIHRoZSBQTVNXSU5DX0VMMCByZWdp c3RlciwgdGhlcmUgaXMgbm8gbmVlZCB0byBkbyBhIHJlYWQvaW5jcmVtZW50L3dyaXRlIHNlcXVl bmNlIHRvIHRoZSBQTVNXSU5DX0VMMCByZWdpc3Rlci4iCj4gPiArICAgIH0sCj4gPiArICAgIHsK PiA+ICsgICAgICAgICJBcmNoU3RkRXZlbnQiOiAiSU5TVF9SRVRJUkVEIiwKPiA+ICsgICAgICAg ICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgaW5zdHJ1Y3Rpb25zIHRoYXQgaGF2ZSBiZWVu IGFyY2hpdGVjdHVyYWxseSBleGVjdXRlZC4iCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsg ICAgICAgICJBcmNoU3RkRXZlbnQiOiAiQ0lEX1dSSVRFX1JFVElSRUQiLAo+ID4gKyAgICAgICAg IlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBhcmNoaXRlY3R1cmFsbHkgZXhlY3V0ZWQgd3Jp dGVzIHRvIHRoZSBDT05URVhUSURSIHJlZ2lzdGVyLCB3aGljaCB1c3VhbGx5IGNvbnRhaW4gdGhl IGtlcm5lbCBQSUQgYW5kIGNhbiBiZSBvdXRwdXQgd2l0aCBoYXJkd2FyZSB0cmFjZS4iCj4gPiAr ICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAgICJBcmNoU3RkRXZlbnQiOiAiVFRCUl9XUklU RV9SRVRJUkVEIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgYXJj aGl0ZWN0dXJhbCB3cml0ZXMgdG8gVFRCUjAvMV9FTDEuIElmIHZpcnR1YWxpemF0aW9uIGhvc3Qg ZXh0ZW5zaW9ucyBhcmUgZW5hYmxlZCAoYnkgc2V0dGluZyB0aGUgSENSX0VMMi5FMkggYml0IHRv IDEpLCB0aGVuIGFjY2Vzc2VzIHRvIFRUQlIwLzFfRUwxIHRoYXQgYXJlIHJlZGlyZWN0ZWQgdG8g VFRCUjAvMV9FTDIsIG9yIGFjY2Vzc2VzIHRvIFRUQlIwLzFfRUwxMiwgYXJlIGNvdW50ZWQuIFRU QlJuIHJlZ2lzdGVycyBhcmUgdHlwaWNhbGx5IHVwZGF0ZWQgd2hlbiB0aGUga2VybmVsIGlzIHN3 YXBwaW5nIHVzZXItc3BhY2UgdGhyZWFkcyBvciBhcHBsaWNhdGlvbnMuIgo+ID4gKyAgICB9LAo+ ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIkJSX1JFVElSRUQiLAo+ID4g KyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBhcmNoaXRlY3R1cmFsbHkgZXhl Y3V0ZWQgYnJhbmNoZXMsIHdoZXRoZXIgdGhlIGJyYW5jaCBpcyB0YWtlbiBvciBub3QuIEluc3Ry dWN0aW9ucyB0aGF0IGV4cGxpY2l0bHkgd3JpdGUgdG8gdGhlIFBDIGFyZSBhbHNvIGNvdW50ZWQu Igo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIkJS X01JU19QUkVEX1JFVElSRUQiLAo+ID4gKyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNv dW50cyBicmFuY2hlcyBjb3VudGVkIGJ5IEJSX1JFVElSRUQgd2hpY2ggd2VyZSBtaXNwcmVkaWN0 ZWQgYW5kIGNhdXNlZCBhIHBpcGVsaW5lIGZsdXNoLiIKPiA+ICsgICAgfQo+ID4gK10KPiA+IGRp ZmYgLS1naXQgYS90b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0vbmVvdmVyc2Ut bjEvc3BlLmpzb24gYi90b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0vbmVvdmVy c2UtbjEvc3BlLmpzb24KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAw MDAwMDAuLjVkZThiMGYzYTQ0MAo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvdG9vbHMvcGVy Zi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL3NwZS5qc29uCj4gPiBAQCAt MCwwICsxLDE4IEBACj4gPiArWwo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50 IjogIlNBTVBMRV9QT1AiLAo+ID4gKyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50 cyBzdGF0aXN0aWNhbCBwcm9maWxpbmcgc2FtcGxlIHBvcHVsYXRpb24sIHRoZSBjb3VudCBvZiBh bGwgb3BlcmF0aW9ucyB0aGF0IGNvdWxkIGJlIHNhbXBsZWQgYnV0IG1heSBvciBtYXkgbm90IGJl IGNob3NlbiBmb3Igc2FtcGxpbmcuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAg ICAiQXJjaFN0ZEV2ZW50IjogIlNBTVBMRV9GRUVEIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNj cmlwdGlvbiI6ICJDb3VudHMgc3RhdGlzdGljYWwgcHJvZmlsaW5nIHNhbXBsZXMgdGFrZW4gZm9y IHNhbXBsaW5nLiIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRF dmVudCI6ICJTQU1QTEVfRklMVFJBVEUiLAo+ID4gKyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9u IjogIkNvdW50cyBzdGF0aXN0aWNhbCBwcm9maWxpbmcgc2FtcGxlcyB0YWtlbiB3aGljaCBhcmUg bm90IHJlbW92ZWQgYnkgZmlsdGVyaW5nLiIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAg ICAgICAgIkFyY2hTdGRFdmVudCI6ICJTQU1QTEVfQ09MTElTSU9OIiwKPiA+ICsgICAgICAgICJQ dWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgc3RhdGlzdGljYWwgcHJvZmlsaW5nIHNhbXBsZXMg dGhhdCBoYXZlIGNvbGxpZGVkIHdpdGggYSBwcmV2aW91cyBzYW1wbGUgYW5kIHNvIHRoZXJlZm9y ZSBub3QgdGFrZW4uIgo+ID4gKyAgICB9Cj4gPiArXQo+ID4gZGlmZiAtLWdpdCBhL3Rvb2xzL3Bl cmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L2FybS9uZW92ZXJzZS1uMS9zcGVjX29wZXJhdGlvbi5q c29uIGIvdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL3Nw ZWNfb3BlcmF0aW9uLmpzb24KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAw MDAwMDAwMDAuLmJlOGMwNjY3ZjFkOQo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvdG9vbHMv cGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJtL25lb3ZlcnNlLW4xL3NwZWNfb3BlcmF0aW9u Lmpzb24KPiA+IEBAIC0wLDAgKzEsMTAyIEBACj4gPiArWwo+ID4gKyAgICB7Cj4gPiArICAgICAg ICAiQXJjaFN0ZEV2ZW50IjogIkJSX01JU19QUkVEIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNj cmlwdGlvbiI6ICJDb3VudHMgYnJhbmNoZXMgd2hpY2ggYXJlIHNwZWN1bGF0aXZlbHkgZXhlY3V0 ZWQgYW5kIG1pc3ByZWRpY3RlZC4iCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAg ICJBcmNoU3RkRXZlbnQiOiAiQlJfUFJFRCIsCj4gPiArICAgICAgICAiUHVibGljRGVzY3JpcHRp b24iOiAiQ291bnRzIGJyYW5jaGVzIHNwZWN1bGF0aXZlbHkgZXhlY3V0ZWQgYW5kIHdlcmUgcHJl ZGljdGVkIHJpZ2h0LiIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hT dGRFdmVudCI6ICJJTlNUX1NQRUMiLAo+ID4gKyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjog IkNvdW50cyBvcGVyYXRpb25zIHRoYXQgaGF2ZSBiZWVuIHNwZWN1bGF0aXZlbHkgZXhlY3V0ZWQu Igo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIlVO QUxJR05FRF9MRF9TUEVDIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3Vu dHMgdW5hbGlnbmVkIG1lbW9yeSByZWFkIG9wZXJhdGlvbnMgaXNzdWVkIGJ5IHRoZSBDUFUuIFRo aXMgZXZlbnQgY291bnRzIHVuYWxpZ25lZCBhY2Nlc3NlcyAoYXMgZGVmaW5lZCBieSB0aGUgYWN0 dWFsIGluc3RydWN0aW9uKSwgZXZlbiBpZiB0aGV5IGFyZSBzdWJzZXF1ZW50bHkgaXNzdWVkIGFz IG11bHRpcGxlIGFsaWduZWQgYWNjZXNzZXMuIFRoZSBldmVudCBkb2VzIG5vdCBjb3VudCBwcmVs b2FkIG9wZXJhdGlvbnMgKFBMRCwgUExJKS4iCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsg ICAgICAgICJBcmNoU3RkRXZlbnQiOiAiVU5BTElHTkVEX1NUX1NQRUMiLAo+ID4gKyAgICAgICAg IlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyB1bmFsaWduZWQgbWVtb3J5IHdyaXRlIG9wZXJh dGlvbnMgaXNzdWVkIGJ5IHRoZSBDUFUuIFRoaXMgZXZlbnQgY291bnRzIHVuYWxpZ25lZCBhY2Nl c3NlcyAoYXMgZGVmaW5lZCBieSB0aGUgYWN0dWFsIGluc3RydWN0aW9uKSwgZXZlbiBpZiB0aGV5 IGFyZSBzdWJzZXF1ZW50bHkgaXNzdWVkIGFzIG11bHRpcGxlIGFsaWduZWQgYWNjZXNzZXMuIgo+ ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIlVOQUxJ R05FRF9MRFNUX1NQRUMiLAo+ID4gKyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50 cyB1bmFsaWduZWQgbWVtb3J5IG9wZXJhdGlvbnMgaXNzdWVkIGJ5IHRoZSBDUFUuIFRoaXMgZXZl bnQgY291bnRzIHVuYWxpZ25lZCBhY2Nlc3NlcyAoYXMgZGVmaW5lZCBieSB0aGUgYWN0dWFsIGlu c3RydWN0aW9uKSwgZXZlbiBpZiB0aGV5IGFyZSBzdWJzZXF1ZW50bHkgaXNzdWVkIGFzIG11bHRp cGxlIGFsaWduZWQgYWNjZXNzZXMuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAg ICAiQXJjaFN0ZEV2ZW50IjogIkxEUkVYX1NQRUMiLAo+ID4gKyAgICAgICAgIlB1YmxpY0Rlc2Ny aXB0aW9uIjogIkNvdW50cyBMb2FkLUV4Y2x1c2l2ZSBvcGVyYXRpb25zIHRoYXQgaGF2ZSBiZWVu IHNwZWN1bGF0aXZlbHkgZXhlY3V0ZWQuIEVnOiBMRFJFWCwgTERYIgo+ID4gKyAgICB9LAo+ID4g KyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIlNUUkVYX1BBU1NfU1BFQyIsCj4g PiArICAgICAgICAiUHVibGljRGVzY3JpcHRpb24iOiAiQ291bnRzIHN0b3JlLWV4Y2x1c2l2ZSBv cGVyYXRpb25zIHRoYXQgaGF2ZSBiZWVuIHNwZWN1bGF0aXZlbHkgZXhlY3V0ZWQgYW5kIGhhdmUg c3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCB0aGUgc3RvcmUgb3BlcmF0aW9uLiIKPiA+ICsgICAgfSwK PiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRFdmVudCI6ICJTVFJFWF9GQUlMX1NQRUMi LAo+ID4gKyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBzdG9yZS1leGNsdXNp dmUgb3BlcmF0aW9ucyB0aGF0IGhhdmUgYmVlbiBzcGVjdWxhdGl2ZWx5IGV4ZWN1dGVkIGFuZCBo YXZlIG5vdCBzdWNjZXNzZnVsbHkgY29tcGxldGVkIHRoZSBzdG9yZSBvcGVyYXRpb24uIgo+ID4g KyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIlNUUkVYX1NQ RUMiLAo+ID4gKyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBzdG9yZS1leGNs dXNpdmUgb3BlcmF0aW9ucyB0aGF0IGhhdmUgYmVlbiBzcGVjdWxhdGl2ZWx5IGV4ZWN1dGVkLiIK PiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRFdmVudCI6ICJMRF9T UEVDIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgc3BlY3VsYXRp dmVseSBleGVjdXRlZCBsb2FkIG9wZXJhdGlvbnMgaW5jbHVkaW5nIFNpbmdsZSBJbnN0cnVjdGlv biBNdWx0aXBsZSBEYXRhIChTSU1EKSBsb2FkIG9wZXJhdGlvbnMuIgo+ID4gKyAgICB9LAo+ID4g KyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIlNUX1NQRUMiLAo+ID4gKyAgICAg ICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBzcGVjdWxhdGl2ZWx5IGV4ZWN1dGVkIHN0 b3JlIG9wZXJhdGlvbnMgaW5jbHVkaW5nIFNpbmdsZSBJbnN0cnVjdGlvbiBNdWx0aXBsZSBEYXRh IChTSU1EKSBzdG9yZSBvcGVyYXRpb25zLiIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAg ICAgICAgIkFyY2hTdGRFdmVudCI6ICJEUF9TUEVDIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNj cmlwdGlvbiI6ICJDb3VudHMgc3BlY3VsYXRpdmVseSBleGVjdXRlZCBsb2dpY2FsIG9yIGFyaXRo bWV0aWMgaW5zdHJ1Y3Rpb25zIHN1Y2ggYXMgTU9WL01WTiBvcGVyYXRpb25zLiIKPiA+ICsgICAg fSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRFdmVudCI6ICJBU0VfU1BFQyIsCj4g PiArICAgICAgICAiUHVibGljRGVzY3JpcHRpb24iOiAiQ291bnRzIHNwZWN1bGF0aXZlbHkgZXhl Y3V0ZWQgQWR2YW5jZWQgU0lNRCBvcGVyYXRpb25zIGV4Y2x1ZGluZyBsb2FkLCBzdG9yZSBhbmQg bW92ZSBtaWNyby1vcGVyYXRpb25zIHRoYXQgbW92ZSBkYXRhIHRvIG9yIGZyb20gU0lNRCAodmVj dG9yKSByZWdpc3RlcnMuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJj aFN0ZEV2ZW50IjogIlZGUF9TUEVDIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6 ICJDb3VudHMgc3BlY3VsYXRpdmVseSBleGVjdXRlZCBmbG9hdGluZyBwb2ludCBvcGVyYXRpb25z LiBUaGlzIGV2ZW50IGRvZXMgbm90IGNvdW50IG9wZXJhdGlvbnMgdGhhdCBtb3ZlIGRhdGEgdG8g b3IgZnJvbSBmbG9hdGluZyBwb2ludCAodmVjdG9yKSByZWdpc3RlcnMuIgo+ID4gKyAgICB9LAo+ ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIlBDX1dSSVRFX1NQRUMiLAo+ ID4gKyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBzcGVjdWxhdGl2ZWx5IGV4 ZWN1dGVkIG9wZXJhdGlvbnMgd2hpY2ggY2F1c2Ugc29mdHdhcmUgY2hhbmdlcyBvZiB0aGUgUEMu IFRob3NlIG9wZXJhdGlvbnMgaW5jbHVkZSBhbGwgdGFrZW4gYnJhbmNoIG9wZXJhdGlvbnMuIgo+ ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIkNSWVBU T19TUEVDIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgc3BlY3Vs YXRpdmVseSBleGVjdXRlZCBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMgZXhjZXB0IGZvciBQTVVM TCBhbmQgVk1VTEwgb3BlcmF0aW9ucy4iCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAg ICAgICJBcmNoU3RkRXZlbnQiOiAiQlJfSU1NRURfU1BFQyIsCj4gPiArICAgICAgICAiUHVibGlj RGVzY3JpcHRpb24iOiAiQ291bnRzIGltbWVkaWF0ZSBicmFuY2ggb3BlcmF0aW9ucyB3aGljaCBh cmUgc3BlY3VsYXRpdmVseSBleGVjdXRlZC4iCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsg ICAgICAgICJBcmNoU3RkRXZlbnQiOiAiQlJfUkVUVVJOX1NQRUMiLAo+ID4gKyAgICAgICAgIlB1 YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBwcm9jZWR1cmUgcmV0dXJuIG9wZXJhdGlvbnMgKFJF VCkgd2hpY2ggYXJlIHNwZWN1bGF0aXZlbHkgZXhlY3V0ZWQuIgo+ID4gKyAgICB9LAo+ID4gKyAg ICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIkJSX0lORElSRUNUX1NQRUMiLAo+ID4g KyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBpbmRpcmVjdCBicmFuY2ggb3Bl cmF0aW9ucyBpbmNsdWRpbmcgcHJvY2VkdXJlIHJldHVybnMsIHdoaWNoIGFyZSBzcGVjdWxhdGl2 ZWx5IGV4ZWN1dGVkLiBUaGlzIGluY2x1ZGVzIG9wZXJhdGlvbnMgdGhhdCBmb3JjZSBhIHNvZnR3 YXJlIGNoYW5nZSBvZiB0aGUgUEMsIG90aGVyIHRoYW4gZXhjZXB0aW9uLWdlbmVyYXRpbmcgb3Bl cmF0aW9ucy4gIEVnOiBCUiBYbiwgUkVUIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAg ICAgICAiQXJjaFN0ZEV2ZW50IjogIklTQl9TUEVDIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNj cmlwdGlvbiI6ICJDb3VudHMgSVNCIG9wZXJhdGlvbnMgdGhhdCBhcmUgZXhlY3V0ZWQuIgo+ID4g KyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIkRTQl9TUEVD IiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgRFNCIG9wZXJhdGlv bnMgdGhhdCBhcmUgc3BlY3VsYXRpdmVseSBpc3N1ZWQgdG8gTG9hZC9TdG9yZSB1bml0IGluIHRo ZSBDUFUuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50 IjogIkRNQl9TUEVDIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMg RE1CIG9wZXJhdGlvbnMgdGhhdCBhcmUgc3BlY3VsYXRpdmVseSBpc3N1ZWQgdG8gdGhlIExvYWQv U3RvcmUgdW5pdCBpbiB0aGUgQ1BVLiBUaGlzIGV2ZW50IGRvZXMgbm90IGNvdW50IGltcGxpZWQg YmFycmllcnMgZnJvbSBsb2FkIGFjcXVpcmUvc3RvcmUgcmVsZWFzZSBvcGVyYXRpb25zLiIKPiA+ ICsgICAgfSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRFdmVudCI6ICJSQ19MRF9T UEVDIiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgYW55IGxvYWQg YWNxdWlyZSBvcGVyYXRpb25zIHRoYXQgYXJlIHNwZWN1bGF0aXZlbHkgZXhlY3V0ZWQuIEVnOiBM REFSLCBMREFSSCwgTERBUkIiCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAgICJB cmNoU3RkRXZlbnQiOiAiUkNfU1RfU1BFQyIsCj4gPiArICAgICAgICAiUHVibGljRGVzY3JpcHRp b24iOiAiQ291bnRzIGFueSBzdG9yZSByZWxlYXNlIG9wZXJhdGlvbnMgdGhhdCBhcmUgc3BlY3Vs YXRpdmVseSBleGVjdXRlZC4gRWc6IFNUTFIsIFNUTFJILCBTVExSQiciCj4gPiArICAgIH0KPiA+ ICtdCj4gPiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9wbXUtZXZlbnRzL2FyY2gvYXJtNjQvYXJt L25lb3ZlcnNlLW4xL3N0YWxsLmpzb24gYi90b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02 NC9hcm0vbmVvdmVyc2UtbjEvc3RhbGwuanNvbgo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ IGluZGV4IDAwMDAwMDAwMDAwMC4uNjg4YWZkOGE0MDYxCj4gPiAtLS0gL2Rldi9udWxsCj4gPiAr KysgYi90b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0vbmVvdmVyc2UtbjEvc3Rh bGwuanNvbgo+ID4gQEAgLTAsMCArMSwxMCBAQAo+ID4gK1sKPiA+ICsgICAgewo+ID4gKyAgICAg ICAgIkFyY2hTdGRFdmVudCI6ICJTVEFMTF9GUk9OVEVORCIsCj4gPiArICAgICAgICAiUHVibGlj RGVzY3JpcHRpb24iOiAiQ291bnRzIGN5Y2xlcyB3aGVuIGZyb250ZW5kIGNvdWxkIG5vdCBzZW5k IGFueSBtaWNyby1vcGVyYXRpb25zIHRvIHRoZSByZW5hbWUgc3RhZ2UgYmVjYXVzZSBvZiBmcm9u dGVuZCByZXNvdXJjZSBzdGFsbHMgY2F1c2VkIGJ5IGZldGNoIG1lbW9yeSBsYXRlbmN5IG9yIGJy YW5jaCBwcmVkaWN0aW9uIGZsb3cgc3RhbGxzLiBBbGwgdGhlIGZyb250ZW5kIHNsb3RzIHdlcmUg ZW1wdHkgZHVyaW5nIHRoZSBjeWNsZSB3aGVuIHRoaXMgZXZlbnQgY291bnRzLiIKPiA+ICsgICAg fSwKPiA+ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRFdmVudCI6ICJTVEFMTF9CQUNLRU5E IiwKPiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgY3ljbGVzIHdoZW5l dmVyIHRoZSByZW5hbWUgdW5pdCBpcyB1bmFibGUgdG8gc2VuZCBhbnkgbWljcm8tb3BlcmF0aW9u cyB0byB0aGUgYmFja2VuZCBvZiB0aGUgcGlwZWxpbmUgYmVjYXVzZSBvZiBiYWNrZW5kIHJlc291 cmNlIGNvbnN0cmFpbnRzLiBCYWNrZW5kIHJlc291cmNlIGNvbnN0cmFpbnRzIGNhbiBpbmNsdWRl IGlzc3VlIHN0YWdlIGZ1bGxuZXNzLCBleGVjdXRpb24gc3RhZ2UgZnVsbG5lc3MsIG9yIG90aGVy IGludGVybmFsIHBpcGVsaW5lIHJlc291cmNlIGZ1bGxuZXNzLiBBbGwgdGhlIGJhY2tlbmQgc2xv dHMgd2VyZSBlbXB0eSBkdXJpbmcgdGhlIGN5Y2xlIHdoZW4gdGhpcyBldmVudCBjb3VudHMuIgo+ ID4gKyAgICB9Cj4gPiArXQo+ID4gZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9h cmNoL2FybTY0L2FybS9uZW92ZXJzZS1uMS90bGIuanNvbiBiL3Rvb2xzL3BlcmYvcG11LWV2ZW50 cy9hcmNoL2FybTY0L2FybS9uZW92ZXJzZS1uMS90bGIuanNvbgo+ID4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uYjU1MGFmMTgzMWY1Cj4gPiAtLS0gL2Rldi9u dWxsCj4gPiArKysgYi90b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02NC9hcm0vbmVvdmVy c2UtbjEvdGxiLmpzb24KPiA+IEBAIC0wLDAgKzEsNjYgQEAKPiA+ICtbCj4gPiArICAgIHsKPiA+ ICsgICAgICAgICJBcmNoU3RkRXZlbnQiOiAiTDFJX1RMQl9SRUZJTEwiLAo+ID4gKyAgICAgICAg IlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBsZXZlbCAxIGluc3RydWN0aW9uIFRMQiByZWZp bGxzIGZyb20gYW55IEluc3RydWN0aW9uIGZldGNoLiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgbWlz c2VzIGluIHRoZSBUTEIgdGhhdCBhcmUgcmVzb2x2ZWQgYnkgdGhlIHJlZmlsbCwgdGhlbiB0aGlz IGV2ZW50IG9ubHkgY291bnRzIG9uY2UuIFRoaXMgZXZlbnQgd2lsbCBub3QgY291bnQgaWYgdGhl IHRyYW5zbGF0aW9uIHRhYmxlIHdhbGsgcmVzdWx0cyBpbiBhIGZhdWx0IChzdWNoIGFzIGEgdHJh bnNsYXRpb24gb3IgYWNjZXNzIGZhdWx0KSwgc2luY2UgdGhlcmUgaXMgbm8gbmV3IHRyYW5zbGF0 aW9uIGNyZWF0ZWQgZm9yIHRoZSBUTEIuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAg ICAgICAiQXJjaFN0ZEV2ZW50IjogIkwxRF9UTEJfUkVGSUxMIiwKPiA+ICsgICAgICAgICJQdWJs aWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgbGV2ZWwgMSBkYXRhIFRMQiBhY2Nlc3NlcyB0aGF0IHJl c3VsdGVkIGluIFRMQiByZWZpbGxzLiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgbWlzc2VzIGluIHRo ZSBUTEIgdGhhdCBhcmUgcmVzb2x2ZWQgYnkgdGhlIHJlZmlsbCwgdGhlbiB0aGlzIGV2ZW50IG9u bHkgY291bnRzIG9uY2UuIFRoaXMgZXZlbnQgY291bnRzIGZvciByZWZpbGxzIGNhdXNlZCBieSBw cmVsb2FkIGluc3RydWN0aW9ucyBvciBoYXJkd2FyZSBwcmVmZXRjaCBhY2Nlc3Nlcy4gVGhpcyBl dmVudCBjb3VudHMgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBtaXNzIGhpdHMgaW4gTDIgb3Ig cmVzdWx0cyBpbiBhIHRyYW5zbGF0aW9uIHRhYmxlIHdhbGsuIFRoaXMgZXZlbnQgd2lsbCBub3Qg Y291bnQgaWYgdGhlIHRyYW5zbGF0aW9uIHRhYmxlIHdhbGsgcmVzdWx0cyBpbiBhIGZhdWx0IChz dWNoIGFzIGEgdHJhbnNsYXRpb24gb3IgYWNjZXNzIGZhdWx0KSwgc2luY2UgdGhlcmUgaXMgbm8g bmV3IHRyYW5zbGF0aW9uIGNyZWF0ZWQgZm9yIHRoZSBUTEIuIFRoaXMgZXZlbnQgd2lsbCBub3Qg Y291bnQgb24gYW4gYWNjZXNzIGZyb20gYW4gQVQoYWRkcmVzcyB0cmFuc2xhdGlvbikgaW5zdHJ1 Y3Rpb24uIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50 IjogIkwxRF9UTEIiLAo+ID4gKyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBs ZXZlbCAxIGRhdGEgVExCIGFjY2Vzc2VzIGNhdXNlZCBieSBhbnkgbWVtb3J5IGxvYWQgb3Igc3Rv cmUgb3BlcmF0aW9uLiBOb3RlIHRoYXQgbG9hZCBvciBzdG9yZSBpbnN0cnVjdGlvbnMgY2FuIGJl IGJyb2tlbiB1cCBpbnRvIG11bHRpcGxlIG1lbW9yeSBvcGVyYXRpb25zLiBUaGlzIGV2ZW50IGRv ZXMgbm90IGNvdW50IFRMQiBtYWludGVuYW5jZSBvcGVyYXRpb25zLiIKPiA+ICsgICAgfSwKPiA+ ICsgICAgewo+ID4gKyAgICAgICAgIkFyY2hTdGRFdmVudCI6ICJMMUlfVExCIiwKPiA+ICsgICAg ICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgbGV2ZWwgMSBpbnN0cnVjdGlvbiBUTEIg YWNjZXNzZXMsIHdoZXRoZXIgdGhlIGFjY2VzcyBoaXRzIG9yIG1pc3NlcyBpbiB0aGUgVExCLiBU aGlzIGV2ZW50IGNvdW50cyBib3RoIGRlbWFuZCBhY2Nlc3NlcyBhbmQgcHJlZmV0Y2ggb3IgcHJl bG9hZCBnZW5lcmF0ZWQgYWNjZXNzZXMuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAg ICAgICAiQXJjaFN0ZEV2ZW50IjogIkwyRF9UTEJfUkVGSUxMIiwKPiA+ICsgICAgICAgICJQdWJs aWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgbGV2ZWwgMiBUTEIgcmVmaWxscyBjYXVzZWQgYnkgbWVt b3J5IG9wZXJhdGlvbnMgZnJvbSBib3RoIGRhdGEgYW5kIGluc3RydWN0aW9uIGZldGNoLCBleGNl cHQgZm9yIHRob3NlIGNhdXNlZCBieSBUTEIgbWFpbnRlbmFuY2Ugb3BlcmF0aW9ucyBhbmQgaGFy ZHdhcmUgcHJlZmV0Y2hlcy4iCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAgICJB cmNoU3RkRXZlbnQiOiAiTDJEX1RMQiIsCj4gPiArICAgICAgICAiUHVibGljRGVzY3JpcHRpb24i OiAiQ291bnRzIGxldmVsIDIgVExCIGFjY2Vzc2VzIGV4Y2VwdCB0aG9zZSBjYXVzZWQgYnkgVExC IG1haW50ZW5hbmNlIG9wZXJhdGlvbnMuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAg ICAgICAiQXJjaFN0ZEV2ZW50IjogIkRUTEJfV0FMSyIsCj4gPiArICAgICAgICAiUHVibGljRGVz Y3JpcHRpb24iOiAiQ291bnRzIGRhdGEgbWVtb3J5IHRyYW5zbGF0aW9uIHRhYmxlIHdhbGtzIGNh dXNlZCBieSBhIG1pc3MgaW4gdGhlIEwyIFRMQiBkcml2ZW4gYnkgYSBtZW1vcnkgYWNjZXNzLiBO b3RlIHRoYXQgcGFydGlhbCB0cmFuc2xhdGlvbnMgdGhhdCBhbHNvIGNhdXNlIGEgdGFibGUgd2Fs ayBhcmUgY291bnRlZC4gVGhpcyBldmVudCBkb2VzIG5vdCBjb3VudCB0YWJsZSB3YWxrcyBjYXVz ZWQgYnkgVExCIG1haW50ZW5hbmNlIG9wZXJhdGlvbnMuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7 Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIklUTEJfV0FMSyIsCj4gPiArICAgICAgICAi UHVibGljRGVzY3JpcHRpb24iOiAiQ291bnRzIGluc3RydWN0aW9uIG1lbW9yeSB0cmFuc2xhdGlv biB0YWJsZSB3YWxrcyBjYXVzZWQgYnkgYSBtaXNzIGluIHRoZSBMMiBUTEIgZHJpdmVuIGJ5IGEg bWVtb3J5IGFjY2Vzcy4gUGFydGlhbCB0cmFuc2xhdGlvbnMgdGhhdCBhbHNvIGNhdXNlIGEgdGFi bGUgd2FsayBhcmUgY291bnRlZC4gVGhpcyBldmVudCBkb2VzIG5vdCBjb3VudCB0YWJsZSB3YWxr cyBjYXVzZWQgYnkgVExCIG1haW50ZW5hbmNlIG9wZXJhdGlvbnMuIgo+ID4gKyAgICB9LAo+ID4g KyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIkwxRF9UTEJfUkVGSUxMX1JEIiwK PiA+ICsgICAgICAgICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgbGV2ZWwgMSBkYXRhIFRM QiByZWZpbGxzIGNhdXNlZCBieSBtZW1vcnkgcmVhZCBvcGVyYXRpb25zLiBJZiB0aGVyZSBhcmUg bXVsdGlwbGUgbWlzc2VzIGluIHRoZSBUTEIgdGhhdCBhcmUgcmVzb2x2ZWQgYnkgdGhlIHJlZmls bCwgdGhlbiB0aGlzIGV2ZW50IG9ubHkgY291bnRzIG9uY2UuIFRoaXMgZXZlbnQgY291bnRzIGZv ciByZWZpbGxzIGNhdXNlZCBieSBwcmVsb2FkIGluc3RydWN0aW9ucyBvciBoYXJkd2FyZSBwcmVm ZXRjaCBhY2Nlc3Nlcy4gVGhpcyBldmVudCBjb3VudHMgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRo ZSBtaXNzIGhpdHMgaW4gTDIgb3IgcmVzdWx0cyBpbiBhIHRyYW5zbGF0aW9uIHRhYmxlIHdhbGsu IFRoaXMgZXZlbnQgd2lsbCBub3QgY291bnQgaWYgdGhlIHRyYW5zbGF0aW9uIHRhYmxlIHdhbGsg cmVzdWx0cyBpbiBhIGZhdWx0IChzdWNoIGFzIGEgdHJhbnNsYXRpb24gb3IgYWNjZXNzIGZhdWx0 KSwgc2luY2UgdGhlcmUgaXMgbm8gbmV3IHRyYW5zbGF0aW9uIGNyZWF0ZWQgZm9yIHRoZSBUTEIu IFRoaXMgZXZlbnQgd2lsbCBub3QgY291bnQgb24gYW4gYWNjZXNzIGZyb20gYW4gQWRkcmVzcyBU cmFuc2xhdGlvbiAoQVQpIGluc3RydWN0aW9uLiIKPiA+ICsgICAgfSwKPiA+ICsgICAgewo+ID4g KyAgICAgICAgIkFyY2hTdGRFdmVudCI6ICJMMURfVExCX1JFRklMTF9XUiIsCj4gPiArICAgICAg ICAiUHVibGljRGVzY3JpcHRpb24iOiAiQ291bnRzIGxldmVsIDEgZGF0YSBUTEIgcmVmaWxscyBj YXVzZWQgYnkgZGF0YSBzaWRlIG1lbW9yeSB3cml0ZSBvcGVyYXRpb25zLiBJZiB0aGVyZSBhcmUg bXVsdGlwbGUgbWlzc2VzIGluIHRoZSBUTEIgdGhhdCBhcmUgcmVzb2x2ZWQgYnkgdGhlIHJlZmls bCwgdGhlbiB0aGlzIGV2ZW50IG9ubHkgY291bnRzIG9uY2UuIFRoaXMgZXZlbnQgY291bnRzIGZv ciByZWZpbGxzIGNhdXNlZCBieSBwcmVsb2FkIGluc3RydWN0aW9ucyBvciBoYXJkd2FyZSBwcmVm ZXRjaCBhY2Nlc3Nlcy4gVGhpcyBldmVudCBjb3VudHMgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRo ZSBtaXNzIGhpdHMgaW4gTDIgb3IgcmVzdWx0cyBpbiBhIHRyYW5zbGF0aW9uIHRhYmxlIHdhbGsu IFRoaXMgZXZlbnQgd2lsbCBub3QgY291bnQgaWYgdGhlIHRhYmxlIHdhbGsgcmVzdWx0cyBpbiBh IGZhdWx0IChzdWNoIGFzIGEgdHJhbnNsYXRpb24gb3IgYWNjZXNzIGZhdWx0KSwgc2luY2UgdGhl cmUgaXMgbm8gbmV3IHRyYW5zbGF0aW9uIGNyZWF0ZWQgZm9yIHRoZSBUTEIuIFRoaXMgZXZlbnQg d2lsbCBub3QgY291bnQgd2l0aCBhbiBhY2Nlc3MgZnJvbSBhbiBBZGRyZXNzIFRyYW5zbGF0aW9u IChBVCkgaW5zdHJ1Y3Rpb24uIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAi QXJjaFN0ZEV2ZW50IjogIkwxRF9UTEJfUkQiLAo+ID4gKyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0 aW9uIjogIkNvdW50cyBsZXZlbCAxIGRhdGEgVExCIGFjY2Vzc2VzIGNhdXNlZCBieSBtZW1vcnkg cmVhZCBvcGVyYXRpb25zLiBUaGlzIGV2ZW50IGNvdW50cyB3aGV0aGVyIHRoZSBhY2Nlc3MgaGl0 cyBvciBtaXNzZXMgaW4gdGhlIFRMQi4gVGhpcyBldmVudCBkb2VzIG5vdCBjb3VudCBUTEIgbWFp bnRlbmFuY2Ugb3BlcmF0aW9ucy4iCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsgICAgICAg ICJBcmNoU3RkRXZlbnQiOiAiTDFEX1RMQl9XUiIsCj4gPiArICAgICAgICAiUHVibGljRGVzY3Jp cHRpb24iOiAiQ291bnRzIGFueSBMMSBkYXRhIHNpZGUgVExCIGFjY2Vzc2VzIGNhdXNlZCBieSBt ZW1vcnkgd3JpdGUgb3BlcmF0aW9ucy4gVGhpcyBldmVudCBjb3VudHMgd2hldGhlciB0aGUgYWNj ZXNzIGhpdHMgb3IgbWlzc2VzIGluIHRoZSBUTEIuIFRoaXMgZXZlbnQgZG9lcyBub3QgY291bnQg VExCIG1haW50ZW5hbmNlIG9wZXJhdGlvbnMuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiAr ICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIkwyRF9UTEJfUkVGSUxMX1JEIiwKPiA+ICsgICAgICAg ICJQdWJsaWNEZXNjcmlwdGlvbiI6ICJDb3VudHMgbGV2ZWwgMiBUTEIgcmVmaWxscyBjYXVzZWQg YnkgbWVtb3J5IHJlYWQgb3BlcmF0aW9ucyBmcm9tIGJvdGggZGF0YSBhbmQgaW5zdHJ1Y3Rpb24g ZmV0Y2ggZXhjZXB0IGZvciB0aG9zZSBjYXVzZWQgYnkgVExCIG1haW50ZW5hbmNlIG9wZXJhdGlv bnMgb3IgaGFyZHdhcmUgcHJlZmV0Y2hlcy4iCj4gPiArICAgIH0sCj4gPiArICAgIHsKPiA+ICsg ICAgICAgICJBcmNoU3RkRXZlbnQiOiAiTDJEX1RMQl9SRUZJTExfV1IiLAo+ID4gKyAgICAgICAg IlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBsZXZlbCAyIFRMQiByZWZpbGxzIGNhdXNlZCBi eSBtZW1vcnkgd3JpdGUgb3BlcmF0aW9ucyBmcm9tIGJvdGggZGF0YSBhbmQgaW5zdHJ1Y3Rpb24g ZmV0Y2ggZXhjZXB0IGZvciB0aG9zZSBjYXVzZWQgYnkgVExCIG1haW50ZW5hbmNlIG9wZXJhdGlv bnMuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4gPiArICAgICAgICAiQXJjaFN0ZEV2ZW50Ijog IkwyRF9UTEJfUkQiLAo+ID4gKyAgICAgICAgIlB1YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBs ZXZlbCAyIFRMQiBhY2Nlc3NlcyBjYXVzZWQgYnkgbWVtb3J5IHJlYWQgb3BlcmF0aW9ucyBmcm9t IGJvdGggZGF0YSBhbmQgaW5zdHJ1Y3Rpb24gZmV0Y2ggZXhjZXB0IGZvciB0aG9zZSBjYXVzZWQg YnkgVExCIG1haW50ZW5hbmNlIG9wZXJhdGlvbnMuIgo+ID4gKyAgICB9LAo+ID4gKyAgICB7Cj4g PiArICAgICAgICAiQXJjaFN0ZEV2ZW50IjogIkwyRF9UTEJfV1IiLAo+ID4gKyAgICAgICAgIlB1 YmxpY0Rlc2NyaXB0aW9uIjogIkNvdW50cyBsZXZlbCAyIFRMQiBhY2Nlc3NlcyBjYXVzZWQgYnkg bWVtb3J5IHdyaXRlIG9wZXJhdGlvbnMgZnJvbSBib3RoIGRhdGEgYW5kIGluc3RydWN0aW9uIGZl dGNoIGV4Y2VwdCBmb3IgdGhvc2UgY2F1c2VkIGJ5IFRMQiBtYWludGVuYW5jZSBvcGVyYXRpb25z LiIKPiA+ICsgICAgfQo+ID4gK10KPiA+IGRpZmYgLS1naXQgYS90b29scy9wZXJmL3BtdS1ldmVu dHMvYXJjaC9hcm02NC9tYXBmaWxlLmNzdiBiL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2Fy bTY0L21hcGZpbGUuY3N2Cj4gPiBpbmRleCBmMTM0ZTgzM2MwNjkuLjlkNDAwNzg1ZDE5NSAxMDA2 NDQKPiA+IC0tLSBhL3Rvb2xzL3BlcmYvcG11LWV2ZW50cy9hcmNoL2FybTY0L21hcGZpbGUuY3N2 Cj4gPiArKysgYi90b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9hcm02NC9tYXBmaWxlLmNzdgo+ ID4gQEAgLTIzLDggKzIzLDggQEAKPiA+ICAweDAwMDAwMDAwNDEwZmQwODAsdjEsYXJtL2NvcnRl eC1hNTctYTcyLGNvcmUKPiA+ICAweDAwMDAwMDAwNDEwZmQwOTAsdjEsYXJtL2NvcnRleC1hNzMs Y29yZQo+ID4gIDB4MDAwMDAwMDA0MTBmZDBhMCx2MSxhcm0vY29ydGV4LWE3NSxjb3JlCj4gPiAt MHgwMDAwMDAwMDQxMGZkMGIwLHYxLGFybS9jb3J0ZXgtYTc2LW4xLGNvcmUKPiA+IC0weDAwMDAw MDAwNDEwZmQwYzAsdjEsYXJtL2NvcnRleC1hNzYtbjEsY29yZQo+ID4gKzB4MDAwMDAwMDA0MTBm ZDBiMCx2MSxhcm0vY29ydGV4LWE3Nixjb3JlCj4gPiArMHgwMDAwMDAwMDQxMGZkMGMwLHYxLGFy bS9uZW92ZXJzZS1uMSxjb3JlCj4gPiAgMHgwMDAwMDAwMDQxMGZkMGQwLHYxLGFybS9jb3J0ZXgt YTc3LGNvcmUKPiA+ICAweDAwMDAwMDAwNDEwZmQ0MDAsdjEsYXJtL25lb3ZlcnNlLXYxLGNvcmUK PiA+ICAweDAwMDAwMDAwNDEwZmQ0MTAsdjEsYXJtL2NvcnRleC1hNzgsY29yZQo+ID4gLS0KPiA+ IDIuMzQuMQo+ID4KCi0tIAoKLSBBcm5hbGRvCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==