From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2057.outbound.protection.outlook.com [40.107.94.57]) by sourceware.org (Postfix) with ESMTPS id C7F903857B8E for ; Thu, 22 Dec 2022 17:34:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C7F903857B8E Authentication-Results: sourceware.org; dmarc=fail (p=quarantine dis=none) header.from=amd.com Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=amd.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Xx7XrM+rfEiAxmbTQI4nMew1LhsH20s+KkeLtgr8W/OdOQ22DBpXgcfnEKfsBoHjUhegf/PdNDAv4HZ4GvYiWFkv8lrCGfpLxgau8hatgzWNOok5c5+JGPmu2auc1yp1vpS9lmmfmtyf9GUOaqSB6nPfxCiGTEd69F+BBr9JLfqE1KFOHJVW3fvrp3WLOKlvfLzV8ZLPQFnzma4HFwzd9olyUeaFCIYT5Lis+9PdJteYAqXUuX3shh4qK9n3HXBfbjZo+IhxmZ+b+KIWYXCLcJ1vST2YQnvx0WJU1qZvPeJYIScs2MGWuFe0HCj0D8e8w99NbfNiBXp3+LfBKgbvgg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0foPvT4sy88EP2LLyIEuS24dyxHpU2rSUDEie1vR5yc=; b=EBcEJBXQxoNqiMK9vH2P5z/PqMZyge4YFdBOvwE3MYIT34zFyL8gS+FbycIs2Pn14pwEkV4sMRbE9623YqhO6gzKvtCTGuWnBeTU/cG8yu70XJFfvDiB8UO6loZva+S3P4sxkzCRwS3b2+pPy/FT05VgzhYOK5Iw3CkZRodb3pQdMelU9JmrG5P3PzHHq6ayp2Tm7/dHujpTga1ToaEbkkRW4YSMINFjLQRpmF2xH4hmEha5/IEjq6pDmdAVdtOjHviuEreUNV2et6OHKDG6bFr8+unKT4DV38fr2xm0kjeqKGIc9uXzf38lHYMgIuR/Eq7DbS4Zu9T7eLuLsY78ow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0foPvT4sy88EP2LLyIEuS24dyxHpU2rSUDEie1vR5yc=; b=w4WEHoC9k8lzL4iGm2jVHBrPjWiSPOuus3GnLE9xRz8vtbEgWi53V4kHphHdf83AlexPdIfvtvj1spFWUFm5boQ3+vlnx+LNezJltV8gA0y+SIrxantt22L4VjxvdkoOkaWpgNyU38+mhEH+AkeKqN7CDEmJSC6bmasJkW8899o= Received: from DM6PR12MB4795.namprd12.prod.outlook.com (2603:10b6:5:164::11) by CO6PR12MB5394.namprd12.prod.outlook.com (2603:10b6:5:35f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5924.16; Thu, 22 Dec 2022 17:34:50 +0000 Received: from DM6PR12MB4795.namprd12.prod.outlook.com ([fe80::9ebb:8f5:8e90:bbba]) by DM6PR12MB4795.namprd12.prod.outlook.com ([fe80::9ebb:8f5:8e90:bbba%6]) with mapi id 15.20.5924.016; Thu, 22 Dec 2022 17:34:50 +0000 From: "Joshi, Tejas Sanjay" To: =?iso-8859-2?Q?Jan_Hubi=E8ka?= , "gcc-patches@gcc.gnu.org" CC: Alexander Monakov , "Kumar, Venkataramanan" Subject: RE: [PATCH][X86_64] Separate znver4 insn reservations from older znvers Thread-Topic: [PATCH][X86_64] Separate znver4 insn reservations from older znvers Thread-Index: Adj4PDK6isiklu5QQkmQOxLj7oCI6QAHez6AACHWebAAA9yQAAEnNgNQAAwWu4AB7C4DIAJA6O+AAet04UA= Date: Thu, 22 Dec 2022 17:34:50 +0000 Message-ID: References: <8e489785-b181-fbcf-e029-cd75796a6f28@ispras.ru> <27b06e9f-1e80-585d-624e-6f50475a5aa8@ispras.ru> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Enabled=true; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_SetDate=2022-12-22T16:13:59Z; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Method=Privileged; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Name=Public-AIP 2.0; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_ActionId=9df81284-cc09-4c54-829e-708caac1ed8e; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_ContentBits=1 msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_enabled: true msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_setdate: 2022-12-22T17:34:42Z msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_method: Privileged msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_name: Public-AIP 2.0 msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_siteid: 3dd8961f-e488-4e60-8e11-a82d994e183d msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_actionid: a77376ee-23ce-45cc-bc39-54463387267b msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_contentbits: 0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM6PR12MB4795:EE_|CO6PR12MB5394:EE_ x-ms-office365-filtering-correlation-id: 00f101c4-c8a7-4a0d-dc35-08dae442d423 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ghXrvUMVcRZvczBbY3aoVt+sS9mCkpb519ZWYPOiT6KaU07tCL8RCLyePQgpDbXlDBA4V20ui+e9MWDjI/D8gqBB+sWQQvbGG2KX1zUyP8/qiZ2ITX1Oiu2mwxTF23yrw9kXMHflrE5W9oN3xi4FJz5wtLKJ6fIpgIcCzXXqVWbfQgqIX0Ty9HxWOZUthdD+Vx387hIWpGonAB+TxjIdF1wOYsAeLAFz4w/k8gTWEfE6xJd4nBerHM/pFO2/dDYPf7YLKHIVGHP6aYEh54FajFE7jrzVJunT6RwqG/J+RqBWOfdmYR6n1B6eZ+8ALVF2XJvCJ+De6dhqQiCCgqQUyCEo+L1Ri8QQRgLL8gn7xrFKs87Yw25DZYZZ3LILyZTVJX/Yc9rFok00GymU6MR9xTDLF7Cb/+nI2HFyIVLQ7/KWBaradbcrtKpk/Rx06xsrhKmpj6SeHY1V3t8bSCR1xFTEeklb1maB5B+qknUA6oqWwgRSn1//QFw7nhAOxHQZYB2cbo2oxyHY7DA/yCs0yGJAZ9uiU+Qc4b+Bey05jzWPuhITD+9pNQdupudJ7lSAjNNY74uoOuRoBQqsffyjYpucz/L8SvwpWnT82sRVPxe9T4tcgp04+9jAWAvWxgnBwII681vxvhiCEA9hkluK41kVJoluClOLlQ3vKVs3bvD076GFaZkxP2CqZLiItW3oiXZZ2I/tk6V+yM1V56VR1JOezFIah+SIYJ1b69rxIETrUFWH6u6yWnI6Y5uonnLa x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR12MB4795.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(376002)(396003)(366004)(136003)(346002)(39860400002)(451199015)(8676002)(99936003)(38100700002)(30864003)(122000001)(71200400001)(7696005)(186003)(41300700001)(110136005)(9686003)(6506007)(26005)(86362001)(4326008)(54906003)(52536014)(38070700005)(8936002)(64756008)(76116006)(66476007)(55016003)(316002)(66556008)(66946007)(478600001)(66446008)(2906002)(5660300002)(83380400001)(33656002)(2004002)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-2?Q?Rp2hbIblAoIB4PZkxSbLt6dz7hgWhW4EGM7WH0oot/JOvbIktS9wywYXJx?= =?iso-8859-2?Q?l/zwfqQjJBsIsYDyzGBfyvpnWAQCWBzhKPXiw1vdCo4rC/pm+u3QH0ny7Y?= =?iso-8859-2?Q?wJV6ZEFYsXfgdsOpzFakDim7hC4Cy4vaW8HSidHFU5WB5q5OlfLIVo+A3D?= =?iso-8859-2?Q?GVMS+3z/hiw0nnRDNGH0MqA0Y2PGH+l2jfZdiZBQUxhQzhBDTpLZ0N6hpW?= =?iso-8859-2?Q?EEBMVZfsr0StdN2K5IWqvLSRb7r7IVfjcYo/sXJjaX+aReeP4eu+9oShMT?= =?iso-8859-2?Q?f+9qXqLHkrNae4i6PorUScZMpjcIo+Ph0lE0KvBitg5B671pXDZGpLnbFu?= =?iso-8859-2?Q?zYJTXLqRdcYSZ/s9ftaAXqIrc4vZCIAzJZXQK/iJ/66ZKCSniXan/zOZpq?= =?iso-8859-2?Q?sGcoi4uTy0EGMnAnGbeC5UmgQdg5BZq+68lsiJzxU0UFXU30+37XrjFNp2?= =?iso-8859-2?Q?1IMCafTdVtsX0QXGk+SOFd7/7erCpEosauCoCch8F3WO1eeCl2Ad+Cyv5/?= =?iso-8859-2?Q?2QhnGvlrOMVmFeFw87Ah2Cvwa+qxK72nSe8WzxLPYODfnLodFerp6b3Q+I?= =?iso-8859-2?Q?U+CoI99stLn8dmuECfebv5+Jh3aWt4ruHuc1KAwRdET5U2R/Vomnn94URs?= =?iso-8859-2?Q?hdtU72t05WKChYcFhDhV/+XWiQktxGXLUko41WMk4Oic874zlmjDkU2RV+?= =?iso-8859-2?Q?smAotScOZ+F1H4Jkv4UY/VsyY/+AxoxbB5fB6KbLzfOxB7i2ceM7E/7tYB?= =?iso-8859-2?Q?L5aejZH54U8Z22suG2oFw3BmWLQVAaku2TMR4yn/G8McutY3aZHBxDJo14?= =?iso-8859-2?Q?51V39SQeLybXOvcAuDBKzY+F06lUrPPRhImxnpXjvPyuq7ptzDHDOJJBhy?= =?iso-8859-2?Q?ED1K6maXjnUuZk7eIuE7gK5Kgn9BJ0uwHz7XNMFolKfHWJ/GCHXH/zfaYR?= =?iso-8859-2?Q?EYcGQtZx81O/x9snCZtDeWjjY75+c2bhOV75qydN35DA8D0coI2JO5p1RW?= =?iso-8859-2?Q?U/hEKludDLQhaqeViEwqHZIuUmp4VxLwCu65hv1VWrbFe7bMh55fQbuCKT?= =?iso-8859-2?Q?e0x5wqOzJ/y8r5sh5F8R+R2NGvY4lCpgaNnZHfR7IAND+thk9+g0nNK+8z?= =?iso-8859-2?Q?ZlgPmbVECa13dvGCsHdHu6/LRKGmoAY7TzSYOWv9AUTChLXlmLr7N+/NfC?= =?iso-8859-2?Q?4RJb7UKfnYvnqkHiDEwIHgReBFParsYDTLIGj3vktkCppJ63ev4hJOg2LA?= =?iso-8859-2?Q?z4rOiIVIaGqMhhjbzEoSsPl90+g7N6Z/Ot3qWGaOsdcZ9LsOEH/sJaxL2K?= =?iso-8859-2?Q?F53iq2r4pEDodzekrHydAM7wfJRUR1Z0ALlnGRaw+VqDD6n9Fc8yvTLQLh?= =?iso-8859-2?Q?vdljiEuMYb69aqqViUbCpVbxOT2siV5L4883V6yxFF+pnesma+NKluLxZf?= =?iso-8859-2?Q?6aqrpWavP4SkX3sneQsxwpbUZhgu/R3r4NGCJelqVCaHEmWOa2pr9Qq8fy?= =?iso-8859-2?Q?LKA5iNVqtbwfnP7kxbvKWRRpHWVaTQDGfI0WKVPn+hfAql5EtJMM9zJoht?= =?iso-8859-2?Q?hWz0Pu2qYJevfaABFNxftPpv75QPQ1lmWz4jlXKG7cpx0eDIicmal3YXT0?= =?iso-8859-2?Q?Qk6+ZoNVnhMwo=3D?= Content-Type: multipart/mixed; boundary="_002_DM6PR12MB4795444F22C0B64E72835C8DE3E89DM6PR12MB4795namp_" MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB4795.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 00f101c4-c8a7-4a0d-dc35-08dae442d423 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Dec 2022 17:34:50.3972 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: uZe81HLT4ET9hqgXvFsh82Ff1oOWitRriFUvWB2/r3PzN6Kb2xQF48+VJ4hywHyW50tFnuwESBdyfFWIndXm6g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR12MB5394 X-Spam-Status: No, score=-10.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_002_DM6PR12MB4795444F22C0B64E72835C8DE3E89DM6PR12MB4795namp_ Content-Type: text/plain; charset="iso-8859-2" Content-Transfer-Encoding: quoted-printable [Public] Hello, I have addressed all your comments in this revision of the patch, please fi= nd attached and inlined. * I have updated all the latencies with Agner's measurements. * Incorrect pipelines, loads/stores are addressed. * The double pumped avx512 insns take one cycle for 256 half and the next c= ycle for remaining 256-bit half in the same pipeline, thus pipe*2. Is this ok for trunk? Thanks and Regards, Tejas gcc/ChangeLog: * gcc/common/config/i386/i386-common.cc (processor_alias_table): Use CPU_ZNVER4 for znver4. * config/i386/i386.md: Add znver4.md. * config/i386/znver4.md: New. Change-Id: Iea39c1c01d4992cf7ac476bd6de65887910bbcbe --- gcc/common/config/i386/i386-common.cc | 2 +- gcc/config/i386/i386.md | 1 + gcc/config/i386/znver4.md | 1068 +++++++++++++++++++++++++ 3 files changed, 1070 insertions(+), 1 deletion(-) create mode 100644 gcc/config/i386/znver4.md diff --git a/gcc/common/config/i386/i386-common.cc b/gcc/common/config/i386= /i386-common.cc index 660a977b68b..c7adea57683 100644 --- a/gcc/common/config/i386/i386-common.cc +++ b/gcc/common/config/i386/i386-common.cc @@ -2215,7 +2215,7 @@ const pta processor_alias_table[] =3D {"znver3", PROCESSOR_ZNVER3, CPU_ZNVER3, PTA_ZNVER3, M_CPU_SUBTYPE (AMDFAM19H_ZNVER3), P_PROC_AVX2}, - {"znver4", PROCESSOR_ZNVER4, CPU_ZNVER3, + {"znver4", PROCESSOR_ZNVER4, CPU_ZNVER4, PTA_ZNVER4, M_CPU_SUBTYPE (AMDFAM19H_ZNVER4), P_PROC_AVX512F}, {"btver1", PROCESSOR_BTVER1, CPU_GENERIC, diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 9451883396c..3a88f16a21a 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1319,6 +1319,7 @@ (include "bdver3.md") (include "btver2.md") (include "znver.md") +(include "znver4.md") (include "geode.md") (include "atom.md") (include "slm.md") diff --git a/gcc/config/i386/znver4.md b/gcc/config/i386/znver4.md new file mode 100644 index 00000000000..d0b239822a8 --- /dev/null +++ b/gcc/config/i386/znver4.md @@ -0,0 +1,1068 @@ +;; Copyright (C) 2012-2022 Free Software Foundation, Inc. +;; +;; This file is part of GCC. +;; +;; GCC is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. +;; +;; GCC is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; . +;; + + +(define_attr "znver4_decode" "direct,vector,double" + (const_string "direct")) + +;; AMD znver4 Scheduling +;; Modeling automatons for zen decoders, integer execution pipes, +;; AGU pipes, branch, floating point execution and fp store units. +(define_automaton "znver4, znver4_ieu, znver4_idiv, znver4_fdiv, znver4_ag= u, znver4_fpu, znver4_fp_store") + +;; Decoders unit has 4 decoders and all of them can decode fast path +;; and vector type instructions. +(define_cpu_unit "znver4-decode0" "znver4") +(define_cpu_unit "znver4-decode1" "znver4") +(define_cpu_unit "znver4-decode2" "znver4") +(define_cpu_unit "znver4-decode3" "znver4") + +;; Currently blocking all decoders for vector path instructions as +;; they are dispatched separetely as microcode sequence. +(define_reservation "znver4-vector" "znver4-decode0+znver4-decode1+znver4-= decode2+znver4-decode3") + +;; Direct instructions can be issued to any of the four decoders. +(define_reservation "znver4-direct" "znver4-decode0|znver4-decode1|znver4-= decode2|znver4-decode3") + +;; Fix me: Need to revisit this later to simulate fast path double behavio= r. +(define_reservation "znver4-double" "znver4-direct") + + +;; Integer unit 4 ALU pipes. +(define_cpu_unit "znver4-ieu0" "znver4_ieu") +(define_cpu_unit "znver4-ieu1" "znver4_ieu") +(define_cpu_unit "znver4-ieu2" "znver4_ieu") +(define_cpu_unit "znver4-ieu3" "znver4_ieu") +;; Znver4 has an additional branch unit. +(define_cpu_unit "znver4-bru0" "znver4_ieu") +(define_reservation "znver4-ieu" "znver4-ieu0|znver4-ieu1|znver4-ieu2|znve= r4-ieu3") + +;; 3 AGU pipes in znver4 +(define_cpu_unit "znver4-agu0" "znver4_agu") +(define_cpu_unit "znver4-agu1" "znver4_agu") +(define_cpu_unit "znver4-agu2" "znver4_agu") +(define_reservation "znver4-agu-reserve" "znver4-agu0|znver4-agu1|znver4-a= gu2") + +;; Load is 4 cycles. We do not model reservation of load unit. +(define_reservation "znver4-load" "znver4-agu-reserve") +(define_reservation "znver4-store" "znver4-agu-reserve") + +;; vectorpath (microcoded) instructions are single issue instructions. +;; So, they occupy all the integer units. +(define_reservation "znver4-ivector" "znver4-ieu0+znver4-ieu1 + +znver4-ieu2+znver4-ieu3+znver4-bru0 + +znver4-agu0+znver4-agu1+znver4-agu2") + +;; Floating point unit 4 FP pipes. +(define_cpu_unit "znver4-fpu0" "znver4_fpu") +(define_cpu_unit "znver4-fpu1" "znver4_fpu") +(define_cpu_unit "znver4-fpu2" "znver4_fpu") +(define_cpu_unit "znver4-fpu3" "znver4_fpu") + +(define_reservation "znver4-fpu" "znver4-fpu0|znver4-fpu1|znver4-fpu2|znve= r4-fpu3") + +(define_reservation "znver4-fvector" "znver4-fpu0+znver4-fpu1 + +znver4-fpu2+znver4-fpu3 + +znver4-agu0+znver4-agu1+znver4-agu2") + +;; DIV units +(define_cpu_unit "znver4-idiv" "znver4_idiv") +(define_cpu_unit "znver4-fdiv" "znver4_fdiv") + +;; Separate fp store and fp-to-int store. Although there are 2 store pipes= , the +;; throughput is limited to only one per cycle. +(define_cpu_unit "znver4-fp-store" "znver4_fp_store") + + +;; Integer Instructions +;; Move instructions +;; XCHG +(define_insn_reservation "znver4_imov_double" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "imov") + (eq_attr "memory" "none")))) + "znver4-double,znver4-ieu") + +(define_insn_reservation "znver4_imov_double_load" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "imov") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-ieu") + +;; imov, imovx +(define_insn_reservation "znver4_imov" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imov,imovx") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-ieu") + +(define_insn_reservation "znver4_imov_load" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imov,imovx") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-ieu") + +;; Push Instruction +(define_insn_reservation "znver4_push" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "push") + (eq_attr "memory" "store"))) + "znver4-direct,znver4-store") + +(define_insn_reservation "znver4_push_mem" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "push") + (eq_attr "memory" "both"))) + "znver4-direct,znver4-load,znver4-store") + +;; Pop instruction +(define_insn_reservation "znver4_pop" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "pop") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load") + +(define_insn_reservation "znver4_pop_mem" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "pop") + (eq_attr "memory" "both"))) + "znver4-direct,znver4-load,znver4-store") + +;; Integer Instructions or General instructions +;; Multiplications +(define_insn_reservation "znver4_imul" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imul") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-ieu1") + +(define_insn_reservation "znver4_imul_load" 7 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "imul") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-ieu1") + +;; Divisions +(define_insn_reservation "znver4_idiv_DI" 18 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "DI") + (eq_attr "memory" "none")))) + "znver4-double,znver4-idiv*10") + +(define_insn_reservation "znver4_idiv_SI" 12 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "SI") + (eq_attr "memory" "none")))) + "znver4-double,znver4-idiv*6") + +(define_insn_reservation "znver4_idiv_HI" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "HI") + (eq_attr "memory" "none")))) + "znver4-double,znver4-idiv*4") + +(define_insn_reservation "znver4_idiv_QI" 9 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "QI") + (eq_attr "memory" "none")))) + "znver4-double,znver4-idiv*4") + +(define_insn_reservation "znver4_idiv_DI_load" 22 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "DI") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-idiv*10") + +(define_insn_reservation "znver4_idiv_SI_load" 16 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "SI") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-idiv*6") + +(define_insn_reservation "znver4_idiv_HI_load" 14 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "HI") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-idiv*4") + +(define_insn_reservation "znver4_idiv_QI_load" 13 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "idiv") + (and (eq_attr "mode" "QI") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-idiv*4") + +;; INTEGER/GENERAL Instructions +(define_insn_reservation "znver4_insn" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "alu,alu1,negnot,rotate1,ishift1,test,incdec= ,icmp") + (eq_attr "memory" "none,unknown"))) + "znver4-direct,znver4-ieu") + +(define_insn_reservation "znver4_insn_load" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "alu,alu1,negnot,rotate1,ishift1,test,incdec= ,icmp") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-ieu") + +(define_insn_reservation "znver4_insn2" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "icmov,setcc") + (eq_attr "memory" "none,unknown"))) + "znver4-direct,znver4-ieu0|znver4-ieu3") + +(define_insn_reservation "znver4_insn2_load" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "icmov,setcc") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-ieu0|znver4-ieu3") + +(define_insn_reservation "znver4_rotate" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "rotate") + (eq_attr "memory" "none,unknown"))) + "znver4-direct,znver4-ieu1|znver4-ieu2") + +(define_insn_reservation "znver4_rotate_load" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "rotate") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-ieu1|znver4-ieu2") + +(define_insn_reservation "znver4_insn_store" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "alu,alu1,negnot,rotate1,ishift1,test,incdec= ,icmp") + (eq_attr "memory" "store"))) + "znver4-direct,znver4-ieu,znver4-store") + +(define_insn_reservation "znver4_insn2_store" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "icmov,setcc") + (eq_attr "memory" "store"))) + "znver4-direct,znver4-ieu0|znver4-ieu3,znver4-store") + +(define_insn_reservation "znver4_rotate_store" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "rotate") + (eq_attr "memory" "store"))) + "znver4-direct,znver4-ieu1|znver4-ieu2,znver4-store") + +;; alu1 instructions +(define_insn_reservation "znver4_alu1_vector" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "vector") + (and (eq_attr "type" "alu1") + (eq_attr "memory" "none,unknown")))) + "znver4-vector,znver4-ivector*3") + +(define_insn_reservation "znver4_alu1_vector_load" 7 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "vector") + (and (eq_attr "type" "alu1") + (eq_attr "memory" "load")))) + "znver4-vector,znver4-load,znver4-ivector*3") + +;; Call Instruction +(define_insn_reservation "znver4_call" 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "call,callv")) + "znver4-double,znver4-ieu0|znver4-bru0,znver4-store") + +;; Branches +(define_insn_reservation "znver4_branch" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ibr") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-ieu0|znver4-bru0") + +(define_insn_reservation "znver4_branch_load" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ibr") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-ieu0|znver4-bru0") + +(define_insn_reservation "znver4_branch_vector" 2 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ibr") + (eq_attr "memory" "none,unknown"))) + "znver4-vector,znver4-ivector*2") + +(define_insn_reservation "znver4_branch_vector_load" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ibr") + (eq_attr "memory" "load"))) + "znver4-vector,znver4-load,znver4-ivector*2") + +;; LEA instruction with simple addressing +(define_insn_reservation "znver4_lea" 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "lea")) + "znver4-direct,znver4-ieu") + +;; Leave +(define_insn_reservation "znver4_leave" 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "leave")) + "znver4-double,znver4-ieu,znver4-store") + +;; STR and ISHIFT are microcoded. +(define_insn_reservation "znver4_str" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "str") + (eq_attr "memory" "none"))) + "znver4-vector,znver4-ivector*3") + +(define_insn_reservation "znver4_str_load" 7 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "str") + (eq_attr "memory" "load"))) + "znver4-vector,znver4-load,znver4-ivector*3") + +(define_insn_reservation "znver4_ishift" 2 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ishift") + (eq_attr "memory" "none"))) + "znver4-vector,znver4-ivector*2") + +(define_insn_reservation "znver4_ishift_load" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ishift") + (eq_attr "memory" "load"))) + "znver4-vector,znver4-load,znver4-ivector*2") + +;; Other vector type +(define_insn_reservation "znver4_ieu_vector" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "other,multi") + (eq_attr "memory" "none,unknown"))) + "znver4-vector,znver4-ivector*5") + +(define_insn_reservation "znver4_ieu_vector_load" 9 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "other,multi") + (eq_attr "memory" "load"))) + "znver4-vector,znver4-load,znver4-ivector*5") + +;; Floating Point +;; FP movs +(define_insn_reservation "znver4_fp_cmov" 4 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "fcmov")) + "znver4-vector,znver4-fvector*3") + +(define_insn_reservation "znver4_fp_mov_direct" 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "fmov")) + "znver4-direct,znver4-fpu0|znver4-fpu1") + +;;FLD +(define_insn_reservation "znver4_fp_mov_direct_load" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "direct") + (and (eq_attr "type" "fmov") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") + +;;FST +(define_insn_reservation "znver4_fp_mov_direct_store" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "direct") + (and (eq_attr "type" "fmov") + (eq_attr "memory" "store")))) + "znver4-direct,znver4-fpu0|znver4-fpu1,znver4-fp-store") + +;;FILD +(define_insn_reservation "znver4_fp_mov_double_load" 13 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "fmov") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1") + +;;FIST +(define_insn_reservation "znver4_fp_mov_double_store" 7 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "double") + (and (eq_attr "type" "fmov") + (eq_attr "memory" "store")))) + "znver4-double,znver4-fpu1,znver4-fp-store") + +;; FSQRT +(define_insn_reservation "znver4_fsqrt" 22 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fpspc") + (and (eq_attr "mode" "XF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fdiv*10") + +;; FPSPC instructions +(define_insn_reservation "znver4_fp_spc" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fpspc") + (eq_attr "memory" "none"))) + "znver4-vector,znver4-fvector*6") + +(define_insn_reservation "znver4_fp_insn_vector" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "znver1_decode" "vector") + (eq_attr "type" "mmxcvt,sselog1,ssemov"))) + "znver4-vector,znver4-fvector*6") + +;; FADD, FSUB, FMUL +(define_insn_reservation "znver4_fp_op_mul" 7 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fop,fmul") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu0") + +(define_insn_reservation "znver4_fp_op_mul_load" 12 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fop,fmul") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fpu0") + +;; FDIV +(define_insn_reservation "znver4_fp_div" 15 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fdiv") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fdiv*6") + +(define_insn_reservation "znver4_fp_div_load" 20 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fdiv") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fdiv*6") + +(define_insn_reservation "znver4_fp_idiv_load" 24 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fdiv") + (and (eq_attr "fp_int_src" "true") + (eq_attr "memory" "load")))) + "znver4-double,znver4-load,znver4-fdiv*6") + +;; FABS, FCHS +(define_insn_reservation "znver4_fp_fsgn" 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "fsgn")) + "znver4-direct,znver4-fpu0|znver4-fpu1") + +;; FCMP +(define_insn_reservation "znver4_fp_fcmp" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fcmp") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu1") + +(define_insn_reservation "znver4_fp_fcmp_double" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "fcmp") + (and (eq_attr "znver1_decode" "double") + (eq_attr "memory" "none")))) + "znver4-double,znver4-fpu1,znver4-fpu2") + +;; MMX, SSE, SSEn.n instructions +(define_insn_reservation "znver4_fp_mmx " 1 + (and (eq_attr "cpu" "znver4") + (eq_attr "type" "mmx")) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_mmx_add_cmp" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxadd,mmxcmp") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu") + +(define_insn_reservation "znver4_mmx_add_cmp_load" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxadd,mmxcmp") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fpu") + +(define_insn_reservation "znver4_mmx_insn" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1,mmxshft") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_mmx_insn_load" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1,mmxshft") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_mmx_mov" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxmov") + (eq_attr "memory" "store"))) + "znver4-direct,znver4-fp-store") + +(define_insn_reservation "znver4_mmx_mov_load" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxmov") + (eq_attr "memory" "both"))) + "znver4-direct,znver4-load,znver4-fp-store") + +(define_insn_reservation "znver4_mmx_mul" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxmul") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu0|znver4-fpu3") + +(define_insn_reservation "znver4_mmx_mul_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mmxmul") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu3") + +;; AVX instructions +(define_insn_reservation "znver4_sse_log" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog") + (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF,QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu") + +(define_insn_reservation "znver4_sse_log_load" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog") + (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF,QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu") + +(define_insn_reservation "znver4_sse_log1" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog1") + (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF,QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "store")))) + "znver4-direct,znver4-fpu1|znver4-fpu2,znver4-fp-store") + +(define_insn_reservation "znver4_sse_log1_load" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog1") + (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF,QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "both")))) + "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2,znver4-fp-store") + +(define_insn_reservation "znver4_sse_comi" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "store"))) + "znver4-double,znver4-fpu2|znver4-fpu3,znver4-fp-store") + +(define_insn_reservation "znver4_sse_comi_load" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "both"))) + "znver4-double,znver4-load,znver4-fpu2|znver4-fpu3,znver4-fp-store") + +(define_insn_reservation "znver4_sse_test" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "prefix_extra" "1") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_test_load" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "prefix_extra" "1") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_imul" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseimul") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0|znver4-fpu3") + +(define_insn_reservation "znver4_sse_imul_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseimul") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_mov" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_mov_load" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_mov_store" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "store")))) + "znver4-direct,znver4-fpu1|znver4-fpu2,znver4-fp-store") + +(define_insn_reservation "znver4_sse_mov_fp" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "V16SF,V8DF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu") + +(define_insn_reservation "znver4_sse_mov_fp_load" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "V16SF,V8DF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu") + +(define_insn_reservation "znver4_sse_mov_fp_store" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "V16SF,V8DF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "store")))) + "znver4-direct,znver4-fp-store") + +(define_insn_reservation "znver4_sse_add" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_add_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_add1" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd1") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-vector,znver4-fvector*2") + +(define_insn_reservation "znver4_sse_add1_load" 9 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd1") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-vector,znver4-load,znver4-fvector*2") + +(define_insn_reservation "znver4_sse_iadd" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseiadd") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu") + +(define_insn_reservation "znver4_sse_iadd_load" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseiadd") + (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu") + +(define_insn_reservation "znver4_sse_mul" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemul") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_mul_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemul") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_div_pd" 13 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V4DF,V2DF,V1DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fdiv*5") + +(define_insn_reservation "znver4_sse_div_ps" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V8SF,V4SF,V2SF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fdiv*3") + +(define_insn_reservation "znver4_sse_div_pd_load" 18 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V4DF,V2DF,V1DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fdiv*5") + +(define_insn_reservation "znver4_sse_div_ps_load" 15 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V8SF,V4SF,V2SF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fdiv*3") + +(define_insn_reservation "znver4_sse_cmp_avx" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp") + (and (eq_attr "prefix" "vex") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_cmp_avx_load" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp") + (and (eq_attr "prefix" "vex") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1") + +(define_insn_reservation "znver4_sse_comi_avx" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "store"))) + "znver4-direct,znver4-fpu2+znver4-fpu3,znver4-fp-store") + +(define_insn_reservation "znver4_sse_comi_avx_load" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecomi") + (eq_attr "memory" "both"))) + "znver4-direct,znver4-load,znver4-fpu2+znver4-fpu3,znver4-fp-store") + +(define_insn_reservation "znver4_sse_cvt" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_cvt_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_icvt" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "SI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu2|znver4-fpu3") + +(define_insn_reservation "znver4_sse_icvt_store" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "SI") + (eq_attr "memory" "store")))) + "znver4-double,znver4-fpu2|znver4-fpu3,znver4-fp-store") + +(define_insn_reservation "znver4_sse_shuf" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_shuf_load" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu") + +(define_insn_reservation "znver4_sse_ishuf" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "OI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1|znver4-fpu2") + +(define_insn_reservation "znver4_sse_ishuf_load" 8 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "OI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2") + +;; AVX512 instructions +(define_insn_reservation "znver4_sse_log_evex" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog") + (and (eq_attr "mode" "V16SF,V8DF,XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2= ") + +(define_insn_reservation "znver4_sse_log_evex_load" 7 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog") + (and (eq_attr "mode" "V16SF,V8DF,XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|z= nver4-fpu3*2") + +(define_insn_reservation "znver4_sse_log1_evex" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog1") + (and (eq_attr "mode" "V16SF,V8DF,XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1*2|znver4-fpu2*2,znver4-fp-store") + +(define_insn_reservation "znver4_sse_log1_evex_load" 7 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sselog1") + (and (eq_attr "mode" "V16SF,V8DF,XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1*2|znver4-fpu2*2,znver4-fp-store= ") + +(define_insn_reservation "znver4_sse_mul_evex" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemul") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_mul_evex_load" 9 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemul") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_imul_evex" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseimul") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0*2|znver4-fpu3*2") + +(define_insn_reservation "znver4_sse_imul_evex_load" 9 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseimul") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_mov_evex" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1*2|znver4-fpu2*2") + +(define_insn_reservation "znver4_sse_mov_evex_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1*2|znver4-fpu2*2") + +(define_insn_reservation "znver4_sse_mov_evex_store" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemov") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "store")))) + "znver4-direct,znver4-fpu1*2|znver4-fpu2*2,znver4-fp-store") + +(define_insn_reservation "znver4_sse_add_evex" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu2*2|znver4-fpu3*2") + +(define_insn_reservation "znver4_sse_add_evex_load" 9 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseadd") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu2*2|znver4-fpu3*2") + +(define_insn_reservation "znver4_sse_iadd_evex" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseiadd") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2= ") + +(define_insn_reservation "znver4_sse_iadd_evex_load" 7 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseiadd") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|z= nver4-fpu3*2") + +(define_insn_reservation "znver4_sse_div_pd_evex" 13 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V8DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fdiv*9") + +(define_insn_reservation "znver4_sse_div_ps_evex" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V16SF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fdiv*6") + +(define_insn_reservation "znver4_sse_div_pd_evex_load" 19 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V8DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fdiv*9") + +(define_insn_reservation "znver4_sse_div_ps_evex_load" 16 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssediv") + (and (eq_attr "mode" "V16SF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fdiv*6") + +(define_insn_reservation "znver4_sse_cmp_avx128" 3 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp") + (and (eq_attr "mode" "V4SF,V2DF,V2SF,V1DF,SF") + (and (eq_attr "prefix" "evex") + (eq_attr "memory" "none"))))) + "znver4-direct,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_cmp_avx128_load" 9 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp") + (and (eq_attr "mode" "V4SF,V2DF,V2SF,V1DF,SF") + (and (eq_attr "prefix" "evex") + (eq_attr "memory" "load"))))) + "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_cmp_avx256" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp") + (and (eq_attr "mode" "V8SF,V4DF") + (and (eq_attr "prefix" "evex") + (eq_attr "memory" "none"))))) + "znver4-direct,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_cmp_avx256_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp") + (and (eq_attr "mode" "V8SF,V4DF") + (and (eq_attr "prefix" "evex") + (eq_attr "memory" "load"))))) + "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_cmp_avx512" 5 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp") + (and (eq_attr "mode" "V16SF,V8DF") + (and (eq_attr "prefix" "evex") + (eq_attr "memory" "none"))))) + "znver4-direct,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_cmp_avx512_load" 11 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecmp") + (and (eq_attr "mode" "V16SF,V8DF") + (and (eq_attr "prefix" "evex") + (eq_attr "memory" "load"))))) + "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_cvt_evex" 6 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1*2|znver4-fpu2*2,znver4-fpu2*2|znver4-fpu3*2= ") + +(define_insn_reservation "znver4_sse_cvt_evex_load" 12 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssecvt") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1*2|znver4-fpu2*2,znver4-fpu2*2|z= nver4-fpu3*2") + +(define_insn_reservation "znver4_sse_shuf_evex" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2= ") + +(define_insn_reservation "znver4_sse_shuf_evex_load" 7 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "V16SF,V8DF") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|z= nver4-fpu3*2") + +(define_insn_reservation "znver4_sse_ishuf_evex" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "none")))) + "znver4-direct,znver4-fpu1*2|znver4-fpu2*2") + +(define_insn_reservation "znver4_sse_ishuf_evex_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (and (eq_attr "mode" "XI") + (eq_attr "memory" "load")))) + "znver4-direct,znver4-load,znver4-fpu1*2|znver4-fpu2*2") + +(define_insn_reservation "znver4_sse_muladd" 4 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "ssemuladd") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_muladd_load" 10 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "sseshuf") + (eq_attr "memory" "load"))) + "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2") + +;; AVX512 mask instructions + +(define_insn_reservation "znver4_sse_mskmov" 2 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "mskmov") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu0*2|znver4-fpu1*2") + +(define_insn_reservation "znver4_sse_msklog" 1 + (and (eq_attr "cpu" "znver4") + (and (eq_attr "type" "msklog") + (eq_attr "memory" "none"))) + "znver4-direct,znver4-fpu2*2|znver4-fpu3*2") -- --_002_DM6PR12MB4795444F22C0B64E72835C8DE3E89DM6PR12MB4795namp_ Content-Type: application/octet-stream; name="0002-Add-AMD-znver4-instruction-reservations.patch" Content-Description: 0002-Add-AMD-znver4-instruction-reservations.patch Content-Disposition: attachment; filename="0002-Add-AMD-znver4-instruction-reservations.patch"; size=41453; creation-date="Thu, 22 Dec 2022 17:33:00 GMT"; modification-date="Thu, 22 Dec 2022 17:34:48 GMT" Content-Transfer-Encoding: base64 RnJvbSBkMTljOWY5ZTcxNzFiZjAxNmZkMDVmM2NjYWE5NTc5NTQxMDA2NmNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUZWphcyBKb3NoaSA8VGVqYXNTYW5qYXkuSm9zaGlAYW1kLmNv bT4KRGF0ZTogV2VkLCA5IE5vdiAyMDIyIDAwOjEwOjU5ICswNTMwClN1YmplY3Q6IFtQQVRDSF0g QWRkIEFNRCB6bnZlcjQgaW5zdHJ1Y3Rpb24gcmVzZXJ2YXRpb25zCgpUaGlzIGFkZHMgem52ZXI0 IGF1dG9tYXRhIHVuaXRzIGFuZCByZXNlcnZhdGlvbnMgc2VwYXJhdGVseSBmcm9tIG90aGVyCnpu dmVyIGF1dG9tYXRhLCBhdm9pZGluZyB0aGUgaW5zbi1hdXRvbWF0YS5jYyBzaXplIGJsb3ctdXAu CgpnY2MvQ2hhbmdlTG9nOgoKCSogZ2NjL2NvbW1vbi9jb25maWcvaTM4Ni9pMzg2LWNvbW1vbi5j YyAocHJvY2Vzc29yX2FsaWFzX3RhYmxlKToKCVVzZSBDUFVfWk5WRVI0IGZvciB6bnZlcjQuCgkq IGNvbmZpZy9pMzg2L2kzODYubWQ6IEFkZCB6bnZlcjQubWQuCgkqIGNvbmZpZy9pMzg2L3pudmVy NC5tZDogTmV3LgoKQ2hhbmdlLUlkOiBJZWEzOWMxYzAxZDQ5OTJjZjdhYzQ3NmJkNmRlNjU4ODc5 MTBiYmNiZQotLS0KIGdjYy9jb21tb24vY29uZmlnL2kzODYvaTM4Ni1jb21tb24uY2MgfCAgICAy ICstCiBnY2MvY29uZmlnL2kzODYvaTM4Ni5tZCAgICAgICAgICAgICAgIHwgICAgMSArCiBnY2Mv Y29uZmlnL2kzODYvem52ZXI0Lm1kICAgICAgICAgICAgIHwgMTA2OCArKysrKysrKysrKysrKysr KysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDEwNzAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy9jb25maWcvaTM4Ni96bnZlcjQubWQKCmRpZmYg LS1naXQgYS9nY2MvY29tbW9uL2NvbmZpZy9pMzg2L2kzODYtY29tbW9uLmNjIGIvZ2NjL2NvbW1v bi9jb25maWcvaTM4Ni9pMzg2LWNvbW1vbi5jYwppbmRleCA2NjBhOTc3YjY4Yi4uYzdhZGVhNTc2 ODMgMTAwNjQ0Ci0tLSBhL2djYy9jb21tb24vY29uZmlnL2kzODYvaTM4Ni1jb21tb24uY2MKKysr IGIvZ2NjL2NvbW1vbi9jb25maWcvaTM4Ni9pMzg2LWNvbW1vbi5jYwpAQCAtMjIxNSw3ICsyMjE1 LDcgQEAgY29uc3QgcHRhIHByb2Nlc3Nvcl9hbGlhc190YWJsZVtdID0KICAgeyJ6bnZlcjMiLCBQ Uk9DRVNTT1JfWk5WRVIzLCBDUFVfWk5WRVIzLAogICAgIFBUQV9aTlZFUjMsCiAgICAgTV9DUFVf U1VCVFlQRSAoQU1ERkFNMTlIX1pOVkVSMyksIFBfUFJPQ19BVlgyfSwKLSAgeyJ6bnZlcjQiLCBQ Uk9DRVNTT1JfWk5WRVI0LCBDUFVfWk5WRVIzLAorICB7InpudmVyNCIsIFBST0NFU1NPUl9aTlZF UjQsIENQVV9aTlZFUjQsCiAgICAgUFRBX1pOVkVSNCwKICAgICBNX0NQVV9TVUJUWVBFIChBTURG QU0xOUhfWk5WRVI0KSwgUF9QUk9DX0FWWDUxMkZ9LAogICB7ImJ0dmVyMSIsIFBST0NFU1NPUl9C VFZFUjEsIENQVV9HRU5FUklDLApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYubWQg Yi9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZAppbmRleCA5NDUxODgzMzk2Yy4uM2E4OGYxNmEyMWEg MTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kCisrKyBiL2djYy9jb25maWcvaTM4 Ni9pMzg2Lm1kCkBAIC0xMzE5LDYgKzEzMTksNyBAQAogKGluY2x1ZGUgImJkdmVyMy5tZCIpCiAo aW5jbHVkZSAiYnR2ZXIyLm1kIikKIChpbmNsdWRlICJ6bnZlci5tZCIpCisoaW5jbHVkZSAiem52 ZXI0Lm1kIikKIChpbmNsdWRlICJnZW9kZS5tZCIpCiAoaW5jbHVkZSAiYXRvbS5tZCIpCiAoaW5j bHVkZSAic2xtLm1kIikKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni96bnZlcjQubWQgYi9n Y2MvY29uZmlnL2kzODYvem52ZXI0Lm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5kMGIyMzk4MjJhOAotLS0gL2Rldi9udWxsCisrKyBiL2djYy9jb25maWcvaTM4Ni96 bnZlcjQubWQKQEAgLTAsMCArMSwxMDY4IEBACis7OyBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKzs7Cis7OyBUaGlzIGZpbGUgaXMgcGFydCBv ZiBHQ0MuCis7OworOzsgR0NDIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCis7OyBhbnkg bGF0ZXIgdmVyc2lvbi4KKzs7Cis7OyBHQ0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKzs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCis7OyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorOzsKKzs7IFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCis7OyBhbG9u ZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorOzsgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorOzsKKworCisoZGVmaW5lX2F0dHIgInpudmVyNF9k ZWNvZGUiICJkaXJlY3QsdmVjdG9yLGRvdWJsZSIKKyAgKGNvbnN0X3N0cmluZyAiZGlyZWN0Iikp CisKKzs7IEFNRCB6bnZlcjQgU2NoZWR1bGluZworOzsgTW9kZWxpbmcgYXV0b21hdG9ucyBmb3Ig emVuIGRlY29kZXJzLCBpbnRlZ2VyIGV4ZWN1dGlvbiBwaXBlcywKKzs7IEFHVSBwaXBlcywgYnJh bmNoLCBmbG9hdGluZyBwb2ludCBleGVjdXRpb24gYW5kIGZwIHN0b3JlIHVuaXRzLgorKGRlZmlu ZV9hdXRvbWF0b24gInpudmVyNCwgem52ZXI0X2lldSwgem52ZXI0X2lkaXYsIHpudmVyNF9mZGl2 LCB6bnZlcjRfYWd1LCB6bnZlcjRfZnB1LCB6bnZlcjRfZnBfc3RvcmUiKQorCis7OyBEZWNvZGVy cyB1bml0IGhhcyA0IGRlY29kZXJzIGFuZCBhbGwgb2YgdGhlbSBjYW4gZGVjb2RlIGZhc3QgcGF0 aAorOzsgYW5kIHZlY3RvciB0eXBlIGluc3RydWN0aW9ucy4KKyhkZWZpbmVfY3B1X3VuaXQgInpu dmVyNC1kZWNvZGUwIiAiem52ZXI0IikKKyhkZWZpbmVfY3B1X3VuaXQgInpudmVyNC1kZWNvZGUx IiAiem52ZXI0IikKKyhkZWZpbmVfY3B1X3VuaXQgInpudmVyNC1kZWNvZGUyIiAiem52ZXI0IikK KyhkZWZpbmVfY3B1X3VuaXQgInpudmVyNC1kZWNvZGUzIiAiem52ZXI0IikKKworOzsgQ3VycmVu dGx5IGJsb2NraW5nIGFsbCBkZWNvZGVycyBmb3IgdmVjdG9yIHBhdGggaW5zdHJ1Y3Rpb25zIGFz Cis7OyB0aGV5IGFyZSBkaXNwYXRjaGVkIHNlcGFyZXRlbHkgYXMgbWljcm9jb2RlIHNlcXVlbmNl LgorKGRlZmluZV9yZXNlcnZhdGlvbiAiem52ZXI0LXZlY3RvciIgInpudmVyNC1kZWNvZGUwK3pu dmVyNC1kZWNvZGUxK3pudmVyNC1kZWNvZGUyK3pudmVyNC1kZWNvZGUzIikKKworOzsgRGlyZWN0 IGluc3RydWN0aW9ucyBjYW4gYmUgaXNzdWVkIHRvIGFueSBvZiB0aGUgZm91ciBkZWNvZGVycy4K KyhkZWZpbmVfcmVzZXJ2YXRpb24gInpudmVyNC1kaXJlY3QiICJ6bnZlcjQtZGVjb2RlMHx6bnZl cjQtZGVjb2RlMXx6bnZlcjQtZGVjb2RlMnx6bnZlcjQtZGVjb2RlMyIpCisKKzs7IEZpeCBtZTog TmVlZCB0byByZXZpc2l0IHRoaXMgbGF0ZXIgdG8gc2ltdWxhdGUgZmFzdCBwYXRoIGRvdWJsZSBi ZWhhdmlvci4KKyhkZWZpbmVfcmVzZXJ2YXRpb24gInpudmVyNC1kb3VibGUiICJ6bnZlcjQtZGly ZWN0IikKKworCis7OyBJbnRlZ2VyIHVuaXQgNCBBTFUgcGlwZXMuCisoZGVmaW5lX2NwdV91bml0 ICJ6bnZlcjQtaWV1MCIgInpudmVyNF9pZXUiKQorKGRlZmluZV9jcHVfdW5pdCAiem52ZXI0LWll dTEiICJ6bnZlcjRfaWV1IikKKyhkZWZpbmVfY3B1X3VuaXQgInpudmVyNC1pZXUyIiAiem52ZXI0 X2lldSIpCisoZGVmaW5lX2NwdV91bml0ICJ6bnZlcjQtaWV1MyIgInpudmVyNF9pZXUiKQorOzsg Wm52ZXI0IGhhcyBhbiBhZGRpdGlvbmFsIGJyYW5jaCB1bml0LgorKGRlZmluZV9jcHVfdW5pdCAi em52ZXI0LWJydTAiICJ6bnZlcjRfaWV1IikKKyhkZWZpbmVfcmVzZXJ2YXRpb24gInpudmVyNC1p ZXUiICJ6bnZlcjQtaWV1MHx6bnZlcjQtaWV1MXx6bnZlcjQtaWV1Mnx6bnZlcjQtaWV1MyIpCisK Kzs7IDMgQUdVIHBpcGVzIGluIHpudmVyNAorKGRlZmluZV9jcHVfdW5pdCAiem52ZXI0LWFndTAi ICJ6bnZlcjRfYWd1IikKKyhkZWZpbmVfY3B1X3VuaXQgInpudmVyNC1hZ3UxIiAiem52ZXI0X2Fn dSIpCisoZGVmaW5lX2NwdV91bml0ICJ6bnZlcjQtYWd1MiIgInpudmVyNF9hZ3UiKQorKGRlZmlu ZV9yZXNlcnZhdGlvbiAiem52ZXI0LWFndS1yZXNlcnZlIiAiem52ZXI0LWFndTB8em52ZXI0LWFn dTF8em52ZXI0LWFndTIiKQorCis7OyBMb2FkIGlzIDQgY3ljbGVzLiBXZSBkbyBub3QgbW9kZWwg cmVzZXJ2YXRpb24gb2YgbG9hZCB1bml0LgorKGRlZmluZV9yZXNlcnZhdGlvbiAiem52ZXI0LWxv YWQiICJ6bnZlcjQtYWd1LXJlc2VydmUiKQorKGRlZmluZV9yZXNlcnZhdGlvbiAiem52ZXI0LXN0 b3JlIiAiem52ZXI0LWFndS1yZXNlcnZlIikKKworOzsgdmVjdG9ycGF0aCAobWljcm9jb2RlZCkg aW5zdHJ1Y3Rpb25zIGFyZSBzaW5nbGUgaXNzdWUgaW5zdHJ1Y3Rpb25zLgorOzsgU28sIHRoZXkg b2NjdXB5IGFsbCB0aGUgaW50ZWdlciB1bml0cy4KKyhkZWZpbmVfcmVzZXJ2YXRpb24gInpudmVy NC1pdmVjdG9yIiAiem52ZXI0LWlldTArem52ZXI0LWlldTEKKwkJCQkgICAgICArem52ZXI0LWll dTIrem52ZXI0LWlldTMrem52ZXI0LWJydTAKKwkJCQkgICAgICArem52ZXI0LWFndTArem52ZXI0 LWFndTErem52ZXI0LWFndTIiKQorCis7OyBGbG9hdGluZyBwb2ludCB1bml0IDQgRlAgcGlwZXMu CisoZGVmaW5lX2NwdV91bml0ICJ6bnZlcjQtZnB1MCIgInpudmVyNF9mcHUiKQorKGRlZmluZV9j cHVfdW5pdCAiem52ZXI0LWZwdTEiICJ6bnZlcjRfZnB1IikKKyhkZWZpbmVfY3B1X3VuaXQgInpu dmVyNC1mcHUyIiAiem52ZXI0X2ZwdSIpCisoZGVmaW5lX2NwdV91bml0ICJ6bnZlcjQtZnB1MyIg InpudmVyNF9mcHUiKQorCisoZGVmaW5lX3Jlc2VydmF0aW9uICJ6bnZlcjQtZnB1IiAiem52ZXI0 LWZwdTB8em52ZXI0LWZwdTF8em52ZXI0LWZwdTJ8em52ZXI0LWZwdTMiKQorCisoZGVmaW5lX3Jl c2VydmF0aW9uICJ6bnZlcjQtZnZlY3RvciIgInpudmVyNC1mcHUwK3pudmVyNC1mcHUxCisJCQkJ ICAgICAgK3pudmVyNC1mcHUyK3pudmVyNC1mcHUzCisJCQkJICAgICAgK3pudmVyNC1hZ3UwK3pu dmVyNC1hZ3UxK3pudmVyNC1hZ3UyIikKKworOzsgRElWIHVuaXRzCisoZGVmaW5lX2NwdV91bml0 ICJ6bnZlcjQtaWRpdiIgInpudmVyNF9pZGl2IikKKyhkZWZpbmVfY3B1X3VuaXQgInpudmVyNC1m ZGl2IiAiem52ZXI0X2ZkaXYiKQorCis7OyBTZXBhcmF0ZSBmcCBzdG9yZSBhbmQgZnAtdG8taW50 IHN0b3JlLiBBbHRob3VnaCB0aGVyZSBhcmUgMiBzdG9yZSBwaXBlcywgdGhlCis7OyB0aHJvdWdo cHV0IGlzIGxpbWl0ZWQgdG8gb25seSBvbmUgcGVyIGN5Y2xlLgorKGRlZmluZV9jcHVfdW5pdCAi em52ZXI0LWZwLXN0b3JlIiAiem52ZXI0X2ZwX3N0b3JlIikKKworCis7OyBJbnRlZ2VyIEluc3Ry dWN0aW9ucworOzsgTW92ZSBpbnN0cnVjdGlvbnMKKzs7IFhDSEcKKyhkZWZpbmVfaW5zbl9yZXNl cnZhdGlvbiAiem52ZXI0X2ltb3ZfZG91YmxlIiAxCisJCQkoYW5kIChlcV9hdHRyICJjcHUiICJ6 bnZlcjQiKQorCQkJCSAoYW5kIChlcV9hdHRyICJ6bnZlcjFfZGVjb2RlIiAiZG91YmxlIikKKwkJ CQkgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpbW92IikKKwkJCQkgICAoZXFfYXR0ciAibWVtb3J5 IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWlldSIpCisKKyhkZWZpbmVf aW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2ltb3ZfZG91YmxlX2xvYWQiIDUKKwkJCShhbmQgKGVx X2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkJIChhbmQgKGVxX2F0dHIgInpudmVyMV9kZWNvZGUi ICJkb3VibGUiKQorCQkJCSAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImltb3YiKQorCQkJCSAgIChl cV9hdHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRvdWJsZSx6bnZlcjQtbG9h ZCx6bnZlcjQtaWV1IikKKworOzsgaW1vdiwgaW1vdngKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlv biAiem52ZXI0X2ltb3YiIDEKKyAgICAgICAgICAgIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVy NCIpCisJCQkJIChhbmQgKGVxX2F0dHIgInR5cGUiICJpbW92LGltb3Z4IikKKwkJCQkgIChlcV9h dHRyICJtZW1vcnkiICJub25lIikpKQorICAgICAgICAgICAgICJ6bnZlcjQtZGlyZWN0LHpudmVy NC1pZXUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pbW92X2xvYWQiIDUK KwkJCShhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkJIChhbmQgKGVxX2F0dHIgInR5 cGUiICJpbW92LGltb3Z4IikKKwkJCQkgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKQorCQkJ ICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1pZXUiKQorCis7OyBQdXNoIEluc3Ry dWN0aW9uCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9wdXNoIiAxCisJCQkoYW5k IChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAi cHVzaCIpCisJCQkJICAoZXFfYXR0ciAibWVtb3J5IiAic3RvcmUiKSkpCisJCQkgInpudmVyNC1k aXJlY3Qsem52ZXI0LXN0b3JlIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRf cHVzaF9tZW0iIDUKKwkJCShhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkJIChhbmQg KGVxX2F0dHIgInR5cGUiICJwdXNoIikKKwkJCQkgIChlcV9hdHRyICJtZW1vcnkiICJib3RoIikp KQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1zdG9yZSIpCisKKzs7IFBv cCBpbnN0cnVjdGlvbgorKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfcG9wIiA0CisJ CQkoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAoYW5kIChlcV9hdHRyICJ0 eXBlIiAicG9wIikKKwkJCQkgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKQorCQkJICJ6bnZl cjQtZGlyZWN0LHpudmVyNC1sb2FkIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZl cjRfcG9wX21lbSIgNQorICAgICAgICAgICAgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikK KyAgICAgICAgICAgICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInBvcCIpCisgICAgICAgICAg ICAgICAgICAoZXFfYXR0ciAibWVtb3J5IiAiYm90aCIpKSkKKyAgICAgICAgICAgICAiem52ZXI0 LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQtc3RvcmUiKQorCis7OyBJbnRlZ2VyIEluc3RydWN0 aW9ucyBvciBHZW5lcmFsIGluc3RydWN0aW9ucworOzsgTXVsdGlwbGljYXRpb25zCisoZGVmaW5l X2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pbXVsIiAzCisJCQkoYW5kIChlcV9hdHRyICJjcHUi ICJ6bnZlcjQiKQorCQkJICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaW11bCIpCisJCQkJICAo ZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtaWV1 MSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2ltdWxfbG9hZCIgNworCQkJ KGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgKGFuZCAoZXFfYXR0ciAidHlw ZSIgImltdWwiKQorCQkJCSAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpCisJCQkgInpudmVy NC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWlldTEiKQorCis7OyBEaXZpc2lvbnMKKyhkZWZp bmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2lkaXZfREkiIDE4CisJCQkgKGFuZCAoZXFfYXR0 ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpZGl2IikK KwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiREkiKQorCQkJCQkoZXFfYXR0ciAibWVtb3J5 IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWlkaXYqMTAiKQorCisoZGVm aW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pZGl2X1NJIiAxMgorCQkJIChhbmQgKGVxX2F0 dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaWRpdiIp CisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlNJIikKKwkJCQkJKGVxX2F0dHIgIm1lbW9y eSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpudmVyNC1pZGl2KjYiKQorCisoZGVm aW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pZGl2X0hJIiAxMAorCQkJIChhbmQgKGVxX2F0 dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaWRpdiIp CisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIkhJIikKKwkJCQkJKGVxX2F0dHIgIm1lbW9y eSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZG91YmxlLHpudmVyNC1pZGl2KjQiKQorCisoZGVm aW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pZGl2X1FJIiA5CisJCQkgKGFuZCAoZXFfYXR0 ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpZGl2IikK KwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiUUkiKQorCQkJCQkoZXFfYXR0ciAibWVtb3J5 IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWlkaXYqNCIpCisKKyhkZWZp bmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2lkaXZfRElfbG9hZCIgMjIKKwkJCSAoYW5kIChl cV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImlk aXYiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJESSIpCisJCQkJCShlcV9hdHRyICJt ZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRvdWJsZSx6bnZlcjQtbG9hZCx6bnZlcjQt aWRpdioxMCIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2lkaXZfU0lfbG9h ZCIgMTYKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAo ZXFfYXR0ciAidHlwZSIgImlkaXYiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJTSSIp CisJCQkJCShlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRvdWJsZSx6 bnZlcjQtbG9hZCx6bnZlcjQtaWRpdio2IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6 bnZlcjRfaWRpdl9ISV9sb2FkIiAxNAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIp CisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaWRpdiIpCisJCQkJICAgKGFuZCAoZXFf YXR0ciAibW9kZSIgIkhJIikKKwkJCQkJKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJ ICJ6bnZlcjQtZG91YmxlLHpudmVyNC1sb2FkLHpudmVyNC1pZGl2KjQiKQorCisoZGVmaW5lX2lu c25fcmVzZXJ2YXRpb24gInpudmVyNF9pZGl2X1FJX2xvYWQiIDEzCisJCQkgKGFuZCAoZXFfYXR0 ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpZGl2IikK KwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiUUkiKQorCQkJCQkoZXFfYXR0ciAibWVtb3J5 IiAibG9hZCIpKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWxvYWQsem52ZXI0LWlkaXYq NCIpCisKKzs7IElOVEVHRVIvR0VORVJBTCBJbnN0cnVjdGlvbnMKKyhkZWZpbmVfaW5zbl9yZXNl cnZhdGlvbiAiem52ZXI0X2luc24iIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQi KQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImFsdSxhbHUxLG5lZ25vdCxyb3RhdGUx LGlzaGlmdDEsdGVzdCxpbmNkZWMsaWNtcCIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5v bmUsdW5rbm93biIpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtaWV1IikKKworKGRlZmlu ZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfaW5zbl9sb2FkIiA1CisJCQkgKGFuZCAoZXFfYXR0 ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJhbHUsYWx1 MSxuZWdub3Qscm90YXRlMSxpc2hpZnQxLHRlc3QsaW5jZGVjLGljbXAiKQorCQkJCSAgIChlcV9h dHRyICJtZW1vcnkiICJsb2FkIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpu dmVyNC1pZXUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pbnNuMiIgMQor CQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRy ICJ0eXBlIiAiaWNtb3Ysc2V0Y2MiKQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJub25lLHVu a25vd24iKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWlldTB8em52ZXI0LWlldTMiKQor CisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pbnNuMl9sb2FkIiA1CisJCQkgKGFu ZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUi ICJpY21vdixzZXRjYyIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpCisJCQkg InpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWlldTB8em52ZXI0LWlldTMiKQorCiso ZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9yb3RhdGUiIDEKKwkJCSAoYW5kIChlcV9h dHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInJvdGF0 ZSIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUsdW5rbm93biIpKSkKKwkJCSAiem52 ZXI0LWRpcmVjdCx6bnZlcjQtaWV1MXx6bnZlcjQtaWV1MiIpCisKKyhkZWZpbmVfaW5zbl9yZXNl cnZhdGlvbiAiem52ZXI0X3JvdGF0ZV9sb2FkIiA1CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAi em52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJyb3RhdGUiKQorCQkJCSAg IChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1s b2FkLHpudmVyNC1pZXUxfHpudmVyNC1pZXUyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9u ICJ6bnZlcjRfaW5zbl9zdG9yZSIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIp CisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiYWx1LGFsdTEsbmVnbm90LHJvdGF0ZTEs aXNoaWZ0MSx0ZXN0LGluY2RlYyxpY21wIikKKwkJCQkgICAoZXFfYXR0ciAibWVtb3J5IiAic3Rv cmUiKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWlldSx6bnZlcjQtc3RvcmUiKQorCiso ZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pbnNuMl9zdG9yZSIgMQorCQkJIChhbmQg KGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAi aWNtb3Ysc2V0Y2MiKQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJzdG9yZSIpKSkKKwkJCSAi em52ZXI0LWRpcmVjdCx6bnZlcjQtaWV1MHx6bnZlcjQtaWV1Myx6bnZlcjQtc3RvcmUiKQorCiso ZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9yb3RhdGVfc3RvcmUiIDEKKwkJCSAoYW5k IChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIg InJvdGF0ZSIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgInN0b3JlIikpKQorCQkJICJ6bnZl cjQtZGlyZWN0LHpudmVyNC1pZXUxfHpudmVyNC1pZXUyLHpudmVyNC1zdG9yZSIpCisKKzs7IGFs dTEgaW5zdHJ1Y3Rpb25zCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9hbHUxX3Zl Y3RvciIgMworCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5k IChlcV9hdHRyICJ6bnZlcjFfZGVjb2RlIiAidmVjdG9yIikKKwkJCQkgICAoYW5kIChlcV9hdHRy ICJ0eXBlIiAiYWx1MSIpCisJCQkJCShlcV9hdHRyICJtZW1vcnkiICJub25lLHVua25vd24iKSkp KQorCQkJICJ6bnZlcjQtdmVjdG9yLHpudmVyNC1pdmVjdG9yKjMiKQorCisoZGVmaW5lX2luc25f cmVzZXJ2YXRpb24gInpudmVyNF9hbHUxX3ZlY3Rvcl9sb2FkIiA3CisJCQkgKGFuZCAoZXFfYXR0 ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInpudmVyMV9kZWNvZGUi ICJ2ZWN0b3IiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJhbHUxIikKKwkJCQkJKGVx X2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQtdmVjdG9yLHpudmVyNC1sb2Fk LHpudmVyNC1pdmVjdG9yKjMiKQorCis7OyBDYWxsIEluc3RydWN0aW9uCisoZGVmaW5lX2luc25f cmVzZXJ2YXRpb24gInpudmVyNF9jYWxsIiAxCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52 ZXI0IikKKwkJCSAgICAgIChlcV9hdHRyICJ0eXBlIiAiY2FsbCxjYWxsdiIpKQorCQkJICJ6bnZl cjQtZG91YmxlLHpudmVyNC1pZXUwfHpudmVyNC1icnUwLHpudmVyNC1zdG9yZSIpCisKKzs7IEJy YW5jaGVzCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9icmFuY2giIDEKKwkJCSAo YW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlw ZSIgImliciIpCisJCQkJCShlcV9hdHRyICJtZW1vcnkiICJub25lIikpKQorCQkJICAiem52ZXI0 LWRpcmVjdCx6bnZlcjQtaWV1MHx6bnZlcjQtYnJ1MCIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZh dGlvbiAiem52ZXI0X2JyYW5jaF9sb2FkIiA1CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52 ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpYnIiKQorCQkJCQkoZXFfYXR0 ciAibWVtb3J5IiAibG9hZCIpKSkKKwkJCSAgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52 ZXI0LWlldTB8em52ZXI0LWJydTAiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVy NF9icmFuY2hfdmVjdG9yIiAyCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJ CSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpYnIiKQorCQkJCQkoZXFfYXR0ciAibWVtb3J5 IiAibm9uZSx1bmtub3duIikpKQorCQkJICAiem52ZXI0LXZlY3Rvcix6bnZlcjQtaXZlY3Rvcioy IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfYnJhbmNoX3ZlY3Rvcl9sb2Fk IiA2CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVx X2F0dHIgInR5cGUiICJpYnIiKQorCQkJCQkoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkKKwkJ CSAgInpudmVyNC12ZWN0b3Isem52ZXI0LWxvYWQsem52ZXI0LWl2ZWN0b3IqMiIpCisKKzs7IExF QSBpbnN0cnVjdGlvbiB3aXRoIHNpbXBsZSBhZGRyZXNzaW5nCisoZGVmaW5lX2luc25fcmVzZXJ2 YXRpb24gInpudmVyNF9sZWEiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQor CQkJICAgICAgKGVxX2F0dHIgInR5cGUiICJsZWEiKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZl cjQtaWV1IikKKworOzsgTGVhdmUKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2xl YXZlIiAxCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChlcV9h dHRyICJ0eXBlIiAibGVhdmUiKSkKKwkJCSAiem52ZXI0LWRvdWJsZSx6bnZlcjQtaWV1LHpudmVy NC1zdG9yZSIpCisKKzs7IFNUUiBhbmQgSVNISUZUIGFyZSBtaWNyb2NvZGVkLgorKGRlZmluZV9p bnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3RyIiAzCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAi em52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzdHIiKQorCQkJCSAgIChl cV9hdHRyICJtZW1vcnkiICJub25lIikpKQorCQkJICJ6bnZlcjQtdmVjdG9yLHpudmVyNC1pdmVj dG9yKjMiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zdHJfbG9hZCIgNwor CQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRy ICJ0eXBlIiAic3RyIikKKwkJCQkgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkKKwkJCSAi em52ZXI0LXZlY3Rvcix6bnZlcjQtbG9hZCx6bnZlcjQtaXZlY3RvciozIikKKworKGRlZmluZV9p bnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfaXNoaWZ0IiAyCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1 IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpc2hpZnQiKQorCQkJ CSAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKQorCQkJICJ6bnZlcjQtdmVjdG9yLHpudmVy NC1pdmVjdG9yKjIiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pc2hpZnRf bG9hZCIgNgorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5k IChlcV9hdHRyICJ0eXBlIiAiaXNoaWZ0IikKKwkJCQkgICAoZXFfYXR0ciAibWVtb3J5IiAibG9h ZCIpKSkKKwkJCSAiem52ZXI0LXZlY3Rvcix6bnZlcjQtbG9hZCx6bnZlcjQtaXZlY3RvcioyIikK KworOzsgT3RoZXIgdmVjdG9yIHR5cGUKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0 X2lldV92ZWN0b3IiIDUKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAg ICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgIm90aGVyLG11bHRpIikKKwkJCQkgICAoZXFfYXR0ciAi bWVtb3J5IiAibm9uZSx1bmtub3duIikpKQorCQkJICJ6bnZlcjQtdmVjdG9yLHpudmVyNC1pdmVj dG9yKjUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9pZXVfdmVjdG9yX2xv YWQiIDkKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAo ZXFfYXR0ciAidHlwZSIgIm90aGVyLG11bHRpIikKKwkJCQkgICAoZXFfYXR0ciAibWVtb3J5IiAi bG9hZCIpKSkKKwkJCSAiem52ZXI0LXZlY3Rvcix6bnZlcjQtbG9hZCx6bnZlcjQtaXZlY3Rvcio1 IikKKworOzsgRmxvYXRpbmcgUG9pbnQKKzs7IEZQIG1vdnMKKyhkZWZpbmVfaW5zbl9yZXNlcnZh dGlvbiAiem52ZXI0X2ZwX2Ntb3YiIDQKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQi KQorCQkJICAgICAgKGVxX2F0dHIgInR5cGUiICJmY21vdiIpKQorCQkJICJ6bnZlcjQtdmVjdG9y LHpudmVyNC1mdmVjdG9yKjMiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9m cF9tb3ZfZGlyZWN0IiAxCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAg ICAgIChlcV9hdHRyICJ0eXBlIiAiZm1vdiIpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1m cHUwfHpudmVyNC1mcHUxIikKKworOztGTEQKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52 ZXI0X2ZwX21vdl9kaXJlY3RfbG9hZCIgNgorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVy NCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ6bnZlcjFfZGVjb2RlIiAiZGlyZWN0IikKKwkJ CQkgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiZm1vdiIpCisJCQkJCShlcV9hdHRyICJtZW1vcnki ICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1MHx6 bnZlcjQtZnB1MSIpCisKKzs7RlNUCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9m cF9tb3ZfZGlyZWN0X3N0b3JlIiA2CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikK KwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInpudmVyMV9kZWNvZGUiICJkaXJlY3QiKQorCQkJCSAg IChhbmQgKGVxX2F0dHIgInR5cGUiICJmbW92IikKKwkJCQkJKGVxX2F0dHIgIm1lbW9yeSIgInN0 b3JlIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MHx6bnZlcjQtZnB1MSx6bnZl cjQtZnAtc3RvcmUiKQorCis7O0ZJTEQKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0 X2ZwX21vdl9kb3VibGVfbG9hZCIgMTMKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQi KQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAiem52ZXIxX2RlY29kZSIgImRvdWJsZSIpCisJCQkJ ICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImZtb3YiKQorCQkJCQkoZXFfYXR0ciAibWVtb3J5IiAi bG9hZCIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdTEiKQor Cis7O0ZJU1QKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X2ZwX21vdl9kb3VibGVf c3RvcmUiIDcKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFu ZCAoZXFfYXR0ciAiem52ZXIxX2RlY29kZSIgImRvdWJsZSIpCisJCQkJICAgKGFuZCAoZXFfYXR0 ciAidHlwZSIgImZtb3YiKQorCQkJCQkoZXFfYXR0ciAibWVtb3J5IiAic3RvcmUiKSkpKQorCQkJ ICJ6bnZlcjQtZG91YmxlLHpudmVyNC1mcHUxLHpudmVyNC1mcC1zdG9yZSIpCisKKzs7IEZTUVJU CisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9mc3FydCIgMjIKKwkJCSAoYW5kIChl cV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImZw c3BjIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiWEYiKQorCQkJCQkoZXFfYXR0ciAi bWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZkaXYqMTAiKQor Cis7OyBGUFNQQyBpbnN0cnVjdGlvbnMKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0 X2ZwX3NwYyIgNgorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAo YW5kIChlcV9hdHRyICJ0eXBlIiAiZnBzcGMiKQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJu b25lIikpKQorCQkJICJ6bnZlcjQtdmVjdG9yLHpudmVyNC1mdmVjdG9yKjYiKQorCisoZGVmaW5l X2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9mcF9pbnNuX3ZlY3RvciIgNgorCQkJIChhbmQgKGVx X2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ6bnZlcjFfZGVj b2RlIiAidmVjdG9yIikKKwkJCQkgICAoZXFfYXR0ciAidHlwZSIgIm1teGN2dCxzc2Vsb2cxLHNz ZW1vdiIpKSkKKwkJCSAiem52ZXI0LXZlY3Rvcix6bnZlcjQtZnZlY3Rvcio2IikKKworOzsgRkFE RCwgRlNVQiwgRk1VTAorKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfZnBfb3BfbXVs IiA3CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVx X2F0dHIgInR5cGUiICJmb3AsZm11bCIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUi KSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZwdTAiKQorCisoZGVmaW5lX2luc25fcmVz ZXJ2YXRpb24gInpudmVyNF9mcF9vcF9tdWxfbG9hZCIgMTIKKwkJCSAoYW5kIChlcV9hdHRyICJj cHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImZvcCxmbXVsIikK KwkJCQkgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6 bnZlcjQtbG9hZCx6bnZlcjQtZnB1MCIpCisKKzs7IEZESVYKKyhkZWZpbmVfaW5zbl9yZXNlcnZh dGlvbiAiem52ZXI0X2ZwX2RpdiIgMTUKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQi KQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImZkaXYiKQorCQkJCSAgIChlcV9hdHRy ICJtZW1vcnkiICJub25lIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mZGl2KjYiKQor CisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9mcF9kaXZfbG9hZCIgMjAKKwkJCSAo YW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlw ZSIgImZkaXYiKQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKQorCQkJICJ6bnZl cjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mZGl2KjYiKQorCisoZGVmaW5lX2luc25fcmVz ZXJ2YXRpb24gInpudmVyNF9mcF9pZGl2X2xvYWQiIDI0CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1 IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJmZGl2IikKKwkJCQkg ICAoYW5kIChlcV9hdHRyICJmcF9pbnRfc3JjIiAidHJ1ZSIpCisJCQkJCShlcV9hdHRyICJtZW1v cnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRvdWJsZSx6bnZlcjQtbG9hZCx6bnZlcjQtZmRp dio2IikKKworOzsgRkFCUywgRkNIUworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRf ZnBfZnNnbiIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAo ZXFfYXR0ciAidHlwZSIgImZzZ24iKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MHx6 bnZlcjQtZnB1MSIpCisKKzs7IEZDTVAKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0 X2ZwX2ZjbXAiIDMKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAg KGFuZCAoZXFfYXR0ciAidHlwZSIgImZjbXAiKQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJu b25lIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUxIikKKworKGRlZmluZV9pbnNu X3Jlc2VydmF0aW9uICJ6bnZlcjRfZnBfZmNtcF9kb3VibGUiIDQKKwkJCSAoYW5kIChlcV9hdHRy ICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImZjbXAiKQor CQkJCSAgIChhbmQgKGVxX2F0dHIgInpudmVyMV9kZWNvZGUiICJkb3VibGUiKQorCQkJCQkoZXFf YXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kb3VibGUsem52ZXI0LWZwdTEs em52ZXI0LWZwdTIiKQorCis7OyBNTVgsIFNTRSwgU1NFbi5uIGluc3RydWN0aW9ucworKGRlZmlu ZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfZnBfbW14CSIgMQorCQkJIChhbmQgKGVxX2F0dHIg ImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoZXFfYXR0ciAidHlwZSIgIm1teCIpKQorCQkJICJ6 bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUxfHpudmVyNC1mcHUyIikKKworKGRlZmluZV9pbnNuX3Jl c2VydmF0aW9uICJ6bnZlcjRfbW14X2FkZF9jbXAiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUi ICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgIm1teGFkZCxtbXhjbXAi KQorCQkJCSAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0 LHpudmVyNC1mcHUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9tbXhfYWRk X2NtcF9sb2FkIiA2CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAg IChhbmQgKGVxX2F0dHIgInR5cGUiICJtbXhhZGQsbW14Y21wIikKKwkJCQkgICAoZXFfYXR0ciAi bWVtb3J5IiAibG9hZCIpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQt ZnB1IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfbW14X2luc24iIDEKKwkJ CSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAi dHlwZSIgIm1teGN2dCxzc2VzaHVmLHNzZXNodWYxLG1teHNoZnQiKQorCQkJCSAgIChlcV9hdHRy ICJtZW1vcnkiICJub25lIikpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUxfHpudmVy NC1mcHUyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfbW14X2luc25fbG9h ZCIgNgorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChl cV9hdHRyICJ0eXBlIiAibW14Y3Z0LHNzZXNodWYsc3Nlc2h1ZjEsbW14c2hmdCIpCisJCQkJICAg KGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxv YWQsem52ZXI0LWZwdTF8em52ZXI0LWZwdTIiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24g InpudmVyNF9tbXhfbW92IiAxCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJ CSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJtbXhtb3YiKQorCQkJCSAgIChlcV9hdHRyICJt ZW1vcnkiICJzdG9yZSIpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnAtc3RvcmUiKQor CisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9tbXhfbW92X2xvYWQiIDYKKwkJCSAo YW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlw ZSIgIm1teG1vdiIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgImJvdGgiKSkpCisJCQkgInpu dmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwLXN0b3JlIikKKworKGRlZmluZV9pbnNu X3Jlc2VydmF0aW9uICJ6bnZlcjRfbW14X211bCIgMworCQkJIChhbmQgKGVxX2F0dHIgImNwdSIg InpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAibW14bXVsIikKKwkJCQkg ICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkKKwkJCSAgInpudmVyNC1kaXJlY3Qsem52ZXI0 LWZwdTB8em52ZXI0LWZwdTMiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9t bXhfbXVsX2xvYWQiIDgKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAg ICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgIm1teG11bCIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9y eSIgImxvYWQiKSkpCisJCQkgICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUw fHpudmVyNC1mcHUzIikKKworOzsgQVZYIGluc3RydWN0aW9ucworKGRlZmluZV9pbnNuX3Jlc2Vy dmF0aW9uICJ6bnZlcjRfc3NlX2xvZyIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVy NCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlbG9nIikKKwkJCQkgICAoYW5k IChlcV9hdHRyICJtb2RlIiAiVjRTRixWOFNGLFYyREYsVjRERixRSSxISSxTSSxESSxUSSxPSSIp CisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVj dCx6bnZlcjQtZnB1IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2xv Z19sb2FkIiA2CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChh bmQgKGVxX2F0dHIgInR5cGUiICJzc2Vsb2ciKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUi ICJWNFNGLFY4U0YsVjJERixWNERGLFFJLEhJLFNJLERJLFRJLE9JIikKKwkJCQkgICAgKGVxX2F0 dHIgIm1lbW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpu dmVyNC1mcHUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfbG9nMSIg MQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9h dHRyICJ0eXBlIiAic3NlbG9nMSIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlY0U0Ys VjhTRixWMkRGLFY0REYsUUksSEksU0ksREksVEksT0kiKQorCQkJCSAgICAoZXFfYXR0ciAibWVt b3J5IiAic3RvcmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUxfHpudmVyNC1m cHUyLHpudmVyNC1mcC1zdG9yZSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0 X3NzZV9sb2cxX2xvYWQiIDYKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJ ICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWxvZzEiKQorCQkJCSAgIChhbmQgKGVxX2F0 dHIgIm1vZGUiICJWNFNGLFY4U0YsVjJERixWNERGLFFJLEhJLFNJLERJLFRJLE9JIikKKwkJCQkg ICAgKGVxX2F0dHIgIm1lbW9yeSIgImJvdGgiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVy NC1sb2FkLHpudmVyNC1mcHUxfHpudmVyNC1mcHUyLHpudmVyNC1mcC1zdG9yZSIpCisKKyhkZWZp bmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9jb21pIiAxCisJCQkgKGFuZCAoZXFfYXR0 ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2Vjb21p IikKKwkJCQkgICAoZXFfYXR0ciAibWVtb3J5IiAic3RvcmUiKSkpCisJCQkgInpudmVyNC1kb3Vi bGUsem52ZXI0LWZwdTJ8em52ZXI0LWZwdTMsem52ZXI0LWZwLXN0b3JlIikKKworKGRlZmluZV9p bnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2NvbWlfbG9hZCIgNgorCQkJIChhbmQgKGVxX2F0 dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlY29t aSIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgImJvdGgiKSkpCisJCQkgInpudmVyNC1kb3Vi bGUsem52ZXI0LWxvYWQsem52ZXI0LWZwdTJ8em52ZXI0LWZwdTMsem52ZXI0LWZwLXN0b3JlIikK KworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX3Rlc3QiIDEKKwkJCSAoYW5k IChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAicHJlZml4 X2V4dHJhIiAiMSIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWNvbWkiKQorCQkJ CQkoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0 LWZwdTF8em52ZXI0LWZwdTIiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9z c2VfdGVzdF9sb2FkIiA2CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAg ICAgIChhbmQgKGVxX2F0dHIgInByZWZpeF9leHRyYSIgIjEiKQorCQkJCSAgIChhbmQgKGVxX2F0 dHIgInR5cGUiICJzc2Vjb21pIikKKwkJCQkJKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQor CQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUxfHpudmVyNC1mcHUyIikK KworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2ltdWwiIDMKKwkJCSAoYW5k IChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIg InNzZWltdWwiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJRSSxISSxTSSxESSxUSSxP SSIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRp cmVjdCx6bnZlcjQtZnB1MHx6bnZlcjQtZnB1MyIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlv biAiem52ZXI0X3NzZV9pbXVsX2xvYWQiIDgKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZl cjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWltdWwiKQorCQkJCSAgIChh bmQgKGVxX2F0dHIgIm1vZGUiICJRSSxISSxTSSxESSxUSSxPSSIpCisJCQkJICAgIChlcV9hdHRy ICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZl cjQtZnB1MHx6bnZlcjQtZnB1MSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0 X3NzZV9tb3YiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAg KGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZW1vdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9k ZSIgIlFJLEhJLFNJLERJLFRJLE9JIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUi KSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUxfHpudmVyNC1mcHUyIikKKworKGRl ZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX21vdl9sb2FkIiA2CisJCQkgKGFuZCAo ZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJz c2Vtb3YiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJRSSxISSxTSSxESSxUSSxPSSIp CisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRpcmVj dCx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1MXx6bnZlcjQtZnB1MiIpCisKKyhkZWZpbmVfaW5zbl9y ZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9tb3Zfc3RvcmUiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJj cHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZW1vdiIpCisJ CQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlFJLEhJLFNJLERJLFRJLE9JIikKKwkJCQkgICAg KGVxX2F0dHIgIm1lbW9yeSIgInN0b3JlIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQt ZnB1MXx6bnZlcjQtZnB1Mix6bnZlcjQtZnAtc3RvcmUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2 YXRpb24gInpudmVyNF9zc2VfbW92X2ZwIiAxCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52 ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2Vtb3YiKQorCQkJCSAgIChh bmQgKGVxX2F0dHIgIm1vZGUiICJWMTZTRixWOERGLFY4U0YsVjRERixWNFNGLFYyREYsVjJTRixW MURGLFNGIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZl cjQtZGlyZWN0LHpudmVyNC1mcHUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVy NF9zc2VfbW92X2ZwX2xvYWQiIDYKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQor CQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZW1vdiIpCisJCQkJICAgKGFuZCAoZXFf YXR0ciAibW9kZSIgIlYxNlNGLFY4REYsVjhTRixWNERGLFY0U0YsVjJERixWMlNGLFYxREYsU0Yi KQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpudmVyNC1kaXJl Y3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAi em52ZXI0X3NzZV9tb3ZfZnBfc3RvcmUiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZl cjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZW1vdiIpCisJCQkJICAgKGFu ZCAoZXFfYXR0ciAibW9kZSIgIlYxNlNGLFY4REYsVjhTRixWNERGLFY0U0YsVjJERixWMlNGLFYx REYsU0YiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAic3RvcmUiKSkpKQorCQkJICJ6bnZl cjQtZGlyZWN0LHpudmVyNC1mcC1zdG9yZSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAi em52ZXI0X3NzZV9hZGQiIDMKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJ ICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWFkZCIpCisJCQkJICAgKGFuZCAoZXFfYXR0 ciAibW9kZSIgIlY4U0YsVjRERixWNFNGLFYyREYsVjJTRixWMURGLFNGIikKKwkJCQkgICAgKGVx X2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUy fHpudmVyNC1mcHUzIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2Fk ZF9sb2FkIiA4CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChh bmQgKGVxX2F0dHIgInR5cGUiICJzc2VhZGQiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUi ICJWOFNGLFY0REYsVjRTRixWMkRGLFYyU0YsVjFERixTRiIpCisJCQkJICAgIChlcV9hdHRyICJt ZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQt ZnB1Mnx6bnZlcjQtZnB1MyIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3Nz ZV9hZGQxIiA0CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChh bmQgKGVxX2F0dHIgInR5cGUiICJzc2VhZGQxIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2Rl IiAiVjhTRixWNERGLFY0U0YsVjJERixWMlNGLFYxREYsU0YiKQorCQkJCSAgICAoZXFfYXR0ciAi bWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC12ZWN0b3Isem52ZXI0LWZ2ZWN0b3IqMiIp CisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9hZGQxX2xvYWQiIDkKKwkJ CSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAi dHlwZSIgInNzZWFkZDEiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWOFNGLFY0REYs VjRTRixWMkRGLFYyU0YsVjFERixTRiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJsb2Fk IikpKSkKKwkJCSAiem52ZXI0LXZlY3Rvcix6bnZlcjQtbG9hZCx6bnZlcjQtZnZlY3RvcioyIikK KworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2lhZGQiIDEKKwkJCSAoYW5k IChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIg InNzZWlhZGQiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJRSSxISSxTSSxESSxUSSxP SSIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRp cmVjdCx6bnZlcjQtZnB1IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3Nl X2lhZGRfbG9hZCIgNgorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAg ICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlaWFkZCIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAi bW9kZSIgIlFJLEhJLFNJLERJLFRJLE9JIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxv YWQiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUiKQorCiso ZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfbXVsIiAzCisJCQkgKGFuZCAoZXFf YXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2Vt dWwiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWOFNGLFY0REYsVjRTRixWMkRGLFYy U0YsVjFERixTRiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAi em52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MHx6bnZlcjQtZnB1MSIpCisKKyhkZWZpbmVfaW5zbl9y ZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9tdWxfbG9hZCIgOAorCQkJIChhbmQgKGVxX2F0dHIgImNw dSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlbXVsIikKKwkJ CQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjhTRixWNERGLFY0U0YsVjJERixWMlNGLFYxREYs U0YiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpudmVyNC1k aXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdTB8em52ZXI0LWZwdTEiKQorCisoZGVmaW5lX2lu c25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfZGl2X3BkIiAxMworCQkJIChhbmQgKGVxX2F0dHIg ImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlZGl2IikK KwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjRERixWMkRGLFYxREYiKQorCQkJCSAgICAo ZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZk aXYqNSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9kaXZfcHMiIDEw CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0 dHIgInR5cGUiICJzc2VkaXYiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWOFNGLFY0 U0YsVjJTRixTRiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAi em52ZXI0LWRpcmVjdCx6bnZlcjQtZmRpdiozIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9u ICJ6bnZlcjRfc3NlX2Rpdl9wZF9sb2FkIiAxOAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpu dmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlZGl2IikKKwkJCQkgICAo YW5kIChlcV9hdHRyICJtb2RlIiAiVjRERixWMkRGLFYxREYiKQorCQkJCSAgICAoZXFfYXR0ciAi bWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0 LWZkaXYqNSIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9kaXZfcHNf bG9hZCIgMTUKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFu ZCAoZXFfYXR0ciAidHlwZSIgInNzZWRpdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIg IlY4U0YsVjRTRixWMlNGLFNGIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkp KQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mZGl2KjMiKQorCisoZGVm aW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfY21wX2F2eCIgMQorCQkJIChhbmQgKGVx X2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3Nl Y21wIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJwcmVmaXgiICJ2ZXgiKQorCQkJCSAgICAoZXFf YXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZwdTB8 em52ZXI0LWZwdTEiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfY21w X2F2eF9sb2FkIiA2CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAg IChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VjbXAiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgInBy ZWZpeCIgInZleCIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAi em52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1MHx6bnZlcjQtZnB1MSIpCisKKyhk ZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9jb21pX2F2eCIgMQorCQkJIChhbmQg KGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAi c3NlY29taSIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgInN0b3JlIikpKQorCQkJICJ6bnZl cjQtZGlyZWN0LHpudmVyNC1mcHUyK3pudmVyNC1mcHUzLHpudmVyNC1mcC1zdG9yZSIpCisKKyhk ZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9jb21pX2F2eF9sb2FkIiA2CisJCQkg KGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5 cGUiICJzc2Vjb21pIikKKwkJCQkgICAoZXFfYXR0ciAibWVtb3J5IiAiYm90aCIpKSkKKwkJCSAi em52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1Mit6bnZlcjQtZnB1Myx6bnZlcjQt ZnAtc3RvcmUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfY3Z0IiAz CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0 dHIgInR5cGUiICJzc2VjdnQiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWOFNGLFY0 REYsVjRTRixWMkRGLFYyU0YsVjFERixTRiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJu b25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1Mnx6bnZlcjQtZnB1MyIpCisK KyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9jdnRfbG9hZCIgOAorCQkJIChh bmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBl IiAic3NlY3Z0IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjhTRixWNERGLFY0U0Ys VjJERixWMlNGLFYxREYsU0YiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkp CisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdTJ8em52ZXI0LWZwdTMi KQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfaWN2dCIgMworCQkJIChh bmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBl IiAic3NlY3Z0IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiU0kiKQorCQkJCSAgICAo ZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZw dTJ8em52ZXI0LWZwdTMiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2Vf aWN2dF9zdG9yZSIgNAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAg ICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlY3Z0IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJt b2RlIiAiU0kiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAic3RvcmUiKSkpKQorCQkJICJ6 bnZlcjQtZG91YmxlLHpudmVyNC1mcHUyfHpudmVyNC1mcHUzLHpudmVyNC1mcC1zdG9yZSIpCisK KyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9zaHVmIiAxCisJCQkgKGFuZCAo ZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJz c2VzaHVmIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjhTRixWNERGLFY0U0YsVjJE RixWMlNGLFYxREYsU0YiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJ CQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZwdTF8em52ZXI0LWZwdTIiKQorCisoZGVmaW5lX2lu c25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2Vfc2h1Zl9sb2FkIiA2CisJCQkgKGFuZCAoZXFfYXR0 ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VzaHVm IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjhTRixWNERGLFY0U0YsVjJERixWMlNG LFYxREYsU0YiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpu dmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdSIpCisKKyhkZWZpbmVfaW5zbl9yZXNl cnZhdGlvbiAiem52ZXI0X3NzZV9pc2h1ZiIgMworCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpu dmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3Nlc2h1ZiIpCisJCQkJICAg KGFuZCAoZXFfYXR0ciAibW9kZSIgIk9JIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5v bmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUxfHpudmVyNC1mcHUyIikKKwor KGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2lzaHVmX2xvYWQiIDgKKwkJCSAo YW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlw ZSIgInNzZXNodWYiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJPSSIpCisJCQkJICAg IChlcV9hdHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQt bG9hZCx6bnZlcjQtZnB1MXx6bnZlcjQtZnB1MiIpCisKKzs7IEFWWDUxMiBpbnN0cnVjdGlvbnMK KyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9sb2dfZXZleCIgMQorCQkJIChh bmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBl IiAic3NlbG9nIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjE2U0YsVjhERixYSSIp CisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVj dCx6bnZlcjQtZnB1MCoyfHpudmVyNC1mcHUxKjJ8em52ZXI0LWZwdTIqMnx6bnZlcjQtZnB1Myoy IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2xvZ19ldmV4X2xvYWQi IDcKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFf YXR0ciAidHlwZSIgInNzZWxvZyIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlYxNlNG LFY4REYsWEkiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpu dmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdTAqMnx6bnZlcjQtZnB1MSoyfHpudmVy NC1mcHUyKjJ8em52ZXI0LWZwdTMqMiIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52 ZXI0X3NzZV9sb2cxX2V2ZXgiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQor CQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWxvZzEiKQorCQkJCSAgIChhbmQgKGVx X2F0dHIgIm1vZGUiICJWMTZTRixWOERGLFhJIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIg Im5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUxKjJ8em52ZXI0LWZwdTIq Mix6bnZlcjQtZnAtc3RvcmUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9z c2VfbG9nMV9ldmV4X2xvYWQiIDcKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQor CQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWxvZzEiKQorCQkJCSAgIChhbmQgKGVx X2F0dHIgIm1vZGUiICJWMTZTRixWOERGLFhJIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIg ImxvYWQiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUxKjJ8 em52ZXI0LWZwdTIqMix6bnZlcjQtZnAtc3RvcmUiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRp b24gInpudmVyNF9zc2VfbXVsX2V2ZXgiIDMKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZl cjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZW11bCIpCisJCQkJICAgKGFu ZCAoZXFfYXR0ciAibW9kZSIgIlYxNlNGLFY4REYiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5 IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZwdTAqMnx6bnZlcjQtZnB1 MSoyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX211bF9ldmV4X2xv YWQiIDkKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAo ZXFfYXR0ciAidHlwZSIgInNzZW11bCIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlYx NlNGLFY4REYiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpu dmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdTAqMnx6bnZlcjQtZnB1MSoyIikKKwor KGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2ltdWxfZXZleCIgMworCQkJIChh bmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBl IiAic3NlaW11bCIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlhJIikKKwkJCQkgICAg KGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1m cHUwKjJ8em52ZXI0LWZwdTMqMiIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0 X3NzZV9pbXVsX2V2ZXhfbG9hZCIgOQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIp CisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NlaW11bCIpCisJCQkJICAgKGFuZCAo ZXFfYXR0ciAibW9kZSIgIlhJIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkp KQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUwKjJ8em52ZXI0LWZw dTEqMiIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9tb3ZfZXZleCIg NAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9h dHRyICJ0eXBlIiAic3NlbW92IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiWEkiKQor CQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qs em52ZXI0LWZwdTEqMnx6bnZlcjQtZnB1MioyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9u ICJ6bnZlcjRfc3NlX21vdl9ldmV4X2xvYWQiIDEwCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAi em52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2Vtb3YiKQorCQkJCSAg IChhbmQgKGVxX2F0dHIgIm1vZGUiICJYSSIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJs b2FkIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6bnZlcjQtZnB1MSoyfHpu dmVyNC1mcHUyKjIiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfbW92 X2V2ZXhfc3RvcmUiIDUKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAg ICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZW1vdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAi bW9kZSIgIlhJIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgInN0b3JlIikpKSkKKwkJCSAi em52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MSoyfHpudmVyNC1mcHUyKjIsem52ZXI0LWZwLXN0b3Jl IikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2FkZF9ldmV4IiAzCisJ CQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIg InR5cGUiICJzc2VhZGQiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWMTZTRixWOERG IikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGly ZWN0LHpudmVyNC1mcHUyKjJ8em52ZXI0LWZwdTMqMiIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZh dGlvbiAiem52ZXI0X3NzZV9hZGRfZXZleF9sb2FkIiA5CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1 IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VhZGQiKQorCQkJ CSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWMTZTRixWOERGIikKKwkJCQkgICAgKGVxX2F0dHIg Im1lbW9yeSIgImxvYWQiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVy NC1mcHUyKjJ8em52ZXI0LWZwdTMqMiIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52 ZXI0X3NzZV9pYWRkX2V2ZXgiIDEKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQor CQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWlhZGQiKQorCQkJCSAgIChhbmQgKGVx X2F0dHIgIm1vZGUiICJYSSIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkK KwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MCoyfHpudmVyNC1mcHUxKjJ8em52ZXI0LWZw dTIqMnx6bnZlcjQtZnB1MyoyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRf c3NlX2lhZGRfZXZleF9sb2FkIiA3CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikK KwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VpYWRkIikKKwkJCQkgICAoYW5kIChl cV9hdHRyICJtb2RlIiAiWEkiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkp CisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdTAqMnx6bnZlcjQtZnB1 MSoyfHpudmVyNC1mcHUyKjJ8em52ZXI0LWZwdTMqMiIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZh dGlvbiAiem52ZXI0X3NzZV9kaXZfcGRfZXZleCIgMTMKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUi ICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWRpdiIpCisJCQkJ ICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlY4REYiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5 IiAibm9uZSIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZkaXYqOSIpCisKKyhkZWZp bmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9kaXZfcHNfZXZleCIgMTAKKwkJCSAoYW5k IChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIg InNzZWRpdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlYxNlNGIikKKwkJCQkgICAg KGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1m ZGl2KjYiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfZGl2X3BkX2V2 ZXhfbG9hZCIgMTkKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAg KGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWRpdiIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9k ZSIgIlY4REYiKQorCQkJCSAgICAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpu dmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZkaXYqOSIpCisKKyhkZWZpbmVfaW5zbl9y ZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9kaXZfcHNfZXZleF9sb2FkIiAxNgorCQkJIChhbmQgKGVx X2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3Nl ZGl2IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjE2U0YiKQorCQkJCSAgICAoZXFf YXR0ciAibWVtb3J5IiAibG9hZCIpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQs em52ZXI0LWZkaXYqNiIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9j bXBfYXZ4MTI4IiAzCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAg IChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VjbXAiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1v ZGUiICJWNFNGLFYyREYsVjJTRixWMURGLFNGIikKKwkJCQkgICAgKGFuZCAoZXFfYXR0ciAicHJl Zml4IiAiZXZleCIpCisJCQkJCSAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkpKQorCQkJICJ6 bnZlcjQtZGlyZWN0LHpudmVyNC1mcHUwKjJ8em52ZXI0LWZwdTEqMiIpCisKKyhkZWZpbmVfaW5z bl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9jbXBfYXZ4MTI4X2xvYWQiIDkKKwkJCSAoYW5kIChl cV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNz ZWNtcCIpCisJCQkJICAgKGFuZCAoZXFfYXR0ciAibW9kZSIgIlY0U0YsVjJERixWMlNGLFYxREYs U0YiKQorCQkJCSAgICAoYW5kIChlcV9hdHRyICJwcmVmaXgiICJldmV4IikKKwkJCQkJIChlcV9h dHRyICJtZW1vcnkiICJsb2FkIikpKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQs em52ZXI0LWZwdTAqMnx6bnZlcjQtZnB1MSoyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9u ICJ6bnZlcjRfc3NlX2NtcF9hdngyNTYiIDQKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZl cjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInNzZWNtcCIpCisJCQkJICAgKGFu ZCAoZXFfYXR0ciAibW9kZSIgIlY4U0YsVjRERiIpCisJCQkJICAgIChhbmQgKGVxX2F0dHIgInBy ZWZpeCIgImV2ZXgiKQorCQkJCQkgKGVxX2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpKSkKKwkJCSAi em52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MCoyfHpudmVyNC1mcHUxKjIiKQorCisoZGVmaW5lX2lu c25fcmVzZXJ2YXRpb24gInpudmVyNF9zc2VfY21wX2F2eDI1Nl9sb2FkIiAxMAorCQkJIChhbmQg KGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAi c3NlY21wIikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjhTRixWNERGIikKKwkJCQkg ICAgKGFuZCAoZXFfYXR0ciAicHJlZml4IiAiZXZleCIpCisJCQkJCSAoZXFfYXR0ciAibWVtb3J5 IiAibG9hZCIpKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUw KjJ8em52ZXI0LWZwdTEqMiIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3Nz ZV9jbXBfYXZ4NTEyIiA1CisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAg ICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VjbXAiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIg Im1vZGUiICJWMTZTRixWOERGIikKKwkJCQkgICAgKGFuZCAoZXFfYXR0ciAicHJlZml4IiAiZXZl eCIpCisJCQkJCSAoZXFfYXR0ciAibWVtb3J5IiAibm9uZSIpKSkpKQorCQkJICJ6bnZlcjQtZGly ZWN0LHpudmVyNC1mcHUwKjJ8em52ZXI0LWZwdTEqMiIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZh dGlvbiAiem52ZXI0X3NzZV9jbXBfYXZ4NTEyX2xvYWQiIDExCisJCQkgKGFuZCAoZXFfYXR0ciAi Y3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VjbXAiKQor CQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJWMTZTRixWOERGIikKKwkJCQkgICAgKGFuZCAo ZXFfYXR0ciAicHJlZml4IiAiZXZleCIpCisJCQkJCSAoZXFfYXR0ciAibWVtb3J5IiAibG9hZCIp KSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUwKjJ8em52ZXI0 LWZwdTEqMiIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9jdnRfZXZl eCIgNgorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChl cV9hdHRyICJ0eXBlIiAic3NlY3Z0IikKKwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjE2 U0YsVjhERiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52 ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MSoyfHpudmVyNC1mcHUyKjIsem52ZXI0LWZwdTIqMnx6bnZl cjQtZnB1MyoyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2N2dF9l dmV4X2xvYWQiIDEyCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52ZXI0IikKKwkJCSAgICAg IChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VjdnQiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1v ZGUiICJWMTZTRixWOERGIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpKQor CQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUxKjJ8em52ZXI0LWZwdTIq Mix6bnZlcjQtZnB1MioyfHpudmVyNC1mcHUzKjIiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRp b24gInpudmVyNF9zc2Vfc2h1Zl9ldmV4IiAxCisJCQkgKGFuZCAoZXFfYXR0ciAiY3B1IiAiem52 ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VzaHVmIikKKwkJCQkgICAo YW5kIChlcV9hdHRyICJtb2RlIiAiVjE2U0YsVjhERiIpCisJCQkJICAgIChlcV9hdHRyICJtZW1v cnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MCoyfHpudmVyNC1m cHUxKjJ8em52ZXI0LWZwdTIqMnx6bnZlcjQtZnB1MyoyIikKKworKGRlZmluZV9pbnNuX3Jlc2Vy dmF0aW9uICJ6bnZlcjRfc3NlX3NodWZfZXZleF9sb2FkIiA3CisJCQkgKGFuZCAoZXFfYXR0ciAi Y3B1IiAiem52ZXI0IikKKwkJCSAgICAgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzc2VzaHVmIikK KwkJCQkgICAoYW5kIChlcV9hdHRyICJtb2RlIiAiVjE2U0YsVjhERiIpCisJCQkJICAgIChlcV9h dHRyICJtZW1vcnkiICJsb2FkIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtbG9hZCx6 bnZlcjQtZnB1MCoyfHpudmVyNC1mcHUxKjJ8em52ZXI0LWZwdTIqMnx6bnZlcjQtZnB1MyoyIikK KworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX2lzaHVmX2V2ZXgiIDQKKwkJ CSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAi dHlwZSIgInNzZXNodWYiKQorCQkJCSAgIChhbmQgKGVxX2F0dHIgIm1vZGUiICJYSSIpCisJCQkJ ICAgIChlcV9hdHRyICJtZW1vcnkiICJub25lIikpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZl cjQtZnB1MSoyfHpudmVyNC1mcHUyKjIiKQorCisoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInpu dmVyNF9zc2VfaXNodWZfZXZleF9sb2FkIiAxMAorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpu dmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3Nlc2h1ZiIpCisJCQkJICAg KGFuZCAoZXFfYXR0ciAibW9kZSIgIlhJIikKKwkJCQkgICAgKGVxX2F0dHIgIm1lbW9yeSIgImxv YWQiKSkpKQorCQkJICJ6bnZlcjQtZGlyZWN0LHpudmVyNC1sb2FkLHpudmVyNC1mcHUxKjJ8em52 ZXI0LWZwdTIqMiIpCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAiem52ZXI0X3NzZV9tdWxh ZGQiIDQKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZlcjQiKQorCQkJICAgICAgKGFuZCAo ZXFfYXR0ciAidHlwZSIgInNzZW11bGFkZCIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgIm5v bmUiKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZwdTAqMnx6bnZlcjQtZnB1MSoyIikK KworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3NlX211bGFkZF9sb2FkIiAxMAor CQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAoYW5kIChlcV9hdHRy ICJ0eXBlIiAic3Nlc2h1ZiIpCisJCQkJICAgKGVxX2F0dHIgIm1lbW9yeSIgImxvYWQiKSkpCisJ CQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWxvYWQsem52ZXI0LWZwdTAqMnx6bnZlcjQtZnB1MSoy IikKKworOzsgQVZYNTEyIG1hc2sgaW5zdHJ1Y3Rpb25zCisKKyhkZWZpbmVfaW5zbl9yZXNlcnZh dGlvbiAiem52ZXI0X3NzZV9tc2ttb3YiIDIKKwkJCSAoYW5kIChlcV9hdHRyICJjcHUiICJ6bnZl cjQiKQorCQkJICAgICAgKGFuZCAoZXFfYXR0ciAidHlwZSIgIm1za21vdiIpCisJCQkJICAgKGVx X2F0dHIgIm1lbW9yeSIgIm5vbmUiKSkpCisJCQkgInpudmVyNC1kaXJlY3Qsem52ZXI0LWZwdTAq Mnx6bnZlcjQtZnB1MSoyIikKKworKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJ6bnZlcjRfc3Nl X21za2xvZyIgMQorCQkJIChhbmQgKGVxX2F0dHIgImNwdSIgInpudmVyNCIpCisJCQkgICAgICAo YW5kIChlcV9hdHRyICJ0eXBlIiAibXNrbG9nIikKKwkJCQkgICAoZXFfYXR0ciAibWVtb3J5IiAi bm9uZSIpKSkKKwkJCSAiem52ZXI0LWRpcmVjdCx6bnZlcjQtZnB1MioyfHpudmVyNC1mcHUzKjIi KQotLSAKMi4yNS4xCgo= --_002_DM6PR12MB4795444F22C0B64E72835C8DE3E89DM6PR12MB4795namp_--