From unknown Tue Aug 19 02:51:15 2025 X-Loop: help-debbugs@gnu.org Subject: bug#58732: installer: finalizers & device destroy segfault Resent-From: Mathieu Othacehe Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Sun, 23 Oct 2022 09:08:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 58732 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: 58732@debbugs.gnu.org X-Debbugs-Original-To: bug-guix@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.16665160565897 (code B ref -1); Sun, 23 Oct 2022 09:08:01 +0000 Received: (at submit) by debbugs.gnu.org; 23 Oct 2022 09:07:36 +0000 Received: from localhost ([127.0.0.1]:42849 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1omWxE-0001X3-6V for submit@debbugs.gnu.org; Sun, 23 Oct 2022 05:07:36 -0400 Received: from lists.gnu.org ([209.51.188.17]:47374) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1omWxC-0001Wv-98 for submit@debbugs.gnu.org; Sun, 23 Oct 2022 05:07:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1omWxC-0007Pp-1i for bug-guix@gnu.org; Sun, 23 Oct 2022 05:07:34 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1omWxB-000284-OV for bug-guix@gnu.org; Sun, 23 Oct 2022 05:07:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:Subject:To:From:in-reply-to: references; bh=rRjDJWNCR7zljL3ZjtxmL7Nr1IhlLrkDlXyn3Hdzego=; b=KmH/z/ThRkVkd5 0YIAyTaE81u/6mUoXwxKxjK3DZ/4cYT3qQai4DLDM4BZ7djROBz861FHYPG1RhRKZwee8phawAtUE mGNS3nelGQXNA+Qsoqof7e/h9CF7CYMPUDnZZKjYwMS+9HRLzQ9vi7bFOKC5YuDbk1mYcBL9vBoqO OWtMAJ5ZKem5bOuRWpeeuo+wsKqjw9PuwOSPNod7n31bOK0P5DKKPIQbeDOrMhy9/2p1rV1hk8R7f ccxwx6D95jAIkGs9Mh1fV2prbGWJT+aUK0tXfoD0ouZrRMAF0HTB9fvxup36ThWY/u0CjmQGweosl Xpx2ZdZeJvRCFCHjXElg==; Received: from 2a02-8429-81d2-3d01-94c9-8097-ea5c-2775.rev.sfr.net ([2a02:8429:81d2:3d01:94c9:8097:ea5c:2775] helo=meije) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1omWxB-0004ZH-7i for bug-guix@gnu.org; Sun, 23 Oct 2022 05:07:33 -0400 From: Mathieu Othacehe Date: Sun, 23 Oct 2022 11:07:31 +0200 Message-ID: <87v8oa29ik.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.8 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.8 (--) Hello, I found a segfault in the installer by running those steps: - Run an automatic partitioning with separate home and no encryption - In the final configuration page, come back to partitioning - Remove all partitions but the ESP one, create a new btrfs root - partition - Repeat until the crash occurs Using Josselin's instructions here: https://issues.guix.gnu.org/57513, I was able to get the following backtrace: --8<---------------cut here---------------start------------->8--- Reading symbols from /gnu/store/b0ymz7vjfkcvhbci49q5yk1fi0l9lq49-parted-3.5/lib/libparted.so... (gdb) bt #0 linux_destroy (dev=0x1dc89e0) at arch/linux.c:1615 #1 0x00007f8941aecd37 in ?? () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #2 0x00007f8941a45e3f in GC_invoke_finalizers () from /gnu/store/2lczkxbdbzh4gk7wh91bzrqrk7h5g1dl-libgc-8.0.4/lib/libgc.so.1 #3 0x00007f8941aed429 in scm_run_finalizers () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #4 0x00007f8941af4482 in ?? () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #5 0x00007f8941ae085a in ?? () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #6 0x00007f8941b6d336 in ?? () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #7 0x00007f8941b7a5e9 in scm_call_n () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #8 0x00007f8941ae209a in scm_call_2 () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #9 0x00007f8941b98752 in ?? () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #10 0x00007f8941b6a88f in scm_c_catch () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #11 0x00007f8941ae2e66 in scm_c_with_continuation_barrier () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #12 0x00007f8941b69b39 in ?? () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #13 0x00007f8941a400ba in GC_call_with_stack_base () from /gnu/store/2lczkxbdbzh4gk7wh91bzrqrk7h5g1dl-libgc-8.0.4/lib/libgc.so.1 #14 0x00007f8941b628b8 in scm_with_guile () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #15 0x00007f8941a16d7e in ?? () from /gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/lib/libpthread.so.0 #16 0x00007f8941614eff in clone () from /gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/lib/libc.so.6 --8<---------------cut here---------------end--------------->8--- linux_destroy is the PedDevice destruction function. The crash occurs when dereferencing the arch_specific pointer which is ... --8<---------------cut here---------------start------------->8--- (gdb) p dev $1 = (PedDevice *) 0x1dc89e0 (gdb) p *dev $2 = {next = 0x1, model = 0x1645d50 "", path = 0x0, type = PED_DEVICE_UNKNOWN, sector_size = 0, phys_sector_size = 1, length = 23272720, open_count = 0, read_only = 1, external_mode = 0, dirty = 0, boot_dirty = 0, hw_geom = { cylinders = 0, heads = 2, sectors = 0}, bios_geom = {cylinders = 23259184, heads = 0, sectors = 0}, host = 1, did = 0, arch_specific = 0x0} (gdb) p dev->arch_specific $3 = (void *) 0x0 --8<---------------cut here---------------end--------------->8--- null! I guess this has to deal with device pointer finalizers. I'm a bit disappointed because I thought we had overcome those mistakes. Thanks, Mathieu From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 23 06:30:22 2022 Received: (at control) by debbugs.gnu.org; 23 Oct 2022 10:30:22 +0000 Received: from localhost ([127.0.0.1]:43688 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1omYFK-0004kO-J4 for submit@debbugs.gnu.org; Sun, 23 Oct 2022 06:30:22 -0400 Received: from eggs.gnu.org ([209.51.188.92]:56686) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1omYFH-0004k8-7q for control@debbugs.gnu.org; Sun, 23 Oct 2022 06:30:20 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1omYFB-0003yf-45 for control@debbugs.gnu.org; Sun, 23 Oct 2022 06:30:14 -0400 Received: from 2a02-8429-81d2-3d01-94c9-8097-ea5c-2775.rev.sfr.net ([2a02:8429:81d2:3d01:94c9:8097:ea5c:2775] helo=meije) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1omYF9-0004gv-Ii for control@debbugs.gnu.org; Sun, 23 Oct 2022 06:30:12 -0400 Date: Sun, 23 Oct 2022 12:30:10 +0200 Message-Id: <87r0yyzvbh.fsf@meije.mail-host-address-is-not-set> To: control@debbugs.gnu.org From: Mathieu Othacehe Subject: control message for bug #53214 X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.9 (--) block 53214 by 58732 quit From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 23 06:31:43 2022 Received: (at control) by debbugs.gnu.org; 23 Oct 2022 10:31:43 +0000 Received: from localhost ([127.0.0.1]:43693 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1omYGc-0004n5-Sv for submit@debbugs.gnu.org; Sun, 23 Oct 2022 06:31:43 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60332) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1omYGU-0004mm-1P for control@debbugs.gnu.org; Sun, 23 Oct 2022 06:31:42 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1omYGO-0004FK-Ck for control@debbugs.gnu.org; Sun, 23 Oct 2022 06:31:28 -0400 Received: from 2a02-8429-81d2-3d01-94c9-8097-ea5c-2775.rev.sfr.net ([2a02:8429:81d2:3d01:94c9:8097:ea5c:2775] helo=meije) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1omYFx-0006bv-7k for control@debbugs.gnu.org; Sun, 23 Oct 2022 06:31:14 -0400 Date: Sun, 23 Oct 2022 12:30:59 +0200 Message-Id: <87pmeizva4.fsf@meije.mail-host-address-is-not-set> To: control@debbugs.gnu.org From: Mathieu Othacehe Subject: control message for bug #58732 X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.9 (--) severity 58732 important quit From unknown Tue Aug 19 02:51:15 2025 X-Loop: help-debbugs@gnu.org Subject: bug#58732: installer: finalizers & device destroy segfault Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Wed, 02 Nov 2022 10:56:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 58732 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Mathieu Othacehe Cc: 58732@debbugs.gnu.org Received: via spool by 58732-submit@debbugs.gnu.org id=B58732.166738655025237 (code B ref 58732); Wed, 02 Nov 2022 10:56:02 +0000 Received: (at 58732) by debbugs.gnu.org; 2 Nov 2022 10:55:50 +0000 Received: from localhost ([127.0.0.1]:45022 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oqBPR-0006Yz-LO for submit@debbugs.gnu.org; Wed, 02 Nov 2022 06:55:49 -0400 Received: from eggs.gnu.org ([209.51.188.92]:39762) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oqBPP-0006Ym-3L for 58732@debbugs.gnu.org; Wed, 02 Nov 2022 06:55:48 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oqBPI-0007ex-SS for 58732@debbugs.gnu.org; Wed, 02 Nov 2022 06:55:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To: From; bh=419DFm+tOiFwtiMwlfo1GUu1yro6sxSSUaUg2SV0KcQ=; b=Qxs8xHAJffWGPlT9rkdA MlU6hxuO/ud7oytUxawaDgFy/OqEpqYr7MWPlvlFEoNpYn/cRR5K/9PWNDc/2qwuX1vUQWOBhbgt9 qEHGj4CwNswKc41bUbbmHEt/0j3vgdlSJ0rG/E8F+p6hq18Nd9yHXt9D/B7165QceTg4lyfb8d26m vCJeOUT0mmoVbADX2LwUj9gM3aTZRp+0i2LVrjVNTgjJqfvgt3KYjRsmp37SolVqfcv7d53RoXiUE MjOG7+gjlC7ZmBIF2y2Kxcwwf3jef4ed9AYZvAPpK7ZyDBOrzSpF0TCKVIntm1vOyFb3jpKzd1QtE mEL/mApXaLyrEQ==; Received: from 91-160-117-201.subs.proxad.net ([91.160.117.201] helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oqBPI-00041S-FG; Wed, 02 Nov 2022 06:55:40 -0400 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= References: <87v8oa29ik.fsf@gnu.org> Date: Wed, 02 Nov 2022 11:55:37 +0100 In-Reply-To: <87v8oa29ik.fsf@gnu.org> (Mathieu Othacehe's message of "Sun, 23 Oct 2022 11:07:31 +0200") Message-ID: <871qqlwrpy.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi, Mathieu Othacehe skribis: > null! I guess this has to deal with device pointer finalizers. I'm a bit > disappointed because I thought we had overcome those mistakes. There are several things we should audit in Guile-Parted regarding object lifecycles. Common issues when writing bindings that could cause problems like what you report: 1. Bindings create wrappers for C pointers=E2=80=94e.g., with =E2=80=98pointer->device=E2=80=99. If several C functions return a po= inter P, you must make sure to return always the same wrapper and not create a new one. =E2=80=98pointer->device!=E2=80=99 attempts to do that but I think it= =E2=80=99s bogus: it uses a weak-value hash table, where the value is the wrapper. So if the wrapper disappears before the underlying C object, then the pointer is called and bad things ensue. =E2=80=98define-wrapped-pointer-type=E2=80=99 in Guile is meant to hel= p with these things (info "(guile) Void Pointers and Byte Access"). We can=E2=80= =99t use it directly here because we=E2=80=99re using bytestructures and all that. 2. Scheme wrappers must mirror the aggregation relations of the C objects they wrap. For instance, let=E2=80=99s say a PedDisk aggregates PedPartition objects=E2=80=94i.e., that PedDisk =E2=80=9Cowns=E2=80=9D them and out= lives them. Then the Scheme wrappers must outlive the Scheme wrappers too, so that we don=E2=80=99t end up calling partition finalizers whil= e the disk that owns them is still alive. This is done using a weak-key hash table keyed by objects in this case and populated anytime a getter returns a . (See for example =E2=80=98%commit-owners=E2=80=99 in Guile-Git.) I think we should audit Guile-Parted with these issues in mind. WDYT? Ludo=E2=80=99. From unknown Tue Aug 19 02:51:15 2025 X-Loop: help-debbugs@gnu.org Subject: bug#58732: installer: finalizers & device destroy segfault Resent-From: Mathieu Othacehe Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Thu, 03 Nov 2022 11:10:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 58732 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 58732@debbugs.gnu.org Received: via spool by 58732-submit@debbugs.gnu.org id=B58732.166747377123632 (code B ref 58732); Thu, 03 Nov 2022 11:10:01 +0000 Received: (at 58732) by debbugs.gnu.org; 3 Nov 2022 11:09:31 +0000 Received: from localhost ([127.0.0.1]:48185 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oqY6F-000691-6W for submit@debbugs.gnu.org; Thu, 03 Nov 2022 07:09:31 -0400 Received: from eggs.gnu.org ([209.51.188.92]:60174) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oqY6D-00068f-GB for 58732@debbugs.gnu.org; Thu, 03 Nov 2022 07:09:30 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oqY66-00025Q-AU; Thu, 03 Nov 2022 07:09:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To: From; bh=A+N3qOhoWsLfgLb5nHrslCHR6uzoANazMcdFgufdk6s=; b=iRqvZGsmtued/5n1MilZ 7cJSub64Zp65cWyhJWsGBttij0i9hCZ4XepqBr0jYU4vLUPMW+LXnLziS+BAGOk/vvorvPneOe0I5 Lx+EgsKsqE7oXEJlSdg4dqIaNdyNMRqzXgBC0fYPE+uIv6IhMW6legreYktjW3bR2eMRv12/RZkQc IwXeT+j5h5IibovGoztJMPzlL/dT6w+OrhVMHfFWMlkialHwtUKtBr3FUG3myte8EuOgYAf3O3Cmw zgnQvSksO/RgN+QHJ9sdLMjuqahYj3k7Gc3UaCZp4IdImBogQwTzLXzrqJjMH6AoyT5UgCDYY5EOH ms+vBw48C5r+OQ==; Received: from 2a02-8429-81d2-3d01-94c9-8097-ea5c-2775.rev.sfr.net ([2a02:8429:81d2:3d01:94c9:8097:ea5c:2775] helo=meije) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oqY64-00036K-FA; Thu, 03 Nov 2022 07:09:21 -0400 From: Mathieu Othacehe References: <87v8oa29ik.fsf@gnu.org> <871qqlwrpy.fsf@gnu.org> Date: Thu, 03 Nov 2022 12:09:16 +0100 In-Reply-To: <871qqlwrpy.fsf@gnu.org> ("Ludovic =?UTF-8?Q?Court=C3=A8s?="'s message of "Wed, 02 Nov 2022 11:55:37 +0100") Message-ID: <87iljwuwf7.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hey, Thanks for your help :) > 1. Bindings create wrappers for C pointers=E2=80=94e.g., with > =E2=80=98pointer->device=E2=80=99. If several C functions return a = pointer P, you > must make sure to return always the same wrapper and not create a > new one. Agreed. > > =E2=80=98pointer->device!=E2=80=99 attempts to do that but I think i= t=E2=80=99s bogus: it > uses a weak-value hash table, where the value is the wrapper. So > if the wrapper disappears before the underlying C object, then the > pointer is called and bad things ensue. I'm not sure to understand how could the wrapper disappear before the underlying C object? We are only exposing records to the Guile-Parted users so my assumption is that when goes out of scope, the pointer it wraps can be freed, but I'm maybe missing something? > =E2=80=98define-wrapped-pointer-type=E2=80=99 in Guile is meant to h= elp with these > things (info "(guile) Void Pointers and Byte Access"). We can=E2=80= =99t > use it directly here because we=E2=80=99re using bytestructures and = all > that. Turns out, the "wrap" procedure defined in define-wrapped-pointer-type is a clone of pointer->device! except that it doesn't set a finalizer. Regarding object lifetime, I wrote a small memo in 2019 here: https://issues.guix.gnu.org/36402#11. We have three weak hash tables in Guile-Parted: %devices: To make sure that we do not set multiple finalizers on the same pointers. %disk-devices: So that a device always outlives its disks. %partition-disks: So that a disk always outlives its partitions. This means that as far as I can tell we are OK regarding your second point about "aggregation relations". Mathieu From unknown Tue Aug 19 02:51:15 2025 X-Loop: help-debbugs@gnu.org Subject: bug#58732: installer: finalizers & device destroy segfault Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Thu, 03 Nov 2022 11:26:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 58732 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Mathieu Othacehe Cc: 58732@debbugs.gnu.org Received: via spool by 58732-submit@debbugs.gnu.org id=B58732.166747475225406 (code B ref 58732); Thu, 03 Nov 2022 11:26:02 +0000 Received: (at 58732) by debbugs.gnu.org; 3 Nov 2022 11:25:52 +0000 Received: from localhost ([127.0.0.1]:48240 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oqYM3-0006bi-NI for submit@debbugs.gnu.org; Thu, 03 Nov 2022 07:25:52 -0400 Received: from eggs.gnu.org ([209.51.188.92]:51840) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oqYM0-0006bR-Re for 58732@debbugs.gnu.org; Thu, 03 Nov 2022 07:25:49 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oqYLv-0005GT-Kk for 58732@debbugs.gnu.org; Thu, 03 Nov 2022 07:25:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To: From; bh=0SfYP3BJTluKXliI3Opozww99xgKhwnwUlJP3EgZUoc=; b=OA1l7H/ii8XK4Ou8eUNY 853PVF/0ul7hLMW/gb+nwSxv5wM31UbytniT0sQb5j/KRPitna7fFed5yxlKg0RakdkhxtXnucdtj 8MMprZf0mLImvhTH/W7Am9GzIiRhcG7p7JwYSDpZ5mLExAarHyAkzkClfsq1jLee5DW8L82rfJFCi 1ozXnAaB6I+w+x4snZ9GIJtstAV8B4yHDCsiKgc15QVoLaKBzkBivxiDzYRhq1K4aO7ORvpvLgcj5 DC22qXZ+AKWC9S9w8fnpEJa9fryubTMbMv+eZFseyJHtPcDaJXJV/ppi/uXFeBSDZ3ETfQEcqzEXY qJc2CzjaC4sQfg==; Received: from 91-160-117-201.subs.proxad.net ([91.160.117.201] helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oqYLu-0005Ww-Iz; Thu, 03 Nov 2022 07:25:43 -0400 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= References: <87v8oa29ik.fsf@gnu.org> <871qqlwrpy.fsf@gnu.org> <87iljwuwf7.fsf@gnu.org> Date: Thu, 03 Nov 2022 12:25:39 +0100 In-Reply-To: <87iljwuwf7.fsf@gnu.org> (Mathieu Othacehe's message of "Thu, 03 Nov 2022 12:09:16 +0100") Message-ID: <871qqkth3g.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi! Mathieu Othacehe skribis: >> =E2=80=98pointer->device!=E2=80=99 attempts to do that but I think = it=E2=80=99s bogus: it >> uses a weak-value hash table, where the value is the wrapper. So >> if the wrapper disappears before the underlying C object, then the >> pointer is called and bad things ensue. > > I'm not sure to understand how could the wrapper disappear before the > underlying C object? We are only exposing records to the > Guile-Parted users so my assumption is that when goes out of > scope, the pointer it wraps can be freed, but I'm maybe missing > something? Hmm you=E2=80=99re right (and yes it=E2=80=99s the same as =E2=80=98define-= wrapped-pointer-type=E2=80=99 does). So that should be fine. > Regarding object lifetime, I wrote a small memo in 2019 here: > https://issues.guix.gnu.org/36402#11. Nice, though it does feel like we=E2=80=99re running in circles. :-) > We have three weak hash tables in Guile-Parted: > > %devices: To make sure that we do not set multiple finalizers on the > same pointers. > > %disk-devices: So that a device always outlives its disks. > > %partition-disks: So that a disk always outlives its partitions. > > This means that as far as I can tell we are OK regarding your second > point about "aggregation relations". OK. Another thing to keep in mind: finalizers run in a separate thread, so finalization can happen concurrently. That can be problematic is there is shared global state in the library that=E2=80=99s being access when an benign-looking free function is called. Could you show the backtrace of the other threads as well, preferably with debugging info? Thanks, Ludo=E2=80=99. From unknown Tue Aug 19 02:51:15 2025 X-Loop: help-debbugs@gnu.org Subject: bug#58732: installer: finalizers & device destroy segfault Resent-From: Mathieu Othacehe Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Sun, 06 Nov 2022 17:18:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 58732 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 58732@debbugs.gnu.org Received: via spool by 58732-submit@debbugs.gnu.org id=B58732.16677550438287 (code B ref 58732); Sun, 06 Nov 2022 17:18:02 +0000 Received: (at 58732) by debbugs.gnu.org; 6 Nov 2022 17:17:23 +0000 Received: from localhost ([127.0.0.1]:60530 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1orjGt-00029b-I8 for submit@debbugs.gnu.org; Sun, 06 Nov 2022 12:17:23 -0500 Received: from eggs.gnu.org ([209.51.188.92]:45738) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1orjGr-00029M-RV for 58732@debbugs.gnu.org; Sun, 06 Nov 2022 12:17:21 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1orjGl-0006IO-GE; Sun, 06 Nov 2022 12:17:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To: From; bh=N2pt/UOd1MRHbtM34uxp1LW3spAOR3fiDU8hBd+CiP4=; b=LuiFEBlMvVHF/6iSaF7b kvThoY5HwJo4KsbWE6NfVtryQ6KZRTZCa+tN3q+hu4PdADKXhd3vE19WnmoP4YWIlnG349H/8/xo5 xN0mLdmAGNJWOuRA2BQtfoHA+RxkR8XlhpD/KSfcTLzgshGZ+SHn4/qMW3LN6kNY5t05y+FZ3jNWT A8TkPS5e0CvdwzY1BsOAZ6rn+xs9uNmTUYk/pI90hwpI5hgMrr4l2/tWCkQ9Sblkm9ngYnTRIJI9T BGIagg3sprCdqwZFghqe2OsZco95fu+p7aLcFvxik1SN8HsfNfFABznRhrzWaepNAk63nu4cjDTy3 gmcuuseck1HmPw==; Received: from 2a02-8429-81d2-3d01-94c9-8097-ea5c-2774.rev.sfr.net ([2a02:8429:81d2:3d01:94c9:8097:ea5c:2774] helo=meije) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1orjGj-0000Gc-Jo; Sun, 06 Nov 2022 12:17:14 -0500 From: Mathieu Othacehe References: <87v8oa29ik.fsf@gnu.org> <871qqlwrpy.fsf@gnu.org> <87iljwuwf7.fsf@gnu.org> <871qqkth3g.fsf@gnu.org> Date: Sun, 06 Nov 2022 18:17:08 +0100 In-Reply-To: <871qqkth3g.fsf@gnu.org> ("Ludovic =?UTF-8?Q?Court=C3=A8s?="'s message of "Thu, 03 Nov 2022 12:25:39 +0100") Message-ID: <87sfiwm297.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --=-=-= Content-Type: text/plain Hey, I made some progress on that one. I think, this is what's going on: 1. Two new PedDevice A and B are malloc'ed by the libparted when opening the installer partitioning page. 2. They are added to the %devices weak hash table by pointer->device! and their respective finalizers are registered. 3. The partitioning ends and A goes out of scope. It is eventually removed from %devices but it does not mean its finalizer will be run immediately. 4. The partitioning is restarted using the installer menu. B is still in the %devices hash table. However, A is now gone and is added again to the %devices hash table by the pointer->device! procedure. Another finalizer is registered for A. That's because set-pointer-finalizer! does not *set* a finalizer it *adds* one. 5. The partitioning ends and both A and B goes out of scope. They are removed from %devices and their finalizers are called. The A finalizer is called twice resulting in a double free. This race condition is created by the fact that there is a time window where the device is removed from the %devices hash table but its finalizer is not immediately called. If set-pointer-finalizer! actually called scm_i_set_finalizer instead of scm_i_add_finalizer the A finalizer would be set twice but called only once. Do you think it would be an option? I attached the instrumentation patches (good old printf's) as well as the syslog I based my analysis upon. Thanks, Mathieu --=-=-= Content-Type: text/plain Content-Disposition: inline; filename=diff_guix.txt diff --git a/gnu/installer/parted.scm b/gnu/installer/parted.scm index 82375d29e3..381e1b3ce7 100644 --- a/gnu/installer/parted.scm +++ b/gnu/installer/parted.scm @@ -1502,6 +1502,7 @@ (define (user-partitions->configuration user-partitions) (define (init-parted) "Initialize libparted support." + (%parted-syslog-port (syslog-port)) (probe-all-devices!) ;; Remove all logical devices, otherwise "device-is-busy?" will report true ;; on all devices containaing active logical volumes. --=-=-= Content-Type: text/plain Content-Disposition: inline; filename=diff_parted.txt diff -aur parted/libparted/arch/linux.c tmp/parted-3.5/libparted/arch/linux.c --- parted/libparted/arch/linux.c 2022-11-04 10:14:33.551737324 +0100 +++ tmp/parted-3.5/libparted/arch/linux.c 2022-04-18 20:38:45.000000000 +0200 @@ -17,7 +17,6 @@ #define PROC_DEVICES_BUFSIZ 16384 -#include #include #include #include @@ -44,7 +43,6 @@ #include #include #ifdef ENABLE_DEVICE_MAPPER - #include #endif @@ -89,8 +87,6 @@ #define WR_MODE (O_WRONLY) #define RW_MODE (O_RDWR) -int syslog_init; - struct hd_geometry { unsigned char heads; unsigned char sectors; @@ -1600,11 +1596,6 @@ _("ped_device_new() Unsupported device type")); goto error_free_arch_specific; } - if (!syslog_init) { - openlog("parted", LOG_PID, LOG_USER); - syslog_init = 1; - } - syslog(LOG_INFO, "parted: new: %p\n", dev); return dev; error_free_arch_specific: @@ -1620,8 +1611,6 @@ static void linux_destroy (PedDevice* dev) { - syslog(LOG_INFO, "parted: destroy: %p\n", dev); - LinuxSpecific *arch_specific = LINUX_SPECIFIC(dev); void *p = arch_specific->dmtype; --=-=-= Content-Type: text/plain Content-Disposition: inline; filename=diff_guile_parted.txt diff --git a/parted/device.scm b/parted/device.scm index 9f688dd..36d83f4 100644 --- a/parted/device.scm +++ b/parted/device.scm @@ -23,7 +23,7 @@ #:use-module (parted geom) #:use-module (parted natmath) #:use-module (parted structs) - #:export (parted-syslog-port + #:export (%parted-syslog-port probe-all-devices! get-device get-device-next @@ -44,8 +44,8 @@ device-get-minimum-alignment device-get-optimum-alignment)) -(define parted-syslog-port - (make-parameter #f)) +(define %parted-syslog-port + (make-parameter #t)) ;; Record all devices, so that pointer finalizers are only set once, ;; even if get-device returns an already known pointer. Use the @@ -58,22 +58,22 @@ (define (pointer->device! pointer) ;; Check if a finalizer is already registered for this pointer. (format (%parted-syslog-port) - "guile-parted: pointer->device!: ~a" pointer) + "guile-parted: pointer->device!: ~a~%" pointer) (format (%parted-syslog-port) - "guile-parted: hash begin") + "guile-parted: hash begin~%") (hash-for-each (lambda (k v) (format (%parted-syslog-port) - "guile-parted: hash: ~a -> ~a" k v)) + "guile-parted: hash: ~a -> ~a~%" k v)) %devices) (format (%parted-syslog-port) - "guile-parted: hash end") + "guile-parted: hash end~%") (or (hash-ref %devices pointer) (let ((device (pointer->device pointer))) (format (%parted-syslog-port) - "guile-parted: finalizer!: ~a" pointer) + "guile-parted: finalizer!: ~a~%" pointer) ;; Contrary to its name, this "adds" a finalizer. (set-pointer-finalizer! pointer %device-destroy) --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=messages Content-Transfer-Encoding: base64 Tm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCBzeXNsb2dkIChHTlUgaW5ldHV0aWxzIDIuMCk6IHJl c3RhcnQKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMDAwMDBdIExp bnV4IHZlcnNpb24gNS4xOS4xNy1nbnUgKGd1aXhAZ3VpeCkgKGdjYyAoR0NDKSAxMC4zLjAsIEdO VSBsZCAoR05VIEJpbnV0aWxzKSAyLjM3KSAjMSBTTVAgUFJFRU1QVF9EWU5BTUlDIDEKTm92ICA2 IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMDAwMDBdIENvbW1hbmQgbGluZTog Qk9PVF9JTUFHRT0vZ251L3N0b3JlL3oyZmNyMjJyNzUyZzJzbXdoeTY3N2JxZnFtcjh2amswLWxp bnV4LWxpYnJlLTUuMTkuMTcvYnpJbWFnZSByb290PTMxMzkzNzMwLTMwMzEtMzAzMS0zMTM5LTMz MzMzMzMxMzgzMyBnbnUuc3lzdGVtPS9nbnUvc3RvcmUvcG5najAyYWs3Z2ZhNTZxbmp2Ymo5aG03 dmRtdzZ5Y2Etc3lzdGVtIGdudS5sb2FkPS9nbnUvc3RvcmUvcG5najAyYWs3Z2ZhNTZxbmp2Ymo5 aG03dmRtdzZ5Y2Etc3lzdGVtL2Jvb3QgcXVpZXQgbW9kcHJvYmUuYmxhY2tsaXN0PXJhZGVvbixh bWRncHUKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMDAwMDBdIEtF Uk5FTCBzdXBwb3J0ZWQgY3B1czoKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsg ICAgMC4wMDAwMDBdICAgSW50ZWwgR2VudWluZUludGVsCk5vdiAgNiAxMzowMToyMiBsb2NhbGhv c3Qgdm11bml4OiBbICAgIDAuMDAwMDAwXSAgIEFNRCBBdXRoZW50aWNBTUQKTm92ICA2IDEzOjAx OjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMDAwMDBdICAgSHlnb24gSHlnb25HZW51aW5l Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDAwMDAwXSAgIENlbnRh dXIgQ2VudGF1ckhhdWxzCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAu MDAwMDAwXSAgIHpoYW94aW4gICBTaGFuZ2hhaSAgCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qg dm11bml4OiBbICAgIDAuMDAwMDAwXSB4ODYvZnB1OiB4ODcgRlBVIHdpbGwgdXNlIEZYU0FWRQpO b3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwMDAwMF0gc2lnbmFsOiBt YXggc2lnZnJhbWUgc2l6ZTogMTQ0MApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDog WyAgICAwLjAwMDAwMF0gQklPUy1wcm92aWRlZCBwaHlzaWNhbCBSQU0gbWFwOgpOb3YgIDYgMTM6 MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4 MDAwMDAwMDAwMDAwMDAwMC0weDAwMDAwMDAwMDAwOWZmZmZdIHVzYWJsZQpOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAw MDAwMDAwMDEwMDAwMC0weDAwMDAwMDAwMDA3ZmZmZmZdIHVzYWJsZQpOb3YgIDYgMTM6MDE6MjIg bG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAw MDAwMDgwMDAwMC0weDAwMDAwMDAwMDA4MDdmZmZdIEFDUEkgTlZTCk5vdiAgNiAxMzowMToyMiBs b2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAw MDAwODA4MDAwLTB4MDAwMDAwMDAwMDgwZmZmZl0gdXNhYmxlCk5vdiAgNiAxMzowMToyMiBsb2Nh bGhvc3Qgdm11bml4OiBbICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMDAw ODEwMDAwLTB4MDAwMDAwMDAwMDgxN2ZmZl0gQUNQSSBOVlMKTm92ICA2IDEzOjAxOjIyIGxvY2Fs aG9zdCB2bXVuaXg6IFsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwMDA4 MTgwMDAtMHgwMDAwMDAwMDAwODFmZmZmXSB1c2FibGUKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9z dCB2bXVuaXg6IFsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwMDA4MjAw MDAtMHgwMDAwMDAwMDAwOGZmZmZmXSBBQ1BJIE5WUwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0 IHZtdW5peDogWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDAwMDkwMDAw MC0weDAwMDAwMDAwN2VjYzBmZmZdIHVzYWJsZQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZt dW5peDogWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDA3ZWNjMTAwMC0w eDAwMDAwMDAwN2VjYzFmZmZdIEFDUEkgZGF0YQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZt dW5peDogWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDA3ZWNjMjAwMC0w eDAwMDAwMDAwN2VkNjlmZmZdIHVzYWJsZQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5p eDogWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDA3ZWQ2YTAwMC0weDAw MDAwMDAwN2VkNzZmZmZdIEFDUEkgTlZTCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4 OiBbICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMDdlZDc3MDAwLTB4MDAw MDAwMDA3ZWQ4ZGZmZl0gcmVzZXJ2ZWQKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6 IFsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwN2VkOGUwMDAtMHgwMDAw MDAwMDdlZGE3ZmZmXSB1c2FibGUKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsg ICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwN2VkYTgwMDAtMHgwMDAwMDAw MDdlZGM3ZmZmXSByZXNlcnZlZApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAg ICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDA3ZWRjODAwMC0weDAwMDAwMDAw N2ZlNDdmZmZdIHVzYWJsZQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAw LjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDA3ZmU0ODAwMC0weDAwMDAwMDAwN2Zl NzdmZmZdIHR5cGUgMjAKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4w MDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwN2ZlNzgwMDAtMHgwMDAwMDAwMDdmZTlm ZmZmXSByZXNlcnZlZApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAw MDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDA3ZmVhMDAwMC0weDAwMDAwMDAwN2ZlYTdm ZmZdIEFDUEkgZGF0YQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAw MDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDA3ZmVhODAwMC0weDAwMDAwMDAwN2ZlYWJm ZmZdIEFDUEkgTlZTCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDAw MDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMDdmZWFjMDAwLTB4MDAwMDAwMDA3ZmY0ZmZm Zl0gdXNhYmxlCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDAwMDAw XSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMDdmZjUwMDAwLTB4MDAwMDAwMDA3ZmY2ZmZmZl0g cmVzZXJ2ZWQKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMDAwMDBd IEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwN2ZmNzAwMDAtMHgwMDAwMDAwMDdmZjc3ZmZmXSB1 c2FibGUKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMDAwMDBdIEJJ T1MtZTgyMDogW21lbSAweDAwMDAwMDAwN2ZmNzgwMDAtMHgwMDAwMDAwMDdmZmZmZmZmXSBBQ1BJ IE5WUwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwMDAwMF0gTlgg KEV4ZWN1dGUgRGlzYWJsZSkgcHJvdGVjdGlvbjogYWN0aXZlCk5vdiAgNiAxMzowMToyMiBsb2Nh bGhvc3Qgdm11bml4OiBbICAgIDAuMDAwMDAwXSBlZmk6IEVGSSB2Mi42MCBieSBFREsgSUkKTm92 ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMDAwMDBdIGVmaTogU01CSU9T PTB4N2ZlNzkwMDAgQUNQST0weDdmZWE3MDAwIEFDUEkgMi4wPTB4N2ZlYTcwMTQgTUVNQVRUUj0w eDdmMDUwMDE4IApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwMDAw MF0gU01CSU9TIDIuOCBwcmVzZW50LgpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDog WyAgICAwLjAwMDAwMF0gRE1JOiBRRU1VIFN0YW5kYXJkIFBDIChpNDQwRlggKyBQSUlYLCAxOTk2 KSwgQklPUyAwLjAuMCAwMi8wNi8yMDE1Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4 OiBbICAgIDAuMDAwMDAwXSBIeXBlcnZpc29yIGRldGVjdGVkOiBLVk0KTm92ICA2IDEzOjAxOjIy IGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMDAwMDBdIGt2bS1jbG9jazogVXNpbmcgbXNycyA0 YjU2NGQwMSBhbmQgNGI1NjRkMDAKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsg ICAgMC4wMDAwMDFdIGt2bS1jbG9jazogdXNpbmcgc2NoZWQgb2Zmc2V0IG9mIDE4ODEyNTQzNjg5 IGN5Y2xlcwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwMDAwMl0g Y2xvY2tzb3VyY2U6IGt2bS1jbG9jazogbWFzazogMHhmZmZmZmZmZmZmZmZmZmZmIG1heF9jeWNs ZXM6IDB4MWNkNDJlNGRmZmIsIG1heF9pZGxlX25zOiA4ODE1OTA1OTE0ODMgbnMKTm92ICA2IDEz OjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMDAwMDVdIHRzYzogRGV0ZWN0ZWQgMTgw NC44MDAgTUh6IHByb2Nlc3NvcgpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAg ICAwLjAwMDA5Nl0gbGFzdF9wZm4gPSAweDdmZjc4IG1heF9hcmNoX3BmbiA9IDB4NDAwMDAwMDAw Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDAwMTQxXSB4ODYvUEFU OiBDb25maWd1cmF0aW9uIFswLTddOiBXQiAgV0MgIFVDLSBVQyAgV0IgIFdQICBVQy0gV1QgIApO b3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwOTYwNl0gU2VjdXJlIGJv b3QgZGlzYWJsZWQKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMDk2 MDhdIFJBTURJU0s6IFttZW0gMHgzNjY4NTAwMC0weDM3MzM5ZmZmXQpOb3YgIDYgMTM6MDE6MjIg bG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwOTYxNV0gQUNQSTogRWFybHkgdGFibGUgY2hlY2tz dW0gdmVyaWZpY2F0aW9uIGRpc2FibGVkCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4 OiBbICAgIDAuMDA5NjIwXSBBQ1BJOiBSU0RQIDB4MDAwMDAwMDA3RkVBNzAxNCAwMDAwMjQgKHYw MiBCT0NIUyApCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDA5NjIz XSBBQ1BJOiBYU0RUIDB4MDAwMDAwMDA3RkVBNjBFOCAwMDAwNEMgKHYwMSBCT0NIUyAgQlhQQyAg ICAgMDAwMDAwMDEgICAgICAwMTAwMDAxMykKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVu aXg6IFsgICAgMC4wMDk2MjddIEFDUEk6IEZBQ1AgMHgwMDAwMDAwMDdGRUEzMDAwIDAwMDA3NCAo djAxIEJPQ0hTICBCWFBDICAgICAwMDAwMDAwMSBCWFBDIDAwMDAwMDAxKQpOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwOTYzMl0gQUNQSTogRFNEVCAweDAwMDAwMDAw N0ZFQTQwMDAgMDAxNzZBICh2MDEgQk9DSFMgIEJYUEMgICAgIDAwMDAwMDAxIEJYUEMgMDAwMDAw MDEpCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDA5NjM0XSBBQ1BJ OiBGQUNTIDB4MDAwMDAwMDA3RkVBQTAwMCAwMDAwNDAKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9z dCB2bXVuaXg6IFsgICAgMC4wMDk2MzZdIEFDUEk6IEFQSUMgMHgwMDAwMDAwMDdGRUEyMDAwIDAw MDA3OCAodjAxIEJPQ0hTICBCWFBDICAgICAwMDAwMDAwMSBCWFBDIDAwMDAwMDAxKQpOb3YgIDYg MTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwOTYzOV0gQUNQSTogSFBFVCAweDAw MDAwMDAwN0ZFQTEwMDAgMDAwMDM4ICh2MDEgQk9DSFMgIEJYUEMgICAgIDAwMDAwMDAxIEJYUEMg MDAwMDAwMDEpCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDA5NjQx XSBBQ1BJOiBXQUVUIDB4MDAwMDAwMDA3RkVBMDAwMCAwMDAwMjggKHYwMSBCT0NIUyAgQlhQQyAg ICAgMDAwMDAwMDEgQlhQQyAwMDAwMDAwMSkKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVu aXg6IFsgICAgMC4wMDk2NDVdIEFDUEk6IEJHUlQgMHgwMDAwMDAwMDdFQ0MxMDAwIDAwMDAzOCAo djAxIElOVEVMICBFREsyICAgICAwMDAwMDAwMiAgICAgIDAxMDAwMDEzKQpOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwOTY0Nl0gQUNQSTogUmVzZXJ2aW5nIEZBQ1Ag dGFibGUgbWVtb3J5IGF0IFttZW0gMHg3ZmVhMzAwMC0weDdmZWEzMDczXQpOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwOTY0N10gQUNQSTogUmVzZXJ2aW5nIERTRFQg dGFibGUgbWVtb3J5IGF0IFttZW0gMHg3ZmVhNDAwMC0weDdmZWE1NzY5XQpOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwOTY0OF0gQUNQSTogUmVzZXJ2aW5nIEZBQ1Mg dGFibGUgbWVtb3J5IGF0IFttZW0gMHg3ZmVhYTAwMC0weDdmZWFhMDNmXQpOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwOTY0OV0gQUNQSTogUmVzZXJ2aW5nIEFQSUMg dGFibGUgbWVtb3J5IGF0IFttZW0gMHg3ZmVhMjAwMC0weDdmZWEyMDc3XQpOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwOTY0OV0gQUNQSTogUmVzZXJ2aW5nIEhQRVQg dGFibGUgbWVtb3J5IGF0IFttZW0gMHg3ZmVhMTAwMC0weDdmZWExMDM3XQpOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwOTY1MF0gQUNQSTogUmVzZXJ2aW5nIFdBRVQg dGFibGUgbWVtb3J5IGF0IFttZW0gMHg3ZmVhMDAwMC0weDdmZWEwMDI3XQpOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwOTY1MF0gQUNQSTogUmVzZXJ2aW5nIEJHUlQg dGFibGUgbWVtb3J5IGF0IFttZW0gMHg3ZWNjMTAwMC0weDdlY2MxMDM3XQpOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwOTgxOV0gTm8gTlVNQSBjb25maWd1cmF0aW9u IGZvdW5kCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDA5ODE5XSBG YWtpbmcgYSBub2RlIGF0IFttZW0gMHgwMDAwMDAwMDAwMDAwMDAwLTB4MDAwMDAwMDA3ZmY3N2Zm Zl0KTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMDk4MjNdIE5PREVf REFUQSgwKSBhbGxvY2F0ZWQgW21lbSAweDdmZjczMDAwLTB4N2ZmNzdmZmZdCk5vdiAgNiAxMzow MToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDA5ODM4XSBab25lIHJhbmdlczoKTm92ICA2 IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMDk4MzhdICAgRE1BICAgICAgW21l bSAweDAwMDAwMDAwMDAwMDEwMDAtMHgwMDAwMDAwMDAwZmZmZmZmXQpOb3YgIDYgMTM6MDE6MjIg bG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAwOTg0MF0gICBETUEzMiAgICBbbWVtIDB4MDAwMDAw MDAwMTAwMDAwMC0weDAwMDAwMDAwN2ZmNzdmZmZdCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qg dm11bml4OiBbICAgIDAuMDA5ODQxXSAgIE5vcm1hbCAgIGVtcHR5Ck5vdiAgNiAxMzowMToyMiBs b2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDA5ODQxXSAgIERldmljZSAgIGVtcHR5Ck5vdiAgNiAx MzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDA5ODQyXSBNb3ZhYmxlIHpvbmUgc3Rh cnQgZm9yIGVhY2ggbm9kZQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAw LjAwOTg0M10gRWFybHkgbWVtb3J5IG5vZGUgcmFuZ2VzCk5vdiAgNiAxMzowMToyMiBsb2NhbGhv c3Qgdm11bml4OiBbICAgIDAuMDA5ODQzXSAgIG5vZGUgICAwOiBbbWVtIDB4MDAwMDAwMDAwMDAw MTAwMC0weDAwMDAwMDAwMDAwOWZmZmZdCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4 OiBbICAgIDAuMDA5ODQ0XSAgIG5vZGUgICAwOiBbbWVtIDB4MDAwMDAwMDAwMDEwMDAwMC0weDAw MDAwMDAwMDA3ZmZmZmZdCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAu MDA5ODQ0XSAgIG5vZGUgICAwOiBbbWVtIDB4MDAwMDAwMDAwMDgwODAwMC0weDAwMDAwMDAwMDA4 MGZmZmZdCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDA5ODQ1XSAg IG5vZGUgICAwOiBbbWVtIDB4MDAwMDAwMDAwMDgxODAwMC0weDAwMDAwMDAwMDA4MWZmZmZdCk5v diAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDA5ODQ1XSAgIG5vZGUgICAw OiBbbWVtIDB4MDAwMDAwMDAwMDkwMDAwMC0weDAwMDAwMDAwN2VjYzBmZmZdCk5vdiAgNiAxMzow MToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDA5ODQ2XSAgIG5vZGUgICAwOiBbbWVtIDB4 MDAwMDAwMDA3ZWNjMjAwMC0weDAwMDAwMDAwN2VkNjlmZmZdCk5vdiAgNiAxMzowMToyMiBsb2Nh bGhvc3Qgdm11bml4OiBbICAgIDAuMDA5ODQ2XSAgIG5vZGUgICAwOiBbbWVtIDB4MDAwMDAwMDA3 ZWQ4ZTAwMC0weDAwMDAwMDAwN2VkYTdmZmZdCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11 bml4OiBbICAgIDAuMDA5ODQ3XSAgIG5vZGUgICAwOiBbbWVtIDB4MDAwMDAwMDA3ZWRjODAwMC0w eDAwMDAwMDAwN2ZlNDdmZmZdCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAg IDAuMDA5ODQ3XSAgIG5vZGUgICAwOiBbbWVtIDB4MDAwMDAwMDA3ZmVhYzAwMC0weDAwMDAwMDAw N2ZmNGZmZmZdCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDA5ODQ4 XSAgIG5vZGUgICAwOiBbbWVtIDB4MDAwMDAwMDA3ZmY3MDAwMC0weDAwMDAwMDAwN2ZmNzdmZmZd Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDA5ODQ5XSBJbml0bWVt IHNldHVwIG5vZGUgMCBbbWVtIDB4MDAwMDAwMDAwMDAwMTAwMC0weDAwMDAwMDAwN2ZmNzdmZmZd Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDEwMTAyXSBPbiBub2Rl IDAsIHpvbmUgRE1BOiAxIHBhZ2VzIGluIHVuYXZhaWxhYmxlIHJhbmdlcwpOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAxMDExMF0gT24gbm9kZSAwLCB6b25lIERNQTog OTYgcGFnZXMgaW4gdW5hdmFpbGFibGUgcmFuZ2VzCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qg dm11bml4OiBbICAgIDAuMDEwMTEwXSBPbiBub2RlIDAsIHpvbmUgRE1BOiA4IHBhZ2VzIGluIHVu YXZhaWxhYmxlIHJhbmdlcwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAw LjAxMDExMV0gT24gbm9kZSAwLCB6b25lIERNQTogOCBwYWdlcyBpbiB1bmF2YWlsYWJsZSByYW5n ZXMKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMTAxMTddIE9uIG5v ZGUgMCwgem9uZSBETUE6IDIyNCBwYWdlcyBpbiB1bmF2YWlsYWJsZSByYW5nZXMKTm92ICA2IDEz OjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMTUwMDddIE9uIG5vZGUgMCwgem9uZSBE TUEzMjogMSBwYWdlcyBpbiB1bmF2YWlsYWJsZSByYW5nZXMKTm92ICA2IDEzOjAxOjIyIGxvY2Fs aG9zdCB2bXVuaXg6IFsgICAgMC4wMTUwMDldIE9uIG5vZGUgMCwgem9uZSBETUEzMjogMzYgcGFn ZXMgaW4gdW5hdmFpbGFibGUgcmFuZ2VzCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4 OiBbICAgIDAuMDE1MDI3XSBPbiBub2RlIDAsIHpvbmUgRE1BMzI6IDMyIHBhZ2VzIGluIHVuYXZh aWxhYmxlIHJhbmdlcwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAx NTAyOF0gT24gbm9kZSAwLCB6b25lIERNQTMyOiAxMDAgcGFnZXMgaW4gdW5hdmFpbGFibGUgcmFu Z2VzCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDE1MDI5XSBPbiBu b2RlIDAsIHpvbmUgRE1BMzI6IDMyIHBhZ2VzIGluIHVuYXZhaWxhYmxlIHJhbmdlcwpOb3YgIDYg MTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAxNTAzMF0gT24gbm9kZSAwLCB6b25l IERNQTMyOiAxMzYgcGFnZXMgaW4gdW5hdmFpbGFibGUgcmFuZ2VzCk5vdiAgNiAxMzowMToyMiBs b2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDE1MjUxXSBBQ1BJOiBQTS1UaW1lciBJTyBQb3J0OiAw eGIwMDgKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMTUyNjFdIEFD UEk6IExBUElDX05NSSAoYWNwaV9pZFsweGZmXSBkZmwgZGZsIGxpbnRbMHgxXSkKTm92ICA2IDEz OjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMTUyOTBdIElPQVBJQ1swXTogYXBpY19p ZCAwLCB2ZXJzaW9uIDE3LCBhZGRyZXNzIDB4ZmVjMDAwMDAsIEdTSSAwLTIzCk5vdiAgNiAxMzow MToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDE1MjkzXSBBQ1BJOiBJTlRfU1JDX09WUiAo YnVzIDAgYnVzX2lycSAwIGdsb2JhbF9pcnEgMiBkZmwgZGZsKQpOb3YgIDYgMTM6MDE6MjIgbG9j YWxob3N0IHZtdW5peDogWyAgICAwLjAxNTI5NF0gQUNQSTogSU5UX1NSQ19PVlIgKGJ1cyAwIGJ1 c19pcnEgNSBnbG9iYWxfaXJxIDUgaGlnaCBsZXZlbCkKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9z dCB2bXVuaXg6IFsgICAgMC4wMTUyOTVdIEFDUEk6IElOVF9TUkNfT1ZSIChidXMgMCBidXNfaXJx IDkgZ2xvYmFsX2lycSA5IGhpZ2ggbGV2ZWwpCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11 bml4OiBbICAgIDAuMDE1Mjk1XSBBQ1BJOiBJTlRfU1JDX09WUiAoYnVzIDAgYnVzX2lycSAxMCBn bG9iYWxfaXJxIDEwIGhpZ2ggbGV2ZWwpCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4 OiBbICAgIDAuMDE1Mjk2XSBBQ1BJOiBJTlRfU1JDX09WUiAoYnVzIDAgYnVzX2lycSAxMSBnbG9i YWxfaXJxIDExIGhpZ2ggbGV2ZWwpCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBb ICAgIDAuMDE1Mjk5XSBBQ1BJOiBVc2luZyBBQ1BJIChNQURUKSBmb3IgU01QIGNvbmZpZ3VyYXRp b24gaW5mb3JtYXRpb24KTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4w MTUzMDBdIEFDUEk6IEhQRVQgaWQ6IDB4ODA4NmEyMDEgYmFzZTogMHhmZWQwMDAwMApOb3YgIDYg MTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAxNTMyNF0gc21wYm9vdDogQWxsb3dp bmcgMSBDUFVzLCAwIGhvdHBsdWcgQ1BVcwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5p eDogWyAgICAwLjAxNTM1Ml0gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1v cnk6IFttZW0gMHgwMDAwMDAwMC0weDAwMDAwZmZmXQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0 IHZtdW5peDogWyAgICAwLjAxNTM1NF0gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2 ZSBtZW1vcnk6IFttZW0gMHgwMDBhMDAwMC0weDAwMGZmZmZmXQpOb3YgIDYgMTM6MDE6MjIgbG9j YWxob3N0IHZtdW5peDogWyAgICAwLjAxNTM1NV0gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVk IG5vc2F2ZSBtZW1vcnk6IFttZW0gMHgwMDgwMDAwMC0weDAwODA3ZmZmXQpOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAxNTM1Nl0gUE06IGhpYmVybmF0aW9uOiBSZWdp c3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHgwMDgxMDAwMC0weDAwODE3ZmZmXQpOb3YgIDYg MTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAxNTM1OF0gUE06IGhpYmVybmF0aW9u OiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHgwMDgyMDAwMC0weDAwOGZmZmZmXQpO b3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAxNTM1OV0gUE06IGhpYmVy bmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHg3ZWNjMTAwMC0weDdlY2Mx ZmZmXQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAxNTM2MF0gUE06 IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHg3ZWQ2YTAwMC0w eDdlZDc2ZmZmXQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAxNTM2 MV0gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHg3ZWQ3 NzAwMC0weDdlZDhkZmZmXQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAw LjAxNTM2Ml0gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0g MHg3ZWRhODAwMC0weDdlZGM3ZmZmXQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDog WyAgICAwLjAxNTM2M10gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6 IFttZW0gMHg3ZWUzMzAwMC0weDdlZTNiZmZmXQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZt dW5peDogWyAgICAwLjAxNTM2NV0gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBt ZW1vcnk6IFttZW0gMHg3ZmU0ODAwMC0weDdmZTc3ZmZmXQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxo b3N0IHZtdW5peDogWyAgICAwLjAxNTM2NV0gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5v c2F2ZSBtZW1vcnk6IFttZW0gMHg3ZmU3ODAwMC0weDdmZTlmZmZmXQpOb3YgIDYgMTM6MDE6MjIg bG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAxNTM2Nl0gUE06IGhpYmVybmF0aW9uOiBSZWdpc3Rl cmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHg3ZmVhMDAwMC0weDdmZWE3ZmZmXQpOb3YgIDYgMTM6 MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAxNTM2Nl0gUE06IGhpYmVybmF0aW9uOiBS ZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHg3ZmVhODAwMC0weDdmZWFiZmZmXQpOb3Yg IDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAxNTM2N10gUE06IGhpYmVybmF0 aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHg3ZmY1MDAwMC0weDdmZjZmZmZm XQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAxNTM2OF0gW21lbSAw eDgwMDAwMDAwLTB4ZmZmZmZmZmZdIGF2YWlsYWJsZSBmb3IgUENJIGRldmljZXMKTm92ICA2IDEz OjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMTUzNjldIEJvb3RpbmcgcGFyYXZpcnR1 YWxpemVkIGtlcm5lbCBvbiBLVk0KTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsg ICAgMC4wMTUzNzFdIGNsb2Nrc291cmNlOiByZWZpbmVkLWppZmZpZXM6IG1hc2s6IDB4ZmZmZmZm ZmYgbWF4X2N5Y2xlczogMHhmZmZmZmZmZiwgbWF4X2lkbGVfbnM6IDc2NDU1MTk2MDAyMTE1Njgg bnMKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMTUzNzldIHNldHVw X3BlcmNwdTogTlJfQ1BVUzoyNTYgbnJfY3B1bWFza19iaXRzOjI1NiBucl9jcHVfaWRzOjEgbnJf bm9kZV9pZHM6MQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAxNTQ1 OV0gcGVyY3B1OiBFbWJlZGRlZCA1NyBwYWdlcy9jcHUgczE5MzU3NiByODE5MiBkMzE3MDQgdTIw OTcxNTIKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMTU0OTFdIGt2 bS1ndWVzdDogUFYgc3BpbmxvY2tzIGRpc2FibGVkLCBubyBob3N0IHN1cHBvcnQKTm92ICA2IDEz OjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMTU0OTNdIEZhbGxiYWNrIG9yZGVyIGZv ciBOb2RlIDA6IDAgCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDE1 NDk1XSBCdWlsdCAxIHpvbmVsaXN0cywgbW9iaWxpdHkgZ3JvdXBpbmcgb24uICBUb3RhbCBwYWdl czogNTEzNDc4Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDE1NDk2 XSBQb2xpY3kgem9uZTogRE1BMzIKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsg ICAgMC4wMTU0OTZdIEtlcm5lbCBjb21tYW5kIGxpbmU6IEJPT1RfSU1BR0U9L2dudS9zdG9yZS96 MmZjcjIycjc1Mmcyc213aHk2NzdicWZxbXI4dmprMC1saW51eC1saWJyZS01LjE5LjE3L2J6SW1h Z2Ugcm9vdD0zMTM5MzczMC0zMDMxLTMwMzEtMzEzOS0zMzMzMzMzMTM4MzMgZ251LnN5c3RlbT0v Z251L3N0b3JlL3BuZ2owMmFrN2dmYTU2cW5qdmJqOWhtN3ZkbXc2eWNhLXN5c3RlbSBnbnUubG9h ZD0vZ251L3N0b3JlL3BuZ2owMmFrN2dmYTU2cW5qdmJqOWhtN3ZkbXc2eWNhLXN5c3RlbS9ib290 IHF1aWV0IG1vZHByb2JlLmJsYWNrbGlzdD1yYWRlb24sYW1kZ3B1Ck5vdiAgNiAxMzowMToyMiBs b2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDE1NTU0XSBVbmtub3duIGtlcm5lbCBjb21tYW5kIGxp bmUgcGFyYW1ldGVycyAiQk9PVF9JTUFHRT0vZ251L3N0b3JlL3oyZmNyMjJyNzUyZzJzbXdoeTY3 N2JxZnFtcjh2amswLWxpbnV4LWxpYnJlLTUuMTkuMTcvYnpJbWFnZSIsIHdpbGwgYmUgcGFzc2Vk IHRvIHVzZXIgc3BhY2UuCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAu MDE1NjExXSBEZW50cnkgY2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVzOiAyNjIxNDQgKG9yZGVyOiA5 LCAyMDk3MTUyIGJ5dGVzLCBsaW5lYXIpCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4 OiBbICAgIDAuMDE1NjQ1XSBJbm9kZS1jYWNoZSBoYXNoIHRhYmxlIGVudHJpZXM6IDEzMTA3MiAo b3JkZXI6IDgsIDEwNDg1NzYgYnl0ZXMsIGxpbmVhcikKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9z dCB2bXVuaXg6IFsgICAgMC4wMTU2NzNdIG1lbSBhdXRvLWluaXQ6IHN0YWNrOmJ5cmVmX2FsbCh6 ZXJvKSwgaGVhcCBhbGxvYzpvbiwgaGVhcCBmcmVlOm9mZgpOb3YgIDYgMTM6MDE6MjIgbG9jYWxo b3N0IHZtdW5peDogWyAgICAwLjAxODI5MV0gTWVtb3J5OiAxOTk2MTI4Sy8yMDk0NDU2SyBhdmFp bGFibGUgKDE2MzkySyBrZXJuZWwgY29kZSwgMjczM0sgcndkYXRhLCA1MjI0SyByb2RhdGEsIDI3 MTZLIGluaXQsIDI1ODhLIGJzcywgOTgwNjhLIHJlc2VydmVkLCAwSyBjbWEtcmVzZXJ2ZWQpCk5v diAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDE4NDUyXSBTTFVCOiBIV2Fs aWduPTY0LCBPcmRlcj0wLTMsIE1pbk9iamVjdHM9MCwgQ1BVcz0xLCBOb2Rlcz0xCk5vdiAgNiAx MzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDE4NDYxXSBLZXJuZWwvVXNlciBwYWdl IHRhYmxlcyBpc29sYXRpb246IGVuYWJsZWQKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVu aXg6IFsgICAgMC4wMTg0NjldIGZ0cmFjZTogYWxsb2NhdGluZyA0NjYyOSBlbnRyaWVzIGluIDE4 MyBwYWdlcwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAyNDYxMl0g ZnRyYWNlOiBhbGxvY2F0ZWQgMTgzIHBhZ2VzIHdpdGggNiBncm91cHMKTm92ICA2IDEzOjAxOjIy IGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMjUyMjBdIER5bmFtaWMgUHJlZW1wdDogdm9sdW50 YXJ5Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDI1NDQ1XSByY3U6 IFByZWVtcHRpYmxlIGhpZXJhcmNoaWNhbCBSQ1UgaW1wbGVtZW50YXRpb24uCk5vdiAgNiAxMzow MToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDI1NDQ2XSByY3U6IAlSQ1UgcmVzdHJpY3Rp bmcgQ1BVcyBmcm9tIE5SX0NQVVM9MjU2IHRvIG5yX2NwdV9pZHM9MS4KTm92ICA2IDEzOjAxOjIy IGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMjU0NDddIAlUcmFtcG9saW5lIHZhcmlhbnQgb2Yg VGFza3MgUkNVIGVuYWJsZWQuCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAg IDAuMDI1NDQ3XSAJUnVkZSB2YXJpYW50IG9mIFRhc2tzIFJDVSBlbmFibGVkLgpOb3YgIDYgMTM6 MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAyNTQ0N10gCVRyYWNpbmcgdmFyaWFudCBv ZiBUYXNrcyBSQ1UgZW5hYmxlZC4KTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsg ICAgMC4wMjU0NDhdIHJjdTogUkNVIGNhbGN1bGF0ZWQgdmFsdWUgb2Ygc2NoZWR1bGVyLWVubGlz dG1lbnQgZGVsYXkgaXMgMjUgamlmZmllcy4KTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVu aXg6IFsgICAgMC4wMjU0NDhdIHJjdTogQWRqdXN0aW5nIGdlb21ldHJ5IGZvciByY3VfZmFub3V0 X2xlYWY9MTYsIG5yX2NwdV9pZHM9MQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDog WyAgICAwLjAyODU1Nl0gTlJfSVJRUzogMTY2NDAsIG5yX2lycXM6IDI1NiwgcHJlYWxsb2NhdGVk IGlycXM6IDE2Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDI4NzE4 XSByY3U6IHNyY3VfaW5pdDogU2V0dGluZyBzcmN1X3N0cnVjdCBzaXplcyBiYXNlZCBvbiBjb250 ZW50aW9uLgpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAyODc0N10g Q29uc29sZTogY29sb3VyIGR1bW15IGRldmljZSA4MHgyNQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxo b3N0IHZtdW5peDogWyAgICAwLjAyODc1OF0gcHJpbnRrOiBjb25zb2xlIFt0dHkwXSBlbmFibGVk Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDI4NzcxXSBBQ1BJOiBD b3JlIHJldmlzaW9uIDIwMjIwMzMxCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBb ICAgIDAuMDI4ODgwXSBjbG9ja3NvdXJjZTogaHBldDogbWFzazogMHhmZmZmZmZmZiBtYXhfY3lj bGVzOiAweGZmZmZmZmZmLCBtYXhfaWRsZV9uczogMTkxMTI2MDQ0NjcgbnMKTm92ICA2IDEzOjAx OjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMjg5NDhdIEFQSUM6IFN3aXRjaCB0byBzeW1t ZXRyaWMgSS9PIG1vZGUgc2V0dXAKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsg ICAgMC4wMjkwODhdIHgyYXBpYyBlbmFibGVkCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11 bml4OiBbICAgIDAuMDI5MjQ1XSBTd2l0Y2hlZCBBUElDIHJvdXRpbmcgdG8gcGh5c2ljYWwgeDJh cGljLgpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAzMDIxOF0gLi5U SU1FUjogdmVjdG9yPTB4MzAgYXBpYzE9MCBwaW4xPTIgYXBpYzI9LTEgcGluMj0tMQpOb3YgIDYg MTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAzMDIzNF0gY2xvY2tzb3VyY2U6IHRz Yy1lYXJseTogbWFzazogMHhmZmZmZmZmZmZmZmZmZmZmIG1heF9jeWNsZXM6IDB4MWEwM2RmZTcz YjMsIG1heF9pZGxlX25zOiA0NDA3OTUyNTY4NDUgbnMKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9z dCB2bXVuaXg6IFsgICAgMC4wMzAyMzldIENhbGlicmF0aW5nIGRlbGF5IGxvb3AgKHNraXBwZWQp IHByZXNldCB2YWx1ZS4uIDM2MDkuNjAgQm9nb01JUFMgKGxwaj03MjE5MjAwKQpOb3YgIDYgMTM6 MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAzMDI0MV0gcGlkX21heDogZGVmYXVsdDog MzI3NjggbWluaW11bTogMzAxCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAg IDAuMDMwODgxXSBMU006IFNlY3VyaXR5IEZyYW1ld29yayBpbml0aWFsaXppbmcKTm92ICA2IDEz OjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMzA4ODldIFlhbWE6IGJlY29taW5nIG1p bmRmdWwuCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDMwOTEwXSBB cHBBcm1vcjogQXBwQXJtb3IgaW5pdGlhbGl6ZWQKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2 bXVuaXg6IFsgICAgMC4wMzA5MTJdIFRPTU9ZTyBMaW51eCBpbml0aWFsaXplZApOb3YgIDYgMTM6 MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAzMDk0Nl0gTW91bnQtY2FjaGUgaGFzaCB0 YWJsZSBlbnRyaWVzOiA0MDk2IChvcmRlcjogMywgMzI3NjggYnl0ZXMsIGxpbmVhcikKTm92ICA2 IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMzA5NDldIE1vdW50cG9pbnQtY2Fj aGUgaGFzaCB0YWJsZSBlbnRyaWVzOiA0MDk2IChvcmRlcjogMywgMzI3NjggYnl0ZXMsIGxpbmVh cikKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMzEyMjddIExhc3Qg bGV2ZWwgaVRMQiBlbnRyaWVzOiA0S0IgMCwgMk1CIDAsIDRNQiAwCk5vdiAgNiAxMzowMToyMiBs b2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMDMxMjI4XSBMYXN0IGxldmVsIGRUTEIgZW50cmllczog NEtCIDAsIDJNQiAwLCA0TUIgMCwgMUdCIDAKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVu aXg6IFsgICAgMC4wMzEyMzFdIFNwZWN0cmUgVjEgOiBNaXRpZ2F0aW9uOiB1c2VyY29weS9zd2Fw Z3MgYmFycmllcnMgYW5kIF9fdXNlciBwb2ludGVyIHNhbml0aXphdGlvbgpOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjAzMTIzMl0gU3BlY3RyZSBWMiA6IE1pdGlnYXRp b246IFJldHBvbGluZXMKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4w MzEyMzNdIFNwZWN0cmUgVjIgOiBTcGVjdHJlIHYyIC8gU3BlY3RyZVJTQiBtaXRpZ2F0aW9uOiBG aWxsaW5nIFJTQiBvbiBjb250ZXh0IHN3aXRjaApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZt dW5peDogWyAgICAwLjAzMTIzM10gU3BlY3RyZSBWMiA6IFNwZWN0cmUgdjIgLyBTcGVjdHJlUlNC IDogRmlsbGluZyBSU0Igb24gVk1FWElUCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4 OiBbICAgIDAuMDMxMjM0XSBTcGVjdWxhdGl2ZSBTdG9yZSBCeXBhc3M6IFZ1bG5lcmFibGUKTm92 ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMzEyMzZdIE1EUzogVnVsbmVy YWJsZTogQ2xlYXIgQ1BVIGJ1ZmZlcnMgYXR0ZW1wdGVkLCBubyBtaWNyb2NvZGUKTm92ICA2IDEz OjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4wMzEyMzddIE1NSU8gU3RhbGUgRGF0YTog VW5rbm93bjogTm8gbWl0aWdhdGlvbnMKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6 IFsgICAgMC4wNTE2ODhdIEZyZWVpbmcgU01QIGFsdGVybmF0aXZlcyBtZW1vcnk6IDQwSwpOb3Yg IDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE1OTgzN10gc21wYm9vdDogQ1BV MDogSW50ZWwgUUVNVSBWaXJ0dWFsIENQVSB2ZXJzaW9uIDIuNSsgKGZhbWlseTogMHhmLCBtb2Rl bDogMHg2Yiwgc3RlcHBpbmc6IDB4MSkKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6 IFsgICAgMC4xNTk5NDJdIGNibGlzdF9pbml0X2dlbmVyaWM6IFNldHRpbmcgYWRqdXN0YWJsZSBu dW1iZXIgb2YgY2FsbGJhY2sgcXVldWVzLgpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5p eDogWyAgICAwLjE1OTk0M10gY2JsaXN0X2luaXRfZ2VuZXJpYzogU2V0dGluZyBzaGlmdCB0byAw IGFuZCBsaW0gdG8gMS4KTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4x NTk5NTJdIGNibGlzdF9pbml0X2dlbmVyaWM6IFNldHRpbmcgc2hpZnQgdG8gMCBhbmQgbGltIHRv IDEuCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTU5OTYxXSBjYmxp c3RfaW5pdF9nZW5lcmljOiBTZXR0aW5nIHNoaWZ0IHRvIDAgYW5kIGxpbSB0byAxLgpOb3YgIDYg MTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE1OTk3Ml0gUGVyZm9ybWFuY2UgRXZl bnRzOiB1bnN1cHBvcnRlZCBOZXRidXJzdCBDUFUgbW9kZWwgMTA3IG5vIFBNVSBkcml2ZXIsIHNv ZnR3YXJlIGV2ZW50cyBvbmx5LgpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAg ICAwLjE2MDAxNl0gcmN1OiBIaWVyYXJjaGljYWwgU1JDVSBpbXBsZW1lbnRhdGlvbi4KTm92ICA2 IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4xNjAwMTZdIHJjdTogCU1heCBwaGFz ZSBuby1kZWxheSBpbnN0YW5jZXMgaXMgMTAwMC4KTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2 bXVuaXg6IFsgICAgMC4xNjAzMjBdIE5NSSB3YXRjaGRvZzogUGVyZiBOTUkgd2F0Y2hkb2cgcGVy bWFuZW50bHkgZGlzYWJsZWQKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAg MC4xNjAzNTRdIHNtcDogQnJpbmdpbmcgdXAgc2Vjb25kYXJ5IENQVXMgLi4uCk5vdiAgNiAxMzow MToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTYwMzU1XSBzbXA6IEJyb3VnaHQgdXAgMSBu b2RlLCAxIENQVQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE2MDM1 Nl0gc21wYm9vdDogTWF4IGxvZ2ljYWwgcGFja2FnZXM6IDEKTm92ICA2IDEzOjAxOjIyIGxvY2Fs aG9zdCB2bXVuaXg6IFsgICAgMC4xNjAzNTddIHNtcGJvb3Q6IFRvdGFsIG9mIDEgcHJvY2Vzc29y cyBhY3RpdmF0ZWQgKDM2MDkuNjAgQm9nb01JUFMpCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qg dm11bml4OiBbICAgIDAuMTYwNTU1XSBkZXZ0bXBmczogaW5pdGlhbGl6ZWQKTm92ICA2IDEzOjAx OjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4xNjA1OTJdIHg4Ni9tbTogTWVtb3J5IGJsb2Nr IHNpemU6IDEyOE1CCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTYw Nzk2XSBBQ1BJOiBQTTogUmVnaXN0ZXJpbmcgQUNQSSBOVlMgcmVnaW9uIFttZW0gMHgwMDgwMDAw MC0weDAwODA3ZmZmXSAoMzI3NjggYnl0ZXMpCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11 bml4OiBbICAgIDAuMTYwNzk3XSBBQ1BJOiBQTTogUmVnaXN0ZXJpbmcgQUNQSSBOVlMgcmVnaW9u IFttZW0gMHgwMDgxMDAwMC0weDAwODE3ZmZmXSAoMzI3NjggYnl0ZXMpCk5vdiAgNiAxMzowMToy MiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTYwNzk4XSBBQ1BJOiBQTTogUmVnaXN0ZXJpbmcg QUNQSSBOVlMgcmVnaW9uIFttZW0gMHgwMDgyMDAwMC0weDAwOGZmZmZmXSAoOTE3NTA0IGJ5dGVz KQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE2MDgwN10gQUNQSTog UE06IFJlZ2lzdGVyaW5nIEFDUEkgTlZTIHJlZ2lvbiBbbWVtIDB4N2VkNmEwMDAtMHg3ZWQ3NmZm Zl0gKDUzMjQ4IGJ5dGVzKQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAw LjE2MDgwOV0gQUNQSTogUE06IFJlZ2lzdGVyaW5nIEFDUEkgTlZTIHJlZ2lvbiBbbWVtIDB4N2Zl YTgwMDAtMHg3ZmVhYmZmZl0gKDE2Mzg0IGJ5dGVzKQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0 IHZtdW5peDogWyAgICAwLjE2MDgxMF0gQUNQSTogUE06IFJlZ2lzdGVyaW5nIEFDUEkgTlZTIHJl Z2lvbiBbbWVtIDB4N2ZmNzgwMDAtMHg3ZmZmZmZmZl0gKDU1NzA1NiBieXRlcykKTm92ICA2IDEz OjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4xNjA4NDFdIGNsb2Nrc291cmNlOiBqaWZm aWVzOiBtYXNrOiAweGZmZmZmZmZmIG1heF9jeWNsZXM6IDB4ZmZmZmZmZmYsIG1heF9pZGxlX25z OiA3NjQ1MDQxNzg1MTAwMDAwIG5zCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBb ICAgIDAuMTYwODQ2XSBmdXRleCBoYXNoIHRhYmxlIGVudHJpZXM6IDI1NiAob3JkZXI6IDIsIDE2 Mzg0IGJ5dGVzLCBsaW5lYXIpCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAg IDAuMTYwODc2XSBwaW5jdHJsIGNvcmU6IGluaXRpYWxpemVkIHBpbmN0cmwgc3Vic3lzdGVtCk5v diAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTYwOTczXSBQTTogUlRDIHRp bWU6IDEyOjAxOjE1LCBkYXRlOiAyMDIyLTExLTA2Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qg dm11bml4OiBbICAgIDAuMTYxMDY3XSBORVQ6IFJlZ2lzdGVyZWQgUEZfTkVUTElOSy9QRl9ST1VU RSBwcm90b2NvbCBmYW1pbHkKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAg MC4xNjExMjBdIGF1ZGl0OiBpbml0aWFsaXppbmcgbmV0bGluayBzdWJzeXMgKGRpc2FibGVkKQpO b3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE2MTIwMF0gdGhlcm1hbF9z eXM6IFJlZ2lzdGVyZWQgdGhlcm1hbCBnb3Zlcm5vciAnZmFpcl9zaGFyZScKTm92ICA2IDEzOjAx OjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4xNjEyMDBdIHRoZXJtYWxfc3lzOiBSZWdpc3Rl cmVkIHRoZXJtYWwgZ292ZXJub3IgJ2JhbmdfYmFuZycKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9z dCB2bXVuaXg6IFsgICAgMC4xNjEyMDFdIHRoZXJtYWxfc3lzOiBSZWdpc3RlcmVkIHRoZXJtYWwg Z292ZXJub3IgJ3N0ZXBfd2lzZScKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsg ICAgMC4xNjEyMDFdIHRoZXJtYWxfc3lzOiBSZWdpc3RlcmVkIHRoZXJtYWwgZ292ZXJub3IgJ3Vz ZXJfc3BhY2UnCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTYxMjAz XSBjcHVpZGxlOiB1c2luZyBnb3Zlcm5vciBsYWRkZXIKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9z dCB2bXVuaXg6IFsgICAgMC4xNjEyMDRdIGNwdWlkbGU6IHVzaW5nIGdvdmVybm9yIG1lbnUKTm92 ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4xNjEyNDBdIGFjcGlwaHA6IEFD UEkgSG90IFBsdWcgUENJIENvbnRyb2xsZXIgRHJpdmVyIHZlcnNpb246IDAuNQpOb3YgIDYgMTM6 MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE2MTMxM10gUENJOiBVc2luZyBjb25maWd1 cmF0aW9uIHR5cGUgMSBmb3IgYmFzZSBhY2Nlc3MKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2 bXVuaXg6IFsgICAgMC4xNjIxMjhdIGtwcm9iZXM6IGtwcm9iZSBqdW1wLW9wdGltaXphdGlvbiBp cyBlbmFibGVkLiBBbGwga3Byb2JlcyBhcmUgb3B0aW1pemVkIGlmIHBvc3NpYmxlLgpOb3YgIDYg MTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE2MjE0MV0gYXVkaXQ6IHR5cGU9MjAw MCBhdWRpdCgxNjY3NzM2MDc2LjE0MzoxKTogc3RhdGU9aW5pdGlhbGl6ZWQgYXVkaXRfZW5hYmxl ZD0wIHJlcz0xCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTgwNDg5 XSBIdWdlVExCOiBjYW4gb3B0aW1pemUgNyB2bWVtbWFwIHBhZ2VzIGZvciBodWdlcGFnZXMtMjA0 OGtCCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTgwNDkyXSBIdWdl VExCIHJlZ2lzdGVyZWQgMi4wMCBNaUIgcGFnZSBzaXplLCBwcmUtYWxsb2NhdGVkIDAgcGFnZXMK Tm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4xODA3MDBdIEFDUEk6IEFk ZGVkIF9PU0koTW9kdWxlIERldmljZSkKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6 IFsgICAgMC4xODA3MDBdIEFDUEk6IEFkZGVkIF9PU0koUHJvY2Vzc29yIERldmljZSkKTm92ICA2 IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4xODA3MDFdIEFDUEk6IEFkZGVkIF9P U0koMy4wIF9TQ1AgRXh0ZW5zaW9ucykKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6 IFsgICAgMC4xODA3MDJdIEFDUEk6IEFkZGVkIF9PU0koUHJvY2Vzc29yIEFnZ3JlZ2F0b3IgRGV2 aWNlKQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE4MDcwMl0gQUNQ STogQWRkZWQgX09TSShMaW51eC1EZWxsLVZpZGVvKQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0 IHZtdW5peDogWyAgICAwLjE4MDcwM10gQUNQSTogQWRkZWQgX09TSShMaW51eC1MZW5vdm8tTlYt SERNSS1BdWRpbykKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4xODA3 MDRdIEFDUEk6IEFkZGVkIF9PU0koTGludXgtSFBJLUh5YnJpZC1HcmFwaGljcykKTm92ICA2IDEz OjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4xODEwMjhdIEFDUEk6IDEgQUNQSSBBTUwg dGFibGVzIHN1Y2Nlc3NmdWxseSBhY3F1aXJlZCBhbmQgbG9hZGVkCk5vdiAgNiAxMzowMToyMiBs b2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTgxNTY1XSBBQ1BJOiBJbnRlcnByZXRlciBlbmFibGVk Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTgxNTc1XSBBQ1BJOiBQ TTogKHN1cHBvcnRzIFMwIFMzIFM0IFM1KQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5p eDogWyAgICAwLjE4MTU3Nl0gQUNQSTogVXNpbmcgSU9BUElDIGZvciBpbnRlcnJ1cHQgcm91dGlu ZwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE4MTU4NV0gUENJOiBV c2luZyBob3N0IGJyaWRnZSB3aW5kb3dzIGZyb20gQUNQSTsgaWYgbmVjZXNzYXJ5LCB1c2UgInBj aT1ub2NycyIgYW5kIHJlcG9ydCBhIGJ1ZwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5p eDogWyAgICAwLjE4MTU4NV0gUENJOiBVc2luZyBFODIwIHJlc2VydmF0aW9ucyBmb3IgaG9zdCBi cmlkZ2Ugd2luZG93cwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE4 MTYzOF0gQUNQSTogRW5hYmxlZCAyIEdQRXMgaW4gYmxvY2sgMDAgdG8gMEYKTm92ICA2IDEzOjAx OjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4xODI5ODVdIEFDUEk6IFBDSSBSb290IEJyaWRn ZSBbUENJMF0gKGRvbWFpbiAwMDAwIFtidXMgMDAtZmZdKQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxo b3N0IHZtdW5peDogWyAgICAwLjE4Mjk4OV0gYWNwaSBQTlAwQTAzOjAwOiBfT1NDOiBPUyBzdXBw b3J0cyBbQVNQTSBDbG9ja1BNIFNlZ21lbnRzIE1TSSBIUFgtVHlwZTNdCk5vdiAgNiAxMzowMToy MiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTgyOTkxXSBhY3BpIFBOUDBBMDM6MDA6IF9PU0M6 IG5vdCByZXF1ZXN0aW5nIE9TIGNvbnRyb2w7IE9TIHJlcXVpcmVzIFtFeHRlbmRlZENvbmZpZyBB U1BNIENsb2NrUE0gTVNJXQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAw LjE4Mjk5Nl0gYWNwaSBQTlAwQTAzOjAwOiBmYWlsIHRvIGFkZCBNTUNPTkZJRyBpbmZvcm1hdGlv biwgY2FuJ3QgYWNjZXNzIGV4dGVuZGVkIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIHVuZGVyIHRo aXMgYnJpZGdlLgpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE4MzEz MV0gYWNwaXBocDogU2xvdCBbM10gcmVnaXN0ZXJlZApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0 IHZtdW5peDogWyAgICAwLjE4MzE0MV0gYWNwaXBocDogU2xvdCBbNF0gcmVnaXN0ZXJlZApOb3Yg IDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE4MzE0OV0gYWNwaXBocDogU2xv dCBbNV0gcmVnaXN0ZXJlZApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAw LjE4MzE1N10gYWNwaXBocDogU2xvdCBbNl0gcmVnaXN0ZXJlZApOb3YgIDYgMTM6MDE6MjIgbG9j YWxob3N0IHZtdW5peDogWyAgICAwLjE4MzE2NV0gYWNwaXBocDogU2xvdCBbN10gcmVnaXN0ZXJl ZApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE4MzE3M10gYWNwaXBo cDogU2xvdCBbOF0gcmVnaXN0ZXJlZApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDog WyAgICAwLjE4MzE4MV0gYWNwaXBocDogU2xvdCBbOV0gcmVnaXN0ZXJlZApOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE4MzE5MV0gYWNwaXBocDogU2xvdCBbMTBdIHJl Z2lzdGVyZWQKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4xODMxOTld IGFjcGlwaHA6IFNsb3QgWzExXSByZWdpc3RlcmVkCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qg dm11bml4OiBbICAgIDAuMTgzMjA3XSBhY3BpcGhwOiBTbG90IFsxMl0gcmVnaXN0ZXJlZApOb3Yg IDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE4MzIxNV0gYWNwaXBocDogU2xv dCBbMTNdIHJlZ2lzdGVyZWQKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAg MC4xODMyMjNdIGFjcGlwaHA6IFNsb3QgWzE0XSByZWdpc3RlcmVkCk5vdiAgNiAxMzowMToyMiBs b2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTgzMjMxXSBhY3BpcGhwOiBTbG90IFsxNV0gcmVnaXN0 ZXJlZApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE4MzIzOV0gYWNw aXBocDogU2xvdCBbMTZdIHJlZ2lzdGVyZWQKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVu aXg6IFsgICAgMC4xODMyNDhdIGFjcGlwaHA6IFNsb3QgWzE3XSByZWdpc3RlcmVkCk5vdiAgNiAx MzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTgzMjU2XSBhY3BpcGhwOiBTbG90IFsx OF0gcmVnaXN0ZXJlZApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE4 MzI2NF0gYWNwaXBocDogU2xvdCBbMTldIHJlZ2lzdGVyZWQKTm92ICA2IDEzOjAxOjIyIGxvY2Fs aG9zdCB2bXVuaXg6IFsgICAgMC4xODMyNzJdIGFjcGlwaHA6IFNsb3QgWzIwXSByZWdpc3RlcmVk Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTgzMjgwXSBhY3BpcGhw OiBTbG90IFsyMV0gcmVnaXN0ZXJlZApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDog WyAgICAwLjE4MzI4OF0gYWNwaXBocDogU2xvdCBbMjJdIHJlZ2lzdGVyZWQKTm92ICA2IDEzOjAx OjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4xODMyOTddIGFjcGlwaHA6IFNsb3QgWzIzXSBy ZWdpc3RlcmVkCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTgzMzA1 XSBhY3BpcGhwOiBTbG90IFsyNF0gcmVnaXN0ZXJlZApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0 IHZtdW5peDogWyAgICAwLjE4MzMxNV0gYWNwaXBocDogU2xvdCBbMjVdIHJlZ2lzdGVyZWQKTm92 ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4xODMzMjNdIGFjcGlwaHA6IFNs b3QgWzI2XSByZWdpc3RlcmVkCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAg IDAuMTgzMzMxXSBhY3BpcGhwOiBTbG90IFsyN10gcmVnaXN0ZXJlZApOb3YgIDYgMTM6MDE6MjIg bG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE4MzMzOV0gYWNwaXBocDogU2xvdCBbMjhdIHJlZ2lz dGVyZWQKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4xODMzNDddIGFj cGlwaHA6IFNsb3QgWzI5XSByZWdpc3RlcmVkCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11 bml4OiBbICAgIDAuMTgzMzU2XSBhY3BpcGhwOiBTbG90IFszMF0gcmVnaXN0ZXJlZApOb3YgIDYg MTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE4MzM2NF0gYWNwaXBocDogU2xvdCBb MzFdIHJlZ2lzdGVyZWQKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4x ODMzNzBdIFBDSSBob3N0IGJyaWRnZSB0byBidXMgMDAwMDowMApOb3YgIDYgMTM6MDE6MjIgbG9j YWxob3N0IHZtdW5peDogWyAgICAwLjE4MzM3MV0gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyBy ZXNvdXJjZSBbaW8gIDB4MDAwMC0weDBjZjcgd2luZG93XQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxo b3N0IHZtdW5peDogWyAgICAwLjE4MzM3M10gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNv dXJjZSBbaW8gIDB4MGQwMC0weGZmZmYgd2luZG93XQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0 IHZtdW5peDogWyAgICAwLjE4MzM3M10gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJj ZSBbbWVtIDB4MDAwYTAwMDAtMHgwMDBiZmZmZiB3aW5kb3ddCk5vdiAgNiAxMzowMToyMiBsb2Nh bGhvc3Qgdm11bml4OiBbICAgIDAuMTgzMzc0XSBwY2lfYnVzIDAwMDA6MDA6IHJvb3QgYnVzIHJl c291cmNlIFttZW0gMHg4MDAwMDAwMC0weGZlYmZmZmZmIHdpbmRvd10KTm92ICA2IDEzOjAxOjIy IGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4xODMzNzVdIHBjaV9idXMgMDAwMDowMDogcm9vdCBi dXMgcmVzb3VyY2UgW21lbSAweDEwMDAwMDAwMC0weDE3ZmZmZmZmZiB3aW5kb3ddCk5vdiAgNiAx MzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTgzMzc2XSBwY2lfYnVzIDAwMDA6MDA6 IHJvb3QgYnVzIHJlc291cmNlIFtidXMgMDAtZmZdCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qg dm11bml4OiBbICAgIDAuMTgzMzk5XSBwY2kgMDAwMDowMDowMC4wOiBbODA4NjoxMjM3XSB0eXBl IDAwIGNsYXNzIDB4MDYwMDAwCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAg IDAuMTg0MDMwXSBwY2kgMDAwMDowMDowMS4wOiBbODA4Njo3MDAwXSB0eXBlIDAwIGNsYXNzIDB4 MDYwMTAwCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTg0MzQzXSBw Y2kgMDAwMDowMDowMS4xOiBbODA4Njo3MDEwXSB0eXBlIDAwIGNsYXNzIDB4MDEwMTgwCk5vdiAg NiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTg1MjY2XSBwY2kgMDAwMDowMDow MS4xOiByZWcgMHgyMDogW2lvICAweGMwNDAtMHhjMDRmXQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxo b3N0IHZtdW5peDogWyAgICAwLjE4NTYzNF0gcGNpIDAwMDA6MDA6MDEuMTogbGVnYWN5IElERSBx dWlyazogcmVnIDB4MTA6IFtpbyAgMHgwMWYwLTB4MDFmN10KTm92ICA2IDEzOjAxOjIyIGxvY2Fs aG9zdCB2bXVuaXg6IFsgICAgMC4xODU2MzVdIHBjaSAwMDAwOjAwOjAxLjE6IGxlZ2FjeSBJREUg cXVpcms6IHJlZyAweDE0OiBbaW8gIDB4MDNmNl0KTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2 bXVuaXg6IFsgICAgMC4xODU2MzZdIHBjaSAwMDAwOjAwOjAxLjE6IGxlZ2FjeSBJREUgcXVpcms6 IHJlZyAweDE4OiBbaW8gIDB4MDE3MC0weDAxNzddCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qg dm11bml4OiBbICAgIDAuMTg1NjM3XSBwY2kgMDAwMDowMDowMS4xOiBsZWdhY3kgSURFIHF1aXJr OiByZWcgMHgxYzogW2lvICAweDAzNzZdCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4 OiBbICAgIDAuMTg1NzMxXSBwY2kgMDAwMDowMDowMS4zOiBbODA4Njo3MTEzXSB0eXBlIDAwIGNs YXNzIDB4MDY4MDAwCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTg1 OTc5XSBwY2kgMDAwMDowMDowMS4zOiBxdWlyazogW2lvICAweGIwMDAtMHhiMDNmXSBjbGFpbWVk IGJ5IFBJSVg0IEFDUEkKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4x ODU5ODVdIHBjaSAwMDAwOjAwOjAxLjM6IHF1aXJrOiBbaW8gIDB4YjEwMC0weGIxMGZdIGNsYWlt ZWQgYnkgUElJWDQgU01CCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAu MTg2MzM1XSBwY2kgMDAwMDowMDowMi4wOiBbMTIzNDoxMTExXSB0eXBlIDAwIGNsYXNzIDB4MDMw MDAwCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMTg3NDc0XSBwY2kg MDAwMDowMDowMi4wOiByZWcgMHgxMDogW21lbSAweDgwMDAwMDAwLTB4ODBmZmZmZmYgcHJlZl0K Tm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4xODkwMTldIHBjaSAwMDAw OjAwOjAyLjA6IHJlZyAweDE4OiBbbWVtIDB4ODEwMjAwMDAtMHg4MTAyMGZmZl0KTm92ICA2IDEz OjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4xOTA5ODldIHBjaSAwMDAwOjAwOjAyLjA6 IHJlZyAweDMwOiBbbWVtIDB4ZmZmZjAwMDAtMHhmZmZmZmZmZiBwcmVmXQpOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE5MTAxN10gcGNpIDAwMDA6MDA6MDIuMDogQkFS IDA6IGFzc2lnbmVkIHRvIGVmaWZiCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBb ICAgIDAuMTkxMDMxXSBwY2kgMDAwMDowMDowMi4wOiBWaWRlbyBkZXZpY2Ugd2l0aCBzaGFkb3dl ZCBST00gYXQgW21lbSAweDAwMGMwMDAwLTB4MDAwZGZmZmZdCk5vdiAgNiAxMzowMToyMiBsb2Nh bGhvc3Qgdm11bml4OiBbICAgIDAuMTkxNzIzXSBwY2kgMDAwMDowMDowMy4wOiBbODA4NjoxMDBl XSB0eXBlIDAwIGNsYXNzIDB4MDIwMDAwCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4 OiBbICAgIDAuMTkyMTg4XSBwY2kgMDAwMDowMDowMy4wOiByZWcgMHgxMDogW21lbSAweDgxMDAw MDAwLTB4ODEwMWZmZmZdCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAu MTkyNTIzXSBwY2kgMDAwMDowMDowMy4wOiByZWcgMHgxNDogW2lvICAweGMwMDAtMHhjMDNmXQpO b3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjE5NDU3Ml0gcGNpIDAwMDA6 MDA6MDMuMDogcmVnIDB4MzA6IFttZW0gMHhmZmZjMDAwMC0weGZmZmZmZmZmIHByZWZdCk5vdiAg NiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMjAyNTEzXSBBQ1BJOiBQQ0k6IElu dGVycnVwdCBsaW5rIExOS0EgY29uZmlndXJlZCBmb3IgSVJRIDExCk5vdiAgNiAxMzowMToyMiBs b2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMjA0MzMzXSBBQ1BJOiBQQ0k6IEludGVycnVwdCBsaW5r IExOS0IgY29uZmlndXJlZCBmb3IgSVJRIDExCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11 bml4OiBbICAgIDAuMjA0NDQ5XSBBQ1BJOiBQQ0k6IEludGVycnVwdCBsaW5rIExOS0MgY29uZmln dXJlZCBmb3IgSVJRIDEwCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAu MjA0NTM3XSBBQ1BJOiBQQ0k6IEludGVycnVwdCBsaW5rIExOS0QgY29uZmlndXJlZCBmb3IgSVJR IDEwCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMjA0NTg4XSBBQ1BJ OiBQQ0k6IEludGVycnVwdCBsaW5rIExOS1MgY29uZmlndXJlZCBmb3IgSVJRIDkKTm92ICA2IDEz OjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4yMDQ3ODVdIGlvbW11OiBEZWZhdWx0IGRv bWFpbiB0eXBlOiBUcmFuc2xhdGVkIApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDog WyAgICAwLjIwNDc4N10gaW9tbXU6IERNQSBkb21haW4gVExCIGludmFsaWRhdGlvbiBwb2xpY3k6 IGxhenkgbW9kZSAKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4yMDQ5 NDhdIFNDU0kgc3Vic3lzdGVtIGluaXRpYWxpemVkCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qg dm11bml4OiBbICAgIDAuMjA0OTk5XSBBQ1BJOiBidXMgdHlwZSBVU0IgcmVnaXN0ZXJlZApOb3Yg IDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjIwNTAxM10gdXNiY29yZTogcmVn aXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciB1c2JmcwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxo b3N0IHZtdW5peDogWyAgICAwLjIwNTAxOV0gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJm YWNlIGRyaXZlciBodWIKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4y MDUwMjNdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGRldmljZSBkcml2ZXIgdXNiCk5vdiAgNiAx MzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMjA1MDc0XSBFREFDIE1DOiBWZXI6IDMu MC4wCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMjA1MjMxXSBSZWdp c3RlcmVkIGVmaXZhcnMgb3BlcmF0aW9ucwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5p eDogWyAgICAwLjIwNTQ0Nl0gTmV0TGFiZWw6IEluaXRpYWxpemluZwpOb3YgIDYgMTM6MDE6MjIg bG9jYWxob3N0IHZtdW5peDogWyAgICAwLjIwNTQ0N10gTmV0TGFiZWw6ICBkb21haW4gaGFzaCBz aXplID0gMTI4Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMjA1NDQ4 XSBOZXRMYWJlbDogIHByb3RvY29scyA9IFVOTEFCRUxFRCBDSVBTT3Y0IENBTElQU08KTm92ICA2 IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4yMDU0NTddIE5ldExhYmVsOiAgdW5s YWJlbGVkIHRyYWZmaWMgYWxsb3dlZCBieSBkZWZhdWx0Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhv c3Qgdm11bml4OiBbICAgIDAuMjA1NDg1XSBtY3RwOiBtYW5hZ2VtZW50IGNvbXBvbmVudCB0cmFu c3BvcnQgcHJvdG9jb2wgY29yZQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAg ICAwLjIwNTQ4NV0gTkVUOiBSZWdpc3RlcmVkIFBGX01DVFAgcHJvdG9jb2wgZmFtaWx5Ck5vdiAg NiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMjA1NDkxXSBQQ0k6IFVzaW5nIEFD UEkgZm9yIElSUSByb3V0aW5nCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAg IDAuMjA1NjI3XSBwY2kgMDAwMDowMDowMi4wOiB2Z2FhcmI6IHNldHRpbmcgYXMgYm9vdCBWR0Eg ZGV2aWNlCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMjA1NjI5XSBw Y2kgMDAwMDowMDowMi4wOiB2Z2FhcmI6IGJyaWRnZSBjb250cm9sIHBvc3NpYmxlCk5vdiAgNiAx MzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMjA1NjMwXSBwY2kgMDAwMDowMDowMi4w OiB2Z2FhcmI6IFZHQSBkZXZpY2UgYWRkZWQ6IGRlY29kZXM9aW8rbWVtLG93bnM9aW8rbWVtLGxv Y2tzPW5vbmUKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4yMDU2MzJd IHZnYWFyYjogbG9hZGVkCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAu MjA1NzAyXSBocGV0OiAzIGNoYW5uZWxzIG9mIDAgcmVzZXJ2ZWQgZm9yIHBlci1jcHUgdGltZXJz Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMjA1NzE2XSBocGV0MDog YXQgTU1JTyAweGZlZDAwMDAwLCBJUlFzIDIsIDgsIDAKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9z dCB2bXVuaXg6IFsgICAgMC4yMDU3MTldIGhwZXQwOiAzIGNvbXBhcmF0b3JzLCA2NC1iaXQgMTAw LjAwMDAwMCBNSHogY291bnRlcgpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAg ICAwLjIwOTMwN10gY2xvY2tzb3VyY2U6IFN3aXRjaGVkIHRvIGNsb2Nrc291cmNlIGt2bS1jbG9j awpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjIxMjMwOV0gVkZTOiBE aXNrIHF1b3RhcyBkcXVvdF82LjYuMApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDog WyAgICAwLjIxMjMxOV0gVkZTOiBEcXVvdC1jYWNoZSBoYXNoIHRhYmxlIGVudHJpZXM6IDUxMiAo b3JkZXIgMCwgNDA5NiBieXRlcykKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsg ICAgMC4yMTI0MDFdIEFwcEFybW9yOiBBcHBBcm1vciBGaWxlc3lzdGVtIEVuYWJsZWQKTm92ICA2 IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4yMTI0MTVdIHBucDogUG5QIEFDUEkg aW5pdApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjIxMjYyMl0gcG5w OiBQblAgQUNQSTogZm91bmQgNiBkZXZpY2VzCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11 bml4OiBbICAgIDAuMjE4MDU5XSBjbG9ja3NvdXJjZTogYWNwaV9wbTogbWFzazogMHhmZmZmZmYg bWF4X2N5Y2xlczogMHhmZmZmZmYsIG1heF9pZGxlX25zOiAyMDg1NzAxMDI0IG5zCk5vdiAgNiAx MzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMjE4MTA4XSBORVQ6IFJlZ2lzdGVyZWQg UEZfSU5FVCBwcm90b2NvbCBmYW1pbHkKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6 IFsgICAgMC4yMTgxNTRdIElQIGlkZW50cyBoYXNoIHRhYmxlIGVudHJpZXM6IDMyNzY4IChvcmRl cjogNiwgMjYyMTQ0IGJ5dGVzLCBsaW5lYXIpCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11 bml4OiBbICAgIDAuMjE5MDkxXSB0Y3BfbGlzdGVuX3BvcnRhZGRyX2hhc2ggaGFzaCB0YWJsZSBl bnRyaWVzOiAxMDI0IChvcmRlcjogMiwgMTYzODQgYnl0ZXMsIGxpbmVhcikKTm92ICA2IDEzOjAx OjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4yMTkyOTRdIFRhYmxlLXBlcnR1cmIgaGFzaCB0 YWJsZSBlbnRyaWVzOiA2NTUzNiAob3JkZXI6IDYsIDI2MjE0NCBieXRlcywgbGluZWFyKQpOb3Yg IDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjIxOTMwMF0gVENQIGVzdGFibGlz aGVkIGhhc2ggdGFibGUgZW50cmllczogMTYzODQgKG9yZGVyOiA1LCAxMzEwNzIgYnl0ZXMsIGxp bmVhcikKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4yMTkzMThdIFRD UCBiaW5kIGhhc2ggdGFibGUgZW50cmllczogMTYzODQgKG9yZGVyOiA2LCAyNjIxNDQgYnl0ZXMs IGxpbmVhcikKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4yMTkzMjld IFRDUDogSGFzaCB0YWJsZXMgY29uZmlndXJlZCAoZXN0YWJsaXNoZWQgMTYzODQgYmluZCAxNjM4 NCkKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4yMTkzNjBdIE1QVENQ IHRva2VuIGhhc2ggdGFibGUgZW50cmllczogMjA0OCAob3JkZXI6IDMsIDQ5MTUyIGJ5dGVzLCBs aW5lYXIpCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMjE5MzczXSBV RFAgaGFzaCB0YWJsZSBlbnRyaWVzOiAxMDI0IChvcmRlcjogMywgMzI3NjggYnl0ZXMsIGxpbmVh cikKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4yMTkzNzhdIFVEUC1M aXRlIGhhc2ggdGFibGUgZW50cmllczogMTAyNCAob3JkZXI6IDMsIDMyNzY4IGJ5dGVzLCBsaW5l YXIpCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMjE5NDAwXSBORVQ6 IFJlZ2lzdGVyZWQgUEZfVU5JWC9QRl9MT0NBTCBwcm90b2NvbCBmYW1pbHkKTm92ICA2IDEzOjAx OjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4yMTk0MDNdIE5FVDogUmVnaXN0ZXJlZCBQRl9Y RFAgcHJvdG9jb2wgZmFtaWx5Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAg IDAuMjE5NDA3XSBwY2kgMDAwMDowMDowMy4wOiBjYW4ndCBjbGFpbSBCQVIgNiBbbWVtIDB4ZmZm YzAwMDAtMHhmZmZmZmZmZiBwcmVmXTogbm8gY29tcGF0aWJsZSBicmlkZ2Ugd2luZG93Ck5vdiAg NiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMjE5NDEzXSBwY2kgMDAwMDowMDow My4wOiBCQVIgNjogYXNzaWduZWQgW21lbSAweDgxMDQwMDAwLTB4ODEwN2ZmZmYgcHJlZl0KTm92 ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4yMTk0MTZdIHBjaV9idXMgMDAw MDowMDogcmVzb3VyY2UgNCBbaW8gIDB4MDAwMC0weDBjZjcgd2luZG93XQpOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjIxOTQxN10gcGNpX2J1cyAwMDAwOjAwOiByZXNv dXJjZSA1IFtpbyAgMHgwZDAwLTB4ZmZmZiB3aW5kb3ddCk5vdiAgNiAxMzowMToyMiBsb2NhbGhv c3Qgdm11bml4OiBbICAgIDAuMjE5NDE4XSBwY2lfYnVzIDAwMDA6MDA6IHJlc291cmNlIDYgW21l bSAweDAwMGEwMDAwLTB4MDAwYmZmZmYgd2luZG93XQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0 IHZtdW5peDogWyAgICAwLjIxOTQxOV0gcGNpX2J1cyAwMDAwOjAwOiByZXNvdXJjZSA3IFttZW0g MHg4MDAwMDAwMC0weGZlYmZmZmZmIHdpbmRvd10KTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2 bXVuaXg6IFsgICAgMC4yMTk0MTldIHBjaV9idXMgMDAwMDowMDogcmVzb3VyY2UgOCBbbWVtIDB4 MTAwMDAwMDAwLTB4MTdmZmZmZmZmIHdpbmRvd10KTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2 bXVuaXg6IFsgICAgMC4yMTk0NTNdIHBjaSAwMDAwOjAwOjAxLjA6IFBJSVgzOiBFbmFibGluZyBQ YXNzaXZlIFJlbGVhc2UKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4y MTk0NjBdIHBjaSAwMDAwOjAwOjAwLjA6IExpbWl0aW5nIGRpcmVjdCBQQ0kvUENJIHRyYW5zZmVy cwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjIxOTQ2N10gcGNpIDAw MDA6MDA6MDEuMDogQWN0aXZhdGluZyBJU0EgRE1BIGhhbmcgd29ya2Fyb3VuZHMKTm92ICA2IDEz OjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4yMTk0OTRdIFBDSTogQ0xTIDAgYnl0ZXMs IGRlZmF1bHQgNjQKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4yMTk1 MjZdIFRyeWluZyB0byB1bnBhY2sgcm9vdGZzIGltYWdlIGFzIGluaXRyYW1mcy4uLgpOb3YgIDYg MTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjIyMjMwMl0gY2xvY2tzb3VyY2U6IHRz YzogbWFzazogMHhmZmZmZmZmZmZmZmZmZmZmIG1heF9jeWNsZXM6IDB4MWEwM2RmZTczYjMsIG1h eF9pZGxlX25zOiA0NDA3OTUyNTY4NDUgbnMKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVu aXg6IFsgICAgMC4yMjY0NTJdIEluaXRpYWxpc2Ugc3lzdGVtIHRydXN0ZWQga2V5cmluZ3MKTm92 ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4yMjY0OTRdIHdvcmtpbmdzZXQ6 IHRpbWVzdGFtcF9iaXRzPTQwIG1heF9vcmRlcj0xOSBidWNrZXRfb3JkZXI9MApOb3YgIDYgMTM6 MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjIyNzE5MF0gemJ1ZDogbG9hZGVkCk5vdiAg NiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMjI3NTE5XSBBbGxvY2F0aW5nIElN QSBibGFja2xpc3Qga2V5cmluZy4KTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsg ICAgMC4yNDIzMDJdIEtleSB0eXBlIGFzeW1tZXRyaWMgcmVnaXN0ZXJlZApOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjI0MjMwNF0gQXN5bW1ldHJpYyBrZXkgcGFyc2Vy ICd4NTA5JyByZWdpc3RlcmVkCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAg IDAuMzcyMzg5XSBGcmVlaW5nIGluaXRyZCBtZW1vcnk6IDEzMDEySwpOb3YgIDYgMTM6MDE6MjIg bG9jYWxob3N0IHZtdW5peDogWyAgICAwLjM3MjU1NV0gYWxnOiBzZWxmLXRlc3RzIGZvciBDVFIt S0RGIChobWFjKHNoYTI1NikpIHBhc3NlZApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5p eDogWyAgICAwLjM3MjU3Ml0gQmxvY2sgbGF5ZXIgU0NTSSBnZW5lcmljIChic2cpIGRyaXZlciB2 ZXJzaW9uIDAuNCBsb2FkZWQgKG1ham9yIDI0NykKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2 bXVuaXg6IFsgICAgMC4zNzI1ODhdIGlvIHNjaGVkdWxlciBtcS1kZWFkbGluZSByZWdpc3RlcmVk Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMzcyNzAwXSBzaHBjaHA6 IFN0YW5kYXJkIEhvdCBQbHVnIFBDSSBDb250cm9sbGVyIERyaXZlciB2ZXJzaW9uOiAwLjQKTm92 ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4zNzI3NTJdIGlucHV0OiBQb3dl ciBCdXR0b24gYXMgL2RldmljZXMvTE5YU1lTVE06MDAvTE5YUFdSQk46MDAvaW5wdXQvaW5wdXQw Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMzcyNzc0XSBBQ1BJOiBi dXR0b246IFBvd2VyIEJ1dHRvbiBbUFdSRl0KTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVu aXg6IFsgICAgMC4zNzI5MjJdIFNlcmlhbDogODI1MC8xNjU1MCBkcml2ZXIsIDMyIHBvcnRzLCBJ UlEgc2hhcmluZyBlbmFibGVkCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAg IDAuMzczMDAzXSAwMDowNDogdHR5UzAgYXQgSS9PIDB4M2Y4IChpcnEgPSA0LCBiYXNlX2JhdWQg PSAxMTUyMDApIGlzIGEgMTY1NTBBCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBb ICAgIDAuMzczNzcxXSBMaW51eCBhZ3BnYXJ0IGludGVyZmFjZSB2MC4xMDMKTm92ICA2IDEzOjAx OjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4zNzUwMDJdIGJyZDogbW9kdWxlIGxvYWRlZApO b3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjM3NTU3OF0gbG9vcDogbW9k dWxlIGxvYWRlZApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjM3NTk0 MF0gc2NzaSBob3N0MDogYXRhX3BpaXgKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6 IFsgICAgMC4zNzU5OTNdIHNjc2kgaG9zdDE6IGF0YV9waWl4Ck5vdiAgNiAxMzowMToyMiBsb2Nh bGhvc3Qgdm11bml4OiBbICAgIDAuMzc2MDA5XSBhdGExOiBQQVRBIG1heCBNV0RNQTIgY21kIDB4 MWYwIGN0bCAweDNmNiBibWRtYSAweGMwNDAgaXJxIDE0Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhv c3Qgdm11bml4OiBbICAgIDAuMzc2MDEwXSBhdGEyOiBQQVRBIG1heCBNV0RNQTIgY21kIDB4MTcw IGN0bCAweDM3NiBibWRtYSAweGMwNDggaXJxIDE1Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qg dm11bml4OiBbICAgIDAuMzc2MDg0XSB0dW46IFVuaXZlcnNhbCBUVU4vVEFQIGRldmljZSBkcml2 ZXIsIDEuNgpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjM3NjY1NF0g UFBQIGdlbmVyaWMgZHJpdmVyIHZlcnNpb24gMi40LjIKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9z dCB2bXVuaXg6IFsgICAgMC4zNzY2NzhdIGVoY2lfaGNkOiBVU0IgMi4wICdFbmhhbmNlZCcgSG9z dCBDb250cm9sbGVyIChFSENJKSBEcml2ZXIKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVu aXg6IFsgICAgMC4zNzY2ODFdIGVoY2ktcGNpOiBFSENJIFBDSSBwbGF0Zm9ybSBkcml2ZXIKTm92 ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4zNzY2ODddIGVoY2ktcGxhdGZv cm06IEVIQ0kgZ2VuZXJpYyBwbGF0Zm9ybSBkcml2ZXIKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9z dCB2bXVuaXg6IFsgICAgMC4zNzY2OTBdIG9oY2lfaGNkOiBVU0IgMS4xICdPcGVuJyBIb3N0IENv bnRyb2xsZXIgKE9IQ0kpIERyaXZlcgpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDog WyAgICAwLjM3NjY5MV0gb2hjaS1wY2k6IE9IQ0kgUENJIHBsYXRmb3JtIGRyaXZlcgpOb3YgIDYg MTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjM3NjY5NF0gb2hjaS1wbGF0Zm9ybTog T0hDSSBnZW5lcmljIHBsYXRmb3JtIGRyaXZlcgpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZt dW5peDogWyAgICAwLjM3NjY5Nl0gdWhjaV9oY2Q6IFVTQiBVbml2ZXJzYWwgSG9zdCBDb250cm9s bGVyIEludGVyZmFjZSBkcml2ZXIKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsg ICAgMC4zNzY3MjNdIGk4MDQyOiBQTlA6IFBTLzIgQ29udHJvbGxlciBbUE5QMDMwMzpLQkQsUE5Q MGYxMzpNT1VdIGF0IDB4NjAsMHg2NCBpcnEgMSwxMgpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0 IHZtdW5peDogWyAgICAwLjM3NzE3M10gc2VyaW86IGk4MDQyIEtCRCBwb3J0IGF0IDB4NjAsMHg2 NCBpcnEgMQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjM3NzE3NV0g c2VyaW86IGk4MDQyIEFVWCBwb3J0IGF0IDB4NjAsMHg2NCBpcnEgMTIKTm92ICA2IDEzOjAxOjIy IGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4zNzcyMjhdIG1vdXNlZGV2OiBQUy8yIG1vdXNlIGRl dmljZSBjb21tb24gZm9yIGFsbCBtaWNlCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4 OiBbICAgIDAuMzc3Mzc2XSBpbnB1dDogQVQgVHJhbnNsYXRlZCBTZXQgMiBrZXlib2FyZCBhcyAv ZGV2aWNlcy9wbGF0Zm9ybS9pODA0Mi9zZXJpbzAvaW5wdXQvaW5wdXQxCk5vdiAgNiAxMzowMToy MiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMzc3NTIyXSBydGNfY21vcyAwMDowNTogUlRDIGNh biB3YWtlIGZyb20gUzQKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4z Nzc3ODFdIHJ0Y19jbW9zIDAwOjA1OiByZWdpc3RlcmVkIGFzIHJ0YzAKTm92ICA2IDEzOjAxOjIy IGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4zNzc4MTddIHJ0Y19jbW9zIDAwOjA1OiBzZXR0aW5n IHN5c3RlbSBjbG9jayB0byAyMDIyLTExLTA2VDEyOjAxOjE2IFVUQyAoMTY2NzczNjA3NikKTm92 ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4zNzc4MjZdIHJ0Y19jbW9zIDAw OjA1OiBhbGFybXMgdXAgdG8gb25lIGRheSwgeTNrLCAyNDIgYnl0ZXMgbnZyYW0sIGhwZXQgaXJx cwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjM3NzgzMF0gaTJjX2Rl djogaTJjIC9kZXYgZW50cmllcyBkcml2ZXIKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVu aXg6IFsgICAgMC4zNzc4NTddIGRldmljZS1tYXBwZXI6IHVldmVudDogdmVyc2lvbiAxLjAuMwpO b3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjM3ODA0MF0gZGV2aWNlLW1h cHBlcjogaW9jdGw6IDQuNDcuMC1pb2N0bCAoMjAyMi0wNy0yOCkgaW5pdGlhbGlzZWQ6IGRtLWRl dmVsQHJlZGhhdC5jb20KTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4z NzgwNDNdIGludGVsX3BzdGF0ZTogQ1BVIG1vZGVsIG5vdCBzdXBwb3J0ZWQKTm92ICA2IDEzOjAx OjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4zNzgwNDldIGxlZHRyaWctY3B1OiByZWdpc3Rl cmVkIHRvIGluZGljYXRlIGFjdGl2aXR5IG9uIENQVXMKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9z dCB2bXVuaXg6IFsgICAgMC4zNzgwNjRdIGVmaWZiOiBwcm9iaW5nIGZvciBlZmlmYgpOb3YgIDYg MTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjM3ODA3MV0gZWZpZmI6IGZyYW1lYnVm ZmVyIGF0IDB4ODAwMDAwMDAsIHVzaW5nIDE0MDhrLCB0b3RhbCAxNDA4awpOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjM3ODA3M10gZWZpZmI6IG1vZGUgaXMgODAweDYw MHgyNCwgbGluZWxlbmd0aD0yNDAwLCBwYWdlcz0xCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qg dm11bml4OiBbICAgIDAuMzc4MDczXSBlZmlmYjogc2Nyb2xsaW5nOiByZWRyYXcKTm92ICA2IDEz OjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4zNzgwNzRdIGVmaWZiOiBUcnVlY29sb3I6 IHNpemU9MDo4Ojg6OCwgc2hpZnQ9MDoxNjo4OjAKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2 bXVuaXg6IFsgICAgMC4zNzgxMjJdIENvbnNvbGU6IHN3aXRjaGluZyB0byBjb2xvdXIgZnJhbWUg YnVmZmVyIGRldmljZSAxMDB4MzcKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsg ICAgMC4zNzkzNTFdIGZiMDogRUZJIFZHQSBmcmFtZSBidWZmZXIgZGV2aWNlCk5vdiAgNiAxMzow MToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMzc5MzU3XSBFRkkgVmFyaWFibGVzIEZhY2ls aXR5IHYwLjA4IDIwMDQtTWF5LTE3Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBb ICAgIDAuMzc5Njg2XSBORVQ6IFJlZ2lzdGVyZWQgUEZfSU5FVDYgcHJvdG9jb2wgZmFtaWx5Ck5v diAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMzgwMDUxXSBTZWdtZW50IFJv dXRpbmcgd2l0aCBJUHY2Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAu MzgwMDU2XSBJbi1zaXR1IE9BTSAoSU9BTSkgd2l0aCBJUHY2Ck5vdiAgNiAxMzowMToyMiBsb2Nh bGhvc3Qgdm11bml4OiBbICAgIDAuMzgwMDY3XSBORVQ6IFJlZ2lzdGVyZWQgUEZfUEFDS0VUIHBy b3RvY29sIGZhbWlseQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjM4 MDA4NF0gS2V5IHR5cGUgZG5zX3Jlc29sdmVyIHJlZ2lzdGVyZWQKTm92ICA2IDEzOjAxOjIyIGxv Y2FsaG9zdCB2bXVuaXg6IFsgICAgMC4zODAxNjJdIElQSSBzaG9ydGhhbmQgYnJvYWRjYXN0OiBl bmFibGVkCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMzgwMTc0XSBz Y2hlZF9jbG9jazogTWFya2luZyBzdGFibGUgKDM4MDcyOTM3NiwgLTI0ODc3MDYpLT4oMzgyMjIz ODY2LCAtMzk4MjE5NikKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4z ODAyMzRdIHJlZ2lzdGVyZWQgdGFza3N0YXRzIHZlcnNpb24gMQpOb3YgIDYgMTM6MDE6MjIgbG9j YWxob3N0IHZtdW5peDogWyAgICAwLjM4MDI0MV0gTG9hZGluZyBjb21waWxlZC1pbiBYLjUwOSBj ZXJ0aWZpY2F0ZXMKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4zODAy ODddIHpzd2FwOiBsb2FkZWQgdXNpbmcgcG9vbCBsem8vemJ1ZApOb3YgIDYgMTM6MDE6MjIgbG9j YWxob3N0IHZtdW5peDogWyAgICAwLjM4MDQ3NF0gS2V5IHR5cGUgZW5jcnlwdGVkIHJlZ2lzdGVy ZWQKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4zODA0NzZdIEFwcEFy bW9yOiBBcHBBcm1vciBzaGExIHBvbGljeSBoYXNoaW5nIGVuYWJsZWQKTm92ICA2IDEzOjAxOjIy IGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4zODA0NzldIGltYTogTm8gVFBNIGNoaXAgZm91bmQs IGFjdGl2YXRpbmcgVFBNLWJ5cGFzcyEKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6 IFsgICAgMC4zODA0ODJdIGltYTogQWxsb2NhdGVkIGhhc2ggYWxnb3JpdGhtOiBzaGExCk5vdiAg NiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMzgwNDg2XSBpbWE6IE5vIGFyY2hp dGVjdHVyZSBwb2xpY2llcyBmb3VuZApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDog WyAgICAwLjM4MDQ5Ml0gZXZtOiBJbml0aWFsaXNpbmcgRVZNIGV4dGVuZGVkIGF0dHJpYnV0ZXM6 Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMzgwNDkyXSBldm06IHNl Y3VyaXR5LnNlbGludXgKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC4z ODA0OTNdIGV2bTogc2VjdXJpdHkuU01BQ0s2NApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZt dW5peDogWyAgICAwLjM4MDQ5M10gZXZtOiBzZWN1cml0eS5TTUFDSzY0RVhFQwpOb3YgIDYgMTM6 MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjM4MDQ5NF0gZXZtOiBzZWN1cml0eS5TTUFD SzY0VFJBTlNNVVRFCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMzgw NDk0XSBldm06IHNlY3VyaXR5LlNNQUNLNjRNTUFQCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qg dm11bml4OiBbICAgIDAuMzgwNDk0XSBldm06IHNlY3VyaXR5LmFwcGFybW9yCk5vdiAgNiAxMzow MToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuMzgwNDk1XSBldm06IHNlY3VyaXR5LmltYQpO b3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjM4MDQ5NV0gZXZtOiBzZWN1 cml0eS5jYXBhYmlsaXR5Ck5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAu MzgwNDk1XSBldm06IEhNQUMgYXR0cnM6IDB4MQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZt dW5peDogWyAgICAwLjM4MDk5MV0gUE06ICAgTWFnaWMgbnVtYmVyOiAxNDo3MTM6MjUKTm92ICA2 IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC41MzQ2ODBdIGF0YTI6IGZvdW5kIHVu a25vd24gZGV2aWNlIChjbGFzcyAwKQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDog WyAgICAwLjUzNTIyOF0gYXRhMTogZm91bmQgdW5rbm93biBkZXZpY2UgKGNsYXNzIDApCk5vdiAg NiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuNTM2NjA4XSBhdGExLjAwOiBBVEEt NzogUUVNVSBIQVJERElTSywgMi41KywgbWF4IFVETUEvMTAwCk5vdiAgNiAxMzowMToyMiBsb2Nh bGhvc3Qgdm11bml4OiBbICAgIDAuNTM2NjEzXSBhdGExLjAwOiA2MjkxNDU2IHNlY3RvcnMsIG11 bHRpIDE2OiBMQkE0OCAKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC41 MzY5NjddIGF0YTIuMDA6IEFUQVBJOiBRRU1VIERWRC1ST00sIDIuNSssIG1heCBVRE1BLzEwMApO b3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjUzODE4N10gc2NzaSAwOjA6 MDowOiBEaXJlY3QtQWNjZXNzICAgICBBVEEgICAgICBRRU1VIEhBUkRESVNLICAgIDIuNSsgUFE6 IDAgQU5TSTogNQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjUzODY5 Nl0gc2QgMDowOjA6MDogW3NkYV0gNjI5MTQ1NiA1MTItYnl0ZSBsb2dpY2FsIGJsb2NrczogKDMu MjIgR0IvMy4wMCBHaUIpCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAu NTM4NzEyXSBzZCAwOjA6MDowOiBbc2RhXSBXcml0ZSBQcm90ZWN0IGlzIG9mZgpOb3YgIDYgMTM6 MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjUzODczNl0gc2QgMDowOjA6MDogW3NkYV0g V3JpdGUgY2FjaGU6IGVuYWJsZWQsIHJlYWQgY2FjaGU6IGVuYWJsZWQsIGRvZXNuJ3Qgc3VwcG9y dCBEUE8gb3IgRlVBCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuNTM4 NzY1XSBzZCAwOjA6MDowOiBbc2RhXSBQcmVmZXJyZWQgbWluaW11bSBJL08gc2l6ZSA1MTIgYnl0 ZXMKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC41MzkwODBdIHNkIDA6 MDowOjA6IEF0dGFjaGVkIHNjc2kgZ2VuZXJpYyBzZzAgdHlwZSAwCk5vdiAgNiAxMzowMToyMiBs b2NhbGhvc3Qgdm11bml4OiBbICAgIDAuNTM5OTQzXSBzY3NpIDE6MDowOjA6IENELVJPTSAgICAg ICAgICAgIFFFTVUgICAgIFFFTVUgRFZELVJPTSAgICAgMi41KyBQUTogMCBBTlNJOiA1Ck5vdiAg NiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuNTU1NjUwXSAgc2RhOiBzZGExIHNk YTIgc2RhMwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjU1NTg4OF0g c2QgMDowOjA6MDogW3NkYV0gQXR0YWNoZWQgU0NTSSBkaXNrCk5vdiAgNiAxMzowMToyMiBsb2Nh bGhvc3Qgdm11bml4OiBbICAgIDAuNTYzNDcyXSBzciAxOjA6MDowOiBbc3IwXSBzY3NpMy1tbWMg ZHJpdmU6IDR4LzR4IGNkL3J3IHhhL2Zvcm0yIHRyYXkKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9z dCB2bXVuaXg6IFsgICAgMC41NjM0NzldIGNkcm9tOiBVbmlmb3JtIENELVJPTSBkcml2ZXIgUmV2 aXNpb246IDMuMjAKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC41ODgy OTVdIHNyIDE6MDowOjA6IEF0dGFjaGVkIHNjc2kgZ2VuZXJpYyBzZzEgdHlwZSA1Ck5vdiAgNiAx MzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDAuNTkwMzIwXSBGcmVlaW5nIHVudXNlZCBr ZXJuZWwgaW1hZ2UgKGluaXRtZW0pIG1lbW9yeTogMjcxNksKTm92ICA2IDEzOjAxOjIyIGxvY2Fs aG9zdCB2bXVuaXg6IFsgICAgMC41OTAzNjJdIFdyaXRlIHByb3RlY3RpbmcgdGhlIGtlcm5lbCBy ZWFkLW9ubHkgZGF0YTogMjQ1NzZrCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBb ICAgIDAuNTkwODU4XSBGcmVlaW5nIHVudXNlZCBrZXJuZWwgaW1hZ2UgKHRleHQvcm9kYXRhIGdh cCkgbWVtb3J5OiAyMDM2SwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAw LjU5MTA2Ml0gRnJlZWluZyB1bnVzZWQga2VybmVsIGltYWdlIChyb2RhdGEvZGF0YSBnYXApIG1l bW9yeTogOTIwSwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAwLjU5MTA5 Ml0gUnVuIC9pbml0IGFzIGluaXQgcHJvY2VzcwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZt dW5peDogWyAgICAwLjY0MDA3OF0gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRy aXZlciB1c2Itc3RvcmFnZQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAw LjY0MTkwM10gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciB1YXMKTm92 ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC42NDMyNjJdIGhpZDogcmF3IEhJ RCBldmVudHMgZHJpdmVyIChDKSBKaXJpIEtvc2luYQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0 IHZtdW5peDogWyAgICAwLjY0MzY3OF0gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNl IGRyaXZlciB1c2JoaWQKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMC42 NDM2NzldIHVzYmhpZDogVVNCIEhJRCBjb3JlIGRyaXZlcgpOb3YgIDYgMTM6MDE6MjIgbG9jYWxo b3N0IHZtdW5peDogWyAgICAwLjY1MzM4Ml0gaXNjaTogSW50ZWwoUikgQzYwMCBTQVMgQ29udHJv bGxlciBEcml2ZXIgLSB2ZXJzaW9uIDEuMi4wCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11 bml4OiBbICAgIDEuNzY2MjQ0XSByYW5kb206IGNybmcgaW5pdCBkb25lCk5vdiAgNiAxMzowMToy MiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDIuMzQ4NjIxXSBzaGVwaGVyZFsxXTogU2VydmljZSBy b290IGhhcyBiZWVuIHN0YXJ0ZWQuCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBb ICAgIDIuNDM3MjE4XSBzaGVwaGVyZFsxXTogc3RhcnRpbmcgc2VydmljZXMuLi4KTm92ICA2IDEz OjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMi40Mzc2MjddIHNoZXBoZXJkWzFdOiBTZXJ2 aWNlIHJvb3QtZmlsZS1zeXN0ZW0gaGFzIGJlZW4gc3RhcnRlZC4KTm92ICA2IDEzOjAxOjIyIGxv Y2FsaG9zdCB2bXVuaXg6IFsgICAgMi40Mzg1MjhdIHNoZXBoZXJkWzFdOiBTZXJ2aWNlIHVzZXIt ZmlsZS1zeXN0ZW1zIGhhcyBiZWVuIHN0YXJ0ZWQuCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qg dm11bml4OiBbICAgIDIuNDQyODMwXSBzaGVwaGVyZFsxXTogd2FpdGluZyBmb3IgdWRldmQuLi4K Tm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMi40NTA5MzBdIHVkZXZkWzEy Nl06IHN0YXJ0aW5nIHZlcnNpb24gMy4yLjExCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11 bml4OiBbICAgIDIuNDYzMTMxXSB1ZGV2ZFsxMjZdOiBzdGFydGluZyBldWRldi0zLjIuMTEKTm92 ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMi45NDQ5NDFdIHVkZXZkWzEyNl06 IG5vIHNlbmRlciBjcmVkZW50aWFscyByZWNlaXZlZCwgbWVzc2FnZSBpZ25vcmVkCk5vdiAgNiAx MzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDMuMDA3MDAyXSBwYXJwb3J0X3BjIDAwOjAz OiByZXBvcnRlZCBieSBQbHVnIGFuZCBQbGF5IEFDUEkKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9z dCB2bXVuaXg6IFsgICAgMy4wMDcwOTJdIHBhcnBvcnQwOiBQQy1zdHlsZSBhdCAweDM3OCwgaXJx IDcgW1BDU1BQLFRSSVNUQVRFXQpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAg ICAzLjAwNzMyM10gRmxvcHB5IGRyaXZlKHMpOiBmZDAgaXMgMi44OE0gQU1JIEJJT1MKTm92ICA2 IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMy4wMjY0ODRdIEZEQyAwIGlzIGEgUzgy MDc4QgpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAzLjAyODUyNV0gcGlp eDRfc21idXMgMDAwMDowMDowMS4zOiBTTUJ1cyBIb3N0IENvbnRyb2xsZXIgYXQgMHhiMTAwLCBy ZXZpc2lvbiAwCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDMuMDMwOTE2 XSBlMTAwMDogSW50ZWwoUikgUFJPLzEwMDAgTmV0d29yayBEcml2ZXIKTm92ICA2IDEzOjAxOjIy IGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMy4wMzA5MTddIGUxMDAwOiBDb3B5cmlnaHQgKGMpIDE5 OTktMjAwNiBJbnRlbCBDb3Jwb3JhdGlvbi4KTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVu aXg6IFsgICAgMy4wNTE2NDJdIGlucHV0OiBWaXJ0dWFsUFMvMiBWTXdhcmUgVk1Nb3VzZSBhcyAv ZGV2aWNlcy9wbGF0Zm9ybS9pODA0Mi9zZXJpbzEvaW5wdXQvaW5wdXQ0Ck5vdiAgNiAxMzowMToy MiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDMuMDUxNzY4XSBpbnB1dDogVmlydHVhbFBTLzIgVk13 YXJlIFZNTW91c2UgYXMgL2RldmljZXMvcGxhdGZvcm0vaTgwNDIvc2VyaW8xL2lucHV0L2lucHV0 MwpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAzLjA5NDc5MV0gaW5wdXQ6 IFBDIFNwZWFrZXIgYXMgL2RldmljZXMvcGxhdGZvcm0vcGNzcGtyL2lucHV0L2lucHV0NQpOb3Yg IDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAzLjEzMDExN10gcHN0b3JlOiBVc2lu ZyBjcmFzaCBkdW1wIGNvbXByZXNzaW9uOiBkZWZsYXRlCk5vdiAgNiAxMzowMToyMiBsb2NhbGhv c3Qgdm11bml4OiBbICAgIDMuMTMwMTIwXSBwc3RvcmU6IFJlZ2lzdGVyZWQgZWZpIGFzIHBlcnNp c3RlbnQgc3RvcmUgYmFja2VuZApOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAg ICAzLjEzMjIwN10gQUNQSTogYnVzIHR5cGUgZHJtX2Nvbm5lY3RvciByZWdpc3RlcmVkCk5vdiAg NiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDMuMTQyNTk4XSBFcnJvcjogRHJpdmVy ICdwY3Nwa3InIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCwgYWJvcnRpbmcuLi4KTm92ICA2IDEzOjAx OjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMy4xNTAxMThdIEFDUEk6IFxfU0JfLkxOS0M6IEVu YWJsZWQgYXQgSVJRIDEwCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDMu MTY4MDg0XSBDb25zb2xlOiBzd2l0Y2hpbmcgdG8gY29sb3VyIGR1bW15IGRldmljZSA4MHgyNQpO b3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAzLjE2ODEwOF0gYm9jaHMtZHJt IDAwMDA6MDA6MDIuMDogdmdhYXJiOiBkZWFjdGl2YXRlIHZnYSBjb25zb2xlCk5vdiAgNiAxMzow MToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDMuMTY4MTY5XSBbZHJtXSBGb3VuZCBib2NocyBW R0EsIElEIDB4YjBjNS4KTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMy4x NjgxNzBdIFtkcm1dIEZyYW1lYnVmZmVyIHNpemUgMTYzODQga0IgQCAweDgwMDAwMDAwLCBtbWlv IEAgMHg4MTAyMDAwMC4KTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgMy4x Njg4MjZdIFtkcm1dIEZvdW5kIEVESUQgZGF0YSBibG9iLgpOb3YgIDYgMTM6MDE6MjIgbG9jYWxo b3N0IHZtdW5peDogWyAgICAzLjE3MDcxOV0gW2RybV0gSW5pdGlhbGl6ZWQgYm9jaHMtZHJtIDEu MC4wIDIwMTMwOTI1IGZvciAwMDAwOjAwOjAyLjAgb24gbWlub3IgMApOb3YgIDYgMTM6MDE6MjIg bG9jYWxob3N0IHZtdW5peDogWyAgICAzLjE3MjY2OV0gZmJjb246IGJvY2hzLWRybWRybWZiIChm YjApIGlzIHByaW1hcnkgZGV2aWNlCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBb ICAgIDMuMTc1NDE4XSBDb25zb2xlOiBzd2l0Y2hpbmcgdG8gY29sb3VyIGZyYW1lIGJ1ZmZlciBk ZXZpY2UgMTYweDUwCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDMuMTgy NTA2XSBwcGRldjogdXNlci1zcGFjZSBwYXJhbGxlbCBwb3J0IGRyaXZlcgpOb3YgIDYgMTM6MDE6 MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICAzLjE4NTQ3Ml0gYm9jaHMtZHJtIDAwMDA6MDA6MDIu MDogW2RybV0gZmIwOiBib2Nocy1kcm1kcm1mYiBmcmFtZSBidWZmZXIgZGV2aWNlCk5vdiAgNiAx MzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDMuNDkyNDEwXSBlMTAwMCAwMDAwOjAwOjAz LjAgZXRoMDogKFBDSTozM01IejozMi1iaXQpIDUyOjU0OjAwOjEyOjM0OjU2Ck5vdiAgNiAxMzow MToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDMuNDkyNDE4XSBlMTAwMCAwMDAwOjAwOjAzLjAg ZXRoMDogSW50ZWwoUikgUFJPLzEwMDAgTmV0d29yayBDb25uZWN0aW9uCk5vdiAgNiAxMzowMToy MiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDMuNDkzODk3XSBlMTAwMCAwMDAwOjAwOjAzLjAgZW5z MzogcmVuYW1lZCBmcm9tIGV0aDAKTm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsg ICAgNi4wNzk5MTBdIHNoZXBoZXJkWzFdOiBTZXJ2aWNlIHVkZXYgaGFzIGJlZW4gc3RhcnRlZC4K Tm92ICA2IDEzOjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgNi4wODExNDddIHNoZXBoZXJk WzFdOiBTZXJ2aWNlIGZpbGUtc3lzdGVtLS90bXAgaGFzIGJlZW4gc3RhcnRlZC4KTm92ICA2IDEz OjAxOjIyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgNi4wODIwNTddIHNoZXBoZXJkWzFdOiBTZXJ2 aWNlIGZpbGUtc3lzdGVtLS9kZXYvcHRzIGhhcyBiZWVuIHN0YXJ0ZWQuCk5vdiAgNiAxMzowMToy MiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDYuMDgzMTU3XSBzaGVwaGVyZFsxXTogU2VydmljZSBm aWxlLXN5c3RlbS0vZGV2L3NobSBoYXMgYmVlbiBzdGFydGVkLgpOb3YgIDYgMTM6MDE6MjIgbG9j YWxob3N0IHZtdW5peDogWyAgICA2LjA4NDc2OV0gc2hlcGhlcmRbMV06IFNlcnZpY2UgZmlsZS1z eXN0ZW0tL3N5cy9maXJtd2FyZS9lZmkvZWZpdmFycyBoYXMgYmVlbiBzdGFydGVkLgpOb3YgIDYg MTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICA2LjA4NTg2OF0gc2hlcGhlcmRbMV06IFNl cnZpY2UgZmlsZS1zeXN0ZW0tL2dudS9zdG9yZSBoYXMgYmVlbiBzdGFydGVkLgpOb3YgIDYgMTM6 MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICA2LjA4NjQ2MF0gc2hlcGhlcmRbMV06IFNlcnZp Y2UgZmlsZS1zeXN0ZW1zIGhhcyBiZWVuIHN0YXJ0ZWQuCk5vdiAgNiAxMzowMToyMiBsb2NhbGhv c3Qgdm11bml4OiBbICAgIDYuMDk1MzU2XSBzaGVwaGVyZFsxXTogU2VydmljZSB1c2VyLWhvbWVz IGhhcyBiZWVuIHN0YXJ0ZWQuCk5vdiAgNiAxMzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAg IDYuMDk1NTIxXSBzaGVwaGVyZFsxXTogU2VydmljZSB1c2VyLXByb2Nlc3NlcyBoYXMgYmVlbiBz dGFydGVkLgpOb3YgIDYgMTM6MDE6MjIgbG9jYWxob3N0IHZtdW5peDogWyAgICA2LjA5NTcxM10g c2hlcGhlcmRbMV06IFNlcnZpY2UgaG9zdC1uYW1lIGhhcyBiZWVuIHN0YXJ0ZWQuCk5vdiAgNiAx MzowMToyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDYuMDk1OTExXSBzaGVwaGVyZFsxXTogU2Vy dmljZSB1c2VyLWhvbWVzIGhhcyBiZWVuIHN0YXJ0ZWQuCk5vdiAgNiAxMzowMToyMiBsb2NhbGhv c3Qgdm11bml4OiBbICAgIDYuMDk2MTEyXSBzaGVwaGVyZFsxXTogU2VydmljZSBtYXliZS11dmVz YWZiIGhhcyBiZWVuIHN0YXJ0ZWQuCk5vdiAgNiAxMzowMToyMyBsb2NhbGhvc3Qgc2hlcGhlcmRb MV06IFNlcnZpY2Ugc3lzbG9nZCBoYXMgYmVlbiBzdGFydGVkLiAKTm92ICA2IDEzOjAxOjI0IGxv Y2FsaG9zdCBzaGVwaGVyZFsxXTogU2VydmljZSBkYnVzLXN5c3RlbSBoYXMgYmVlbiBzdGFydGVk LiAKTm92ICA2IDEzOjAxOjI0IGxvY2FsaG9zdCBzaGVwaGVyZFsxXTogU2VydmljZSBsb29wYmFj ayBoYXMgYmVlbiBzdGFydGVkLiAKTm92ICA2IDEzOjAxOjI0IGxvY2FsaG9zdCB3cGFfc3VwcGxp Y2FudFsxNjRdOiBTdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQgd3BhX3N1cHBsaWNhbnQKTm92ICA2 IDEzOjAxOjI1IGxvY2FsaG9zdCBzaGVwaGVyZFsxXTogU2VydmljZSB3cGEtc3VwcGxpY2FudCBo YXMgYmVlbiBzdGFydGVkLiAKTm92ICA2IDEzOjAxOjI1IGxvY2FsaG9zdCBzaGVwaGVyZFsxXTog U2VydmljZSBuZXR3b3JraW5nIGhhcyBiZWVuIHN0YXJ0ZWQuIApOb3YgIDYgMTM6MDE6MjUgbG9j YWxob3N0IG5zY2Q6IDE2NyBtb25pdG9yaW5nIGZpbGUgYC9ldGMvaG9zdHNgICgxKQpOb3YgIDYg MTM6MDE6MjUgbG9jYWxob3N0IG5zY2Q6IDE2NyBtb25pdG9yaW5nIGRpcmVjdG9yeSBgL2V0Y2Ag KDIpCk5vdiAgNiAxMzowMToyNSBsb2NhbGhvc3QgbnNjZDogMTY3IG1vbml0b3JpbmcgZmlsZSBg L2V0Yy9yZXNvbHYuY29uZmAgKDMpCk5vdiAgNiAxMzowMToyNSBsb2NhbGhvc3QgbnNjZDogMTY3 IG1vbml0b3JpbmcgZGlyZWN0b3J5IGAvZXRjYCAoMikKTm92ICA2IDEzOjAxOjI1IGxvY2FsaG9z dCBuc2NkOiAxNjcgbW9uaXRvcmluZyBmaWxlIGAvZXRjL25zc3dpdGNoLmNvbmZgICg0KQpOb3Yg IDYgMTM6MDE6MjUgbG9jYWxob3N0IG5zY2Q6IDE2NyBtb25pdG9yaW5nIGRpcmVjdG9yeSBgL2V0 Y2AgKDIpCk5vdiAgNiAxMzowMToyNSBsb2NhbGhvc3QgY29ubm1hbmRbMTY2XTogQ29ubmVjdGlv biBNYW5hZ2VyIHZlcnNpb24gMS40MQpOb3YgIDYgMTM6MDE6MjUgbG9jYWxob3N0IGNvbm5tYW5k WzE2Nl06IEV4Y2x1ZGluZyBWUE4gcGx1Z2luCk5vdiAgNiAxMzowMToyNSBsb2NhbGhvc3QgY29u bm1hbmRbMTY2XTogQ2hlY2tpbmcgbG9vcGJhY2sgaW50ZXJmYWNlIHNldHRpbmdzCk5vdiAgNiAx MzowMToyNSBsb2NhbGhvc3QgY29ubm1hbmRbMTY2XTogU3lzdGVtIGhvc3RuYW1lIGlzIGdudQpO b3YgIDYgMTM6MDE6MjUgbG9jYWxob3N0IGNvbm5tYW5kWzE2Nl06IGxvIHtuZXdsaW5rfSBpbmRl eCAxIGFkZHJlc3MgMDA6MDA6MDA6MDA6MDA6MDAgbXR1IDY1NTM2Ck5vdiAgNiAxMzowMToyNSBs b2NhbGhvc3QgY29ubm1hbmRbMTY2XTogbG8ge25ld2xpbmt9IGluZGV4IDEgb3BlcnN0YXRlIDAg PFVOS05PV04+Ck5vdiAgNiAxMzowMToyNSBsb2NhbGhvc3QgY29ubm1hbmRbMTY2XTogZW5zMyB7 Y3JlYXRlfSBpbmRleCAyIHR5cGUgMSA8RVRIRVI+Ck5vdiAgNiAxMzowMToyNSBsb2NhbGhvc3Qg Y29ubm1hbmRbMTY2XTogZW5zMyB7dXBkYXRlfSBmbGFncyA0MDk4IDxET1dOPgpOb3YgIDYgMTM6 MDE6MjUgbG9jYWxob3N0IGNvbm5tYW5kWzE2Nl06IGVuczMge25ld2xpbmt9IGluZGV4IDIgYWRk cmVzcyA1Mjo1NDowMDoxMjozNDo1NiBtdHUgMTUwMApOb3YgIDYgMTM6MDE6MjUgbG9jYWxob3N0 IGNvbm5tYW5kWzE2Nl06IGVuczMge25ld2xpbmt9IGluZGV4IDIgb3BlcnN0YXRlIDIgPERPV04+ Ck5vdiAgNiAxMzowMToyNSBsb2NhbGhvc3QgY29ubm1hbmRbMTY2XTogQWRkaW5nIGludGVyZmFj ZSBlbnMzIFsgZXRoZXJuZXQgXQpOb3YgIDYgMTM6MDE6MjUgbG9jYWxob3N0IGNvbm5tYW5kWzE2 Nl06IGVuczMge3VwZGF0ZX0gZmxhZ3MgMzY4NjcgPFVQPgpOb3YgIDYgMTM6MDE6MjUgbG9jYWxo b3N0IGNvbm5tYW5kWzE2Nl06IGVuczMge25ld2xpbmt9IGluZGV4IDIgYWRkcmVzcyA1Mjo1NDow MDoxMjozNDo1NiBtdHUgMTUwMApOb3YgIDYgMTM6MDE6MjUgbG9jYWxob3N0IGNvbm5tYW5kWzE2 Nl06IGVuczMge25ld2xpbmt9IGluZGV4IDIgb3BlcnN0YXRlIDIgPERPV04+Ck5vdiAgNiAxMzow MToyNSBsb2NhbGhvc3Qgdm11bml4OiBbICAgIDkuMTg2NjYwXSBlMTAwMDogZW5zMyBOSUMgTGlu ayBpcyBVcCAxMDAwIE1icHMgRnVsbCBEdXBsZXgsIEZsb3cgQ29udHJvbDogUlgKTm92ICA2IDEz OjAxOjI1IGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgOS4xODY5MzhdIElQdjY6IEFERFJDT05GKE5F VERFVl9DSEFOR0UpOiBlbnMzOiBsaW5rIGJlY29tZXMgcmVhZHkKTm92ICA2IDEzOjAxOjI1IGxv Y2FsaG9zdCBjb25ubWFuZFsxNjZdOiBlbnMzIHthZGR9IHJvdXRlIGZlODA6OiBndyA6OiBzY29w ZSAwIDxVTklWRVJTRT4KTm92ICA2IDEzOjAxOjI1IGxvY2FsaG9zdCBjb25ubWFuZFsxNjZdOiBl bnMzIHt1cGRhdGV9IGZsYWdzIDEwMjQ2NyA8VVAsUlVOTklORyxMT1dFUl9VUD4KTm92ICA2IDEz OjAxOjI1IGxvY2FsaG9zdCBjb25ubWFuZFsxNjZdOiBlbnMzIHtuZXdsaW5rfSBpbmRleCAyIGFk ZHJlc3MgNTI6NTQ6MDA6MTI6MzQ6NTYgbXR1IDE1MDAKTm92ICA2IDEzOjAxOjI1IGxvY2FsaG9z dCBjb25ubWFuZFsxNjZdOiBlbnMzIHtuZXdsaW5rfSBpbmRleCAyIG9wZXJzdGF0ZSA2IDxVUD4K Tm92ICA2IDEzOjAxOjI1IGxvY2FsaG9zdCB2bXVuaXg6IFsgICAgOS4yMDc5NTRdIDgwMjFxOiA4 MDIuMVEgVkxBTiBTdXBwb3J0IHYxLjgKTm92ICA2IDEzOjAxOjI1IGxvY2FsaG9zdCB2bXVuaXg6 IFsgICAgOS4yMDc5NjNdIDgwMjFxOiBhZGRpbmcgVkxBTiAwIHRvIEhXIGZpbHRlciBvbiBkZXZp Y2UgZW5zMwpOb3YgIDYgMTM6MDE6MjYgbG9jYWxob3N0IHNoZXBoZXJkWzFdOiBTZXJ2aWNlIG5z Y2QgaGFzIGJlZW4gc3RhcnRlZC4gCk5vdiAgNiAxMzowMToyNiBsb2NhbGhvc3QgL2dudS9zdG9y ZS81aXBkMDR5ZHI2emkyN2Jrc3AzMWRpNzd2aHE4NjNiMS1ncG0tMS4yMC43L3NiaW4vZ3BtWzE3 N106ICoqKiBpbmZvIFtkYWVtb24vc3RhcnR1cC5jKDEzNildOiAKTm92ICA2IDEzOjAxOjI2IGxv Y2FsaG9zdCAvZ251L3N0b3JlLzVpcGQwNHlkcjZ6aTI3YmtzcDMxZGk3N3ZocTg2M2IxLWdwbS0x LjIwLjcvc2Jpbi9ncG1bMTc3XTogU3RhcnRlZCBncG0gc3VjY2Vzc2Z1bGx5LiBFbnRlcmVkIGRh ZW1vbiBtb2RlLgpOb3YgIDYgMTM6MDE6MjYgbG9jYWxob3N0IGNvbm5tYW5kWzE2Nl06IENhbm5v dCBjcmVhdGUgL3Zhci9ydW4vY29ubm1hbi9yZXNvbHYuY29uZiBmYWxsaW5nIGJhY2sgdG8gL2V0 Yy9yZXNvbHYuY29uZgpOb3YgIDYgMTM6MDE6MjYgbG9jYWxob3N0IG5zY2Q6IDE2NyBtb25pdG9y ZWQgZmlsZSBgL2V0Yy9yZXNvbHYuY29uZmAgd2FzIHdyaXR0ZW4gdG8KTm92ICA2IDEzOjAxOjI2 IGxvY2FsaG9zdCBjb25ubWFuZFsxNjZdOiBlbnMzIHthZGR9IGFkZHJlc3MgMTAuMC4yLjE1LzI0 IGxhYmVsIGVuczMgZmFtaWx5IDIKTm92ICA2IDEzOjAxOjI2IGxvY2FsaG9zdCBuc2NkOiAxNjcg bW9uaXRvcmVkIGZpbGUgYC9ldGMvcmVzb2x2LmNvbmZgIHdhcyB3cml0dGVuIHRvCk5vdiAgNiAx MzowMToyNiBsb2NhbGhvc3QgbnNjZDogMTY3IG1vbml0b3JlZCBmaWxlIGAvZXRjL3Jlc29sdi5j b25mYCB3YXMgd3JpdHRlbiB0bwpOb3YgIDYgMTM6MDE6MjYgbG9jYWxob3N0IGNvbm5tYW5kWzE2 Nl06IGVuczMge2FkZH0gcm91dGUgMTAuMC4yLjAgZ3cgMC4wLjAuMCBzY29wZSAyNTMgPExJTks+ Ck5vdiAgNiAxMzowMToyNiBsb2NhbGhvc3QgY29ubm1hbmRbMTY2XTogZW5zMyB7YWRkfSByb3V0 ZSAxMC4wLjIuMiBndyAwLjAuMC4wIHNjb3BlIDI1MyA8TElOSz4KTm92ICA2IDEzOjAxOjI2IGxv Y2FsaG9zdCBjb25ubWFuZFsxNjZdOiBlbnMzIHthZGR9IHJvdXRlIDAuMC4wLjAgZ3cgMTAuMC4y LjIgc2NvcGUgMCA8VU5JVkVSU0U+Ck5vdiAgNiAxMzowMToyNyBsb2NhbGhvc3QgY29ubm1hbmRb MTY2XTogZW5zMyB7YWRkfSByb3V0ZSBmZWMwOjogZ3cgOjogc2NvcGUgMCA8VU5JVkVSU0U+Ck5v diAgNiAxMzowMToyNyBsb2NhbGhvc3QgbnNjZDogMTY3IG1vbml0b3JlZCBmaWxlIGAvZXRjL3Jl c29sdi5jb25mYCB3YXMgd3JpdHRlbiB0bwpOb3YgIDYgMTM6MDE6MjcgbG9jYWxob3N0IHNoZXBo ZXJkWzFdOiBTZXJ2aWNlIGdwbSBoYXMgYmVlbiBzdGFydGVkLiAKTm92ICA2IDEzOjAxOjI3IGxv Y2FsaG9zdCBzaGVwaGVyZFsxXTogU2VydmljZSB0ZXJtLXR0eTEgaGFzIGJlZW4gc3RhcnRlZC4g Ck5vdiAgNiAxMzowMToyNyBsb2NhbGhvc3Qgc2hlcGhlcmRbMV06IFNlcnZpY2UgY29uc29sZS1m b250LXR0eTEgaGFzIGJlZW4gc3RhcnRlZC4gCk5vdiAgNiAxMzowMToyNyBsb2NhbGhvc3Qgc2hl cGhlcmRbMV06IFNlcnZpY2UgaG9zdC1uYW1lIGhhcyBiZWVuIHN0YXJ0ZWQuIApOb3YgIDYgMTM6 MDE6MjcgbG9jYWxob3N0IHNoZXBoZXJkWzFdOiBTZXJ2aWNlIHZpcnR1YWwtdGVybWluYWwgaGFz IGJlZW4gc3RhcnRlZC4gCk5vdiAgNiAxMzowMToyNyBsb2NhbGhvc3Qgc2hlcGhlcmRbMV06IFNl cnZpY2UgdGVybS10dHkyIGhhcyBiZWVuIHN0YXJ0ZWQuIApOb3YgIDYgMTM6MDE6MjcgbG9jYWxo b3N0IHNoZXBoZXJkWzFdOiBTZXJ2aWNlIGNvbnNvbGUtZm9udC10dHkyIGhhcyBiZWVuIHN0YXJ0 ZWQuIApOb3YgIDYgMTM6MDE6MjcgbG9jYWxob3N0IHNoZXBoZXJkWzFdOiBTZXJ2aWNlIGhvc3Qt bmFtZSBoYXMgYmVlbiBzdGFydGVkLiAKTm92ICA2IDEzOjAxOjI3IGxvY2FsaG9zdCBzaGVwaGVy ZFsxXTogU2VydmljZSB0ZXJtLXR0eTMgaGFzIGJlZW4gc3RhcnRlZC4gCk5vdiAgNiAxMzowMToy NyBsb2NhbGhvc3Qgc2hlcGhlcmRbMV06IFNlcnZpY2UgY29uc29sZS1mb250LXR0eTMgaGFzIGJl ZW4gc3RhcnRlZC4gCk5vdiAgNiAxMzowMToyNyBsb2NhbGhvc3Qgc2hlcGhlcmRbMV06IFNlcnZp Y2UgaG9zdC1uYW1lIGhhcyBiZWVuIHN0YXJ0ZWQuIApOb3YgIDYgMTM6MDE6MjcgbG9jYWxob3N0 IHNoZXBoZXJkWzFdOiBTZXJ2aWNlIHRlcm0tdHR5NCBoYXMgYmVlbiBzdGFydGVkLiAKTm92ICA2 IDEzOjAxOjI3IGxvY2FsaG9zdCBzaGVwaGVyZFsxXTogU2VydmljZSBjb25zb2xlLWZvbnQtdHR5 NCBoYXMgYmVlbiBzdGFydGVkLiAKTm92ICA2IDEzOjAxOjI3IGxvY2FsaG9zdCBzaGVwaGVyZFsx XTogU2VydmljZSBob3N0LW5hbWUgaGFzIGJlZW4gc3RhcnRlZC4gCk5vdiAgNiAxMzowMToyNyBs b2NhbGhvc3Qgc2hlcGhlcmRbMV06IFNlcnZpY2UgdGVybS10dHk1IGhhcyBiZWVuIHN0YXJ0ZWQu IApOb3YgIDYgMTM6MDE6MjcgbG9jYWxob3N0IHNoZXBoZXJkWzFdOiBTZXJ2aWNlIGNvbnNvbGUt Zm9udC10dHk1IGhhcyBiZWVuIHN0YXJ0ZWQuIApOb3YgIDYgMTM6MDE6MjcgbG9jYWxob3N0IHNo ZXBoZXJkWzFdOiBTZXJ2aWNlIGhvc3QtbmFtZSBoYXMgYmVlbiBzdGFydGVkLiAKTm92ICA2IDEz OjAxOjI3IGxvY2FsaG9zdCBzaGVwaGVyZFsxXTogU2VydmljZSB0ZXJtLXR0eTYgaGFzIGJlZW4g c3RhcnRlZC4gCk5vdiAgNiAxMzowMToyNyBsb2NhbGhvc3Qgc2hlcGhlcmRbMV06IFNlcnZpY2Ug Y29uc29sZS1mb250LXR0eTYgaGFzIGJlZW4gc3RhcnRlZC4gCk5vdiAgNiAxMzowMToyNyBsb2Nh bGhvc3Qgc2hlcGhlcmRbMV06IFNlcnZpY2UgZ3VpeC1kYWVtb24gaGFzIGJlZW4gc3RhcnRlZC4g Ck5vdiAgNiAxMzowMToyNyBsb2NhbGhvc3Qgc2hlcGhlcmRbMV06IFtrbXNjb25dIFswMDAwLjAw MDAwMF0gTk9USUNFOiBrbXNjb24gUmV2aXNpb24gVW5rbm93blJldmlzaW9uIEphbiAgMSAxOTcw IDAwOjAwOjAxIChsb2dfcHJpbnRfaW5pdCgpIGluIHNyYy9zaGxfbG9nLmM6NTA5KSAKTm92ICA2 IDEzOjAxOjI3IGxvY2FsaG9zdCBzaGVwaGVyZFsxXTogW2ttc2Nvbl0gWzAwMDAuMDc1MDY2XSBO T1RJQ0U6IHZ0OiB1c2luZyB0dHkgL2Rldi90dHkxIChvcGVuX3R0eSgpIGluIHNyYy91dGVybV92 dC5jOjI4NSkgCk5vdiAgNiAxMzowMToyNyBsb2NhbGhvc3QgYXZhaGktZGFlbW9uWzIwNF06IEZv dW5kIHVzZXIgJ2F2YWhpJyAoVUlEIDk4NykgYW5kIGdyb3VwICdhdmFoaScgKEdJRCA5ODEpLgpO b3YgIDYgMTM6MDE6MjcgbG9jYWxob3N0IGF2YWhpLWRhZW1vblsyMDRdOiBTdWNjZXNzZnVsbHkg ZHJvcHBlZCByb290IHByaXZpbGVnZXMuCk5vdiAgNiAxMzowMToyNyBsb2NhbGhvc3QgYXZhaGkt ZGFlbW9uWzIwNF06IGF2YWhpLWRhZW1vbiAwLjggc3RhcnRpbmcgdXAuCk5vdiAgNiAxMzowMToy NyBsb2NhbGhvc3QgYXZhaGktZGFlbW9uWzIwNF06IFdBUk5JTkc6IE5vIE5TUyBzdXBwb3J0IGZv ciBtRE5TIGRldGVjdGVkLCBjb25zaWRlciBpbnN0YWxsaW5nIG5zcy1tZG5zIQpOb3YgIDYgMTM6 MDE6MjcgbG9jYWxob3N0IGF2YWhpLWRhZW1vblsyMDRdOiBTdWNjZXNzZnVsbHkgY2FsbGVkIGNo cm9vdCgpLgpOb3YgIDYgMTM6MDE6MjcgbG9jYWxob3N0IGF2YWhpLWRhZW1vblsyMDRdOiBTdWNj ZXNzZnVsbHkgZHJvcHBlZCByZW1haW5pbmcgY2FwYWJpbGl0aWVzLgpOb3YgIDYgMTM6MDE6Mjcg bG9jYWxob3N0IGF2YWhpLWRhZW1vblsyMDRdOiBMb2FkaW5nIHNlcnZpY2UgZmlsZSAvc2Vydmlj ZXMvc2Z0cC1zc2guc2VydmljZS4KTm92ICA2IDEzOjAxOjI3IGxvY2FsaG9zdCBhdmFoaS1kYWVt b25bMjA0XTogTG9hZGluZyBzZXJ2aWNlIGZpbGUgL3NlcnZpY2VzL3NzaC5zZXJ2aWNlLgpOb3Yg IDYgMTM6MDE6MjcgbG9jYWxob3N0IGF2YWhpLWRhZW1vblsyMDRdOiBKb2luaW5nIG1ETlMgbXVs dGljYXN0IGdyb3VwIG9uIGludGVyZmFjZSBlbnMzLklQdjYgd2l0aCBhZGRyZXNzIGZlYzA6OjUw NTQ6ZmY6ZmUxMjozNDU2LgpOb3YgIDYgMTM6MDE6MjcgbG9jYWxob3N0IGF2YWhpLWRhZW1vblsy MDRdOiBOZXcgcmVsZXZhbnQgaW50ZXJmYWNlIGVuczMuSVB2NiBmb3IgbUROUy4KTm92ICA2IDEz OjAxOjI3IGxvY2FsaG9zdCBhdmFoaS1kYWVtb25bMjA0XTogSm9pbmluZyBtRE5TIG11bHRpY2Fz dCBncm91cCBvbiBpbnRlcmZhY2UgZW5zMy5JUHY0IHdpdGggYWRkcmVzcyAxMC4wLjIuMTUuCk5v diAgNiAxMzowMToyNyBsb2NhbGhvc3QgYXZhaGktZGFlbW9uWzIwNF06IE5ldyByZWxldmFudCBp bnRlcmZhY2UgZW5zMy5JUHY0IGZvciBtRE5TLgpOb3YgIDYgMTM6MDE6MjcgbG9jYWxob3N0IGF2 YWhpLWRhZW1vblsyMDRdOiBKb2luaW5nIG1ETlMgbXVsdGljYXN0IGdyb3VwIG9uIGludGVyZmFj ZSBsby5JUHY2IHdpdGggYWRkcmVzcyA6OjEuCk5vdiAgNiAxMzowMToyNyBsb2NhbGhvc3QgYXZh aGktZGFlbW9uWzIwNF06IE5ldyByZWxldmFudCBpbnRlcmZhY2UgbG8uSVB2NiBmb3IgbUROUy4K Tm92ICA2IDEzOjAxOjI3IGxvY2FsaG9zdCBhdmFoaS1kYWVtb25bMjA0XTogSm9pbmluZyBtRE5T IG11bHRpY2FzdCBncm91cCBvbiBpbnRlcmZhY2UgbG8uSVB2NCB3aXRoIGFkZHJlc3MgMTI3LjAu MC4xLgpOb3YgIDYgMTM6MDE6MjcgbG9jYWxob3N0IGF2YWhpLWRhZW1vblsyMDRdOiBOZXcgcmVs ZXZhbnQgaW50ZXJmYWNlIGxvLklQdjQgZm9yIG1ETlMuCk5vdiAgNiAxMzowMToyNyBsb2NhbGhv c3QgYXZhaGktZGFlbW9uWzIwNF06IE5ldHdvcmsgaW50ZXJmYWNlIGVudW1lcmF0aW9uIGNvbXBs ZXRlZC4KTm92ICA2IDEzOjAxOjI3IGxvY2FsaG9zdCBhdmFoaS1kYWVtb25bMjA0XTogUmVnaXN0 ZXJpbmcgbmV3IGFkZHJlc3MgcmVjb3JkIGZvciBmZWMwOjo1MDU0OmZmOmZlMTI6MzQ1NiBvbiBl bnMzLiouCk5vdiAgNiAxMzowMToyNyBsb2NhbGhvc3QgYXZhaGktZGFlbW9uWzIwNF06IFJlZ2lz dGVyaW5nIG5ldyBhZGRyZXNzIHJlY29yZCBmb3IgMTAuMC4yLjE1IG9uIGVuczMuSVB2NC4KTm92 ICA2IDEzOjAxOjI3IGxvY2FsaG9zdCBhdmFoaS1kYWVtb25bMjA0XTogUmVnaXN0ZXJpbmcgbmV3 IGFkZHJlc3MgcmVjb3JkIGZvciA6OjEgb24gbG8uKi4KTm92ICA2IDEzOjAxOjI3IGxvY2FsaG9z dCBhdmFoaS1kYWVtb25bMjA0XTogUmVnaXN0ZXJpbmcgbmV3IGFkZHJlc3MgcmVjb3JkIGZvciAx MjcuMC4wLjEgb24gbG8uSVB2NC4KTm92ICA2IDEzOjAxOjI4IGxvY2FsaG9zdCBhdmFoaS1kYWVt b25bMjA0XTogU2VydmVyIHN0YXJ0dXAgY29tcGxldGUuIEhvc3QgbmFtZSBpcyBnbnUubG9jYWwu IExvY2FsIHNlcnZpY2UgY29va2llIGlzIDk4MDIyMjg3My4KTm92ICA2IDEzOjAxOjI4IGxvY2Fs aG9zdCBzaGVwaGVyZFsxXTogU2VydmljZSBhdmFoaS1kYWVtb24gaGFzIGJlZW4gc3RhcnRlZC4g Ck5vdiAgNiAxMzowMToyOCBsb2NhbGhvc3Qgc2hlcGhlcmRbMV06IFNlcnZpY2UgbWNyb24gaGFz IGJlZW4gc3RhcnRlZC4gCk5vdiAgNiAxMzowMToyOCBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06 IERpc3BsYXkgaXMgMTI4eDQyLiAKTm92ICA2IDEzOjAxOjI4IGxvY2FsaG9zdCBpbnN0YWxsZXJb MjE0XTogcnVubmluZyBzdGVwICdsb2NhbGUnIApOb3YgIDYgMTM6MDE6MjggbG9jYWxob3N0IGlu c3RhbGxlclsyMTRdOiBydW5uaW5nIHN0ZXAgJ2xhbmd1YWdlJyAKTm92ICA2IDEzOjAxOjI4IGxv Y2FsaG9zdCBjb25ubWFuZFsxNjZdOiBlbnMzIHthZGR9IGFkZHJlc3MgZmVjMDo6NTA1NDpmZjpm ZTEyOjM0NTYvNjQgbGFiZWwgKG51bGwpIGZhbWlseSAxMApOb3YgIDYgMTM6MDE6MjggbG9jYWxo b3N0IGluc3RhbGxlclsyMTRdOiBydW5uaW5nIGZvcm0gIzxuZXd0LWZvcm0gMjM2MmVmMD4gKCJM b2NhbGUgbGFuZ3VhZ2UiKSB3aXRoIDAgY2xpZW50cyAKTm92ICA2IDEzOjAxOjI5IGxvY2FsaG9z dCBhdmFoaS1kYWVtb25bMjA0XTogU2VydmljZSAiZ251IiAoL3NlcnZpY2VzL3NzaC5zZXJ2aWNl KSBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQuCk5vdiAgNiAxMzowMToyOSBsb2NhbGhvc3QgYXZh aGktZGFlbW9uWzIwNF06IFNlcnZpY2UgImdudSIgKC9zZXJ2aWNlcy9zZnRwLXNzaC5zZXJ2aWNl KSBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQuCk5vdiAgNiAxMzowMTozMSBsb2NhbGhvc3QgaW5z dGFsbGVyWzIxNF06IHJ1bm5pbmcgc3RlcCAndGVycml0b3J5JyAKTm92ICA2IDEzOjAxOjMxIGxv Y2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogcnVubmluZyBmb3JtICM8bmV3dC1mb3JtIDIzNjJmOTA+ ICgiTG9jYWxlIGxvY2F0aW9uIikgd2l0aCAwIGNsaWVudHMgCk5vdiAgNiAxMzowMTozMSBsb2Nh bGhvc3QgaW5zdGFsbGVyWzIxNF06IHJ1bm5pbmcgc3RlcCAnY29kZXNldCcgCk5vdiAgNiAxMzow MTozMSBsb2NhbGhvc3Qgc2hlcGhlcmRbMV06IFNlcnZpY2UgY29uc29sZS1mb250LXR0eTIgaGFz IGJlZW4gc3RvcHBlZC4gCk5vdiAgNiAxMzowMTozMSBsb2NhbGhvc3Qgc2hlcGhlcmRbMV06IFNl cnZpY2UgdGVybS10dHkyIGhhcyBiZWVuIHN0b3BwZWQuIApOb3YgIDYgMTM6MDE6MzEgbG9jYWxo b3N0IHNoZXBoZXJkWzFdOiBTZXJ2aWNlIGhvc3QtbmFtZSBoYXMgYmVlbiBzdGFydGVkLiAKTm92 ICA2IDEzOjAxOjMxIGxvY2FsaG9zdCBzaGVwaGVyZFsxXTogU2VydmljZSB0ZXJtLXR0eTIgaGFz IGJlZW4gc3RhcnRlZC4gCk5vdiAgNiAxMzowMTozMSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06 IHJ1bm5pbmcgc3RlcCAnd2VsY29tZScgCk5vdiAgNiAxMzowMTozMSBsb2NhbGhvc3QgaW5zdGFs bGVyWzIxNF06IHJ1bm5pbmcgZm9ybSAjPG5ld3QtZm9ybSAyMzdkZmMwPiAoIkdOVSBHdWl4IGlu c3RhbGwiKSB3aXRoIDAgY2xpZW50cyAKTm92ICA2IDEzOjAxOjMxIGxvY2FsaG9zdCBpbnN0YWxs ZXJbMjE0XTogcnVubmluZyBzdGVwICd0aW1lem9uZScgCk5vdiAgNiAxMzowMTozMSBsb2NhbGhv c3QgaW5zdGFsbGVyWzIxNF06IHJ1bm5pbmcgZm9ybSAjPG5ld3QtZm9ybSAyMzdlMTIwPiAoIlRp bWV6b25lIikgd2l0aCAwIGNsaWVudHMgCk5vdiAgNiAxMzowMTozMSBsb2NhbGhvc3QgaW5zdGFs bGVyWzIxNF06IHJ1bm5pbmcgZm9ybSAjPG5ld3QtZm9ybSAyMzc3ZGMwPiAoIlRpbWV6b25lIikg d2l0aCAwIGNsaWVudHMgCk5vdiAgNiAxMzowMTozMSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06 IHJ1bm5pbmcgc3RlcCAna2V5bWFwJyAKTm92ICA2IDEzOjAxOjMyIGxvY2FsaG9zdCBpbnN0YWxs ZXJbMjE0XTogcnVubmluZyBzdGVwICdsYXlvdXQnIApOb3YgIDYgMTM6MDE6MzIgbG9jYWxob3N0 IGluc3RhbGxlclsyMTRdOiBydW5uaW5nIGZvcm0gIzxuZXd0LWZvcm0gMjM3NmM2MD4gKCJMYXlv dXQiKSB3aXRoIDAgY2xpZW50cyAKTm92ICA2IDEzOjAxOjMyIGxvY2FsaG9zdCBpbnN0YWxsZXJb MjE0XTogcnVubmluZyBzdGVwICd2YXJpYW50JyAKTm92ICA2IDEzOjAxOjMyIGxvY2FsaG9zdCBp bnN0YWxsZXJbMjE0XTogcnVubmluZyBzdGVwICdob3N0bmFtZScgCk5vdiAgNiAxMzowMTozMiBs b2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IHJ1bm5pbmcgZm9ybSAjPG5ld3QtZm9ybSAyMzc5Y2Iw PiAoIkhvc3RuYW1lIikgd2l0aCAwIGNsaWVudHMgCk5vdiAgNiAxMzowMTozNyBsb2NhbGhvc3Qg aW5zdGFsbGVyWzIxNF06IHJ1bm5pbmcgc3RlcCAnbmV0d29yaycgCk5vdiAgNiAxMzowMTozNyBs b2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IHJ1bm5pbmcgc3RlcCAnc2VsZWN0LXRlY2hub2xvZ3kn IApOb3YgIDYgMTM6MDE6MzcgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBydW5uaW5nIHN0ZXAg J3Bvd2VyLXRlY2hub2xvZ3knIApOb3YgIDYgMTM6MDE6MzggbG9jYWxob3N0IGluc3RhbGxlclsy MTRdOiBydW5uaW5nIHN0ZXAgJ2Nvbm5lY3Qtc2VydmljZScgCk5vdiAgNiAxMzowMTozOCBsb2Nh bGhvc3QgaW5zdGFsbGVyWzIxNF06IHJ1bm5pbmcgc3RlcCAnd2FpdC1vbmxpbmUnIApOb3YgIDYg MTM6MDE6NDEgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBydW5uaW5nIHN0ZXAgJ3N1YnN0aXR1 dGVzJyAKTm92ICA2IDEzOjAxOjQxIGxvY2FsaG9zdCBzaGVwaGVyZFsxXTogZW5hYmxlIHN1YnN0 aXR1dGUgc2VydmVycyBkaXNjb3ZlcnkgCk5vdiAgNiAxMzowMTo0MSBsb2NhbGhvc3Qgc2hlcGhl cmRbMV06IFNlcnZpY2UgZ3VpeC1kYWVtb24gaGFzIGJlZW4gc3RvcHBlZC4gCk5vdiAgNiAxMzow MTo0MSBsb2NhbGhvc3Qgc2hlcGhlcmRbMV06IFNlcnZpY2UgZ3VpeC1kYWVtb24gaGFzIGJlZW4g c3RhcnRlZC4gCk5vdiAgNiAxMzowMTo0MSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IHJ1bm5p bmcgc3RlcCAndXNlcicgCk5vdiAgNiAxMzowMTo0MSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06 IHJ1bm5pbmcgZm9ybSAjPG5ld3QtZm9ybSAyYWM2ODEwPiAoIlN5c3RlbSBhZG1pbmlzdHJhdG9y IHBhc3N3b3JkIikgd2l0aCAwIGNsaWVudHMgCk5vdiAgNiAxMzowMTo0MyBsb2NhbGhvc3QgaW5z dGFsbGVyWzIxNF06IHJ1bm5pbmcgZm9ybSAjPG5ld3QtZm9ybSAyYWRjNTgwPiAoIlBhc3N3b3Jk IGNvbmZpcm1hdGlvbiByZXF1aXJlZCIpIHdpdGggMCBjbGllbnRzIApOb3YgIDYgMTM6MDE6NDUg bG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBydW5uaW5nIGZvcm0gIzxuZXd0LWZvcm0gMmFkYzhi MD4gKGFkZC11c2Vycykgd2l0aCAwIGNsaWVudHMgCk5vdiAgNiAxMzowMTo1MCBsb2NhbGhvc3Qg aW5zdGFsbGVyWzIxNF06IHJ1bm5pbmcgZm9ybSAjPG5ld3QtZm9ybSAyYWQyOTYwPiAoIlBhc3N3 b3JkIGNvbmZpcm1hdGlvbiByZXF1aXJlZCIpIHdpdGggMCBjbGllbnRzIApOb3YgIDYgMTM6MDE6 NTEgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBydW5uaW5nIGZvcm0gIzxuZXd0LWZvcm0gMmFk NTg3MD4gKGFkZC11c2Vycykgd2l0aCAwIGNsaWVudHMgCk5vdiAgNiAxMzowMTo1MiBsb2NhbGhv c3QgaW5zdGFsbGVyWzIxNF06IHJ1bm5pbmcgc3RlcCAnc2VydmljZXMnIApOb3YgIDYgMTM6MDE6 NTIgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBydW5uaW5nIGZvcm0gIzxuZXd0LWZvcm0gMmFj NjhlMD4gKCJEZXNrdG9wIGVudmlyb25tZW50Iikgd2l0aCAwIGNsaWVudHMgCk5vdiAgNiAxMzow MTo1MyBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IHJ1bm5pbmcgZm9ybSAjPG5ld3QtZm9ybSAy YWQyYjUwPiAoIk5ldHdvcmsgc2VydmljZSIpIHdpdGggMCBjbGllbnRzIApOb3YgIDYgMTM6MDE6 NTMgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBydW5uaW5nIGZvcm0gIzxuZXd0LWZvcm0gMmFj NjhlMD4gKCJOZXR3b3JrIG1hbmFnZW1lbnQiKSB3aXRoIDAgY2xpZW50cyAKTm92ICA2IDEzOjAx OjU0IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogcnVubmluZyBmb3JtICM8bmV3dC1mb3JtIDJh ZDM2NDA+ICgiQ29uc29sZSBzZXJ2aWNlcyIpIHdpdGggMCBjbGllbnRzIApOb3YgIDYgMTM6MDE6 NTUgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBydW5uaW5nIGZvcm0gIzxuZXd0LWZvcm0gMmFk Mzc0MD4gKCJQcmludGluZyBhbmQgZG9jdW1lbnQgc2VydmljZXMiKSB3aXRoIDAgY2xpZW50cyAK Tm92ICA2IDEzOjAxOjU2IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogcnVubmluZyBzdGVwICdw YXJ0aXRpb24nIApOb3YgIDYgMTM6MDE6NTYgbG9jYWxob3N0IHBhcnRlZFsyMTRdOiBwYXJ0ZWQ6 IG5ldzogMHgyYWM2ODYwIApOb3YgIDYgMTM6MDE6NTYgbG9jYWxob3N0IHBhcnRlZFsyMTRdOiBw YXJ0ZWQ6IG5ldzogMHgyYWM1MzkwIApOb3YgIDYgMTM6MDE6NTYgbG9jYWxob3N0IGd1aWxlLXBh cnRlZDogcG9pbnRlci0+ZGV2aWNlITogIzxwb2ludGVyIDB4MmFjNjg2MD4gCk5vdiAgNiAxMzow MTo1NiBsb2NhbGhvc3QgZ3VpbGUtcGFydGVkOiBoYXNoIGJlZ2luIApOb3YgIDYgMTM6MDE6NTYg bG9jYWxob3N0IGd1aWxlLXBhcnRlZDogaGFzaCBlbmQgCk5vdiAgNiAxMzowMTo1NiBsb2NhbGhv c3QgZ3VpbGUtcGFydGVkOiBmaW5hbGl6ZXIhOiAjPHBvaW50ZXIgMHgyYWM2ODYwPiAKTm92ICA2 IDEzOjAxOjU2IGxvY2FsaG9zdCBndWlsZS1wYXJ0ZWQ6IHBvaW50ZXItPmRldmljZSE6ICM8cG9p bnRlciAweDJhYzUzOTA+IApOb3YgIDYgMTM6MDE6NTYgbG9jYWxob3N0IGd1aWxlLXBhcnRlZDog aGFzaCBiZWdpbiAKTm92ICA2IDEzOjAxOjU2IGxvY2FsaG9zdCBndWlsZS1wYXJ0ZWQ6IGhhc2g6 ICM8cG9pbnRlciAweDJhYzY4NjA+IC0+ICM8PGRldmljZT4gYnl0ZXN0cnVjdHVyZTogIzxieXRl c3RydWN0dXJlIDB4N2ZhYjAxYzBhM2UwPj4gCk5vdiAgNiAxMzowMTo1NiBsb2NhbGhvc3QgZ3Vp bGUtcGFydGVkOiBoYXNoIGVuZCAKTm92ICA2IDEzOjAxOjU2IGxvY2FsaG9zdCBndWlsZS1wYXJ0 ZWQ6IGZpbmFsaXplciE6ICM8cG9pbnRlciAweDJhYzUzOTA+IApOb3YgIDYgMTM6MDE6NTYgbG9j YWxob3N0IGluc3RhbGxlclsyMTRdOiAvZGV2L3NyMCBpcyBub3QgZWxpZ2libGUgYmVjYXVzZSBp dCBpcyB0aGUgaW5zdGFsbGF0aW9uIGRldmljZS4gCk5vdiAgNiAxMzowMTo1NiBsb2NhbGhvc3Qg aW5zdGFsbGVyWzIxNF06IHJ1bm5pbmcgZm9ybSAjPG5ld3QtZm9ybSAyYWIzNDcwPiAoIlBhcnRp dGlvbmluZyBtZXRob2QiKSB3aXRoIDAgY2xpZW50cyAKTm92ICA2IDEzOjAxOjU3IGxvY2FsaG9z dCBpbnN0YWxsZXJbMjE0XTogcnVubmluZyBmb3JtICM8bmV3dC1mb3JtIDJhZDM3NDA+ICgiRGlz ayIpIHdpdGggMCBjbGllbnRzIApOb3YgIDYgMTM6MDE6NTcgbG9jYWxob3N0IGluc3RhbGxlclsy MTRdOiBydW5uaW5nIGZvcm0gIzxuZXd0LWZvcm0gMmFiMzQ3MD4gKCJQYXJ0aXRpb24gc2NoZW1l Iikgd2l0aCAwIGNsaWVudHMgCk5vdiAgNiAxMzowMTo1OSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIx NF06IENyZWF0aW5nIHBhcnRpdGlvbjogCk5vdiAgNiAxMzowMTo1OSBsb2NhbGhvc3QgaW5zdGFs bGVyWzIxNF06IAl0eXBlOiAwIApOb3YgIDYgMTM6MDE6NTkgbG9jYWxob3N0IGluc3RhbGxlclsy MTRdOiAJZmlsZXN5c3RlbS10eXBlOiBleHQ0IApOb3YgIDYgMTM6MDE6NTkgbG9jYWxob3N0IGlu c3RhbGxlclsyMTRdOiAJZmxhZ3M6ICgpIApOb3YgIDYgMTM6MDE6NTkgbG9jYWxob3N0IGluc3Rh bGxlclsyMTRdOiAJc3RhcnQ6IDExMjYzOTkgCk5vdiAgNiAxMzowMTo1OSBsb2NhbGhvc3QgaW5z dGFsbGVyWzIxNF06IAllbmQ6IDI4MzA4NjkgCk5vdiAgNiAxMzowMTo1OSBsb2NhbGhvc3QgaW5z dGFsbGVyWzIxNF06IAlzdGFydC1yYW5nZTogWzExMjYzOTksIDExMjg0NDddIApOb3YgIDYgMTM6 MDE6NTkgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiAJZW5kLXJhbmdlOiBbMjgyODgyMSwgMjgz MDg2OV0gCk5vdiAgNiAxMzowMTo1OSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IAljb25zdHJh aW50OiAjdCAKTm92ICA2IDEzOjAxOjU5IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogCW5vLWNv bnN0cmFpbnQ6ICN0IApOb3YgIDYgMTM6MDE6NTkgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBD cmVhdGluZyBwYXJ0aXRpb246IApOb3YgIDYgMTM6MDE6NTkgbG9jYWxob3N0IGluc3RhbGxlclsy MTRdOiAJdHlwZTogMCAKTm92ICA2IDEzOjAxOjU5IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTog CWZpbGVzeXN0ZW0tdHlwZTogbGludXgtc3dhcCh2MSkgCk5vdiAgNiAxMzowMTo1OSBsb2NhbGhv c3QgaW5zdGFsbGVyWzIxNF06IAlmbGFnczogKCkgCk5vdiAgNiAxMzowMTo1OSBsb2NhbGhvc3Qg aW5zdGFsbGVyWzIxNF06IAlzdGFydDogMjgzMDMzNiAKTm92ICA2IDEzOjAxOjU5IGxvY2FsaG9z dCBpbnN0YWxsZXJbMjE0XTogCWVuZDogMzE0NDkxMCAKTm92ICA2IDEzOjAxOjU5IGxvY2FsaG9z dCBpbnN0YWxsZXJbMjE0XTogCXN0YXJ0LXJhbmdlOiBbMjgzMDMzNiwgMjgzMjM4NF0gCk5vdiAg NiAxMzowMTo1OSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IAllbmQtcmFuZ2U6IFszMTQyODYy LCAzMTQ0OTEwXSAKTm92ICA2IDEzOjAxOjU5IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogCWNv bnN0cmFpbnQ6ICN0IApOb3YgIDYgMTM6MDE6NTkgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiAJ bm8tY29uc3RyYWludDogI3QgCk5vdiAgNiAxMzowMTo1OSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIx NF06IENyZWF0aW5nIHBhcnRpdGlvbjogCk5vdiAgNiAxMzowMTo1OSBsb2NhbGhvc3QgaW5zdGFs bGVyWzIxNF06IAl0eXBlOiAwIApOb3YgIDYgMTM6MDE6NTkgbG9jYWxob3N0IGluc3RhbGxlclsy MTRdOiAJZmlsZXN5c3RlbS10eXBlOiBleHQ0IApOb3YgIDYgMTM6MDE6NTkgbG9jYWxob3N0IGlu c3RhbGxlclsyMTRdOiAJZmxhZ3M6ICgpIApOb3YgIDYgMTM6MDE6NTkgbG9jYWxob3N0IGluc3Rh bGxlclsyMTRdOiAJc3RhcnQ6IDMxNDM2ODAgCk5vdiAgNiAxMzowMTo1OSBsb2NhbGhvc3QgaW5z dGFsbGVyWzIxNF06IAllbmQ6IDYyOTE0NTUgCk5vdiAgNiAxMzowMTo1OSBsb2NhbGhvc3QgaW5z dGFsbGVyWzIxNF06IAlzdGFydC1yYW5nZTogWzMxNDM2ODAsIDMxNDU3MjhdIApOb3YgIDYgMTM6 MDE6NTkgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiAJZW5kLXJhbmdlOiBbNjI4OTQwNywgNjI5 MTQ1NV0gCk5vdiAgNiAxMzowMTo1OSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IAljb25zdHJh aW50OiAjdCAKTm92ICA2IDEzOjAxOjU5IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogCW5vLWNv bnN0cmFpbnQ6ICN0IApOb3YgIDYgMTM6MDE6NTkgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBy dW5uaW5nIGZvcm0gIzxuZXd0LWZvcm0gMmFkNjhlMD4gKCJHdWlkZWQgcGFydGl0aW9uaW5nIikg d2l0aCAwIGNsaWVudHMgCk5vdiAgNiAxMzowMjowMSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06 IHJ1bm5pbmcgZm9ybSAjPG5ld3QtZm9ybSAyYWQ2NTcwPiAoIkZvcm1hdCBkaXNrPyIpIHdpdGgg MCBjbGllbnRzIApOb3YgIDYgMTM6MDI6MDEgbG9jYWxob3N0IHZtdW5peDogWyAgIDQ1LjIzMDI0 MF0gcmFpZDY6IHNzZTJ4NCAgIGdlbigpIDI2OTY4IE1CL3MKTm92ICA2IDEzOjAyOjAxIGxvY2Fs aG9zdCB2bXVuaXg6IFsgICA0NS4yOTgyNDBdIHJhaWQ2OiBzc2UyeDIgICBnZW4oKSAyNzU3MiBN Qi9zCk5vdiAgNiAxMzowMjowMSBsb2NhbGhvc3Qgdm11bml4OiBbICAgNDUuMzY2MjM5XSByYWlk Njogc3NlMngxICAgZ2VuKCkgMjE5NTYgTUIvcwpOb3YgIDYgMTM6MDI6MDEgbG9jYWxob3N0IHZt dW5peDogWyAgIDQ1LjM2NjI0MF0gcmFpZDY6IHVzaW5nIGFsZ29yaXRobSBzc2UyeDIgZ2VuKCkg Mjc1NzIgTUIvcwpOb3YgIDYgMTM6MDI6MDEgbG9jYWxob3N0IHZtdW5peDogWyAgIDQ1LjQzNDI0 MF0gcmFpZDY6IC4uLi4geG9yKCkgMTU4MjIgTUIvcywgcm13IGVuYWJsZWQKTm92ICA2IDEzOjAy OjAxIGxvY2FsaG9zdCB2bXVuaXg6IFsgICA0NS40MzQyNDFdIHJhaWQ2OiB1c2luZyBpbnR4MSBy ZWNvdmVyeSBhbGdvcml0aG0KTm92ICA2IDEzOjAyOjAxIGxvY2FsaG9zdCB2bXVuaXg6IFsgICA0 NS40MzUyNzldIHhvcjogbWVhc3VyaW5nIHNvZnR3YXJlIGNoZWNrc3VtIHNwZWVkCk5vdiAgNiAx MzowMjowMSBsb2NhbGhvc3Qgdm11bml4OiBbICAgNDUuNDM1NjAxXSAgICBwcmVmZXRjaDY0LXNz ZSAgOiAzMzA5MSBNQi9zZWMKTm92ICA2IDEzOjAyOjAxIGxvY2FsaG9zdCB2bXVuaXg6IFsgICA0 NS40MzU5ODFdICAgIGdlbmVyaWNfc3NlICAgICA6IDI1OTUyIE1CL3NlYwpOb3YgIDYgMTM6MDI6 MDEgbG9jYWxob3N0IHZtdW5peDogWyAgIDQ1LjQzNTk4Ml0geG9yOiB1c2luZyBmdW5jdGlvbjog cHJlZmV0Y2g2NC1zc2UgKDMzMDkxIE1CL3NlYykKTm92ICA2IDEzOjAyOjAxIGxvY2FsaG9zdCB2 bXVuaXg6IFsgICA0NS40NzcyNTNdIEJ0cmZzIGxvYWRlZCwgY3JjMzJjPWNyYzMyYy1nZW5lcmlj LCB6b25lZD15ZXMsIGZzdmVyaXR5PXllcwpOb3YgIDYgMTM6MDI6MDEgbG9jYWxob3N0IHZtdW5p eDogWyAgIDQ1LjQ3ODAzOF0gQlRSRlM6IGRldmljZSBmc2lkIDUyZGQwYWQwLTI0NmYtNDU5Zi1h MDVmLTA1OWQ3Yzk5ZDA5YiBkZXZpZCAxIHRyYW5zaWQgOCAvZGV2L3NkYTQgc2Nhbm5lZCBieSB1 ZGV2ZCAoMjUxKQpOb3YgIDYgMTM6MDI6MDIgbG9jYWxob3N0IHZtdW5peDogWyAgIDQ2LjIwODYw M10gIHNkYTogc2RhMSBzZGEyIHNkYTMgc2RhNApOb3YgIDYgMTM6MDI6MDIgbG9jYWxob3N0IGlu c3RhbGxlclsyMTRdOiBTeW5jaW5nIC9kZXYvc2RhIHRvb2sgMCBzZWNvbmRzLiAKTm92ICA2IDEz OjAyOjAyIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogbWtlMmZzIDEuNDYuNCAoMTgtQXVnLTIw MjEpIApOb3YgIDYgMTM6MDI6MDIgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBEaXNjYXJkaW5n IGRldmljZSBibG9ja3M6ICAgICAgMC8yMTI5OTJeSF5IXkheSF5IXkheSF5IXkheSF5IXkheSCAg ICAgICAgICAgICBeSF5IXkheSF5IXkheSF5IXkheSF5IXkheSGRvbmUgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIApOb3YgIDYgMTM6MDI6MDIgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBD cmVhdGluZyBmaWxlc3lzdGVtIHdpdGggMjEyOTkyIDRrIGJsb2NrcyBhbmQgNTMzMTIgaW5vZGVz IApOb3YgIDYgMTM6MDI6MDIgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBGaWxlc3lzdGVtIFVV SUQ6IGE4MDU0YThkLTcwNzAtNDRhOS1iOWRmLTdmNmI5ZDM5NDU3NCAKTm92ICA2IDEzOjAyOjAy IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBi bG9ja3M6ICAKTm92ICA2IDEzOjAyOjAyIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogCTMyNzY4 LCA5ODMwNCwgMTYzODQwIApOb3YgIDYgMTM6MDI6MDIgbG9jYWxob3N0IGluc3RhbGxlclsyMTRd OiAgCk5vdiAgNiAxMzowMjowMiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IEFsbG9jYXRpbmcg Z3JvdXAgdGFibGVzOiAwLzdeSF5IXkggICBeSF5IXkhkb25lICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKTm92ICA2IDEzOjAyOjAyIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogV3JpdGlu ZyBpbm9kZSB0YWJsZXM6IDAvN15IXkheSCAgIF5IXkheSGRvbmUgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIApOb3YgIDYgMTM6MDI6MDIgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBDcmVh dGluZyBqb3VybmFsICg0MDk2IGJsb2Nrcyk6IGRvbmUgCk5vdiAgNiAxMzowMjowMiBsb2NhbGhv c3QgaW5zdGFsbGVyWzIxNF06IFdyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNj b3VudGluZyBpbmZvcm1hdGlvbjogMC83XkheSF5IICAgXkheSF5IZG9uZSAKTm92ICA2IDEzOjAy OjAyIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogIApOb3YgIDYgMTM6MDI6MDIgbG9jYWxob3N0 IGluc3RhbGxlclsyMTRdOiBTZXR0aW5nIHVwIHN3YXBzcGFjZSB2ZXJzaW9uIDEsIHNpemUgPSAx NTMgTWlCICgxNjA0MjgwMzIgYnl0ZXMpIApOb3YgIDYgMTM6MDI6MDIgbG9jYWxob3N0IGluc3Rh bGxlclsyMTRdOiBubyBsYWJlbCwgVVVJRD1iNzM3NTQ0MC0yNjdhLTRkYzQtOGM2Yi1iZDM1MTIx YzJhMmEgCk5vdiAgNiAxMzowMjowMiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IG1rZTJmcyAx LjQ2LjQgKDE4LUF1Zy0yMDIxKSAKTm92ICA2IDEzOjAyOjAyIGxvY2FsaG9zdCBpbnN0YWxsZXJb MjE0XTogRGlzY2FyZGluZyBkZXZpY2UgYmxvY2tzOiAgICAgIDAvMzkzMjE2XkheSF5IXkheSF5I XkheSF5IXkheSF5IXkggICAgICAgICAgICAgXkheSF5IXkheSF5IXkheSF5IXkheSF5IXkhkb25l ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKTm92ICA2IDEzOjAyOjAyIGxvY2FsaG9zdCBp bnN0YWxsZXJbMjE0XTogQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDM5MzIxNiA0ayBibG9ja3Mg YW5kIDk4MzA0IGlub2RlcyAKTm92ICA2IDEzOjAyOjAyIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0 XTogRmlsZXN5c3RlbSBVVUlEOiA4ZDliNTIxZS02YmU3LTQ5Y2QtYTJhYy0wZDZjNmUwYWQ1MWMg Ck5vdiAgNiAxMzowMjowMiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IFN1cGVyYmxvY2sgYmFj a3VwcyBzdG9yZWQgb24gYmxvY2tzOiAgCk5vdiAgNiAxMzowMjowMiBsb2NhbGhvc3QgaW5zdGFs bGVyWzIxNF06IAkzMjc2OCwgOTgzMDQsIDE2Mzg0MCwgMjI5Mzc2LCAyOTQ5MTIgCk5vdiAgNiAx MzowMjowMiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06ICAKTm92ICA2IDEzOjAyOjAyIGxvY2Fs aG9zdCBpbnN0YWxsZXJbMjE0XTogQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICAwLzEyXkheSF5I XkheSCAgICAgXkheSF5IXkheSGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApOb3Yg IDYgMTM6MDI6MDIgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBXcml0aW5nIGlub2RlIHRhYmxl czogIDAvMTJeSF5IXkheSF5IICAgICBeSF5IXkheSF5IZG9uZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCk5vdiAgNiAxMzowMjowMiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IENyZWF0 aW5nIGpvdXJuYWwgKDgxOTIgYmxvY2tzKTogZG9uZSAKTm92ICA2IDEzOjAyOjAyIGxvY2FsaG9z dCBpbnN0YWxsZXJbMjE0XTogV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2Nv dW50aW5nIGluZm9ybWF0aW9uOiAgMC8xMl5IXkheSF5IXkggICAgIF5IXkheSF5IXkhkb25lIApO b3YgIDYgMTM6MDI6MDIgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiAgCk5vdiAgNiAxMzowMjow MiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IGZvcm1hdHRlZCA0IHVzZXIgcGFydGl0aW9ucyAK Tm92ICA2IDEzOjAyOjAyIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogdXNlci1wYXJ0aXRpb25z OiAoIzw8dXNlci1wYXJ0aXRpb24+IG5hbWU6ICNmIHR5cGU6IG5vcm1hbCBmaWxlLW5hbWU6ICIv ZGV2L3NkYTEiIGRpc2stZmlsZS1uYW1lOiAiL2Rldi9zZGEiIGNyeXB0LWxhYmVsOiAjZiBjcnlw dC1wYXNzd29yZDogI2YgZnMtdHlwZTogZmF0MzIgYm9vdGFibGU/OiAjdCBlc3A/OiAjdCBiaW9z LWdydWI/OiAjZiBzaXplOiAjZiBzdGFydDogI2YgZW5kOiAjZiBtb3VudC1wb2ludDogIi9ib290 L2VmaSIgbmVlZC1mb3JtYXR0aW5nPzogI2YgcGFydGVkLW9iamVjdDogIzw8cGFydGl0aW9uPiBi eXRlc3RydWN0dXJlOiAjPGJ5dGVzdHJ1Y3R1cmUgMHg3ZmFiMDFjOTBiMjA+Pj4gIzw8dXNlci1w YXJ0aXRpb24+IG5hbWU6ICNmIHR5cGU6IG5vcm1hbCBmaWxlLW5hbWU6ICIvZGV2L3NkYTIiIGRp c2stZmlsZS1uYW1lOiAiL2Rldi9zZGEiIGNyeXB0LWxhYmVsOiAjZiBjcnlwdC1wYXNzd29yZDog I2YgZnMtdHlwZTogZXh0NCBib290YWJsZT86ICNmIGVzcD86ICNmIGJpb3MtZ3J1Yj86ICNmIHNp emU6ICIzMyUiIHN0YXJ0OiAiMTEyNjM5OXMiIGVuZDogIjI4MzA4NjlzIiBtb3VudC1wb2ludDog Ii8iIG5lZWQtZm9ybWF0dGluZz86ICN0IHBhcnRlZC1vYmplY3Q6ICM8PHBhcnRpdGlvbj4gYnl0 ZXN0cnVjdHVyZTogIzxieXRlc3RydWN0dXJlIDB4N2ZhYjAxYzk3OTIwPj4+ICM8PHVzZXItcGFy dGl0aW9uPiBuYW1lOiAjZiB0eXBlOiBub3JtYWwgZmlsZS1uYW1lOiAiL2Rldi9zZGEzIiBkaXNr LWZpbGUtbmFtZTogIi9kZXYvc2RhIiBjcnlwdC1sYWJlbDogI2YgY3J5cHQtcGFzc3dvcmQ6ICNm IGZzLXR5cGU6IHN3YXAgYm9vdGFibGU/OiAjZiBlc3A/OiAjZiBiaW9zLWdydWI/OiAjZiBzaXpl OiAzMTQ1NzMgc3RhcnQ6ICIyODMwMzM2cyIgZW5kOiAiMzE0NDkxMHMiIG1vdW50LXBvaW50OiAj ZiBuZWVkLWZvcm1hdHRpbmc/OiAjdCBwYXJ0ZWQtb2JqZWN0OiAjPDxwYXJ0aXRpb24+IGJ5dGVz dHJ1Y3R1cmU6ICM8Ynl0ZXN0cnVjdHVyCk5vdiAgNiAxMzowMjowMiBsb2NhbGhvc3QgaW5zdGFs bGVyWzIxNF06IHJ1bm5pbmcgc3RlcCAnZmluYWwnIApOb3YgIDYgMTM6MDI6MDIgbG9jYWxob3N0 IGluc3RhbGxlclsyMTRdOiBwcm9jZWVkaW5nIHdpdGggZmluYWwgc3RlcCAKTm92ICA2IDEzOjAy OjAyIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogbW91bnRpbmcgIi9kZXYvc2RhMiIgb24gIi9t bnQvIiAKTm92ICA2IDEzOjAyOjAyIGxvY2FsaG9zdCB2bXVuaXg6IFsgICA0Ni43Mzg5NDhdIEVY VDQtZnMgKHNkYTIpOiBtb3VudGVkIGZpbGVzeXN0ZW0gd2l0aCBvcmRlcmVkIGRhdGEgbW9kZS4g UXVvdGEgbW9kZTogbm9uZS4KTm92ICA2IDEzOjAyOjAyIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0 XTogbW91bnRpbmcgIi9kZXYvc2RhMSIgb24gIi9tbnQvYm9vdC9lZmkiIApOb3YgIDYgMTM6MDI6 MDIgbG9jYWxob3N0IHZtdW5peDogWyAgIDQ2Ljc0MTEzMl0gRkFULWZzIChzZGExKTogVm9sdW1l IHdhcyBub3QgcHJvcGVybHkgdW5tb3VudGVkLiBTb21lIGRhdGEgbWF5IGJlIGNvcnJ1cHQuIFBs ZWFzZSBydW4gZnNjay4KTm92ICA2IDEzOjAyOjAyIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTog bW91bnRpbmcgIi9kZXYvc2RhNCIgb24gIi9tbnQvaG9tZSIgCk5vdiAgNiAxMzowMjowMiBsb2Nh bGhvc3Qgdm11bml4OiBbICAgNDYuNzQzNDYyXSBFWFQ0LWZzIChzZGE0KTogbW91bnRlZCBmaWxl c3lzdGVtIHdpdGggb3JkZXJlZCBkYXRhIG1vZGUuIFF1b3RhIG1vZGU6IG5vbmUuCk5vdiAgNiAx MzowMjowMiBsb2NhbGhvc3Qgdm11bml4OiBbICAgNDYuNzQzODMxXSBBZGRpbmcgMTU2NjY4ayBz d2FwIG9uIC9kZXYvc2RhMy4gIFByaW9yaXR5Oi0yIGV4dGVudHM6MSBhY3Jvc3M6MTU2NjY4ayBG UwpOb3YgIDYgMTM6MDI6MDIgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBydW5uaW5nIGZvcm0g IzxuZXd0LWZvcm0gMmFlZmMyMD4gKCJDb25maWd1cmF0aW9uIGZpbGUiKSB3aXRoIDAgY2xpZW50 cyAKTm92ICA2IDEzOjAyOjA0IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogdW5tb3VudGluZyAi L21udC9ob21lIiAKTm92ICA2IDEzOjAyOjA0IGxvY2FsaG9zdCB2bXVuaXg6IFsgICA0OC4xNDg5 OTJdIEVYVDQtZnMgKHNkYTQpOiB1bm1vdW50aW5nIGZpbGVzeXN0ZW0uCk5vdiAgNiAxMzowMjow NCBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IHVubW91bnRpbmcgIi9tbnQvYm9vdC9lZmkiIApO b3YgIDYgMTM6MDI6MDQgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiB1bm1vdW50aW5nICIvbW50 LyIgCk5vdiAgNiAxMzowMjowNCBsb2NhbGhvc3Qgdm11bml4OiBbICAgNDguMTcxNjg0XSBFWFQ0 LWZzIChzZGEyKTogdW5tb3VudGluZyBmaWxlc3lzdGVtLgpOb3YgIDYgMTM6MDI6MDQgbG9jYWxo b3N0IGluc3RhbGxlclsyMTRdOiBydW5uaW5nIGZvcm0gIzxuZXd0LWZvcm0gMjM3MjVmMD4gKCJJ bnN0YWxsYXRpb24gbWVudSIpIHdpdGggMCBjbGllbnRzIApOb3YgIDYgMTM6MDI6MDUgbG9jYWxo b3N0IGluc3RhbGxlclsyMTRdOiBydW5uaW5nIHN0ZXAgJ3BhcnRpdGlvbicgCk5vdiAgNiAxMzow MjowNSBsb2NhbGhvc3QgZ3VpbGUtcGFydGVkOiBwb2ludGVyLT5kZXZpY2UhOiAjPHBvaW50ZXIg MHgyYWM2ODYwPiAKTm92ICA2IDEzOjAyOjA1IGxvY2FsaG9zdCBndWlsZS1wYXJ0ZWQ6IGhhc2gg YmVnaW4gCk5vdiAgNiAxMzowMjowNSBsb2NhbGhvc3QgZ3VpbGUtcGFydGVkOiBoYXNoOiAjPHBv aW50ZXIgMHgyYWM2ODYwPiAtPiAjPDxkZXZpY2U+IGJ5dGVzdHJ1Y3R1cmU6ICM8Ynl0ZXN0cnVj dHVyZSAweDdmYWIwMWMwYTNlMD4+IApOb3YgIDYgMTM6MDI6MDUgbG9jYWxob3N0IGd1aWxlLXBh cnRlZDogaGFzaCBlbmQgCk5vdiAgNiAxMzowMjowNSBsb2NhbGhvc3QgZ3VpbGUtcGFydGVkOiBw b2ludGVyLT5kZXZpY2UhOiAjPHBvaW50ZXIgMHgyYWM1MzkwPiAKTm92ICA2IDEzOjAyOjA1IGxv Y2FsaG9zdCBndWlsZS1wYXJ0ZWQ6IGhhc2ggYmVnaW4gCk5vdiAgNiAxMzowMjowNSBsb2NhbGhv c3QgZ3VpbGUtcGFydGVkOiBoYXNoOiAjPHBvaW50ZXIgMHgyYWM2ODYwPiAtPiAjPDxkZXZpY2U+ IGJ5dGVzdHJ1Y3R1cmU6ICM8Ynl0ZXN0cnVjdHVyZSAweDdmYWIwMWMwYTNlMD4+IApOb3YgIDYg MTM6MDI6MDUgbG9jYWxob3N0IGd1aWxlLXBhcnRlZDogaGFzaCBlbmQgCk5vdiAgNiAxMzowMjow NSBsb2NhbGhvc3QgZ3VpbGUtcGFydGVkOiBmaW5hbGl6ZXIhOiAjPHBvaW50ZXIgMHgyYWM1Mzkw PiAKTm92ICA2IDEzOjAyOjA1IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogL2Rldi9zcjAgaXMg bm90IGVsaWdpYmxlIGJlY2F1c2UgaXQgaXMgdGhlIGluc3RhbGxhdGlvbiBkZXZpY2UuIApOb3Yg IDYgMTM6MDI6MDUgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBydW5uaW5nIGZvcm0gIzxuZXd0 LWZvcm0gMmFmMmUxMD4gKCJQYXJ0aXRpb25pbmcgbWV0aG9kIikgd2l0aCAwIGNsaWVudHMgCk5v diAgNiAxMzowMjowNyBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IHJ1bm5pbmcgZm9ybSAjPG5l d3QtZm9ybSAyMzcyMjkwPiAoIkRpc2siKSB3aXRoIDAgY2xpZW50cyAKTm92ICA2IDEzOjAyOjA3 IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogcnVubmluZyBmb3JtICM8bmV3dC1mb3JtIDIzNzFi YjA+ICgiUGFydGl0aW9uIHNjaGVtZSIpIHdpdGggMCBjbGllbnRzIApOb3YgIDYgMTM6MDI6MDkg bG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBDcmVhdGluZyBwYXJ0aXRpb246IApOb3YgIDYgMTM6 MDI6MDkgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiAJdHlwZTogMCAKTm92ICA2IDEzOjAyOjA5 IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogCWZpbGVzeXN0ZW0tdHlwZTogZXh0NCAKTm92ICA2 IDEzOjAyOjA5IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogCWZsYWdzOiAoKSAKTm92ICA2IDEz OjAyOjA5IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogCXN0YXJ0OiAxMTI2Mzk5IApOb3YgIDYg MTM6MDI6MDkgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiAJZW5kOiAyODMwODY5IApOb3YgIDYg MTM6MDI6MDkgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiAJc3RhcnQtcmFuZ2U6IFsxMTI2Mzk5 LCAxMTI4NDQ3XSAKTm92ICA2IDEzOjAyOjA5IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogCWVu ZC1yYW5nZTogWzI4Mjg4MjEsIDI4MzA4NjldIApOb3YgIDYgMTM6MDI6MDkgbG9jYWxob3N0IGlu c3RhbGxlclsyMTRdOiAJY29uc3RyYWludDogI3QgCk5vdiAgNiAxMzowMjowOSBsb2NhbGhvc3Qg aW5zdGFsbGVyWzIxNF06IAluby1jb25zdHJhaW50OiAjdCAKTm92ICA2IDEzOjAyOjA5IGxvY2Fs aG9zdCBpbnN0YWxsZXJbMjE0XTogQ3JlYXRpbmcgcGFydGl0aW9uOiAKTm92ICA2IDEzOjAyOjA5 IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogCXR5cGU6IDAgCk5vdiAgNiAxMzowMjowOSBsb2Nh bGhvc3QgaW5zdGFsbGVyWzIxNF06IAlmaWxlc3lzdGVtLXR5cGU6IGV4dDQgCk5vdiAgNiAxMzow MjowOSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IAlmbGFnczogKCkgCk5vdiAgNiAxMzowMjow OSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IAlzdGFydDogMjgzMDMzNiAKTm92ICA2IDEzOjAy OjA5IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogCWVuZDogNjI5MTQ1NSAKTm92ICA2IDEzOjAy OjA5IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogCXN0YXJ0LXJhbmdlOiBbMjgzMDMzNiwgMjgz MjM4NF0gCk5vdiAgNiAxMzowMjowOSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IAllbmQtcmFu Z2U6IFs2Mjg5NDA3LCA2MjkxNDU1XSAKTm92ICA2IDEzOjAyOjA5IGxvY2FsaG9zdCBpbnN0YWxs ZXJbMjE0XTogCWNvbnN0cmFpbnQ6ICN0IApOb3YgIDYgMTM6MDI6MDkgbG9jYWxob3N0IGluc3Rh bGxlclsyMTRdOiAJbm8tY29uc3RyYWludDogI3QgCk5vdiAgNiAxMzowMjowOSBsb2NhbGhvc3Qg aW5zdGFsbGVyWzIxNF06IHJ1bm5pbmcgZm9ybSAjPG5ld3QtZm9ybSAyMzczNTEwPiAoIkd1aWRl ZCBwYXJ0aXRpb25pbmciKSB3aXRoIDAgY2xpZW50cyAKTm92ICA2IDEzOjAyOjEwIGxvY2FsaG9z dCBpbnN0YWxsZXJbMjE0XTogcnVubmluZyBmb3JtICM8bmV3dC1mb3JtIDIzNjU2MDA+ICgiUGFz c3dvcmQgcmVxdWlyZWQiKSB3aXRoIDAgY2xpZW50cyAKTm92ICA2IDEzOjAyOjEyIGxvY2FsaG9z dCBpbnN0YWxsZXJbMjE0XTogcnVubmluZyBmb3JtICM8bmV3dC1mb3JtIDIzN2ExOTA+ICgiUGFz c3dvcmQgY29uZmlybWF0aW9uIHJlcXVpcmVkIikgd2l0aCAwIGNsaWVudHMgCk5vdiAgNiAxMzow MjoxMyBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IHJ1bm5pbmcgZm9ybSAjPG5ld3QtZm9ybSAy Mzc2ZGMwPiAoIlBhc3N3b3JkIHJlcXVpcmVkIikgd2l0aCAwIGNsaWVudHMgCk5vdiAgNiAxMzow MjoxNCBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IHJ1bm5pbmcgZm9ybSAjPG5ld3QtZm9ybSAy MzcwYWEwPiAoIlBhc3N3b3JkIGNvbmZpcm1hdGlvbiByZXF1aXJlZCIpIHdpdGggMCBjbGllbnRz IApOb3YgIDYgMTM6MDI6MTUgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBydW5uaW5nIGZvcm0g IzxuZXd0LWZvcm0gMjM3OWI1MD4gKCJGb3JtYXQgZGlzaz8iKSB3aXRoIDAgY2xpZW50cyAKTm92 ICA2IDEzOjAyOjE2IGxvY2FsaG9zdCB2bXVuaXg6IFsgICA2MC43NjgzNjZdICBzZGE6IHNkYTEg c2RhMiBzZGEzCk5vdiAgNiAxMzowMjoxNiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IFN5bmNp bmcgL2Rldi9zZGEgdG9vayAwIHNlY29uZHMuIApOb3YgIDYgMTM6MDI6MTYgbG9jYWxob3N0IGlu c3RhbGxlclsyMTRdOiBmb3JtYXR0aW5nIGFuZCBvcGVuaW5nIExVS1MgZW50cnkgImNyeXB0cm9v dCIgYXQgIi9kZXYvc2RhMiIgCk5vdiAgNiAxMzowMjoyMiBsb2NhbGhvc3Qgdm11bml4OiBbICAg NjYuNjE5NTU1XSBjcnlwdGQ6IG1heF9jcHVfcWxlbiBzZXQgdG8gMTAwMApOb3YgIDYgMTM6MDI6 MjIgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBta2UyZnMgMS40Ni40ICgxOC1BdWctMjAyMSkg Ck5vdiAgNiAxMzowMjoyMiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IENyZWF0aW5nIGZpbGVz eXN0ZW0gd2l0aCAyMTI0ODAgNGsgYmxvY2tzIGFuZCA1MzIwMCBpbm9kZXMgCk5vdiAgNiAxMzow MjoyMiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IEZpbGVzeXN0ZW0gVVVJRDogNzViNjc3ZjUt OWI2NC00N2ExLTgxMzQtOTE4YmQyMWFjOTE5IApOb3YgIDYgMTM6MDI6MjIgbG9jYWxob3N0IGlu c3RhbGxlclsyMTRdOiBTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogIApOb3Yg IDYgMTM6MDI6MjIgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiAJMzI3NjgsIDk4MzA0LCAxNjM4 NDAgCk5vdiAgNiAxMzowMjoyMiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06ICAKTm92ICA2IDEz OjAyOjIyIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogQWxsb2NhdGluZyBncm91cCB0YWJsZXM6 IDAvN15IXkheSCAgIF5IXkheSGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApOb3Yg IDYgMTM6MDI6MjIgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBXcml0aW5nIGlub2RlIHRhYmxl czogMC83XkheSF5IICAgXkheSF5IZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCk5v diAgNiAxMzowMjoyMiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IENyZWF0aW5nIGpvdXJuYWwg KDQwOTYgYmxvY2tzKTogZG9uZSAKTm92ICA2IDEzOjAyOjIyIGxvY2FsaG9zdCBpbnN0YWxsZXJb MjE0XTogV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9y bWF0aW9uOiAwLzdeSF5IXkggICBeSF5IXkhkb25lIApOb3YgIDYgMTM6MDI6MjIgbG9jYWxob3N0 IGluc3RhbGxlclsyMTRdOiAgCk5vdiAgNiAxMzowMjoyMiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIx NF06IGZvcm1hdHRpbmcgYW5kIG9wZW5pbmcgTFVLUyBlbnRyeSAiY3J5cHRob21lIiBhdCAiL2Rl di9zZGEzIiAKTm92ICA2IDEzOjAyOjI4IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogbWtlMmZz IDEuNDYuNCAoMTgtQXVnLTIwMjEpIApOb3YgIDYgMTM6MDI6MjggbG9jYWxob3N0IGluc3RhbGxl clsyMTRdOiBDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNDMxODcyIDRrIGJsb2NrcyBhbmQgMTA3 OTY4IGlub2RlcyAKTm92ICA2IDEzOjAyOjI4IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogRmls ZXN5c3RlbSBVVUlEOiBjOWMxMWVlZS0zNDU5LTQ4ZTMtYmFmZC0zOWZjNzI0NzhjOTYgCk5vdiAg NiAxMzowMjoyOCBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IFN1cGVyYmxvY2sgYmFja3VwcyBz dG9yZWQgb24gYmxvY2tzOiAgCk5vdiAgNiAxMzowMjoyOCBsb2NhbGhvc3QgaW5zdGFsbGVyWzIx NF06IAkzMjc2OCwgOTgzMDQsIDE2Mzg0MCwgMjI5Mzc2LCAyOTQ5MTIgCk5vdiAgNiAxMzowMjoy OCBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06ICAKTm92ICA2IDEzOjAyOjI4IGxvY2FsaG9zdCBp bnN0YWxsZXJbMjE0XTogQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICAwLzE0XkheSF5IXkheSCAg ICAgXkheSF5IXkheSGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApOb3YgIDYgMTM6 MDI6MjggbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBXcml0aW5nIGlub2RlIHRhYmxlczogIDAv MTReSF5IXkheSF5IICAgICBeSF5IXkheSF5IZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCk5vdiAgNiAxMzowMjoyOCBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IENyZWF0aW5nIGpv dXJuYWwgKDgxOTIgYmxvY2tzKTogZG9uZSAKTm92ICA2IDEzOjAyOjI5IGxvY2FsaG9zdCBpbnN0 YWxsZXJbMjE0XTogV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5n IGluZm9ybWF0aW9uOiAgMC8xNF5IXkheSF5IXkggMi8xNF5IXkheSF5IXkggICAgIF5IXkheSF5I Xkhkb25lIApOb3YgIDYgMTM6MDI6MjkgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiAgCk5vdiAg NiAxMzowMjoyOSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IGZvcm1hdHRlZCAzIHVzZXIgcGFy dGl0aW9ucyAKTm92ICA2IDEzOjAyOjI5IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogdXNlci1w YXJ0aXRpb25zOiAoIzw8dXNlci1wYXJ0aXRpb24+IG5hbWU6ICNmIHR5cGU6IG5vcm1hbCBmaWxl LW5hbWU6ICIvZGV2L3NkYTEiIGRpc2stZmlsZS1uYW1lOiAiL2Rldi9zZGEiIGNyeXB0LWxhYmVs OiAjZiBjcnlwdC1wYXNzd29yZDogI2YgZnMtdHlwZTogZmF0MzIgYm9vdGFibGU/OiAjdCBlc3A/ OiAjdCBiaW9zLWdydWI/OiAjZiBzaXplOiAjZiBzdGFydDogI2YgZW5kOiAjZiBtb3VudC1wb2lu dDogIi9ib290L2VmaSIgbmVlZC1mb3JtYXR0aW5nPzogI2YgcGFydGVkLW9iamVjdDogIzw8cGFy dGl0aW9uPiBieXRlc3RydWN0dXJlOiAjPGJ5dGVzdHJ1Y3R1cmUgMHg3ZmFhZmZiMTNhMDA+Pj4g Izw8dXNlci1wYXJ0aXRpb24+IG5hbWU6ICNmIHR5cGU6IG5vcm1hbCBmaWxlLW5hbWU6ICIvZGV2 L3NkYTIiIGRpc2stZmlsZS1uYW1lOiAiL2Rldi9zZGEiIGNyeXB0LWxhYmVsOiAiY3J5cHRyb290 IiBjcnlwdC1wYXNzd29yZDogPHNlY3JldD4gZnMtdHlwZTogZXh0NCBib290YWJsZT86ICNmIGVz cD86ICNmIGJpb3MtZ3J1Yj86ICNmIHNpemU6ICIzMyUiIHN0YXJ0OiAiMTEyNjM5OXMiIGVuZDog IjI4MzA4NjlzIiBtb3VudC1wb2ludDogIi8iIG5lZWQtZm9ybWF0dGluZz86ICN0IHBhcnRlZC1v YmplY3Q6ICM8PHBhcnRpdGlvbj4gYnl0ZXN0cnVjdHVyZTogIzxieXRlc3RydWN0dXJlIDB4N2Zh YWZmYjE5MTIwPj4+ICM8PHVzZXItcGFydGl0aW9uPiBuYW1lOiAjZiB0eXBlOiBub3JtYWwgZmls ZS1uYW1lOiAiL2Rldi9zZGEzIiBkaXNrLWZpbGUtbmFtZTogIi9kZXYvc2RhIiBjcnlwdC1sYWJl bDogImNyeXB0aG9tZSIgY3J5cHQtcGFzc3dvcmQ6IDxzZWNyZXQ+IGZzLXR5cGU6IGV4dDQgYm9v dGFibGU/OiAjZiBlc3A/OiAjZiBiaW9zLWdydWI/OiAjZiBzaXplOiAiMTAwJSIgc3RhcnQ6ICIy ODMwMzM2cyIgZW5kOiAiNjI5MTQ1NXMiIG1vdW50LXBvaW50OiAiL2hvbWUiIG5lZWQtZm9ybWF0 dGluZz86ICN0IHBhcnRlZC1vYmplY3Q6ICM8PHBhcnRpCk5vdiAgNiAxMzowMjoyOSBsb2NhbGhv c3QgaW5zdGFsbGVyWzIxNF06IHJ1bm5pbmcgc3RlcCAnZmluYWwnIApOb3YgIDYgMTM6MDI6Mjkg bG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBwcm9jZWVkaW5nIHdpdGggZmluYWwgc3RlcCAKTm92 ICA2IDEzOjAyOjI5IGxvY2FsaG9zdCBwYXJ0ZWRbMjE0XTogcGFydGVkOiBkZXN0cm95OiAweDJh YzUzOTAgCk5vdiAgNiAxMzowMjoyOSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IG1vdW50aW5n ICIvZGV2L21hcHBlci9jcnlwdHJvb3QiIG9uICIvbW50LyIgCk5vdiAgNiAxMzowMjoyOSBsb2Nh bGhvc3Qgdm11bml4OiBbICAgNzMuNDQwNzQ4XSBFWFQ0LWZzIChkbS0wKTogbW91bnRlZCBmaWxl c3lzdGVtIHdpdGggb3JkZXJlZCBkYXRhIG1vZGUuIFF1b3RhIG1vZGU6IG5vbmUuCk5vdiAgNiAx MzowMjoyOSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IG1vdW50aW5nICIvZGV2L3NkYTEiIG9u ICIvbW50L2Jvb3QvZWZpIiAKTm92ICA2IDEzOjAyOjI5IGxvY2FsaG9zdCB2bXVuaXg6IFsgICA3 My40NDM3NzJdIEZBVC1mcyAoc2RhMSk6IFZvbHVtZSB3YXMgbm90IHByb3Blcmx5IHVubW91bnRl ZC4gU29tZSBkYXRhIG1heSBiZSBjb3JydXB0LiBQbGVhc2UgcnVuIGZzY2suCk5vdiAgNiAxMzow MjoyOSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IG1vdW50aW5nICIvZGV2L21hcHBlci9jcnlw dGhvbWUiIG9uICIvbW50L2hvbWUiIApOb3YgIDYgMTM6MDI6MjkgbG9jYWxob3N0IHZtdW5peDog WyAgIDczLjQ0NjE1NV0gRVhUNC1mcyAoZG0tMSk6IG1vdW50ZWQgZmlsZXN5c3RlbSB3aXRoIG9y ZGVyZWQgZGF0YSBtb2RlLiBRdW90YSBtb2RlOiBub25lLgpOb3YgIDYgMTM6MDI6MjkgbG9jYWxo b3N0IGluc3RhbGxlclsyMTRdOiBydW5uaW5nIGZvcm0gIzxuZXd0LWZvcm0gMjM3NjJiMD4gKCJD b25maWd1cmF0aW9uIGZpbGUiKSB3aXRoIDAgY2xpZW50cyAKTm92ICA2IDEzOjAyOjMxIGxvY2Fs aG9zdCBpbnN0YWxsZXJbMjE0XTogdW5tb3VudGluZyAiL21udC9ob21lIiAKTm92ICA2IDEzOjAy OjMxIGxvY2FsaG9zdCB2bXVuaXg6IFsgICA3NS4wNjM2MzFdIEVYVDQtZnMgKGRtLTEpOiB1bm1v dW50aW5nIGZpbGVzeXN0ZW0uCk5vdiAgNiAxMzowMjozMSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIx NF06IGNsb3NpbmcgTFVLUyBlbnRyeSAiY3J5cHRob21lIiAKTm92ICA2IDEzOjAyOjMxIGxvY2Fs aG9zdCBpbnN0YWxsZXJbMjE0XTogdW5tb3VudGluZyAiL21udC9ib290L2VmaSIgCk5vdiAgNiAx MzowMjozMSBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IHVubW91bnRpbmcgIi9tbnQvIiAKTm92 ICA2IDEzOjAyOjMxIGxvY2FsaG9zdCB2bXVuaXg6IFsgICA3NS4xMzA4MjNdIEVYVDQtZnMgKGRt LTApOiB1bm1vdW50aW5nIGZpbGVzeXN0ZW0uCk5vdiAgNiAxMzowMjozMSBsb2NhbGhvc3QgaW5z dGFsbGVyWzIxNF06IGNsb3NpbmcgTFVLUyBlbnRyeSAiY3J5cHRyb290IiAKTm92ICA2IDEzOjAy OjMxIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogcnVubmluZyBmb3JtICM8bmV3dC1mb3JtIDIz N2QyZDA+ICgiSW5zdGFsbGF0aW9uIG1lbnUiKSB3aXRoIDAgY2xpZW50cyAKTm92ICA2IDEzOjAy OjMzIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogcnVubmluZyBzdGVwICdwYXJ0aXRpb24nIApO b3YgIDYgMTM6MDI6MzMgbG9jYWxob3N0IHBhcnRlZFsyMTRdOiBwYXJ0ZWQ6IG5ldzogMHgyYTA1 ZmYwIApOb3YgIDYgMTM6MDI6MzMgbG9jYWxob3N0IGd1aWxlLXBhcnRlZDogcG9pbnRlci0+ZGV2 aWNlITogIzxwb2ludGVyIDB4MmFjNjg2MD4gCk5vdiAgNiAxMzowMjozMyBsb2NhbGhvc3QgZ3Vp bGUtcGFydGVkOiBoYXNoIGJlZ2luIApOb3YgIDYgMTM6MDI6MzMgbG9jYWxob3N0IGd1aWxlLXBh cnRlZDogaGFzaDogIzxwb2ludGVyIDB4MmFjNjg2MD4gLT4gIzw8ZGV2aWNlPiBieXRlc3RydWN0 dXJlOiAjPGJ5dGVzdHJ1Y3R1cmUgMHg3ZmFiMDFjMGEzZTA+PiAKTm92ICA2IDEzOjAyOjMzIGxv Y2FsaG9zdCBndWlsZS1wYXJ0ZWQ6IGhhc2ggZW5kIApOb3YgIDYgMTM6MDI6MzMgbG9jYWxob3N0 IGd1aWxlLXBhcnRlZDogcG9pbnRlci0+ZGV2aWNlITogIzxwb2ludGVyIDB4MmEwNWZmMD4gCk5v diAgNiAxMzowMjozMyBsb2NhbGhvc3QgZ3VpbGUtcGFydGVkOiBoYXNoIGJlZ2luIApOb3YgIDYg MTM6MDI6MzMgbG9jYWxob3N0IGd1aWxlLXBhcnRlZDogaGFzaDogIzxwb2ludGVyIDB4MmFjNjg2 MD4gLT4gIzw8ZGV2aWNlPiBieXRlc3RydWN0dXJlOiAjPGJ5dGVzdHJ1Y3R1cmUgMHg3ZmFiMDFj MGEzZTA+PiAKTm92ICA2IDEzOjAyOjMzIGxvY2FsaG9zdCBndWlsZS1wYXJ0ZWQ6IGhhc2ggZW5k IApOb3YgIDYgMTM6MDI6MzMgbG9jYWxob3N0IGd1aWxlLXBhcnRlZDogZmluYWxpemVyITogIzxw b2ludGVyIDB4MmEwNWZmMD4gCk5vdiAgNiAxMzowMjozMyBsb2NhbGhvc3QgaW5zdGFsbGVyWzIx NF06IC9kZXYvc3IwIGlzIG5vdCBlbGlnaWJsZSBiZWNhdXNlIGl0IGlzIHRoZSBpbnN0YWxsYXRp b24gZGV2aWNlLiAKTm92ICA2IDEzOjAyOjMzIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogcnVu bmluZyBmb3JtICM8bmV3dC1mb3JtIDJhYjdkMTA+ICgiUGFydGl0aW9uaW5nIG1ldGhvZCIpIHdp dGggMCBjbGllbnRzIApOb3YgIDYgMTM6MDI6MzQgbG9jYWxob3N0IHZtdW5peDogWyAgIDc4LjY5 NzAyM10gIHNkYTogc2RhMSBzZGEyIHNkYTMKTm92ICA2IDEzOjAyOjM0IGxvY2FsaG9zdCBpbnN0 YWxsZXJbMjE0XTogcnVubmluZyBmb3JtICM8bmV3dC1mb3JtIDIzN2M1ODA+ICgiTWFudWFsIHBh cnRpdGlvbmluZyIpIHdpdGggMCBjbGllbnRzIApOb3YgIDYgMTM6MDI6MzYgbG9jYWxob3N0IGlu c3RhbGxlclsyMTRdOiBydW5uaW5nIGZvcm0gIzxuZXd0LWZvcm0gMjM3N2RjMD4gKCJQYXJ0aXRp b24gZWRpdCIpIHdpdGggMCBjbGllbnRzIApOb3YgIDYgMTM6MDI6MzcgbG9jYWxob3N0IGluc3Rh bGxlclsyMTRdOiBydW5uaW5nIGZvcm0gIzxuZXd0LWZvcm0gMjM3NjlhMD4gKCJGaWxlLXN5c3Rl bSB0eXBlIikgd2l0aCAwIGNsaWVudHMgCk5vdiAgNiAxMzowMjozOCBsb2NhbGhvc3QgaW5zdGFs bGVyWzIxNF06IHJ1bm5pbmcgZm9ybSAjPG5ld3QtZm9ybSAyMzY0ZjMwPiAoIlBhcnRpdGlvbiBl ZGl0Iikgd2l0aCAwIGNsaWVudHMgCk5vdiAgNiAxMzowMjo0MCBsb2NhbGhvc3QgaW5zdGFsbGVy WzIxNF06IHJ1bm5pbmcgZm9ybSAjPG5ld3QtZm9ybSAyMzc1NTkwPiAoIkVuY3J5cHRpb24gbGFi ZWwiKSB3aXRoIDAgY2xpZW50cyAKTm92ICA2IDEzOjAyOjQyIGxvY2FsaG9zdCBpbnN0YWxsZXJb MjE0XTogcnVubmluZyBmb3JtICM8bmV3dC1mb3JtIDIzN2E5ZDA+ICgiUGFydGl0aW9uIGVkaXQi KSB3aXRoIDAgY2xpZW50cyAKTm92ICA2IDEzOjAyOjQyIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0 XTogcnVubmluZyBmb3JtICM8bmV3dC1mb3JtIDIzODBjMzA+ICgiUGFydGl0aW9uIGVkaXQiKSB3 aXRoIDAgY2xpZW50cyAKTm92ICA2IDEzOjAyOjQzIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTog cnVubmluZyBmb3JtICM8bmV3dC1mb3JtIDIzNzAxMzA+ICgiTW91bnRpbmcgcG9pbnQiKSB3aXRo IDAgY2xpZW50cyAKTm92ICA2IDEzOjAyOjQ0IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogcnVu bmluZyBmb3JtICM8bmV3dC1mb3JtIDIzNjlhOTA+ICgiUGFydGl0aW9uIGVkaXQiKSB3aXRoIDAg Y2xpZW50cyAKTm92ICA2IDEzOjAyOjQ1IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogcnVubmlu ZyBmb3JtICM8bmV3dC1mb3JtIDIzNjUwMzA+ICgiTWFudWFsIHBhcnRpdGlvbmluZyIpIHdpdGgg MCBjbGllbnRzIApOb3YgIDYgMTM6MDI6NDYgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBydW5u aW5nIGZvcm0gIzxuZXd0LWZvcm0gMjM2OGE5MD4gKCJXcm9uZyBwYXJ0aXRpb24gZm9ybWF0Iikg d2l0aCAwIGNsaWVudHMgCk5vdiAgNiAxMzowMjo0NyBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06 IHJ1bm5pbmcgZm9ybSAjPG5ld3QtZm9ybSAyNzI1NDMwPiAoIk1hbnVhbCBwYXJ0aXRpb25pbmci KSB3aXRoIDAgY2xpZW50cyAKTm92ICA2IDEzOjAyOjQ5IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0 XTogcnVubmluZyBmb3JtICM8bmV3dC1mb3JtIDIzN2Y4YjA+ICgiUGFydGl0aW9uIGVkaXQiKSB3 aXRoIDAgY2xpZW50cyAKTm92ICA2IDEzOjAyOjUwIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTog cnVubmluZyBmb3JtICM8bmV3dC1mb3JtIDIzNzZjNjA+ICgiUGFydGl0aW9uIGVkaXQiKSB3aXRo IDAgY2xpZW50cyAKTm92ICA2IDEzOjAyOjUxIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogcnVu bmluZyBmb3JtICM8bmV3dC1mb3JtIDIzNzVlZjA+ICgiTWFudWFsIHBhcnRpdGlvbmluZyIpIHdp dGggMCBjbGllbnRzIApOb3YgIDYgMTM6MDI6NTIgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBy dW5uaW5nIGZvcm0gIzxuZXd0LWZvcm0gMjM3YTg3MD4gKCJQYXNzd29yZCByZXF1aXJlZCIpIHdp dGggMCBjbGllbnRzIApOb3YgIDYgMTM6MDI6NTQgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBy dW5uaW5nIGZvcm0gIzxuZXd0LWZvcm0gMmFkNjVlMD4gKCJQYXNzd29yZCBjb25maXJtYXRpb24g cmVxdWlyZWQiKSB3aXRoIDAgY2xpZW50cyAKTm92ICA2IDEzOjAyOjU0IGxvY2FsaG9zdCBpbnN0 YWxsZXJbMjE0XTogcnVubmluZyBmb3JtICM8bmV3dC1mb3JtIDIzNjMwNTA+ICgiRm9ybWF0IGRp c2s/Iikgd2l0aCAwIGNsaWVudHMgCk5vdiAgNiAxMzowMjo1NiBsb2NhbGhvc3Qgdm11bml4OiBb ICAgOTkuOTY1MTg3XSAgc2RhOiBzZGExIHNkYTIgc2RhMwpOb3YgIDYgMTM6MDI6NTYgbG9jYWxo b3N0IGluc3RhbGxlclsyMTRdOiBTeW5jaW5nIC9kZXYvc2RhIHRvb2sgMCBzZWNvbmRzLiAKTm92 ICA2IDEzOjAyOjU2IGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogZm9ybWF0dGluZyBhbmQgb3Bl bmluZyBMVUtTIGVudHJ5ICJlIiBhdCAiL2Rldi9zZGEzIiAKTm92ICA2IDEzOjAzOjAyIGxvY2Fs aG9zdCB2bXVuaXg6IFsgIDEwNS45MTU4NTFdIEJUUkZTOiBkZXZpY2UgZnNpZCBjNGQwZjVkZi03 ZTRmLTQxNGQtYjRjYi00ZDYzODgxN2Q4OGIgZGV2aWQgMSB0cmFuc2lkIDYgL2Rldi9tYXBwZXIv ZSBzY2FubmVkIGJ5IG1rZnMuYnRyZnMgKDM3NCkKTm92ICA2IDEzOjAzOjAyIGxvY2FsaG9zdCBp bnN0YWxsZXJbMjE0XTogYnRyZnMtcHJvZ3MgdjUuMTguMSAKTm92ICA2IDEzOjAzOjAyIGxvY2Fs aG9zdCBpbnN0YWxsZXJbMjE0XTogU2VlIGh0dHA6Ly9idHJmcy53aWtpLmtlcm5lbC5vcmcgZm9y IG1vcmUgaW5mb3JtYXRpb24uIApOb3YgIDYgMTM6MDM6MDIgbG9jYWxob3N0IGluc3RhbGxlclsy MTRdOiAgCk5vdiAgNiAxMzowMzowMiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IE5PVEU6IHNl dmVyYWwgZGVmYXVsdCBzZXR0aW5ncyBoYXZlIGNoYW5nZWQgaW4gdmVyc2lvbiA1LjE1LCBwbGVh c2UgbWFrZSBzdXJlIApOb3YgIDYgMTM6MDM6MDIgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiAg ICAgICB0aGlzIGRvZXMgbm90IGFmZmVjdCB5b3VyIGRlcGxveW1lbnRzOiAKTm92ICA2IDEzOjAz OjAyIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogICAgICAgLSBEVVAgZm9yIG1ldGFkYXRhICgt bSBkdXApIApOb3YgIDYgMTM6MDM6MDIgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiAgICAgICAt IGVuYWJsZWQgbm8taG9sZXMgKC1PIG5vLWhvbGVzKSAKTm92ICA2IDEzOjAzOjAyIGxvY2FsaG9z dCBpbnN0YWxsZXJbMjE0XTogICAgICAgLSBlbmFibGVkIGZyZWUtc3BhY2UtdHJlZSAoLVIgZnJl ZS1zcGFjZS10cmVlKSAKTm92ICA2IDEzOjAzOjAyIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTog IApOb3YgIDYgMTM6MDM6MDIgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiBMYWJlbDogICAgICAg ICAgICAgIChudWxsKSAKTm92ICA2IDEzOjAzOjAyIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTog VVVJRDogICAgICAgICAgICAgICBjNGQwZjVkZi03ZTRmLTQxNGQtYjRjYi00ZDYzODgxN2Q4OGIg Ck5vdiAgNiAxMzowMzowMiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IE5vZGUgc2l6ZTogICAg ICAgICAgMTYzODQgCk5vdiAgNiAxMzowMzowMiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IFNl Y3RvciBzaXplOiAgICAgICAgNDA5NiAKTm92ICA2IDEzOjAzOjAyIGxvY2FsaG9zdCBpbnN0YWxs ZXJbMjE0XTogRmlsZXN5c3RlbSBzaXplOiAgICAxLjY1R2lCIApOb3YgIDYgMTM6MDM6MDIgbG9j YWxob3N0IGluc3RhbGxlclsyMTRdOiBCbG9jayBncm91cCBwcm9maWxlczogCk5vdiAgNiAxMzow MzowMiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06ICAgRGF0YTogICAgICAgICAgICAgc2luZ2xl ICAgICAgICAgICAgOC4wME1pQiAKTm92ICA2IDEzOjAzOjAyIGxvY2FsaG9zdCBpbnN0YWxsZXJb MjE0XTogICBNZXRhZGF0YTogICAgICAgICBEVVAgICAgICAgICAgICAgIDg0LjMxTWlCIApOb3Yg IDYgMTM6MDM6MDIgbG9jYWxob3N0IGluc3RhbGxlclsyMTRdOiAgIFN5c3RlbTogICAgICAgICAg IERVUCAgICAgICAgICAgICAgIDguMDBNaUIgCk5vdiAgNiAxMzowMzowMiBsb2NhbGhvc3QgaW5z dGFsbGVyWzIxNF06IFNTRCBkZXRlY3RlZDogICAgICAgbm8gCk5vdiAgNiAxMzowMzowMiBsb2Nh bGhvc3QgaW5zdGFsbGVyWzIxNF06IFpvbmVkIGRldmljZTogICAgICAgbm8gCk5vdiAgNiAxMzow MzowMiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IEluY29tcGF0IGZlYXR1cmVzOiAgZXh0cmVm LCBza2lubnktbWV0YWRhdGEsIG5vLWhvbGVzIApOb3YgIDYgMTM6MDM6MDIgbG9jYWxob3N0IGlu c3RhbGxlclsyMTRdOiBSdW50aW1lIGZlYXR1cmVzOiAgIGZyZWUtc3BhY2UtdHJlZSAKTm92ICA2 IDEzOjAzOjAyIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogQ2hlY2tzdW06ICAgICAgICAgICBj cmMzMmMgCk5vdiAgNiAxMzowMzowMiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IE51bWJlciBv ZiBkZXZpY2VzOiAgMSAKTm92ICA2IDEzOjAzOjAyIGxvY2FsaG9zdCBpbnN0YWxsZXJbMjE0XTog RGV2aWNlczogCk5vdiAgNiAxMzowMzowMiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06ICAgIElE ICAgICAgICBTSVpFICBQQVRIIApOb3YgIDYgMTM6MDM6MDIgbG9jYWxob3N0IGluc3RhbGxlclsy MTRdOiAgICAgMSAgICAgMS42NUdpQiAgL2Rldi9tYXBwZXIvZSAKTm92ICA2IDEzOjAzOjAyIGxv Y2FsaG9zdCBpbnN0YWxsZXJbMjE0XTogIApOb3YgIDYgMTM6MDM6MDIgbG9jYWxob3N0IGluc3Rh bGxlclsyMTRdOiBmb3JtYXR0ZWQgMiB1c2VyIHBhcnRpdGlvbnMgCk5vdiAgNiAxMzowMzowMiBs b2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IHVzZXItcGFydGl0aW9uczogKCM8PHVzZXItcGFydGl0 aW9uPiBuYW1lOiAjZiB0eXBlOiBub3JtYWwgZmlsZS1uYW1lOiAiL2Rldi9zZGEzIiBkaXNrLWZp bGUtbmFtZTogIi9kZXYvc2RhIiBjcnlwdC1sYWJlbDogImUiIGNyeXB0LXBhc3N3b3JkOiA8c2Vj cmV0PiBmcy10eXBlOiBidHJmcyBib290YWJsZT86ICNmIGVzcD86ICNmIGJpb3MtZ3J1Yj86ICNm IHNpemU6ICNmIHN0YXJ0OiAiMjgzMDMzNnMiIGVuZDogIjYyODk0MDdzIiBtb3VudC1wb2ludDog Ii8iIG5lZWQtZm9ybWF0dGluZz86ICN0IHBhcnRlZC1vYmplY3Q6ICM8PHBhcnRpdGlvbj4gYnl0 ZXN0cnVjdHVyZTogIzxieXRlc3RydWN0dXJlIDB4N2ZhYjAyMDdhMGEwPj4+ICM8PHVzZXItcGFy dGl0aW9uPiBuYW1lOiAjZiB0eXBlOiBub3JtYWwgZmlsZS1uYW1lOiAiL2Rldi9zZGExIiBkaXNr LWZpbGUtbmFtZTogIi9kZXYvc2RhIiBjcnlwdC1sYWJlbDogI2YgY3J5cHQtcGFzc3dvcmQ6ICNm IGZzLXR5cGU6IGZhdDMyIGJvb3RhYmxlPzogI3QgZXNwPzogI3QgYmlvcy1ncnViPzogI2Ygc2l6 ZTogI2Ygc3RhcnQ6ICNmIGVuZDogI2YgbW91bnQtcG9pbnQ6ICIvYm9vdC9lZmkiIG5lZWQtZm9y bWF0dGluZz86ICNmIHBhcnRlZC1vYmplY3Q6ICM8PHBhcnRpdGlvbj4gYnl0ZXN0cnVjdHVyZTog IzxieXRlc3RydWN0dXJlIDB4N2ZhYjAyMDY1OGEwPj4+KSAKTm92ICA2IDEzOjAzOjAyIGxvY2Fs aG9zdCBpbnN0YWxsZXJbMjE0XTogcnVubmluZyBzdGVwICdmaW5hbCcgCk5vdiAgNiAxMzowMzow MiBsb2NhbGhvc3QgaW5zdGFsbGVyWzIxNF06IHByb2NlZWRpbmcgd2l0aCBmaW5hbCBzdGVwIApO b3YgIDYgMTM6MDM6MDIgbG9jYWxob3N0IHZtdW5peDogWyAgMTA2LjAzNjY2MV0gdHJhcHM6IHlo aDE1eXk0eXptemdzM1syMTVdIHRyYXAgaW52YWxpZCBvcGNvZGUgaXA6N2ZhYjE3NDdkM2M4IHNw OjdmYWIxNmZmOTcyOCBlcnJvcjowCk5vdiAgNiAxMzowMzowMiBsb2NhbGhvc3QgaW5zdGFsbGVy WzM3Nl06IERpc3BsYXkgaXMgMTI4eDQyLiAKTm92ICA2IDEzOjAzOjAyIGxvY2FsaG9zdCBpbnN0 YWxsZXJbMzc2XTogcnVubmluZyBzdGVwICdsb2NhbGUnIApOb3YgIDYgMTM6MDM6MDIgbG9jYWxo b3N0IGluc3RhbGxlclszNzZdOiBydW5uaW5nIHN0ZXAgJ2xhbmd1YWdlJyAKTm92ICA2IDEzOjAz OjAyIGxvY2FsaG9zdCBpbnN0YWxsZXJbMzc2XTogcnVubmluZyBmb3JtICM8bmV3dC1mb3JtIGNl ZWVmMD4gKCJMb2NhbGUgbGFuZ3VhZ2UiKSB3aXRoIDAgY2xpZW50cyAKTm92ICA2IDEzOjIxOjIy IGxvY2FsaG9zdCAtLSBNQVJLIC0tCk5vdiAgNiAxMzo0MToyMiBsb2NhbGhvc3QgLS0gTUFSSyAt LQpOb3YgIDYgMTQ6MDE6MjIgbG9jYWxob3N0IC0tIE1BUksgLS0KTm92ICA2IDE0OjIxOjIyIGxv Y2FsaG9zdCAtLSBNQVJLIC0tCk5vdiAgNiAxNDo0MToyMiBsb2NhbGhvc3QgLS0gTUFSSyAtLQpO b3YgIDYgMTU6MDE6MjIgbG9jYWxob3N0IC0tIE1BUksgLS0KTm92ICA2IDE1OjIxOjIyIGxvY2Fs aG9zdCAtLSBNQVJLIC0tCk5vdiAgNiAxNTo0MToyMiBsb2NhbGhvc3QgLS0gTUFSSyAtLQpOb3Yg IDYgMTc6NTc6MTUgbG9jYWxob3N0IC0tIE1BUksgLS0K --=-=-=-- From unknown Tue Aug 19 02:51:15 2025 X-Loop: help-debbugs@gnu.org Subject: bug#58732: installer: finalizers & device destroy segfault Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Mon, 07 Nov 2022 13:30:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 58732 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Mathieu Othacehe Cc: 58732@debbugs.gnu.org Received: via spool by 58732-submit@debbugs.gnu.org id=B58732.16678277958746 (code B ref 58732); Mon, 07 Nov 2022 13:30:02 +0000 Received: (at 58732) by debbugs.gnu.org; 7 Nov 2022 13:29:55 +0000 Received: from localhost ([127.0.0.1]:33615 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1os2CJ-0002H0-BI for submit@debbugs.gnu.org; Mon, 07 Nov 2022 08:29:55 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39922) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1os2CH-0002Gn-NT for 58732@debbugs.gnu.org; Mon, 07 Nov 2022 08:29:54 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1os2CC-0001OX-F5 for 58732@debbugs.gnu.org; Mon, 07 Nov 2022 08:29:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To: From; bh=CJmlo+Wu2GFWDM0QmQf1a45uQxaXI5DZB0eMhXakgsE=; b=pn9xtt4tbvWgrv5amPJ0 HqCyzov2t2rPc2/FIR57nkbWH4pjCuVFBouUgcZ/pvswpD8T9AYBJ/VnfrgWgodas6M6gX7D4p67f 80o1UW7SqkAEqItIqOUnSZl2M2KHxNFhAGwYMgYv57oHQiht3wId8PhglW3++sBf8HZNQJ2ZD1Ny3 Ppqg8bDWh9+VM+bzMCJcNMmU4xEXkEqkhRqynA6W4g+VgIF0rZ69V+O/SKmU0KWw/ZAkdYrDFr6rm nhHtCbvvIplE96jVqE9LdqxgLg0AithQ+USHtCP0MQP6UyC8XuGhcFPf911FBjZxBz1CeSkfWaxuk GreDs+VOhvI5HQ==; Received: from [193.50.110.147] (helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1os2CB-0003Ls-R6; Mon, 07 Nov 2022 08:29:48 -0500 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= References: <87v8oa29ik.fsf@gnu.org> <871qqlwrpy.fsf@gnu.org> <87iljwuwf7.fsf@gnu.org> <871qqkth3g.fsf@gnu.org> <87sfiwm297.fsf@gnu.org> X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: Septidi 17 Brumaire an 231 de la =?UTF-8?Q?R=C3=A9volution,?= jour du Cresson X-PGP-Key-ID: 0x090B11993D9AEBB5 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5 X-OS: x86_64-pc-linux-gnu Date: Mon, 07 Nov 2022 14:29:45 +0100 In-Reply-To: <87sfiwm297.fsf@gnu.org> (Mathieu Othacehe's message of "Sun, 06 Nov 2022 18:17:08 +0100") Message-ID: <87iljquc3a.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi Mathieu, Mathieu Othacehe skribis: > I made some progress on that one. I think, this is what's going on: > > 1. Two new PedDevice A and B are malloc'ed by the libparted when opening > the installer partitioning page. > > 2. They are added to the %devices weak hash table by pointer->device! > and their respective finalizers are registered. > > 3. The partitioning ends and A goes out of scope. It is eventually > removed from %devices but it does not mean its finalizer will be run > immediately. > > 4. The partitioning is restarted using the installer menu. B is still in > the %devices hash table. However, A is now gone and is added again to > the %devices hash table by the pointer->device! procedure. Another > finalizer is registered for A. > > That's because set-pointer-finalizer! does not *set* a finalizer it > *adds* one. Oh, I think I see what you mean. You=E2=80=99re right about =E2=80=98set-pointer-finalizer!=E2=80=99 adding a finalizer, but I don=E2= =80=99t think that=E2=80=99s what=E2=80=99s happening here. Finalizers are set on pointer objects, so they=E2=80=99re invoked when the pointer object goes out of scope. But: (eq? (make-pointer 123) (make-pointer 123)) =3D> #f So a possible mistake is to add one finalizer on each pointer object and have several pointer objects aliasing the same C object; that=E2=80=99s how= you can get the same =E2=80=9Cfree=E2=80=9D function called several times on th= e same C object. > 5. The partitioning ends and both A and B goes out of scope. They are > removed from %devices and their finalizers are called. The A finalizer > is called twice resulting in a double free. > > This race condition is created by the fact that there is a time window > where the device is removed from the %devices hash table but its > finalizer is not immediately called. What if we create an extra hashv table that maps pointer values (integers) to pointer objects? (define %pointers (make-hash-table)) (define (canonical-pointer ptr) (or (hashv-ref %pointers (pointer-address ptr)) (begin (hashv-set! %pointers (pointer-address ptr) ptr) ptr))) This is kinda terrible but it would allow us to test the above hypothesis. Thanks, Ludo=E2=80=99. From unknown Tue Aug 19 02:51:15 2025 X-Loop: help-debbugs@gnu.org Subject: bug#58732: installer: finalizers & device destroy segfault Resent-From: Mathieu Othacehe Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Mon, 07 Nov 2022 16:38:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 58732 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 58732@debbugs.gnu.org Received: via spool by 58732-submit@debbugs.gnu.org id=B58732.166783905728350 (code B ref 58732); Mon, 07 Nov 2022 16:38:02 +0000 Received: (at 58732) by debbugs.gnu.org; 7 Nov 2022 16:37:37 +0000 Received: from localhost ([127.0.0.1]:35202 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1os57x-0007NC-Dr for submit@debbugs.gnu.org; Mon, 07 Nov 2022 11:37:37 -0500 Received: from eggs.gnu.org ([209.51.188.92]:48692) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1os57v-0007My-9I for 58732@debbugs.gnu.org; Mon, 07 Nov 2022 11:37:35 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1os57p-0003rb-CN; Mon, 07 Nov 2022 11:37:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To: From; bh=yTgxGRS8YCUaMLIg6Bngm5BfBQxQVOZ2Ht4komslPYQ=; b=ZpqV1IsZVrRabtaBPdHD 1W12igFdL6SXeXmAf/RYC1ZJMi2+9tV0WpeJUPRk7eGxR+t6+Qq2/72N7q3v01kjHAyyZMwmQVcZV h7B3DPUcScjtN5pzmX6VL6EhHo+5sb71ld9N240bCzOX/88oBi546fUHB6mu8xlkLWO6G6V5L22BH SXyQ8fpd4c1eGSZIh2OSekT+1R9MtHklLqIwy4Cd2eGTTYxrWCAMcMoqe/CW5llPqexQwKDbEf3A/ hU/Mz6h7ERxcH2QMckzpirMrIEQlGwzZw/xgM5JXQEnsSrVv23gIIpH/34s4qIvM4klV1w40mE5i8 EqIZBHqVaedqYA==; Received: from 2a02-8429-81d2-3d01-94c9-8097-ea5c-2775.rev.sfr.net ([2a02:8429:81d2:3d01:94c9:8097:ea5c:2775] helo=meije) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1os57o-000569-I8; Mon, 07 Nov 2022 11:37:28 -0500 From: Mathieu Othacehe References: <87v8oa29ik.fsf@gnu.org> <871qqlwrpy.fsf@gnu.org> <87iljwuwf7.fsf@gnu.org> <871qqkth3g.fsf@gnu.org> <87sfiwm297.fsf@gnu.org> <87iljquc3a.fsf@gnu.org> Date: Mon, 07 Nov 2022 17:37:24 +0100 In-Reply-To: <87iljquc3a.fsf@gnu.org> ("Ludovic =?UTF-8?Q?Court=C3=A8s?="'s message of "Mon, 07 Nov 2022 14:29:45 +0100") Message-ID: <8735auwwjf.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hola, > Finalizers are set on pointer objects, so they=E2=80=99re invoked when the > pointer object goes out of scope. But: > > (eq? (make-pointer 123) (make-pointer 123)) > =3D> #f I agree, but somehow this works: --8<---------------cut here---------------start------------->8--- scheme@(guile-user)> ,use (parted) scheme@(guile-user)> (eq? (get-device "/tmp/test.img") (get-device "/tmp/te= st.img")) $3 =3D #t --8<---------------cut here---------------end--------------->8--- denoting that the "pointer->device!" procedure is working correctly and the underlying pointer object returned by pointer->procedure is the same. > So a possible mistake is to add one finalizer on each pointer object and > have several pointer objects aliasing the same C object; that=E2=80=99s h= ow you > can get the same =E2=80=9Cfree=E2=80=9D function called several times on = the same C > object. I don't think that what's happening. I have monitored closely the %devices weak hash table and it never exceeds the total device count. We have multiple finalizers registered for the same C pointer but that's because the weak hash table may be cleaned by (gc) calls, leaving the opportunity for multiple finalizers registration on the same C pointer. I attached a reproducer that exposes the double free issue. --8<---------------cut here---------------start------------->8--- sudo -E guile ~/tmp/parted-bug.scm double free or corruption (!prev) Aborted --8<---------------cut here---------------end--------------->8--- We could save up somewhere which pointers have registered finalizers but that would prevent the devices garbage collection, in the same way as if %device was a plain hash table and not a weak one. That could well be a solution, as I cannot see at the moment how we could preserve this mechanism and avoid multiple finalization. Thanks, Mathieu --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=parted-bug.scm Content-Transfer-Encoding: base64 KHVzZS1tb2R1bGVzIChwYXJ0ZWQpKQoKKGRlZmluZSAocHJvYmUpCiAgKHByb2JlLWFsbC1kZXZp Y2VzISkKICAoZ2V0LWRldmljZSAiL3RtcC90ZXN0LmltZyIpCiAgKGRldmljZXMpCiAgMSkKCihk ZWZpbmUgKGEpCiAgKHByb2JlKQogIChwcm9iZSkKICAocHJvYmUpCgogIChsZXQgbG9vcCAoKGkg MCkpCiAgICAod2hlbiAoPCBpIDUpCiAgICAgIChzbGVlcCAxKQogICAgICAoZ2MpCiAgICAgIChn YykKICAgICAgKHByb2JlKQogICAgICAoZ2MpCiAgICAgIChsb29wICgrIDEgaSkpKSkpCgooYSkK KHNsZWVwIDQpCihnYykKKGdjKQooZ2MpCg== --=-=-=-- From unknown Tue Aug 19 02:51:15 2025 X-Loop: help-debbugs@gnu.org Subject: bug#58732: installer: finalizers & device destroy segfault Resent-From: Mathieu Othacehe Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Wed, 09 Nov 2022 15:27:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 58732 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 58732@debbugs.gnu.org Received: via spool by 58732-submit@debbugs.gnu.org id=B58732.166800757232469 (code B ref 58732); Wed, 09 Nov 2022 15:27:02 +0000 Received: (at 58732) by debbugs.gnu.org; 9 Nov 2022 15:26:12 +0000 Received: from localhost ([127.0.0.1]:40611 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1osmxv-0008Rd-Of for submit@debbugs.gnu.org; Wed, 09 Nov 2022 10:26:12 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54686) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1osmxq-0008Qw-Gg for 58732@debbugs.gnu.org; Wed, 09 Nov 2022 10:26:10 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1osmxk-0006i3-Gh; Wed, 09 Nov 2022 10:26:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To: From; bh=Kg1fGEDllj99l03DT7w+M/FHwksQJXZV/Lyy1+F84aA=; b=JzXCjMgxLfFTuAvF/aB7 Qq0VhmYCqPpTrvB2QuhdUIKXnAhnhqUulHRm20/68yF8utMjin19VJXSA+bDgIRAnpI5eAZbFUNJ+ BRYPF3iqx5qbapjztPekmLNi+5KKtXVvHTh4XI+Nef7wwxx9MGf6mjdgzlBeNeYaxA+YUeIrUGcr/ KAjrHmLs7OAXphSVVf00kqr/rDtIDMEfwQlj6PKL/T9AIsyaEAx3fxYiPCDlskoCLxV/+jIe7ar1e 8COEwfy4oCTwpxJAF8UbBWTRDgwOBbCOpsLRN3ErxNMYi9upckdltCgf/Cew3Se5RiwumBZBZqnJ4 Gi/sp1ADiUuZsg==; Received: from 2a02-8429-81d2-3d01-94c9-8097-ea5c-2775.rev.sfr.net ([2a02:8429:81d2:3d01:94c9:8097:ea5c:2775] helo=meije) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1osmxi-0004V9-9h; Wed, 09 Nov 2022 10:25:58 -0500 From: Mathieu Othacehe References: <87v8oa29ik.fsf@gnu.org> <871qqlwrpy.fsf@gnu.org> <87iljwuwf7.fsf@gnu.org> <871qqkth3g.fsf@gnu.org> <87sfiwm297.fsf@gnu.org> <87iljquc3a.fsf@gnu.org> <8735auwwjf.fsf@gnu.org> Date: Wed, 09 Nov 2022 16:25:55 +0100 In-Reply-To: <8735auwwjf.fsf@gnu.org> (Mathieu Othacehe's message of "Mon, 07 Nov 2022 17:37:24 +0100") Message-ID: <87tu38m9oc.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) --=-=-= Content-Type: text/plain Hey, I ran further tests and my understanding is that the weak hash-table / finalizer mechanism is not compatible with a C function that can return multiple times the same allocated object. Even if we were to introduce a set-pointer-unique-finalizer! procedure that calls scm_i_set_finalizer instead of scm_i_add_finalizer we would still have double free errors because the finalizers are registered on SCM pointers and not on libparted C pointers when calling GC_REGISTER_FINALIZER_NO_ORDER. I tested it out and I had several SCM pointers encapsulating the same libparted C pointer, thus multiple finalizers on the same underlying C pointer. Anyway, here is a patch that solves the issue by removing the device finalizer. It also means that all devices are persisted until the end of the program which doesn't feel right, but I cannot think of a better solution. Let me know if you agree with my reasoning :) Thanks, Mathieu --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-Remove-the-finalizer-on-device-pointers.patch >From 066220a75c020b818aab9c2f5c3a7db835fa871a Mon Sep 17 00:00:00 2001 From: Mathieu Othacehe Date: Wed, 9 Nov 2022 16:12:52 +0100 Subject: [PATCH 1/1] Remove the finalizer on device pointers. Fixes: * parted/device.scm (%device-destroy): Remove it. (pointer->device!): Do not set a finalizer. --- parted/device.scm | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/parted/device.scm b/parted/device.scm index 56a774b..be7f0ac 100644 --- a/parted/device.scm +++ b/parted/device.scm @@ -43,20 +43,23 @@ device-get-minimum-alignment device-get-optimum-alignment)) -;; Record all devices, so that pointer finalizers are only set once, -;; even if get-device returns an already known pointer. Use the -;; pointer as key and the associated as value. -(define %devices (make-weak-value-hash-table)) - -(define %device-destroy - (libparted->pointer "ped_device_destroy")) - +;; Record all devices, so that we do not end up with different +;; objects aliasing the same underlying C pointer. Use the pointer as key and +;; the associated as value. +(define %devices (make-hash-table)) + +;; %DEVICES was a weak hash-table and we used to set a finalizer on POINTER. +;; This is inevitably causing double free issues for the following reason: +;; +;; When goes out of scope and is removed from the %DEVICES table, the +;; finalizer that is set on the underlying C pointer is still registered but +;; possibly not called as finalization happens is a separate thread. If a +;; subsequent call to ped_device_get returns the same C pointer, another +;; finalizer will be registered. This means that the finalization function +;; can be called twice on the same pointer, causing a double free issue. (define (pointer->device! pointer) - ;; Check if a finalizer is already registered for this pointer. (or (hash-ref %devices pointer) (let ((device (pointer->device pointer))) - ;; Contrary to its name, this "adds" a finalizer. - (set-pointer-finalizer! pointer %device-destroy) (hash-set! %devices pointer device) device))) -- 2.38.0 --=-=-=-- From unknown Tue Aug 19 02:51:15 2025 X-Loop: help-debbugs@gnu.org Subject: bug#58732: installer: finalizers & device destroy segfault Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Thu, 10 Nov 2022 11:43:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 58732 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Mathieu Othacehe Cc: 58732@debbugs.gnu.org Received: via spool by 58732-submit@debbugs.gnu.org id=B58732.166808056814178 (code B ref 58732); Thu, 10 Nov 2022 11:43:02 +0000 Received: (at 58732) by debbugs.gnu.org; 10 Nov 2022 11:42:48 +0000 Received: from localhost ([127.0.0.1]:42147 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ot5xI-0003gb-Co for submit@debbugs.gnu.org; Thu, 10 Nov 2022 06:42:48 -0500 Received: from eggs.gnu.org ([209.51.188.92]:38788) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ot5xF-0003gN-J7 for 58732@debbugs.gnu.org; Thu, 10 Nov 2022 06:42:45 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ot5x8-0006Im-IR for 58732@debbugs.gnu.org; Thu, 10 Nov 2022 06:42:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To: From; bh=cG5Ex/0uqCtzTiKqHy1OcDgLTCrIbNP9Xl+34ISjLAM=; b=ZLu49M+RdAnfhQXtDgFp YytpXhG0vCPqyOs4ErHgngR7Yh/u913fhlp47znvq89Jf37xMh6eOK83e3tX0CL4MB/s/wDp6qjwA syDB7c4Do+/pyjj/dLkSsCyAxSdAqHZGmv+69PrR/U7AQ4q+kAOzSneYfO7buBooM33wcVFfm0oU7 FmBKcMCNKfcKAxRWWqzhE+Ob3+ARMet/Pwrdrjo0HDOpSjeQ3nS03RV3Cz06MPzr3fgtBH0DwOZlv HOJxFlQO/4dxmJFEZwWL3zd/7Ne6BmOe/nktnoVKe7llmAS76QBQX2sytvoqnEr4EIMQkpoEHX1ui xAVrtTIH9XnDsw==; Received: from 91-160-117-201.subs.proxad.net ([91.160.117.201] helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ot5wt-0000hw-F1; Thu, 10 Nov 2022 06:42:34 -0500 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= References: <87v8oa29ik.fsf@gnu.org> <871qqlwrpy.fsf@gnu.org> <87iljwuwf7.fsf@gnu.org> <871qqkth3g.fsf@gnu.org> <87sfiwm297.fsf@gnu.org> <87iljquc3a.fsf@gnu.org> <8735auwwjf.fsf@gnu.org> <87tu38m9oc.fsf@gnu.org> Date: Thu, 10 Nov 2022 12:42:20 +0100 In-Reply-To: <87tu38m9oc.fsf@gnu.org> (Mathieu Othacehe's message of "Wed, 09 Nov 2022 16:25:55 +0100") Message-ID: <87edubjasj.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hi, Mathieu Othacehe skribis: > I tested it out and I had several SCM pointers encapsulating the same > libparted C pointer, thus multiple finalizers on the same underlying C > pointer. Yes, that=E2=80=99s the idea I tried to convey. > Anyway, here is a patch that solves the issue by removing the device > finalizer. It also means that all devices are persisted until the end of > the program which doesn't feel right, but I cannot think of a better > solution. Looking at device.c in Parted, that=E2=80=99s probably the right thing beca= use PedDevice objects are kept in a linked list whose head is stored in the =E2=80=98devices=E2=80=99 global variable of device.c. So you cannot just = free them asynchronously from a finalizer thread because they might still be accessed from other parts of the library. This is the explanation that should go in the comment, and it=E2=80=99s clearly a good reason not to free those PedDevice objects. Now, we could provide bindings for =E2=80=98ped_device_destroy=E2=80=99 tha= t users could explicitly call if they want to (this would be similar to explicit calls to =E2=80=98close-port=E2=80=99). We=E2=80=99d arrange to make it idempote= nt. Thanks, Ludo=E2=80=99. From unknown Tue Aug 19 02:51:15 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Mathieu Othacehe Subject: bug#58732: closed (Re: bug#58732: installer: finalizers & device destroy segfault) Message-ID: References: <87r0ybyovd.fsf@gnu.org> <87v8oa29ik.fsf@gnu.org> X-Gnu-PR-Message: they-closed 58732 X-Gnu-PR-Package: guix Reply-To: 58732@debbugs.gnu.org Date: Thu, 10 Nov 2022 12:30:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1668083402-27337-1" This is a multi-part message in MIME format... ------------=_1668083402-27337-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #58732: installer: finalizers & device destroy segfault which was filed against the guix package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 58732@debbugs.gnu.org. --=20 58732: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D58732 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1668083402-27337-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 58732-done) by debbugs.gnu.org; 10 Nov 2022 12:29:25 +0000 Received: from localhost ([127.0.0.1]:42195 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ot6gO-00075q-TJ for submit@debbugs.gnu.org; Thu, 10 Nov 2022 07:29:25 -0500 Received: from eggs.gnu.org ([209.51.188.92]:56182) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ot6gK-00075Y-Q5 for 58732-done@debbugs.gnu.org; Thu, 10 Nov 2022 07:29:23 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ot6gE-000590-SC; Thu, 10 Nov 2022 07:29:14 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To: From; bh=olA+FbIt7zWxumi1qExSJjn2CTwiWb1qBNdH2UX45L4=; b=W0mgNj6lETKVROJZvnfQ GhamEpxLzuoAkcLoOfnvAANYGHj3mL/02CezjgbbVorWBxZTyNsWJIT5pr7BVnOlHCbtckwOek61T qdig7hSB+9tN64Vs5vmeLka9/W0/xGeBP4qx3me+B3J2fKu5q/Mt8Fh7+NZVkyxhcU5Cpp+RMrX+7 ZubnVLBkAcvpIOKmEhaua2cyTRA0C9t0vRTfCyG6ISlL5D00jiI/sWyu+4SIh8nfew3tGlAr08TUT NNueqcNn+2+IXOOqi1faNR3xe5pM9Qdc07CXXA8O88PlCQVws5kJ6GofTVQl6IX/BLcysltZRjk09 xw5nDRQlGBCk/Q==; Received: from 2a02-8429-81d2-3d01-94c9-8097-ea5c-2775.rev.sfr.net ([2a02:8429:81d2:3d01:94c9:8097:ea5c:2775] helo=meije) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ot6gE-0000U9-AW; Thu, 10 Nov 2022 07:29:14 -0500 From: Mathieu Othacehe To: Ludovic =?utf-8?Q?Court=C3=A8s?= Subject: Re: bug#58732: installer: finalizers & device destroy segfault References: <87v8oa29ik.fsf@gnu.org> <871qqlwrpy.fsf@gnu.org> <87iljwuwf7.fsf@gnu.org> <871qqkth3g.fsf@gnu.org> <87sfiwm297.fsf@gnu.org> <87iljquc3a.fsf@gnu.org> <8735auwwjf.fsf@gnu.org> <87tu38m9oc.fsf@gnu.org> <87edubjasj.fsf@gnu.org> Date: Thu, 10 Nov 2022 13:29:10 +0100 In-Reply-To: <87edubjasj.fsf@gnu.org> ("Ludovic =?utf-8?Q?Court=C3=A8s=22'?= =?utf-8?Q?s?= message of "Thu, 10 Nov 2022 12:42:20 +0100") Message-ID: <87r0ybyovd.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 58732-done Cc: 58732-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hey, > Looking at device.c in Parted, that=E2=80=99s probably the right thing be= cause > PedDevice objects are kept in a linked list whose head is stored in the > =E2=80=98devices=E2=80=99 global variable of device.c. So you cannot jus= t free them > asynchronously from a finalizer thread because they might still be > accessed from other parts of the library. This is the explanation that > should go in the comment, and it=E2=80=99s clearly a good reason not to f= ree > those PedDevice objects. If the finalizer was run synchronously when a device is removed from the weak hash table then things would be OK. The device would be removed from the global linked list by _device_register. get_device would malloc a new structure and so on. However finalizers are not run synchronously so here we are. > Now, we could provide bindings for =E2=80=98ped_device_destroy=E2=80=99 t= hat users could > explicitly call if they want to (this would be similar to explicit calls > to =E2=80=98close-port=E2=80=99). We=E2=80=99d arrange to make it idempo= tent. Sure. Thanks for your help on that one. I pushed the proposed patch and updated Guile-Parted to 0.0.7 in Guix. Mathieu ------------=_1668083402-27337-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 23 Oct 2022 09:07:36 +0000 Received: from localhost ([127.0.0.1]:42849 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1omWxE-0001X3-6V for submit@debbugs.gnu.org; Sun, 23 Oct 2022 05:07:36 -0400 Received: from lists.gnu.org ([209.51.188.17]:47374) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1omWxC-0001Wv-98 for submit@debbugs.gnu.org; Sun, 23 Oct 2022 05:07:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1omWxC-0007Pp-1i for bug-guix@gnu.org; Sun, 23 Oct 2022 05:07:34 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1omWxB-000284-OV for bug-guix@gnu.org; Sun, 23 Oct 2022 05:07:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:Date:Subject:To:From:in-reply-to: references; bh=rRjDJWNCR7zljL3ZjtxmL7Nr1IhlLrkDlXyn3Hdzego=; b=KmH/z/ThRkVkd5 0YIAyTaE81u/6mUoXwxKxjK3DZ/4cYT3qQai4DLDM4BZ7djROBz861FHYPG1RhRKZwee8phawAtUE mGNS3nelGQXNA+Qsoqof7e/h9CF7CYMPUDnZZKjYwMS+9HRLzQ9vi7bFOKC5YuDbk1mYcBL9vBoqO OWtMAJ5ZKem5bOuRWpeeuo+wsKqjw9PuwOSPNod7n31bOK0P5DKKPIQbeDOrMhy9/2p1rV1hk8R7f ccxwx6D95jAIkGs9Mh1fV2prbGWJT+aUK0tXfoD0ouZrRMAF0HTB9fvxup36ThWY/u0CjmQGweosl Xpx2ZdZeJvRCFCHjXElg==; Received: from 2a02-8429-81d2-3d01-94c9-8097-ea5c-2775.rev.sfr.net ([2a02:8429:81d2:3d01:94c9:8097:ea5c:2775] helo=meije) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1omWxB-0004ZH-7i for bug-guix@gnu.org; Sun, 23 Oct 2022 05:07:33 -0400 From: Mathieu Othacehe To: bug-guix@gnu.org Subject: installer: finalizers & device destroy segfault Date: Sun, 23 Oct 2022 11:07:31 +0200 Message-ID: <87v8oa29ik.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.8 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.8 (--) Hello, I found a segfault in the installer by running those steps: - Run an automatic partitioning with separate home and no encryption - In the final configuration page, come back to partitioning - Remove all partitions but the ESP one, create a new btrfs root - partition - Repeat until the crash occurs Using Josselin's instructions here: https://issues.guix.gnu.org/57513, I was able to get the following backtrace: --8<---------------cut here---------------start------------->8--- Reading symbols from /gnu/store/b0ymz7vjfkcvhbci49q5yk1fi0l9lq49-parted-3.5/lib/libparted.so... (gdb) bt #0 linux_destroy (dev=0x1dc89e0) at arch/linux.c:1615 #1 0x00007f8941aecd37 in ?? () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #2 0x00007f8941a45e3f in GC_invoke_finalizers () from /gnu/store/2lczkxbdbzh4gk7wh91bzrqrk7h5g1dl-libgc-8.0.4/lib/libgc.so.1 #3 0x00007f8941aed429 in scm_run_finalizers () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #4 0x00007f8941af4482 in ?? () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #5 0x00007f8941ae085a in ?? () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #6 0x00007f8941b6d336 in ?? () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #7 0x00007f8941b7a5e9 in scm_call_n () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #8 0x00007f8941ae209a in scm_call_2 () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #9 0x00007f8941b98752 in ?? () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #10 0x00007f8941b6a88f in scm_c_catch () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #11 0x00007f8941ae2e66 in scm_c_with_continuation_barrier () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #12 0x00007f8941b69b39 in ?? () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #13 0x00007f8941a400ba in GC_call_with_stack_base () from /gnu/store/2lczkxbdbzh4gk7wh91bzrqrk7h5g1dl-libgc-8.0.4/lib/libgc.so.1 #14 0x00007f8941b628b8 in scm_with_guile () from /gnu/store/1jgcbdzx2ss6xv59w55g3kr3x4935dfb-guile-3.0.8/lib/libguile-3.0.so.1 #15 0x00007f8941a16d7e in ?? () from /gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/lib/libpthread.so.0 #16 0x00007f8941614eff in clone () from /gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/lib/libc.so.6 --8<---------------cut here---------------end--------------->8--- linux_destroy is the PedDevice destruction function. The crash occurs when dereferencing the arch_specific pointer which is ... --8<---------------cut here---------------start------------->8--- (gdb) p dev $1 = (PedDevice *) 0x1dc89e0 (gdb) p *dev $2 = {next = 0x1, model = 0x1645d50 "", path = 0x0, type = PED_DEVICE_UNKNOWN, sector_size = 0, phys_sector_size = 1, length = 23272720, open_count = 0, read_only = 1, external_mode = 0, dirty = 0, boot_dirty = 0, hw_geom = { cylinders = 0, heads = 2, sectors = 0}, bios_geom = {cylinders = 23259184, heads = 0, sectors = 0}, host = 1, did = 0, arch_specific = 0x0} (gdb) p dev->arch_specific $3 = (void *) 0x0 --8<---------------cut here---------------end--------------->8--- null! I guess this has to deal with device pointer finalizers. I'm a bit disappointed because I thought we had overcome those mistakes. Thanks, Mathieu ------------=_1668083402-27337-1--